     open func calculateIntrinsicContentSize() -> CGSize {
         
         let maxTextViewSize = CGSize(width: inputTextView.bounds.width, height: .greatestFiniteMagnitude)
-        var heightToFit = inputTextView.sizeThatFits(maxTextViewSize).height.rounded()
-        if heightToFit >= maxHeight {
+        let inputTextViewHeight = inputTextView.sizeThatFits(maxTextViewSize).height.rounded()
+        var heightToFit: CGFloat = inputBarMinusTextViewHeight
+        
+        if inputTextViewHeight >= maxHeight {
             if !isOverMaxTextViewHeight {
                 textViewHeightAnchor?.isActive = true
                 inputTextView.isScrollEnabled = true
                 isOverMaxTextViewHeight = true
             }
-            heightToFit = maxHeight
+            heightToFit += maxHeight
         } else {
             if isOverMaxTextViewHeight {
                 textViewHeightAnchor?.isActive = false

                isOverMaxTextViewHeight = false
                inputTextView.invalidateIntrinsicContentSize()
            }
        }
        return CGSize(width: bounds.width, height: heightToFit)
    }

        }
    }
    
    private var inputBarMinusTextViewHeight: CGFloat {
        return topStackViewPadding.top + padding.top + textViewPadding.bottom + padding.bottom + topStackView.bounds.height + bottomStackView.bounds.height
    }
    
    /// The fixed widthAnchor constant of the leftStackView
    public private(set) var leftStackViewWidthConstant: CGFloat = 0 {
        didSet {
