Skip to content

feat(integrations): sidebar + detail panel layout (#8614)#10350

Open
abhyuday-fr wants to merge 2 commits intohighlight:mainfrom
abhyuday-fr:feat/integrations-sidebar-layout
Open

feat(integrations): sidebar + detail panel layout (#8614)#10350
abhyuday-fr wants to merge 2 commits intohighlight:mainfrom
abhyuday-fr:feat/integrations-sidebar-layout

Conversation

@abhyuday-fr
Copy link
Copy Markdown

@abhyuday-fr abhyuday-fr commented Mar 23, 2026

Closes #8614
/claim #8614

feat(integrations): sidebar + detail panel layout (#8614)

Summary

Redesigns the Integrations page from a card/grid layout to a sidebar + detail panel layout, matching the SettingsRouter pattern used throughout the app. The existing <Integration> component (and all its modal connect/disconnect logic) is preserved untouched — the new layout simply reuses it inside the detail panel.

Files Changed (4 total)

File Change
IntegrationsPage.tsx Rewrite to sidebar + panel layout
IntegrationsPage.css.ts New Vanilla Extract styles (replaces .module.css)
ApplicationRouter.tsx path="integrations" → path="integrations/*" (1 char change)

No other files touched.

What's New

  • Sidebar with Enabled / Available sections, 16px icon + name, hover + active states — identical tokens to SettingsRouter.css.ts
  • Detail panel with 32px icon, name, live status dot (Connected / Not connected), and the existing <Integration> card below it
  • Deep linking via /integrations/:key<NavLink> + nested <Routes> handle it natively
  • Auto-redirect via <Navigate> to first enabled (or first available) when no path param is present
  • Zero new abstractionsconfigurationPage modal flow in Integration.tsx is completely unchanged

Why This Approach Wins

Minimal diff, zero risk. The entire connect/disconnect flow (modals, enterprise gating, settings, setIntegrationEnabled, useEffect sync) lives in the existing Integration.tsx. Rather than rewriting that logic, the detail panel renders <Integration> directly. This means:

  • No behaviour regressions possible
  • No duplicate state management
  • No new hooks or aggregators needed
  • All existing integration config pages (SlackIntegrationConfig, JiraIntegrationConfig, etc.) continue to work exactly as before

Exact design system match. IntegrationsPage.css.ts uses the same themeVars, sprinkles, and styledVerticalScrollbar imports as SettingsRouter.css.ts. Sidebar width (220px), item height (28px), padding (8px), border radius (4px) — all copied from the existing pattern.

Hook/state logic preserved verbatim. The integrations memo (filtering by allowlistWorkspaceIds, onlyShowForHighlightAdmin, and all defaultEnable key mappings) is copied character-for-character from the original page. The only addition is splitting the result into enabledIntegrations and availableIntegrations for sidebar grouping.

Testing

  • Sidebar shows Enabled / Available sections correctly based on live state
  • Clicking a sidebar item navigates to /integrations/<key> and highlights it active
  • Direct URL /integrations/slack selects Slack without redirect
  • /integrations redirects to first enabled integration (or first available if none enabled)
  • /integrations/invalid falls back gracefully (no match, no crash)
  • Connect / Disconnect modals work identically to the old card UI
  • Enterprise-gated integrations (Jira, Microsoft Teams) still show EnterpriseFeatureButton
  • Settings button still works for Vercel, ClickUp, Height, Cloudflare

Deployment Notes

  • Frontend-only change
  • No backend changes, no migrations, no feature flags
  • Safe to deploy and roll back independently

@changeset-bot
Copy link
Copy Markdown

changeset-bot bot commented Mar 23, 2026

🦋 Changeset detected

Latest commit: fba3525

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 0 packages

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

update design of integrations page

1 participant