@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
@@ -27,7 +27,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
27
27
  return result;
28
28
  };
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.StyledAbsorbedLabel = exports.StyledAbsorbedField = exports.StyledGroupBody = exports.StyledColorSwatch = exports.StyledCodePreview = exports.MONO_FONT_STACK = exports.StyledRowInset = exports.StyledColumn = exports.StyledActionSlot = exports.StyledStatusDot = exports.StyledRowActions = exports.StyledRowValue = exports.StyledCardLabel = exports.StyledCardHeading = exports.StyledLabelDesc = exports.StyledRowLabel = exports.StyledLabelBlock = exports.StyledEditCard = exports.StyledClusterNode = exports.StyledStatusBoxGroupLabel = exports.StyledRequiredClusterHeader = exports.StyledRequiredClusterBox = exports.StyledStatusBox = exports.StyledGroupHeaderLine = exports.StyledGroupHeader = exports.StyledCompactPanel = exports.PANEL_LEFT_CSS = exports.LABEL_COL = exports.LABEL_COL_VAR = exports.LABEL_AFFORDANCE_WIDTH = exports.LABEL_COL_MAX = exports.LABEL_COL_MIN = exports.CALM_SECTION_HEADER_INSET = exports.CALM_SECTION_INSET = exports.GROUP_INDENT = exports.COMPACT_PANEL_LEFT = exports.COMPACT_VALUE_LEFT = exports.COMPACT_ROW_GAP = exports.COMPACT_ROW_PAD_X = exports.COMPACT_LABEL_COL = exports.HEADER_GAP = void 0;
30
+ exports.StyledAbsorbedLabel = exports.StyledAbsorbedField = exports.StyledGroupBody = exports.StyledCodePreview = exports.MONO_FONT_STACK = exports.StyledRowInset = exports.StyledColumn = exports.StyledActionSlot = exports.StyledStatusDot = exports.StyledRowActions = exports.StyledRowValue = exports.StyledCardLabel = exports.StyledCardHeading = exports.StyledLabelDesc = exports.StyledLabelAsterisk = exports.StyledLabelName = exports.StyledRowLabel = exports.StyledLabelBlock = exports.StyledEditCard = exports.StyledClusterNode = exports.StyledStatusBoxGroupLabel = exports.StyledRequiredClusterHeader = exports.StyledRequiredClusterBox = exports.StyledStatusBox = exports.StyledGroupHeaderLine = exports.StyledGroupHeader = exports.StyledCompactPanel = exports.PANEL_LEFT_CSS = exports.LABEL_COL = exports.LABEL_COL_VAR = exports.LABEL_AFFORDANCE_WIDTH = exports.labelAffordanceWidth = exports.LABEL_HELP_WIDTH_TOUCH = exports.LABEL_HELP_WIDTH = exports.LABEL_ASTERISK_WIDTH = exports.LABEL_ASTERISK_SIZE = exports.LABEL_COLUMN_MIN = exports.LABEL_COL_MAX = exports.GROUP_INDENT = exports.isCompactNarrow = exports.COMPACT_STACKED_VALUE_INDENT = exports.COMPACT_MIN_VALUE_WIDTH = exports.COMPACT_PANEL_LEFT = exports.COMPACT_VALUE_LEFT = exports.COMPACT_ROW_GAP = exports.COMPACT_ROW_PAD_X = exports.COMPACT_LABEL_COL = exports.HEADER_GAP = void 0;
31
31
  var reqore_1 = require("@qoretechnologies/reqore");
32
32
  var sizes_1 = require("@qoretechnologies/reqore/dist/constants/sizes");
33
33
  var styled_components_1 = __importStar(require("styled-components"));
@@ -46,47 +46,74 @@ exports.COMPACT_ROW_GAP = 14; // grid column gap
46
46
  exports.COMPACT_VALUE_LEFT = exports.COMPACT_ROW_PAD_X + exports.COMPACT_LABEL_COL + exports.COMPACT_ROW_GAP;
47
47
  // The surface starts a touch left of the value text, for inner left padding.
48
48
  exports.COMPACT_PANEL_LEFT = exports.COMPACT_VALUE_LEFT - 10;
49
- // Left offset for the group sub-labels / cluster header, kept equal to the row's
50
- // own horizontal padding so the labels line up flush with the field labels below
51
- // them (no extra gutter — the spine/rail that used a fluid indent are gone).
52
- exports.GROUP_INDENT = "".concat(exports.COMPACT_ROW_PAD_X, "px");
53
49
  /**
54
- * Calm appearance: the inset of everything inside a section — rows, group
55
- * headings, the one-of sentence, and the section's own header label, so all of
56
- * them start on one left edge.
50
+ * The least room a row's value has beside its label (qorus#646, David: "on a narrow screen... put the wide output
51
+ * on a line below the header, slightly indented"). A form where the value column would be narrower stacks its rows:
52
+ * the label and the row's actions on the first line, the value under them, indented by
53
+ * `COMPACT_STACKED_VALUE_INDENT`.
57
54
  */
58
- exports.CALM_SECTION_INSET = 16;
55
+ exports.COMPACT_MIN_VALUE_WIDTH = 320;
56
+ /** How far a stacked row's value is indented under its label. */
57
+ exports.COMPACT_STACKED_VALUE_INDENT = 12;
59
58
  /**
60
- * The extra inset a calm section header's label needs to land on that edge:
61
- * Reqore pads a `normal` panel's title bar by `PADDING_FROM_SIZE.normal`, and
62
- * the label makes up the rest itself.
59
+ * Whether a form `width` wide stacks its rows: beside a label column `labelColumn` wide (the measured one,
60
+ * `LABEL_COL_VAR`), the row's gap and its padding, its value column would be under `COMPACT_MIN_VALUE_WIDTH`. With
61
+ * the widest labels (220px and their affordances) that is a form under about 600px; with the narrowest, about 500px.
63
62
  */
64
- exports.CALM_SECTION_HEADER_INSET = exports.CALM_SECTION_INSET - sizes_1.PADDING_FROM_SIZE.normal;
63
+ var isCompactNarrow = function (width, labelColumn) {
64
+ return width - (labelColumn + exports.COMPACT_ROW_GAP + 2 * exports.COMPACT_ROW_PAD_X) < exports.COMPACT_MIN_VALUE_WIDTH;
65
+ };
66
+ exports.isCompactNarrow = isCompactNarrow;
67
+ // Left offset for the group sub-labels / cluster header, kept equal to the row's
68
+ // own horizontal padding so the labels line up flush with the field labels below
69
+ // them (no extra gutter — the spine/rail that used a fluid indent are gone).
70
+ exports.GROUP_INDENT = "".concat(exports.COMPACT_ROW_PAD_X, "px");
65
71
  // Measured label column (GLOBAL). The label column sizes to the WIDEST field
66
- // label across the whole form, clamped to [MIN, MAX]. FormEngine measures the
72
+ // label across the whole form, its text clamped to MAX, and is never narrower
73
+ // than LABEL_COLUMN_MIN. FormEngine measures the
67
74
  // labels once and writes the result to `LABEL_COL_VAR` on the compact scroll
68
75
  // wrap; the grid column and the value-surface offsets below all read it (falling
69
76
  // back to the fixed default until the measurement lands). Expressing the offsets
70
77
  // FROM the column var preserves the "value surface starts at a constant x"
71
78
  // invariant — the column may resize, but the surface stays glued to its edge.
72
- exports.LABEL_COL_MIN = 120;
73
79
  exports.LABEL_COL_MAX = exports.COMPACT_LABEL_COL; // 220
74
80
  /**
75
- * Room reserved beside a field's NAME for the chrome that trails it, summed from
76
- * the parts rather than guessed: the required asterisk (10px), the `?` that opens
77
- * the long description (12px), and the two 3px gaps of `StyledRowLabel`.
81
+ * The narrowest label column, chrome included: a form of short names keeps the column it always had (a 120px floor
82
+ * under the name plus the 32px its chrome was reckoned at). The floor is the column's, not the name's: put under the
83
+ * name, it widened every form by the help button's real width, where only names that need the room should take it.
84
+ */
85
+ exports.LABEL_COLUMN_MIN = 152;
86
+ /** The required asterisk beside a name, and the room it takes: the icon and its tiny left margin. */
87
+ exports.LABEL_ASTERISK_SIZE = 10;
88
+ exports.LABEL_ASTERISK_WIDTH = exports.LABEL_ASTERISK_SIZE + 2;
89
+ /**
90
+ * The help button beside a name: reqore's `tiny` button (26px), or `small` (32px) for a finger. It is a button in the
91
+ * tab order (qorus#646), so the room it takes is its own width, not the 12px of the icon it once was.
92
+ */
93
+ exports.LABEL_HELP_WIDTH = sizes_1.SIZE_TO_PX.tiny;
94
+ exports.LABEL_HELP_WIDTH_TOUCH = sizes_1.SIZE_TO_PX.small;
95
+ /**
96
+ * Room reserved beside a field's NAME for the chrome that trails it, summed from the parts rather than guessed: the
97
+ * required asterisk, the help button and the two 3px gaps of the name's line.
78
98
  *
79
- * Added to the measured column AFTER the min/max clamp. Inside it, a label long
80
- * enough to reach the ceiling spends the allowance on itself and the `?` wraps to
81
- * a line of its own.
99
+ * Added to the measured column AFTER the min/max clamp. Inside it, a label long enough to reach the ceiling wraps,
100
+ * with the asterisk on its last line, after its last word, and the help at the column's right edge.
82
101
  *
83
- * The 4px of slack is not padding for its own sake: the measurement rounds (an
84
- * off-DOM `offsetWidth` is an integer) while the rendered text width is
85
- * fractional, so a column sized to the exact sum still wraps. Measured on an auth
86
- * profile — "Authentication Schemes" renders 152px of text and needs
87
- * 152+3+10+3+12 = 180, was given exactly 180, and wrapped anyway.
102
+ * It counted the help as the 12px icon it was before it became a button (26px): every name within 14px of the
103
+ * column's width put its asterisk on a line of its own under it (Foxhoundn, qlip #392: "The required asterisk on a
104
+ * new line is not good, keep it on the same line as the field name").
105
+ *
106
+ * The 4px of slack is not padding for its own sake: the measurement rounds (an off-DOM `offsetWidth` is an integer)
107
+ * while the rendered text width is fractional, so a column sized to the exact sum still wraps. Measured on an auth
108
+ * profile — "Authentication Schemes" renders 152px of text and, given exactly the sum, wrapped anyway.
88
109
  */
89
- exports.LABEL_AFFORDANCE_WIDTH = 10 + 12 + 3 * 2 + 4;
110
+ var labelAffordanceWidth = function (coarse) {
111
+ if (coarse === void 0) { coarse = false; }
112
+ return exports.LABEL_ASTERISK_WIDTH + (coarse ? exports.LABEL_HELP_WIDTH_TOUCH : exports.LABEL_HELP_WIDTH) + 3 * 2 + 4;
113
+ };
114
+ exports.labelAffordanceWidth = labelAffordanceWidth;
115
+ /** The room beside a name for a mouse's pointer; a finger's help is wider (`labelAffordanceWidth(true)`). */
116
+ exports.LABEL_AFFORDANCE_WIDTH = (0, exports.labelAffordanceWidth)();
90
117
  exports.LABEL_COL_VAR = '--readfirst-label-col';
91
118
  exports.LABEL_COL = "var(".concat(exports.LABEL_COL_VAR, ", ").concat(exports.COMPACT_LABEL_COL, "px)");
92
119
  exports.PANEL_LEFT_CSS = "calc(".concat(exports.LABEL_COL, " + ").concat(exports.COMPACT_ROW_PAD_X + exports.COMPACT_ROW_GAP - 10, "px)");
