Skip to content

feat(onboarding): "next quest" cards#7941

Open
talissoncosta wants to merge 5 commits into
mainfrom
feat/onboarding-next-quest-cards-7739
Open

feat(onboarding): "next quest" cards#7941
talissoncosta wants to merge 5 commits into
mainfrom
feat/onboarding-next-quest-cards-7739

Conversation

@talissoncosta

@talissoncosta talissoncosta commented Jul 2, 2026

Copy link
Copy Markdown
Contributor
  • I have read the Contributing Guide.
  • I have added information to docs/ if required so people know about the feature.
  • I have filled in the "Changes" section below.
  • I have filled in the "How did you test this code" section below.

Changes

Closes #7739

The three "next quest" cards on the onboarding flow (gradual rollout, experiment, remote config) are now actionable. Each one deep-links to the flag's real configuration, nothing faked:

  • Gradual rollout → the flag's segment overrides tab
  • Experiment → the environment's experiments page
  • Remote config → the flag's value tab

The cards stay locked and dimmed until the app connects, matching the flags table above them.

Also folded in two small fixes for the cards: the rollout deep-link now uses the slugified tab label so it resolves to the right tab, and the cards' secondary text no longer renders gold (a Bootstrap .text-secondary collision).

Review follow-ups: the cn import alignment (Wadii) lands here; the connect-panel, spacing and inline-edit polish (Kyle, Wadii, Matt) is in the stacked #7989.

How did you test this code?

Added e2e coverage in onboarding-tests.pw.ts: it asserts the cards are locked before the first evaluation, and that once connected each card deep-links to the right destination (segment overrides tab, value tab, experiments page).

Manually:

  1. Enable onboarding_quickstart_flow, sign up, land on /getting-started.
  2. Before connecting, confirm the next-quest cards are dimmed with an "Unlocks after your first evaluation" note.
  3. Force the connected state via /getting-started?connected.
  4. Click each card and confirm it lands on the flag's segment overrides tab, the flag's value tab, and the experiments page respectively.

@talissoncosta talissoncosta requested a review from a team as a code owner July 2, 2026 12:33
@talissoncosta talissoncosta requested review from kyle-ssg and removed request for a team July 2, 2026 12:33
@vercel

vercel Bot commented Jul 2, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
flagsmith-frontend-preview Ready Ready Preview, Comment Jul 10, 2026 5:51pm
flagsmith-frontend-staging Ready Ready Preview, 💬 1 unresolved Jul 10, 2026 5:51pm
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
docs Ignored Ignored Preview Jul 10, 2026 5:51pm

Request Review

@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Docker builds report

Image Build Status Security report
ghcr.io/flagsmith/flagsmith-api-test:pr-7941 Finished ✅ Skipped
ghcr.io/flagsmith/flagsmith-e2e:pr-7941 Finished ✅ Skipped
ghcr.io/flagsmith/flagsmith:pr-7941 Finished ✅ Results
ghcr.io/flagsmith/flagsmith-api:pr-7941 Finished ✅ Results
ghcr.io/flagsmith/flagsmith-private-cloud:pr-7941 Finished ✅ Results
ghcr.io/flagsmith/flagsmith-frontend:pr-7941 Finished ✅ Results

@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Playwright Test Results (oss - depot-ubuntu-latest-16)

passed  4 passed

Details

stats  4 tests across 3 suites
duration  10.7 seconds
commit  87645ed
info  🔄 Run: #18027 (attempt 1)

Playwright Test Results (oss - depot-ubuntu-latest-arm-16)

passed  4 passed

Details

stats  4 tests across 3 suites
duration  18.5 seconds
commit  87645ed
info  🔄 Run: #18027 (attempt 1)

Playwright Test Results (private-cloud - depot-ubuntu-latest-16)

passed  7 passed

Details

stats  7 tests across 6 suites
duration  57.3 seconds
commit  87645ed
info  🔄 Run: #18027 (attempt 1)

Playwright Test Results (private-cloud - depot-ubuntu-latest-arm-16)

passed  6 passed

Details

stats  6 tests across 4 suites
duration  1 minute, 2 seconds
commit  87645ed
info  🔄 Run: #18027 (attempt 1)

Playwright Test Results (oss - depot-ubuntu-latest-16)

passed  5 passed

Details

stats  5 tests across 4 suites
duration  33.9 seconds
commit  2a96bc4
info  🔄 Run: #18029 (attempt 1)

Playwright Test Results (oss - depot-ubuntu-latest-arm-16)

passed  6 passed

Details

stats  6 tests across 4 suites
duration  45 seconds
commit  2a96bc4
info  🔄 Run: #18029 (attempt 1)

