Skip to content

feat!: remove the deprecated FileTabs component - #1290

Merged
tenphi merged 1 commit into
fix-storybook-docs-hierarchyfrom
chore/remove-filetabs
Aug 7, 2026
Merged

feat!: remove the deprecated FileTabs component#1290
tenphi merged 1 commit into
fix-storybook-docs-hierarchyfrom
chore/remove-filetabs

Conversation

@tenphi

@tenphi tenphi commented Aug 7, 2026

Copy link
Copy Markdown
Member

Stacked on #1289 — base that PR first, then this one. It is stacked only to avoid a modify/delete conflict on FileTabs.docs.mdx (#1289 moves that page, this PR deletes it). Nothing here depends on #1289 otherwise; happy to rebase onto main instead if you'd rather merge this first.

What

Removes FileTabs from the public API: the component, its FileTabs.TabPane subcomponent, the CubeFileTabProps type, its docs page, and its ESLint plugin fixture.

Why

  • FileTabProps has carried @deprecated consider using <Tabs /> instead since before the Glaze migration.
  • Cube Cloud is the only known consumer, and it stopped using it. FilesEditor was moved onto Tabs in cube-js/cloud@103e25e8e1 on 2025-10-24. Neither master (checked at today's HEAD) nor any branch there references FileTabs now.
  • Nothing inside the UI Kit used it either — the only references were the barrel export in src/index.ts and one ESLint plugin fixture.

Migration

-<FileTabs defaultActiveKey="1" onTabClose={(key) => removeTab(key)}>
-  <FileTabs.TabPane id="1" title="index.ts" />
-</FileTabs>
+<Tabs defaultActiveKey="1" onDelete={(key) => removeTab(key)}>
+  <Tabs.Panel key="1" title="index.ts" />
+</Tabs>

The close button is the main thing to port: on Tabs it is onDelete, and passing it is what makes the buttons appear. Tabs has no built-in isDirty equivalent — render the unsaved indicator into the tab's title or actions, as Cloud's FilesEditor does.

Marked minor, matching how #1275 versioned removing public props (this repo is 0.x, so major would mean 1.0).

One thing worth a look

defaults.test.ts has a coverage ratchet, COVERED = 72, lowered here to 71. The guard exists to stop fixtures being dropped for components that still exist; removing a component shrinks total alongside covered, so it is not a coverage regression. I noted that in the comment rather than silently editing the number.

Verification

  • pnpm test1361 passed, 1 skipped, 62 files
  • pnpm lint — clean (only pre-existing consistent-token-usage warnings in untouched files)
  • pnpm build — passes; FileTabs / CubeFileTabProps gone from dist/index.d.ts and dist/index.js
  • tsc --noEmit — 13 errors, identical to origin/main, none mentioning FileTabs (pre-existing, not run in CI)
  • defaults.generated.ts regenerated via pnpm audit-defaults

Related, not done here

StatsCard (the other organisms/ component) looks like the same situation — it is exported but unused by Cloud, which has its own local StatsCard built on the kit's Card. I left it alone since you only greenlit FileTabs; say the word and it can follow.

🤖 Generated with Claude Code


Note

Low Risk
Deletion of an already-deprecated, unused public API with migration notes; no runtime logic changes beyond removing dead code.

Overview
Removes the deprecated editor-style FileTabs component (including FileTabs.TabPane and CubeFileTabProps) from the public API, along with its Storybook docs and implementation under organisms/FileTabs.

Barrel exports in src/index.ts no longer expose the component or type. The ESLint defaults pipeline drops the FileTabs fixture and generated defaults entry; defaults.test.ts lowers the coverage ratchet from 72 to 71 with a comment that removing a component is not a regression.

The changeset (minor) documents migration to Tabs: onTabCloseonDelete, FileTabs.TabPaneTabs.Panel, and unsaved state via custom title/actions since Tabs has no built-in isDirty.

Reviewed by Cursor Bugbot for commit e2f6a22. Bugbot is set up for automated code reviews on this repo. Configure here.

`FileTabs` was an editor-style tab bar with close buttons and dirty-state
dots. Its `FileTabProps` has carried `@deprecated consider using <Tabs />
instead` since before the Glaze migration.

Cube Cloud is the only known consumer, and it moved `FilesEditor` onto
`Tabs` in October 2025 (cube-js/cloud@103e25e8e1). Neither `master` nor any
branch there references `FileTabs` today, and nothing inside the UI Kit
used it either — only the barrel export and an ESLint plugin fixture.

Removes the component, its docs page, the `FileTabs` / `CubeFileTabProps`
exports, and the ESLint plugin fixture, and regenerates
`defaults.generated.ts`.

Lowers the `defaults.test.ts` coverage ratchet from 72 to 71. That guard
exists to stop fixtures being dropped for components that still exist;
removing a component shrinks `total` alongside `covered`, so it is not a
coverage regression. Noted as much in the comment.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Aug 7, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
cube-ui-kit Ready Ready Preview Aug 7, 2026 6:04pm

Request Review

@changeset-bot

changeset-bot Bot commented Aug 7, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: e2f6a22

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

This PR includes changesets to release 1 package
Name Type
@cube-dev/ui-kit Minor

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

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

📦 NPM canary release

Deployed canary version 0.0.0-canary-ea6c4d5.

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

🏋️ Size limit report

Name Size Passed?
All 455.71 KB (-0.27% 🔽👏) Yes 🎉
Tree shaking (just a Button) 118.94 KB (0% 🟰) Yes 🎉

Click here if you want to find out what is changed in this build

@github-actions

github-actions Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

🧪 Storybook is successfully deployed!

@tenphi
tenphi merged commit 7376a92 into fix-storybook-docs-hierarchy Aug 7, 2026
13 checks passed
@tenphi
tenphi deleted the chore/remove-filetabs branch August 7, 2026 20:41
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