facebook/astryx
View on GitHub ↗
Unique within the repo — the other 19% repeats across its own files.
Unique across all public code — a further 15% is its own but appears in other public repos too.
Original and tidy — it rarely repeats itself, and little of it turns up in other public code. About as close to genuinely its own work as this metric can measure.
Worth consolidating — in the code
Real, actionable duplication in this repo's source, most concrete first.
Longest identical blocks
The longest runs of identical consecutive lines copied between two files (indentation ignored) — the most concrete copy-paste. Lift the block into a shared function or module.
| Lines | File A | File B | Cross-repo |
|---|---|---|---|
| 38 | facebook/astryx/apps/storybook/stories/CodeEditorTheme.stories.tsx:26 |
facebook/astryx/apps/storybook/stories/CodeTheme.stories.tsx:27 |
same repo |
| 36 | facebook/astryx/apps/docsite/src/components/tokens/MotionTokenTable.tsx:145 |
facebook/astryx/apps/sandbox/src/app/(sandbox)/pages/doc-preview/token-tables/MotionTokenTable.tsx:174 |
same repo |
| 36 | facebook/astryx/apps/storybook/stories/DateInput.stories.tsx:12 |
facebook/astryx/apps/storybook/stories/TimeInput.stories.tsx:11 |
same repo |
| 36 | facebook/astryx/apps/storybook/stories/DateInput.stories.tsx:12 |
facebook/astryx/apps/storybook/stories/DateTimeInput.stories.tsx:12 |
same repo |
| 36 | facebook/astryx/apps/storybook/stories/DateTimeInput.stories.tsx:12 |
facebook/astryx/apps/storybook/stories/TimeInput.stories.tsx:11 |
same repo |
| 33 | facebook/astryx/apps/example-nextjs-source/src/app/page.tsx:16 |
facebook/astryx/apps/example-vite/src/App.tsx:14 |
same repo |
| 32 | facebook/astryx/internal/vibe-tests/src/design-judge-gemini.py:49 |
facebook/astryx/internal/vibe-tests/src/post-design-results.py:35 |
same repo |
| 25 | facebook/astryx/apps/sandbox/src/app/(sandbox)/pages/color-studio/colorUtils.ts:126 |
facebook/astryx/apps/sandbox/src/components/ThemePalettePreview.tsx:134 |
same repo |
| 25 | facebook/astryx/apps/storybook/stories/Card.stories.tsx:24 |
facebook/astryx/apps/storybook/stories/Section.stories.tsx:26 |
same repo |
| 24 | facebook/astryx/apps/storybook/stories/Heading.stories.tsx:28 |
facebook/astryx/apps/storybook/stories/Text.stories.tsx:49 |
same repo |
| 23 | facebook/astryx/apps/sandbox/src/components/ThemePalettePreview.tsx:212 |
facebook/astryx/apps/sandbox/src/components/themePreview/colorMath.ts:232 |
same repo |
| 23 | facebook/astryx/apps/storybook/stories/NumberInput.stories.tsx:33 |
facebook/astryx/apps/storybook/stories/TextInput.stories.tsx:37 |
same repo |
| 22 | facebook/astryx/internal/eslint-plugin-astryx/require-base-props.js:72 |
facebook/astryx/internal/eslint-plugin-astryx/require-ref-prop.js:87 |
same repo |
| 19 | facebook/astryx/apps/storybook/stories/DateInput.stories.tsx:12 |
facebook/astryx/apps/storybook/stories/TextInput.stories.tsx:15 |
same repo |
| 19 | facebook/astryx/apps/storybook/stories/DateInput.stories.tsx:12 |
facebook/astryx/apps/storybook/stories/NumberInput.stories.tsx:11 |
same repo |
| 19 | facebook/astryx/apps/storybook/stories/DateInput.stories.tsx:12 |
facebook/astryx/apps/storybook/stories/FileInput.stories.tsx:10 |
same repo |
| 19 | facebook/astryx/apps/storybook/stories/DateTimeInput.stories.tsx:12 |
facebook/astryx/apps/storybook/stories/TextInput.stories.tsx:15 |
same repo |
| 19 | facebook/astryx/apps/storybook/stories/DateTimeInput.stories.tsx:12 |
facebook/astryx/apps/storybook/stories/NumberInput.stories.tsx:11 |
same repo |
| 19 | facebook/astryx/apps/storybook/stories/DateTimeInput.stories.tsx:12 |
facebook/astryx/apps/storybook/stories/FileInput.stories.tsx:10 |
same repo |
| 19 | facebook/astryx/apps/storybook/stories/FileInput.stories.tsx:10 |
facebook/astryx/apps/storybook/stories/NumberInput.stories.tsx:11 |
same repo |
Top duplication hotspots
| Similarity | Overlap | File A | File B | Cross-repo |
|---|---|---|---|---|
| 37% | 495 | facebook/astryx/internal/vibe-tests/cli-discovery-test/setup-discovery.mjs |
facebook/astryx/internal/vibe-tests/prompt-purity-test/setup-purity.mjs |
same repo |
| 31% | 419 | facebook/astryx/internal/vibe-tests/cli-discovery-test/run-isolated.mjs |
facebook/astryx/internal/vibe-tests/cli-discovery-test/setup-discovery.mjs |
same repo |
| 50% | 348 | facebook/astryx/apps/storybook/stories/NumberInput.stories.tsx |
facebook/astryx/apps/storybook/stories/TextInput.stories.tsx |
same repo |
| 41% | 335 | facebook/astryx/apps/storybook/stories/TextArea.stories.tsx |
facebook/astryx/apps/storybook/stories/TextInput.stories.tsx |
same repo |
| 36% | 314 | facebook/astryx/apps/storybook/stories/NumberInput.stories.tsx |
facebook/astryx/apps/storybook/stories/TextArea.stories.tsx |
same repo |
| 20% | 314 | facebook/astryx/internal/vibe-tests/cli-discovery-test/run-isolated.mjs |
facebook/astryx/internal/vibe-tests/prompt-purity-test/setup-purity.mjs |
same repo |
| 12% | 285 | facebook/astryx/apps/sandbox/src/components/ThemePalettePreview.tsx |
facebook/astryx/apps/sandbox/src/components/themePreview/colorMath.ts |
same repo |
| 12% | 278 | facebook/astryx/apps/docsite/src/__tests__/playground-format.test.ts |
facebook/astryx/apps/docsite/src/app/playground/formatCode.ts |
same repo |
| 50% | 274 | facebook/astryx/apps/storybook/stories/DateTimeInput.stories.tsx |
facebook/astryx/apps/storybook/stories/TimeInput.stories.tsx |
same repo |
| 46% | 251 | facebook/astryx/apps/storybook/stories/DateInput.stories.tsx |
facebook/astryx/apps/storybook/stories/TimeInput.stories.tsx |
same repo |
| 30% | 244 | facebook/astryx/packages/cli/cli/commands/component/index.mjs |
facebook/astryx/packages/cli/cli/commands/hook/index.mjs |
same repo |
| 35% | 239 | facebook/astryx/apps/storybook/stories/DateInput.stories.tsx |
facebook/astryx/apps/storybook/stories/DateTimeInput.stories.tsx |
same repo |
| 49% | 237 | facebook/astryx/apps/storybook/stories/CheckboxInput.stories.tsx |
facebook/astryx/apps/storybook/stories/Switch.stories.tsx |
same repo |
| 84% | 231 | facebook/astryx/apps/docsite/src/components/tokens/MotionTokenTable.tsx |
facebook/astryx/apps/sandbox/src/app/(sandbox)/pages/doc-preview/token-tables/MotionTokenTable.tsx |
same repo |
| 13% | 229 | facebook/astryx/.github/workflows/ci.yml |
facebook/astryx/.github/workflows/deploy.yml |
same repo |
| 31% | 228 | facebook/astryx/apps/storybook/stories/DateInput.stories.tsx |
facebook/astryx/apps/storybook/stories/TextInput.stories.tsx |
same repo |
| 37% | 225 | facebook/astryx/apps/storybook/stories/CheckboxList.stories.tsx |
facebook/astryx/apps/storybook/stories/RadioList.stories.tsx |
same repo |
| 26% | 224 | facebook/astryx/packages/charts/src/marks/dotGL.tsx |
facebook/astryx/packages/charts/src/marks/heatmapGL.tsx |
same repo |
| 24% | 223 | facebook/astryx/apps/storybook/stories/PowerSearch.stories.tsx |
facebook/astryx/apps/storybook/stories/Tokenizer.stories.tsx |
same repo |
| 29% | 220 | facebook/astryx/apps/storybook/stories/DateTimeInput.stories.tsx |
facebook/astryx/apps/storybook/stories/TextInput.stories.tsx |
same repo |
Duplicate declarations
The same function, variable, class, or type name declared in more than one file — a fast copy-paste signal. Consider extracting a shared definition.
| Files | Declaration | Where |
|---|---|---|
| 191 | var Meta |
facebook/astryx/apps/docsite/scripts/generate-data.mjsfacebook/astryx/apps/docsite/src/__tests__/blog.test.tsfacebook/astryx/apps/docsite/src/__tests__/pageMetadata.test.ts+188 more |
| 174 | type Meta |
facebook/astryx/apps/storybook/stories/AlertDialog.stories.tsxfacebook/astryx/apps/storybook/stories/AppShell.stories.tsxfacebook/astryx/apps/storybook/stories/AspectRatio.stories.tsx+171 more |
| 133 | type Story |
facebook/astryx/apps/storybook/stories/AlertDialog.stories.tsxfacebook/astryx/apps/storybook/stories/AppShell.stories.tsxfacebook/astryx/apps/storybook/stories/AspectRatio.stories.tsx+130 more |
| 106 | var styles |
facebook/astryx/apps/docsite/src/app/(docs)/components/page.tsxfacebook/astryx/apps/docsite/src/app/(site)/_landing/AboutShowcase.tsxfacebook/astryx/apps/docsite/src/app/(site)/_landing/BlogShowcase.tsx+103 more |
| 99 | type body |
facebook/astryx/apps/docsite/src/__tests__/component-detail-resolve-elements.test.tsfacebook/astryx/apps/docsite/src/app/(docs)/components/page.tsxfacebook/astryx/apps/docsite/src/app/(site)/_landing/AboutShowcase.tsx+96 more |
| 95 | var default |
facebook/astryx/apps/storybook/stories/AspectRatio.stories.tsxfacebook/astryx/apps/storybook/stories/Avatar.stories.tsxfacebook/astryx/apps/storybook/stories/AvatarGroup.stories.tsx+92 more |
| 91 | type supporting |
facebook/astryx/apps/docsite/src/app/(docs)/components/page.tsxfacebook/astryx/apps/docsite/src/app/(site)/_landing/CliPreview.tsxfacebook/astryx/apps/docsite/src/app/(site)/_landing/hero/HeroFloatingCards.tsx+88 more |
| 43 | type label |
facebook/astryx/apps/docsite/src/app/playground/PlaygroundClient.tsxfacebook/astryx/apps/docsite/src/app/playground/themeEditor/BaseStylesPanel.tsxfacebook/astryx/apps/docsite/src/app/playground/themeEditor/ComponentTokensPanel.tsx+40 more |
| 39 | var disabled |
facebook/astryx/apps/storybook/stories/Button.stories.tsxfacebook/astryx/apps/storybook/stories/ChatComposer.stories.tsxfacebook/astryx/apps/storybook/stories/ChatComposerInput.stories.tsx+36 more |
| 38 | var tmpDir |
facebook/astryx/.github/scripts/test-pr-enrichment.jsfacebook/astryx/internal/vibe-tests/src/build-previews.tsfacebook/astryx/internal/vibe-tests/src/deploy-report.ts+35 more |
| 36 | var __dirname |
facebook/astryx/.github/scripts/cli-json-smoke-test.mjsfacebook/astryx/.github/scripts/cli-smoke-test.mjsfacebook/astryx/apps/docsite/scripts/backfill-display-name.mjs+33 more |
| 34 | var match |
facebook/astryx/.github/scripts/analyze-pr.jsfacebook/astryx/.github/scripts/codemod-verify.mjsfacebook/astryx/.github/scripts/lib/classify-visual.js+31 more |
| 33 | type error |
facebook/astryx/apps/docsite/src/__tests__/component-detail-resolve-elements.test.tsfacebook/astryx/apps/docsite/src/__tests__/component-prop-controls.test.tsfacebook/astryx/apps/docsite/src/__tests__/type-definitions.test.ts+30 more |
| 32 | type toBe |
facebook/astryx/apps/docsite/src/__tests__/blog.test.tsfacebook/astryx/apps/docsite/src/__tests__/component-detail-resolve-elements.test.tsfacebook/astryx/apps/docsite/src/__tests__/data-extraction.test.ts+29 more |
| 30 | var entry |
facebook/astryx/apps/docsite/scripts/backfill-display-name.mjsfacebook/astryx/apps/docsite/scripts/generate-data.mjsfacebook/astryx/apps/docsite/scripts/generate-playground-types.mjs+27 more |
| 29 | var --color-accent |
facebook/astryx/apps/docsite/src/app/(site)/_landing/ThemesPreview.tsxfacebook/astryx/apps/docsite/src/app/playground/themeEditor/BaseStylesPanel.tsxfacebook/astryx/apps/docsite/src/app/playground/themeEditor/RawTokensPanel.tsx+26 more |
| 29 | var entries |
facebook/astryx/.github/scripts/analyze-pr.jsfacebook/astryx/apps/docsite/scripts/generate-data.mjsfacebook/astryx/apps/docsite/src/__tests__/sitemap.test.ts+26 more |
| 29 | var file |
facebook/astryx/.github/scripts/analyze-pr.jsfacebook/astryx/.github/scripts/codemod-verify.mjsfacebook/astryx/apps/docsite/scripts/backfill-display-name.mjs+26 more |
| 28 | type code |
facebook/astryx/apps/docsite/src/components/blog/ReleaseCoverArt.tsxfacebook/astryx/apps/docsite/src/components/component-detail/HookSignature.tsxfacebook/astryx/apps/docsite/src/components/component-detail/PlaygroundPropsTable.tsx+25 more |
| 28 | type ReactNode |
facebook/astryx/apps/docsite/scripts/generate-playground-types.mjsfacebook/astryx/apps/docsite/src/__tests__/component-preview-state.test.tsfacebook/astryx/apps/docsite/src/__tests__/type-definitions.test.ts+25 more |
| 26 | var root |
facebook/astryx/.github/scripts/api-cli-parity-test.mjsfacebook/astryx/.github/scripts/cli-json-smoke-test.mjsfacebook/astryx/.github/scripts/cli-smoke-test.mjs+23 more |
| 25 | var colors |
facebook/astryx/apps/sandbox/src/app/(sandbox)/pages/color-studio/colorUtils.tsfacebook/astryx/apps/storybook/stories/Carousel.stories.tsxfacebook/astryx/apps/storybook/stories/Chart.stories.tsx+22 more |
| 24 | type large |
facebook/astryx/apps/docsite/src/app/(site)/_landing/AboutShowcase.tsxfacebook/astryx/apps/docsite/src/app/(site)/_landing/FeaturesShowcase.tsxfacebook/astryx/apps/docsite/src/components/ChangelogView.tsx+21 more |
| 23 | var columns |
facebook/astryx/apps/docsite/src/app/(site)/_landing/AboutShowcase.tsxfacebook/astryx/apps/docsite/src/components/docs/TableBlock.tsxfacebook/astryx/apps/sandbox/src/app/(fullscreen)/pages/codeblock-perf/page.tsx+20 more |
| 23 | var label |
facebook/astryx/apps/docsite/scripts/generate-data.mjsfacebook/astryx/apps/docsite/src/app/playground/PlaygroundClient.tsxfacebook/astryx/apps/docsite/src/app/playground/propertyEditor/targetingOverlay.tsx+20 more |
Docs & prose
Near-identical documentation — often translations (e.g. README.md ⇄ README_zh-CN.md) or mirrored guides. Usually intentional, not cleanup — listed separately so it doesn't inflate the code signal above.
Top duplication hotspots
| Similarity | Overlap | File A | File B | Cross-repo |
|---|---|---|---|---|
| 14% | 239 | facebook/astryx/README.md |
facebook/astryx/apps/docsite/src/content/blog/posts/how-astryx-works.md |
same repo |
| 4% | 230 | facebook/astryx/packages/cli/CHANGELOG.md |
facebook/astryx/packages/cli/README.md |
same repo |
| 4% | 193 | facebook/astryx/.github/copilot-instructions.md |
facebook/astryx/.github/instructions/packages.instructions.md |
same repo |
| 5% | 190 | facebook/astryx/docs/CHARTV2_STAGE1_DESIGN.md |
facebook/astryx/docs/CHARTV2_VERIFICATION_CHECKLIST.md |
same repo |
| 73% | 174 | facebook/astryx/internal/vibe-tests/selector-naming-test/variant-a-items.md |
facebook/astryx/internal/vibe-tests/selector-naming-test/variant-b-options.md |
same repo |
| 2% | 150 | facebook/astryx/packages/cli/CHANGELOG.md |
facebook/astryx/packages/cli/CONTRIBUTING.md |
same repo |
| 2% | 148 | facebook/astryx/.github/instructions/packages.instructions.md |
facebook/astryx/packages/cli/CHANGELOG.md |
same repo |
| 2% | 138 | facebook/astryx/internal/vibe-tests/cli-discovery-test/PLAN.md |
facebook/astryx/packages/cli/CHANGELOG.md |
same repo |
| 3% | 129 | facebook/astryx/.github/instructions/packages.instructions.md |
facebook/astryx/CONTRIBUTING.md |
same repo |
| 4% | 128 | facebook/astryx/docs/CHARTV2_PHASE1_PLAN.md |
facebook/astryx/docs/CHARTV2_STAGE1_DESIGN.md |
same repo |
| 15% | 113 | facebook/astryx/apps/example-nextjs/README.md |
facebook/astryx/apps/example-vite/README.md |
same repo |
| 3% | 109 | facebook/astryx/.github/instructions/packages.instructions.md |
facebook/astryx/.github/instructions/templates.instructions.md |
same repo |
| 3% | 108 | facebook/astryx/internal/vibe-tests/cli-discovery-test/PLAN.md |
facebook/astryx/internal/vibe-tests/prompt-purity-test/PLAN.md |
same repo |
| 3% | 108 | facebook/astryx/packages/cli/CONTRIBUTING.md |
facebook/astryx/packages/cli/README.md |
same repo |
| 8% | 103 | facebook/astryx/apps/docsite/src/content/blog/posts/astryx-cli-build-command.md |
facebook/astryx/apps/docsite/src/content/blog/posts/the-astryx-cli.md |
same repo |
| 7% | 100 | facebook/astryx/internal/vibe-tests/prompt-purity-test/ITERATE.md |
facebook/astryx/internal/vibe-tests/prompt-purity-test/PLAN.md |
same repo |
| 2% | 100 | facebook/astryx/.github/instructions/packages.instructions.md |
facebook/astryx/internal/vibe-tests/cli-discovery-test/PLAN.md |
same repo |
| 7% | 99 | facebook/astryx/.github/instructions/docsite.instructions.md |
facebook/astryx/apps/docsite/README.md |
same repo |
| 2% | 98 | facebook/astryx/.github/instructions/packages.instructions.md |
facebook/astryx/packages/cli/CONTRIBUTING.md |
same repo |
| 2% | 94 | facebook/astryx/.github/instructions/packages.instructions.md |
facebook/astryx/packages/cli/README.md |
same repo |
Largest files
Largest files
| LOC | File | Status |
|---|---|---|
| 2037 | facebook/astryx/apps/sandbox/src/app/(fullscreen)/pages/example-cards/page.tsx | indexed |
| 1601 | facebook/astryx/apps/docsite/scripts/generate-data.mjs | indexed |
| 1415 | facebook/astryx/apps/sandbox/src/components/ThemePalettePreview.tsx | indexed |
| 1405 | facebook/astryx/apps/storybook/stories/PowerSearch.stories.tsx | indexed |
| 1390 | facebook/astryx/apps/sandbox/src/components/themePreview/ThemeAuditDrawer.tsx | indexed |
| 1370 | facebook/astryx/apps/storybook/stories/Layout.stories.tsx | indexed |
| 1200 | facebook/astryx/apps/sandbox/src/app/(sandbox)/pages/color-studio/colorUtils.ts | indexed |
| 1189 | facebook/astryx/internal/vibe-tests/src/interactive.ts | indexed |
| 1188 | facebook/astryx/apps/sandbox/src/app/(raw)/pages/shell-lab/page.tsx | indexed |
| 1186 | facebook/astryx/internal/vibe-tests/test-sets/default.json | indexed |