Playwright Test Results (private-cloud - depot-ubuntu-latest-arm-16)

passed  1 passed

Details

stats  1 test across 1 suite
duration  6.9 seconds
commit  2a96bc4
info  🔄 Run: #18029 (attempt 1)

Playwright Test Results (private-cloud - depot-ubuntu-latest-16)

passed  7 passed

Details

stats  7 tests across 6 suites
duration  42.8 seconds
commit  2a96bc4
info  🔄 Run: #18029 (attempt 1)

Playwright Test Results (oss - depot-ubuntu-latest-16)

passed  1 passed

Details

stats  1 test across 1 suite
duration  16.8 seconds
commit  eb9646f
info  🔄 Run: #18030 (attempt 1)

Playwright Test Results (oss - depot-ubuntu-latest-arm-16)

passed  4 passed

Details

stats  4 tests across 3 suites
duration  45.1 seconds
commit  eb9646f
info  🔄 Run: #18030 (attempt 1)

Playwright Test Results (private-cloud - depot-ubuntu-latest-arm-16)

passed  1 passed

Details

stats  1 test across 1 suite
duration  6.1 seconds
commit  eb9646f
info  🔄 Run: #18030 (attempt 1)

Playwright Test Results (private-cloud - depot-ubuntu-latest-16)

passed  2 passed

Details

stats  2 tests across 2 suites
duration  46.8 seconds
commit  eb9646f
info  🔄 Run: #18030 (attempt 1)

Playwright Test Results (oss - depot-ubuntu-latest-16)

passed  5 passed

Details

stats  5 tests across 4 suites
duration  5.4 seconds
commit  f2c4e9f
info  🔄 Run: #18031 (attempt 1)

Playwright Test Results (oss - depot-ubuntu-latest-arm-16)

passed  4 passed

Details

stats  4 tests across 3 suites
duration  44.8 seconds
commit  f2c4e9f
info  🔄 Run: #18031 (attempt 1)

Playwright Test Results (private-cloud - depot-ubuntu-latest-16)

passed  6 passed

Details

stats  6 tests across 5 suites
duration  6.8 seconds
commit  f2c4e9f
info  🔄 Run: #18031 (attempt 1)

Playwright Test Results (private-cloud - depot-ubuntu-latest-arm-16)

passed  4 passed

Details

stats  4 tests across 3 suites
duration  7.2 seconds
commit  f2c4e9f
info  🔄 Run: #18031 (attempt 1)

Playwright Test Results (oss - depot-ubuntu-latest-16)

passed  4 passed

Details

stats  4 tests across 3 suites
duration  40 seconds
commit  eb9646f
info  🔄 Run: #18032 (attempt 1)

Playwright Test Results (oss - depot-ubuntu-latest-arm-16)

passed  5 passed

Details

stats  5 tests across 4 suites
duration  11.9 seconds
commit  eb9646f
info  🔄 Run: #18032 (attempt 1)

Playwright Test Results (private-cloud - depot-ubuntu-latest-arm-16)

passed  3 passed

Details

stats  3 tests across 2 suites
duration  11.8 seconds
commit  eb9646f
info  🔄 Run: #18032 (attempt 1)

Playwright Test Results (private-cloud - depot-ubuntu-latest-16)

passed  1 passed

Details

stats  1 test across 1 suite
duration  47.1 seconds
commit  eb9646f
info  🔄 Run: #18032 (attempt 1)

Playwright Test Results (oss - depot-ubuntu-latest-16)

passed  4 passed

Details

stats  4 tests across 3 suites
duration  33.9 seconds
commit  12e69c9
info  🔄 Run: #18033 (attempt 1)

Playwright Test Results (oss - depot-ubuntu-latest-arm-16)

passed  4 passed

Details

stats  4 tests across 3 suites
duration  34.9 seconds
commit  12e69c9
info  🔄 Run: #18033 (attempt 1)

Playwright Test Results (private-cloud - depot-ubuntu-latest-arm-16)

passed  6 passed

Details

stats  6 tests across 4 suites
duration  1 minute, 1 second
commit  12e69c9
info  🔄 Run: #18033 (attempt 1)

Playwright Test Results (private-cloud - depot-ubuntu-latest-16)

passed  2 passed

Details

stats  2 tests across 2 suites
duration  47.2 seconds
commit  12e69c9
info  🔄 Run: #18033 (attempt 1)

Playwright Test Results (oss - depot-ubuntu-latest-16)

passed  4 passed

Details

stats  4 tests across 3 suites
duration  35.4 seconds
commit  3292d24
info  🔄 Run: #18169 (attempt 1)

