From 1a66b3fb351f61c94a6e3f0217fe1c0456917d44 Mon Sep 17 00:00:00 2001 From: Carlota Soto Date: Sun, 16 Aug 2026 16:41:47 -0700 Subject: [PATCH 1/6] Refresh Solutions main nav with new use-case links Point Solutions at the new use-case pages and Platforms copy, and drop the old Serverless App / Multi-TB / Dev-Tests entries. --- src/constants/menus.js | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/constants/menus.js b/src/constants/menus.js index 4d2696192e..2e091411fe 100644 --- a/src/constants/menus.js +++ b/src/constants/menus.js @@ -74,39 +74,39 @@ export default { title: 'Use cases', items: [ { - title: 'Serverless App', - to: `${LINKS.useCases}/serverless-apps`, - description: 'Autoscale with traffic', + title: 'Full-stack apps', + to: `${LINKS.useCases}/full-stack-apps`, + description: 'Deploy backends via your agent', }, { - title: 'Multi-TB', - to: `${LINKS.useCases}/multi-tb`, - description: 'Scale and restore instantly', + title: 'Branching workflows', + to: `${LINKS.useCases}/branching-workflows`, + description: 'Simplify DB ops to ship faster & safer', }, - { - title: 'Database per tenant', - to: `${LINKS.useCases}/database-per-tenant`, - description: 'Data isolation without overhead', - }, - ], - }, - { - title: 'Build & operate', - items: [ { title: 'Platforms', to: LINKS.platforms, - description: 'Offer Postgres for your users', + description: 'Deploy isolated backends for your end users', }, { - title: 'Dev/Tests', - to: `${LINKS.useCases}/dev-test`, - description: 'Production-like environment', + title: 'Bursty workloads', + to: `${LINKS.useCases}/bursty-workloads`, + description: 'Avoid overprovisioning & optimize performance', }, + ], + }, + { + title: '\u00a0', + items: [ { title: 'Agents', to: `${LINKS.useCases}/ai-agents`, - description: 'Build full-stack AI agents', + description: 'Infra for app generation agents', + }, + { + title: 'Large databases', + to: `${LINKS.useCases}/large-databases`, + description: 'Restore & replicate your DB in seconds', }, ], }, From f799ff0b0c2fb4390a999cbb1d75b42f37ec05b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?carlota=E2=98=80=EF=B8=8F?= <82476502+carlotas19@users.noreply.github.com> Date: Sun, 16 Aug 2026 16:44:50 -0700 Subject: [PATCH 2/6] Update description for Branching workflows menu --- src/constants/menus.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/constants/menus.js b/src/constants/menus.js index 2e091411fe..1d6dc2de49 100644 --- a/src/constants/menus.js +++ b/src/constants/menus.js @@ -81,7 +81,7 @@ export default { { title: 'Branching workflows', to: `${LINKS.useCases}/branching-workflows`, - description: 'Simplify DB ops to ship faster & safer', + description: 'Simplify operations to ship faster & safer', }, { title: 'Platforms', From b3165ea252ef701bf68f3f5db01434fe779c01ce Mon Sep 17 00:00:00 2001 From: Carlota Soto Date: Sun, 16 Aug 2026 16:48:56 -0700 Subject: [PATCH 3/6] Reorder Use cases nav columns and rename Solutions tab Two equal columns (apps/workflows/bursty and agents/platforms/large DBs), and rename the header tab to Use cases. --- src/constants/menus.js | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/constants/menus.js b/src/constants/menus.js index 1d6dc2de49..08aa183cfa 100644 --- a/src/constants/menus.js +++ b/src/constants/menus.js @@ -68,10 +68,9 @@ export default { ], }, { - text: 'Solutions', + text: 'Use cases', sections: [ { - title: 'Use cases', items: [ { title: 'Full-stack apps', @@ -83,11 +82,6 @@ export default { to: `${LINKS.useCases}/branching-workflows`, description: 'Simplify operations to ship faster & safer', }, - { - title: 'Platforms', - to: LINKS.platforms, - description: 'Deploy isolated backends for your end users', - }, { title: 'Bursty workloads', to: `${LINKS.useCases}/bursty-workloads`, @@ -96,13 +90,17 @@ export default { ], }, { - title: '\u00a0', items: [ { title: 'Agents', to: `${LINKS.useCases}/ai-agents`, description: 'Infra for app generation agents', }, + { + title: 'Platforms', + to: LINKS.platforms, + description: 'Deploy isolated backends for your end users', + }, { title: 'Large databases', to: `${LINKS.useCases}/large-databases`, From fa468cf24450cd1bc2343a2d9e3ac6d8a4e640ef Mon Sep 17 00:00:00 2001 From: Carlota Soto Date: Mon, 17 Aug 2026 11:05:52 -0700 Subject: [PATCH 4/6] Add Deploy at scale feature cards to Solutions nav Restore the Solutions tab with a Use cases column and illustrated Agents/Platforms cards under Deploy at scale. --- .../shared/header/menu-feature-cards/index.js | 3 + .../menu-feature-cards/menu-feature-cards.jsx | 163 ++++++++++++++++++ .../shared/header/mobile-menu/mobile-menu.jsx | 41 +++-- .../shared/header/submenu/submenu.jsx | 68 +++++--- src/constants/menus.js | 22 ++- 5 files changed, 243 insertions(+), 54 deletions(-) create mode 100644 src/components/shared/header/menu-feature-cards/index.js create mode 100644 src/components/shared/header/menu-feature-cards/menu-feature-cards.jsx diff --git a/src/components/shared/header/menu-feature-cards/index.js b/src/components/shared/header/menu-feature-cards/index.js new file mode 100644 index 0000000000..2b641f20df --- /dev/null +++ b/src/components/shared/header/menu-feature-cards/index.js @@ -0,0 +1,3 @@ +import MenuFeatureCards from './menu-feature-cards'; + +export default MenuFeatureCards; diff --git a/src/components/shared/header/menu-feature-cards/menu-feature-cards.jsx b/src/components/shared/header/menu-feature-cards/menu-feature-cards.jsx new file mode 100644 index 0000000000..313c6d9370 --- /dev/null +++ b/src/components/shared/header/menu-feature-cards/menu-feature-cards.jsx @@ -0,0 +1,163 @@ +import PropTypes from 'prop-types'; + +import Link from 'components/shared/link'; +import ArrowTopRightIcon from 'icons/arrow-right.inline.svg'; +import { cn } from 'utils/cn'; + +const DatabaseIcon = ({ className }) => ( + + + + + +); + +DatabaseIcon.propTypes = { + className: PropTypes.string, +}; + +const NeonMark = ({ className }) => ( + + + + +); + +NeonMark.propTypes = { + className: PropTypes.string, +}; + +const AgentsGraphic = () => ( +
+ + + + + + + +
+ + + +
+
+); + +const PlatformsGraphic = () => ( +
+ {[ + false, + true, + false, + true, + false, + false, + false, + false, + true, + ].map((isHighlighted, index) => ( + + ))} +
+); + +const GRAPHICS = { + agents: AgentsGraphic, + platforms: PlatformsGraphic, +}; + +const MenuFeatureCards = ({ + items, + linkProps: { className, ...linkProps } = {}, + className: wrapperClassName, +}) => ( +
    + {items.map(({ title, description, to, isExternal, graphic }) => { + const Graphic = GRAPHICS[graphic]; + + return ( +
  • + + {Graphic && } +
    +

    + {title} + +

    +

    + {description} +

    +
    + +
  • + ); + })} +
+); + +MenuFeatureCards.propTypes = { + items: PropTypes.arrayOf( + PropTypes.shape({ + title: PropTypes.string.isRequired, + description: PropTypes.string, + to: PropTypes.string.isRequired, + isExternal: PropTypes.bool, + graphic: PropTypes.oneOf(['agents', 'platforms']), + }) + ).isRequired, + linkProps: Link.propTypes, + className: PropTypes.string, +}; + +export default MenuFeatureCards; diff --git a/src/components/shared/header/mobile-menu/mobile-menu.jsx b/src/components/shared/header/mobile-menu/mobile-menu.jsx index 8ad99bff08..82b20d7a64 100644 --- a/src/components/shared/header/mobile-menu/mobile-menu.jsx +++ b/src/components/shared/header/mobile-menu/mobile-menu.jsx @@ -16,6 +16,7 @@ import { cn } from 'utils/cn'; import Burger from '../burger'; import MenuBanner from '../menu-banner'; +import MenuFeatureCards from '../menu-feature-cards'; const ANIMATION_DURATION = 0.2; @@ -60,31 +61,35 @@ const MobileMenuItem = ({ text, to, sections, ...otherProps }) => { className="flex gap-x-3.5 md:flex-col md:gap-y-9" >
    - {sections.map(({ title, items }, index) => ( + {sections.map(({ title, items, variant }, index) => (
  • {title && (

    {title}

    )} -
      - {items.map(({ title, description, to, isExternal }) => ( -
    • - - - {title} - + {variant === 'cards' ? ( + + ) : ( +
        + {items.map(({ title, description, to, isExternal }) => ( +
      • + + + {title} + - {description} - -
      • - ))} -
      + {description} + +
    • + ))} +
    + )}
  • ))}
diff --git a/src/components/shared/header/submenu/submenu.jsx b/src/components/shared/header/submenu/submenu.jsx index e43004cb54..c6d75c1320 100644 --- a/src/components/shared/header/submenu/submenu.jsx +++ b/src/components/shared/header/submenu/submenu.jsx @@ -6,6 +6,7 @@ import MENUS from 'constants/menus.js'; import { cn } from 'utils/cn'; import MenuBanner from '../menu-banner'; +import MenuFeatureCards from '../menu-feature-cards'; const Submenu = ({ activeMenuIndex, @@ -56,7 +57,7 @@ const Submenu = ({ size="1920" >
    - {sections.map(({ title, items }, sectionIndex) => ( + {sections.map(({ title, items, variant }, sectionIndex) => (
  • {title && ( )} -
      - {items?.map(({ title, description, to, isExternal }) => ( -
    • - - - {title} - - {description} - -
    • - ))} -
    + {variant === 'cards' ? ( + + ) : ( +
      + {items?.map(({ title, description, to, isExternal }) => ( +
    • + + + {title} + + {description} + +
    • + ))} +
    + )}
  • ))}
diff --git a/src/constants/menus.js b/src/constants/menus.js index 08aa183cfa..8d72b7f4d1 100644 --- a/src/constants/menus.js +++ b/src/constants/menus.js @@ -68,9 +68,10 @@ export default { ], }, { - text: 'Use cases', + text: 'Solutions', sections: [ { + title: 'Use cases', items: [ { title: 'Full-stack apps', @@ -80,31 +81,36 @@ export default { { title: 'Branching workflows', to: `${LINKS.useCases}/branching-workflows`, - description: 'Simplify operations to ship faster & safer', + description: 'Simplify DB ops to ship faster & safer', }, { title: 'Bursty workloads', to: `${LINKS.useCases}/bursty-workloads`, description: 'Avoid overprovisioning & optimize performance', }, + { + title: 'Large databases', + to: `${LINKS.useCases}/large-databases`, + description: 'Restore & replicate your DB in seconds', + }, ], }, { + title: 'Deploy at scale', + variant: 'cards', items: [ { title: 'Agents', to: `${LINKS.useCases}/ai-agents`, - description: 'Infra for app generation agents', + description: + 'Infra for app generation agents - used by Replit Agent, v0, and Databutton', + graphic: 'agents', }, { title: 'Platforms', to: LINKS.platforms, description: 'Deploy isolated backends for your end users', - }, - { - title: 'Large databases', - to: `${LINKS.useCases}/large-databases`, - description: 'Restore & replicate your DB in seconds', + graphic: 'platforms', }, ], }, From c7bfed9df9840a27bbe7208b6adc5cc76f07620b Mon Sep 17 00:00:00 2001 From: Carlota Soto Date: Mon, 17 Aug 2026 11:16:50 -0700 Subject: [PATCH 5/6] Balance Solutions nav columns and simplify Agents copy Stretch the Deploy at scale cards so they end level with the Use cases list, and reference Replit and v0 generically. --- .../menu-feature-cards/menu-feature-cards.jsx | 25 ++++++++----------- .../shared/header/mobile-menu/mobile-menu.jsx | 2 +- .../shared/header/submenu/submenu.jsx | 6 ++++- src/constants/menus.js | 3 +-- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/components/shared/header/menu-feature-cards/menu-feature-cards.jsx b/src/components/shared/header/menu-feature-cards/menu-feature-cards.jsx index 313c6d9370..b8910e18b4 100644 --- a/src/components/shared/header/menu-feature-cards/menu-feature-cards.jsx +++ b/src/components/shared/header/menu-feature-cards/menu-feature-cards.jsx @@ -75,19 +75,11 @@ const AgentsGraphic = () => ( ); +const PLATFORM_TILES = [false, true, false, true, false, false, false, false, true]; + const PlatformsGraphic = () => (
- {[ - false, - true, - false, - true, - false, - false, - false, - false, - true, - ].map((isHighlighted, index) => ( + {PLATFORM_TILES.map((isHighlighted, index) => ( ( -
    +
      {items.map(({ title, description, to, isExternal, graphic }) => { const Graphic = GRAPHICS[graphic]; @@ -117,9 +114,9 @@ const MenuFeatureCards = ({
    • { >
        {sections.map(({ title, items, variant }, index) => ( -
      • +
      • {title && (

        {title} diff --git a/src/components/shared/header/submenu/submenu.jsx b/src/components/shared/header/submenu/submenu.jsx index c6d75c1320..2f4f7ccc0f 100644 --- a/src/components/shared/header/submenu/submenu.jsx +++ b/src/components/shared/header/submenu/submenu.jsx @@ -58,7 +58,11 @@ const Submenu = ({ >
          {sections.map(({ title, items, variant }, sectionIndex) => ( -
        • +
        • {title && ( Date: Mon, 17 Aug 2026 11:32:28 -0700 Subject: [PATCH 6/6] Fix Agents nav copy: used by, not used for --- src/constants/menus.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/constants/menus.js b/src/constants/menus.js index 7a7b00ce71..cf477d8b10 100644 --- a/src/constants/menus.js +++ b/src/constants/menus.js @@ -102,7 +102,7 @@ export default { { title: 'Agents', to: `${LINKS.useCases}/ai-agents`, - description: 'Infra for app generation agents - used for Replit, v0, and others', + description: 'Infra for app generation agents - used by Replit, v0, and others', graphic: 'agents', }, {