In Anytype and Notion, “toggle” is currently implemented as a type of list. This means I can only ever have the default text size for a toggle and it creates a needlessly limited use case. In other words, the utility of the collapse function is not limited to list-based uses. The ability to collapse contents is extremely useful and would ideally be a feature of all (or most) block types, in my opinion.
If you look at other systems that use blocks, such as Roam, every block can be collapsed. This is a good example, however we do not want everything to be an “outline” (set of bullet points) as it is in Roam. That’s fine, Anytype already works this way, everything is a block, and blocks can be nested (parent-child) without being “bullet points”. So simply add toggle state to block controls would work well in the existing system, along with a visual indicator when a block is collapsed and has contents inside.
You can also reference Fibery which has a collapse state for Headers, which is at least more useful than only having a list-type toggle, in my view. So in Fibery you can construct well-demarcated documents using different sizes of headers, and optionally collapse them to create a clean, expandable document, kind of like an interactive Table of Contents. It’s a really nice feature to have.
In Fibery the toggle simply appears to the left of the block contents when you mouse-over, just like Anytype block controls currently do. This is a good way to handle it as it minimizes distracting controls, while still providing the collapse option for relevant blocks. Here is an example: