Skip to content

feat: export the props type of every component - #965

Open
Shreyag02 wants to merge 4 commits into
mainfrom
feat/export-prop-types
Open

Shreyag02 wants to merge 4 commits into
mainfrom
feat/export-prop-types

Conversation

@Shreyag02

@Shreyag02 Shreyag02 commented Oct 11, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Every props type that a component or part declares can be imported from @raystack/apsara. Root parts use <Component>Props (TabsProps, CheckboxProps), as ChatPanelProps and PromptInputProps already did. Parts keep their names (TabsTabProps, CheckboxGroupProps). RangePickerSlotProps is exported next to DatePickerSlotProps.
  • Renames: BoxProps to FlexProps, ToolbarProps to DataViewToolbarProps, DisplayControlsProps to DataViewDisplayControlsProps, DisplaySettingsProps to DataTableDisplayControlsProps, VirtualizedContentProps to DataTableVirtualizedContentProps and SidebarNavigationGroupProps to SidebarGroupProps. None of these names could be imported before.
  • Members that were added at the call site are moved into the types: ref on Command.Content, closeLabel on Drawer.Content, and children on DataTable, DataView and DataView.Toolbar. Each exported type is what its part accepts.
  • The add-new-component skill checks that a new component's props types are listed in dist/index.d.ts after the build. AGENTS.md says to export them with the component.
  • Parts that take Base UI, HTML or another component's props unchanged get no alias. Use ComponentProps<typeof Tabs.List> for them.

Closes #877

@vercel

vercel Bot commented Oct 11, 2026 •

Copy link
Copy Markdown

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

Project Deployment Actions Updated
apsara Ready Ready Preview Oct 12, 2026 8:00am UTC

@coderabbitai

coderabbitai Bot commented Oct 11, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: b1b8d287-2d8f-457e-b89d-e6d0bcd7aaea

📥 Commits

Reviewing files that changed from the base of the PR and between 49c3690 and ca6bda8.


📒 Files selected for processing (2)
  • packages/react/components/data-table/data-table.tsx
  • packages/react/components/data-view/data-view.tsx

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 0839acd8-d388-46e9-a19b-b731093e0d8c




📥 Commits

Reviewing files that changed from the base of the PR and between 86eb92b and 49c3690.





📒 Files selected for processing (100)
  • .agents/skills/add-new-component/SKILL.md
  • AGENTS.md
  • apps/www/src/content/docs/(overview)/getting-started.mdx
  • packages/react/components/accordion/index.tsx
  • packages/react/components/alert-dialog/index.ts
  • packages/react/components/announcement-bar/announcement-bar.tsx
  • packages/react/components/announcement-bar/index.tsx
  • packages/react/components/avatar/index.tsx
  • packages/react/components/badge/badge.tsx
  • packages/react/components/badge/index.tsx
  • packages/react/components/breadcrumb/index.tsx
  • packages/react/components/button/button.tsx
  • packages/react/components/button/index.tsx
  • packages/react/components/calendar/index.tsx
  • packages/react/components/calendar/range-picker.tsx
  • packages/react/components/callout/index.tsx
  • packages/react/components/chat-panel/index.tsx
  • packages/react/components/chat/index.tsx
  • packages/react/components/checkbox/checkbox.tsx
  • packages/react/components/checkbox/index.tsx
  • packages/react/components/code-block/code-block-language-select.tsx
  • packages/react/components/code-block/index.tsx
  • packages/react/components/color-picker/index.ts
  • packages/react/components/combobox/index.ts
  • packages/react/components/command/command-content.tsx
  • packages/react/components/command/command-empty.tsx
  • packages/react/components/command/index.tsx
  • packages/react/components/container/container.tsx
  • packages/react/components/container/index.tsx
  • packages/react/components/context-menu/index.ts
  • packages/react/components/copy-button/index.tsx
  • packages/react/components/data-table/components/display-settings.tsx
  • packages/react/components/data-table/components/filters.tsx
  • packages/react/components/data-table/components/toolbar.tsx
  • packages/react/components/data-table/components/virtualized-content.tsx
  • packages/react/components/data-table/data-table.tsx
  • packages/react/components/data-table/data-table.types.tsx
  • packages/react/components/data-table/index.ts
  • packages/react/components/data-view/components/display-controls.tsx
  • packages/react/components/data-view/components/toolbar.tsx
  • packages/react/components/data-view/data-view.tsx
  • packages/react/components/data-view/data-view.types.tsx
  • packages/react/components/data-view/index.ts
  • packages/react/components/dialog/index.ts
  • packages/react/components/drawer/drawer-content.tsx
  • packages/react/components/drawer/index.tsx
  • packages/react/components/empty-state/empty-state.tsx
  • packages/react/components/empty-state/index.tsx
  • packages/react/components/flex/flex.tsx
  • packages/react/components/flex/index.tsx
  • packages/react/components/grid/grid-item.tsx
  • packages/react/components/grid/grid.tsx
  • packages/react/components/grid/index.ts
  • packages/react/components/headline/index.tsx
  • packages/react/components/icon-button/index.tsx
  • packages/react/components/image/image.tsx
  • packages/react/components/image/index.tsx
  • packages/react/components/indicator/index.tsx
  • packages/react/components/input/index.tsx
  • packages/react/components/link/index.tsx
  • packages/react/components/list/index.tsx
  • packages/react/components/list/list.tsx
  • packages/react/components/menu/index.ts
  • packages/react/components/menu/menu-misc.tsx
  • packages/react/components/message/index.tsx
  • packages/react/components/meter/index.tsx
  • packages/react/components/navbar/index.tsx
  • packages/react/components/otp-field/index.tsx
  • packages/react/components/popover/index.tsx
  • packages/react/components/preview-card/index.tsx
  • packages/react/components/progress/index.tsx
  • packages/react/components/prompt-input/index.tsx
  • packages/react/components/radio/index.ts
  • packages/react/components/radio/radio.tsx
  • packages/react/components/reasoning/index.tsx
  • packages/react/components/search/index.ts
  • packages/react/components/select/index.ts
  • packages/react/components/select/select-value.tsx
  • packages/react/components/separator/index.tsx
  • packages/react/components/separator/separator.tsx
  • packages/react/components/side-panel/index.tsx
  • packages/react/components/side-panel/side-panel.tsx
  • packages/react/components/sidebar/index.tsx
  • packages/react/components/sidebar/sidebar-group.tsx
  • packages/react/components/skeleton/index.ts
  • packages/react/components/skeleton/skeleton.tsx
  • packages/react/components/slider/index.tsx
  • packages/react/components/spinner/index.tsx
  • packages/react/components/switch/index.ts
  • packages/react/components/table/index.ts
  • packages/react/components/table/table.tsx
  • packages/react/components/tabs/index.tsx
  • packages/react/components/tabs/tabs.tsx
  • packages/react/components/text-area/index.tsx
  • packages/react/components/text/index.tsx
  • packages/react/components/toast/index.ts
  • packages/react/components/toggle/index.ts
  • packages/react/components/tooltip/index.tsx
  • packages/react/components/tour/index.tsx
  • packages/react/index.tsx




Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.






