diff --git a/web/src/app/home/components/home-sidebar/HomeSidebar.tsx b/web/src/app/home/components/home-sidebar/HomeSidebar.tsx index 32be9b1f6..ebe5e9b3e 100644 --- a/web/src/app/home/components/home-sidebar/HomeSidebar.tsx +++ b/web/src/app/home/components/home-sidebar/HomeSidebar.tsx @@ -543,33 +543,19 @@ function NavItems({ if (config.id === 'add-extension' && !canManageResources) { return null; } - const quota = - config.id === 'add-extension' - ? quotaStatus.extensions - : UNLIMITED_QUOTA; // Non-entity entries (e.g. monitoring and the extension market) render as plain links. return ( - onChildClick(config)} + tooltip={config.name} > - { - if (!quota.disabled) onChildClick(config); - }} - disabled={quota.disabled} - aria-disabled={quota.disabled} - tooltip={quota.disabled ? undefined : config.name} - > - {config.icon} - - {config.name} - - - + {config.icon} + + {config.name} + + ); } diff --git a/web/src/app/home/components/workspace-quota/WorkspaceQuotaTooltip.tsx b/web/src/app/home/components/workspace-quota/WorkspaceQuotaTooltip.tsx index 68dac1d20..e12a95b7b 100644 --- a/web/src/app/home/components/workspace-quota/WorkspaceQuotaTooltip.tsx +++ b/web/src/app/home/components/workspace-quota/WorkspaceQuotaTooltip.tsx @@ -39,7 +39,7 @@ export function WorkspaceQuotaTooltip({ {children} - + {message} diff --git a/web/src/app/home/plugins/components/plugin-market/plugin-market-card/PluginMarketCardComponent.tsx b/web/src/app/home/plugins/components/plugin-market/plugin-market-card/PluginMarketCardComponent.tsx index 062ffb0b8..c4d741ed6 100644 --- a/web/src/app/home/plugins/components/plugin-market/plugin-market-card/PluginMarketCardComponent.tsx +++ b/web/src/app/home/plugins/components/plugin-market/plugin-market-card/PluginMarketCardComponent.tsx @@ -399,7 +399,7 @@ export default function PluginMarketCardComponent({ {cardContent} - + {installDisabledTooltip} diff --git a/web/tests/e2e/quota-create-actions.spec.ts b/web/tests/e2e/quota-create-actions.spec.ts index eb2771820..3400b33cc 100644 --- a/web/tests/e2e/quota-create-actions.spec.ts +++ b/web/tests/e2e/quota-create-actions.spec.ts @@ -119,7 +119,7 @@ test('quota-reached create actions are disabled and explain the current limit', await expect(botCreate).toBeDisabled(); await expect(pipelineCreate).toBeDisabled(); await expect(knowledgeCreate).toBeDisabled(); - await expect(addExtension).toBeDisabled(); + await expect(addExtension).toBeEnabled(); const botQuotaTrigger = botCreate.locator('..'); await botQuotaTrigger.hover(); @@ -136,7 +136,8 @@ test('quota-reached create actions are disabled and explain the current limit', ), ).toBeVisible(); - await page.goto('/home/add-extension'); + await addExtension.click(); + await expect(page).toHaveURL(/\/home\/add-extension$/); const manualAdd = page.getByRole('button', { name: 'Manual Add' }); await expect(manualAdd).toBeDisabled(); await manualAdd.locator('..').hover(); diff --git a/web/tests/unit/quota-create-actions.test.mjs b/web/tests/unit/quota-create-actions.test.mjs index 628b43ad7..6a2b0fe30 100644 --- a/web/tests/unit/quota-create-actions.test.mjs +++ b/web/tests/unit/quota-create-actions.test.mjs @@ -63,7 +63,13 @@ test('sidebar quota-disables create controls and renders a tooltip', () => { assert.match(tooltip, /limitation\.createDisabledTooltip/); assert.match(tooltip, /limitation\.quotaLoadingTooltip/); assert.match(tooltip, /tabIndex=\{0\}/); + assert.match(tooltip, /max-w-72 text-left/); + assert.doesNotMatch(tooltip, /text-center/); assert.match(source, /config\.id === 'add-extension'/); + assert.doesNotMatch( + source, + /config\.id === 'add-extension'\s*\?\s*quotaStatus\.extensions/, + ); }); test('add-extension page disables all install entry points at the quota', () => { @@ -80,6 +86,8 @@ test('add-extension page disables all install entry points at the quota', () => assert.match(card, /installDisabled/); assert.match(card, /disabled=\{installDisabled\}/); assert.match(card, /TooltipContent/); + assert.match(card, /max-w-72 text-left/); + assert.doesNotMatch(card, /max-w-72 text-center/); assert.match(recommendations, /installDisabled=\{installDisabled\}/); assert.match( recommendations,