Hi Bolaji Ayodeji Reusable components mean any codebase or any project can take and use it as is, without any string attached or complexity. That said, a reusable component is pretty isolated itself so that it will be generic enough. It's a good practice to build them in isolation with Storybook, assuming all the specs are well given :). Building in isolation means you have the component at the most basic form, and you can test out its functionality or behavior in different situation, then understanding if there is any need to modify for better coverage. Building in the regular way is also good, but you may face complexity if the component is not well structured and extracting the component to use in a different project can be a difficult task.
I always start with Storybook, as a way to organize my components and check if I miss any use case it may have. There are a lot of benefits - it helps us as front-end developers to be more organized, do a better architecture of our own design system or project since we have to list down what components we need. Also it avoids code duplication, and most important, you can find the most common potential bugs almost immediately without waiting for it to be in actual use.
But again, don't make it too isolated (especially for CSS) or else it will be not reusable at all :).