Playwright Test Results (oss - depot-ubuntu-latest-arm-16)

failed  1 failed

Details

stats  1 test across 1 suite
duration  11.6 seconds
commit  3292d24
info  📦 Artifacts: View test results and HTML report
🔄 Run: #18169 (attempt 1)

Failed tests

firefox › tests/onboarding-tests.pw.ts › Onboarding › New user connects via the single-page onboarding flow @oss

### Playwright Test Results (private-cloud - depot-ubuntu-latest-arm-16)

passed  6 passed

Details

stats  6 tests across 4 suites
duration  1 minute, 1 second
commit  3292d24
info  🔄 Run: #18169 (attempt 1)

Playwright Test Results (private-cloud - depot-ubuntu-latest-16)

passed  1 passed

Details

stats  1 test across 1 suite
duration  52.8 seconds
commit  3292d24
info  🔄 Run: #18169 (attempt 1)

Playwright Test Results (oss - depot-ubuntu-latest-arm-16)

passed  5 passed

Details

stats  5 tests across 4 suites
duration  36.1 seconds
commit  3292d24
info  🔄 Run: #18169 (attempt 2)

@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Visual Regression

19 screenshots compared. See report for details.
View full report

talissoncosta and others added 3 commits July 2, 2026 10:53
Add an optional content slot (children), make selected optional, and pass
through className, so SelectableCard can back a navigational card and not just
a selection tile. Additive: existing consumers are unaffected.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The three next-quest cards (gradual rollout, experiment, remote config) are
built on SelectableCard and each deep-links to the flag's real config: rollout
to the segment overrides tab, remote config to the value tab, experiment to
the experiments page. The tab param is the slugified tab label. Locked and
dimmed (inert) until the app connects.

Closes #7739

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add the "Flip it once your app connects" lock affordance beside the Your
flags heading while the toggle is waiting to connect.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Assert the cards are locked before the first evaluation, and that once
connected each one deep-links to the right destination.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@talissoncosta talissoncosta force-pushed the feat/onboarding-next-quest-cards-7739 branch from eb9646f to 12e69c9 Compare July 2, 2026 13:54
@github-actions github-actions Bot added feature New feature or request and removed feature New feature or request labels Jul 2, 2026
@talissoncosta talissoncosta requested review from Zaimwa9 and removed request for kyle-ssg July 2, 2026 14:57
@talissoncosta talissoncosta changed the title feat(onboarding): make the "next quest" cards actionable Onboarding: "next quest" cards Jul 7, 2026
@talissoncosta talissoncosta changed the title Onboarding: "next quest" cards feat(onboarding): "next quest" cards Jul 7, 2026
@kyle-ssg

kyle-ssg commented Jul 8, 2026

Copy link
Copy Markdown
Member

[WIP Feedback] Some of this might just be generic onboarding feedback, I think it looks so good!

Minor: I think this means it's incorrectly always overflow scroll?

image

Let's just replace this with the selected badges, they look really good, though maybe make them fw-semibold

image image

The code here doesnt use useFlagsmith or flagsmith imports

image

i.e.

// App root
import flagsmith from "@flagsmith/flagsmith";
import { FlagsmithProvider, useFlags } from '@flagsmith/flagsmith/react';

export function HomePage() {
  const flags = useFlags(['show_demo_button','banner_size']); // only causes re-render if specified flag values / traits change
  const show_demo_button = flags.show_demo_button.enabled
  const banner_size = flags.banner_size.value
  return (
      <>
        {`show_demo_button: ${show_demo_button}`}
        {`banner_size: ${banner_size}`}
      </>
  );
}
export default function App() {
  return (
      <FlagsmithProvider
          options={{
            environmentID: '2ULH8Sq9WxofQsJQc2Cbeg',
          }}
          flagsmith={flagsmith}>
          <HomePage/>
      </FlagsmithProvider>
  );
}

I think we should reuse what you had and remove codehelp language select

image

@Zaimwa9 Zaimwa9 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have some nits, but I think Kyle's comments are worth addressing, although the last one would be a NIT to me that I let you decide what do with 👍

)

