@@ -7,14 +7,15 @@ import { UseFaviconExample } from 'dev/components/examples/use-favicon/use-favic
77import { UseHotkeysExample } from 'dev/components/examples/use-hotkeys/use-hotkeys.example' ;
88import { UseHoverExample } from 'dev/components/examples/use-hover/use-hover.example' ;
99import { UseIdleExample } from 'dev/components/examples/use-idle/use-idle.example' ;
10+ import { UseLocalStorageExample } from 'dev/components/examples/use-local-storage/use-local-storage.example' ;
1011import { UseMountedExample } from 'dev/components/examples/use-mounted/use-mounted.example' ;
1112import { UseNetworkExample } from 'dev/components/examples/use-network/use-network.example' ;
1213import { UseOsExample } from 'dev/components/examples/use-os/use-os.example' ;
1314import { UseResizeObserverExample } from 'dev/components/examples/use-resize-observer/use-resize-observer.example' ;
1415import { UseToggleExample } from 'dev/components/examples/use-toggle/use-toggle.example' ;
15- import { IconLogo } from 'dev/icons' ;
16- import { createMemo , createSignal , For } from 'solid-js' ;
17- import { useOs } from 'src' ;
16+ import { IconCheck , IconCopy , IconGithub , IconLogo } from 'dev/icons' ;
17+ import { createMemo , createSignal , For , Show } from 'solid-js' ;
18+ import { useOs , useToggle } from 'src' ;
1819
1920export default function HomePage ( ) {
2021 // // let ref = useClickOutside(() =>
@@ -83,14 +84,35 @@ export default function HomePage() {
8384 title : 'useFavicon' ,
8485 example : < UseFaviconExample /> ,
8586 } ,
87+ {
88+ title : 'useLocalStorage' ,
89+ example : < UseLocalStorageExample /> ,
90+ } ,
8691 ] ;
8792
8893 const filteredList = createMemo ( ( ) => {
8994 return LIST . filter ( item => item . title . toLowerCase ( ) . includes ( searchInput ( ) . toLowerCase ( ) ) ) ;
9095 } ) ;
9196
97+ const [ copied , setCopied ] = createSignal ( false ) ;
98+ const [ pkgManager , togglePkgManager ] = useToggle ( [ 'npm' , 'bun' , 'pnpm' , 'yarn' ] as const ) ;
99+ const pkgManagerColor = createMemo ( ( ) => {
100+ if ( pkgManager ( ) === 'npm' ) return '#E5312F' ;
101+ if ( pkgManager ( ) === 'bun' ) return '#FBF0DF' ;
102+ if ( pkgManager ( ) === 'pnpm' ) return '#F9AD00' ;
103+ if ( pkgManager ( ) === 'yarn' ) return '#2C8EBB' ;
104+ return undefined ;
105+ } ) ;
106+
92107 return (
93- < div class = "flex flex-col items-start gap-y-5" >
108+ < div class = "relative flex flex-col items-start gap-y-5" >
109+ < a
110+ href = "https://github.com/Blankeos/bagon-hooks"
111+ target = "_blank"
112+ class = "absolute right-0 top-0 m-5 p-1 transition active:scale-95"
113+ >
114+ < IconGithub class = "h-6 w-6 text-white" />
115+ </ a >
94116 < div class = "mx-auto flex w-full max-w-4xl flex-col gap-y-5 px-4 py-20" >
95117 < IconLogo width = { 80 } height = { 80 } variant = "inverted" class = "self-center" />
96118
@@ -100,8 +122,34 @@ export default function HomePage() {
100122 some improvements.
101123 </ p >
102124
103- < div class = "mx-auto rounded-md border border-neutral-950 bg-neutral-800 p-4 text-muted" >
104- npm install bagon-hooks
125+ < div class = "class mx-auto flex items-center gap-x-4 rounded-md border border-neutral-950 bg-neutral-800 p-4 text-muted" >
126+ < span >
127+ < span class = "text-green-500" > { '>' } </ span > { ' ' }
128+ < button
129+ class = "rounded-md border bg-opacity-50 px-1.5 font-semibold"
130+ style = { { 'border-color' : pkgManagerColor ( ) } }
131+ onClick = { togglePkgManager }
132+ >
133+ { pkgManager ( ) }
134+ </ button > { ' ' }
135+ install bagon-hooks
136+ </ span >
137+ < button
138+ class = "transition active:scale-90"
139+ onClick = { ( ) => {
140+ navigator . clipboard . writeText ( `${ pkgManager ( ) } install bagon-hooks` ) ;
141+ setCopied ( true ) ;
142+ setTimeout ( ( ) => {
143+ setCopied ( false ) ;
144+ } , 800 ) ;
145+ } }
146+ >
147+ < Show
148+ when = { copied ( ) }
149+ fallback = { < IconCopy width = { 23 } height = { 23 } /> }
150+ children = { < IconCheck width = { 23 } height = { 23 } /> }
151+ />
152+ </ button >
105153 </ div >
106154
107155 < input
0 commit comments