When your components are specifically designed to work together, there is a conventional method for passing data within a component hierarchy:
https://vuejs.org/guide/components/provide-inject
This approach offers more flexibility compared to using a store or shared module variable (as suggested by Nobsyde), as you can easily swap the topmost component with another one that provides the same data, allowing all descendant components to interact seamlessly. It's essential for components to agree on what data they will share through injection.
You have the option to set default values for injected data, enabling your components to function independently from the hierarchy or adjust their behavior based on the provided data. This makes your components context-sensitive.
An alternative method to facilitate data sharing among sibling components is through scoped slots:
How to use data from one component in another component vuejs