From 75cd5caa047fbcb78cda132be90399c2549cc90b Mon Sep 17 00:00:00 2001 From: ngc2207 Date: Wed, 29 Jan 2025 01:14:06 +0800 Subject: [PATCH] feat(theme): add theme switcher component with radio group for light, dark, system modes and skeleton loading state --- bun.lockb | Bin 161505 -> 169597 bytes package.json | 1 + public/ui-dark.png | Bin 0 -> 364 bytes public/ui-light.png | Bin 0 -> 370 bytes public/ui-system.png | Bin 0 -> 414 bytes src/app/globals.css | 19 +++++------ src/components/ui/radio-group.tsx | 51 ++++++++++++++++++++++++++++++ src/components/ui/skeleton.tsx | 15 +++++++++ 8 files changed, 77 insertions(+), 9 deletions(-) create mode 100644 public/ui-dark.png create mode 100644 public/ui-light.png create mode 100644 public/ui-system.png create mode 100644 src/components/ui/radio-group.tsx create mode 100644 src/components/ui/skeleton.tsx diff --git a/bun.lockb b/bun.lockb index 099e70a0ded95046ed6369d2b1b93b4b904730d3..4834d554205e33492da4bd379980f700513ac3cc 100755 GIT binary patch delta 34116 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 LzM-Dr+3EiS-f+Z$ delta 28641 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 diff --git a/package.json b/package.json index 232461f..107c996 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "lint": "next lint" }, "dependencies": { + "@radix-ui/react-radio-group": "^1.2.2", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "lucide-react": "^0.474.0", diff --git a/public/ui-dark.png b/public/ui-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..a67fcc0f65de319cde4e42573e0e38738881327a GIT binary patch literal 364 zcmV-y0h9iTP)g4#F@D1<*=aSS=N? zXDDkKkXSQtfT}$~ZvZ#o<}gMjQKj0yGU)#y;~SFr%MHUY48t%CCbvP1vT#Kpa7ZBd zARzdHf?p^&pJoSzSgfL-meOxJL>lJI%l~6scvX9rx*?d2ST?PE{jQ8WI|I^7MOt{j= z>wRmoVvQznDwm8N-m(mD?qlCq0eifVzWdhqfDk53m@r|&`@?VC^&2?8`}_F#`Qzi`_4W4z0KEbL009z7L_t(&-tE@03WG2h1Yps{HBcp^ z1d3}44qc1jp1y(5C-4pW=IxkLg@AXGmb>8}zaim2{z6d{MNt%mlWQ=be7dzU95|5R z+K}K23x2ZTz=91MZk8^@69(U%JI50Sm(KO^gu(8ec;*i;&UNw3|MQx%5An=@K?Dmv z5H0`_ELgB$!8o{jkcxgVBzR`Qh6Ue#?kQ-WSIxRB1Pk8R$JVb}fR!FsEkFsis}`V- zPpcN9k6BM)Gy1%wKAwC=3nEx>ZhgE_&gc_s+*d-|X?OH-S~M*si++1c6p`uf}3+vn%%{r&y-_xI!D<32t_I5<8kDlYT$^+lz+4gdfFEJ;K` zRA}Dq*0Bx3Knw-Ytbi0LT?*Pfgz;Y;uzYCWOe;o5r}I2ggTH-b-A@Y4zoRek!PU(u=+E8=?yX>N1z&$|6lTk-di)iD0n75(MFtk1^vJ;C5ONGG&f|uG<$0XZ zC?w01=kX9TIuO8sbIW5UoV8!9Q5HgcIi)=2!&&`5HXDWc@|6GMA^z#*0S5d%kNIa< z{$hYwAz<}q6Uo?%s{C`4aeE, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => { + return ( + + ); +}); +RadioGroup.displayName = RadioGroupPrimitive.Root.displayName; + +const RadioGroupItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => { + return ( + + + + + + + + ); +}); +RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName; + +export { RadioGroup, RadioGroupItem }; diff --git a/src/components/ui/skeleton.tsx b/src/components/ui/skeleton.tsx new file mode 100644 index 0000000..c26c4ea --- /dev/null +++ b/src/components/ui/skeleton.tsx @@ -0,0 +1,15 @@ +import { cn } from "@/lib/utils"; + +function Skeleton({ + className, + ...props +}: React.HTMLAttributes) { + return ( +
+ ); +} + +export { Skeleton };