fix: align shadcn-vue components with @lucide/vue + drop redundant baseUrl

The shadcn-vue CLI still emits 'lucide-vue-next' imports even though
the package is deprecated upstream; this boilerplate uses @lucide/vue
(the new home). Replace the imports across every generated component
that pulls icons (dialog, dropdown-menu, select, sheet, sonner).

tsconfig.app.json no longer needs the explicit baseUrl='.' I added
earlier — @vue/tsconfig/tsconfig.dom.json already provides the right
default, and TS6 was warning about it. The root tsconfig.json keeps
baseUrl + ignoreDeprecations because the shadcn-vue CLI reads the
root config and needs it.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Padreug 2026-05-27 11:20:07 +02:00
commit 52cd156e43
12 changed files with 11 additions and 12 deletions

View file

@ -2,7 +2,7 @@
import type { DialogContentEmits, DialogContentProps } from "reka-ui" import type { DialogContentEmits, DialogContentProps } from "reka-ui"
import type { HTMLAttributes } from "vue" import type { HTMLAttributes } from "vue"
import { reactiveOmit } from "@vueuse/core" import { reactiveOmit } from "@vueuse/core"
import { X } from "lucide-vue-next" import { X } from "@lucide/vue"
import { import {
DialogClose, DialogClose,
DialogContent, DialogContent,

View file

@ -2,7 +2,7 @@
import type { DialogContentEmits, DialogContentProps } from "reka-ui" import type { DialogContentEmits, DialogContentProps } from "reka-ui"
import type { HTMLAttributes } from "vue" import type { HTMLAttributes } from "vue"
import { reactiveOmit } from "@vueuse/core" import { reactiveOmit } from "@vueuse/core"
import { X } from "lucide-vue-next" import { X } from "@lucide/vue"
import { import {
DialogClose, DialogClose,
DialogContent, DialogContent,

View file

@ -2,7 +2,7 @@
import type { DropdownMenuCheckboxItemEmits, DropdownMenuCheckboxItemProps } from "reka-ui" import type { DropdownMenuCheckboxItemEmits, DropdownMenuCheckboxItemProps } from "reka-ui"
import type { HTMLAttributes } from "vue" import type { HTMLAttributes } from "vue"
import { reactiveOmit } from "@vueuse/core" import { reactiveOmit } from "@vueuse/core"
import { Check } from "lucide-vue-next" import { Check } from "@lucide/vue"
import { import {
DropdownMenuCheckboxItem, DropdownMenuCheckboxItem,
DropdownMenuItemIndicator, DropdownMenuItemIndicator,

View file

@ -2,7 +2,7 @@
import type { DropdownMenuRadioItemEmits, DropdownMenuRadioItemProps } from "reka-ui" import type { DropdownMenuRadioItemEmits, DropdownMenuRadioItemProps } from "reka-ui"
import type { HTMLAttributes } from "vue" import type { HTMLAttributes } from "vue"
import { reactiveOmit } from "@vueuse/core" import { reactiveOmit } from "@vueuse/core"
import { Circle } from "lucide-vue-next" import { Circle } from "@lucide/vue"
import { import {
DropdownMenuItemIndicator, DropdownMenuItemIndicator,
DropdownMenuRadioItem, DropdownMenuRadioItem,

View file

@ -2,7 +2,7 @@
import type { DropdownMenuSubTriggerProps } from "reka-ui" import type { DropdownMenuSubTriggerProps } from "reka-ui"
import type { HTMLAttributes } from "vue" import type { HTMLAttributes } from "vue"
import { reactiveOmit } from "@vueuse/core" import { reactiveOmit } from "@vueuse/core"
import { ChevronRight } from "lucide-vue-next" import { ChevronRight } from "@lucide/vue"
import { import {
DropdownMenuSubTrigger, DropdownMenuSubTrigger,
useForwardProps, useForwardProps,

View file

@ -2,7 +2,7 @@
import type { SelectItemProps } from "reka-ui" import type { SelectItemProps } from "reka-ui"
import type { HTMLAttributes } from "vue" import type { HTMLAttributes } from "vue"
import { reactiveOmit } from "@vueuse/core" import { reactiveOmit } from "@vueuse/core"
import { Check } from "lucide-vue-next" import { Check } from "@lucide/vue"
import { import {
SelectItem, SelectItem,
SelectItemIndicator, SelectItemIndicator,

View file

@ -2,7 +2,7 @@
import type { SelectScrollDownButtonProps } from "reka-ui" import type { SelectScrollDownButtonProps } from "reka-ui"
import type { HTMLAttributes } from "vue" import type { HTMLAttributes } from "vue"
import { reactiveOmit } from "@vueuse/core" import { reactiveOmit } from "@vueuse/core"
import { ChevronDown } from "lucide-vue-next" import { ChevronDown } from "@lucide/vue"
import { SelectScrollDownButton, useForwardProps } from "reka-ui" import { SelectScrollDownButton, useForwardProps } from "reka-ui"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"

View file

@ -2,7 +2,7 @@
import type { SelectScrollUpButtonProps } from "reka-ui" import type { SelectScrollUpButtonProps } from "reka-ui"
import type { HTMLAttributes } from "vue" import type { HTMLAttributes } from "vue"
import { reactiveOmit } from "@vueuse/core" import { reactiveOmit } from "@vueuse/core"
import { ChevronUp } from "lucide-vue-next" import { ChevronUp } from "@lucide/vue"
import { SelectScrollUpButton, useForwardProps } from "reka-ui" import { SelectScrollUpButton, useForwardProps } from "reka-ui"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"

View file

@ -2,7 +2,7 @@
import type { SelectTriggerProps } from "reka-ui" import type { SelectTriggerProps } from "reka-ui"
import type { HTMLAttributes } from "vue" import type { HTMLAttributes } from "vue"
import { reactiveOmit } from "@vueuse/core" import { reactiveOmit } from "@vueuse/core"
import { ChevronDown } from "lucide-vue-next" import { ChevronDown } from "@lucide/vue"
import { SelectIcon, SelectTrigger, useForwardProps } from "reka-ui" import { SelectIcon, SelectTrigger, useForwardProps } from "reka-ui"
import { cn } from "@/lib/utils" import { cn } from "@/lib/utils"

View file

@ -3,7 +3,7 @@ import type { DialogContentEmits, DialogContentProps } from "reka-ui"
import type { HTMLAttributes } from "vue" import type { HTMLAttributes } from "vue"
import type { SheetVariants } from "." import type { SheetVariants } from "."
import { reactiveOmit } from "@vueuse/core" import { reactiveOmit } from "@vueuse/core"
import { X } from "lucide-vue-next" import { X } from "@lucide/vue"
import { import {
DialogClose, DialogClose,
DialogContent, DialogContent,

View file

@ -1,7 +1,7 @@
<script lang="ts" setup> <script lang="ts" setup>
import type { ToasterProps } from "vue-sonner" import type { ToasterProps } from "vue-sonner"
import { reactiveOmit } from "@vueuse/core" import { reactiveOmit } from "@vueuse/core"
import { CircleCheckIcon, InfoIcon, Loader2Icon, OctagonXIcon, TriangleAlertIcon, XIcon } from "lucide-vue-next" import { CircleCheckIcon, InfoIcon, Loader2Icon, OctagonXIcon, TriangleAlertIcon, XIcon } from "@lucide/vue"
import { Toaster as Sonner } from "vue-sonner" import { Toaster as Sonner } from "vue-sonner"
const props = defineProps<ToasterProps>() const props = defineProps<ToasterProps>()

View file

@ -4,7 +4,6 @@
"exclude": ["src/**/__tests__/*"], "exclude": ["src/**/__tests__/*"],
"compilerOptions": { "compilerOptions": {
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
"baseUrl": ".",
"paths": { "paths": {
"@/*": ["./src/*"] "@/*": ["./src/*"]
} }