📝 Walkthrough
📝 Walkthrough
📝 Walkthrough
📝 Walkthrough

Walkthrough

The pull request makes component prop types available from component entry points and the main React package entry point. It also exports several previously local prop declarations and updates selected prop type names, aliases, and signatures. Contributor guidance and getting-started documentation explain how to export and import these types.

Suggested reviewers: rohanchkrabrty








Priority: ➖ Normal

Severity of issue fixed: Medium

Merge Risk: ⚪ Minimal · up to 49c36

The new prop type exports are ready to merge after normal checks; the legacy-name changes do not break supported imports.

Pre-merge checks | Passed 4 | Inconclusive 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage Inconclusive Docstring coverage is 16.67% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 12 functions across 50 files. (50 skipped… Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check Passed The PR satisfies the coding requirements in [#877]. It exports prop types from component barrels and from packages/react/index.tsx. The required examples include ButtonProps, CheckboxProps with …
Out of Scope Changes check Passed The changes stay within the linked issue scope. Component-barrel exports, the package-root exports, prop-type corrections, the export verification guidance, and the documentation explain or enforce co…
Description check Passed The description clearly explains the changes to export component and part prop types, related type renames, updated prop definitions, documentation, and verification coverage.
Title check Passed The title concisely and accurately summarizes the main change: exporting props types for all components.



Full details: Docstring Coverage

Explanation

Docstring coverage is 16.67% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 12 functions across 50 files. (50 skipped: 3 unsupported, 47 over the file limit.)






  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@pkg-pr-new

pkg-pr-new Bot commented Oct 11, 2026 •

Copy link
Copy Markdown

Open in StackBlitz

pnpm add https://pkg.pr.new/@raystack/apsara@965

commit: ca6bda8

@Shreyag02 Shreyag02 changed the title Feat/export prop types feat: export the props type of every component Oct 11, 2026
@raystack raystack deleted a comment from coderabbitai Bot Oct 11, 2026
@Shreyag02 Shreyag02 self-assigned this Oct 11, 2026
@Shreyag02
Shreyag02 added this pull request to stack #972 October 12, 2026 07:32

This branch was successfully deployed

1 active deployment
Preview — ca6bda83 Deployed Oct 12, 2026 by vercel[bot]
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.

Export prop types consistently across components (<Name>Props)

1 participant