I don’t think there is an easy way if you are working for your clients or your store. It takes a full page if I have to write all steps.
The brief process:
- Create an alternate template for a page or product (depending on your needs)
- Use a for-loop to show all products for selection. This grid view should be similar to your collection page
- When the customers select all items in the bundle, use the cart ajax API to add the selected items to the cart
- Basically, this is done. If you only want a bundle SKU appearing in the cart, then you have to use the metafield of the cart transform API. The metafield helps to construct a relationship between the parent variant and the child variants (the components) You may have to refer to the official docs to set the metafields.
My app, BYOB can also help as well.