Skip to content

Add new stepper component and polish the design on the use in your ap…#2480

Merged
sarah-inkeep merged 3 commits intomainfrom
polish-use-in-your-app
Mar 3, 2026
Merged

Add new stepper component and polish the design on the use in your ap…#2480
sarah-inkeep merged 3 commits intomainfrom
polish-use-in-your-app

Conversation

@sarah-inkeep
Copy link
Copy Markdown
Contributor

…p modal

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Mar 3, 2026

🦋 Changeset detected

Latest commit: 25adbdf

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

This PR includes changesets to release 9 packages
Name Type
@inkeep/agents-manage-ui Patch
@inkeep/agents-api Patch
@inkeep/agents-cli Patch
@inkeep/agents-core Patch
@inkeep/agents-mcp Patch
@inkeep/agents-sdk Patch
@inkeep/agents-work-apps Patch
@inkeep/ai-sdk-provider Patch
@inkeep/create-agents Patch

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

@vercel
Copy link
Copy Markdown

vercel Bot commented Mar 3, 2026

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

Project Deployment Actions Updated (UTC)
agents-api Ready Ready Preview, Comment Mar 3, 2026 1:02am
agents-docs Ready Ready Preview, Comment Mar 3, 2026 1:02am
agents-manage-ui Ready Ready Preview, Comment Mar 3, 2026 1:02am

Request Review

@pullfrog
Copy link
Copy Markdown
Contributor

pullfrog Bot commented Mar 3, 2026

Introduces a reusable Stepper UI component and refactors the "Use in your app" modal to use it, replacing the previous <ol> list with a cleaner numbered-step layout.

  • agents-manage-ui/src/components/ui/stepper.tsx — new compound component (Stepper, StepperItem, StepperIndicator, StepperContent, StepperTitle, StepperDescription) for vertical step-by-step flows
  • agents-manage-ui/src/components/use-in-your-app-section.tsx — rewrites install/register instructions using the stepper; swaps raw <pre> blocks for CopyableSingleLineCode and Streamdown; removes docsPath/docsLabel props (moved to modal)
  • agents-manage-ui/src/components/use-in-your-app-modal.tsx — moves the docs link into a DialogFooter with ExternalLink; defaults docsLabel to 'Learn more'; simplifies DialogContent class list
  • .changeset/salty-aliens-pay.md — patch changeset for @inkeep/agents-manage-ui

Pullfrog  | View workflow run | Using Claude Code | Triggered by Pullfrogpullfrog.com𝕏

Copy link
Copy Markdown
Contributor

@pullfrog pullfrog Bot left a comment

Choose a reason for hiding this comment

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

Clean refactor. The new stepper component has a clear composable API, the docsPath/docsLabel prop lift to the modal footer is correct, and the Streamdown usage for the code snippet is consistent with existing patterns in the ship guides. No issues found.

Pullfrog  | View workflow runpullfrog.com𝕏

Copy link
Copy Markdown
Contributor

@claude claude Bot left a comment

Choose a reason for hiding this comment

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

PR Review Summary

(2) Total Issues | Risk: Medium

🟠⚠️ Major (1) 🟠⚠️

Inline Comments:

  • 🟠 Major: stepper.tsx:4-6 Missing data-slot attributes — breaks established UI component convention

🟡 Minor (1) 🟡

Inline Comments:

  • 🟡 Minor: use-in-your-app-section.tsx:97-103 Step 2 code block lacks copy button (inconsistent with Step 1)

💭 Consider (2) 💭

💭 1) stepper.tsx Use semantic HTML for accessibility

Issue: The Stepper component uses non-semantic <div> elements for what is semantically an ordered list of steps.
Why: Screen readers won't announce this as a list or convey the step count. Users navigating by list landmarks won't find this content. The web-design-guidelines skill recommends semantic HTML before ARIA.
Fix: Refactor Stepper to use <ol> and StepperItem to use <li> with list-none class to preserve visual styling while improving accessibility.

💭 2) component-name-utils.ts Pre-existing: Utility functions lack test coverage

Issue: toPascalCase and extractExportedComponentName utilities (used by the refactored section component) lack unit tests despite containing regex-based parsing logic.
Why: These functions generate CLI commands and import snippets that users copy into their codebases. If the regex fails to extract names correctly, users get broken code snippets.
Fix: Consider adding tests in agents-manage-ui/src/lib/__tests__/component-name-utils.test.ts for edge cases (empty strings, special characters, various export patterns).
Refs: component-name-utils.ts


🚫 REQUEST CHANGES

Summary: The new Stepper component is well-designed and follows the composition pattern used elsewhere, but it's missing the data-slot attributes that are consistently used across all other compound UI components in this codebase. Adding these attributes ensures the component integrates properly with existing CSS targeting patterns. The copy button regression in Step 2 is a minor UX issue worth addressing.

