diff --git a/bun.lock b/bun.lock index 3511a3d..7a31a1b 100644 --- a/bun.lock +++ b/bun.lock @@ -7,6 +7,7 @@ "dependencies": { "@base-ui/react": "^1.8.0", "@hookform/resolvers": "^5.2.2", + "@phosphor-icons/react": "^2.1.10", "@tanstack/react-table": "^9.2.4", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", @@ -15,7 +16,6 @@ "date-fns": "^4.1.0", "embla-carousel-react": "^8.6.0", "input-otp": "^1.4.2", - "lucide-react": "^0.553.0", "next-themes": "^0.4.6", "react-day-picker": "^10.0.1", "react-hook-form": "^7.66.0", @@ -296,6 +296,8 @@ "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], + "@phosphor-icons/react": ["@phosphor-icons/react@2.1.10", "", { "peerDependencies": { "react": ">= 16.8", "react-dom": ">= 16.8" } }, "sha512-vt8Tvq8GLjheAZZYa+YG/pW7HDbov8El/MANW8pOAz4eGxrwhnbfrQZq0Cp4q8zBEu8NIhHdnr+r8thnfRSNYA=="], + "@pkgjs/parseargs": ["@pkgjs/parseargs@0.11.0", "", {}, "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="], "@polka/url": ["@polka/url@1.0.0-next.29", "", {}, "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww=="], @@ -1054,8 +1056,6 @@ "lru-cache": ["lru-cache@11.2.2", "", {}, "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg=="], - "lucide-react": ["lucide-react@0.553.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-BRgX5zrWmNy/lkVAe0dXBgd7XQdZ3HTf+Hwe3c9WK6dqgnj9h+hxV+MDncM88xDWlCq27+TKvHGE70ViODNILw=="], - "lz-string": ["lz-string@1.5.0", "", { "bin": { "lz-string": "bin/bin.js" } }, "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ=="], "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], diff --git a/components.json b/components.json index 4167be2..f41a1fc 100644 --- a/components.json +++ b/components.json @@ -17,7 +17,7 @@ "lib": "@/lib", "hooks": "@/hooks" }, - "iconLibrary": "lucide", + "iconLibrary": "phosphor", "rtl": false, "menuColor": "default-translucent", "menuAccent": "subtle", diff --git a/package.json b/package.json index b641d6f..b5762c5 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,7 @@ "dependencies": { "@base-ui/react": "^1.8.0", "@hookform/resolvers": "^5.2.2", + "@phosphor-icons/react": "^2.1.10", "@tanstack/react-table": "^9.2.4", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", @@ -66,7 +67,6 @@ "date-fns": "^4.1.0", "embla-carousel-react": "^8.6.0", "input-otp": "^1.4.2", - "lucide-react": "^0.553.0", "next-themes": "^0.4.6", "react-day-picker": "^10.0.1", "react-hook-form": "^7.66.0", diff --git a/src/components/accordion.tsx b/src/components/accordion.tsx index b3c321b..fff9e44 100644 --- a/src/components/accordion.tsx +++ b/src/components/accordion.tsx @@ -1,6 +1,6 @@ import { Accordion as AccordionPrimitive } from "@base-ui/react/accordion"; +import { CaretDownIcon, CaretUpIcon } from "@phosphor-icons/react"; import { cn } from "cn"; -import { ChevronDownIcon, ChevronUpIcon } from "lucide-react"; function Accordion({ className, ...props }: AccordionPrimitive.Root.Props) { return ( @@ -44,11 +44,11 @@ function AccordionTrigger({ {...props} > {children} - - diff --git a/src/components/breadcrumb.tsx b/src/components/breadcrumb.tsx index 8c01d79..75e0f48 100644 --- a/src/components/breadcrumb.tsx +++ b/src/components/breadcrumb.tsx @@ -1,7 +1,7 @@ import { mergeProps } from "@base-ui/react/merge-props"; import { useRender } from "@base-ui/react/use-render"; +import { CaretRightIcon, DotsThreeIcon } from "@phosphor-icons/react"; import { cn } from "cn"; -import { ChevronRightIcon, MoreHorizontalIcon } from "lucide-react"; import type * as React from "react"; function Breadcrumb({ className, ...props }: React.ComponentProps<"nav">) { @@ -87,7 +87,7 @@ function BreadcrumbSeparator({ className={cn("fui:[&>svg]:size-3.5", className)} {...props} > - {children ?? } + {children ?? } ); } @@ -107,7 +107,7 @@ function BreadcrumbEllipsis({ )} {...props} > - + More ); diff --git a/src/components/calendar.tsx b/src/components/calendar.tsx index a520410..a6112fa 100644 --- a/src/components/calendar.tsx +++ b/src/components/calendar.tsx @@ -1,9 +1,9 @@ -import { cn } from "cn"; import { - ChevronDownIcon, - ChevronLeftIcon, - ChevronRightIcon, -} from "lucide-react"; + CaretDownIcon, + CaretLeftIcon, + CaretRightIcon, +} from "@phosphor-icons/react"; +import { cn } from "cn"; import * as React from "react"; import { type DayButton, @@ -154,7 +154,7 @@ function Calendar({ Chevron: ({ className, orientation, ...props }) => { if (orientation === "left") { return ( - @@ -163,7 +163,7 @@ function Calendar({ if (orientation === "right") { return ( - @@ -171,10 +171,7 @@ function Calendar({ } return ( - + ); }, DayButton: ({ ...props }) => ( diff --git a/src/components/carousel.tsx b/src/components/carousel.tsx index 4220f4e..267bb78 100644 --- a/src/components/carousel.tsx +++ b/src/components/carousel.tsx @@ -1,8 +1,8 @@ +import { CaretLeftIcon, CaretRightIcon } from "@phosphor-icons/react"; import { cn } from "cn"; import useEmblaCarousel, { type UseEmblaCarouselType, } from "embla-carousel-react"; -import { ChevronLeftIcon, ChevronRightIcon } from "lucide-react"; import * as React from "react"; import { Button } from "@/components/button"; @@ -192,7 +192,7 @@ function CarouselPrevious({ onClick={scrollPrev} {...props} > - + Previous slide ); @@ -222,7 +222,7 @@ function CarouselNext({ onClick={scrollNext} {...props} > - + Next slide ); diff --git a/src/components/chart.tsx b/src/components/chart.tsx index 2d407b5..18bf434 100644 --- a/src/components/chart.tsx +++ b/src/components/chart.tsx @@ -370,3 +370,12 @@ export { ChartLegendContent, ChartStyle, }; + +// The marks, axes and grids come from recharts itself; only the container, +// tooltip and legend are wrapped above. Re-exporting them from this module — +// rather than from an entry point of their own — is what keeps there being one +// recharts in the graph: a bundler pre-bundling two entry points that each +// depend on recharts produces two copies of it, and recharts 3 holds its chart +// state in a React context, so marks from one copy render nothing inside a +// container from the other. +export * from "recharts"; diff --git a/src/components/checkbox.tsx b/src/components/checkbox.tsx index 33a6bb6..102816b 100644 --- a/src/components/checkbox.tsx +++ b/src/components/checkbox.tsx @@ -1,8 +1,8 @@ "use client"; import { Checkbox as CheckboxPrimitive } from "@base-ui/react/checkbox"; +import { CheckIcon } from "@phosphor-icons/react"; import { cn } from "cn"; -import { CheckIcon } from "lucide-react"; import * as React from "react"; import { Label } from "@/components/label"; diff --git a/src/components/command.tsx b/src/components/command.tsx index dbb8842..9515b17 100644 --- a/src/components/command.tsx +++ b/src/components/command.tsx @@ -1,6 +1,6 @@ +import { CheckIcon, MagnifyingGlassIcon } from "@phosphor-icons/react"; import { Command as CommandPrimitive } from "cmdk"; import { cn } from "cn"; -import { CheckIcon, SearchIcon } from "lucide-react"; import type * as React from "react"; import { Dialog, @@ -76,7 +76,7 @@ function CommandInput({ {...props} /> - + diff --git a/src/components/context-menu.tsx b/src/components/context-menu.tsx index e67c643..f98482d 100644 --- a/src/components/context-menu.tsx +++ b/src/components/context-menu.tsx @@ -1,6 +1,6 @@ import { ContextMenu as ContextMenuPrimitive } from "@base-ui/react/context-menu"; +import { CaretRightIcon, CheckIcon } from "@phosphor-icons/react"; import { cn } from "cn"; -import { CheckIcon, ChevronRightIcon } from "lucide-react"; import type * as React from "react"; function ContextMenu({ ...props }: ContextMenuPrimitive.Root.Props) { @@ -134,7 +134,7 @@ function ContextMenuSubTrigger({ {...props} > {children} - + ); } diff --git a/src/components/data-table.tsx b/src/components/data-table.tsx index 0aafa5a..b2d0d6c 100644 --- a/src/components/data-table.tsx +++ b/src/components/data-table.tsx @@ -1,5 +1,16 @@ "use client"; +import { + ArrowDownIcon, + ArrowUpIcon, + CaretDoubleLeftIcon, + CaretDoubleRightIcon, + CaretLeftIcon, + CaretRightIcon, + CaretUpDownIcon, + MagnifyingGlassIcon, + SlidersHorizontalIcon, +} from "@phosphor-icons/react"; import { type Column, type ColumnDef, @@ -28,17 +39,6 @@ import { useTable, } from "@tanstack/react-table"; import { cn } from "cn"; -import { - ArrowDownIcon, - ArrowUpIcon, - ChevronLeftIcon, - ChevronRightIcon, - ChevronsLeftIcon, - ChevronsRightIcon, - ChevronsUpDownIcon, - SearchIcon, - Settings2Icon, -} from "lucide-react"; import * as React from "react"; import { Button } from "@/components/button"; @@ -159,7 +159,7 @@ function DataTableColumnHeader< ? ArrowUpIcon : sorted === "desc" ? ArrowDownIcon - : ChevronsUpDownIcon; + : CaretUpDownIcon; return (
- + - + Columns } @@ -616,7 +616,7 @@ function DataTable< onClick={() => table.firstPage()} disabled={!table.getCanPreviousPage()} > - + First page
diff --git a/src/components/dialog.tsx b/src/components/dialog.tsx index b6ed84e..8680e51 100644 --- a/src/components/dialog.tsx +++ b/src/components/dialog.tsx @@ -1,8 +1,8 @@ "use client"; import { Dialog as DialogPrimitive } from "@base-ui/react/dialog"; +import { XIcon } from "@phosphor-icons/react"; import { cn } from "cn"; -import { XIcon } from "lucide-react"; import type * as React from "react"; import { Button } from "@/components/button"; diff --git a/src/components/dropdown-menu.tsx b/src/components/dropdown-menu.tsx index 212269e..a6224cb 100644 --- a/src/components/dropdown-menu.tsx +++ b/src/components/dropdown-menu.tsx @@ -1,6 +1,6 @@ import { Menu as MenuPrimitive } from "@base-ui/react/menu"; +import { CaretRightIcon, CheckIcon } from "@phosphor-icons/react"; import { cn } from "cn"; -import { CheckIcon, ChevronRightIcon } from "lucide-react"; import type * as React from "react"; function DropdownMenu({ ...props }: MenuPrimitive.Root.Props) { @@ -119,7 +119,7 @@ function DropdownMenuSubTrigger({ {...props} > {children} - + ); } diff --git a/src/components/filters.tsx b/src/components/filters.tsx index 86a0128..6d7764f 100644 --- a/src/components/filters.tsx +++ b/src/components/filters.tsx @@ -1,6 +1,10 @@ +import { + CalendarIcon, + MagnifyingGlassIcon, + XIcon, +} from "@phosphor-icons/react"; import { cn } from "cn"; import { format } from "date-fns"; -import { CalendarIcon, SearchIcon, XIcon } from "lucide-react"; import * as React from "react"; import { Button } from "@/components/button"; import { Calendar } from "@/components/calendar"; @@ -161,7 +165,7 @@ function FilterSearch({ at that size and shrinks it for a compact bar. */} - + {children}{" "} -