@qoretechnologies/reqraft 0.10.64 → 0.10.65-pr.137.g62fcecc
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -1
- package/dist/components/Description/describedControl.d.ts +54 -0
- package/dist/components/Description/describedControl.d.ts.map +1 -0
- package/dist/components/Description/describedControl.js +81 -0
- package/dist/components/Description/describedControl.js.map +1 -0
- package/dist/components/Description/index.d.ts.map +1 -1
- package/dist/components/Description/index.js +3 -2
- package/dist/components/Description/index.js.map +1 -1
- package/dist/components/colorValue/colorValue.d.ts +59 -0
- package/dist/components/colorValue/colorValue.d.ts.map +1 -0
- package/dist/components/colorValue/colorValue.js +245 -0
- package/dist/components/colorValue/colorValue.js.map +1 -0
- package/dist/components/colorValue/index.d.ts +34 -0
- package/dist/components/colorValue/index.d.ts.map +1 -0
- package/dist/components/colorValue/index.js +136 -0
- package/dist/components/colorValue/index.js.map +1 -0
- package/dist/components/colorValue/labels.d.ts +12 -0
- package/dist/components/colorValue/labels.d.ts.map +1 -0
- package/dist/components/colorValue/labels.js +11 -0
- package/dist/components/colorValue/labels.js.map +1 -0
- package/dist/components/composer/Composer.d.ts +1 -1
- package/dist/components/composer/Composer.d.ts.map +1 -1
- package/dist/components/composer/Composer.js +2 -2
- package/dist/components/composer/Composer.js.map +1 -1
- package/dist/components/dpqlEditor/DpqlEditor.d.ts.map +1 -1
- package/dist/components/dpqlEditor/DpqlEditor.js +25 -5
- package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -1
- package/dist/components/dpqlEditor/dpqlHelpers.d.ts +36 -5
- package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -1
- package/dist/components/dpqlEditor/dpqlHelpers.js +340 -62
- package/dist/components/dpqlEditor/dpqlHelpers.js.map +1 -1
- package/dist/components/dpqlEditor/dpqlTags.d.ts +11 -7
- package/dist/components/dpqlEditor/dpqlTags.d.ts.map +1 -1
- package/dist/components/dpqlEditor/dpqlTags.js +35 -17
- package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
- package/dist/components/dpqlEditor/types.d.ts +54 -8
- package/dist/components/dpqlEditor/types.d.ts.map +1 -1
- package/dist/components/dpqlEditor/useDpqlSession.d.ts +2 -2
- package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -1
- package/dist/components/dpqlEditor/useDpqlSession.js +16 -7
- package/dist/components/dpqlEditor/useDpqlSession.js.map +1 -1
- package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
- package/dist/components/form/engine/CompactRow.js +207 -97
- package/dist/components/form/engine/CompactRow.js.map +1 -1
- package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -1
- package/dist/components/form/engine/CompactToolbar.js +29 -3
- package/dist/components/form/engine/CompactToolbar.js.map +1 -1
- package/dist/components/form/engine/FormEngine.d.ts +58 -10
- package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
- package/dist/components/form/engine/FormEngine.js +542 -112
- package/dist/components/form/engine/FormEngine.js.map +1 -1
- package/dist/components/form/engine/HiddenFieldsNote.d.ts +28 -0
- package/dist/components/form/engine/HiddenFieldsNote.d.ts.map +1 -0
- package/dist/components/form/engine/HiddenFieldsNote.js +32 -0
- package/dist/components/form/engine/HiddenFieldsNote.js.map +1 -0
- package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
- package/dist/components/form/engine/OptionFieldMessages.js +24 -3
- package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
- package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts +2 -2
- package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts.map +1 -1
- package/dist/components/form/engine/_structuredData/SchemaDataView.js +12 -6
- package/dist/components/form/engine/_structuredData/SchemaDataView.js.map +1 -1
- package/dist/components/form/engine/compactRowContext.d.ts +21 -0
- package/dist/components/form/engine/compactRowContext.d.ts.map +1 -1
- package/dist/components/form/engine/compactRowContext.js.map +1 -1
- package/dist/components/form/engine/compactRowStyles.d.ts +20 -10
- package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
- package/dist/components/form/engine/compactRowStyles.js +36 -30
- package/dist/components/form/engine/compactRowStyles.js.map +1 -1
- package/dist/components/form/engine/compactToolbarColors.d.ts +16 -0
- package/dist/components/form/engine/compactToolbarColors.d.ts.map +1 -0
- package/dist/components/form/engine/compactToolbarColors.js +21 -0
- package/dist/components/form/engine/compactToolbarColors.js.map +1 -0
- package/dist/components/form/engine/readFirst.d.ts +24 -8
- package/dist/components/form/engine/readFirst.d.ts.map +1 -1
- package/dist/components/form/engine/readFirst.js +77 -109
- package/dist/components/form/engine/readFirst.js.map +1 -1
- package/dist/components/form/engine/readFirstColors.d.ts +30 -0
- package/dist/components/form/engine/readFirstColors.d.ts.map +1 -0
- package/dist/components/form/engine/readFirstColors.js +51 -0
- package/dist/components/form/engine/readFirstColors.js.map +1 -0
- package/dist/components/form/engine/rowFocus.d.ts +2 -0
- package/dist/components/form/engine/rowFocus.d.ts.map +1 -1
- package/dist/components/form/engine/rowFocus.js +26 -3
- package/dist/components/form/engine/rowFocus.js.map +1 -1
- package/dist/components/form/engine/typeChoices.d.ts +1 -1
- package/dist/components/form/engine/variants/VariantCalmTable.d.ts.map +1 -1
- package/dist/components/form/engine/variants/VariantCalmTable.js +2 -1
- package/dist/components/form/engine/variants/VariantCalmTable.js.map +1 -1
- package/dist/components/form/engine/variants/VariantCards.d.ts.map +1 -1
- package/dist/components/form/engine/variants/VariantCards.js +2 -1
- package/dist/components/form/engine/variants/VariantCards.js.map +1 -1
- package/dist/components/form/engine/variants/VariantFocus.js +1 -1
- package/dist/components/form/engine/variants/VariantFocus.js.map +1 -1
- package/dist/components/form/engine/variants/VariantMinimal.d.ts.map +1 -1
- package/dist/components/form/engine/variants/VariantMinimal.js +2 -1
- package/dist/components/form/engine/variants/VariantMinimal.js.map +1 -1
- package/dist/components/form/engine/variants/variantParts.d.ts +1 -1
- package/dist/components/form/engine/variants/variantParts.d.ts.map +1 -1
- package/dist/components/form/engine/variants/variantParts.js +25 -17
- package/dist/components/form/engine/variants/variantParts.js.map +1 -1
- package/dist/components/form/expressions/DpqlRendering.d.ts +1 -1
- package/dist/components/form/expressions/DpqlRendering.d.ts.map +1 -1
- package/dist/components/form/expressions/DpqlRendering.js +3 -3
- package/dist/components/form/expressions/DpqlRendering.js.map +1 -1
- package/dist/components/form/expressions/ExpressionField.d.ts +64 -3
- package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
- package/dist/components/form/expressions/ExpressionField.js +459 -100
- package/dist/components/form/expressions/ExpressionField.js.map +1 -1
- package/dist/components/form/expressions/argumentPresence.d.ts +14 -0
- package/dist/components/form/expressions/argumentPresence.d.ts.map +1 -1
- package/dist/components/form/expressions/argumentPresence.js +16 -1
- package/dist/components/form/expressions/argumentPresence.js.map +1 -1
- package/dist/components/form/expressions/builder/argumentDetail.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/argumentDetail.js +4 -1
- package/dist/components/form/expressions/builder/argumentDetail.js.map +1 -1
- package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/argumentLabel.js +27 -9
- package/dist/components/form/expressions/builder/argumentLabel.js.map +1 -1
- package/dist/components/form/expressions/builder/argumentWrapper.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/argumentWrapper.js +3 -1
- package/dist/components/form/expressions/builder/argumentWrapper.js.map +1 -1
- package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js +5 -4
- package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js.map +1 -1
- package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts +1 -1
- package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js +6 -3
- package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js.map +1 -1
- package/dist/components/form/expressions/builder/index.d.ts +24 -2
- package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/index.js +138 -78
- package/dist/components/form/expressions/builder/index.js.map +1 -1
- package/dist/components/form/expressions/builder/item.d.ts +6 -2
- package/dist/components/form/expressions/builder/item.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/item.js +19 -5
- package/dist/components/form/expressions/builder/item.js.map +1 -1
- package/dist/components/form/expressions/builder/renderTemplate.js +1 -1
- package/dist/components/form/expressions/builder/renderTemplate.js.map +1 -1
- package/dist/components/form/expressions/dpqlMockRecordPath.d.ts +11 -0
- package/dist/components/form/expressions/dpqlMockRecordPath.d.ts.map +1 -0
- package/dist/components/form/expressions/dpqlMockRecordPath.js +254 -0
- package/dist/components/form/expressions/dpqlMockRecordPath.js.map +1 -0
- package/dist/components/form/expressions/expressionOperands.d.ts +16 -0
- package/dist/components/form/expressions/expressionOperands.d.ts.map +1 -0
- package/dist/components/form/expressions/expressionOperands.js +97 -0
- package/dist/components/form/expressions/expressionOperands.js.map +1 -0
- package/dist/components/form/expressions/fieldPath.d.ts +24 -0
- package/dist/components/form/expressions/fieldPath.d.ts.map +1 -0
- package/dist/components/form/expressions/fieldPath.js +152 -0
- package/dist/components/form/expressions/fieldPath.js.map +1 -0
- package/dist/components/form/expressions/mockExpressions.d.ts.map +1 -1
- package/dist/components/form/expressions/mockExpressions.js +22 -5
- package/dist/components/form/expressions/mockExpressions.js.map +1 -1
- package/dist/components/form/expressions/renderExpressionToText.d.ts +2 -0
- package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -1
- package/dist/components/form/expressions/renderExpressionToText.js +40 -9
- package/dist/components/form/expressions/renderExpressionToText.js.map +1 -1
- package/dist/components/form/expressions/textOfExpression.d.ts +18 -0
- package/dist/components/form/expressions/textOfExpression.d.ts.map +1 -0
- package/dist/components/form/expressions/textOfExpression.js +49 -0
- package/dist/components/form/expressions/textOfExpression.js.map +1 -0
- package/dist/components/form/expressions/types.d.ts +7 -0
- package/dist/components/form/expressions/types.d.ts.map +1 -1
- package/dist/components/form/expressions/types.js +6 -1
- package/dist/components/form/expressions/types.js.map +1 -1
- package/dist/components/form/expressions/useExpressionType.d.ts +26 -0
- package/dist/components/form/expressions/useExpressionType.d.ts.map +1 -0
- package/dist/components/form/expressions/useExpressionType.js +181 -0
- package/dist/components/form/expressions/useExpressionType.js.map +1 -0
- package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -1
- package/dist/components/form/expressions/useRenderExpression.js +13 -9
- package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
- package/dist/components/form/expressions/wildcardExpressions.d.ts +27 -0
- package/dist/components/form/expressions/wildcardExpressions.d.ts.map +1 -0
- package/dist/components/form/expressions/wildcardExpressions.js +101 -0
- package/dist/components/form/expressions/wildcardExpressions.js.map +1 -0
- package/dist/components/form/fields/Field.d.ts.map +1 -1
- package/dist/components/form/fields/Field.js +26 -9
- package/dist/components/form/fields/Field.js.map +1 -1
- package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
- package/dist/components/form/fields/allowed-values/AllowedValues.js +17 -4
- package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
- package/dist/components/form/fields/array/ArrayAuto.d.ts.map +1 -1
- package/dist/components/form/fields/array/ArrayAuto.js +24 -0
- package/dist/components/form/fields/array/ArrayAuto.js.map +1 -1
- package/dist/components/form/fields/array/ArrayAutoField.d.ts.map +1 -1
- package/dist/components/form/fields/array/ArrayAutoField.js +36 -13
- package/dist/components/form/fields/array/ArrayAutoField.js.map +1 -1
- package/dist/components/form/fields/auto/AutoFormField.d.ts +20 -1
- package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
- package/dist/components/form/fields/auto/AutoFormField.js +81 -36
- package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
- package/dist/components/form/fields/auto/hostEditorValue.d.ts +30 -0
- package/dist/components/form/fields/auto/hostEditorValue.d.ts.map +1 -0
- package/dist/components/form/fields/auto/hostEditorValue.js +53 -0
- package/dist/components/form/fields/auto/hostEditorValue.js.map +1 -0
- package/dist/components/form/fields/binary/Binary.d.ts.map +1 -1
- package/dist/components/form/fields/binary/Binary.js +23 -3
- package/dist/components/form/fields/binary/Binary.js.map +1 -1
- package/dist/components/form/fields/boolean/Boolean.d.ts +5 -0
- package/dist/components/form/fields/boolean/Boolean.d.ts.map +1 -1
- package/dist/components/form/fields/boolean/Boolean.js +9 -1
- package/dist/components/form/fields/boolean/Boolean.js.map +1 -1
- package/dist/components/form/fields/color/Color.d.ts +103 -16
- package/dist/components/form/fields/color/Color.d.ts.map +1 -1
- package/dist/components/form/fields/color/Color.js +616 -16
- package/dist/components/form/fields/color/Color.js.map +1 -1
- package/dist/components/form/fields/emittedValues.d.ts +34 -3
- package/dist/components/form/fields/emittedValues.d.ts.map +1 -1
- package/dist/components/form/fields/emittedValues.js +24 -1
- package/dist/components/form/fields/emittedValues.js.map +1 -1
- package/dist/components/form/fields/file/File.d.ts +1 -1
- package/dist/components/form/fields/file/File.d.ts.map +1 -1
- package/dist/components/form/fields/file/File.js +4 -2
- package/dist/components/form/fields/file/File.js.map +1 -1
- package/dist/components/form/fields/long-string/LongString.d.ts.map +1 -1
- package/dist/components/form/fields/long-string/LongString.js +17 -3
- package/dist/components/form/fields/long-string/LongString.js.map +1 -1
- package/dist/components/form/fields/markdown/MarkdownView.js +1 -1
- package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
- package/dist/components/form/fields/multi-select/MultiSelectFormField.js +4 -1
- package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
- package/dist/components/form/fields/number/Number.d.ts +6 -0
- package/dist/components/form/fields/number/Number.d.ts.map +1 -1
- package/dist/components/form/fields/number/Number.js +41 -6
- package/dist/components/form/fields/number/Number.js.map +1 -1
- package/dist/components/form/fields/object/Object.d.ts +1 -1
- package/dist/components/form/fields/object/Object.d.ts.map +1 -1
- package/dist/components/form/fields/object/Object.js +4 -2
- package/dist/components/form/fields/object/Object.js.map +1 -1
- package/dist/components/form/fields/pendingEdit.d.ts +52 -0
- package/dist/components/form/fields/pendingEdit.d.ts.map +1 -0
- package/dist/components/form/fields/pendingEdit.js +79 -0
- package/dist/components/form/fields/pendingEdit.js.map +1 -0
- package/dist/components/form/fields/rich-text/RichText.d.ts +8 -1
- package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
- package/dist/components/form/fields/rich-text/RichText.js +188 -82
- package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
- package/dist/components/form/fields/rich-text/useTemplateTags.d.ts +18 -0
- package/dist/components/form/fields/rich-text/useTemplateTags.d.ts.map +1 -0
- package/dist/components/form/fields/rich-text/useTemplateTags.js +49 -0
- package/dist/components/form/fields/rich-text/useTemplateTags.js.map +1 -0
- package/dist/components/form/fields/schema-definition/CatalogLeafForm.d.ts.map +1 -1
- package/dist/components/form/fields/schema-definition/CatalogLeafForm.js +4 -1
- package/dist/components/form/fields/schema-definition/CatalogLeafForm.js.map +1 -1
- package/dist/components/form/fields/schema-definition/CatalogNodeEditor.d.ts.map +1 -1
- package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js +20 -5
- package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js.map +1 -1
- package/dist/components/form/fields/schema-definition/TableEditor.d.ts.map +1 -1
- package/dist/components/form/fields/schema-definition/TableEditor.js +10 -2
- package/dist/components/form/fields/schema-definition/TableEditor.js.map +1 -1
- package/dist/components/form/fields/schema-definition/index.d.ts.map +1 -1
- package/dist/components/form/fields/schema-definition/index.js +8 -4
- package/dist/components/form/fields/schema-definition/index.js.map +1 -1
- package/dist/components/form/fields/select/Select.d.ts +2 -0
- package/dist/components/form/fields/select/Select.d.ts.map +1 -1
- package/dist/components/form/fields/select/Select.js +19 -10
- package/dist/components/form/fields/select/Select.js.map +1 -1
- package/dist/components/form/fields/select/SelectCollection.d.ts.map +1 -1
- package/dist/components/form/fields/select/SelectCollection.js +8 -2
- package/dist/components/form/fields/select/SelectCollection.js.map +1 -1
- package/dist/components/form/fields/select/unavailableRow.d.ts +23 -0
- package/dist/components/form/fields/select/unavailableRow.d.ts.map +1 -0
- package/dist/components/form/fields/select/unavailableRow.js +55 -0
- package/dist/components/form/fields/select/unavailableRow.js.map +1 -0
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts +11 -5
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +13 -5
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
- package/dist/components/form/fields/template/TemplateBrowser.d.ts +22 -0
- package/dist/components/form/fields/template/TemplateBrowser.d.ts.map +1 -0
- package/dist/components/form/fields/template/TemplateBrowser.js +54 -0
- package/dist/components/form/fields/template/TemplateBrowser.js.map +1 -0
- package/dist/components/form/fields/template/TemplateField.d.ts +102 -1
- package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
- package/dist/components/form/fields/template/TemplateField.js +572 -85
- package/dist/components/form/fields/template/TemplateField.js.map +1 -1
- package/dist/components/form/fields/template/TemplateText.d.ts +0 -17
- package/dist/components/form/fields/template/TemplateText.d.ts.map +1 -1
- package/dist/components/form/fields/template/TemplateText.js +9 -11
- package/dist/components/form/fields/template/TemplateText.js.map +1 -1
- package/dist/components/form/fields/template/writtenAsText.d.ts +61 -0
- package/dist/components/form/fields/template/writtenAsText.d.ts.map +1 -0
- package/dist/components/form/fields/template/writtenAsText.js +204 -0
- package/dist/components/form/fields/template/writtenAsText.js.map +1 -0
- package/dist/components/form/index.d.ts +10 -0
- package/dist/components/form/index.d.ts.map +1 -1
- package/dist/components/form/index.js +23 -1
- package/dist/components/form/index.js.map +1 -1
- package/dist/components/imageLightbox/ImageLightbox.d.ts.map +1 -1
- package/dist/components/imageLightbox/ImageLightbox.js +19 -7
- package/dist/components/imageLightbox/ImageLightbox.js.map +1 -1
- package/dist/components/log/Log.d.ts.map +1 -1
- package/dist/components/log/Log.js +16 -8
- package/dist/components/log/Log.js.map +1 -1
- package/dist/components/menu/Menu.d.ts.map +1 -1
- package/dist/components/menu/Menu.js +19 -10
- package/dist/components/menu/Menu.js.map +1 -1
- package/dist/components/smartEditor/CompletionMenu.d.ts +43 -0
- package/dist/components/smartEditor/CompletionMenu.d.ts.map +1 -0
- package/dist/components/smartEditor/CompletionMenu.js +196 -0
- package/dist/components/smartEditor/CompletionMenu.js.map +1 -0
- package/dist/components/smartEditor/MarkdownDoc.d.ts +1 -1
- package/dist/components/smartEditor/MarkdownDoc.js +3 -3
- package/dist/components/smartEditor/MarkdownDoc.js.map +1 -1
- package/dist/components/smartEditor/SmartEditor.d.ts.map +1 -1
- package/dist/components/smartEditor/SmartEditor.js +164 -180
- package/dist/components/smartEditor/SmartEditor.js.map +1 -1
- package/dist/components/smartEditor/completionStyle.d.ts +27 -0
- package/dist/components/smartEditor/completionStyle.d.ts.map +1 -0
- package/dist/components/smartEditor/completionStyle.js +68 -0
- package/dist/components/smartEditor/completionStyle.js.map +1 -0
- package/dist/components/smartEditor/index.d.ts +5 -1
- package/dist/components/smartEditor/index.d.ts.map +1 -1
- package/dist/components/smartEditor/index.js +19 -1
- package/dist/components/smartEditor/index.js.map +1 -1
- package/dist/components/smartEditor/templateCompletions.d.ts +18 -0
- package/dist/components/smartEditor/templateCompletions.d.ts.map +1 -0
- package/dist/components/smartEditor/templateCompletions.js +94 -0
- package/dist/components/smartEditor/templateCompletions.js.map +1 -0
- package/dist/components/smartEditor/typedReferences.d.ts +21 -0
- package/dist/components/smartEditor/typedReferences.d.ts.map +1 -0
- package/dist/components/smartEditor/typedReferences.js +82 -0
- package/dist/components/smartEditor/typedReferences.js.map +1 -0
- package/dist/components/smartEditor/types.d.ts +33 -1
- package/dist/components/smartEditor/types.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspAutocomplete.d.ts +32 -0
- package/dist/components/smartEditor/useLspAutocomplete.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspAutocomplete.js +228 -118
- package/dist/components/smartEditor/useLspAutocomplete.js.map +1 -1
- package/dist/components/smartEditor/useLspHover.d.ts +33 -7
- package/dist/components/smartEditor/useLspHover.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspHover.js +279 -35
- package/dist/components/smartEditor/useLspHover.js.map +1 -1
- package/dist/components/smartEditor/useLspSemanticTokens.js +1 -1
- package/dist/components/smartEditor/useLspSemanticTokens.js.map +1 -1
- package/dist/components/smartEditor/useLspSession.d.ts +6 -0
- package/dist/components/smartEditor/useLspSession.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspSession.js +7 -6
- package/dist/components/smartEditor/useLspSession.js.map +1 -1
- package/dist/components/supportTicket/AttachmentChips.d.ts.map +1 -1
- package/dist/components/supportTicket/AttachmentChips.js +15 -5
- package/dist/components/supportTicket/AttachmentChips.js.map +1 -1
- package/dist/components/supportTicket/ReferencePicker.d.ts +9 -2
- package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -1
- package/dist/components/supportTicket/ReferencePicker.js +27 -6
- package/dist/components/supportTicket/ReferencePicker.js.map +1 -1
- package/dist/components/supportTicket/TicketHeader.d.ts +3 -4
- package/dist/components/supportTicket/TicketHeader.d.ts.map +1 -1
- package/dist/components/supportTicket/TicketHeader.js +20 -2
- package/dist/components/supportTicket/TicketHeader.js.map +1 -1
- package/dist/components/supportTicket/TicketMetaTags.d.ts +1 -1
- package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -1
- package/dist/components/ticketReferences/TicketReferences.js +9 -4
- package/dist/components/ticketReferences/TicketReferences.js.map +1 -1
- package/dist/components/ticketThread/TicketThread.d.ts.map +1 -1
- package/dist/components/ticketThread/TicketThread.js +38 -13
- package/dist/components/ticketThread/TicketThread.js.map +1 -1
- package/dist/helpers/descriptionTooltip.d.ts +43 -0
- package/dist/helpers/descriptionTooltip.d.ts.map +1 -0
- package/dist/helpers/descriptionTooltip.js +70 -0
- package/dist/helpers/descriptionTooltip.js.map +1 -0
- package/dist/helpers/domProps.d.ts +5 -0
- package/dist/helpers/domProps.d.ts.map +1 -0
- package/dist/helpers/domProps.js +47 -0
- package/dist/helpers/domProps.js.map +1 -0
- package/dist/helpers/expressions.d.ts +107 -2
- package/dist/helpers/expressions.d.ts.map +1 -1
- package/dist/helpers/expressions.js +223 -8
- package/dist/helpers/expressions.js.map +1 -1
- package/dist/helpers/hoveringPointer.d.ts +26 -0
- package/dist/helpers/hoveringPointer.d.ts.map +1 -0
- package/dist/helpers/hoveringPointer.js +29 -0
- package/dist/helpers/hoveringPointer.js.map +1 -0
- package/dist/helpers/markdownText.d.ts +14 -0
- package/dist/helpers/markdownText.d.ts.map +1 -0
- package/dist/helpers/markdownText.js +160 -0
- package/dist/helpers/markdownText.js.map +1 -0
- package/dist/helpers/qorusTypeCatalogue.d.ts +53 -0
- package/dist/helpers/qorusTypeCatalogue.d.ts.map +1 -0
- package/dist/helpers/qorusTypeCatalogue.js +262 -0
- package/dist/helpers/qorusTypeCatalogue.js.map +1 -0
- package/dist/helpers/readableColors.d.ts +36 -0
- package/dist/helpers/readableColors.d.ts.map +1 -0
- package/dist/helpers/readableColors.js +116 -0
- package/dist/helpers/readableColors.js.map +1 -0
- package/dist/helpers/recordFieldReference.d.ts +15 -0
- package/dist/helpers/recordFieldReference.d.ts.map +1 -0
- package/dist/helpers/recordFieldReference.js +89 -0
- package/dist/helpers/recordFieldReference.js.map +1 -0
- package/dist/helpers/templateItems.d.ts +2 -2
- package/dist/helpers/templateItems.d.ts.map +1 -1
- package/dist/helpers/templateItems.js +6 -4
- package/dist/helpers/templateItems.js.map +1 -1
- package/dist/helpers/templateText.js +5 -2
- package/dist/helpers/templateText.js.map +1 -1
- package/dist/helpers/templates.d.ts +41 -14
- package/dist/helpers/templates.d.ts.map +1 -1
- package/dist/helpers/templates.js +152 -9
- package/dist/helpers/templates.js.map +1 -1
- package/dist/helpers/validations.d.ts +9 -0
- package/dist/helpers/validations.d.ts.map +1 -1
- package/dist/helpers/validations.js +139 -33
- package/dist/helpers/validations.js.map +1 -1
- package/dist/hooks/useQorusTypes.d.ts +7 -15
- package/dist/hooks/useQorusTypes.d.ts.map +1 -1
- package/dist/hooks/useQorusTypes.js +25 -166
- package/dist/hooks/useQorusTypes.js.map +1 -1
- package/dist/hooks/useReadableIntentShade.d.ts +9 -0
- package/dist/hooks/useReadableIntentShade.d.ts.map +1 -0
- package/dist/hooks/useReadableIntentShade.js +23 -0
- package/dist/hooks/useReadableIntentShade.js.map +1 -0
- package/dist/hooks/useReadableOpacity.d.ts +6 -0
- package/dist/hooks/useReadableOpacity.d.ts.map +1 -0
- package/dist/hooks/useReadableOpacity.js +17 -0
- package/dist/hooks/useReadableOpacity.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/tracking/ui/ExperimentCard.d.ts +1 -1
- package/dist/tracking/ui/ExperimentCard.d.ts.map +1 -1
- package/dist/tracking/ui/ExperimentCard.js +26 -10
- package/dist/tracking/ui/ExperimentCard.js.map +1 -1
- package/dist/tracking/ui/card.d.ts +2 -2
- package/dist/tracking/ui/card.d.ts.map +1 -1
- package/dist/tracking/ui/card.js +2 -2
- package/dist/tracking/ui/card.js.map +1 -1
- package/dist/tracking/ui/readable.d.ts +14 -0
- package/dist/tracking/ui/readable.d.ts.map +1 -0
- package/dist/tracking/ui/readable.js +60 -0
- package/dist/tracking/ui/readable.js.map +1 -0
- package/dist/utils/fetch.d.ts +9 -2
- package/dist/utils/fetch.d.ts.map +1 -1
- package/dist/utils/fetch.js +6 -5
- package/dist/utils/fetch.js.map +1 -1
- package/dist/utils/websocket.d.ts +65 -2
- package/dist/utils/websocket.d.ts.map +1 -1
- package/dist/utils/websocket.js +276 -44
- package/dist/utils/websocket.js.map +1 -1
- package/package.json +14 -5
- package/.claude/CLAUDE.md +0 -317
- package/.tasks/EXPORT_EXPRESSION_BUILDER.md +0 -38
- package/.tasks/EXPRESSION_BUILDER_REPORT.md +0 -149
- package/.tasks/EXPRESSION_FIELD_SEAMS.md +0 -66
- package/.tasks/FIELD_STACK_REPORT.md +0 -234
- package/.tasks/FORM_ENGINE_COMPACT_READ_FIRST.md +0 -558
- package/.tasks/FORM_ENGINE_EXPRESSIONS.md +0 -197
- package/.tasks/FORM_ENGINE_OPTIONS_SYNC.md +0 -95
- package/.tasks/FORM_FIELD_EXTRAS.md +0 -72
- package/.tasks/INDEX.md +0 -111
- package/.tasks/LSP_SHARED_CONNECTION.md +0 -75
- package/.tasks/QONSOLE_ASSIST_FEATURES.md +0 -306
- package/.tasks/RENDER_EXPRESSION_LSP.md +0 -159
- package/.tasks/REQRAFT_AUTO_FIELD.md +0 -176
- package/.tasks/SCHEMA_DEFINITION_FIELD.md +0 -250
- package/.tasks/SMART_EDITOR_CONTEXT_AND_POLISH.md +0 -340
- package/.tasks/SMART_EDITOR_LSP_FEATURES.md +0 -299
- package/.tasks/SMART_EDITOR_REVIEW_FOLLOWUPS.md +0 -280
- package/.tasks/SMART_EDITOR_UX_POLISH.md +0 -383
- package/.tasks/SMART_EDITOR_VISUAL_POLISH.md +0 -246
- package/.tasks/STORY_NETWORK_ISOLATION.md +0 -98
- package/.tasks/TEMPLATE_TOKEN_GRAMMAR.md +0 -72
- package/CODE_OF_CONDUCT.md +0 -105
- package/CONTRIBUTING.MD +0 -78
- package/SECURITY.md +0 -3
- package/chromatic.config.json +0 -5
- package/design/COMPACT_ENGINE_REDESIGN.md +0 -156
- package/design/COMPACT_INFO_DISPLAY.md +0 -87
- package/design/COMPACT_PARITY.md +0 -85
- package/design/EXPRESSION_BUILDER_REPORT_STRATEGY.md +0 -92
- package/design/FORM_ENGINE_COMPACT.md +0 -300
- package/design/FORM_ENGINE_COMPACT_UX_PLAN.md +0 -353
- package/design/FORM_ENGINE_EXPRESSIONS.md +0 -257
- package/design/FORM_ENGINE_FIELD_MIGRATION.md +0 -419
- package/design/IDE_INTEGRATION.md +0 -64
- package/design/RENDER_EXPRESSION_TRANSPORT.md +0 -156
- package/design/SELECT_DIALOG_FLOOR.md +0 -86
- package/design/SMART_EDITOR_UX.md +0 -438
- package/design/TRACKING.md +0 -290
- package/design/UNAVAILABLE_ALLOWED_VALUES.md +0 -226
- package/src/components/Description/index.tsx +0 -254
- package/src/components/Description/markdownRendererContext.tsx +0 -29
- package/src/components/FocusedEditing/index.tsx +0 -50
- package/src/components/codeSize/index.tsx +0 -79
- package/src/components/composer/Composer.stories.tsx +0 -238
- package/src/components/composer/Composer.tsx +0 -554
- package/src/components/composer/helpers.ts +0 -74
- package/src/components/composer/index.ts +0 -2
- package/src/components/dpqlEditor/DpqlEditor.stories.tsx +0 -1183
- package/src/components/dpqlEditor/DpqlEditor.tsx +0 -219
- package/src/components/dpqlEditor/dpqlHelpers.ts +0 -287
- package/src/components/dpqlEditor/dpqlInserter.ts +0 -121
- package/src/components/dpqlEditor/dpqlProbe.ts +0 -165
- package/src/components/dpqlEditor/dpqlTags.ts +0 -114
- package/src/components/dpqlEditor/index.ts +0 -41
- package/src/components/dpqlEditor/types.ts +0 -203
- package/src/components/dpqlEditor/useDpqlProbe.ts +0 -33
- package/src/components/dpqlEditor/useDpqlSession.ts +0 -411
- package/src/components/form/engine/CompactRow.tsx +0 -2620
- package/src/components/form/engine/CompactToolbar.tsx +0 -330
- package/src/components/form/engine/FormEngine.stories.tsx +0 -9920
- package/src/components/form/engine/FormEngine.tsx +0 -4569
- package/src/components/form/engine/FormEngineRemote.stories.tsx +0 -679
- package/src/components/form/engine/FormEngineStickyHeaders.stories.tsx +0 -331
- package/src/components/form/engine/FormFieldsSkeleton.tsx +0 -82
- package/src/components/form/engine/OptionFieldMessages.tsx +0 -477
- package/src/components/form/engine/OptionsHelpDialog.tsx +0 -29
- package/src/components/form/engine/__fixtures__/basicFormOptions.ts +0 -309
- package/src/components/form/engine/__fixtures__/fieldChromeOptions.ts +0 -45
- package/src/components/form/engine/_structuredData/SchemaDataView.stories.tsx +0 -233
- package/src/components/form/engine/_structuredData/SchemaDataView.tsx +0 -742
- package/src/components/form/engine/_structuredData/StructuredDataView.stories.tsx +0 -85
- package/src/components/form/engine/_structuredData/StructuredDataView.tsx +0 -75
- package/src/components/form/engine/_structuredData/structuredData.ts +0 -145
- package/src/components/form/engine/compactRowContext.ts +0 -148
- package/src/components/form/engine/compactRowStyles.ts +0 -898
- package/src/components/form/engine/compactToolbarContext.ts +0 -69
- package/src/components/form/engine/optionActions.ts +0 -128
- package/src/components/form/engine/optionsContext.ts +0 -24
- package/src/components/form/engine/readFirst.ts +0 -1077
- package/src/components/form/engine/rendererTypes.ts +0 -107
- package/src/components/form/engine/revealRow.ts +0 -123
- package/src/components/form/engine/rowFocus.ts +0 -101
- package/src/components/form/engine/rowMenuContext.ts +0 -159
- package/src/components/form/engine/rowOpenPicker.ts +0 -27
- package/src/components/form/engine/typeChoices.ts +0 -63
- package/src/components/form/engine/variants/FormEngineVariants.stories.tsx +0 -159
- package/src/components/form/engine/variants/VariantCalmTable.tsx +0 -244
- package/src/components/form/engine/variants/VariantCards.tsx +0 -212
- package/src/components/form/engine/variants/VariantFocus.tsx +0 -382
- package/src/components/form/engine/variants/VariantMinimal.tsx +0 -170
- package/src/components/form/engine/variants/focusDemo.ts +0 -145
- package/src/components/form/engine/variants/variantModel.ts +0 -223
- package/src/components/form/engine/variants/variantParts.tsx +0 -313
- package/src/components/form/expressions/DpqlRendering.tsx +0 -85
- package/src/components/form/expressions/ExpressionField.stories.tsx +0 -1395
- package/src/components/form/expressions/ExpressionField.tsx +0 -503
- package/src/components/form/expressions/argumentPresence.ts +0 -213
- package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +0 -1683
- package/src/components/form/expressions/builder/argumentDetail.tsx +0 -17
- package/src/components/form/expressions/builder/argumentLabel.tsx +0 -146
- package/src/components/form/expressions/builder/argumentSlot.tsx +0 -101
- package/src/components/form/expressions/builder/argumentWrapper.tsx +0 -243
- package/src/components/form/expressions/builder/confirmMismatchedTypesModal.tsx +0 -120
- package/src/components/form/expressions/builder/confirmUnsupportedTypeModal.tsx +0 -69
- package/src/components/form/expressions/builder/index.tsx +0 -1545
- package/src/components/form/expressions/builder/item.tsx +0 -89
- package/src/components/form/expressions/builder/moveToPositionStrip.tsx +0 -156
- package/src/components/form/expressions/builder/renderTemplate.tsx +0 -42
- package/src/components/form/expressions/dpqlMockLanguage.ts +0 -566
- package/src/components/form/expressions/dpqlMockLsp.ts +0 -126
- package/src/components/form/expressions/mockExpressions.ts +0 -317
- package/src/components/form/expressions/renderExpressionToText.ts +0 -137
- package/src/components/form/expressions/types.ts +0 -110
- package/src/components/form/expressions/useExpressions.ts +0 -101
- package/src/components/form/expressions/useRenderExpression.ts +0 -165
- package/src/components/form/fields/Field.stories.tsx +0 -143
- package/src/components/form/fields/Field.tsx +0 -732
- package/src/components/form/fields/allowed-values/AllowedValues.tsx +0 -297
- package/src/components/form/fields/array/ArrayAuto.tsx +0 -237
- package/src/components/form/fields/array/ArrayAutoField.stories.tsx +0 -475
- package/src/components/form/fields/array/ArrayAutoField.tsx +0 -367
- package/src/components/form/fields/auto/AutoFormField.stories.tsx +0 -825
- package/src/components/form/fields/auto/AutoFormField.tsx +0 -1164
- package/src/components/form/fields/binary/Binary.stories.tsx +0 -122
- package/src/components/form/fields/binary/Binary.tsx +0 -91
- package/src/components/form/fields/boolean/Boolean.stories.tsx +0 -125
- package/src/components/form/fields/boolean/Boolean.tsx +0 -34
- package/src/components/form/fields/byte-size/ByteSize.stories.tsx +0 -87
- package/src/components/form/fields/byte-size/ByteSize.tsx +0 -58
- package/src/components/form/fields/color/Color.stories.tsx +0 -99
- package/src/components/form/fields/color/Color.tsx +0 -46
- package/src/components/form/fields/cron/Cron.stories.tsx +0 -68
- package/src/components/form/fields/cron/Cron.tsx +0 -80
- package/src/components/form/fields/date/Date.stories.tsx +0 -77
- package/src/components/form/fields/date/Date.tsx +0 -55
- package/src/components/form/fields/emittedValues.ts +0 -70
- package/src/components/form/fields/file/File.stories.tsx +0 -161
- package/src/components/form/fields/file/File.tsx +0 -227
- package/src/components/form/fields/long-string/LongString.stories.tsx +0 -120
- package/src/components/form/fields/long-string/LongString.tsx +0 -130
- package/src/components/form/fields/markdown/Markdown.stories.tsx +0 -76
- package/src/components/form/fields/markdown/Markdown.tsx +0 -81
- package/src/components/form/fields/markdown/MarkdownView.tsx +0 -222
- package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +0 -139
- package/src/components/form/fields/number/Number.stories.tsx +0 -159
- package/src/components/form/fields/number/Number.tsx +0 -160
- package/src/components/form/fields/object/Object.stories.tsx +0 -398
- package/src/components/form/fields/object/Object.tsx +0 -255
- package/src/components/form/fields/radio-group/RadioGroup.stories.tsx +0 -95
- package/src/components/form/fields/radio-group/RadioGroup.tsx +0 -46
- package/src/components/form/fields/radio-group/images/java-96x128.png +0 -0
- package/src/components/form/fields/radio-group/images/python-129x128.png +0 -0
- package/src/components/form/fields/radio-group/images/qore-106x128.png +0 -0
- package/src/components/form/fields/rich-text/RichText.stories.tsx +0 -260
- package/src/components/form/fields/rich-text/RichText.tsx +0 -537
- package/src/components/form/fields/schema-definition/CatalogLeafForm.tsx +0 -242
- package/src/components/form/fields/schema-definition/CatalogNodeEditor.tsx +0 -758
- package/src/components/form/fields/schema-definition/Hint.tsx +0 -22
- package/src/components/form/fields/schema-definition/InlineValidationBanner.tsx +0 -138
- package/src/components/form/fields/schema-definition/Loader.tsx +0 -20
- package/src/components/form/fields/schema-definition/MigrationsTab.tsx +0 -187
- package/src/components/form/fields/schema-definition/SchemaDefinitionField.stories.tsx +0 -286
- package/src/components/form/fields/schema-definition/TableEditor.tsx +0 -155
- package/src/components/form/fields/schema-definition/TablesTab.tsx +0 -138
- package/src/components/form/fields/schema-definition/catalog.ts +0 -237
- package/src/components/form/fields/schema-definition/helpers.ts +0 -90
- package/src/components/form/fields/schema-definition/index.tsx +0 -418
- package/src/components/form/fields/schema-definition/mockCatalog.ts +0 -325
- package/src/components/form/fields/schema-definition/mockDefinition.ts +0 -111
- package/src/components/form/fields/schema-definition/referenceSuggestions.tsx +0 -152
- package/src/components/form/fields/schema-definition/starterTemplate.ts +0 -68
- package/src/components/form/fields/schema-definition/types.ts +0 -185
- package/src/components/form/fields/schema-definition/useSchemaOptionCatalog.ts +0 -49
- package/src/components/form/fields/select/Select.stories.tsx +0 -872
- package/src/components/form/fields/select/Select.tsx +0 -624
- package/src/components/form/fields/select/SelectCollection.tsx +0 -594
- package/src/components/form/fields/string/String.stories.tsx +0 -86
- package/src/components/form/fields/string/String.tsx +0 -43
- package/src/components/form/fields/template/ExampleValueModal.stories.tsx +0 -114
- package/src/components/form/fields/template/ExampleValueModal.tsx +0 -99
- package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +0 -47
- package/src/components/form/fields/template/TemplateField.stories.tsx +0 -1121
- package/src/components/form/fields/template/TemplateField.tsx +0 -1717
- package/src/components/form/fields/template/TemplateText.tsx +0 -115
- package/src/components/form/fields/template/__fixtures__/longExampleValue.ts +0 -7
- package/src/components/form/fields/template/__fixtures__/multiLevelTemplates.json +0 -147
- package/src/components/form/fields/template/__fixtures__/templates.json +0 -83
- package/src/components/form/fields/timeout/Timeout.stories.tsx +0 -228
- package/src/components/form/fields/timeout/Timeout.tsx +0 -87
- package/src/components/form/fields/url/Url.stories.tsx +0 -94
- package/src/components/form/fields/url/Url.tsx +0 -85
- package/src/components/form/index.tsx +0 -47
- package/src/components/imageLightbox/ImageLightbox.stories.tsx +0 -238
- package/src/components/imageLightbox/ImageLightbox.tsx +0 -236
- package/src/components/imageLightbox/index.ts +0 -1
- package/src/components/log/Log.stories.tsx +0 -333
- package/src/components/log/Log.tsx +0 -285
- package/src/components/menu/Menu.stories.tsx +0 -155
- package/src/components/menu/Menu.tsx +0 -312
- package/src/components/qonsoleSmartInput/QonsoleSmartInput.stories.tsx +0 -797
- package/src/components/qonsoleSmartInput/QonsoleSmartInput.tsx +0 -105
- package/src/components/qonsoleSmartInput/index.ts +0 -16
- package/src/components/qonsoleSmartInput/qonsoleInserter.ts +0 -77
- package/src/components/qonsoleSmartInput/types.ts +0 -133
- package/src/components/qonsoleSmartInput/useQonsoleSession.ts +0 -124
- package/src/components/searchFilterBar/SearchFilterBar.stories.tsx +0 -62
- package/src/components/searchFilterBar/SearchFilterBar.tsx +0 -144
- package/src/components/searchFilterBar/index.ts +0 -1
- package/src/components/smartEditor/MarkdownDoc.tsx +0 -190
- package/src/components/smartEditor/SmartEditor.stories.tsx +0 -475
- package/src/components/smartEditor/SmartEditor.tsx +0 -808
- package/src/components/smartEditor/__fixtures__/mockLspServer.ts +0 -205
- package/src/components/smartEditor/helpers.ts +0 -217
- package/src/components/smartEditor/index.ts +0 -35
- package/src/components/smartEditor/styling.ts +0 -45
- package/src/components/smartEditor/types.ts +0 -211
- package/src/components/smartEditor/useLspAutocomplete.ts +0 -758
- package/src/components/smartEditor/useLspDiagnosticDecorations.ts +0 -125
- package/src/components/smartEditor/useLspHover.ts +0 -230
- package/src/components/smartEditor/useLspSemanticTokens.ts +0 -298
- package/src/components/smartEditor/useLspSession.ts +0 -231
- package/src/components/smartEditor/useLspSignatureHelp.ts +0 -198
- package/src/components/supportTicket/AttachmentChips.stories.tsx +0 -171
- package/src/components/supportTicket/AttachmentChips.tsx +0 -147
- package/src/components/supportTicket/InterfaceReferenceTags.stories.tsx +0 -257
- package/src/components/supportTicket/InterfaceReferenceTags.tsx +0 -129
- package/src/components/supportTicket/ReferencePicker.stories.tsx +0 -584
- package/src/components/supportTicket/ReferencePicker.tsx +0 -563
- package/src/components/supportTicket/TicketConversation.stories.tsx +0 -121
- package/src/components/supportTicket/TicketHeader.stories.tsx +0 -183
- package/src/components/supportTicket/TicketHeader.tsx +0 -247
- package/src/components/supportTicket/TicketMetaTags.stories.tsx +0 -103
- package/src/components/supportTicket/TicketMetaTags.tsx +0 -85
- package/src/components/supportTicket/TicketReplyBox.stories.tsx +0 -354
- package/src/components/supportTicket/TicketReplyBox.tsx +0 -150
- package/src/components/supportTicket/__fixtures__/kindMarks.ts +0 -28
- package/src/components/supportTicket/attachmentAccess.ts +0 -97
- package/src/components/supportTicket/fileToAttachment.ts +0 -24
- package/src/components/supportTicket/index.ts +0 -10
- package/src/components/supportTicket/meta.ts +0 -206
- package/src/components/supportTicket/ticketModel.ts +0 -131
- package/src/components/supportTicket/useLoadedImages.ts +0 -73
- package/src/components/ticketReferences/TicketReferences.stories.tsx +0 -315
- package/src/components/ticketReferences/TicketReferences.tsx +0 -906
- package/src/components/ticketReferences/index.ts +0 -2
- package/src/components/ticketThread/TicketThread.stories.tsx +0 -829
- package/src/components/ticketThread/TicketThread.tsx +0 -719
- package/src/components/ticketThread/index.ts +0 -6
- package/src/contexts/FetchContext.tsx +0 -25
- package/src/contexts/ReqraftContext.tsx +0 -9
- package/src/contexts/StorageContext.tsx +0 -33
- package/src/global.d.ts +0 -4
- package/src/helpers/allowedValues.ts +0 -249
- package/src/helpers/choiceChip.ts +0 -227
- package/src/helpers/common.ts +0 -326
- package/src/helpers/dpqlDetection.ts +0 -209
- package/src/helpers/expressions.ts +0 -140
- package/src/helpers/optionUiTypes.ts +0 -199
- package/src/helpers/options.ts +0 -150
- package/src/helpers/providerValue.ts +0 -125
- package/src/helpers/scrollbar.ts +0 -32
- package/src/helpers/singleLineString.ts +0 -61
- package/src/helpers/templateItems.ts +0 -81
- package/src/helpers/templateText.ts +0 -350
- package/src/helpers/templates.ts +0 -602
- package/src/helpers/validations.ts +0 -2085
- package/src/hooks/useArgSchema.ts +0 -37
- package/src/hooks/useCoarsePointer.ts +0 -30
- package/src/hooks/useFetch/useFetch.stories.tsx +0 -379
- package/src/hooks/useFetch/useFetch.tsx +0 -154
- package/src/hooks/usePhoneViewport.ts +0 -34
- package/src/hooks/useQorusTypes.ts +0 -233
- package/src/hooks/useReqraftProperty.ts +0 -16
- package/src/hooks/useStorage/useStorage.stories.tsx +0 -168
- package/src/hooks/useStorage/useStorage.ts +0 -35
- package/src/hooks/useTemplates.ts +0 -123
- package/src/hooks/useValidation.ts +0 -9
- package/src/hooks/useWebSocket/useWebSocket.ts +0 -224
- package/src/hooks/useWebSocket/useWebsocket.stories.tsx +0 -640
- package/src/hooks/useWhyDidYouUpdate.ts +0 -38
- package/src/index.tsx +0 -86
- package/src/providers/FetchProvider.tsx +0 -40
- package/src/providers/ReqraftProvider.tsx +0 -52
- package/src/providers/StorageProvider.tsx +0 -131
- package/src/stores/currentUser/currentUser.stories.tsx +0 -100
- package/src/stores/currentUser/currentUser.tsx +0 -94
- package/src/stories/Data/fileFieldArgSchema.json +0 -86
- package/src/stories/Tests/utils.ts +0 -320
- package/src/stories/storyNetwork.ts +0 -92
- package/src/stories/tracking.tsx +0 -206
- package/src/tracking/browser/attach.ts +0 -186
- package/src/tracking/browser/env.ts +0 -78
- package/src/tracking/core/consent.ts +0 -37
- package/src/tracking/core/engagement.ts +0 -47
- package/src/tracking/core/experiments.ts +0 -258
- package/src/tracking/core/hash.ts +0 -26
- package/src/tracking/core/ids.ts +0 -25
- package/src/tracking/core/observable.ts +0 -23
- package/src/tracking/core/queue.ts +0 -131
- package/src/tracking/core/sections.ts +0 -166
- package/src/tracking/core/storage.ts +0 -69
- package/src/tracking/core/tracker.ts +0 -417
- package/src/tracking/core/types.ts +0 -162
- package/src/tracking/core/utm.ts +0 -23
- package/src/tracking/index.ts +0 -72
- package/src/tracking/markup.ts +0 -17
- package/src/tracking/react/Experiment.tsx +0 -44
- package/src/tracking/react/TrackingProvider.tsx +0 -56
- package/src/tracking/react/hooks.ts +0 -106
- package/src/tracking/react/index.ts +0 -13
- package/src/tracking/testing.ts +0 -108
- package/src/tracking/ui/ExperimentCard.stories.tsx +0 -296
- package/src/tracking/ui/ExperimentCard.tsx +0 -667
- package/src/tracking/ui/ExperimentsOverlay.stories.tsx +0 -155
- package/src/tracking/ui/ExperimentsOverlay.tsx +0 -437
- package/src/tracking/ui/anchor.ts +0 -180
- package/src/tracking/ui/card.ts +0 -464
- package/src/tracking/ui/client.ts +0 -117
- package/src/tracking/ui/index.ts +0 -77
- package/src/tracking/ui/types.ts +0 -110
- package/src/tracking/ui/useExperimentsAdmin.ts +0 -103
- package/src/types/Form.ts +0 -29
- package/src/types.ts +0 -14
- package/src/utils/datetime.ts +0 -10
- package/src/utils/fetch.ts +0 -457
- package/src/utils/lspClient.ts +0 -711
- package/src/utils/lspClient.types.ts +0 -211
- package/src/utils/queryUnlessCancelled.ts +0 -28
- package/src/utils/websocket.ts +0 -293
- package/vite.config.ts +0 -58
- package/vitest.config.ts +0 -69
|
@@ -1,353 +0,0 @@
|
|
|
1
|
-
# FormEngine Compact — UX Improvement Plan
|
|
2
|
-
|
|
3
|
-
> Status: **proposal / for review.** Nothing here is implemented yet.
|
|
4
|
-
> Scope: the compact ("read-first") `FormEngine` that will replace the classic
|
|
5
|
-
> engine in the IDE. Goal: keep its density but make it feel **calm, scannable,
|
|
6
|
-
> and guiding** instead of crowded and alarming.
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## 0. TL;DR
|
|
11
|
-
|
|
12
|
-
The compact engine's *information architecture is right* (read-first rows you
|
|
13
|
-
drill into). What's wrong is **visual signal management**: it currently runs
|
|
14
|
-
**five overlapping status systems at once** and treats *untouched draft fields*
|
|
15
|
-
as **hard red errors**. The result reads like a form that's on fire when it's
|
|
16
|
-
actually just unfinished.
|
|
17
|
-
|
|
18
|
-
Three changes do ~80% of the work:
|
|
19
|
-
|
|
20
|
-
1. **Collapse the 5 status systems into 1.** One global completion signal at the
|
|
21
|
-
top; demote/remove the redundant red banner and the per-group/per-row status
|
|
22
|
-
pills.
|
|
23
|
-
2. **Reframe "errors" as "to-dos."** Don't show red validation errors on fields
|
|
24
|
-
the user hasn't touched. *Unset ≠ error.* Validate on interaction/submit.
|
|
25
|
-
3. **Lock a strict one-line row template** and push everything variable
|
|
26
|
-
(descriptions, error reasons, nested previews, default hints) **behind
|
|
27
|
-
progressive disclosure**. One scannable line per field by default.
|
|
28
|
-
|
|
29
|
-
Everything else (calmer value chips, less chrome, smarter ordering, a "what's
|
|
30
|
-
next" path) compounds these.
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
## 1. North star
|
|
35
|
-
|
|
36
|
-
> A configuration **summary you can read top-to-bottom in seconds**, that quietly
|
|
37
|
-
> tells you *what's done, what's left, and what to do next* — and gets out of the
|
|
38
|
-
> way when you're just scanning.
|
|
39
|
-
|
|
40
|
-
The audience is technical (developers configuring Qorus interfaces). They *want*
|
|
41
|
-
density — the model is a **good data table / code editor**, not a consumer
|
|
42
|
-
wizard. So the goal is **"calm density,"** not fewer fields. Think: the
|
|
43
|
-
difference between a well-set spreadsheet and a ransom note.
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## 2. What's wrong today (diagnosis)
|
|
48
|
-
|
|
49
|
-
Grounded in the screenshots + the implementation
|
|
50
|
-
([`CompactToolbar.tsx`](../src/components/form/engine/CompactToolbar.tsx),
|
|
51
|
-
[`CompactRow.tsx`](../src/components/form/engine/CompactRow.tsx),
|
|
52
|
-
[`FormEngine.tsx`](../src/components/form/engine/FormEngine.tsx),
|
|
53
|
-
[`compactRowStyles.ts`](../src/components/form/engine/compactRowStyles.ts)).
|
|
54
|
-
|
|
55
|
-
### 2.1 Five competing status systems
|
|
56
|
-
At one glance the user is shown completeness/validity **five different ways**:
|
|
57
|
-
|
|
58
|
-
| # | System | Where | Code |
|
|
59
|
-
|---|--------|-------|------|
|
|
60
|
-
| 1 | Draft badge + `12/21 fields set` + progress bar + `57%` | header | `CompactToolbar` `StyledCompletion` |
|
|
61
|
-
| 2 | Red banner: "6 fields are not valid… click to only show invalid" | header | `CompactToolbar` invalid banner |
|
|
62
|
-
| 3 | Per-group pills: `4 OPTIONAL`, `5 TO RESOLVE` | group headers | `FormEngine.tsx:1973` |
|
|
63
|
-
| 4 | Per-row red stripe + red ⓘ button + inline red message box | each invalid row | `CompactRow` tier-1 `StyledInfoPanel` |
|
|
64
|
-
| 5 | Per-row Draft chip / required asterisk / ⓘ toggle | each row | `CompactRow` `draftChip`, asterisk |
|
|
65
|
-
|
|
66
|
-
These don't reinforce — they **compete**. The user can't tell which is the
|
|
67
|
-
"real" status, so the whole UI reads as urgent. (NN/g *Aesthetic & minimalist
|
|
68
|
-
design*: every extra unit of status dilutes the rest.)
|
|
69
|
-
|
|
70
|
-
### 2.2 Premature, alarmist validation
|
|
71
|
-
The form is in **DRAFT**, yet untouched fields show **hard red errors** —
|
|
72
|
-
"Text value is empty," "Hash arguments are invalid," "Required — not set." Two
|
|
73
|
-
problems:
|
|
74
|
-
|
|
75
|
-
- **Unset is not an error.** Showing red on fields the user hasn't even reached
|
|
76
|
-
punishes them for not-yet-doing-something. This is the single biggest driver
|
|
77
|
-
of the "overwhelming" feeling. (Baymard / NN/g on inline validation: validate
|
|
78
|
-
**on blur or on submit**, not aggressively on load; reserve red for *wrong*,
|
|
79
|
-
not *empty*.)
|
|
80
|
-
- **The error chrome is layout-disruptive.** Full-width dark-red `ReqoreMessage`
|
|
81
|
-
boxes render *between rows*, shoving content down and shattering the table
|
|
82
|
-
rhythm that makes the form scannable. Six of them = a wall of red.
|
|
83
|
-
|
|
84
|
-
### 2.3 No focal point / flat hierarchy
|
|
85
|
-
Every row carries roughly equal visual weight; labels, values, blue chips,
|
|
86
|
-
swatches, nested trees and error boxes all shout at the same volume. There's no
|
|
87
|
-
"look here first," no obvious **next action**. The eye bounces. (Visual
|
|
88
|
-
hierarchy via size/weight/colour/space is absent within the row grid.)
|
|
89
|
-
|
|
90
|
-
### 2.4 Inconsistent row anatomy breaks scannability
|
|
91
|
-
Rows are one line (`Option with value · 123`), or two (label + sub-description),
|
|
92
|
-
or three+ (label + value + inline error box), or have an embedded object tree
|
|
93
|
-
with "Show more." The **grid rhythm** — the thing that makes a dense list
|
|
94
|
-
scannable — is constantly broken by inline variants rendered **by default**.
|
|
95
|
-
|
|
96
|
-
### 2.5 The value column has no consistent visual language
|
|
97
|
-
Plain text, **saturated-blue template chips** (`Test (local)`, `Richtext
|
|
98
|
-
Template`), colour swatch + hex, file pill, nested data tree — each a different
|
|
99
|
-
weight and colour. The blue chips in particular are *louder than the field
|
|
100
|
-
labels*, so decoration outshouts meaning. (Tufte: colour should encode data, not
|
|
101
|
-
ornament.)
|
|
102
|
-
|
|
103
|
-
### 2.6 Heavy non-data "chrome"
|
|
104
|
-
Recessed value surfaces, intent stripes, group spines, required-group rails,
|
|
105
|
-
dividers, hover fills — a lot of subtle lines/fills create a **busy texture**
|
|
106
|
-
before any content is read. (Tufte *data-ink ratio*: most separators could be
|
|
107
|
-
whitespace.)
|
|
108
|
-
|
|
109
|
-
### 2.7 Weak grouping semantics
|
|
110
|
-
"General" is a vague catch-all; "Optional/General" isn't a meaning the user
|
|
111
|
-
reasons with. 21 fields in 2 buckets, ordered by schema, with no
|
|
112
|
-
prioritisation. Findability relies on the filter box.
|
|
113
|
-
|
|
114
|
-
---
|
|
115
|
-
|
|
116
|
-
## 3. Principles we'll design to
|
|
117
|
-
|
|
118
|
-
| Principle | Source | Applied here |
|
|
119
|
-
|---|---|---|
|
|
120
|
-
| **One primary status channel** | NN/g *Visibility of system status* + *Minimalist design* | Collapse 5 status systems → 1 meter |
|
|
121
|
-
| **Validate at the right time** | Baymard; NN/g *Error prevention* | Unset ≠ error; validate on blur/submit |
|
|
122
|
-
| **Severity = colour, not area** | Tufte; Material/Carbon error patterns | Replace red boxes with a dot/accent |
|
|
123
|
-
| **Progressive disclosure** | NN/g | One line per row; reveal the rest on demand |
|
|
124
|
-
| **Data-ink ratio** | Tufte | Whitespace > borders for separation |
|
|
125
|
-
| **Recognition over recall** | NN/g | Read-first rows (already good) — keep |
|
|
126
|
-
| **Chunking ~5–7** | Miller's law | Smaller, purpose-named groups |
|
|
127
|
-
| **Ask only what's needed** | GOV.UK *question protocol* | Defer/hide rarely-used optional fields |
|
|
128
|
-
| **Error summary + adjacent message** | GOV.UK Design System | A navigable "needs attention" section, not a red bar |
|
|
129
|
-
|
|
130
|
-
The throughline: **the IDE audience tolerates density but not noise.** Cut
|
|
131
|
-
*ink*, not *information*.
|
|
132
|
-
|
|
133
|
-
---
|
|
134
|
-
|
|
135
|
-
## 4. The redesign — concrete moves
|
|
136
|
-
|
|
137
|
-
### 4.1 Collapse 5 status systems into 1
|
|
138
|
-
|
|
139
|
-
**Keep** the top completion strip as the *single* global status. **Evolve it** so
|
|
140
|
-
it carries everything the other four systems were saying:
|
|
141
|
-
|
|
142
|
-
- Segment the bar into **set-&-valid / needs-attention / unset** (e.g. green /
|
|
143
|
-
amber / track), so "57% done, 6 need attention" is legible in one glance —
|
|
144
|
-
no separate red banner needed.
|
|
145
|
-
- The **"6 need attention"** count becomes a quiet, clickable affordance *on the
|
|
146
|
-
meter* ("→ 6 to resolve") that filters to those fields. This replaces the
|
|
147
|
-
red banner (system #2) with a calm, constructive control.
|
|
148
|
-
- **Drop the per-group `4 OPTIONAL` pill entirely** (the group is already
|
|
149
|
-
labelled "Optional"). Keep a per-group "N to resolve" **only when > 0**, muted
|
|
150
|
-
and right-aligned — or better, a thin per-group progress underline.
|
|
151
|
-
- **Demote the per-row Draft chip**: the *global* Draft state is enough; per-row,
|
|
152
|
-
"changed" is better shown by the revert ↺ affordance alone.
|
|
153
|
-
|
|
154
|
-
Net: the user has **one** place to read status, and **one** click to act on it.
|
|
155
|
-
|
|
156
|
-
### 4.2 Errors → To-dos (validation timing & severity)
|
|
157
|
-
|
|
158
|
-
Introduce a 3-state model for a field's status, and **stop conflating them**:
|
|
159
|
-
|
|
160
|
-
| State | Meaning | Default treatment |
|
|
161
|
-
|---|---|---|
|
|
162
|
-
| **Unset** | No value, not required | Muted `—` / "Not set". **No alarm.** |
|
|
163
|
-
| **To-do** | Required (or required-group) but unset, untouched | **Quiet amber** dot + "Needs a value". Not red, not a box. |
|
|
164
|
-
| **Invalid** | User entered something that fails validation | **Red**, but only **after the field is touched** or **after a submit attempt**. |
|
|
165
|
-
|
|
166
|
-
Rules:
|
|
167
|
-
- **Untouched required fields are to-dos, not errors.** In a DRAFT, "Required —
|
|
168
|
-
not set" should be a calm amber hint, not a red error with a full-width box.
|
|
169
|
-
- **Validation fires on blur / on submit**, not on load. Track a per-field
|
|
170
|
-
`touched` flag (or a form-level `submitAttempted`).
|
|
171
|
-
- **The error reason moves off the default row.** Show at most a 1-word/short
|
|
172
|
-
inline hint after the value ("empty", "invalid"); the full message appears
|
|
173
|
-
**only when the row is focused/expanded** (where the editor's own message strip
|
|
174
|
-
already lives) or in the "needs attention" summary.
|
|
175
|
-
|
|
176
|
-
This one change removes the wall of red in the screenshot: those six boxes become
|
|
177
|
-
calm amber to-dos until the user engages or hits Submit.
|
|
178
|
-
|
|
179
|
-
### 4.3 The row: one strict template + progressive disclosure
|
|
180
|
-
|
|
181
|
-
Lock a **constant 3-zone row** and keep it one line by default:
|
|
182
|
-
|
|
183
|
-
```
|
|
184
|
-
[ icon? · Label · req-dot ] [ value summary ……………… ] [ status · actions ]
|
|
185
|
-
label col value col (ellipsis) fixed right
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
- **Constant height, constant alignment, constant zones.** The current grid is
|
|
189
|
-
already close (`StyledGroupBody .readfirst-row`); the fix is *what we allow to
|
|
190
|
-
break it.*
|
|
191
|
-
- **Move out of the default row, behind disclosure (ⓘ / focus / expand):**
|
|
192
|
-
- field **descriptions / subtitles** (currently inline under the label),
|
|
193
|
-
- **error/validation messages** (currently full-width boxes),
|
|
194
|
-
- **default-value hints**,
|
|
195
|
-
- **nested object/hash previews** (the `schemaOption2 → Show more` tree) →
|
|
196
|
-
collapse to the "Object · 1 field" summary; reveal the tree only on expand.
|
|
197
|
-
- Result: a 21-field form is **21 scannable lines**, each of which *can* expand —
|
|
198
|
-
rather than a variable-height stack you have to parse.
|
|
199
|
-
|
|
200
|
-
### 4.4 Value language: calm & consistent
|
|
201
|
-
|
|
202
|
-
- **Desaturate the template chips.** `Test (local)` / `Richtext Template`
|
|
203
|
-
currently use saturated blue and outshout the labels. Use a quiet, low-contrast
|
|
204
|
-
chip (subtle surface + the `$` template glyph) so the **label leads** and the
|
|
205
|
-
value supports. Reserve saturated colour for *state* (to-do/invalid), not for
|
|
206
|
-
*value type*.
|
|
207
|
-
- **One muted weight for all "set" values** (text, hex, filename, count). The
|
|
208
|
-
swatch/file-icon/`$`-glyph carry the type; the text stays uniform.
|
|
209
|
-
- **"Not set" gets the lightest possible treatment** (muted, no italics arms-race
|
|
210
|
-
with errors) so empty rows visually *recede* rather than read as problems.
|
|
211
|
-
|
|
212
|
-
### 4.5 Reduce chrome (data-ink)
|
|
213
|
-
|
|
214
|
-
- Replace the **red left stripe + red box + red ⓘ** trio with a **single status
|
|
215
|
-
dot** in the right-hand status slot (colour = severity). One mark, not three.
|
|
216
|
-
- **Whitespace over borders.** Drop the recessed value-surface fill and the
|
|
217
|
-
group spine where they don't encode meaning; let alignment + a little more
|
|
218
|
-
vertical rhythm do the grouping. (Keep the **required-group rail** — that one
|
|
219
|
-
*does* encode a real relationship.)
|
|
220
|
-
- Audit every line/fill in `compactRowStyles.ts` against "does this encode data?"
|
|
221
|
-
If not, it's a candidate for removal.
|
|
222
|
-
|
|
223
|
-
### 4.6 Grouping, ordering, findability
|
|
224
|
-
|
|
225
|
-
- **Default sort within a group = needs-attention → set → optional-unset.** Put
|
|
226
|
-
what the user must act on at the top of each group automatically (the existing
|
|
227
|
-
`invalid`/`unset` sort modes, but as the smart default for a draft).
|
|
228
|
-
- **Name groups by purpose.** "General" is a non-answer; if the schema gives no
|
|
229
|
-
meaningful group, prefer a single **Required / Optional** split over a vague
|
|
230
|
-
"General" bucket.
|
|
231
|
-
- **A pinned "Needs attention (6)" section** at the very top when there are
|
|
232
|
-
unresolved fields — the form's built-in answer to "what do I do next," and the
|
|
233
|
-
constructive replacement for the red banner (GOV.UK error-summary pattern, but
|
|
234
|
-
calm and always-navigable).
|
|
235
|
-
- Keep optional-but-unset fields **collapsed by default** behind the existing
|
|
236
|
-
"Optional (N)" disclosure, so the default view is "what's set + what's needed."
|
|
237
|
-
|
|
238
|
-
### 4.7 The "what's next" path
|
|
239
|
-
|
|
240
|
-
The form should always answer *what's left?* and make it one click to get there:
|
|
241
|
-
|
|
242
|
-
- Meter → click "6 to resolve" → filter to unresolved (reuse `showInvalidOnly`,
|
|
243
|
-
but renamed to *"needs attention"* and including required-unset to-dos).
|
|
244
|
-
- On **Submit** with unresolved fields: scroll-to + focus the first, and *now*
|
|
245
|
-
promote to-dos to errors (the flash machinery already exists).
|
|
246
|
-
- Optional niceties: keyboard `n`/`p` to jump between unresolved fields; a sticky
|
|
247
|
-
"Next: <field> →" hint while editing.
|
|
248
|
-
|
|
249
|
-
---
|
|
250
|
-
|
|
251
|
-
## 5. Phased roadmap (impact × effort)
|
|
252
|
-
|
|
253
|
-
### P0 — quick wins (high impact, low effort): "stop shouting"
|
|
254
|
-
1. **Unset ≠ error.** Don't render red boxes/stripes for untouched required/empty
|
|
255
|
-
fields; downgrade to quiet amber to-dos. *(biggest single win)*
|
|
256
|
-
2. **Remove the red invalid banner**; fold the count into the meter as a quiet
|
|
257
|
-
"→ N to resolve" control.
|
|
258
|
-
3. **Drop the `N OPTIONAL` group pill**; show "N to resolve" only when > 0, muted.
|
|
259
|
-
4. **Move field descriptions + error messages off the default row** (behind ⓘ /
|
|
260
|
-
focus). One line per row.
|
|
261
|
-
5. **Desaturate template chips.**
|
|
262
|
-
|
|
263
|
-
> P0 alone should resolve "crowded and overwhelming" for the screenshot case.
|
|
264
|
-
|
|
265
|
-
### P1 — structural (medium effort): "calm density"
|
|
266
|
-
6. Segmented completion meter (set / to-do / unset).
|
|
267
|
-
7. Strict row template + collapse nested previews to summaries by default.
|
|
268
|
-
8. Single status-dot system; remove redundant stripes/boxes/ⓘ-buttons.
|
|
269
|
-
9. Validation timing: per-field `touched` + `submitAttempted`.
|
|
270
|
-
10. Smart default ordering (needs-attention first) + purpose-named groups.
|
|
271
|
-
|
|
272
|
-
### P2 — ambition (higher effort): "truly great"
|
|
273
|
-
11. Pinned **"Needs attention"** navigator section + keyboard jump.
|
|
274
|
-
12. Reduce the "edit card" modality — inline-first editing everywhere it fits.
|
|
275
|
-
13. **Density toggle** (comfortable / compact) for newcomers vs power users.
|
|
276
|
-
14. Per-group progress underline; section-level "all set" collapse.
|
|
277
|
-
15. Telemetry-driven defaults (collapse rarely-touched optional fields).
|
|
278
|
-
|
|
279
|
-
---
|
|
280
|
-
|
|
281
|
-
## 6. Component-level change list (where the work lands)
|
|
282
|
-
|
|
283
|
-
| Area | File | Change |
|
|
284
|
-
|---|---|---|
|
|
285
|
-
| Status consolidation | `CompactToolbar.tsx` | Segmented meter; remove invalid banner; "N to resolve" control |
|
|
286
|
-
| Group header | `FormEngine.tsx:1968` `StyledGroupHeader` | Drop `N OPTIONAL`; muted "to resolve"; optional progress underline |
|
|
287
|
-
| Row template & disclosure | `CompactRow.tsx` | Move desc/error/default-hint behind disclosure; single status dot; calm chips |
|
|
288
|
-
| Validation model | `FormEngine.tsx` validity data + `CompactRow` | `touched`/`submitAttempted`; unset→to-do vs invalid |
|
|
289
|
-
| Visual chrome | `compactRowStyles.ts` | Remove non-data stripes/fills; whitespace rhythm; keep required rail |
|
|
290
|
-
| Ordering / sections | `FormEngine.tsx` group + sort | Needs-attention-first default; "Needs attention" section |
|
|
291
|
-
| Value language | `readFirst.ts` + `CompactRow` `renderReadFirstValue` | Uniform muted weight; desaturated template/richtext chips |
|
|
292
|
-
|
|
293
|
-
None of this changes the schema/value/`onChange` contract — it's all
|
|
294
|
-
presentation, consistent with the compact mode's existing "purely presentational"
|
|
295
|
-
design.
|
|
296
|
-
|
|
297
|
-
---
|
|
298
|
-
|
|
299
|
-
## 7. Open questions (to decide / validate with users)
|
|
300
|
-
|
|
301
|
-
1. **Validation timing**: blur-only, or also a gentle "you skipped a required
|
|
302
|
-
field" on navigate-away? (Lean: blur + submit.)
|
|
303
|
-
2. Is **"General"** a real schema group or a fallback bucket? If fallback, can we
|
|
304
|
-
suppress the group chrome entirely for single-group schemas?
|
|
305
|
-
3. How often are the **nested object/hash previews** actually read at a glance vs
|
|
306
|
-
noise? (Telemetry / quick user check before investing in them.)
|
|
307
|
-
4. Do power users want the **density toggle**, or should we just ship one
|
|
308
|
-
well-tuned density?
|
|
309
|
-
5. Should **optional-unset** fields be collapsed by default (cleaner) or visible
|
|
310
|
-
(discoverable)? Likely collapsed with a strong "+ N optional" affordance.
|
|
311
|
-
|
|
312
|
-
---
|
|
313
|
-
|
|
314
|
-
## 8. How we'll know it worked
|
|
315
|
-
|
|
316
|
-
- **Time-to-first-meaningful-scan** (qual): can a new user say "what's left?" in
|
|
317
|
-
< 5s?
|
|
318
|
-
- **Perceived calm** (5-pt survey before/after on the same schema).
|
|
319
|
-
- **Error-recovery**: time from Submit-blocked to all-resolved.
|
|
320
|
-
- **Eye-bounce** (optional): fewer fixations to locate the next action.
|
|
321
|
-
- Objective: **default view height** for the screenshot schema should drop
|
|
322
|
-
substantially once errors/descriptions move behind disclosure.
|
|
323
|
-
|
|
324
|
-
---
|
|
325
|
-
|
|
326
|
-
## 9. References
|
|
327
|
-
|
|
328
|
-
- Nielsen Norman Group — *10 Usability Heuristics* (esp. Aesthetic & minimalist
|
|
329
|
-
design, Visibility of system status, Error prevention); *Progressive
|
|
330
|
-
Disclosure*; *Inline Validation in Web Forms*.
|
|
331
|
-
- Baymard Institute — form usability research (inline validation timing;
|
|
332
|
-
required vs optional).
|
|
333
|
-
- GOV.UK Design System — *Error summary* + *error message* patterns; *question
|
|
334
|
-
protocol* ("only ask what you need").
|
|
335
|
-
- Edward Tufte — *The Visual Display of Quantitative Information* (data-ink
|
|
336
|
-
ratio).
|
|
337
|
-
- Miller (1956) — chunking (~7±2).
|
|
338
|
-
- Design-system form guidance: Material 3, IBM Carbon, Shopify Polaris
|
|
339
|
-
(error/state colour conventions, one-column dense forms).
|
|
340
|
-
|
|
341
|
-
---
|
|
342
|
-
|
|
343
|
-
### Appendix — mapping the screenshot to the fixes
|
|
344
|
-
|
|
345
|
-
| In the screenshot | Why it feels heavy | Fix (section) |
|
|
346
|
-
|---|---|---|
|
|
347
|
-
| Red banner "6 fields are not valid…" | System #2, alarmist | 4.1 / P0-2 |
|
|
348
|
-
| `4 OPTIONAL` / `5 TO RESOLVE` pills | System #3, competes with titles | 4.1 / P0-3 |
|
|
349
|
-
| Red box "Text value is empty" (untouched) | Premature error | 4.2 / P0-1 |
|
|
350
|
-
| Red box "Hash arguments are invalid" inline | Layout-disruptive error | 4.2 / 4.3 |
|
|
351
|
-
| Saturated blue `Test (local)` chip | Decoration outshouts label | 4.4 / P0-5 |
|
|
352
|
-
| `schemaOption2 → Show more` tree inline | Breaks row rhythm | 4.3 / P1-7 |
|
|
353
|
-
| Per-row red stripe + red ⓘ + red box | Three marks for one state | 4.5 / P1-8 |
|
|
@@ -1,257 +0,0 @@
|
|
|
1
|
-
# Form engine — expression support (visual + DPQL text)
|
|
2
|
-
|
|
3
|
-
Locked design + rationale for adding **expression** values to the
|
|
4
|
-
ReqRaft form engine: any field can hold a Qorus expression, edited two
|
|
5
|
-
interchangeable ways — a **visual builder** (ported from qorus-ide) and
|
|
6
|
-
a **DPQL text editor** (ReqRaft's existing `DpqlEditor`) — plus an
|
|
7
|
-
**Explain** button.
|
|
8
|
-
|
|
9
|
-
Execution checklist: [`.tasks/FORM_ENGINE_EXPRESSIONS.md`](../.tasks/FORM_ENGINE_EXPRESSIONS.md).
|
|
10
|
-
Server contract reference (memory): "Qorus expression/DPQL contract".
|
|
11
|
-
Server ask for the Explain transport: `/tmp/render-expression-exposure.md`.
|
|
12
|
-
|
|
13
|
-
## Background — the one insight everything rests on
|
|
14
|
-
|
|
15
|
-
A Qorus **expression** is an AST: `{ exp, args }` (args are literals,
|
|
16
|
-
field refs, templates, or nested expressions; `&&`/`||` are AND/OR
|
|
17
|
-
groups). **DPQL is the text serialization of that same AST.** Verified
|
|
18
|
-
live (2026-06-09, `wss://localhost:8012/lsp`):
|
|
19
|
-
|
|
20
|
-
- `dpql/parse("1 == 1")` → `{ is_expression:true, value:{ exp:"==", args:[…] }, inferred_type:"bool" }`
|
|
21
|
-
- `dpql/serialize({exp,args})` → `{ dpql, richtext }`
|
|
22
|
-
|
|
23
|
-
So the **visual builder and the DPQL editor are two editors for one
|
|
24
|
-
value.** That value, stored on a field, is `is_expression: true` + the
|
|
25
|
-
AST. `parse`/`serialize` bridge text ↔ AST; the visual builder edits the
|
|
26
|
-
AST directly.
|
|
27
|
-
|
|
28
|
-
This is *new* integration: in qorus-ide the visual `ExpressionBuilder`
|
|
29
|
-
is purely visual (no DPQL), and DPQL is used only for alert-rule `match`.
|
|
30
|
-
ReqRaft unifies them.
|
|
31
|
-
|
|
32
|
-
## Goal
|
|
33
|
-
|
|
34
|
-
1. A field declared `supports_expressions: true` can be toggled from a
|
|
35
|
-
literal/template into an **expression**.
|
|
36
|
-
2. The expression is editable in **Visual** mode (ported builder) and
|
|
37
|
-
**Text** mode (DPQL via `DpqlEditor`), switchable, over the same AST.
|
|
38
|
-
3. An **Explain** button renders the expression to readable text.
|
|
39
|
-
4. Operands reuse what we already built — `AutoFormField` / `FormField`
|
|
40
|
-
— rather than re-porting qorus-ide's field stack.
|
|
41
|
-
|
|
42
|
-
## Verified server contract
|
|
43
|
-
|
|
44
|
-
| Need | Transport | Status |
|
|
45
|
-
|---|---|---|
|
|
46
|
-
| Expression catalogue (operators/functions) | REST `GET /api/latest/system?action=expressions` | ✅ live; `useFetch` |
|
|
47
|
-
| Per-provider extra expressions | REST `…/apps/{app}/actions/{action}/expressions` (`expressions_url`) | ✅ merge with system list |
|
|
48
|
-
| Text ↔ AST | LSP `dpql/parse` · `dpql/serialize` · `dpql/validate` | ✅ live; `DpqlEditor` session |
|
|
49
|
-
| **Explain** (AST → readable text) | `render-expression` | ⚠️ **Creator-WS only** — see "Explain transport" |
|
|
50
|
-
|
|
51
|
-
Value shapes (from the live server):
|
|
52
|
-
- catalogue entry: `{ name, display_name, short_desc, desc, symbol, type, return_type, ui_return_type, args[], varargs, subtype, groups, role }`
|
|
53
|
-
- expression value: `{ is_expression:true, value:{ exp:string, args:IExpression[] } }`
|
|
54
|
-
- `IExpression` arg: `{ type, value }` (literal/template) **or** `{ is_expression:true, value:{exp,args} }` (nested)
|
|
55
|
-
|
|
56
|
-
## Locked decisions
|
|
57
|
-
|
|
58
|
-
- **Both modes, one AST.** Visual + text are views of the same
|
|
59
|
-
`{exp,args}`; `parse`/`serialize` convert at the mode boundary.
|
|
60
|
-
- **Attach at `TemplateField`** (matches qorus-ide). A "Use Expression"
|
|
61
|
-
entry sits beside the existing template toggle; FormEngine-driven
|
|
62
|
-
forms get it for free. The field opts in via `supports_expressions`.
|
|
63
|
-
- **Operands render through `AutoFormField`/`FormField`**, not a
|
|
64
|
-
re-port of qorus-ide's `TemplateField→auto`. An operand is "a value of
|
|
65
|
-
a type" — exactly what `AutoFormField` (built this session, with the
|
|
66
|
-
type picker) already does, and it recurses into expressions via
|
|
67
|
-
`TemplateField` naturally.
|
|
68
|
-
|
|
69
|
-
**Revised 2026-06-10 (EXPRESSION_BUILDER_REPORT / FIELD_STACK_REPORT):**
|
|
70
|
-
superseded by the verbatim re-port — operands now render through the
|
|
71
|
-
IDE's own `TemplateField → auto` recursion (`TemplateField
|
|
72
|
-
component={auto}`), matching qorus-ide exactly. The architecture-table
|
|
73
|
-
row below ("operands → `AutoFormField`") reflects the original decision;
|
|
74
|
-
see `design/EXPRESSION_BUILDER_REPORT_STRATEGY.md` for the supersession
|
|
75
|
-
rationale.
|
|
76
|
-
- **Explain behind a seam.** A `useRenderExpression` hook abstracts the
|
|
77
|
-
transport so the Creator-WS decision doesn't gate the editor (see
|
|
78
|
-
below).
|
|
79
|
-
- **Catalogue via `useFetch`**, cached (it's static per server version);
|
|
80
|
-
merge `expressions_url` extras like qorus-ide's `useExpressions`.
|
|
81
|
-
|
|
82
|
-
## Architecture
|
|
83
|
-
|
|
84
|
-
New subsystem `src/components/form/expressions/`:
|
|
85
|
-
|
|
86
|
-
| File | Role |
|
|
87
|
-
|---|---|
|
|
88
|
-
| `types.ts` | `IExpression`, `IExpressionSchema`, arg types (ported) |
|
|
89
|
-
| `useExpressions.ts` | fetch `/system?action=expressions` (+ `expressions_url` merge) via `useFetch`; cached |
|
|
90
|
-
| `useRenderExpression.ts` | **the Explain seam** — `(ast) => Promise<string>`; transport swappable |
|
|
91
|
-
| `ExpressionField.tsx` | the shell `TemplateField` renders in expression mode: **Visual ⇄ Text toggle**, Explain button, owns the AST value |
|
|
92
|
-
| `ExpressionBuilder.tsx` (+ `argument*.tsx`, `group`, `confirm*Modal`) | the **visual** tree (port); operands → `AutoFormField` |
|
|
93
|
-
| `ExpressionBuilder.stories.tsx`, `ExpressionField.stories.tsx` | mock-LSP + mock-catalogue stories |
|
|
94
|
-
|
|
95
|
-
Touched: `TemplateField.tsx` (Use-Expression toggle + render `ExpressionField` when `is_expression`), `FormField`/`FormEngine` value plumbing for `is_expression`, the form barrel (exports).
|
|
96
|
-
|
|
97
|
-
**Flow:**
|
|
98
|
-
```
|
|
99
|
-
FormEngine option { supports_expressions:true }
|
|
100
|
-
└ TemplateField ── "Use Expression" ──► is_expression:true
|
|
101
|
-
└ ExpressionField (value = { exp, args })
|
|
102
|
-
├ [Visual] ExpressionBuilder ──► edits AST; operands = AutoFormField
|
|
103
|
-
├ [Text] DpqlEditor ──► text; parse()→AST / serialize()←AST at the boundary
|
|
104
|
-
└ [Explain] useRenderExpression(AST) → readable string
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
## Explain transport (open decision — does NOT block build)
|
|
108
|
-
|
|
109
|
-
`render-expression` is Creator-WS-only today. The editor is built behind
|
|
110
|
-
`useRenderExpression`; until the server exposes it over REST or LSP:
|
|
111
|
-
- **interim:** approximate via `dpql/serialize`'s `richtext`, or render
|
|
112
|
-
Explain disabled-with-tooltip.
|
|
113
|
-
- **target:** server adds `dpql/explain` (preferred) or
|
|
114
|
-
`?action=render-expression` (REST). Then `useRenderExpression` swaps in
|
|
115
|
-
one place. Tracked in `/tmp/render-expression-exposure.md` (server ask).
|
|
116
|
-
|
|
117
|
-
## DPQL-context nuance (design item, resolve in Phase 2)
|
|
118
|
-
|
|
119
|
-
The `DpqlEditor`'s primary use (alert rules) binds a provider/record
|
|
120
|
-
context for `@field` completions. A *generic field expression* may have
|
|
121
|
-
no provider — its "fields" are the field's **templates** (`$local:…`).
|
|
122
|
-
Phase 2 decides how the text-mode editor binds context: pass the field's
|
|
123
|
-
templates/return-type, and bind a provider only when the field supplies
|
|
124
|
-
one. Worst case, text mode still parses/serializes correctly with no
|
|
125
|
-
provider; only completions are reduced.
|
|
126
|
-
|
|
127
|
-
## Detecting an expression typed as plain text
|
|
128
|
-
|
|
129
|
-
*Added 2026-09-06. As-built.*
|
|
130
|
-
|
|
131
|
-
An author who never opens the expression view still types DPQL into the
|
|
132
|
-
ordinary editor. `TemplateField` notices, and what it does next depends on
|
|
133
|
-
the field's own type.
|
|
134
|
-
|
|
135
|
-
**A successful parse means nothing.** This is the finding the whole design
|
|
136
|
-
rests on, and it is counter-intuitive enough to be worth stating plainly.
|
|
137
|
-
Verified against the live LSP: `dpql/parse` returns `success: true` for
|
|
138
|
-
`hello`, for `42`, for `2026-09-06` and for `@a`. A bare literal is a valid
|
|
139
|
-
DPQL program, so "does it parse?" cannot separate an expression from a
|
|
140
|
-
value. What separates them is the shape of the AST that comes back:
|
|
141
|
-
|
|
142
|
-
| typed text | `exp` | verdict |
|
|
143
|
-
|---|---|---|
|
|
144
|
-
| `hello`, `42`, `2026-09-06`, `@a` | `value` | a literal |
|
|
145
|
-
| `$local:count` | `template` | a template |
|
|
146
|
-
| `@a > 5`, `"a" + "b"`, `toInt("5")`, `@n LIKE "a%"` | `>`, `+`, `toInt`, `like` | an expression |
|
|
147
|
-
|
|
148
|
-
Text that is not DPQL at all is safe on its own: `hello world`, `x@y.com`,
|
|
149
|
-
`a - b test` and `{"a":1}` all fail to parse outright.
|
|
150
|
-
|
|
151
|
-
**Three stages, in `helpers/dpqlDetection.ts`:**
|
|
152
|
-
|
|
153
|
-
1. `mightBeDpqlExpression` — a cheap lexical pass whose ONLY job is to keep
|
|
154
|
-
a server round-trip off every keystroke. It decides nothing. `-` and `/`
|
|
155
|
-
require surrounding spaces so a date or a path never triggers a probe.
|
|
156
|
-
2. `dpql/parse` on the shared probe document (below), debounced 400 ms.
|
|
157
|
-
3. `classifyTypedText` — `switch` when the text could not be a literal of
|
|
158
|
-
the field's declared type (the form's own `validateField` answers that),
|
|
159
|
-
`offer` when it could, `none` otherwise.
|
|
160
|
-
|
|
161
|
-
**Why the asymmetry.** Rewriting the string `a + b` into a concatenation on
|
|
162
|
-
a `string` field would destroy a value the author meant, so a type that
|
|
163
|
-
accepts any text is only ever OFFERED the switch. Text that could not be a
|
|
164
|
-
literal there was already an error the moment it was typed, so switching
|
|
165
|
-
costs nothing and explains the error. Every switch carries an Undo that
|
|
166
|
-
restores the exact text, and a declined text is never asked about again.
|
|
167
|
-
|
|
168
|
-
**Reachability.** The auto-switch only applies where the editor accepts free
|
|
169
|
-
text — a constrained `string` (identifier / `validation_regex`), `binary`,
|
|
170
|
-
`hash`. `int` and `float` render `input[type=number]`, which drops `@`, `>`
|
|
171
|
-
and spaces before any handler runs, so detection there is unreachable by
|
|
172
|
-
design of the editor and the ⋮ menu remains the way in. Pinned by a test.
|
|
173
|
-
|
|
174
|
-
**Template precedence.** `isValueTemplate` is deliberately loose (starts
|
|
175
|
-
with `$`, contains `:`), so `$local:count + 1` was being swallowed into
|
|
176
|
-
template mode with its arithmetic as dead text. A value that is not one
|
|
177
|
-
complete template token and carries an operator now stays in the plain
|
|
178
|
-
editor, where detection can reach it. A token standing alone
|
|
179
|
-
(`$local:count`, `$data:{1.field}`) still flips, unchanged.
|
|
180
|
-
|
|
181
|
-
**The probe document** (`components/dpqlEditor/dpqlProbe.ts`). One shared,
|
|
182
|
-
lazily-opened DPQL document for the whole app, reference-counted by
|
|
183
|
-
`useDpqlProbe` and closed when the last field using it unmounts. It is
|
|
184
|
-
cheap: `ReqraftLspClient` multiplexes every document over ONE socket per
|
|
185
|
-
endpoint and `initialize` runs once for it, so a probe is one extra
|
|
186
|
-
`didOpen` plus one server-side session — not a connection. It is still
|
|
187
|
-
shared rather than per-field, because a form with forty expression-capable
|
|
188
|
-
options would otherwise open forty sessions to ask the same question.
|
|
189
|
-
|
|
190
|
-
The document binds NO provider context; verified live, a context-less
|
|
191
|
-
`didOpen` still builds a session that `dpql/parse` answers on. It sends no
|
|
192
|
-
`target_type` either: detection asks whether the text is an expression, not
|
|
193
|
-
whether it is the right type — a mismatch is something to show the author
|
|
194
|
-
inside the editor, never a reason to refuse to open it. A probe never
|
|
195
|
-
throws; an unreachable instance simply leaves the typed text alone.
|
|
196
|
-
|
|
197
|
-
## Return-type checking
|
|
198
|
-
|
|
199
|
-
*Added 2026-09-06. As-built.*
|
|
200
|
-
|
|
201
|
-
`dpql/parse` has always been able to answer "can this expression's result
|
|
202
|
-
satisfy type X?" — it takes a `target_type` and returns `inferred_type`,
|
|
203
|
-
`type_compatible`, `auto_coercible` and a `suggested_fix`. Nothing in the
|
|
204
|
-
front end ever sent one, so it never answered.
|
|
205
|
-
|
|
206
|
-
`ExpressionField` now sends the field's own type with every parse, and
|
|
207
|
-
shows what comes back. Three outcomes, not two:
|
|
208
|
-
|
|
209
|
-
| the expression | shown |
|
|
210
|
-
|---|---|
|
|
211
|
-
| already fits | nothing |
|
|
212
|
-
| converts, and the conversion is TOTAL (a number used as text) | nothing |
|
|
213
|
-
| converts, but the conversion may FAIL (text used as a number) | a warning, with the conversion offered |
|
|
214
|
-
| cannot convert at all | a danger message, with the conversion offered |
|
|
215
|
-
|
|
216
|
-
The middle row is why the server grew `coercion_may_fail`: `canAutoCoerce()`
|
|
217
|
-
admits both kinds, and reporting a conversion that cannot fail is what
|
|
218
|
-
teaches authors to ignore the reports that matter.
|
|
219
|
-
|
|
220
|
-
`auto` and `any` are never sent as a target — they accept anything, so the
|
|
221
|
-
answer would always be "compatible" and the round trip would buy nothing. A
|
|
222
|
-
field offering a CHOICE of return types sends nothing either, rather than
|
|
223
|
-
asking about one of them arbitrarily.
|
|
224
|
-
|
|
225
|
-
**What the field cannot decide.** Whether text really denotes a number
|
|
226
|
-
depends on the text, which does not exist until the expression runs. So the
|
|
227
|
-
warning is a warning, not a refusal, and the value is checked again
|
|
228
|
-
server-side at run time — see `design/test-interface-object.md` in the qorus
|
|
229
|
-
repo. For that to be possible the FormEngine's stored envelope carries the
|
|
230
|
-
field's `type` beside `is_expression` and the AST, which is the type the
|
|
231
|
-
author was shown.
|
|
232
|
-
|
|
233
|
-
The same analysis lives in two server handlers (the LSP's `dpql/parse` and
|
|
234
|
-
the Creator WS equivalent); both were changed together. Deduplicating them
|
|
235
|
-
is a separate cleanup.
|
|
236
|
-
|
|
237
|
-
## Out of scope
|
|
238
|
-
|
|
239
|
-
- `server_expression_handling` server-function-vs-qorus-function
|
|
240
|
-
filtering subtleties (port if a consumer needs them).
|
|
241
|
-
- The AI-assistance button qorus-ide's builder has.
|
|
242
|
-
- Wiring specific consumers (alert-rule editor lives in qorus-ide).
|
|
243
|
-
|
|
244
|
-
## Migration impact
|
|
245
|
-
|
|
246
|
-
- Purely additive: a new opt-in field capability + new files. Fields
|
|
247
|
-
without `supports_expressions` are unchanged.
|
|
248
|
-
- Stacks on the uncommitted AutoFormField / FormField / FormEngine work
|
|
249
|
-
from the field-migration batch — must land/verify alongside it.
|
|
250
|
-
|
|
251
|
-
## Status
|
|
252
|
-
|
|
253
|
-
**Design locked 2026-06-09.** Server contract verified live. Scope: both
|
|
254
|
-
modes + Explain, attached at `TemplateField`, operands via
|
|
255
|
-
`AutoFormField`. Explain transport is an open server decision held behind
|
|
256
|
-
`useRenderExpression` and does not gate implementation. Revisions require
|
|
257
|
-
a "Revised <date>" note per the repo workflow.
|