Discarded (3)
Location Issue Reason Discarded
stepper.tsx:1 React import style diverges from majority pattern (import type { ComponentProps } vs import type * as React from 'react') Not significant — there's existing split in the codebase (tabs.tsx uses same pattern)
use-in-your-app-modal.tsx:44 Removal of max-height constraint could cause overflow Low confidence — Dialog component handles scrolling via its own constraints
use-in-your-app-section.tsx:32 buildImportAndRegistrationSnippet could benefit from tests Low confidence (INFO severity) — simple string concatenation with visible output
Reviewers (6)
Reviewer Returned Main Findings Consider While You're Here Inline Comments Pending Recs Discarded
pr-review-consistency 2 0 0 0 1 0 1
pr-review-product 2 0 0 0 1 0 1
pr-review-frontend 1 0 1 0 0 0 0
pr-review-tests 2 0 1 0 0 0 1
pr-review-standards 0 0 0 0 0 0 0
pr-review-types 0 0 0 0 0 0 0
Total 7 0 2 0 2 0 3

Comment thread agents-manage-ui/src/components/use-in-your-app-section.tsx
Comment on lines +4 to +6
function Stepper({ className, ...props }: ComponentProps<'div'>) {
return <div className={cn('relative', className)} {...props} />;
}
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.

🟠 MAJOR: Missing data-slot attributes — breaks established UI component convention

Issue: The Stepper component does not include data-slot attributes, which are used consistently across all compound UI components in this codebase for component identification and CSS targeting.

Why: All other compound UI components (Card, Dialog, Sheet, Alert, Table, Popover, AlertDialog, etc.) include data-slot attributes on every sub-component. This is a first-of-its-kind pattern for a new compound UI component, so it sets precedent. Without these attributes, CSS selectors like [data-slot="stepper-title"] won't work, breaking the established component API pattern.

Fix: Add data-slot attributes to all Stepper sub-components:

Suggested change
function Stepper({ className, ...props }: ComponentProps<'div'>) {
return <div className={cn('relative', className)} {...props} />;
}
function Stepper({ className, ...props }: ComponentProps<'div'>) {
return <div data-slot="stepper" className={cn('relative', className)} {...props} />;
}

Similarly for other components:

  • StepperItemdata-slot="stepper-item"
  • StepperIndicatordata-slot="stepper-indicator"
  • StepperContentdata-slot="stepper-content"
  • StepperTitledata-slot="stepper-title"
  • StepperDescriptiondata-slot="stepper-description"

Refs:

@github-actions github-actions Bot deleted a comment from claude Bot Mar 3, 2026
@vercel vercel Bot temporarily deployed to Preview – agents-docs March 3, 2026 00:59 Inactive
Copy link
Copy Markdown
Contributor

@claude claude Bot left a comment

Choose a reason for hiding this comment

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

PR Review Summary

(0) Total Issues | Risk: Low

✅ Prior Feedback Addressed

The issues raised in the previous review have been resolved:

Prior Issue Resolution
🟠 Major: Missing data-slot attributes ✅ Fixed in commit a870833e0 — all stepper sub-components now include data-slot attributes following the kebab-case naming convention (stepper, stepper-item, stepper-indicator, stepper-content, stepper-title, stepper-description)
🟡 Minor: Step 2 code block lacks copy button ✅ Author clarified: Streamdown has built-in copy functionality for code blocks

💭 Consider (carried forward)

These remain valid suggestions from the prior review but are not blocking:

💭 1) stepper.tsx Use semantic HTML for accessibility

Issue: The Stepper component uses <div> elements where semantic <ol>/<li> would improve screen reader support.
Why: Screen readers won't announce this as a list or convey the step count without semantic HTML.
Fix: Consider refactoring to use <ol> and <li> with list-none class in a future iteration.

💭 2) component-name-utils.ts Utility functions lack test coverage (pre-existing)

Issue: toPascalCase and extractExportedComponentName utilities lack unit tests despite containing regex-based parsing logic.
Why: These functions generate CLI commands and import snippets that users copy — edge case failures could produce broken snippets.
Fix: Consider adding tests for edge cases in a follow-up.


✅ APPROVE

Summary: The feedback from the prior review has been addressed. The data-slot attributes now follow the established convention used across other compound UI components (Card, Sheet, Dialog, etc.). Ship it! 🚀

Reviewers (0)
Reviewer Returned Main Findings Consider While You're Here Inline Comments Pending Recs Discarded
Total 0 0 0 0 0 0 0

Note: Delta re-review — prior issues addressed, no new reviewers dispatched.

@github-actions github-actions Bot deleted a comment from claude Bot Mar 3, 2026
@sarah-inkeep sarah-inkeep merged commit 6dec75f into main Mar 3, 2026
11 checks passed
@sarah-inkeep sarah-inkeep deleted the polish-use-in-your-app branch March 3, 2026 01:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant