hoverUtils.enter()}
- onMouseLeave={() => hoverUtils.leave()}
- >
+
hoverUtils.enter()}
+ onMouseLeave={() => {
+ // Don't collapse on mouse leave if marketplace is open
+ if (!showMarketplace()) {
+ hoverUtils.leave()
+ }
+ }}
>
-
- {(plugin) => {
- let pluginHeading: HTMLHeadingElement | undefined
-
- createEffect(() => {
- if (pluginHeading) {
- typeof plugin.name === 'string'
- ? (pluginHeading.textContent = plugin.name)
- : plugin.name(pluginHeading, theme())
- }
- })
-
- const isActive = createMemo(() =>
- activePlugins().includes(plugin.id!),
- )
-
- return (
+
+
+
+ {(plugin) => {
+ let pluginHeading: HTMLHeadingElement | undefined
+
+ createEffect(() => {
+ if (pluginHeading) {
+ typeof plugin.name === 'string'
+ ? (pluginHeading.textContent = plugin.name)
+ : plugin.name(pluginHeading, theme())
+ }
+ })
+
+ const isActive = createMemo(() =>
+ activePlugins().includes(plugin.id!),
+ )
+
+ return (
+ handlePluginClick(plugin.id!)}
+ class={clsx(styles().pluginName, {
+ active: isActive(),
+ })}
+ >
+
+
+ )
+ }}
+
+
+
+ {/* Add More Tab - visually distinct */}
+
+
Add More
+
+
+
+
+ {/* Show marketplace if active, otherwise show plugin panels */}
+
+ {(pluginId) => (
{
- toggleActivePlugins(plugin.id!)
+ id={`${PLUGIN_CONTAINER_ID}-${pluginId}`}
+ ref={(el) => {
+ setPluginRefs((prev) => {
+ const updated = new Map(prev)
+ updated.set(pluginId, el)
+ return updated
+ })
}}
- class={clsx(styles().pluginName, {
- active: isActive(),
- })}
- >
-
-
- )
- }}
-
-
+ class={styles().pluginsTabContent}
+ />
+ )}
+
+ }
+ >
+