In your button components. there are inline styles and an over-arching span that's unnecessary for creating an inline block. Also leave the positioning to the the base page inheriting the component to prevent scalability problems.
-When you click 'save' show a loading icon.
-Look into having a response from your api that shows that it's saved.
-Have a graceful error that says "${book.title} could not be saved. Please try again later'
In your button components. there are inline styles and an over-arching span that's unnecessary for creating an inline block. Also leave the positioning to the the base page inheriting the component to prevent scalability problems.