// A value chip: "serve a value, not just on/off".
const RemoteConfigPreview: FC = () => (

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not 100% sure that's where it belongs but i'd add some more margin/padding top here

Image

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Confirmed it's not here :D

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will handle that on a follow up pr

Review nit: align the classnames import name with SelectableCard's.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@talissoncosta

Copy link
Copy Markdown
Contributor Author

Thanks both 🙏

This PR

  • classnames as cn: aligned it with SelectableCard (3292d24).

Follow-up PR (keeping this one focused): the connect step plus the spacing nit.

  • Top spacing on OnboardingNextSteps: will tidy it there.
  • Always scrolling: switched to overflow-x: auto so it only scrolls when it needs to.
  • Language labels: replaced with the selected badges, fw-semibold.
  • React snippet: now uses FlagsmithProvider + useFlags, matching your example.
  • Reuse CodeHelp + drop its language select: the meaty one. CodeHelp is dark-only today, so it needs the shared code theme to go light/dark first (spike in refactor(styles): theme-adaptive shared code theme (.hljs) [spike #6606] #7969). Happy to treat it as a follow-up, as Wadii suggested.

Shout if you'd rather I fold these into this PR instead.

@coderabbitai

coderabbitai Bot commented Jul 10, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Adds a new onboarding next-steps component with three selectable cards and locked-state presentation. Extends selectable cards to support children and custom classes. Integrates connection-aware locking and deep-links to feature configuration or experiments. Adds a lock hint to the flags table, Storybook stories, and Playwright coverage for locked, unlocked, and navigated states.

Estimated code review effort: 3 (Moderate) | ~25 minutes


Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 47402c70-fb6a-4aa4-8054-15dbf89c81fe

📥 Commits

Reviewing files that changed from the base of the PR and between 44206a2 and 3292d24.

📒 Files selected for processing (11)
  • frontend/documentation/pages/onboarding/OnboardingNextSteps.stories.tsx
  • frontend/e2e/tests/onboarding-tests.pw.ts
  • frontend/web/components/base/SelectableCard/SelectableCard.scss
  • frontend/web/components/base/SelectableCard/SelectableCard.tsx
  • frontend/web/components/pages/onboarding/OnboardingFlagsTable/OnboardingFlagsTable.scss
  • frontend/web/components/pages/onboarding/OnboardingFlagsTable/OnboardingFlagsTable.tsx
  • frontend/web/components/pages/onboarding/OnboardingFlow/OnboardingFlow.tsx
  • frontend/web/components/pages/onboarding/OnboardingNextSteps/OnboardingNextSteps.scss
  • frontend/web/components/pages/onboarding/OnboardingNextSteps/OnboardingNextSteps.tsx
  • frontend/web/components/pages/onboarding/OnboardingNextSteps/index.ts
  • frontend/web/components/pages/onboarding/hooks/useOnboardingFlag.ts

@@ -0,0 +1,30 @@
import type { Meta, StoryObj } from 'storybook'

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🌐 Web query:

Does Storybook 10 export Meta and StoryObj types from the bare 'storybook' package, or only from framework packages like @storybook/react?

💡 Result:

In Storybook 10, the Meta and StoryObj types are exported from your specific framework package (e.g., @storybook/react, @storybook/vue3-vite, @storybook/tanstack-react), not from the bare storybook package [1][2][3]. Official documentation and migration guidance consistently instruct developers to import these utility types from the framework-specific package they are using [4][5][6]. This is necessary because these types are generics that require the framework-aware parameter types (such as React, Vue, or TanStack-specific annotations) to provide correct type safety, autocompletion, and inference for your component's props and arguments [4][5][3]. Using imports like import { Meta, StoryObj } from '@storybook/react' (or your respective framework package) ensures that Storybook can correctly map your component's metadata and args to the framework's internal type definitions [3][6].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

printf 'Repository files of interest:\n'
git ls-files | rg '(^|/)(package.json|tsconfig.*|\.storybook/|storybook|OnboardingNextSteps\.stories\.tsx)$'

printf '\nPackage manifests mentioning Storybook:\n'
rg -n '"storybook"|`@storybook`' package.json frontend/package.json .storybook package.json 2>/dev/null || true

printf '\nStorybook-related config files (first 200 lines each if present):\n'
for f in .storybook/main.* .storybook/preview.* frontend/.storybook/main.* frontend/.storybook/preview.*; do
  if [ -f "$f" ]; then
    echo "--- $f ---"
    sed -n '1,200p' "$f"
  fi
done

printf '\nTarget file:\n'
sed -n '1,80p' frontend/documentation/pages/onboarding/OnboardingNextSteps.stories.tsx

Repository: Flagsmith/flagsmith

Length of output: 2002


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo 'package.json'
sed -n '1,220p' package.json 2>/dev/null || true

echo
echo 'frontend/package.json'
sed -n '1,220p' frontend/package.json 2>/dev/null || true

echo
echo 'Storybook config files'
find . -maxdepth 3 \( -path '*/.storybook/*' -o -name 'main.ts' -o -name 'main.js' -o -name 'preview.ts' -o -name 'preview.js' \) | sort | sed -n '1,50p'

echo
echo 'Search for storybook type imports'
rg -n "from 'storybook'|from \"storybook\"|from '`@storybook/`" frontend --glob '*.stories.*' --glob '*.ts' --glob '*.tsx'

Repository: Flagsmith/flagsmith

Length of output: 2002


🌐 Web query:

site:storybook.js.org/docs StoryObj import from 'storybook' Meta StoryObj framework package

💡 Result:

In Storybook, Meta and StoryObj are TypeScript utility types used to type your story files and ensure type safety [1][2]. You should import them from your specific framework's Storybook package, not from a generic 'storybook' package [3][4][5]. Replace 'your-framework' in the import statement with the specific Storybook framework package you are using (e.g., @storybook/react-vite, @storybook/nextjs, @storybook/vue3-vite) [6][1][2]. Example usage in a TypeScript story file: import type { Meta, StoryObj } from '@storybook/your-framework'; import { Button } from './Button'; const meta = { component: Button, } satisfies Meta; export default meta; type Story = StoryObj; export const Primary: Story = { args: { primary: true, }, }; Using these types allows Storybook to infer component metadata and argument types, providing autocompletion and error checking for your stories [1][2]. The satisfies operator is typically used with Meta to associate the component definition with the meta object, which then allows StoryObj to correctly infer the argument types from that meta definition [1][2].

Citations:


Import Meta/StoryObj from the configured Storybook framework package

storybook does not export these types; use the framework package for this project (for example @storybook/react or @storybook/react-vite) so this story type-checks.

Comment on lines +45 to +58
<div className='onboarding-flags__heading d-flex align-items-center gap-2'>
<h3
className='onboarding-flags__title m-0 fw-bold'
id='onboarding-flags-title'
>
Your flags
</h3>
{waiting && (
<span className='onboarding-flags__hint d-flex align-items-center gap-1'>
<Icon name='lock' width={13} />
Flip it once your app connects
</span>
)}
</div>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Keep the hint aligned with every disabled state.

The switch is disabled when togglesReady is false, but this hint only renders while waiting is true. If the app connects before the feature-state query resolves, users see a disabled toggle without an explanation. Use the same lock condition or provide a loading-specific message.

Comment on lines +124 to +140
// Each next-step card deep-links to the flag's real config; nothing faked.
const goToNextStep = (step: OnboardingNextStep) => {
if (projectId === null) {
return
}
const base = `/project/${projectId}/environment/${environmentKey}`
if (step === 'experiment') {
history.push(`${base}/experiments`)
return
}
if (flagId === null) {
return
}
// Tab param is the slugified tab label (see TabMenu/Tabs urlParam).
const tab = step === 'rollout' ? 'segment-overrides' : 'value'
history.push(`${base}/features?feature=${flagId}&tab=${tab}`)
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Do not unlock dependent cards before flagId is ready.

The handler returns without navigating when flagId === null, but Lines [203-205] make the cards interactive as soon as the connection is established. During the flag query, rollout and remote-config cards can therefore look clickable while doing nothing. Include flag readiness in the lock condition, or add per-step loading/disabled handling instead of silently returning.

Also applies to: 203-205

Comment on lines +1 to +5
export { default } from './OnboardingNextSteps'
export type {
OnboardingNextStep,
OnboardingNextStepsProps,
} from './OnboardingNextSteps'

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Use the configured absolute import in this barrel.

Line [1] and the type re-export at Lines [2-5] use a relative path, violating the frontend import-path guideline. Keep consumers importing the component folder, but point this barrel at the implementation through the components/ alias.

Proposed fix
-export { default } from './OnboardingNextSteps'
+export { default } from 'components/pages/onboarding/OnboardingNextSteps/OnboardingNextSteps'
 export type {
   OnboardingNextStep,
   OnboardingNextStepsProps,
-} from './OnboardingNextSteps'
+} from 'components/pages/onboarding/OnboardingNextSteps/OnboardingNextSteps'
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
export { default } from './OnboardingNextSteps'
export type {
OnboardingNextStep,
OnboardingNextStepsProps,
} from './OnboardingNextSteps'
export { default } from 'components/pages/onboarding/OnboardingNextSteps/OnboardingNextSteps'
export type {
OnboardingNextStep,
OnboardingNextStepsProps,
} from 'components/pages/onboarding/OnboardingNextSteps/OnboardingNextSteps'

Source: Coding guidelines

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

Labels

feature New feature or request front-end Issue related to the React Front End Dashboard

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Onboarding: make the "next quest" cards actionable

3 participants