diff --git a/package.json b/package.json index 025f586..5a1012f 100644 --- a/package.json +++ b/package.json @@ -77,14 +77,12 @@ "scripts": { "clean": "rm -rf node_modules", "contributors": "(npx git-authors-cli && npx finepack && git add package.json && git commit -m 'build: contributors' --no-verify) || true", - "dev": "nodemon --exec \"npm start\" -e \"js\"", "lint": "standard-markdown README.md && standard", "postrelease": "npm run release:tags && npm run release:github && (ci-publish || npm publish --access=public)", "pretest": "npm run lint", "release": "standard-version -a", "release:github": "conventional-github-releaser -p angular", "release:tags": "git push --follow-tags origin HEAD:master", - "start": "node index.js", "test": "c8 ava" }, "license": "MIT", diff --git a/website/src/components/color-extractor.tsx b/website/src/components/color-extractor.tsx index d2a2879..896a505 100644 --- a/website/src/components/color-extractor.tsx +++ b/website/src/components/color-extractor.tsx @@ -1,12 +1,12 @@ /* eslint-disable @next/next/no-img-element */ 'use client' +import { creatCopyToClipboard } from '@/lib/copy-to-clipboard' import { Loader2, RefreshCcw } from 'lucide-react' import { Button } from '@/components/ui/button' -import { useCallback, useState } from 'react' import { useDropzone } from 'react-dropzone' import { useToast } from '@/hooks/use-toast' -import { creatCopyToClipboard } from '@/lib/copy-to-clipboard' +import { useState } from 'react' interface ColorFormat { rgb: string @@ -45,41 +45,38 @@ export function ColorExtractor () { const { toast } = useToast() const copyToClipboard = creatCopyToClipboard(toast) - const [imageUrl, setImageUrl] = useState('') + const [imageUrl, setImageUrl] = useState(undefined) const [colors, setColors] = useState([]) const [isLoading, setIsLoading] = useState(false) - const onDrop = useCallback(async (acceptedFiles: File[]) => { + const onDrop = async (acceptedFiles: File[]) => { const formData = new FormData() - const base64data = await getBase64(acceptedFiles[0]) formData.append('file', acceptedFiles[0]) await processFiles(formData) - await setImageUrl(base64data) - }, []) + } const { getRootProps, getInputProps } = useDropzone({ onDrop }) const handleUrlSubmit = async (e: React.FormEvent) => { - console.log('ola puto') e.preventDefault() if (imageUrl) { - console.log('TODO') - // await processFiles(imageUrl) + const res = await fetch(imageUrl) + const buffer = Buffer.from(await res.arrayBuffer()) + const formData = new FormData() + formData.append('file', new Blob([buffer])) + await processFiles(formData) } } const processFiles = async (formData: FormData) => { - setIsLoading(true) const res = await fetch('/api/', { method: 'POST', body: formData }) - const palette = await res.json() - console.log(palette) - setColors(palette) + setColors(await res.json()) + if (!imageUrl) setImageUrl(await getBase64(formData.get('file') as File)) setIsLoading(false) - setImageUrl('') // Clear the input field after processing } const resetState = () => { @@ -93,40 +90,45 @@ export function ColorExtractor () { } return ( -
+
{colors.length === 0 ? (
-

DRAG AN IMAGE HERE

+

+ {isLoading && } + {!isLoading && 'DRAG AN IMAGE HERE'} +

-
- setImageUrl(e.target.value)} - onClick={handleFormClick} - placeholder='or paste an image URL' - className='flex-grow px-4 py-2 border-2 border-zinc-400 hover:border-primary focus:border-primary hover:outline-none focus:outline-none rounded-lg h-10' - /> - -
+ setImageUrl(e.target.value)} + onClick={handleFormClick} + placeholder='or paste an image URL' + className='flex-grow px-4 py-2 border-2 border-zinc-400 hover:border-primary focus:border-primary hover:outline-none focus:outline-none rounded-lg h-10 w-full' + /> + + + )}
) : (
@@ -143,12 +145,8 @@ export function ColorExtractor () {
copyToClipboard(color.hex, `Color ${color.hex}`)} key={index} - className='cursor-pointer rounded-lg shadow-md' - style={{ - height: '6rem', - width: '6rem', - backgroundColor: color.hex - }} + className='cursor-pointer rounded-lg shadow-md lg:h-24 lg:w-24 h-20 w-20' + style={{ backgroundColor: color.hex }} >
@@ -161,14 +159,14 @@ export function ColorExtractor () {
-
-

Adjust the colors above or click 'Randomize' for a surprise palette.

-

- When you're ready, click 'Visualize' to see your palette in full screen! -

-
) diff --git a/website/src/components/faq.tsx b/website/src/components/faq.tsx index 2c76f88..47eb022 100644 --- a/website/src/components/faq.tsx +++ b/website/src/components/faq.tsx @@ -19,7 +19,7 @@ export function FAQ () { const copyToClipboard = creatCopyToClipboard(toast) return ( -
+

What is Splashy?

@@ -46,7 +46,7 @@ export function FAQ () {

copyToClipboard(microlinkSnippet, 'npm install')} + onClick={() => copyToClipboard('npm install splashy --save', 'npm install')} > npm install splashy --save @@ -65,7 +65,12 @@ export function FAQ () { Microlink API{' '} is already provisioned and ready to be used passing `palette` query parameter:

- {microlinkSnippet} + copyToClipboard(microlinkSnippet, 'microlink snippet')} + > + {microlinkSnippet} +

We recommend to consume splashy from Microlink API.

diff --git a/website/src/components/footer.tsx b/website/src/components/footer.tsx index 8f1c1dc..37adaf8 100644 --- a/website/src/components/footer.tsx +++ b/website/src/components/footer.tsx @@ -7,7 +7,7 @@ import { cn } from '@/lib/utils' export const Footer = () => { const pathname = usePathname() return ( -