Skip to content

Commit de19d27

Browse files
authored
🎇 Swap destructured imports from lucide for direct imports per icon (#81)
the template is using lucide-react icons, which in production is tree shaken. But in dev, they pull the full 1.23mb file, vs ~2kb per icon if they're referenced directly. Updating these references to be direct imports will save almost the entire 1.23mb, is still legible, and does not affect prod bundle size. |full icon bundle|x icon| |---|---| |1.23mb|2.72kb|
1 parent d451c67 commit de19d27

18 files changed

+31
-22
lines changed

‎src/components/ui/accordion.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { ComponentProps } from "react"
22
import * as AccordionPrimitive from "@radix-ui/react-accordion"
3-
import { ChevronDownIcon } from "lucide-react"
3+
import ChevronDownIcon from "lucide-react/dist/esm/icons/chevron-down"
44

55
import { cn } from "@/lib/utils"
66

‎src/components/ui/breadcrumb.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { ComponentProps } from "react"
22
import { Slot } from "@radix-ui/react-slot"
3-
import { ChevronRight, MoreHorizontal } from "lucide-react"
3+
import ChevronRight from "lucide-react/dist/esm/icons/chevron-right"
4+
import MoreHorizontal from "lucide-react/dist/esm/icons/more-horizontal"
45

56
import { cn } from "@/lib/utils"
67

‎src/components/ui/calendar.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { ComponentProps } from "react"
2-
import { ChevronLeft, ChevronRight } from "lucide-react"
2+
import ChevronLeft from "lucide-react/dist/esm/icons/chevron-left"
3+
import ChevronRight from "lucide-react/dist/esm/icons/chevron-right"
34
import { DayPicker } from "react-day-picker"
45

56
import { cn } from "@/lib/utils"

‎src/components/ui/carousel.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import { ComponentProps, createContext, useCallback, useContext, useEffect, useS
44
import useEmblaCarousel, {
55
type UseEmblaCarouselType,
66
} from "embla-carousel-react"
7-
import { ArrowLeft, ArrowRight } from "lucide-react"
7+
import ArrowLeft from "lucide-react/dist/esm/icons/arrow-left"
8+
import ArrowRight from "lucide-react/dist/esm/icons/arrow-right"
89

910
import { cn } from "@/lib/utils"
1011
import { Button } from "@/components/ui/button"

‎src/components/ui/checkbox.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import { ComponentProps } from "react"
44
import * as CheckboxPrimitive from "@radix-ui/react-checkbox"
5-
import { CheckIcon } from "lucide-react"
5+
import CheckIcon from "lucide-react/dist/esm/icons/check"
66

77
import { cn } from "@/lib/utils"
88

‎src/components/ui/command.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import { ComponentProps } from "react"
44
import { Command as CommandPrimitive } from "cmdk"
5-
import { SearchIcon } from "lucide-react"
5+
import SearchIcon from "lucide-react/dist/esm/icons/search"
66

77
import { cn } from "@/lib/utils"
88
import {

‎src/components/ui/context-menu.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import { ComponentProps } from "react"
44
import * as ContextMenuPrimitive from "@radix-ui/react-context-menu"
5-
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react"
5+
import CheckIcon from "lucide-react/dist/esm/icons/check";
6+
import ChevronRightIcon from "lucide-react/dist/esm/icons/chevron-right"
7+
import CircleIcon from "lucide-react/dist/esm/icons/circle"
68

79
import { cn } from "@/lib/utils"
810

‎src/components/ui/dialog.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { ComponentProps } from "react"
22
import * as DialogPrimitive from "@radix-ui/react-dialog"
3-
import { XIcon } from "lucide-react"
3+
import XIcon from "lucide-react/dist/esm/icons/x"
44

55
import { cn } from "@/lib/utils"
66

‎src/components/ui/dropdown-menu.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
import { ComponentProps } from "react"
44
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"
5-
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react"
5+
import CheckIcon from "lucide-react/dist/esm/icons/check"
6+
import ChevronRightIcon from "lucide-react/dist/esm/icons/chevron-right"
7+
import CircleIcon from "lucide-react/dist/esm/icons/circle"
68

79
import { cn } from "@/lib/utils"
810

‎src/components/ui/input-otp.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import { ComponentProps, useContext } from "react"
44
import { OTPInput, OTPInputContext } from "input-otp"
5-
import { MinusIcon } from "lucide-react"
5+
import MinusIcon from "lucide-react/dist/esm/icons/minus"
66

77
import { cn } from "@/lib/utils"
88

0 commit comments

Comments
 (0)