fix: replace radix-ui umbrella imports with direct @radix-ui/react-* packages

The shadcn/ui components were using the new "radix-ui" umbrella package
import style (e.g. `import { Tooltip as TooltipPrimitive } from "radix-ui"`).
However, radix-ui@1.5.0 re-exports ALL radix primitives including ones not
installed (@radix-ui/react-accessible-icon, @radix-ui/react-form,
@radix-ui/react-one-time-password-field, @radix-ui/react-password-toggle-field,
@radix-ui/react-toolbar), causing esbuild to fail with 5 unresolved import
errors outside Shakespeare.

Fix: rewrite all 32 imports across the ui/ components to import directly
from their individual @radix-ui/react-* packages (which are all already
installed). Remove the radix-ui umbrella package entirely from package.json
and package-lock.json.

Affected files (32 import changes):
accordion, alert-dialog, aspect-ratio, avatar, badge, breadcrumb, button,
checkbox, collapsible, context-menu, dialog, dropdown-menu, form, hover-card,
label, menubar, navigation-menu, popover, progress, radio-group, scroll-area,
select, separator, sheet, sidebar, slider, switch, tabs, toggle-group, toggle,
tooltip

Co-authored-by: shakespeare.diy <assistant@shakespeare.diy>
This commit is contained in:
shakespeare.diy 2026-06-15 22:01:07 +07:00
parent 9b58f412cd
commit 85c2bdc5cc
33 changed files with 32 additions and 40 deletions

7
package-lock.json generated
View file

