private Shape getInnerShape(float lw, float bw) {
        Path2D shape = new Path2D.Float();
        int w = getWidth() - JBUIScale.scale(1);
        int h = getHeight() - JBUIScale.scale(1);
        float arc = COMPONENT_ARC.getFloat();
        arc = arc > bw + lw ? arc - bw - lw : 0.0f;

        switch (direction) {
          case SOUTH -> {
            shape.moveTo(lw, 0);
            shape.lineTo(w - bw - lw, 0);
            shape.lineTo(w - bw - lw, h - bw - lw - arc);
            shape.quadTo(w - bw - lw, h - bw - lw, w - bw - lw - arc, h - bw - lw);
            shape.lineTo(lw, h - bw - lw);
            shape.closePath();
          }
          case NORTH -> {
            shape.moveTo(lw, bw + lw);
            shape.lineTo(w - bw - lw - arc, bw + lw);
            shape.quadTo(w - bw - lw, bw + lw, w - bw - lw, bw + lw + arc);
            shape.lineTo(w - bw - lw, h);
            shape.lineTo(lw, h);
            shape.closePath();
          }
          default -> {}
        }
        return shape;
      }
private Shape getInnerShape(float lw, float bw)