From 578cf38072591d784742f94aeade4b72835e2f0b Mon Sep 17 00:00:00 2001 From: icarus Date: Wed, 22 Oct 2025 05:26:00 +0800 Subject: [PATCH] feat(ui): add new spinner component and update lucide-react - Add new general-purpose spinner component with multiple variants - Rename old Spinner component to SearchSpinner to clarify its purpose - Update lucide-react dependency to v0.546.0 --- package.json | 2 +- .../ui/src/components/base/Spinner/index.tsx | 1 + packages/ui/src/components/index.ts | 3 +- .../components/ui/shadcn-io/spinner/index.tsx | 215 ++++++++++++++++++ yarn.lock | 20 +- 5 files changed, 229 insertions(+), 12 deletions(-) create mode 100644 packages/ui/src/components/ui/shadcn-io/spinner/index.tsx diff --git a/package.json b/package.json index e28b7841c4..bb1d87f0b3 100644 --- a/package.json +++ b/package.json @@ -291,7 +291,7 @@ "lint-staged": "^15.5.0", "lodash": "^4.17.21", "lru-cache": "^11.1.0", - "lucide-react": "^0.525.0", + "lucide-react": "^0.546.0", "macos-release": "^3.4.0", "markdown-it": "^14.1.0", "mermaid": "^11.10.1", diff --git a/packages/ui/src/components/base/Spinner/index.tsx b/packages/ui/src/components/base/Spinner/index.tsx index c149c2a934..f6b81ffd67 100644 --- a/packages/ui/src/components/base/Spinner/index.tsx +++ b/packages/ui/src/components/base/Spinner/index.tsx @@ -17,6 +17,7 @@ const spinnerVariants = { } } +// FIXME: This is not a general spinner. It's just for searching. export default function Spinner({ text, className = '' }: Props) { return ( + +const Default = ({ className, ...props }: SpinnerVariantProps) => ( + +) + +const Circle = ({ className, ...props }: SpinnerVariantProps) => ( + +) + +const Pinwheel = ({ className, ...props }: SpinnerVariantProps) => ( + +) + +const CircleFilled = ({ className, size = 24, ...props }: SpinnerVariantProps) => ( +
+
+ +
+ +
+) + +const Ellipsis = ({ size = 24, ...props }: SpinnerVariantProps) => { + return ( + + Loading... + + + + + + + + + + + ) +} + +const Ring = ({ size = 24, ...props }: SpinnerVariantProps) => ( + + Loading... + + + + + + + + + + + +) + +const Bars = ({ size = 24, ...props }: SpinnerVariantProps) => ( + + Loading... + + + + + +) + +const Infinite = ({ size = 24, ...props }: SpinnerVariantProps) => ( + + Loading... + + + + +) + +export type SpinnerProps = LucideProps & { + variant?: 'default' | 'circle' | 'pinwheel' | 'circle-filled' | 'ellipsis' | 'ring' | 'bars' | 'infinite' +} + +export const Spinner = ({ variant, ...props }: SpinnerProps) => { + switch (variant) { + case 'circle': + return + case 'pinwheel': + return + case 'circle-filled': + return + case 'ellipsis': + return + case 'ring': + return + case 'bars': + return + case 'infinite': + return + default: + return + } +} diff --git a/yarn.lock b/yarn.lock index 5857c8bcd4..00637c04bd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17318,7 +17318,7 @@ __metadata: lint-staged: "npm:^15.5.0" lodash: "npm:^4.17.21" lru-cache: "npm:^11.1.0" - lucide-react: "npm:^0.525.0" + lucide-react: "npm:^0.546.0" macos-release: "npm:^3.4.0" markdown-it: "npm:^14.1.0" mermaid: "npm:^11.10.1" @@ -25322,15 +25322,6 @@ __metadata: languageName: node linkType: hard -"lucide-react@npm:^0.525.0": - version: 0.525.0 - resolution: "lucide-react@npm:0.525.0" - peerDependencies: - react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 - checksum: 10c0/81c4438e2cf1c86ea2ebe0a97b378201512450894283cccce766a89bc6a4e47c8df1d9115d845d98f582bb0a10be31c454aa232520fea35018dac1cd8466ea9b - languageName: node - linkType: hard - "lucide-react@npm:^0.545.0": version: 0.545.0 resolution: "lucide-react@npm:0.545.0" @@ -25340,6 +25331,15 @@ __metadata: languageName: node linkType: hard +"lucide-react@npm:^0.546.0": + version: 0.546.0 + resolution: "lucide-react@npm:0.546.0" + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 10c0/42ee0bd358517f012297aefb69b54da0b3c62f1ac8485ffa24141b63f05c9f4a682eacc2637c4b13f597aed11f9a8c79627af0c17717400bebb25581daeaad80 + languageName: node + linkType: hard + "lz-string@npm:^1.5.0": version: 1.5.0 resolution: "lz-string@npm:1.5.0"