From 8c48da0ae01c31c54bda780237749b9dae1d7f62 Mon Sep 17 00:00:00 2001 From: Roman Korvatskyi Date: Wed, 5 Aug 2026 16:44:23 +0200 Subject: [PATCH] Cleanup core frontend lib: remove dead duplicate components (wave 1+2) - Delete 62 dead files with zero importers and no barrel exports: 9 root twins of ui/ primitives, 38 stale loose icons/logos, dead shadcn primitives, orphan stubs - Repoint 5 live imports (flamingo/openframe/openmsp logos, plus-circle icon) to canonical components/icons/ - Add named exports for OpenSourceFeatures and WhyItMatters (default-only exports were unreachable through the export * barrel) Co-Authored-By: Claude Fable 5 --- .../src/components/about-icon.tsx | 29 -- .../src/components/aspect-ratio.tsx | 7 - .../src/components/avatar.tsx | 40 -- .../src/components/chart.tsx | 364 ------------------ .../src/components/chat/chat-container.tsx | 2 +- .../src/components/check-circle-icon.tsx | 29 -- .../src/components/checkbox.tsx | 30 -- .../src/components/claude-icon.tsx | 24 -- .../src/components/coins-icon.tsx | 29 -- .../src/components/command.tsx | 153 -------- .../src/components/community-hub-icon.tsx | 27 -- .../src/components/community-icon.tsx | 27 -- .../src/components/compare-icon.tsx | 27 -- .../src/components/context-menu.tsx | 200 ---------- .../components/custom-external-link-icon.tsx | 33 -- .../src/components/custom-fork-icon.tsx | 33 -- .../src/components/custom-icons.tsx | 47 --- .../src/components/custom-license-icon.tsx | 33 -- .../src/components/custom-star-icon.tsx | 29 -- .../src/components/custom-time-icon.tsx | 33 -- .../src/components/donut-icon.tsx | 21 - .../src/components/edit-profile-icon.tsx | 23 -- .../src/components/elestio-logo.tsx | 67 ---- .../src/components/empty-vendor-icon.tsx | 44 --- .../components/features/platform-badge.tsx | 4 +- .../src/components/flamingo-logo.tsx | 27 -- .../src/components/form.tsx | 138 ------- .../src/components/github-icon.tsx | 26 -- .../src/components/google-logo.tsx | 32 -- .../src/components/hamburger-icon.tsx | 29 -- .../src/components/hubspot-icon.tsx | 20 - .../src/components/icon-utils.tsx | 36 -- .../src/components/interactive-wrapper.tsx | 336 ---------------- .../components/join-waitlist-button-stub.tsx | 30 -- .../components/loading/openmsp-heartbeat.tsx | 2 +- .../src/components/made-with-love.tsx | 7 +- .../src/components/menu-icon.tsx | 22 -- .../src/components/minus-circle-icon.tsx | 28 -- .../src/components/moon-icon.tsx | 26 -- .../src/components/ms-icon.tsx | 31 -- .../src/components/open-source-features.tsx | 2 +- .../src/components/open-source-icon.tsx | 27 -- .../src/components/openframe-logo.tsx | 46 --- .../src/components/openmsp-logo.tsx | 36 -- .../src/components/plus-circle-icon.tsx | 30 -- .../src/components/progress.tsx | 27 -- .../src/components/provider-button.tsx | 39 -- .../src/components/reddit-icon.tsx | 50 --- .../src/components/resizable.tsx | 45 --- .../src/components/scroll-area.tsx | 49 --- .../src/components/send-icon.tsx | 26 -- .../src/components/separator.tsx | 22 -- .../src/components/skeleton.tsx | 8 - .../src/components/slack-icon.tsx | 43 --- .../src/components/slider.tsx | 28 -- .../src/components/smooth-accordion.tsx | 124 ------ .../src/components/steps.tsx | 98 ----- .../src/components/sun-icon.tsx | 27 -- .../src/components/switch.tsx | 29 -- .../src/components/textarea.tsx | 22 -- .../src/components/ui/pagination-stub.tsx | 38 -- .../ui/responsive-icons-block-stub.tsx | 14 - .../src/components/user-icon.tsx | 33 -- .../src/components/vendor-directory-icon.tsx | 27 -- .../src/components/vendor-tag.tsx | 2 +- .../src/components/vendors-icon.tsx | 27 -- .../src/components/why-it-matters.tsx | 2 +- .../src/components/x-icon.tsx | 29 -- .../src/components/x-logo.tsx | 22 -- 69 files changed, 11 insertions(+), 3106 deletions(-) delete mode 100644 openframe-frontend-core/src/components/about-icon.tsx delete mode 100644 openframe-frontend-core/src/components/aspect-ratio.tsx delete mode 100644 openframe-frontend-core/src/components/avatar.tsx delete mode 100644 openframe-frontend-core/src/components/chart.tsx delete mode 100644 openframe-frontend-core/src/components/check-circle-icon.tsx delete mode 100644 openframe-frontend-core/src/components/checkbox.tsx delete mode 100644 openframe-frontend-core/src/components/claude-icon.tsx delete mode 100644 openframe-frontend-core/src/components/coins-icon.tsx delete mode 100644 openframe-frontend-core/src/components/command.tsx delete mode 100644 openframe-frontend-core/src/components/community-hub-icon.tsx delete mode 100644 openframe-frontend-core/src/components/community-icon.tsx delete mode 100644 openframe-frontend-core/src/components/compare-icon.tsx delete mode 100644 openframe-frontend-core/src/components/context-menu.tsx delete mode 100644 openframe-frontend-core/src/components/custom-external-link-icon.tsx delete mode 100644 openframe-frontend-core/src/components/custom-fork-icon.tsx delete mode 100644 openframe-frontend-core/src/components/custom-icons.tsx delete mode 100644 openframe-frontend-core/src/components/custom-license-icon.tsx delete mode 100644 openframe-frontend-core/src/components/custom-star-icon.tsx delete mode 100644 openframe-frontend-core/src/components/custom-time-icon.tsx delete mode 100644 openframe-frontend-core/src/components/donut-icon.tsx delete mode 100644 openframe-frontend-core/src/components/edit-profile-icon.tsx delete mode 100644 openframe-frontend-core/src/components/elestio-logo.tsx delete mode 100644 openframe-frontend-core/src/components/empty-vendor-icon.tsx delete mode 100644 openframe-frontend-core/src/components/flamingo-logo.tsx delete mode 100644 openframe-frontend-core/src/components/form.tsx delete mode 100644 openframe-frontend-core/src/components/github-icon.tsx delete mode 100644 openframe-frontend-core/src/components/google-logo.tsx delete mode 100644 openframe-frontend-core/src/components/hamburger-icon.tsx delete mode 100644 openframe-frontend-core/src/components/hubspot-icon.tsx delete mode 100644 openframe-frontend-core/src/components/icon-utils.tsx delete mode 100644 openframe-frontend-core/src/components/interactive-wrapper.tsx delete mode 100644 openframe-frontend-core/src/components/join-waitlist-button-stub.tsx delete mode 100644 openframe-frontend-core/src/components/menu-icon.tsx delete mode 100644 openframe-frontend-core/src/components/minus-circle-icon.tsx delete mode 100644 openframe-frontend-core/src/components/moon-icon.tsx delete mode 100644 openframe-frontend-core/src/components/ms-icon.tsx delete mode 100644 openframe-frontend-core/src/components/open-source-icon.tsx delete mode 100644 openframe-frontend-core/src/components/openframe-logo.tsx delete mode 100644 openframe-frontend-core/src/components/openmsp-logo.tsx delete mode 100644 openframe-frontend-core/src/components/plus-circle-icon.tsx delete mode 100644 openframe-frontend-core/src/components/progress.tsx delete mode 100644 openframe-frontend-core/src/components/provider-button.tsx delete mode 100644 openframe-frontend-core/src/components/reddit-icon.tsx delete mode 100644 openframe-frontend-core/src/components/resizable.tsx delete mode 100644 openframe-frontend-core/src/components/scroll-area.tsx delete mode 100644 openframe-frontend-core/src/components/send-icon.tsx delete mode 100644 openframe-frontend-core/src/components/separator.tsx delete mode 100644 openframe-frontend-core/src/components/skeleton.tsx delete mode 100644 openframe-frontend-core/src/components/slack-icon.tsx delete mode 100644 openframe-frontend-core/src/components/slider.tsx delete mode 100644 openframe-frontend-core/src/components/smooth-accordion.tsx delete mode 100644 openframe-frontend-core/src/components/steps.tsx delete mode 100644 openframe-frontend-core/src/components/sun-icon.tsx delete mode 100644 openframe-frontend-core/src/components/switch.tsx delete mode 100644 openframe-frontend-core/src/components/textarea.tsx delete mode 100644 openframe-frontend-core/src/components/ui/pagination-stub.tsx delete mode 100644 openframe-frontend-core/src/components/ui/responsive-icons-block-stub.tsx delete mode 100644 openframe-frontend-core/src/components/user-icon.tsx delete mode 100644 openframe-frontend-core/src/components/vendor-directory-icon.tsx delete mode 100644 openframe-frontend-core/src/components/vendors-icon.tsx delete mode 100644 openframe-frontend-core/src/components/x-icon.tsx delete mode 100644 openframe-frontend-core/src/components/x-logo.tsx diff --git a/openframe-frontend-core/src/components/about-icon.tsx b/openframe-frontend-core/src/components/about-icon.tsx deleted file mode 100644 index c20237cf8..000000000 --- a/openframe-frontend-core/src/components/about-icon.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import React from 'react'; - -interface AboutIconProps { - width?: number; - height?: number; - className?: string; -} - -export function AboutIcon({ - width = 24, - height = 24, - className = "" -}: AboutIconProps) { - return ( - - - - ); -} \ No newline at end of file diff --git a/openframe-frontend-core/src/components/aspect-ratio.tsx b/openframe-frontend-core/src/components/aspect-ratio.tsx deleted file mode 100644 index d6a5226f5..000000000 --- a/openframe-frontend-core/src/components/aspect-ratio.tsx +++ /dev/null @@ -1,7 +0,0 @@ -"use client" - -import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio" - -const AspectRatio = AspectRatioPrimitive.Root - -export { AspectRatio } diff --git a/openframe-frontend-core/src/components/avatar.tsx b/openframe-frontend-core/src/components/avatar.tsx deleted file mode 100644 index 5813c20ff..000000000 --- a/openframe-frontend-core/src/components/avatar.tsx +++ /dev/null @@ -1,40 +0,0 @@ -"use client" - -import * as React from "react" -import * as AvatarPrimitive from "@radix-ui/react-avatar" - -import { cn } from "../utils/cn" - -const Avatar = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -Avatar.displayName = AvatarPrimitive.Root.displayName - -const AvatarImage = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -AvatarImage.displayName = AvatarPrimitive.Image.displayName - -const AvatarFallback = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)) -AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName - -export { Avatar, AvatarImage, AvatarFallback } diff --git a/openframe-frontend-core/src/components/chart.tsx b/openframe-frontend-core/src/components/chart.tsx deleted file mode 100644 index a69edfce3..000000000 --- a/openframe-frontend-core/src/components/chart.tsx +++ /dev/null @@ -1,364 +0,0 @@ -"use client" - -import * as React from "react" -import * as RechartsPrimitive from "recharts" - -import { cn } from "../utils/cn" - -// Format: { THEME_NAME: CSS_SELECTOR } -const THEMES = { light: "", dark: ".dark" } as const - -export type ChartConfig = { - [k in string]: { - label?: React.ReactNode - icon?: React.ComponentType - } & ( - | { color?: string; theme?: never } - | { color?: never; theme: Record } - ) -} - -type ChartContextProps = { - config: ChartConfig -} - -const ChartContext = React.createContext(null) - -function useChart() { - const context = React.useContext(ChartContext) - - if (!context) { - throw new Error("useChart must be used within a ") - } - - return context -} - -const ChartContainer = React.forwardRef< - HTMLDivElement, - React.ComponentProps<"div"> & { - config: ChartConfig - children: React.ComponentProps< - typeof RechartsPrimitive.ResponsiveContainer - >["children"] - } ->(({ id, className, children, config, ...props }, ref) => { - const uniqueId = React.useId() - const chartId = `chart-${id || uniqueId.replace(/:/g, "")}` - - return ( - -
- - - {children} - -
-
- ) -}) -ChartContainer.displayName = "Chart" - -const ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => { - const colorConfig = Object.entries(config).filter( - ([_, config]) => config.theme || config.color - ) - - if (!colorConfig.length) { - return null - } - - return ( -