@@ -94,9 +121,9 @@ exports.PANEL_LEFT_CSS = "calc(".concat(exports.LABEL_COL, " + ").concat(exports
94
121
  // gives its sticky header) with a translucent theme tint + a moderate blur, the
95
122
  // way the IDE's DashboardModule overrides its own header. `translateZ(0)`
96
123
  // promotes the header to its own GPU layer, which stops the backdrop-filter
97
- // repaint flicker on scroll. `$headerBg` is a pre-mixed translucent colour so
124
+ // repaint flicker on scroll. `$headerBg` is a pre-mixed translucent color so
98
125
  // content blurs softly through.
99
- exports.StyledCompactPanel = (0, styled_components_1.default)(reqore_1.ReqorePanel)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n /* The wrapper must not clip, or nothing INSIDE it can pin.\n \n ReqorePanel sets its wrapper to `overflow: hidden` unless its own header\n is sticky \u2014 and a clipping box is a scrollport, so a status box header\n inside it resolves against the wrapper instead of the page and stops\n pinning. That coupling is right for the panel's own header and wrong for\n its descendants': a host that turns this form's toolbar off (a two-field\n form inside a longer page, where a pinned search bar is the biggest thing\n on screen and the least useful) was silently turning the box headers off\n with it.\n \n The clip is the panel's rounded corners, and this panel is transparent and\n border-less \u2014 `flat raised minimal`, no background of its own \u2014 so there\n is nothing for it to clip. */\n ", "\n /* A NARROW header dressed by the consumer (`compactPanelProps` label, icon\n or actions) stacks: the label and the consumer's actions share the first\n line, and the toolbar takes the whole second line.\n\n ReqorePanel lays its header out as one unwrapping row \u2014 the label, then an\n action group that never shrinks. The toolbar is one of those actions and\n is as wide as the form, so at phone width the label was squeezed to\n nothing and the consumer's own action was pushed past the panel's edge and\n clipped. Flattening the action group (`display: contents`) lets its\n members wrap with the label, and `order` moves the toolbar after them. */\n ", "\n > .reqore-panel-title {\n /* The blur + translateZ exist only to make the STICKY top-level toolbar ghost\n content beneath it; a nested sub-form's header isn't sticky, so skip them\n (and the stacking context translateZ creates). */\n ", "\n /* Above the status-box headers, which pin just below this toolbar. A\n pinned header cannot leave its own box, so when the end of a box\n scrolls up past the toolbar it pushes the header up with it \u2014 and with\n both at ReqorePanel's sticky z-index the header, later in the\n document, slid OVER the toolbar and covered the search and the\n meter. One step higher and it slides under the toolbar's blur\n instead. Nested sub-forms pin nothing, so they keep the default. */\n ", "\n /* The glass itself. A classic panel paints its own surface behind the\n header; a calm one is transparent, so without this the pinned toolbar\n had nothing behind it at all and the rows \u2014 and a box header leaving its\n box \u2014 scrolled through the meter and the search in full contrast. */\n ", "\n padding-top: ", "px;\n /* A header with a SEARCH ROW keeps the `big` gap below it \u2014 a tall\n interactive control earns separation from the content it filters. A\n header without one (search hidden via `compactToolbar`, self-hidden on\n a single-option form, or no toolbar at all) is a thin strip, and at\n `big` its padding stacked onto the panel content's own 8px into a 26px\n dead band between the completion meter and the first status box \u2014\n rejected on build #140 as \"unnecessarily big\". `normal` lands it at\n the boxes' own 10px rhythm, and scoping the change here keeps every\n search-bearing form pixel-identical. */\n padding-bottom: ", "px;\n }\n\n /* Group framing. The HORIZONTAL rule is a real element in the header\n (StyledGroupHeaderLine) so it sits on the name's row, centred, and stretches\n from the name out to the status chip pinned at the far end \u2014 which needs the\n title's left group to fill the header width. The VERTICAL group spine is\n drawn by StyledGroupBody (so it shares the required-group rail's coordinate\n space and the two line up instead of doubling). */\n .options-readfirst-group {\n position: relative;\n }\n .options-readfirst-group > .reqore-panel-title > :first-child,\n .options-readfirst-group > .reqore-panel-title > :first-child > :first-child,\n .options-readfirst-group .reqore-panel-title-label-row {\n flex: 1 1 auto;\n min-width: 0;\n }\n\n /* An injected option action declared `show: 'hover'` \u2014 the shape ReqorePanel\n honours on the classic path \u2014 is revealed only while its row or card is\n hovered or holds focus. The compact slots render plain buttons, so the gate\n has to be CSS here. Kept focus-visible too, so the action stays reachable by\n keyboard. Opacity rather than display keeps the slot's width stable, so rows\n don't reflow on hover. */\n .options-injected-action-hover {\n opacity: 0;\n /* Not hit-testable while invisible \u2014 an opacity:0 button still takes taps\n and clicks, which reads as a mystery control firing out of nowhere. */\n pointer-events: none;\n transition: opacity 0.15s ease;\n }\n .readfirst-row:hover .options-injected-action-hover,\n .readfirst-row:focus-within .options-injected-action-hover,\n .options-readfirst-card:hover .options-injected-action-hover,\n .options-readfirst-card:focus-within .options-injected-action-hover {\n opacity: 1;\n pointer-events: auto;\n }\n /* Touch and other hover-less pointers never fire :hover, so a hover-gated\n action would be permanently unreachable there. Show it unconditionally\n instead \u2014 losing the tidiness beats losing the functionality. */\n @media (hover: none), (pointer: coarse) {\n .options-injected-action-hover {\n opacity: 1;\n pointer-events: auto;\n }\n }\n"], ["\n /* The wrapper must not clip, or nothing INSIDE it can pin.\n \n ReqorePanel sets its wrapper to \\`overflow: hidden\\` unless its own header\n is sticky \u2014 and a clipping box is a scrollport, so a status box header\n inside it resolves against the wrapper instead of the page and stops\n pinning. That coupling is right for the panel's own header and wrong for\n its descendants': a host that turns this form's toolbar off (a two-field\n form inside a longer page, where a pinned search bar is the biggest thing\n on screen and the least useful) was silently turning the box headers off\n with it.\n \n The clip is the panel's rounded corners, and this panel is transparent and\n border-less \u2014 \\`flat raised minimal\\`, no background of its own \u2014 so there\n is nothing for it to clip. */\n ", "\n /* A NARROW header dressed by the consumer (\\`compactPanelProps\\` label, icon\n or actions) stacks: the label and the consumer's actions share the first\n line, and the toolbar takes the whole second line.\n\n ReqorePanel lays its header out as one unwrapping row \u2014 the label, then an\n action group that never shrinks. The toolbar is one of those actions and\n is as wide as the form, so at phone width the label was squeezed to\n nothing and the consumer's own action was pushed past the panel's edge and\n clipped. Flattening the action group (\\`display: contents\\`) lets its\n members wrap with the label, and \\`order\\` moves the toolbar after them. */\n ", "\n > .reqore-panel-title {\n /* The blur + translateZ exist only to make the STICKY top-level toolbar ghost\n content beneath it; a nested sub-form's header isn't sticky, so skip them\n (and the stacking context translateZ creates). */\n ", "\n /* Above the status-box headers, which pin just below this toolbar. A\n pinned header cannot leave its own box, so when the end of a box\n scrolls up past the toolbar it pushes the header up with it \u2014 and with\n both at ReqorePanel's sticky z-index the header, later in the\n document, slid OVER the toolbar and covered the search and the\n meter. One step higher and it slides under the toolbar's blur\n instead. Nested sub-forms pin nothing, so they keep the default. */\n ", "\n /* The glass itself. A classic panel paints its own surface behind the\n header; a calm one is transparent, so without this the pinned toolbar\n had nothing behind it at all and the rows \u2014 and a box header leaving its\n box \u2014 scrolled through the meter and the search in full contrast. */\n ", "\n padding-top: ", "px;\n /* A header with a SEARCH ROW keeps the \\`big\\` gap below it \u2014 a tall\n interactive control earns separation from the content it filters. A\n header without one (search hidden via \\`compactToolbar\\`, self-hidden on\n a single-option form, or no toolbar at all) is a thin strip, and at\n \\`big\\` its padding stacked onto the panel content's own 8px into a 26px\n dead band between the completion meter and the first status box \u2014\n rejected on build #140 as \"unnecessarily big\". \\`normal\\` lands it at\n the boxes' own 10px rhythm, and scoping the change here keeps every\n search-bearing form pixel-identical. */\n padding-bottom: ", "px;\n }\n\n /* Group framing. The HORIZONTAL rule is a real element in the header\n (StyledGroupHeaderLine) so it sits on the name's row, centred, and stretches\n from the name out to the status chip pinned at the far end \u2014 which needs the\n title's left group to fill the header width. The VERTICAL group spine is\n drawn by StyledGroupBody (so it shares the required-group rail's coordinate\n space and the two line up instead of doubling). */\n .options-readfirst-group {\n position: relative;\n }\n .options-readfirst-group > .reqore-panel-title > :first-child,\n .options-readfirst-group > .reqore-panel-title > :first-child > :first-child,\n .options-readfirst-group .reqore-panel-title-label-row {\n flex: 1 1 auto;\n min-width: 0;\n }\n\n /* An injected option action declared \\`show: 'hover'\\` \u2014 the shape ReqorePanel\n honours on the classic path \u2014 is revealed only while its row or card is\n hovered or holds focus. The compact slots render plain buttons, so the gate\n has to be CSS here. Kept focus-visible too, so the action stays reachable by\n keyboard. Opacity rather than display keeps the slot's width stable, so rows\n don't reflow on hover. */\n .options-injected-action-hover {\n opacity: 0;\n /* Not hit-testable while invisible \u2014 an opacity:0 button still takes taps\n and clicks, which reads as a mystery control firing out of nowhere. */\n pointer-events: none;\n transition: opacity 0.15s ease;\n }\n .readfirst-row:hover .options-injected-action-hover,\n .readfirst-row:focus-within .options-injected-action-hover,\n .options-readfirst-card:hover .options-injected-action-hover,\n .options-readfirst-card:focus-within .options-injected-action-hover {\n opacity: 1;\n pointer-events: auto;\n }\n /* Touch and other hover-less pointers never fire :hover, so a hover-gated\n action would be permanently unreachable there. Show it unconditionally\n instead \u2014 losing the tidiness beats losing the functionality. */\n @media (hover: none), (pointer: coarse) {\n .options-injected-action-hover {\n opacity: 1;\n pointer-events: auto;\n }\n }\n"])), function (_a) {
126
+ exports.StyledCompactPanel = (0, styled_components_1.default)(reqore_1.ReqorePanel)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n /* The wrapper must not clip, or nothing INSIDE it can pin.\n \n ReqorePanel sets its wrapper to `overflow: hidden` unless its own header\n is sticky \u2014 and a clipping box is a scrollport, so a status box header\n inside it resolves against the wrapper instead of the page and stops\n pinning. That coupling is right for the panel's own header and wrong for\n its descendants': a host that turns this form's toolbar off (a two-field\n form inside a longer page, where a pinned search bar is the biggest thing\n on screen and the least useful) was silently turning the box headers off\n with it.\n \n The clip is the panel's rounded corners, and this panel is transparent and\n border-less \u2014 `flat raised minimal`, no background of its own \u2014 so there\n is nothing for it to clip. */\n ", "\n /* A NARROW header dressed by the consumer (`compactPanelProps` label, icon\n or actions) stacks: the label and the consumer's actions share the first\n line, and the toolbar takes the whole second line.\n\n ReqorePanel lays its header out as one unwrapping row \u2014 the label, then an\n action group that never shrinks. The toolbar is one of those actions and\n is as wide as the form, so at phone width the label was squeezed to\n nothing and the consumer's own action was pushed past the panel's edge and\n clipped. Flattening the action group (`display: contents`) lets its\n members wrap with the label, and `order` moves the toolbar after them. */\n ", "\n > .reqore-panel-title {\n /* The blur + translateZ exist only to make the STICKY top-level toolbar ghost\n content beneath it; a nested sub-form's header isn't sticky, so skip them\n (and the stacking context translateZ creates). */\n ", "\n /* Above the status-box headers, which pin just below this toolbar. A\n pinned header cannot leave its own box, so when the end of a box\n scrolls up past the toolbar it pushes the header up with it \u2014 and with\n both at ReqorePanel's sticky z-index the header, later in the\n document, slid OVER the toolbar and covered the search and the\n meter. One step higher and it slides under the toolbar's blur\n instead. Nested sub-forms pin nothing, so they keep the default. */\n ", "\n padding-top: ", "px;\n /* A header with a SEARCH ROW keeps the `big` gap below it \u2014 a tall\n interactive control earns separation from the content it filters. A\n header without one (search hidden via `compactToolbar`, self-hidden on\n a single-option form, or no toolbar at all) is a thin strip, and at\n `big` its padding stacked onto the panel content's own 8px into a 26px\n dead band between the completion meter and the first status box \u2014\n rejected on build #140 as \"unnecessarily big\". `normal` lands it at\n the boxes' own 10px rhythm, and scoping the change here keeps every\n search-bearing form pixel-identical. */\n padding-bottom: ", "px;\n }\n\n /* Group framing. The HORIZONTAL rule is a real element in the header\n (StyledGroupHeaderLine) so it sits on the name's row, centered, and stretches\n from the name out to the status chip pinned at the far end \u2014 which needs the\n title's left group to fill the header width. The VERTICAL group spine is\n drawn by StyledGroupBody (so it shares the required-group rail's coordinate\n space and the two line up instead of doubling). */\n .options-readfirst-group {\n position: relative;\n }\n .options-readfirst-group > .reqore-panel-title > :first-child,\n .options-readfirst-group > .reqore-panel-title > :first-child > :first-child,\n .options-readfirst-group .reqore-panel-title-label-row {\n flex: 1 1 auto;\n min-width: 0;\n }\n\n /* An injected option action declared `show: 'hover'` \u2014 the shape ReqorePanel\n honors on the classic path \u2014 is revealed only while its row or card is\n hovered or holds focus. The compact slots render plain buttons, so the gate\n has to be CSS here. Kept focus-visible too, so the action stays reachable by\n keyboard. Opacity rather than display keeps the slot's width stable, so rows\n don't reflow on hover. */\n .options-injected-action-hover {\n opacity: 0;\n /* Not hit-testable while invisible \u2014 an opacity:0 button still takes taps\n and clicks, which reads as a mystery control firing out of nowhere. */\n pointer-events: none;\n transition: opacity 0.15s ease;\n }\n .readfirst-row:hover .options-injected-action-hover,\n .readfirst-row:focus-within .options-injected-action-hover,\n .options-readfirst-card:hover .options-injected-action-hover,\n .options-readfirst-card:focus-within .options-injected-action-hover {\n opacity: 1;\n pointer-events: auto;\n }\n /* Touch and other hover-less pointers never fire :hover, so a hover-gated\n action would be permanently unreachable there. Show it unconditionally\n instead \u2014 losing the tidiness beats losing the functionality. */\n @media (hover: none), (pointer: coarse) {\n .options-injected-action-hover {\n opacity: 1;\n pointer-events: auto;\n }\n }\n"], ["\n /* The wrapper must not clip, or nothing INSIDE it can pin.\n \n ReqorePanel sets its wrapper to \\`overflow: hidden\\` unless its own header\n is sticky \u2014 and a clipping box is a scrollport, so a status box header\n inside it resolves against the wrapper instead of the page and stops\n pinning. That coupling is right for the panel's own header and wrong for\n its descendants': a host that turns this form's toolbar off (a two-field\n form inside a longer page, where a pinned search bar is the biggest thing\n on screen and the least useful) was silently turning the box headers off\n with it.\n \n The clip is the panel's rounded corners, and this panel is transparent and\n border-less \u2014 \\`flat raised minimal\\`, no background of its own \u2014 so there\n is nothing for it to clip. */\n ", "\n /* A NARROW header dressed by the consumer (\\`compactPanelProps\\` label, icon\n or actions) stacks: the label and the consumer's actions share the first\n line, and the toolbar takes the whole second line.\n\n ReqorePanel lays its header out as one unwrapping row \u2014 the label, then an\n action group that never shrinks. The toolbar is one of those actions and\n is as wide as the form, so at phone width the label was squeezed to\n nothing and the consumer's own action was pushed past the panel's edge and\n clipped. Flattening the action group (\\`display: contents\\`) lets its\n members wrap with the label, and \\`order\\` moves the toolbar after them. */\n ", "\n > .reqore-panel-title {\n /* The blur + translateZ exist only to make the STICKY top-level toolbar ghost\n content beneath it; a nested sub-form's header isn't sticky, so skip them\n (and the stacking context translateZ creates). */\n ", "\n /* Above the status-box headers, which pin just below this toolbar. A\n pinned header cannot leave its own box, so when the end of a box\n scrolls up past the toolbar it pushes the header up with it \u2014 and with\n both at ReqorePanel's sticky z-index the header, later in the\n document, slid OVER the toolbar and covered the search and the\n meter. One step higher and it slides under the toolbar's blur\n instead. Nested sub-forms pin nothing, so they keep the default. */\n ", "\n padding-top: ", "px;\n /* A header with a SEARCH ROW keeps the \\`big\\` gap below it \u2014 a tall\n interactive control earns separation from the content it filters. A\n header without one (search hidden via \\`compactToolbar\\`, self-hidden on\n a single-option form, or no toolbar at all) is a thin strip, and at\n \\`big\\` its padding stacked onto the panel content's own 8px into a 26px\n dead band between the completion meter and the first status box \u2014\n rejected on build #140 as \"unnecessarily big\". \\`normal\\` lands it at\n the boxes' own 10px rhythm, and scoping the change here keeps every\n search-bearing form pixel-identical. */\n padding-bottom: ", "px;\n }\n\n /* Group framing. The HORIZONTAL rule is a real element in the header\n (StyledGroupHeaderLine) so it sits on the name's row, centered, and stretches\n from the name out to the status chip pinned at the far end \u2014 which needs the\n title's left group to fill the header width. The VERTICAL group spine is\n drawn by StyledGroupBody (so it shares the required-group rail's coordinate\n space and the two line up instead of doubling). */\n .options-readfirst-group {\n position: relative;\n }\n .options-readfirst-group > .reqore-panel-title > :first-child,\n .options-readfirst-group > .reqore-panel-title > :first-child > :first-child,\n .options-readfirst-group .reqore-panel-title-label-row {\n flex: 1 1 auto;\n min-width: 0;\n }\n\n /* An injected option action declared \\`show: 'hover'\\` \u2014 the shape ReqorePanel\n honors on the classic path \u2014 is revealed only while its row or card is\n hovered or holds focus. The compact slots render plain buttons, so the gate\n has to be CSS here. Kept focus-visible too, so the action stays reachable by\n keyboard. Opacity rather than display keeps the slot's width stable, so rows\n don't reflow on hover. */\n .options-injected-action-hover {\n opacity: 0;\n /* Not hit-testable while invisible \u2014 an opacity:0 button still takes taps\n and clicks, which reads as a mystery control firing out of nowhere. */\n pointer-events: none;\n transition: opacity 0.15s ease;\n }\n .readfirst-row:hover .options-injected-action-hover,\n .readfirst-row:focus-within .options-injected-action-hover,\n .options-readfirst-card:hover .options-injected-action-hover,\n .options-readfirst-card:focus-within .options-injected-action-hover {\n opacity: 1;\n pointer-events: auto;\n }\n /* Touch and other hover-less pointers never fire :hover, so a hover-gated\n action would be permanently unreachable there. Show it unconditionally\n instead \u2014 losing the tidiness beats losing the functionality. */\n @media (hover: none), (pointer: coarse) {\n .options-injected-action-hover {\n opacity: 1;\n pointer-events: auto;\n }\n }\n"])), function (_a) {
100
127
  var $stickyBoxes = _a.$stickyBoxes;
101
128
  return $stickyBoxes ? (0, styled_components_1.css)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n &&& {\n overflow: visible;\n }\n "], ["\n &&& {\n overflow: visible;\n }\n "]))) : '';
102
129
  }, function (_a) {
@@ -108,78 +135,57 @@ exports.StyledCompactPanel = (0, styled_components_1.default)(reqore_1.ReqorePan
108
135
  }, function (_a) {
109
136
  var $nested = _a.$nested;
110
137
  return ($nested ? '' : 'z-index: 3;');
111
- }, function (_a) {
112
- var $calm = _a.$calm, $nested = _a.$nested, $headerBg = _a.$headerBg;
113
- return $calm && !$nested ? "background-color: ".concat($headerBg, ";") : '';
114
138
  }, sizes_1.GAP_FROM_SIZE[exports.HEADER_GAP], function (_a) {
115
139
  var $tightHeader = _a.$tightHeader;
116
140
  return $tightHeader ? sizes_1.GAP_FROM_SIZE.normal : sizes_1.GAP_FROM_SIZE[exports.HEADER_GAP];
117
141
  });
118
142
  // Compact group header laid out as the panel's `label`: the group name, a
119
143
  // hairline that fades toward the status chip, and the chip pinned at the end.
120
- exports.StyledGroupHeader = styled_components_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n /* Calm: the label, its quiet count and (on Needs attention) the one amber\n dot read as a single phrase, so they sit closer than the default's\n label-and-chip pair. */\n gap: ", "px;\n /* \u2026and starts on the rows' left edge. */\n padding-left: ", "px;\n flex: 1;\n min-width: 0;\n"], ["\n display: flex;\n align-items: center;\n /* Calm: the label, its quiet count and (on Needs attention) the one amber\n dot read as a single phrase, so they sit closer than the default's\n label-and-chip pair. */\n gap: ", "px;\n /* \u2026and starts on the rows' left edge. */\n padding-left: ", "px;\n flex: 1;\n min-width: 0;\n"])), function (_a) {
121
- var $calm = _a.$calm;
122
- return ($calm ? 8 : 12);
123
- }, function (_a) {
124
- var $calm = _a.$calm;
125
- return ($calm ? exports.CALM_SECTION_HEADER_INSET : 0);
126
- });
144
+ exports.StyledGroupHeader = styled_components_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n"], ["\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n"])));
127
145
  exports.StyledGroupHeaderLine = styled_components_1.default.span(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n flex: 1;\n height: 2px;\n min-width: 16px;\n background: linear-gradient(to right, ", ", transparent);\n"], ["\n flex: 1;\n height: 2px;\n min-width: 16px;\n background: linear-gradient(to right, ", ", transparent);\n"])), function (_a) {
128
146
  var $color = _a.$color;
129
147
  return $color;
130
148
  });
131
149
  // A status box (Needs attention / Set / Optional). Matches the "Focus" prototype:
132
150
  // a barely-there accent border + a ~5%-opacity tint, NOT the loud intent border a
133
- // stock ReqorePanel draws. `$accent` is the box's theme colour (warning/success/
151
+ // stock ReqorePanel draws. `$accent` is the box's theme color (warning/success/
134
152
  // muted).
