Frontend
attik-frontend/src/app/tools/agreements/templates/[id]/AgreementTextBlock.tsx, which uses TipTapWithVariables for the rich-text field. The editor receives content (TipTap/ProseMirror JSONContent) and persists it via onContentChange; block UI and wrapper are in AgreementBlockWrapper.tsx (e.g. mb-2 space-y-4 for block spacing).attik-frontend/src/components/tiptap/TipTapWithVariables.tsx, which uses TipTap with a Placeholder extension (emptyEditorClass, emptyNodeClass), default content, and editorProps. ProseMirror/TipTap often keeps a trailing empty paragraph or similar node so the doc always has a valid structure; that can both prevent deleting the "last" line and render as extra space.AgreementTextBlock.tsx via TextContentPreview and renderTipTapToHtml; the client-facing agreement view uses AgreementContent.tsx. Any fix should ensure that stored content does not include unnecessary trailing empty nodes that produce visible gaps, and/or that the editor allows users to remove the trailing line without leaving a visible gap in the final contract.Backend
content.jsonContent) on agreement template blocks; the backend serves and persists blocks via routes such as agreement/template/blocks. No change to the stored schema is required unless the fix involves normalizing or trimming content on save.Decision needed
attik-frontend/src/app/tools/agreements/templates/[id]/AgreementBuilderBase.tsxattik-frontend/src/app/tools/agreements/templates/[id]/AgreementTextBlock.tsx, AgreementBlockWrapper.tsxattik-frontend/src/components/tiptap/TipTapWithVariables.tsxPlease authenticate to join the conversation.
Planned
New Features
2 months ago
Linear
Get notified by email when there are changes.
Planned
New Features
2 months ago
Linear
Get notified by email when there are changes.