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

Closes #825.
Closes #460.
I'm looking into refactoring this now.  I initially used 1-based numbers because that was what `pagesCount` was using; however, I think 0-based is likely the way to go - especially now that `pagesCount` has been fully factored out.