135
- exports.StyledStatusBox = (0, styled_components_1.default)(reqore_1.ReqorePanel)(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n ", "\n\n /* A PINNED header needs a surface of its own.\n \n The box's tint lives on the wrapper, behind the header, and a `minimal`\n panel header is transparent \u2014 which is right while the header sits in the\n flow over its own box, and wrong the moment it pins, because the rows then\n scroll THROUGH it. Reqore's backdrop blur softens them but a 12% tint over\n moving text still reads as two overlaid labels.\n \n So repaint the pinned header as the box looks at rest: an opaque layer of\n the page background with the box's own translucent tint composited on top,\n which is exactly what the eye sees where the box meets the page. The\n Optional box already carries an opaque `$bg`, so that is used as-is.\n \n Only when `$surface` is supplied \u2014 i.e. only on a form that pins at all \u2014\n so an unpinned box is pixel-identical to before.\n\n Calm boxes carry no tint, so the pinned header is just the panel surface\n the caller passes as `$surface`. */\n ", "\n"], ["\n ", "\n\n /* A PINNED header needs a surface of its own.\n \n The box's tint lives on the wrapper, behind the header, and a \\`minimal\\`\n panel header is transparent \u2014 which is right while the header sits in the\n flow over its own box, and wrong the moment it pins, because the rows then\n scroll THROUGH it. Reqore's backdrop blur softens them but a 12% tint over\n moving text still reads as two overlaid labels.\n \n So repaint the pinned header as the box looks at rest: an opaque layer of\n the page background with the box's own translucent tint composited on top,\n which is exactly what the eye sees where the box meets the page. The\n Optional box already carries an opaque \\`$bg\\`, so that is used as-is.\n \n Only when \\`$surface\\` is supplied \u2014 i.e. only on a form that pins at all \u2014\n so an unpinned box is pixel-identical to before.\n\n Calm boxes carry no tint, so the pinned header is just the panel surface\n the caller passes as \\`$surface\\`. */\n ", "\n"])), function (_a) {
136
- var $calm = _a.$calm, $accent = _a.$accent, $bg = _a.$bg;
137
- return $calm ? (0, styled_components_1.css)(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n &&& {\n border-radius: 10px;\n }\n "], ["\n &&& {\n border-radius: 10px;\n }\n "]))) : (0, styled_components_1.css)(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n &&& {\n border: 1px solid ", ";\n /* $bg lets the muted \"Optional\" box opt into a darker, recessed surface\n instead of the faint accent tint the coloured boxes use. */\n background: ", ";\n border-radius: 10px;\n }\n "], ["\n &&& {\n border: 1px solid ", ";\n /* $bg lets the muted \"Optional\" box opt into a darker, recessed surface\n instead of the faint accent tint the coloured boxes use. */\n background: ", ";\n border-radius: 10px;\n }\n "])), "".concat($accent, "33"), $bg || "".concat($accent, "1f"));
153
+ exports.StyledStatusBox = (0, styled_components_1.default)(reqore_1.ReqorePanel)(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n &&& {\n border: 1px solid ", ";\n /* $bg lets the muted \"Optional\" box opt into a darker, recessed surface\n instead of the faint accent tint the colored boxes use. */\n background: ", ";\n border-radius: 10px;\n }\n\n /* A PINNED header needs a surface of its own.\n \n The box's tint lives on the wrapper, behind the header, and a `minimal`\n panel header is transparent \u2014 which is right while the header sits in the\n flow over its own box, and wrong the moment it pins, because the rows then\n scroll THROUGH it. Reqore's backdrop blur softens them but a 12% tint over\n moving text still reads as two overlaid labels.\n \n So repaint the pinned header as the box looks at rest: an opaque layer of\n the page background with the box's own translucent tint composited on top,\n which is exactly what the eye sees where the box meets the page. The\n Optional box already carries an opaque `$bg`, so that is used as-is.\n \n Only when `$surface` is supplied \u2014 i.e. only on a form that pins at all \u2014\n so an unpinned box is pixel-identical to before. */\n ", "\n"], ["\n &&& {\n border: 1px solid ", ";\n /* $bg lets the muted \"Optional\" box opt into a darker, recessed surface\n instead of the faint accent tint the colored boxes use. */\n background: ", ";\n border-radius: 10px;\n }\n\n /* A PINNED header needs a surface of its own.\n \n The box's tint lives on the wrapper, behind the header, and a \\`minimal\\`\n panel header is transparent \u2014 which is right while the header sits in the\n flow over its own box, and wrong the moment it pins, because the rows then\n scroll THROUGH it. Reqore's backdrop blur softens them but a 12% tint over\n moving text still reads as two overlaid labels.\n \n So repaint the pinned header as the box looks at rest: an opaque layer of\n the page background with the box's own translucent tint composited on top,\n which is exactly what the eye sees where the box meets the page. The\n Optional box already carries an opaque \\`$bg\\`, so that is used as-is.\n \n Only when \\`$surface\\` is supplied \u2014 i.e. only on a form that pins at all \u2014\n so an unpinned box is pixel-identical to before. */\n ", "\n"])), function (_a) {
154
+ var $accent = _a.$accent;
155
+ return "".concat($accent, "33");
138
156
  }, function (_a) {
139
- var $surface = _a.$surface, $accent = _a.$accent, $bg = _a.$bg, $calm = _a.$calm;
140
- return $surface ? (0, styled_components_1.css)(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n &&& > .reqore-panel-title {\n background-color: ", ";\n ", "\n }\n "], ["\n &&& > .reqore-panel-title {\n background-color: ", ";\n ", "\n }\n "])), $bg || $surface, $bg || $calm ? '' : "background-image: linear-gradient(".concat($accent, "1f, ").concat($accent, "1f);")) : '';
157
+ var $accent = _a.$accent, $bg = _a.$bg;
158
+ return $bg || "".concat($accent, "1f");
159
+ }, function (_a) {
160
+ var $surface = _a.$surface, $accent = _a.$accent, $bg = _a.$bg;
161
+ return $surface ? (0, styled_components_1.css)(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n &&& > .reqore-panel-title {\n background-color: ", ";\n ", "\n }\n "], ["\n &&& > .reqore-panel-title {\n background-color: ", ";\n ", "\n }\n "])), $bg || $surface, $bg ? '' : "background-image: linear-gradient(".concat($accent, "1f, ").concat($accent, "1f);")) : '';
141
162
  });
142
163
  // "One of the below is required" cluster box — wraps the members of an unmet
143
164
  // one-of required group (in the Needs-attention box) so the constraint reads as
144
165
  // one unit. The connection rail + status nodes still render inside (they convey
145
166
  // which member satisfies the group); this box adds the explicit heading.
146
- exports.StyledRequiredClusterBox = styled_components_1.default.div(templateObject_11 || (templateObject_11 = __makeTemplateObject(["\n ", "\n /* The members render directly here (not via the gapped group body), so give\n them the same modest gap the rest of the rows have. Pin the divider-centring\n var to that gap (it doesn't widen in narrow like the group body's does). */\n display: flex;\n flex-flow: column;\n --readfirst-row-gap: ", "px;\n gap: ", "px;\n"], ["\n ", "\n /* The members render directly here (not via the gapped group body), so give\n them the same modest gap the rest of the rows have. Pin the divider-centring\n var to that gap (it doesn't widen in narrow like the group body's does). */\n display: flex;\n flex-flow: column;\n --readfirst-row-gap: ", "px;\n gap: ", "px;\n"])), function (_a) {
147
- var $calm = _a.$calm, $border = _a.$border, $tint = _a.$tint;
148
- return $calm ?
149
- ''
150
- : (0, styled_components_1.css)(templateObject_10 || (templateObject_10 = __makeTemplateObject(["\n border: 1px solid ", ";\n border-radius: 8px;\n background: ", ";\n padding: 2px 6px 6px;\n margin: 4px 0;\n "], ["\n border: 1px solid ", ";\n border-radius: 8px;\n background: ", ";\n padding: 2px 6px 6px;\n margin: 4px 0;\n "])), $border, $tint);
151
- }, function (_a) {
152
- var $calm = _a.$calm;
153
- return ($calm ? 0 : 4);
167
+ exports.StyledRequiredClusterBox = styled_components_1.default.div(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n border: 1px solid ", ";\n border-radius: 8px;\n background: ", ";\n padding: 2px 6px 6px;\n margin: 4px 0;\n /* The members render directly here (not via the gapped group body), so give\n them the same modest gap the rest of the rows have. Pin the divider-centering\n var to that gap (it doesn't widen in narrow like the group body's does). */\n display: flex;\n flex-flow: column;\n --readfirst-row-gap: 4px;\n gap: 4px;\n"], ["\n border: 1px solid ", ";\n border-radius: 8px;\n background: ", ";\n padding: 2px 6px 6px;\n margin: 4px 0;\n /* The members render directly here (not via the gapped group body), so give\n them the same modest gap the rest of the rows have. Pin the divider-centering\n var to that gap (it doesn't widen in narrow like the group body's does). */\n display: flex;\n flex-flow: column;\n --readfirst-row-gap: 4px;\n gap: 4px;\n"])), function (_a) {
168
+ var $border = _a.$border;
169
+ return $border;
154
170
  }, function (_a) {
155
- var $calm = _a.$calm;
156
- return ($calm ? 0 : 4);
171
+ var $tint = _a.$tint;
172
+ return $tint;
157
173
  });
158
- exports.StyledRequiredClusterHeader = styled_components_1.default.div(templateObject_14 || (templateObject_14 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: 6px;\n color: ", ";\n font-weight: 600;\n /* Calm: an amber sentence over the rows it is about, at the rows' own text\n size and inset \u2014 the instruction, not an upper-case eyebrow. */\n ", "\n"], ["\n display: flex;\n align-items: center;\n gap: 6px;\n color: ", ";\n font-weight: 600;\n /* Calm: an amber sentence over the rows it is about, at the rows' own text\n size and inset \u2014 the instruction, not an upper-case eyebrow. */\n ", "\n"])), function (_a) {
174
+ exports.StyledRequiredClusterHeader = styled_components_1.default.div(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 0 4px ", ";\n font-size: 10px;\n font-weight: 600;\n letter-spacing: 1px;\n text-transform: uppercase;\n color: ", ";\n"], ["\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 8px 0 4px ", ";\n font-size: 10px;\n font-weight: 600;\n letter-spacing: 1px;\n text-transform: uppercase;\n color: ", ";\n"])), exports.GROUP_INDENT, function (_a) {
159
175
  var $color = _a.$color;
160
176
  return $color;
161
- }, function (_a) {
162
- var $calm = _a.$calm;
163
- return $calm ? (0, styled_components_1.css)(templateObject_12 || (templateObject_12 = __makeTemplateObject(["\n padding: 12px ", "px 2px;\n font-size: 13px;\n "], ["\n padding: 12px ", "px 2px;\n font-size: 13px;\n "])), exports.CALM_SECTION_INSET) : (0, styled_components_1.css)(templateObject_13 || (templateObject_13 = __makeTemplateObject(["\n padding: 8px 0 4px ", ";\n font-size: 10px;\n letter-spacing: 1px;\n text-transform: uppercase;\n "], ["\n padding: 8px 0 4px ", ";\n font-size: 10px;\n letter-spacing: 1px;\n text-transform: uppercase;\n "])), exports.GROUP_INDENT);
164
177
  });
165
178
  // Thin schema-group sub-label inside a status box (CONNECTION / AUTHENTICATION /
166
179
  // …). Quiet by design — the box header is the loud heading; this just keeps each
167
180
  // field's group context as you scan. Indented to the rows' content line.
168
- //
169
- // Calm: the group's name as written (no upper-casing), at the rows' text size in
170
- // the primary text colour — the field labels below it are grey, so the heading
171
- // is told apart by colour and the space above it, not by shouting.
172
- exports.StyledStatusBoxGroupLabel = styled_components_1.default.div(templateObject_17 || (templateObject_17 = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), function (_a) {
173
- var $calm = _a.$calm, $color = _a.$color;
174
- return $calm ? (0, styled_components_1.css)(templateObject_15 || (templateObject_15 = __makeTemplateObject(["\n font-size: 13px;\n font-weight: 600;\n color: ", ";\n padding: 14px ", "px 2px;\n "], ["\n font-size: 13px;\n font-weight: 600;\n color: ", ";\n padding: 14px ", "px 2px;\n "])), $color || 'inherit', exports.CALM_SECTION_INSET) : (0, styled_components_1.css)(templateObject_16 || (templateObject_16 = __makeTemplateObject(["\n font-size: 10px;\n font-weight: 500;\n letter-spacing: 1px;\n text-transform: uppercase;\n opacity: 0.5;\n padding: 8px 0 2px ", ";\n "], ["\n font-size: 10px;\n font-weight: 500;\n letter-spacing: 1px;\n text-transform: uppercase;\n opacity: 0.5;\n padding: 8px 0 2px ", ";\n "])), exports.GROUP_INDENT);
175
- });
181
+ exports.StyledStatusBoxGroupLabel = styled_components_1.default.div(templateObject_10 || (templateObject_10 = __makeTemplateObject(["\n font-size: 10px;\n font-weight: 500;\n letter-spacing: 1px;\n text-transform: uppercase;\n opacity: 0.5;\n padding: 8px 0 2px ", ";\n"], ["\n font-size: 10px;\n font-weight: 500;\n letter-spacing: 1px;\n text-transform: uppercase;\n opacity: 0.5;\n padding: 8px 0 2px ", ";\n"])), exports.GROUP_INDENT);
176
182
  // Required-group "connection" rail: contiguous members are linked by a continuous
177
183
  // vertical rail (StyledGroupBody draws it; the line bridges the row gaps and is
178
184
  // trimmed to the first/last node). Each member carries a status node — absolutely
179
185
  // positioned in the EXISTING left gutter, so labels keep their place — tied to the
180
186
  // label by a short stub. Theme-derived: the node's hollow centre is painted the
181
187
  // form background so it MASKS the rail behind it; filled when the member is set.
182
- exports.StyledClusterNode = styled_components_1.default.span(templateObject_18 || (templateObject_18 = __makeTemplateObject(["\n position: absolute;\n left: -14px;\n top: 13px;\n width: 12px;\n height: 12px;\n box-sizing: border-box;\n border-radius: 50%;\n border: 2px solid ", ";\n background: ", ";\n box-shadow: 0 0 5px ", ";\n z-index: 1;\n pointer-events: none;\n /* short stub toward the label \u2014 stops a few px short so it doesn't touch it */\n &::after {\n content: '';\n position: absolute;\n left: 100%;\n top: 50%;\n width: 6px;\n height: 2px;\n transform: translateY(-1px);\n background: ", ";\n }\n"], ["\n position: absolute;\n left: -14px;\n top: 13px;\n width: 12px;\n height: 12px;\n box-sizing: border-box;\n border-radius: 50%;\n border: 2px solid ", ";\n background: ", ";\n box-shadow: 0 0 5px ", ";\n z-index: 1;\n pointer-events: none;\n /* short stub toward the label \u2014 stops a few px short so it doesn't touch it */\n &::after {\n content: '';\n position: absolute;\n left: 100%;\n top: 50%;\n width: 6px;\n height: 2px;\n transform: translateY(-1px);\n background: ", ";\n }\n"])), function (_a) {
188
+ exports.StyledClusterNode = styled_components_1.default.span(templateObject_11 || (templateObject_11 = __makeTemplateObject(["\n position: absolute;\n left: -14px;\n top: 13px;\n width: 12px;\n height: 12px;\n box-sizing: border-box;\n border-radius: 50%;\n border: 2px solid ", ";\n background: ", ";\n box-shadow: 0 0 5px ", ";\n z-index: 1;\n pointer-events: none;\n /* short stub toward the label \u2014 stops a few px short so it doesn't touch it */\n &::after {\n content: '';\n position: absolute;\n left: 100%;\n top: 50%;\n width: 6px;\n height: 2px;\n transform: translateY(-1px);\n background: ", ";\n }\n"], ["\n position: absolute;\n left: -14px;\n top: 13px;\n width: 12px;\n height: 12px;\n box-sizing: border-box;\n border-radius: 50%;\n border: 2px solid ", ";\n background: ", ";\n box-shadow: 0 0 5px ", ";\n z-index: 1;\n pointer-events: none;\n /* short stub toward the label \u2014 stops a few px short so it doesn't touch it */\n &::after {\n content: '';\n position: absolute;\n left: 100%;\n top: 50%;\n width: 6px;\n height: 2px;\n transform: translateY(-1px);\n background: ", ";\n }\n"])), function (_a) {
183
189
  var $color = _a.$color;
184
190
  return $color;
185
191
  }, function (_a) {
@@ -192,37 +198,57 @@ exports.StyledClusterNode = styled_components_1.default.span(templateObject_18 |
192
198
  var $color = _a.$color;
193
199
  return $color;
194
200
  });
195
- exports.StyledEditCard = styled_components_1.default.div(templateObject_21 || (templateObject_21 = __makeTemplateObject(["\n display: flex;\n flex-flow: column;\n gap: 8px;\n background: ", ";\n /* Calm: an open field is a row of its section, set apart by the section's own\n hairlines and the active-row tint \u2014 not a second card drawn inside the\n first. */\n ", "\n\n /* Single-value editors (operators, long-string, markdown, richtext, byte-size)\n carry the card's own \"Clear value\" action, so suppress the value input's\n built-in ReqoreInput clear \u2014 ReqoreInput has no prop to hide it, and a\n separate input \u2715 plus the row-level trash action\n read as a duplicate. Multi-input cards (hash/list/\u2026) are not marked single,\n so their per-sub-field clears stay. */\n &.options-readfirst-card-single .reqore-clear-input-button {\n display: none;\n }\n"], ["\n display: flex;\n flex-flow: column;\n gap: 8px;\n background: ", ";\n /* Calm: an open field is a row of its section, set apart by the section's own\n hairlines and the active-row tint \u2014 not a second card drawn inside the\n first. */\n ", "\n\n /* Single-value editors (operators, long-string, markdown, richtext, byte-size)\n carry the card's own \"Clear value\" action, so suppress the value input's\n built-in ReqoreInput clear \u2014 ReqoreInput has no prop to hide it, and a\n separate input \u2715 plus the row-level trash action\n read as a duplicate. Multi-input cards (hash/list/\u2026) are not marked single,\n so their per-sub-field clears stay. */\n &.options-readfirst-card-single .reqore-clear-input-button {\n display: none;\n }\n"])), function (_a) {
201
+ exports.StyledEditCard = styled_components_1.default.div(templateObject_12 || (templateObject_12 = __makeTemplateObject(["\n padding: 12px;\n display: flex;\n flex-flow: column;\n gap: 8px;\n background: ", ";\n border: 1px solid ", ";\n border-radius: 8px;\n\n /* Single-value editors (operators, long-string, markdown, richtext, byte-size)\n carry the card's own \"Clear value\" action, so suppress the value input's\n built-in ReqoreInput clear \u2014 ReqoreInput has no prop to hide it, and a\n separate input \u2715 plus the row-level trash action\n read as a duplicate. Multi-input cards (hash/list/\u2026) are not marked single,\n so their per-sub-field clears stay. */\n &.options-readfirst-card-single .reqore-clear-input-button {\n display: none;\n }\n"], ["\n padding: 12px;\n display: flex;\n flex-flow: column;\n gap: 8px;\n background: ", ";\n border: 1px solid ", ";\n border-radius: 8px;\n\n /* Single-value editors (operators, long-string, markdown, richtext, byte-size)\n carry the card's own \"Clear value\" action, so suppress the value input's\n built-in ReqoreInput clear \u2014 ReqoreInput has no prop to hide it, and a\n separate input \u2715 plus the row-level trash action\n read as a duplicate. Multi-input cards (hash/list/\u2026) are not marked single,\n so their per-sub-field clears stay. */\n &.options-readfirst-card-single .reqore-clear-input-button {\n display: none;\n }\n"])), function (_a) {
196
202
  var $bg = _a.$bg;
197
203
  return $bg;
198
204
  }, function (_a) {
199
- var $calm = _a.$calm, $border = _a.$border;
200
- return $calm ? (0, styled_components_1.css)(templateObject_19 || (templateObject_19 = __makeTemplateObject(["\n padding: 12px ", "px;\n "], ["\n padding: 12px ", "px;\n "])), exports.CALM_SECTION_INSET) : (0, styled_components_1.css)(templateObject_20 || (templateObject_20 = __makeTemplateObject(["\n padding: 12px;\n border: 1px solid ", ";\n border-radius: 8px;\n "], ["\n padding: 12px;\n border: 1px solid ", ";\n border-radius: 8px;\n "])), $border);
205
+ var $border = _a.$border;
206
+ return $border;
201
207
  });
202
208
  // Recurring micro-layouts of the read-first rows and their popovers.
203
- exports.StyledLabelBlock = styled_components_1.default.div(templateObject_22 || (templateObject_22 = __makeTemplateObject(["\n display: flex;\n flex-flow: column;\n gap: 2px;\n min-width: 0;\n"], ["\n display: flex;\n flex-flow: column;\n gap: 2px;\n min-width: 0;\n"])));
204
- exports.StyledRowLabel = styled_components_1.default.div(templateObject_23 || (templateObject_23 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: 3px;\n color: ", ";\n font-weight: 600;\n font-size: 13px;\n min-width: 0;\n white-space: normal;\n overflow-wrap: anywhere;\n cursor: ", ";\n"], ["\n display: flex;\n align-items: center;\n gap: 3px;\n color: ", ";\n font-weight: 600;\n font-size: 13px;\n min-width: 0;\n white-space: normal;\n overflow-wrap: anywhere;\n cursor: ", ";\n"])), function (_a) {
209
+ exports.StyledLabelBlock = styled_components_1.default.div(templateObject_13 || (templateObject_13 = __makeTemplateObject(["\n display: flex;\n flex-flow: column;\n gap: 2px;\n min-width: 0;\n"], ["\n display: flex;\n flex-flow: column;\n gap: 2px;\n min-width: 0;\n"])));
210
+ /* An option's help is a button in the tab order (qorus#646), beside the name on its line: a button is a block,
211
+ which put it on a line of its own under a name in a narrow label column. Its target is reqore's `tiny` (26px),
212
+ or `small` (32px) for a finger, taller than the name's line: it reaches into the row's padding rather than
213
+ making every row with help taller. Its focus ring is reqore's, drawn inside it: one outside it overlapped the
214
+ name's last letter. */
215
+ var HELP_BUTTON_BESIDE_THE_NAME = "\n .options-readfirst-help {\n display: inline-flex;\n vertical-align: middle;\n flex-shrink: 0;\n margin-top: -5px;\n margin-bottom: -5px;\n }\n .options-readfirst-help-touch {\n margin-top: -8px;\n margin-bottom: -8px;\n }\n";
216
+ exports.StyledRowLabel = styled_components_1.default.div(templateObject_14 || (templateObject_14 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: 3px;\n color: ", ";\n font-weight: 600;\n font-size: 13px;\n min-width: 0;\n white-space: normal;\n overflow-wrap: anywhere;\n cursor: ", ";\n /* what the option takes goes under the name where both do not fit on a line (a phone): beside it, it took the\n name's room, which broke a word in two (\"Compute d\", qorus#646) */\n flex-wrap: wrap;\n row-gap: 2px;\n ", "\n"], ["\n display: flex;\n align-items: center;\n gap: 3px;\n color: ", ";\n font-weight: 600;\n font-size: 13px;\n min-width: 0;\n white-space: normal;\n overflow-wrap: anywhere;\n cursor: ", ";\n /* what the option takes goes under the name where both do not fit on a line (a phone): beside it, it took the\n name's room, which broke a word in two (\"Compute d\", qorus#646) */\n flex-wrap: wrap;\n row-gap: 2px;\n ", "\n"])), function (_a) {
205
217
  var $color = _a.$color;
206
218
  return $color;
207
219
  }, function (_a) {
208
220
  var $pointer = _a.$pointer;
209
221
  return ($pointer ? 'pointer' : 'inherit');
222
+ }, HELP_BUTTON_BESIDE_THE_NAME);
223
+ /**
224
+ * An option's name, its asterisk and its help: one group.
225
+ *
226
+ * In a row's label column (`$fill`) it is the column's width: the name on the left, wrapping, and the help at the
227
+ * column's right edge, so every row's (?) is on one line down the form rather than a step after each name
228
+ * (Foxhoundn, qlip #392: "please right align the question mark to get rid of the stair-case look"). The help is on
229
+ * the name's first line.
230
+ */
231
+ exports.StyledLabelName = styled_components_1.default.span(templateObject_17 || (templateObject_17 = __makeTemplateObject(["\n ", "\n min-width: 0;\n"], ["\n ", "\n min-width: 0;\n"])), function (_a) {
232
+ var $fill = _a.$fill;
233
+ return $fill ? (0, styled_components_1.css)(templateObject_15 || (templateObject_15 = __makeTemplateObject(["\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: start;\n width: 100%;\n column-gap: 3px;\n\n .options-readfirst-help {\n justify-self: end;\n }\n /* A stacked row's label is the row's whole width, with no column for the help to line up in: at its\n right edge the help floated alone, away from the name it explains (Foxhoundn, qlip #400: \"On mobile\n the question mark should stay with the label\"). It follows the name. */\n .readfirst-narrow & {\n grid-template-columns: minmax(0, max-content) auto;\n justify-content: start;\n\n .options-readfirst-help {\n justify-self: start;\n }\n }\n /* what the option takes flows after the name, under it where both do not fit */\n .options-readfirst-type {\n display: inline-flex;\n vertical-align: middle;\n margin-left: 4px;\n }\n "], ["\n display: grid;\n grid-template-columns: minmax(0, 1fr) auto;\n align-items: start;\n width: 100%;\n column-gap: 3px;\n\n .options-readfirst-help {\n justify-self: end;\n }\n /* A stacked row's label is the row's whole width, with no column for the help to line up in: at its\n right edge the help floated alone, away from the name it explains (Foxhoundn, qlip #400: \"On mobile\n the question mark should stay with the label\"). It follows the name. */\n .readfirst-narrow & {\n grid-template-columns: minmax(0, max-content) auto;\n justify-content: start;\n\n .options-readfirst-help {\n justify-self: start;\n }\n }\n /* what the option takes flows after the name, under it where both do not fit */\n .options-readfirst-type {\n display: inline-flex;\n vertical-align: middle;\n margin-left: 4px;\n }\n "]))) : (0, styled_components_1.css)(templateObject_16 || (templateObject_16 = __makeTemplateObject(["\n display: inline-flex;\n align-items: center;\n gap: 3px;\n "], ["\n display: inline-flex;\n align-items: center;\n gap: 3px;\n "])));
210
234
  });
235
+ /** A name's asterisk: after a word joiner, which no line breaks at, so it is on the line of the name's last word. */
236
+ exports.StyledLabelAsterisk = styled_components_1.default.span(templateObject_18 || (templateObject_18 = __makeTemplateObject(["\n white-space: nowrap;\n"], ["\n white-space: nowrap;\n"])));
211
237
  // A field's short_desc rendered under its name in the (narrow) label column,
212
238
  // revealed by the row's ⓘ. Reuses ReqoreP for the muted-note styling (size +
213
239
  // effect opacity); the only custom bit is the line-clamp that keeps it from
214
240
  // pushing the row wide.
215
- exports.StyledLabelDesc = (0, styled_components_1.default)(reqore_1.ReqoreP)(templateObject_24 || (templateObject_24 = __makeTemplateObject(["\n margin-top: 2px;\n white-space: normal;\n overflow: hidden;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n"], ["\n margin-top: 2px;\n white-space: normal;\n overflow: hidden;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n"])));
216
- exports.StyledCardHeading = styled_components_1.default.div(templateObject_25 || (templateObject_25 = __makeTemplateObject(["\n display: flex;\n flex-flow: column;\n min-width: 0;\n"], ["\n display: flex;\n flex-flow: column;\n min-width: 0;\n"])));
241
+ exports.StyledLabelDesc = (0, styled_components_1.default)(reqore_1.ReqoreP)(templateObject_19 || (templateObject_19 = __makeTemplateObject(["\n margin-top: 2px;\n white-space: normal;\n overflow: hidden;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n"], ["\n margin-top: 2px;\n white-space: normal;\n overflow: hidden;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n"])));
242
+ exports.StyledCardHeading = styled_components_1.default.div(templateObject_20 || (templateObject_20 = __makeTemplateObject(["\n display: flex;\n flex-flow: column;\n min-width: 0;\n"], ["\n display: flex;\n flex-flow: column;\n min-width: 0;\n"])));
217
243
  /* The card (expanded) label matches the read-row label exactly — same size /
218
244
  weight / case — so a field's name doesn't switch styles when you open it. */
219
- exports.StyledCardLabel = styled_components_1.default.div(templateObject_26 || (templateObject_26 = __makeTemplateObject(["\n font-size: 13px;\n font-weight: 600;\n color: ", ";\n display: flex;\n align-items: center;\n gap: 4px;\n"], ["\n font-size: 13px;\n font-weight: 600;\n color: ", ";\n display: flex;\n align-items: center;\n gap: 4px;\n"])), function (_a) {
245
+ exports.StyledCardLabel = styled_components_1.default.div(templateObject_21 || (templateObject_21 = __makeTemplateObject(["\n font-size: 13px;\n font-weight: 600;\n color: ", ";\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n row-gap: 2px;\n ", "\n"], ["\n font-size: 13px;\n font-weight: 600;\n color: ", ";\n display: flex;\n align-items: center;\n gap: 4px;\n flex-wrap: wrap;\n row-gap: 2px;\n ", "\n"])), function (_a) {
220
246
  var $color = _a.$color;
221
247
  return $color;
222
- });
248
+ }, HELP_BUTTON_BESIDE_THE_NAME);
223
249
  /* min-width: 0 lets the grid cell shrink below its content's intrinsic width
224
250
  so the ellipsis engages instead of overflowing. */
225
- exports.StyledRowValue = styled_components_1.default.div(templateObject_27 || (templateObject_27 = __makeTemplateObject(["\n min-width: 0;\n font-size: 13px;\n /* Value + inline reason(s) share the line, wrapping the reason below only when\n it doesn't fit (the Focus prototype's layout). */\n display: flex;\n flex-wrap: wrap;\n align-items: baseline;\n column-gap: 10px;\n row-gap: 2px;\n /* The muted/translucent colour applies to the VALUE TEXT only \u2014 not the whole\n cell \u2014 so the message panels and the structured preview below render at full\n opacity instead of inheriting the dimmed value colour. */\n .options-readfirst-valuetext {\n min-width: 0;\n max-width: 100%;\n color: ", ";\n font-style: ", ";\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n /* The code size chip kept above an OPEN editor. The read row puts the same chip\n at the top of the value cell with a 2px row-gap under it; matching that here is\n what stops the editor moving as the field opens. */\n .options-readfirst-editing-summary {\n margin-bottom: 2px;\n }\n .options-readfirst-reason {\n font-style: italic;\n font-size: 12px;\n line-height: 1.3;\n }\n /* Schema message panels: full width of the value column, on their own line\n directly beneath the value. */\n .options-readfirst-info-panel {\n flex-basis: 100%;\n width: 100%;\n display: flex;\n flex-flow: column;\n gap: 4px;\n margin-top: 4px;\n }\n /* Read-only companions of the value: what a chosen option means, on its own\n line under it; and a long text drawn in full in the inset. */\n .options-readfirst-choice-desc {\n flex-basis: 100%;\n width: 100%;\n min-width: 0;\n font-size: 12px;\n line-height: 1.4;\n opacity: 0.6;\n }\n .options-readfirst-text {\n color: ", ";\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n line-height: 1.5;\n }\n"], ["\n min-width: 0;\n font-size: 13px;\n /* Value + inline reason(s) share the line, wrapping the reason below only when\n it doesn't fit (the Focus prototype's layout). */\n display: flex;\n flex-wrap: wrap;\n align-items: baseline;\n column-gap: 10px;\n row-gap: 2px;\n /* The muted/translucent colour applies to the VALUE TEXT only \u2014 not the whole\n cell \u2014 so the message panels and the structured preview below render at full\n opacity instead of inheriting the dimmed value colour. */\n .options-readfirst-valuetext {\n min-width: 0;\n max-width: 100%;\n color: ", ";\n font-style: ", ";\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n /* The code size chip kept above an OPEN editor. The read row puts the same chip\n at the top of the value cell with a 2px row-gap under it; matching that here is\n what stops the editor moving as the field opens. */\n .options-readfirst-editing-summary {\n margin-bottom: 2px;\n }\n .options-readfirst-reason {\n font-style: italic;\n font-size: 12px;\n line-height: 1.3;\n }\n /* Schema message panels: full width of the value column, on their own line\n directly beneath the value. */\n .options-readfirst-info-panel {\n flex-basis: 100%;\n width: 100%;\n display: flex;\n flex-flow: column;\n gap: 4px;\n margin-top: 4px;\n }\n /* Read-only companions of the value: what a chosen option means, on its own\n line under it; and a long text drawn in full in the inset. */\n .options-readfirst-choice-desc {\n flex-basis: 100%;\n width: 100%;\n min-width: 0;\n font-size: 12px;\n line-height: 1.4;\n opacity: 0.6;\n }\n .options-readfirst-text {\n color: ", ";\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n line-height: 1.5;\n }\n"])), function (_a) {
251
+ exports.StyledRowValue = styled_components_1.default.div(templateObject_22 || (templateObject_22 = __makeTemplateObject(["\n min-width: 0;\n font-size: 13px;\n /* Value + inline reason(s) share the line, wrapping the reason below only when\n it doesn't fit (the Focus prototype's layout). */\n display: flex;\n flex-wrap: wrap;\n align-items: baseline;\n column-gap: 10px;\n row-gap: 2px;\n /* The muted/translucent color applies to the VALUE TEXT only \u2014 not the whole\n cell \u2014 so the message panels and the structured preview below render at full\n opacity instead of inheriting the dimmed value color. */\n .options-readfirst-valuetext {\n min-width: 0;\n max-width: 100%;\n color: ", ";\n font-style: ", ";\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n /* A value that is a web address: a link, underlined, broken anywhere so a long one wraps inside the row, with a\n focus ring of its own color when reached with the keyboard. */\n .options-readfirst-link {\n text-decoration: underline;\n text-underline-offset: 2px;\n overflow-wrap: anywhere;\n border-radius: 2px;\n }\n .options-readfirst-link:focus-visible {\n outline: 2px solid currentColor;\n outline-offset: 2px;\n }\n /* The code size chip kept above an OPEN editor. The read row puts the same chip\n at the top of the value cell with a 2px row-gap under it; matching that here is\n what stops the editor moving as the field opens. */\n .options-readfirst-editing-summary {\n margin-bottom: 2px;\n }\n .options-readfirst-reason {\n font-style: italic;\n font-size: 12px;\n line-height: 1.3;\n }\n /* The reason that follows the value shares its line and wraps within its own box. As a flex item\n sized to its text it could only share the line whole: a reason longer than the room beside the\n value went to the line below as a block, and an empty value's dash was left alone on its line,\n the reason under it like the text of a list item under its bullet (qorus#646). It goes below\n only when the value leaves it less than 16em. */\n .options-readfirst-valuetext + .options-readfirst-reason {\n flex: 1 1 16em;\n min-width: 0;\n }\n /* Schema message panels: full width of the value column, on their own line\n directly beneath the value. */\n .options-readfirst-info-panel {\n flex-basis: 100%;\n width: 100%;\n display: flex;\n flex-flow: column;\n gap: 4px;\n margin-top: 4px;\n }\n /* Read-only companions of the value: what a chosen option means, on its own\n line under it; and a long text drawn in full in the inset. */\n .options-readfirst-choice-desc {\n flex-basis: 100%;\n width: 100%;\n min-width: 0;\n font-size: 12px;\n line-height: 1.4;\n opacity: 0.6;\n }\n .options-readfirst-text {\n color: ", ";\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n line-height: 1.5;\n }\n"], ["\n min-width: 0;\n font-size: 13px;\n /* Value + inline reason(s) share the line, wrapping the reason below only when\n it doesn't fit (the Focus prototype's layout). */\n display: flex;\n flex-wrap: wrap;\n align-items: baseline;\n column-gap: 10px;\n row-gap: 2px;\n /* The muted/translucent color applies to the VALUE TEXT only \u2014 not the whole\n cell \u2014 so the message panels and the structured preview below render at full\n opacity instead of inheriting the dimmed value color. */\n .options-readfirst-valuetext {\n min-width: 0;\n max-width: 100%;\n color: ", ";\n font-style: ", ";\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n /* A value that is a web address: a link, underlined, broken anywhere so a long one wraps inside the row, with a\n focus ring of its own color when reached with the keyboard. */\n .options-readfirst-link {\n text-decoration: underline;\n text-underline-offset: 2px;\n overflow-wrap: anywhere;\n border-radius: 2px;\n }\n .options-readfirst-link:focus-visible {\n outline: 2px solid currentColor;\n outline-offset: 2px;\n }\n /* The code size chip kept above an OPEN editor. The read row puts the same chip\n at the top of the value cell with a 2px row-gap under it; matching that here is\n what stops the editor moving as the field opens. */\n .options-readfirst-editing-summary {\n margin-bottom: 2px;\n }\n .options-readfirst-reason {\n font-style: italic;\n font-size: 12px;\n line-height: 1.3;\n }\n /* The reason that follows the value shares its line and wraps within its own box. As a flex item\n sized to its text it could only share the line whole: a reason longer than the room beside the\n value went to the line below as a block, and an empty value's dash was left alone on its line,\n the reason under it like the text of a list item under its bullet (qorus#646). It goes below\n only when the value leaves it less than 16em. */\n .options-readfirst-valuetext + .options-readfirst-reason {\n flex: 1 1 16em;\n min-width: 0;\n }\n /* Schema message panels: full width of the value column, on their own line\n directly beneath the value. */\n .options-readfirst-info-panel {\n flex-basis: 100%;\n width: 100%;\n display: flex;\n flex-flow: column;\n gap: 4px;\n margin-top: 4px;\n }\n /* Read-only companions of the value: what a chosen option means, on its own\n line under it; and a long text drawn in full in the inset. */\n .options-readfirst-choice-desc {\n flex-basis: 100%;\n width: 100%;\n min-width: 0;\n font-size: 12px;\n line-height: 1.4;\n opacity: 0.6;\n }\n .options-readfirst-text {\n color: ", ";\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n line-height: 1.5;\n }\n"])), function (_a) {
226
252
  var $color = _a.$color;
227
253
  return $color;
228
254
  }, function (_a) {
@@ -232,44 +258,40 @@ exports.StyledRowValue = styled_components_1.default.div(templateObject_27 || (t
232
258
  var $color = _a.$color;
233
259
  return $color;
234
260
  });
235
- exports.StyledRowActions = styled_components_1.default.div(templateObject_28 || (templateObject_28 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n /* No align-self override: the actions (incl. the status dot) follow the row's\n own vertical alignment \u2014 CENTRED on the common single-line row, TOP-aligned\n (first line) on the tall rows that opt into align-items:start (descriptions /\n message panels / hash previews). */\n gap: 6px;\n"], ["\n display: flex;\n align-items: center;\n /* No align-self override: the actions (incl. the status dot) follow the row's\n own vertical alignment \u2014 CENTRED on the common single-line row, TOP-aligned\n (first line) on the tall rows that opt into align-items:start (descriptions /\n message panels / hash previews). */\n gap: 6px;\n"])));
236
- // A single status mark pinned at the row's trailing edge: one dot, colour =
261
+ exports.StyledRowActions = styled_components_1.default.div(templateObject_23 || (templateObject_23 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n /* No align-self override: the actions (incl. the status dot) follow the row's\n own vertical alignment \u2014 CENTRED on the common single-line row, TOP-aligned\n (first line) on the tall rows that opt into align-items:start (descriptions /\n message panels / hash previews). */\n gap: 6px;\n"], ["\n display: flex;\n align-items: center;\n /* No align-self override: the actions (incl. the status dot) follow the row's\n own vertical alignment \u2014 CENTRED on the common single-line row, TOP-aligned\n (first line) on the tall rows that opt into align-items:start (descriptions /\n message panels / hash previews). */\n gap: 6px;\n"])));
262
+ // A single status mark pinned at the row's trailing edge: one dot, color =
237
263
  // severity (danger/warning/success). This is the "Focus" read-first signal that
238
264
  // replaces the recessed value surface's intent stripe — attention dots carry a
239
265
  // faint ring, a plain "set" dot does not. `unset` rows render no dot.
240
- exports.StyledStatusDot = styled_components_1.default.span(templateObject_29 || (templateObject_29 = __makeTemplateObject(["\n width: 7px;\n height: 7px;\n border-radius: 50%;\n flex: 0 0 auto;\n background: ", ";\n box-shadow: ", ";\n"], ["\n width: 7px;\n height: 7px;\n border-radius: 50%;\n flex: 0 0 auto;\n background: ", ";\n box-shadow: ", ";\n"])), function (_a) {
266
+ exports.StyledStatusDot = styled_components_1.default.span(templateObject_24 || (templateObject_24 = __makeTemplateObject(["\n width: 7px;\n height: 7px;\n border-radius: 50%;\n flex: 0 0 auto;\n background: ", ";\n box-shadow: ", ";\n"], ["\n width: 7px;\n height: 7px;\n border-radius: 50%;\n flex: 0 0 auto;\n background: ", ";\n box-shadow: ", ";\n"])), function (_a) {
241
267
  var $color = _a.$color;
242
268
  return $color;
243
269
  }, function (_a) {
244
270
  var $color = _a.$color, $ring = _a.$ring;
245
271
  return ($ring ? "0 0 0 3px ".concat($color, "22") : 'none');
246
272
  });
247
- exports.StyledActionSlot = styled_components_1.default.span(templateObject_30 || (templateObject_30 = __makeTemplateObject(["\n display: inline-flex;\n justify-content: center;\n width: ", "px;\n flex: 0 0 auto;\n"], ["\n display: inline-flex;\n justify-content: center;\n width: ", "px;\n flex: 0 0 auto;\n"])), function (_a) {
273
+ exports.StyledActionSlot = styled_components_1.default.span(templateObject_25 || (templateObject_25 = __makeTemplateObject(["\n display: inline-flex;\n justify-content: center;\n width: ", "px;\n flex: 0 0 auto;\n"], ["\n display: inline-flex;\n justify-content: center;\n width: ", "px;\n flex: 0 0 auto;\n"])), function (_a) {
248
274
  var $width = _a.$width;
249
275
  return $width;
250
276
  });
251
- exports.StyledColumn = styled_components_1.default.div(templateObject_31 || (templateObject_31 = __makeTemplateObject(["\n display: flex;\n flex-flow: column;\n"], ["\n display: flex;\n flex-flow: column;\n"])));
277
+ exports.StyledColumn = styled_components_1.default.div(templateObject_26 || (templateObject_26 = __makeTemplateObject(["\n display: flex;\n flex-flow: column;\n"], ["\n display: flex;\n flex-flow: column;\n"])));
252
278
  // The structured hash/list preview, rendered inside the value cell directly
253
279
  // under the value summary. Full-width of the value column (it's a flex child of
254
280
  // the wrapping value cell) so it lines up with the value, not the label gutter.
255
- exports.StyledRowInset = styled_components_1.default.div(templateObject_32 || (templateObject_32 = __makeTemplateObject(["\n flex-basis: 100%;\n width: 100%;\n margin-top: 4px;\n"], ["\n flex-basis: 100%;\n width: 100%;\n margin-top: 4px;\n"])));
281
+ exports.StyledRowInset = styled_components_1.default.div(templateObject_27 || (templateObject_27 = __makeTemplateObject(["\n flex-basis: 100%;\n width: 100%;\n margin-top: 4px;\n"], ["\n flex-basis: 100%;\n width: 100%;\n margin-top: 4px;\n"])));
256
282
  /**
257
- * The stack literal text renders in: source, ids, tokens, data strings.
258
- *
259
- * Defined HERE rather than taken from reqore's `ReqoreFonts.mono`, which is the
260
- * same stack. Reqore is a peer dependency at `>=0.71.16` and that export arrived
261
- * later, so reading it would crash every consumer inside the declared range —
262
- * the whole form preview lost over a font choice. One local constant costs
263
- * nothing and keeps the code preview and the schema view's data values
264
- * identical, which is the only reason to share it in the first place.
283
+ * The stack literal text renders in: source, ids, tokens, data strings - reqore's own (`ReqoreFonts.mono`), as
284
+ * the expression editor's, so the code preview, the schema view's data values and the editor's text are one face.
285
+ * It has been in reqore since 0.72.7, below the peer range (`>=0.74.0`). Never the bare generic `monospace`:
286
+ * that is the browser's default fixed-width font (Courier in Chrome on macOS), larger than the text beside it.
265
287
  */
266
- exports.MONO_FONT_STACK = "ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace";
288
+ exports.MONO_FONT_STACK = reqore_1.ReqoreFonts.mono;
267
289
  // A collapsed code-block preview shown under the value summary for a
268
290
  // `code-editor` field. Multi-line, monospace, subtle background — matches
269
291
  // the aesthetic of the classic code-view surface but small enough to sit
270
292
  // inside a read-row. Height is capped by the wrapping `ReqoreCollapsibleContent`
271
293
  // so the "Show more" affordance stays useful.
272
- exports.StyledCodePreview = styled_components_1.default.pre(templateObject_33 || (templateObject_33 = __makeTemplateObject(["\n margin: 0;\n padding: 8px 10px;\n border-radius: 4px;\n background: ", ";\n border: 1px solid ", ";\n color: ", ";\n font-family: ", ";\n font-size: 11.5px;\n line-height: 1.5;\n white-space: pre;\n overflow: auto;\n max-width: 100%;\n"], ["\n margin: 0;\n padding: 8px 10px;\n border-radius: 4px;\n background: ", ";\n border: 1px solid ", ";\n color: ", ";\n font-family: ", ";\n font-size: 11.5px;\n line-height: 1.5;\n white-space: pre;\n overflow: auto;\n max-width: 100%;\n"])), function (_a) {
294
+ exports.StyledCodePreview = styled_components_1.default.pre(templateObject_28 || (templateObject_28 = __makeTemplateObject(["\n margin: 0;\n padding: 8px 10px;\n border-radius: 4px;\n background: ", ";\n border: 1px solid ", ";\n color: ", ";\n font-family: ", ";\n font-size: 11.5px;\n line-height: 1.5;\n white-space: pre;\n overflow: auto;\n max-width: 100%;\n"], ["\n margin: 0;\n padding: 8px 10px;\n border-radius: 4px;\n background: ", ";\n border: 1px solid ", ";\n color: ", ";\n font-family: ", ";\n font-size: 11.5px;\n line-height: 1.5;\n white-space: pre;\n overflow: auto;\n max-width: 100%;\n"])), function (_a) {
273
295
  var $bg = _a.$bg;
274
296
  return $bg;
275
297
  }, function (_a) {
@@ -279,15 +301,7 @@ exports.StyledCodePreview = styled_components_1.default.pre(templateObject_33 ||
279
301
  var $fg = _a.$fg;
280
302
  return $fg;
281
303
  }, exports.MONO_FONT_STACK);
282
- // A small inline colour swatch shown before an rgbcolor value's hex string.
283
- exports.StyledColorSwatch = styled_components_1.default.span(templateObject_34 || (templateObject_34 = __makeTemplateObject(["\n width: 12px;\n height: 12px;\n border-radius: 3px;\n flex: 0 0 auto;\n background: ", ";\n border: 1px solid ", ";\n"], ["\n width: 12px;\n height: 12px;\n border-radius: 3px;\n flex: 0 0 auto;\n background: ", ";\n border: 1px solid ", ";\n"])), function (_a) {
284
- var $color = _a.$color;
285
- return $color;
286
- }, function (_a) {
287
- var $border = _a.$border;
288
- return $border;
289
- });
290
- exports.StyledGroupBody = styled_components_1.default.div(templateObject_36 || (templateObject_36 = __makeTemplateObject(["\n display: flex;\n flex-flow: column;\n position: relative;\n /* Exposed as a var so the inter-field divider can centre itself in the gap\n (the gap differs wide vs narrow). */\n --readfirst-row-gap: 4px;\n gap: var(--readfirst-row-gap);\n\n /* Indent each field block under the group header by a FLUID step. The %\n resolves against this container's width (not the screen), so it tracks the\n (Field blocks no longer get a left gutter \u2014 the spine/rail that needed it are\n gone, so rows sit flush against the box, like the Focus prototype.) */\n > * {\n margin-left: 0;\n }\n\n /* No group spine: the \"Focus\" look keeps the rows flat against the box. (The\n required-group rail is a separate descendant ::after and still renders.) */\n\n .readfirst-row {\n display: grid;\n /* Fixed label column: the recessed value surface (::before below) starts at a\n constant x, so the label width can't flex or the stripe would drift off the\n value edge. The value column is minmax(0, 1fr) \u2014 a bare 1fr keeps its\n min-content width, so a long unbroken value (e.g. a URL) would force the\n grid wider than its container and produce a horizontal scrollbar. The 0\n minimum lets it shrink and the value cell's ellipsis take over instead. */\n grid-template-columns: ", " minmax(0, 1fr) auto;\n /* CENTRE the cells vertically: on the common single-line read row the label,\n value and status dot all sit on one centred line. Tall rows (a shown\n description, message panels or a hash preview) opt back into top-alignment\n (.readfirst-row-info-open / .readfirst-row-tall below) so the label + dot\n stay on the value's FIRST line instead of floating to the middle. */\n align-items: center;\n gap: 14px;\n /* Generous, SYMMETRIC vertical padding so a single-line row isn't cramped\n (content sits with even breathing room top + bottom); a min-height floor\n keeps the rare shorter row a comfortable tap target. */\n min-height: 40px;\n padding: 9px 10px;\n border-radius: 6px;\n cursor: pointer;\n transition: background 0.12s ease;\n }\n /* A dim hairline in the gap below each field so its start/end reads clearly.\n Absolutely positioned (not a border) so it stays straight + full-width and\n the row's rounded hover highlight is unaffected; sits in the inter-row gap. */\n .readfirst-row::after {\n content: '';\n position: absolute;\n /* Inset to the row's horizontal padding so the line spans the content, not\n the full box edge-to-edge. */\n left: ", "px;\n right: ", "px;\n /* Centred in the inter-field gap (which differs wide vs narrow) so the space\n above and below each line is equal. */\n bottom: calc(var(--readfirst-row-gap, 4px) / -2);\n height: 1px;\n background: ", ";\n opacity: 0.5;\n pointer-events: none;\n z-index: 0;\n }\n .readfirst-row:last-child::after {\n display: none;\n }\n .readfirst-row:hover {\n background: ", ";\n }\n .readfirst-row:focus-visible {\n outline: 2px solid ", ";\n outline-offset: -2px;\n background: ", ";\n }\n /* A hidden (not-yet-added) field surfaced by the search is dimmed. */\n .readfirst-row-hidden {\n opacity: 0.65;\n }\n /* The \"N more fields\" control IS a field row \u2014 same grid, same padding, same\n hover \u2014 so it lines up with the rows above instead of floating as a scrap\n of text in the box's corner. A dashed edge and a lower-contrast label are\n what say it is not itself a field: nothing here can be set.\n\n It spans both content columns because it has no label/value split, and it\n drops the inter-row hairline (the ::after rule) since it always sits last. */\n .readfirst-more-row {\n grid-template-columns: 1fr auto;\n border: 1px dashed ", ";\n background: transparent;\n width: 100%;\n text-align: left;\n font: inherit;\n color: inherit;\n /* The dashed edge replaces the hairline; two lines would read as a divider\n AND a border stacked. */\n margin-top: 2px;\n }\n .readfirst-more-row::after {\n display: none;\n }\n .readfirst-more-row:hover {\n background: ", ";\n border-style: solid;\n }\n .readfirst-more-row:focus-visible {\n outline: 2px solid ", ";\n outline-offset: -2px;\n }\n /* The chevron points the way the click goes: down to reveal, up to fold. */\n .readfirst-more-row .readfirst-more-chevron {\n transition: transform 0.15s ease;\n }\n .readfirst-more-row[aria-expanded='true'] .readfirst-more-chevron {\n transform: rotate(180deg);\n }\n /* A disabled field (schema disabled flag or unmet dependencies) is not a\n click target \u2014 no hover invite, not-allowed cursor; a lock replaces the\n pencil. */\n /* A disabled field reads dimmed (its name + value at 0.6) \u2014 clearly inactive. */\n .readfirst-row-disabled {\n cursor: not-allowed;\n opacity: 0.6;\n }\n .readfirst-row-disabled:hover {\n background: transparent;\n }\n /* Required-group linkage: hovering a member highlights every sibling row \u2014\n just a background tint, no left stripe (that reads as an intent edge). */\n .readfirst-row-group-highlight {\n background: ", ";\n }\n .readfirst-row-flash {\n animation: readfirstRowFlash 1.4s ease;\n }\n @keyframes readfirstRowFlash {\n 0% {\n background: ", ";\n }\n 100% {\n background: transparent;\n }\n }\n /* A scalar row being edited in place: the real editor replaces the value\n cell. The row stops being a click target (the editor owns the clicks) and\n keeps a constant active background. Vertical padding is tightened so the\n editor fits inside the same ~38px the read row occupies \u2014 switching into\n (and out of) inline editing must not shift the rows around it. */\n .readfirst-row-editing {\n cursor: default;\n /* Top-anchor the cells: with multi-line editors (e.g. allowed-values =\n input + picker), per-cell centring gives every control a different\n anchor. Instead everything aligns to the FIRST editor line \u2014 label and\n the \u2713/\u21BA cluster get small offsets to sit optically centred on it. */\n align-items: start;\n background: ", ";\n /* No top padding (the per-cell nudges below anchor the editor to the first\n line), but a real BOTTOM padding so the editor never sits flush against\n the row's bottom edge \u2014 a tall input used to look clipped/unfinished. */\n padding-top: 0;\n padding-bottom: 9px;\n /* Tighter column gap: the editor's trailing template \u22EE and our \u2713 should\n read as one control cluster, not two separated groups. */\n column-gap: 6px;\n }\n /* Centre each cell's content on the row's ~38px first-line band. The label\n text (+10) and the \u2713/\u21BA cluster (+3) were already nudged, but the editor\n cell was not \u2014 so a single-line input sat ~3px above the buttons. A 32px\n control needs +3 to centre in 38px, so the editor gets the same offset and\n lines up with the buttons. (A multi-line editor's first line lands on the\n band too; its extra rows grow downward.) */\n .readfirst-row-editing > div:nth-child(1) {\n padding-top: 10px;\n }\n .readfirst-row-editing > div:nth-child(2) {\n padding-top: 3px;\n }\n .readfirst-row-editing > div:nth-child(3) {\n padding-top: 3px;\n }\n /* A read-only row is not a control. No pointer and no hover tint, because a\n click does nothing; and its value wraps in full \u2014 the row is the only\n rendering the value gets, so a line cut with an ellipsis would be the\n reader's whole answer. */\n .readfirst-row-read {\n cursor: default;\n }\n .readfirst-row-read:hover {\n background: transparent;\n }\n .readfirst-row-read .options-readfirst-valuetext {\n white-space: pre-wrap;\n overflow: visible;\n text-overflow: clip;\n overflow-wrap: anywhere;\n }\n .readfirst-row-editing:hover {\n background: ", ";\n }\n\n /* Narrow FORMS (phone / slim drawer): stack each row \u2014 label + actions share\n the first line, the value cell (or the inline editor) takes the full width\n beneath. The class is set from a measured wrap width (react-use useMeasure)\n rather than a viewport media query, so a slim desktop drawer stacks too.\n The 3 row children are placed explicitly:\n label (1,1) \u00B7 actions (1,2) \u00B7 value (2, span both). */\n /* Generous breathing room BETWEEN fields when stacked \u2014 far easier to scan and\n less overwhelming on a phone. */\n &.readfirst-narrow {\n --readfirst-row-gap: 18px;\n }\n &.readfirst-narrow .readfirst-row {\n grid-template-columns: minmax(0, 1fr) auto;\n gap: 2px 14px;\n position: relative;\n }\n &.readfirst-narrow .readfirst-row > :nth-child(1) {\n grid-column: 1;\n grid-row: 1;\n }\n &.readfirst-narrow .readfirst-row > :nth-child(3) {\n grid-column: 2;\n grid-row: 1;\n }\n &.readfirst-narrow .readfirst-row > :nth-child(2) {\n grid-column: 1 / -1;\n grid-row: 2;\n }\n /* Read (non-editing) rows: float the trailing actions (status dot + the\n hover-revealed delete/revert) out of the grid flow so a delete button can't\n inflate the first row and push the value down. They're pinned to a band the\n height of the LABEL line and vertically centred in it \u2014 so the dot always\n sits at the same place (centred on the field name), never the bare corner. */\n &.readfirst-narrow .readfirst-row:not(.readfirst-row-editing) > :nth-child(3) {\n position: absolute;\n top: 2px;\n right: 10px;\n height: 22px;\n }\n &.readfirst-narrow .readfirst-row:not(.readfirst-row-editing) > :nth-child(1) {\n padding-right: 46px;\n }\n\n /* Focus calm rows: NO recessed value surface and NO intent stripe. Row status\n is carried by the trailing status dot; message/preview panels keep their own\n intent backgrounds. The (now invisible) pseudo is retained only to preserve\n the block's positioning/stacking context that the required-group rail and its\n cluster nodes resolve against \u2014 removing it would unmoor them. */\n > *:not(.options-readfirst-card) {\n position: relative;\n }\n > *:not(.options-readfirst-card)::before {\n content: '';\n position: absolute;\n inset: 0;\n left: ", ";\n background: transparent;\n pointer-events: none;\n z-index: 0;\n }\n /* Content rides above the surface layer \u2014 except the cluster node, which is\n absolutely positioned in the gutter and must keep its own positioning. */\n > *:not(.options-readfirst-card) > *:not(.options-readfirst-node) {\n position: relative;\n z-index: 1;\n }\n\n /* (The required-group connection rail was removed \u2014 the \"One of the below is\n required\" box now carries the grouping.) */\n\n /* Tall rows top-anchor (overriding the row's centred default) so the label and\n dot stay on the value's FIRST line rather than floating to the vertical\n middle: .readfirst-row-info-open = a shown short_desc grows the LABEL;\n .readfirst-row-tall = message panels / a hash preview grow the VALUE cell. */\n .readfirst-row-info-open,\n .readfirst-row-tall {\n align-items: start;\n }\n /* Narrow stacks label-over-value: the value aligns flush UNDER the label (no\n indent), like the Focus prototype. */\n &.readfirst-narrow .readfirst-row > :nth-child(2) {\n padding-left: 0;\n }\n &.readfirst-narrow > *:not(.options-readfirst-card)::before {\n left: 0;\n }\n /* Touch layouts have no hover: a slot reserved for the hover-revealed edit\n pencil is permanent dead space that insets every chip from the edge \u2014\n drop it (rows are tap-to-edit; the lock/add slots stay, they're static). */\n &.readfirst-narrow .options-readfirst-trailing-hover-only {\n /* !important: the slot carries an inline display for the desktop layout. */\n display: none !important;\n }\n /* Stacked rows: keep them tight (match the Focus prototype). The min-height is\n dropped so a 2-line label+value row sizes to its content instead of being\n padded out to 38px. The in-place editor keeps zero padding (below). */\n &.readfirst-narrow .readfirst-row {\n padding-top: 2px;\n padding-bottom: 2px;\n min-height: 0;\n }\n &.readfirst-narrow .readfirst-row-editing {\n padding-top: 0;\n padding-bottom: 0;\n }\n\n /* CALM appearance \u2014 a section of label/value rows split by hairlines.\n\n Every entry the body holds (a row, the column an open row sits in, a\n group heading, the one-of cluster, the \"N more fields\" control) is drawn\n edge to edge with ONE full-width hairline above it, the same colour as the\n section's own edge. The first entry's line is the one under the section\n header (a minimal header draws none of its own). Two things take no line,\n because a heading and the rows it heads read as one block: the entry right\n under a group heading (or its subtitle), and the first row under the\n cluster's sentence.\n\n Rows lose their rounded hover pill and the inset hairline between them, and\n take the section's 16px inset. Placed last so it wins over the narrow\n rules above, which a phone-width calm form also matches. */\n ", "\n"], ["\n display: flex;\n flex-flow: column;\n position: relative;\n /* Exposed as a var so the inter-field divider can centre itself in the gap\n (the gap differs wide vs narrow). */\n --readfirst-row-gap: 4px;\n gap: var(--readfirst-row-gap);\n\n /* Indent each field block under the group header by a FLUID step. The %\n resolves against this container's width (not the screen), so it tracks the\n (Field blocks no longer get a left gutter \u2014 the spine/rail that needed it are\n gone, so rows sit flush against the box, like the Focus prototype.) */\n > * {\n margin-left: 0;\n }\n\n /* No group spine: the \"Focus\" look keeps the rows flat against the box. (The\n required-group rail is a separate descendant ::after and still renders.) */\n\n .readfirst-row {\n display: grid;\n /* Fixed label column: the recessed value surface (::before below) starts at a\n constant x, so the label width can't flex or the stripe would drift off the\n value edge. The value column is minmax(0, 1fr) \u2014 a bare 1fr keeps its\n min-content width, so a long unbroken value (e.g. a URL) would force the\n grid wider than its container and produce a horizontal scrollbar. The 0\n minimum lets it shrink and the value cell's ellipsis take over instead. */\n grid-template-columns: ", " minmax(0, 1fr) auto;\n /* CENTRE the cells vertically: on the common single-line read row the label,\n value and status dot all sit on one centred line. Tall rows (a shown\n description, message panels or a hash preview) opt back into top-alignment\n (.readfirst-row-info-open / .readfirst-row-tall below) so the label + dot\n stay on the value's FIRST line instead of floating to the middle. */\n align-items: center;\n gap: 14px;\n /* Generous, SYMMETRIC vertical padding so a single-line row isn't cramped\n (content sits with even breathing room top + bottom); a min-height floor\n keeps the rare shorter row a comfortable tap target. */\n min-height: 40px;\n padding: 9px 10px;\n border-radius: 6px;\n cursor: pointer;\n transition: background 0.12s ease;\n }\n /* A dim hairline in the gap below each field so its start/end reads clearly.\n Absolutely positioned (not a border) so it stays straight + full-width and\n the row's rounded hover highlight is unaffected; sits in the inter-row gap. */\n .readfirst-row::after {\n content: '';\n position: absolute;\n /* Inset to the row's horizontal padding so the line spans the content, not\n the full box edge-to-edge. */\n left: ", "px;\n right: ", "px;\n /* Centred in the inter-field gap (which differs wide vs narrow) so the space\n above and below each line is equal. */\n bottom: calc(var(--readfirst-row-gap, 4px) / -2);\n height: 1px;\n background: ", ";\n opacity: 0.5;\n pointer-events: none;\n z-index: 0;\n }\n .readfirst-row:last-child::after {\n display: none;\n }\n .readfirst-row:hover {\n background: ", ";\n }\n .readfirst-row:focus-visible {\n outline: 2px solid ", ";\n outline-offset: -2px;\n background: ", ";\n }\n /* A hidden (not-yet-added) field surfaced by the search is dimmed. */\n .readfirst-row-hidden {\n opacity: 0.65;\n }\n /* The \"N more fields\" control IS a field row \u2014 same grid, same padding, same\n hover \u2014 so it lines up with the rows above instead of floating as a scrap\n of text in the box's corner. A dashed edge and a lower-contrast label are\n what say it is not itself a field: nothing here can be set.\n\n It spans both content columns because it has no label/value split, and it\n drops the inter-row hairline (the ::after rule) since it always sits last. */\n .readfirst-more-row {\n grid-template-columns: 1fr auto;\n border: 1px dashed ", ";\n background: transparent;\n width: 100%;\n text-align: left;\n font: inherit;\n color: inherit;\n /* The dashed edge replaces the hairline; two lines would read as a divider\n AND a border stacked. */\n margin-top: 2px;\n }\n .readfirst-more-row::after {\n display: none;\n }\n .readfirst-more-row:hover {\n background: ", ";\n border-style: solid;\n }\n .readfirst-more-row:focus-visible {\n outline: 2px solid ", ";\n outline-offset: -2px;\n }\n /* The chevron points the way the click goes: down to reveal, up to fold. */\n .readfirst-more-row .readfirst-more-chevron {\n transition: transform 0.15s ease;\n }\n .readfirst-more-row[aria-expanded='true'] .readfirst-more-chevron {\n transform: rotate(180deg);\n }\n /* A disabled field (schema disabled flag or unmet dependencies) is not a\n click target \u2014 no hover invite, not-allowed cursor; a lock replaces the\n pencil. */\n /* A disabled field reads dimmed (its name + value at 0.6) \u2014 clearly inactive. */\n .readfirst-row-disabled {\n cursor: not-allowed;\n opacity: 0.6;\n }\n .readfirst-row-disabled:hover {\n background: transparent;\n }\n /* Required-group linkage: hovering a member highlights every sibling row \u2014\n just a background tint, no left stripe (that reads as an intent edge). */\n .readfirst-row-group-highlight {\n background: ", ";\n }\n .readfirst-row-flash {\n animation: readfirstRowFlash 1.4s ease;\n }\n @keyframes readfirstRowFlash {\n 0% {\n background: ", ";\n }\n 100% {\n background: transparent;\n }\n }\n /* A scalar row being edited in place: the real editor replaces the value\n cell. The row stops being a click target (the editor owns the clicks) and\n keeps a constant active background. Vertical padding is tightened so the\n editor fits inside the same ~38px the read row occupies \u2014 switching into\n (and out of) inline editing must not shift the rows around it. */\n .readfirst-row-editing {\n cursor: default;\n /* Top-anchor the cells: with multi-line editors (e.g. allowed-values =\n input + picker), per-cell centring gives every control a different\n anchor. Instead everything aligns to the FIRST editor line \u2014 label and\n the \u2713/\u21BA cluster get small offsets to sit optically centred on it. */\n align-items: start;\n background: ", ";\n /* No top padding (the per-cell nudges below anchor the editor to the first\n line), but a real BOTTOM padding so the editor never sits flush against\n the row's bottom edge \u2014 a tall input used to look clipped/unfinished. */\n padding-top: 0;\n padding-bottom: 9px;\n /* Tighter column gap: the editor's trailing template \u22EE and our \u2713 should\n read as one control cluster, not two separated groups. */\n column-gap: 6px;\n }\n /* Centre each cell's content on the row's ~38px first-line band. The label\n text (+10) and the \u2713/\u21BA cluster (+3) were already nudged, but the editor\n cell was not \u2014 so a single-line input sat ~3px above the buttons. A 32px\n control needs +3 to centre in 38px, so the editor gets the same offset and\n lines up with the buttons. (A multi-line editor's first line lands on the\n band too; its extra rows grow downward.) */\n .readfirst-row-editing > div:nth-child(1) {\n padding-top: 10px;\n }\n .readfirst-row-editing > div:nth-child(2) {\n padding-top: 3px;\n }\n .readfirst-row-editing > div:nth-child(3) {\n padding-top: 3px;\n }\n /* A read-only row is not a control. No pointer and no hover tint, because a\n click does nothing; and its value wraps in full \u2014 the row is the only\n rendering the value gets, so a line cut with an ellipsis would be the\n reader's whole answer. */\n .readfirst-row-read {\n cursor: default;\n }\n .readfirst-row-read:hover {\n background: transparent;\n }\n .readfirst-row-read .options-readfirst-valuetext {\n white-space: pre-wrap;\n overflow: visible;\n text-overflow: clip;\n overflow-wrap: anywhere;\n }\n .readfirst-row-editing:hover {\n background: ", ";\n }\n\n /* Narrow FORMS (phone / slim drawer): stack each row \u2014 label + actions share\n the first line, the value cell (or the inline editor) takes the full width\n beneath. The class is set from a measured wrap width (react-use useMeasure)\n rather than a viewport media query, so a slim desktop drawer stacks too.\n The 3 row children are placed explicitly:\n label (1,1) \u00B7 actions (1,2) \u00B7 value (2, span both). */\n /* Generous breathing room BETWEEN fields when stacked \u2014 far easier to scan and\n less overwhelming on a phone. */\n &.readfirst-narrow {\n --readfirst-row-gap: 18px;\n }\n &.readfirst-narrow .readfirst-row {\n grid-template-columns: minmax(0, 1fr) auto;\n gap: 2px 14px;\n position: relative;\n }\n &.readfirst-narrow .readfirst-row > :nth-child(1) {\n grid-column: 1;\n grid-row: 1;\n }\n &.readfirst-narrow .readfirst-row > :nth-child(3) {\n grid-column: 2;\n grid-row: 1;\n }\n &.readfirst-narrow .readfirst-row > :nth-child(2) {\n grid-column: 1 / -1;\n grid-row: 2;\n }\n /* Read (non-editing) rows: float the trailing actions (status dot + the\n hover-revealed delete/revert) out of the grid flow so a delete button can't\n inflate the first row and push the value down. They're pinned to a band the\n height of the LABEL line and vertically centred in it \u2014 so the dot always\n sits at the same place (centred on the field name), never the bare corner. */\n &.readfirst-narrow .readfirst-row:not(.readfirst-row-editing) > :nth-child(3) {\n position: absolute;\n top: 2px;\n right: 10px;\n height: 22px;\n }\n &.readfirst-narrow .readfirst-row:not(.readfirst-row-editing) > :nth-child(1) {\n padding-right: 46px;\n }\n\n /* Focus calm rows: NO recessed value surface and NO intent stripe. Row status\n is carried by the trailing status dot; message/preview panels keep their own\n intent backgrounds. The (now invisible) pseudo is retained only to preserve\n the block's positioning/stacking context that the required-group rail and its\n cluster nodes resolve against \u2014 removing it would unmoor them. */\n > *:not(.options-readfirst-card) {\n position: relative;\n }\n > *:not(.options-readfirst-card)::before {\n content: '';\n position: absolute;\n inset: 0;\n left: ", ";\n background: transparent;\n pointer-events: none;\n z-index: 0;\n }\n /* Content rides above the surface layer \u2014 except the cluster node, which is\n absolutely positioned in the gutter and must keep its own positioning. */\n > *:not(.options-readfirst-card) > *:not(.options-readfirst-node) {\n position: relative;\n z-index: 1;\n }\n\n /* (The required-group connection rail was removed \u2014 the \"One of the below is\n required\" box now carries the grouping.) */\n\n /* Tall rows top-anchor (overriding the row's centred default) so the label and\n dot stay on the value's FIRST line rather than floating to the vertical\n middle: .readfirst-row-info-open = a shown short_desc grows the LABEL;\n .readfirst-row-tall = message panels / a hash preview grow the VALUE cell. */\n .readfirst-row-info-open,\n .readfirst-row-tall {\n align-items: start;\n }\n /* Narrow stacks label-over-value: the value aligns flush UNDER the label (no\n indent), like the Focus prototype. */\n &.readfirst-narrow .readfirst-row > :nth-child(2) {\n padding-left: 0;\n }\n &.readfirst-narrow > *:not(.options-readfirst-card)::before {\n left: 0;\n }\n /* Touch layouts have no hover: a slot reserved for the hover-revealed edit\n pencil is permanent dead space that insets every chip from the edge \u2014\n drop it (rows are tap-to-edit; the lock/add slots stay, they're static). */\n &.readfirst-narrow .options-readfirst-trailing-hover-only {\n /* !important: the slot carries an inline display for the desktop layout. */\n display: none !important;\n }\n /* Stacked rows: keep them tight (match the Focus prototype). The min-height is\n dropped so a 2-line label+value row sizes to its content instead of being\n padded out to 38px. The in-place editor keeps zero padding (below). */\n &.readfirst-narrow .readfirst-row {\n padding-top: 2px;\n padding-bottom: 2px;\n min-height: 0;\n }\n &.readfirst-narrow .readfirst-row-editing {\n padding-top: 0;\n padding-bottom: 0;\n }\n\n /* CALM appearance \u2014 a section of label/value rows split by hairlines.\n\n Every entry the body holds (a row, the column an open row sits in, a\n group heading, the one-of cluster, the \"N more fields\" control) is drawn\n edge to edge with ONE full-width hairline above it, the same colour as the\n section's own edge. The first entry's line is the one under the section\n header (a minimal header draws none of its own). Two things take no line,\n because a heading and the rows it heads read as one block: the entry right\n under a group heading (or its subtitle), and the first row under the\n cluster's sentence.\n\n Rows lose their rounded hover pill and the inset hairline between them, and\n take the section's 16px inset. Placed last so it wins over the narrow\n rules above, which a phone-width calm form also matches. */\n ", "\n"])), exports.LABEL_COL, exports.COMPACT_ROW_PAD_X, exports.COMPACT_ROW_PAD_X, function (_a) {
304
+ exports.StyledGroupBody = styled_components_1.default.div(templateObject_29 || (templateObject_29 = __makeTemplateObject(["\n display: flex;\n flex-flow: column;\n position: relative;\n /* Exposed as a var so the inter-field divider can center itself in the gap\n (the gap differs wide vs narrow). */\n --readfirst-row-gap: 4px;\n gap: var(--readfirst-row-gap);\n\n /* Indent each field block under the group header by a FLUID step. The %\n resolves against this container's width (not the screen), so it tracks the\n (Field blocks no longer get a left gutter \u2014 the spine/rail that needed it are\n gone, so rows sit flush against the box, like the Focus prototype.) */\n > * {\n margin-left: 0;\n }\n\n /* No group spine: the \"Focus\" look keeps the rows flat against the box. (The\n required-group rail is a separate descendant ::after and still renders.) */\n\n .readfirst-row {\n display: grid;\n /* Fixed label column: the recessed value surface (::before below) starts at a\n constant x, so the label width can't flex or the stripe would drift off the\n value edge. The value column is minmax(0, 1fr) \u2014 a bare 1fr keeps its\n min-content width, so a long unbroken value (e.g. a URL) would force the\n grid wider than its container and produce a horizontal scrollbar. The 0\n minimum lets it shrink and the value cell's ellipsis take over instead. */\n grid-template-columns: ", " minmax(0, 1fr) auto;\n /* CENTRE the cells vertically: on the common single-line read row the label,\n value and status dot all sit on one centered line. Tall rows (a shown\n description, message panels or a hash preview) opt back into top-alignment\n (.readfirst-row-info-open / .readfirst-row-tall below) so the label + dot\n stay on the value's FIRST line instead of floating to the middle. */\n align-items: center;\n gap: 14px;\n /* Generous, SYMMETRIC vertical padding so a single-line row isn't cramped\n (content sits with even breathing room top + bottom); a min-height floor\n keeps the rare shorter row a comfortable tap target. */\n min-height: 40px;\n padding: 9px 10px;\n border-radius: 6px;\n cursor: pointer;\n transition: background 0.12s ease;\n }\n /* A dim hairline in the gap below each field so its start/end reads clearly.\n Absolutely positioned (not a border) so it stays straight + full-width and\n the row's rounded hover highlight is unaffected; sits in the inter-row gap. */\n .readfirst-row::after {\n content: '';\n position: absolute;\n /* Inset to the row's horizontal padding so the line spans the content, not\n the full box edge-to-edge. */\n left: ", "px;\n right: ", "px;\n /* Centered in the inter-field gap (which differs wide vs narrow) so the space\n above and below each line is equal. */\n bottom: calc(var(--readfirst-row-gap, 4px) / -2);\n height: 1px;\n background: ", ";\n opacity: 0.5;\n pointer-events: none;\n z-index: 0;\n }\n .readfirst-row:last-child::after {\n display: none;\n }\n /* A row lights up under a pointer that hovers. A finger's tap leaves the browser's :hover on what it tapped\n until the next tap elsewhere, so on a touch screen the row stayed lit after the tap as if it were chosen\n (FormEngine \u00B7 A Row Stacks On A Phone, a tap on its link). The keyboard's focus lights it on any device. */\n @media (hover: hover) {\n .readfirst-row:hover {\n background: ", ";\n }\n }\n .readfirst-row:focus-visible {\n outline: 2px solid ", ";\n outline-offset: -2px;\n background: ", ";\n }\n /* A hidden (not-yet-added) field surfaced by the search is dimmed. */\n .readfirst-row-hidden {\n opacity: 0.65;\n }\n /* The \"N more fields\" control IS a field row \u2014 same grid, same padding, same\n hover \u2014 so it lines up with the rows above instead of floating as a scrap\n of text in the box's corner. A dashed edge and a lower-contrast label are\n what say it is not itself a field: nothing here can be set.\n\n It spans both content columns because it has no label/value split, and it\n drops the inter-row hairline (the ::after rule) since it always sits last. */\n .readfirst-more-row {\n grid-template-columns: 1fr auto;\n border: 1px dashed ", ";\n background: transparent;\n width: 100%;\n text-align: left;\n font: inherit;\n color: inherit;\n /* The dashed edge replaces the hairline; two lines would read as a divider\n AND a border stacked. */\n margin-top: 2px;\n }\n .readfirst-more-row::after {\n display: none;\n }\n @media (hover: hover) {\n .readfirst-more-row:hover {\n background: ", ";\n border-style: solid;\n }\n }\n .readfirst-more-row:focus-visible {\n outline: 2px solid ", ";\n outline-offset: -2px;\n }\n /* The chevron points the way the click goes: down to reveal, up to fold. */\n .readfirst-more-row .readfirst-more-chevron {\n transition: transform 0.15s ease;\n }\n .readfirst-more-row[aria-expanded='true'] .readfirst-more-chevron {\n transform: rotate(180deg);\n }\n /* A disabled field (schema disabled flag or unmet dependencies) is not a\n click target \u2014 no hover invite, not-allowed cursor; a lock replaces the\n pencil. */\n /* A disabled field reads dimmed (its name + value at 0.6) \u2014 clearly inactive. */\n .readfirst-row-disabled {\n cursor: not-allowed;\n opacity: 0.6;\n }\n .readfirst-row-disabled:hover {\n background: transparent;\n }\n /* Required-group linkage: hovering a member highlights every sibling row \u2014\n just a background tint, no left stripe (that reads as an intent edge). */\n .readfirst-row-group-highlight {\n background: ", ";\n }\n .readfirst-row-flash {\n animation: readfirstRowFlash 1.4s ease;\n }\n @keyframes readfirstRowFlash {\n 0% {\n background: ", ";\n }\n 100% {\n background: transparent;\n }\n }\n /* A scalar row being edited in place: the real editor replaces the value\n cell. The row stops being a click target (the editor owns the clicks) and\n keeps a constant active background. Vertical padding is tightened so the\n editor fits inside the same ~38px the read row occupies \u2014 switching into\n (and out of) inline editing must not shift the rows around it. */\n .readfirst-row-editing {\n cursor: default;\n /* Top-anchor the cells: with multi-line editors (e.g. allowed-values =\n input + picker), per-cell centering gives every control a different\n anchor. Instead everything aligns to the FIRST editor line \u2014 label and\n the \u2713/\u21BA cluster get small offsets to sit optically centered on it. */\n align-items: start;\n background: ", ";\n /* No top padding (the per-cell nudges below anchor the editor to the first\n line), but a real BOTTOM padding so the editor never sits flush against\n the row's bottom edge \u2014 a tall input used to look clipped/unfinished. */\n padding-top: 0;\n padding-bottom: 9px;\n /* Tighter column gap: the editor's trailing template \u22EE and our \u2713 should\n read as one control cluster, not two separated groups. */\n column-gap: 6px;\n }\n /* Center each cell's content on the row's ~38px first-line band. The label\n text (+10) and the \u2713/\u21BA cluster (+3) were already nudged, but the editor\n cell was not \u2014 so a single-line input sat ~3px above the buttons. A 32px\n control needs +3 to center in 38px, so the editor gets the same offset and\n lines up with the buttons. (A multi-line editor's first line lands on the\n band too; its extra rows grow downward.) */\n .readfirst-row-editing > div:nth-child(1) {\n padding-top: 10px;\n }\n .readfirst-row-editing > div:nth-child(2) {\n padding-top: 3px;\n }\n .readfirst-row-editing > div:nth-child(3) {\n padding-top: 3px;\n }\n /* A read-only row is not a control. No pointer and no hover tint, because a\n click does nothing; and its value wraps in full \u2014 the row is the only\n rendering the value gets, so a line cut with an ellipsis would be the\n reader's whole answer. */\n .readfirst-row-read {\n cursor: default;\n }\n .readfirst-row-read:hover {\n background: transparent;\n }\n .readfirst-row-read .options-readfirst-valuetext {\n white-space: pre-wrap;\n overflow: visible;\n text-overflow: clip;\n overflow-wrap: anywhere;\n }\n @media (hover: hover) {\n .readfirst-row-editing:hover {\n background: ", ";\n }\n }\n\n /* Narrow FORMS (phone / slim drawer): stack each row \u2014 label + actions share\n the first line, the value cell (or the inline editor) takes the width\n beneath. The class is set where the value column would be narrower than\n COMPACT_MIN_VALUE_WIDTH beside the measured label column (isCompactNarrow),\n from the measured wrap width (react-use useMeasure) rather than a viewport\n media query, so a slim desktop drawer stacks too.\n The 3 row children are placed explicitly:\n label (1,1) \u00B7 actions (1,2) \u00B7 value (2, span both). */\n /* Generous breathing room BETWEEN fields when stacked \u2014 far easier to scan and\n less overwhelming on a phone. */\n &.readfirst-narrow {\n --readfirst-row-gap: 18px;\n }\n &.readfirst-narrow .readfirst-row {\n grid-template-columns: minmax(0, 1fr) auto;\n gap: 2px 14px;\n position: relative;\n }\n &.readfirst-narrow .readfirst-row > :nth-child(1) {\n grid-column: 1;\n grid-row: 1;\n }\n &.readfirst-narrow .readfirst-row > :nth-child(3) {\n grid-column: 2;\n grid-row: 1;\n }\n &.readfirst-narrow .readfirst-row > :nth-child(2) {\n grid-column: 1 / -1;\n grid-row: 2;\n }\n /* Read (non-editing) rows: float the trailing actions (status dot + the\n hover-revealed delete/revert) out of the grid flow so a delete button can't\n inflate the first row and push the value down. They're pinned to a band the\n height of the LABEL line and vertically centered in it \u2014 so the dot always\n sits at the same place (centered on the field name), never the bare corner. */\n &.readfirst-narrow .readfirst-row:not(.readfirst-row-editing) > :nth-child(3) {\n position: absolute;\n top: 2px;\n right: 10px;\n height: 22px;\n }\n &.readfirst-narrow .readfirst-row:not(.readfirst-row-editing) > :nth-child(1) {\n padding-right: 46px;\n }\n\n /* Focus calm rows: NO recessed value surface and NO intent stripe. Row status\n is carried by the trailing status dot; message/preview panels keep their own\n intent backgrounds. The (now invisible) pseudo is retained only to preserve\n the block's positioning/stacking context that the required-group rail and its\n cluster nodes resolve against \u2014 removing it would unmoor them. */\n > *:not(.options-readfirst-card) {\n position: relative;\n }\n > *:not(.options-readfirst-card)::before {\n content: '';\n position: absolute;\n inset: 0;\n left: ", ";\n background: transparent;\n pointer-events: none;\n z-index: 0;\n }\n /* Content rides above the surface layer \u2014 except the cluster node, which is\n absolutely positioned in the gutter and must keep its own positioning. */\n > *:not(.options-readfirst-card) > *:not(.options-readfirst-node) {\n position: relative;\n z-index: 1;\n }\n\n /* (The required-group connection rail was removed \u2014 the \"One of the below is\n required\" box now carries the grouping.) */\n\n /* Tall rows top-anchor (overriding the row's centered default) so the label and\n dot stay on the value's FIRST line rather than floating to the vertical\n middle: .readfirst-row-info-open = a shown short_desc grows the LABEL;\n .readfirst-row-tall = message panels / a hash preview grow the VALUE cell. */\n .readfirst-row-info-open,\n .readfirst-row-tall {\n align-items: start;\n }\n /* Narrow stacks label-over-value: the value sits on the line below the label,\n slightly indented under it (David, qorus#646), so it reads as the label's. */\n &.readfirst-narrow .readfirst-row > :nth-child(2) {\n padding-left: ", "px;\n }\n &.readfirst-narrow > *:not(.options-readfirst-card)::before {\n left: 0;\n }\n /* Touch layouts have no hover: a slot reserved for the hover-revealed edit\n pencil is permanent dead space that insets every chip from the edge \u2014\n drop it (rows are tap-to-edit; the lock/add slots stay, they're static). */\n &.readfirst-narrow .options-readfirst-trailing-hover-only {\n /* !important: the slot carries an inline display for the desktop layout. */\n display: none !important;\n }\n /* Stacked rows: keep them tight (match the Focus prototype). The min-height is\n dropped so a 2-line label+value row sizes to its content instead of being\n padded out to 38px. The in-place editor keeps zero padding (below). */\n &.readfirst-narrow .readfirst-row {\n padding-top: 2px;\n padding-bottom: 2px;\n min-height: 0;\n }\n &.readfirst-narrow .readfirst-row-editing {\n padding-top: 0;\n padding-bottom: 0;\n }\n"], ["\n display: flex;\n flex-flow: column;\n position: relative;\n /* Exposed as a var so the inter-field divider can center itself in the gap\n (the gap differs wide vs narrow). */\n --readfirst-row-gap: 4px;\n gap: var(--readfirst-row-gap);\n\n /* Indent each field block under the group header by a FLUID step. The %\n resolves against this container's width (not the screen), so it tracks the\n (Field blocks no longer get a left gutter \u2014 the spine/rail that needed it are\n gone, so rows sit flush against the box, like the Focus prototype.) */\n > * {\n margin-left: 0;\n }\n\n /* No group spine: the \"Focus\" look keeps the rows flat against the box. (The\n required-group rail is a separate descendant ::after and still renders.) */\n\n .readfirst-row {\n display: grid;\n /* Fixed label column: the recessed value surface (::before below) starts at a\n constant x, so the label width can't flex or the stripe would drift off the\n value edge. The value column is minmax(0, 1fr) \u2014 a bare 1fr keeps its\n min-content width, so a long unbroken value (e.g. a URL) would force the\n grid wider than its container and produce a horizontal scrollbar. The 0\n minimum lets it shrink and the value cell's ellipsis take over instead. */\n grid-template-columns: ", " minmax(0, 1fr) auto;\n /* CENTRE the cells vertically: on the common single-line read row the label,\n value and status dot all sit on one centered line. Tall rows (a shown\n description, message panels or a hash preview) opt back into top-alignment\n (.readfirst-row-info-open / .readfirst-row-tall below) so the label + dot\n stay on the value's FIRST line instead of floating to the middle. */\n align-items: center;\n gap: 14px;\n /* Generous, SYMMETRIC vertical padding so a single-line row isn't cramped\n (content sits with even breathing room top + bottom); a min-height floor\n keeps the rare shorter row a comfortable tap target. */\n min-height: 40px;\n padding: 9px 10px;\n border-radius: 6px;\n cursor: pointer;\n transition: background 0.12s ease;\n }\n /* A dim hairline in the gap below each field so its start/end reads clearly.\n Absolutely positioned (not a border) so it stays straight + full-width and\n the row's rounded hover highlight is unaffected; sits in the inter-row gap. */\n .readfirst-row::after {\n content: '';\n position: absolute;\n /* Inset to the row's horizontal padding so the line spans the content, not\n the full box edge-to-edge. */\n left: ", "px;\n right: ", "px;\n /* Centered in the inter-field gap (which differs wide vs narrow) so the space\n above and below each line is equal. */\n bottom: calc(var(--readfirst-row-gap, 4px) / -2);\n height: 1px;\n background: ", ";\n opacity: 0.5;\n pointer-events: none;\n z-index: 0;\n }\n .readfirst-row:last-child::after {\n display: none;\n }\n /* A row lights up under a pointer that hovers. A finger's tap leaves the browser's :hover on what it tapped\n until the next tap elsewhere, so on a touch screen the row stayed lit after the tap as if it were chosen\n (FormEngine \u00B7 A Row Stacks On A Phone, a tap on its link). The keyboard's focus lights it on any device. */\n @media (hover: hover) {\n .readfirst-row:hover {\n background: ", ";\n }\n }\n .readfirst-row:focus-visible {\n outline: 2px solid ", ";\n outline-offset: -2px;\n background: ", ";\n }\n /* A hidden (not-yet-added) field surfaced by the search is dimmed. */\n .readfirst-row-hidden {\n opacity: 0.65;\n }\n /* The \"N more fields\" control IS a field row \u2014 same grid, same padding, same\n hover \u2014 so it lines up with the rows above instead of floating as a scrap\n of text in the box's corner. A dashed edge and a lower-contrast label are\n what say it is not itself a field: nothing here can be set.\n\n It spans both content columns because it has no label/value split, and it\n drops the inter-row hairline (the ::after rule) since it always sits last. */\n .readfirst-more-row {\n grid-template-columns: 1fr auto;\n border: 1px dashed ", ";\n background: transparent;\n width: 100%;\n text-align: left;\n font: inherit;\n color: inherit;\n /* The dashed edge replaces the hairline; two lines would read as a divider\n AND a border stacked. */\n margin-top: 2px;\n }\n .readfirst-more-row::after {\n display: none;\n }\n @media (hover: hover) {\n .readfirst-more-row:hover {\n background: ", ";\n border-style: solid;\n }\n }\n .readfirst-more-row:focus-visible {\n outline: 2px solid ", ";\n outline-offset: -2px;\n }\n /* The chevron points the way the click goes: down to reveal, up to fold. */\n .readfirst-more-row .readfirst-more-chevron {\n transition: transform 0.15s ease;\n }\n .readfirst-more-row[aria-expanded='true'] .readfirst-more-chevron {\n transform: rotate(180deg);\n }\n /* A disabled field (schema disabled flag or unmet dependencies) is not a\n click target \u2014 no hover invite, not-allowed cursor; a lock replaces the\n pencil. */\n /* A disabled field reads dimmed (its name + value at 0.6) \u2014 clearly inactive. */\n .readfirst-row-disabled {\n cursor: not-allowed;\n opacity: 0.6;\n }\n .readfirst-row-disabled:hover {\n background: transparent;\n }\n /* Required-group linkage: hovering a member highlights every sibling row \u2014\n just a background tint, no left stripe (that reads as an intent edge). */\n .readfirst-row-group-highlight {\n background: ", ";\n }\n .readfirst-row-flash {\n animation: readfirstRowFlash 1.4s ease;\n }\n @keyframes readfirstRowFlash {\n 0% {\n background: ", ";\n }\n 100% {\n background: transparent;\n }\n }\n /* A scalar row being edited in place: the real editor replaces the value\n cell. The row stops being a click target (the editor owns the clicks) and\n keeps a constant active background. Vertical padding is tightened so the\n editor fits inside the same ~38px the read row occupies \u2014 switching into\n (and out of) inline editing must not shift the rows around it. */\n .readfirst-row-editing {\n cursor: default;\n /* Top-anchor the cells: with multi-line editors (e.g. allowed-values =\n input + picker), per-cell centering gives every control a different\n anchor. Instead everything aligns to the FIRST editor line \u2014 label and\n the \u2713/\u21BA cluster get small offsets to sit optically centered on it. */\n align-items: start;\n background: ", ";\n /* No top padding (the per-cell nudges below anchor the editor to the first\n line), but a real BOTTOM padding so the editor never sits flush against\n the row's bottom edge \u2014 a tall input used to look clipped/unfinished. */\n padding-top: 0;\n padding-bottom: 9px;\n /* Tighter column gap: the editor's trailing template \u22EE and our \u2713 should\n read as one control cluster, not two separated groups. */\n column-gap: 6px;\n }\n /* Center each cell's content on the row's ~38px first-line band. The label\n text (+10) and the \u2713/\u21BA cluster (+3) were already nudged, but the editor\n cell was not \u2014 so a single-line input sat ~3px above the buttons. A 32px\n control needs +3 to center in 38px, so the editor gets the same offset and\n lines up with the buttons. (A multi-line editor's first line lands on the\n band too; its extra rows grow downward.) */\n .readfirst-row-editing > div:nth-child(1) {\n padding-top: 10px;\n }\n .readfirst-row-editing > div:nth-child(2) {\n padding-top: 3px;\n }\n .readfirst-row-editing > div:nth-child(3) {\n padding-top: 3px;\n }\n /* A read-only row is not a control. No pointer and no hover tint, because a\n click does nothing; and its value wraps in full \u2014 the row is the only\n rendering the value gets, so a line cut with an ellipsis would be the\n reader's whole answer. */\n .readfirst-row-read {\n cursor: default;\n }\n .readfirst-row-read:hover {\n background: transparent;\n }\n .readfirst-row-read .options-readfirst-valuetext {\n white-space: pre-wrap;\n overflow: visible;\n text-overflow: clip;\n overflow-wrap: anywhere;\n }\n @media (hover: hover) {\n .readfirst-row-editing:hover {\n background: ", ";\n }\n }\n\n /* Narrow FORMS (phone / slim drawer): stack each row \u2014 label + actions share\n the first line, the value cell (or the inline editor) takes the width\n beneath. The class is set where the value column would be narrower than\n COMPACT_MIN_VALUE_WIDTH beside the measured label column (isCompactNarrow),\n from the measured wrap width (react-use useMeasure) rather than a viewport\n media query, so a slim desktop drawer stacks too.\n The 3 row children are placed explicitly:\n label (1,1) \u00B7 actions (1,2) \u00B7 value (2, span both). */\n /* Generous breathing room BETWEEN fields when stacked \u2014 far easier to scan and\n less overwhelming on a phone. */\n &.readfirst-narrow {\n --readfirst-row-gap: 18px;\n }\n &.readfirst-narrow .readfirst-row {\n grid-template-columns: minmax(0, 1fr) auto;\n gap: 2px 14px;\n position: relative;\n }\n &.readfirst-narrow .readfirst-row > :nth-child(1) {\n grid-column: 1;\n grid-row: 1;\n }\n &.readfirst-narrow .readfirst-row > :nth-child(3) {\n grid-column: 2;\n grid-row: 1;\n }\n &.readfirst-narrow .readfirst-row > :nth-child(2) {\n grid-column: 1 / -1;\n grid-row: 2;\n }\n /* Read (non-editing) rows: float the trailing actions (status dot + the\n hover-revealed delete/revert) out of the grid flow so a delete button can't\n inflate the first row and push the value down. They're pinned to a band the\n height of the LABEL line and vertically centered in it \u2014 so the dot always\n sits at the same place (centered on the field name), never the bare corner. */\n &.readfirst-narrow .readfirst-row:not(.readfirst-row-editing) > :nth-child(3) {\n position: absolute;\n top: 2px;\n right: 10px;\n height: 22px;\n }\n &.readfirst-narrow .readfirst-row:not(.readfirst-row-editing) > :nth-child(1) {\n padding-right: 46px;\n }\n\n /* Focus calm rows: NO recessed value surface and NO intent stripe. Row status\n is carried by the trailing status dot; message/preview panels keep their own\n intent backgrounds. The (now invisible) pseudo is retained only to preserve\n the block's positioning/stacking context that the required-group rail and its\n cluster nodes resolve against \u2014 removing it would unmoor them. */\n > *:not(.options-readfirst-card) {\n position: relative;\n }\n > *:not(.options-readfirst-card)::before {\n content: '';\n position: absolute;\n inset: 0;\n left: ", ";\n background: transparent;\n pointer-events: none;\n z-index: 0;\n }\n /* Content rides above the surface layer \u2014 except the cluster node, which is\n absolutely positioned in the gutter and must keep its own positioning. */\n > *:not(.options-readfirst-card) > *:not(.options-readfirst-node) {\n position: relative;\n z-index: 1;\n }\n\n /* (The required-group connection rail was removed \u2014 the \"One of the below is\n required\" box now carries the grouping.) */\n\n /* Tall rows top-anchor (overriding the row's centered default) so the label and\n dot stay on the value's FIRST line rather than floating to the vertical\n middle: .readfirst-row-info-open = a shown short_desc grows the LABEL;\n .readfirst-row-tall = message panels / a hash preview grow the VALUE cell. */\n .readfirst-row-info-open,\n .readfirst-row-tall {\n align-items: start;\n }\n /* Narrow stacks label-over-value: the value sits on the line below the label,\n slightly indented under it (David, qorus#646), so it reads as the label's. */\n &.readfirst-narrow .readfirst-row > :nth-child(2) {\n padding-left: ", "px;\n }\n &.readfirst-narrow > *:not(.options-readfirst-card)::before {\n left: 0;\n }\n /* Touch layouts have no hover: a slot reserved for the hover-revealed edit\n pencil is permanent dead space that insets every chip from the edge \u2014\n drop it (rows are tap-to-edit; the lock/add slots stay, they're static). */\n &.readfirst-narrow .options-readfirst-trailing-hover-only {\n /* !important: the slot carries an inline display for the desktop layout. */\n display: none !important;\n }\n /* Stacked rows: keep them tight (match the Focus prototype). The min-height is\n dropped so a 2-line label+value row sizes to its content instead of being\n padded out to 38px. The in-place editor keeps zero padding (below). */\n &.readfirst-narrow .readfirst-row {\n padding-top: 2px;\n padding-bottom: 2px;\n min-height: 0;\n }\n &.readfirst-narrow .readfirst-row-editing {\n padding-top: 0;\n padding-bottom: 0;\n }\n"])), exports.LABEL_COL, exports.COMPACT_ROW_PAD_X, exports.COMPACT_ROW_PAD_X, function (_a) {
291
305
  var $divider = _a.$divider;
292
306
  return $divider;
293
307
  }, function (_a) {
@@ -320,10 +334,7 @@ exports.StyledGroupBody = styled_components_1.default.div(templateObject_36 || (
320
334
  }, function (_a) {
321
335
  var $hover = _a.$hover;
322
336
  return $hover;
323
- }, exports.PANEL_LEFT_CSS, function (_a) {
324
- var $calm = _a.$calm, $hairline = _a.$hairline;
325
- return $calm ? (0, styled_components_1.css)(templateObject_35 || (templateObject_35 = __makeTemplateObject(["\n && {\n --readfirst-row-gap: 0px;\n gap: 0;\n }\n && > *,\n && > .options-readfirst-required-cluster > * {\n border-top: 1px solid ", ";\n }\n && > .options-readfirst-group-label + *,\n && > .options-readfirst-group-subtitle + *,\n && .options-readfirst-required-cluster-header,\n && .options-readfirst-required-cluster-header + * {\n border-top: 0;\n }\n && .readfirst-row {\n min-height: 44px;\n padding: 10px ", "px;\n border-radius: 0;\n }\n && .readfirst-row::after {\n display: none;\n }\n /* The open row keeps the read row's band: 3px above the editor's 32px\n control centres it where the read row centred its text. */\n && .readfirst-row-editing {\n padding-top: 3px;\n padding-bottom: 10px;\n }\n /* The section's rounded bottom corners, which a full-bleed hover or an\n open row's tint would otherwise square off. */\n && > :last-child,\n && > :last-child > :last-child {\n border-bottom-left-radius: 9px;\n border-bottom-right-radius: 9px;\n }\n /* \"N more fields\" is a quiet last row: the hairline above it says where\n the section's fields end; a dashed box around it said it again. */\n && .readfirst-more-row {\n border: 0;\n border-top: 1px solid ", ";\n margin-top: 0;\n }\n &&.readfirst-narrow {\n --readfirst-row-gap: 0px;\n }\n &&.readfirst-narrow .readfirst-row {\n padding: 10px ", "px;\n min-height: 0;\n }\n &&.readfirst-narrow .readfirst-row-editing {\n padding-top: 3px;\n padding-bottom: 10px;\n }\n &&.readfirst-narrow .readfirst-row:not(.readfirst-row-editing) > :nth-child(3) {\n top: 10px;\n right: ", "px;\n }\n /* READ mode is one list with no section around it \u2014 usually inside a\n card the host already drew \u2014 so it adds no panel and no inset of its\n own: the rows sit flush with the host's content edge, split by the\n same hairlines, with no line above the first. */\n &&.readfirst-read-list > :first-child {\n border-top: 0;\n }\n &&.readfirst-read-list .readfirst-row,\n &&.readfirst-read-list .options-readfirst-group-label,\n &&.readfirst-read-list .options-readfirst-group-subtitle {\n padding-left: 0;\n padding-right: 0;\n margin-left: 0;\n }\n &&.readfirst-read-list.readfirst-narrow\n .readfirst-row:not(.readfirst-row-editing)\n > :nth-child(3) {\n right: 0;\n }\n "], ["\n && {\n --readfirst-row-gap: 0px;\n gap: 0;\n }\n && > *,\n && > .options-readfirst-required-cluster > * {\n border-top: 1px solid ", ";\n }\n && > .options-readfirst-group-label + *,\n && > .options-readfirst-group-subtitle + *,\n && .options-readfirst-required-cluster-header,\n && .options-readfirst-required-cluster-header + * {\n border-top: 0;\n }\n && .readfirst-row {\n min-height: 44px;\n padding: 10px ", "px;\n border-radius: 0;\n }\n && .readfirst-row::after {\n display: none;\n }\n /* The open row keeps the read row's band: 3px above the editor's 32px\n control centres it where the read row centred its text. */\n && .readfirst-row-editing {\n padding-top: 3px;\n padding-bottom: 10px;\n }\n /* The section's rounded bottom corners, which a full-bleed hover or an\n open row's tint would otherwise square off. */\n && > :last-child,\n && > :last-child > :last-child {\n border-bottom-left-radius: 9px;\n border-bottom-right-radius: 9px;\n }\n /* \"N more fields\" is a quiet last row: the hairline above it says where\n the section's fields end; a dashed box around it said it again. */\n && .readfirst-more-row {\n border: 0;\n border-top: 1px solid ", ";\n margin-top: 0;\n }\n &&.readfirst-narrow {\n --readfirst-row-gap: 0px;\n }\n &&.readfirst-narrow .readfirst-row {\n padding: 10px ", "px;\n min-height: 0;\n }\n &&.readfirst-narrow .readfirst-row-editing {\n padding-top: 3px;\n padding-bottom: 10px;\n }\n &&.readfirst-narrow .readfirst-row:not(.readfirst-row-editing) > :nth-child(3) {\n top: 10px;\n right: ", "px;\n }\n /* READ mode is one list with no section around it \u2014 usually inside a\n card the host already drew \u2014 so it adds no panel and no inset of its\n own: the rows sit flush with the host's content edge, split by the\n same hairlines, with no line above the first. */\n &&.readfirst-read-list > :first-child {\n border-top: 0;\n }\n &&.readfirst-read-list .readfirst-row,\n &&.readfirst-read-list .options-readfirst-group-label,\n &&.readfirst-read-list .options-readfirst-group-subtitle {\n padding-left: 0;\n padding-right: 0;\n margin-left: 0;\n }\n &&.readfirst-read-list.readfirst-narrow\n .readfirst-row:not(.readfirst-row-editing)\n > :nth-child(3) {\n right: 0;\n }\n "])), $hairline, exports.CALM_SECTION_INSET, $hairline, exports.CALM_SECTION_INSET, exports.CALM_SECTION_INSET) : '';
326
- });
337
+ }, exports.PANEL_LEFT_CSS, exports.COMPACT_STACKED_VALUE_INDENT);
327
338
  // One absorbed sibling, rendered inside its host row's container rather than
328
339
  // on a row of its own (see `absorb_fields`). The pair this exists for is a code
329
340
  // editor and its language: reading them as two unrelated rows one above the
@@ -333,10 +344,10 @@ exports.StyledGroupBody = styled_components_1.default.div(templateObject_36 || (
333
344
  // element it now sits in, and separated from the editor below it by a hairline
334
345
  // rather than a gap — the two share one container, so the seam has to look like
335
346
  // a division inside it and not like two stacked things.
336
- exports.StyledAbsorbedField = styled_components_1.default.div(templateObject_37 || (templateObject_37 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n padding-bottom: 8px;\n margin-bottom: 8px;\n border-bottom: 1px solid ", ";\n"], ["\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n padding-bottom: 8px;\n margin-bottom: 8px;\n border-bottom: 1px solid ", ";\n"])), function (_a) {
347
+ exports.StyledAbsorbedField = styled_components_1.default.div(templateObject_30 || (templateObject_30 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n padding-bottom: 8px;\n margin-bottom: 8px;\n border-bottom: 1px solid ", ";\n"], ["\n display: flex;\n align-items: center;\n gap: 10px;\n min-width: 0;\n padding-bottom: 8px;\n margin-bottom: 8px;\n border-bottom: 1px solid ", ";\n"])), function (_a) {
337
348
  var theme = _a.theme;
338
349
  return "".concat(theme.main, "22");
339
350
  });
340
- exports.StyledAbsorbedLabel = (0, styled_components_1.default)(reqore_1.ReqoreP)(templateObject_38 || (templateObject_38 = __makeTemplateObject(["\n flex: 0 0 auto;\n margin: 0;\n"], ["\n flex: 0 0 auto;\n margin: 0;\n"])));
341
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15, templateObject_16, templateObject_17, templateObject_18, templateObject_19, templateObject_20, templateObject_21, templateObject_22, templateObject_23, templateObject_24, templateObject_25, templateObject_26, templateObject_27, templateObject_28, templateObject_29, templateObject_30, templateObject_31, templateObject_32, templateObject_33, templateObject_34, templateObject_35, templateObject_36, templateObject_37, templateObject_38;
351
+ exports.StyledAbsorbedLabel = (0, styled_components_1.default)(reqore_1.ReqoreP)(templateObject_31 || (templateObject_31 = __makeTemplateObject(["\n flex: 0 0 auto;\n margin: 0;\n"], ["\n flex: 0 0 auto;\n margin: 0;\n"])));
352
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15, templateObject_16, templateObject_17, templateObject_18, templateObject_19, templateObject_20, templateObject_21, templateObject_22, templateObject_23, templateObject_24, templateObject_25, templateObject_26, templateObject_27, templateObject_28, templateObject_29, templateObject_30, templateObject_31;
342
353
  //# sourceMappingURL=compactRowStyles.js.map