@ -73,7 +73,6 @@
"nostr-tools": "^2.13.0", "nostr-tools": "^2.13.0",
"npubcash-sdk": "^0.2.0", "npubcash-sdk": "^0.2.0",
"qrcode": "^1.5.4", "qrcode": "^1.5.4",
"radix-ui": "^1.0.1",
"react": "^18.3.1", "react": "^18.3.1",
"react-day-picker": "^9.0.0", "react-day-picker": "^9.0.0",
"react-dom": "^18.3.1", "react-dom": "^18.3.1",
@ -2810,12 +2809,6 @@
"integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/radix-ui": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/radix-ui/-/radix-ui-1.5.0.tgz",
"integrity": "sha512-Nzh2HNpClgB31FBHRqt2xG8XNUfVfQRpf34hACC5PNrXTd5JdXdqOXwLs3BL+D8CNYiNQiJiT8QGr5Q4vq+00w==",
"license": "MIT"
},
"node_modules/@remix-run/router": { "node_modules/@remix-run/router": {
"version": "1.23.0", "version": "1.23.0",
"resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.0.tgz", "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.0.tgz",

View file

@ -21,7 +21,6 @@
"@noble/hashes": "^2.0.1", "@noble/hashes": "^2.0.1",
"@nostrify/nostrify": "^0.47.1", "@nostrify/nostrify": "^0.47.1",
"@nostrify/react": "^0.2.17", "@nostrify/react": "^0.2.17",
"radix-ui": "^1.0.1",
"@radix-ui/react-accordion": "^1.2.0", "@radix-ui/react-accordion": "^1.2.0",
"@radix-ui/react-alert-dialog": "^1.1.1", "@radix-ui/react-alert-dialog": "^1.1.1",
"@radix-ui/react-aspect-ratio": "^1.1.0", "@radix-ui/react-aspect-ratio": "^1.1.0",

View file

@ -1,6 +1,6 @@
import * as React from "react" import * as React from "react"
import { ChevronDownIcon } from "lucide-react" import { ChevronDownIcon } from "lucide-react"
import { Accordion as AccordionPrimitive } from "radix-ui" import * as AccordionPrimitive from "@radix-ui/react-accordion"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"

View file

@ -1,7 +1,7 @@
"use client" "use client"
import * as React from "react" import * as React from "react"
import { AlertDialog as AlertDialogPrimitive } from "radix-ui" import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"
import { Button } from "@/components/ui/button" import { Button } from "@/components/ui/button"

View file

@ -1,6 +1,6 @@
"use client" "use client"
import { AspectRatio as AspectRatioPrimitive } from "radix-ui" import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio"
function AspectRatio({ function AspectRatio({
...props ...props

View file

@ -1,5 +1,5 @@
import * as React from "react" import * as React from "react"
import { Avatar as AvatarPrimitive } from "radix-ui" import * as AvatarPrimitive from "@radix-ui/react-avatar"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"

View file

@ -1,6 +1,6 @@
import * as React from "react" import * as React from "react"
import { type VariantProps } from "class-variance-authority" import { type VariantProps } from "class-variance-authority"
import { Slot } from "radix-ui" import { Slot } from "@radix-ui/react-slot"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"
import { badgeVariants } from "./badge-variants" import { badgeVariants } from "./badge-variants"

View file

@ -1,6 +1,6 @@
import * as React from "react" import * as React from "react"
import { ChevronRight, MoreHorizontal } from "lucide-react" import { ChevronRight, MoreHorizontal } from "lucide-react"
import { Slot } from "radix-ui" import { Slot } from "@radix-ui/react-slot"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"

View file

@ -1,6 +1,6 @@
import * as React from "react" import * as React from "react"
import { type VariantProps } from "class-variance-authority" import { type VariantProps } from "class-variance-authority"
import { Slot } from "radix-ui" import { Slot } from "@radix-ui/react-slot"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"
import { buttonVariants } from "./button-variants" import { buttonVariants } from "./button-variants"

View file

@ -1,6 +1,6 @@
import * as React from "react" import * as React from "react"
import { CheckIcon } from "lucide-react" import { CheckIcon } from "lucide-react"
import { Checkbox as CheckboxPrimitive } from "radix-ui" import * as CheckboxPrimitive from "@radix-ui/react-checkbox"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"

View file

@ -1,6 +1,6 @@
"use client" "use client"
import { Collapsible as CollapsiblePrimitive } from "radix-ui" import * as CollapsiblePrimitive from "@radix-ui/react-collapsible"
function Collapsible({ function Collapsible({
...props ...props

View file

@ -1,6 +1,6 @@
import * as React from "react" import * as React from "react"
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react" import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react"
import { ContextMenu as ContextMenuPrimitive } from "radix-ui" import * as ContextMenuPrimitive from "@radix-ui/react-context-menu"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"

View file

@ -2,7 +2,7 @@
import * as React from "react" import * as React from "react"
import { XIcon } from "lucide-react" import { XIcon } from "lucide-react"
import { Dialog as DialogPrimitive } from "radix-ui" import * as DialogPrimitive from "@radix-ui/react-dialog"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"
import { Button } from "@/components/ui/button" import { Button } from "@/components/ui/button"

View file

@ -2,7 +2,7 @@
import * as React from "react" import * as React from "react"
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react" import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react"
import { DropdownMenu as DropdownMenuPrimitive } from "radix-ui" import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"

View file

@ -1,6 +1,6 @@
import * as React from "react" import * as React from "react"
import type { Label as LabelPrimitive } from "radix-ui" import type * as LabelPrimitive from "@radix-ui/react-label"
import { Slot } from "radix-ui" import { Slot } from "@radix-ui/react-slot"
import { import {
Controller, Controller,
FormProvider, FormProvider,

View file

@ -1,5 +1,5 @@
import * as React from "react" import * as React from "react"
import { HoverCard as HoverCardPrimitive } from "radix-ui" import * as HoverCardPrimitive from "@radix-ui/react-hover-card"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"

View file

@ -1,5 +1,5 @@
import * as React from "react" import * as React from "react"
import { Label as LabelPrimitive } from "radix-ui" import * as LabelPrimitive from "@radix-ui/react-label"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"

View file

@ -2,7 +2,7 @@
import * as React from "react" import * as React from "react"
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react" import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react"
import { Menubar as MenubarPrimitive } from "radix-ui" import * as MenubarPrimitive from "@radix-ui/react-menubar"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"

View file

@ -1,6 +1,6 @@
import * as React from "react" import * as React from "react"
import { ChevronDownIcon } from "lucide-react" import { ChevronDownIcon } from "lucide-react"
import { NavigationMenu as NavigationMenuPrimitive } from "radix-ui" import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"
import { navigationMenuTriggerStyle } from "./navigation-menu-variants" import { navigationMenuTriggerStyle } from "./navigation-menu-variants"

View file

@ -1,5 +1,5 @@
import * as React from "react" import * as React from "react"
import { Popover as PopoverPrimitive } from "radix-ui" import * as PopoverPrimitive from "@radix-ui/react-popover"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"

View file

@ -1,7 +1,7 @@
"use client" "use client"
import * as React from "react" import * as React from "react"
import { Progress as ProgressPrimitive } from "radix-ui" import * as ProgressPrimitive from "@radix-ui/react-progress"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"

View file

@ -1,6 +1,6 @@
import * as React from "react" import * as React from "react"
import { CircleIcon } from "lucide-react" import { CircleIcon } from "lucide-react"
import { RadioGroup as RadioGroupPrimitive } from "radix-ui" import * as RadioGroupPrimitive from "@radix-ui/react-radio-group"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"

View file

@ -1,5 +1,5 @@
import * as React from "react" import * as React from "react"
import { ScrollArea as ScrollAreaPrimitive } from "radix-ui" import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"

View file

@ -2,7 +2,7 @@
import * as React from "react" import * as React from "react"
import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react" import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react"
import { Select as SelectPrimitive } from "radix-ui" import * as SelectPrimitive from "@radix-ui/react-select"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"

View file

@ -1,5 +1,5 @@
import * as React from "react" import * as React from "react"
import { Separator as SeparatorPrimitive } from "radix-ui" import * as SeparatorPrimitive from "@radix-ui/react-separator"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"

View file

@ -2,7 +2,7 @@
import * as React from "react" import * as React from "react"
import { XIcon } from "lucide-react" import { XIcon } from "lucide-react"
import { Dialog as SheetPrimitive } from "radix-ui" import * as SheetPrimitive from "@radix-ui/react-dialog"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"

View file

@ -3,7 +3,7 @@
import * as React from "react" import * as React from "react"
import { type VariantProps } from "class-variance-authority" import { type VariantProps } from "class-variance-authority"
import { PanelLeftIcon } from "lucide-react" import { PanelLeftIcon } from "lucide-react"
import { Slot } from "radix-ui" import { Slot } from "@radix-ui/react-slot"
import { useIsMobile } from "@/hooks/useIsMobile" import { useIsMobile } from "@/hooks/useIsMobile"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"

View file

@ -1,5 +1,5 @@
import * as React from "react" import * as React from "react"
import { Slider as SliderPrimitive } from "radix-ui" import * as SliderPrimitive from "@radix-ui/react-slider"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"

View file

@ -1,7 +1,7 @@
"use client" "use client"
import * as React from "react" import * as React from "react"
import { Switch as SwitchPrimitive } from "radix-ui" import * as SwitchPrimitive from "@radix-ui/react-switch"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"

View file

@ -2,7 +2,7 @@
import * as React from "react" import * as React from "react"
import { type VariantProps } from "class-variance-authority" import { type VariantProps } from "class-variance-authority"
import { Tabs as TabsPrimitive } from "radix-ui" import * as TabsPrimitive from "@radix-ui/react-tabs"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"
import { tabsListVariants } from "./tabs-variants" import { tabsListVariants } from "./tabs-variants"

View file

@ -2,7 +2,7 @@
import * as React from "react" import * as React from "react"
import { type VariantProps } from "class-variance-authority" import { type VariantProps } from "class-variance-authority"
import { ToggleGroup as ToggleGroupPrimitive } from "radix-ui" import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"
import { toggleVariants } from "@/components/ui/toggle-variants" import { toggleVariants } from "@/components/ui/toggle-variants"

View file

@ -1,6 +1,6 @@
import * as React from "react" import * as React from "react"
import { type VariantProps } from "class-variance-authority" import { type VariantProps } from "class-variance-authority"
import { Toggle as TogglePrimitive } from "radix-ui" import * as TogglePrimitive from "@radix-ui/react-toggle"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"
import { toggleVariants } from "./toggle-variants" import { toggleVariants } from "./toggle-variants"

View file

@ -1,5 +1,5 @@
import * as React from "react" import * as React from "react"
import { Tooltip as TooltipPrimitive } from "radix-ui" import * as TooltipPrimitive from "@radix-ui/react-tooltip"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"