enhance(ripple): adds support for non-fixed tabs

Closes #825.
Closes #460.
`state.pageCount` was removed during this rewrite.