|
1 |
| -import { styles } from '@/ui/style'; |
2 |
| -import { viga } from '@/ui/fonts'; |
| 1 | +'use client'; |
| 2 | + |
| 3 | +import React from 'react'; |
| 4 | +import { hexToRgb, calculateLuminance, rgbToHsl } from '@/utils/colorPicker'; |
| 5 | +// import { styles } from '@/ui/style'; |
| 6 | +// import { viga } from '@/ui/fonts'; |
3 | 7 |
|
4 | 8 | export default function ColorPalettes() {
|
| 9 | + const [activeColor, setActiveColor] = React.useState('#eeeeee'); |
| 10 | + const [textColor, setTextColor] = React.useState('#1a1a1a'); |
| 11 | + const [terminalColor, setTerminalColor] = React.useState('#dedede'); |
| 12 | + |
| 13 | + const handleChangeColor = (newColor) => { |
| 14 | + setActiveColor(newColor); |
| 15 | + |
| 16 | + const luminance = calculateLuminance(newColor); |
| 17 | + if (luminance > 0.5) { |
| 18 | + setTextColor('#1a1a1a'); |
| 19 | + setTerminalColor('#dedede'); |
| 20 | + } else { |
| 21 | + setTextColor('#eeeeee'); |
| 22 | + setTerminalColor('#3b3b3b'); |
| 23 | + } |
| 24 | + }; |
| 25 | + |
| 26 | + const rgb = hexToRgb(activeColor); |
| 27 | + const hsl = rgbToHsl(rgb); |
| 28 | + |
5 | 29 | return (
|
6 |
| - <main className={`${styles.flexCenter} mx-72 my-24 flex-wrap gap-8`}> |
7 |
| - <div className={`${styles.colorCard} p-4`}> |
8 |
| - <div className="h-4/6"> |
9 |
| - <div |
10 |
| - className={`${styles.customBorder} flex h-3/5 items-end bg-[#FFFFE3]`} |
11 |
| - > |
12 |
| - <p className={`${viga.className} pl-2 text-[#10100E]`}>#FFFFE3</p> |
13 |
| - </div> |
14 |
| - <div className={`${styles.customBorder} h-2/5 bg-[#10100E]`}> |
15 |
| - <p className={`${viga.className} pl-2 text-[#FFFFE3]`}>#10100E</p> |
16 |
| - </div> |
| 30 | + <main className="mx-60 my-40"> |
| 31 | + <div |
| 32 | + style={{ backgroundColor: activeColor, color: textColor }} |
| 33 | + className="my-10 flex h-80 items-center justify-evenly rounded border border-blck/30 text-sm shadow-lg" |
| 34 | + > |
| 35 | + <div className="flex items-center gap-2"> |
| 36 | + {/* maybe add hex input, rgb input, and hsl input */} |
| 37 | + <p>Test your color:</p> |
| 38 | + <input |
| 39 | + type="color" |
| 40 | + id="chosenColor" |
| 41 | + value={`${activeColor}`} |
| 42 | + onChange={(e) => handleChangeColor(e.target.value)} |
| 43 | + /> |
17 | 44 | </div>
|
18 |
| - <div className="mt-2 h-2/6"> |
19 |
| - <p className="text-2xl font-bold">PORTFOLIO THEME</p> |
20 |
| - <p> |
21 |
| - This color palette was the one used in the developer's |
22 |
| - portfolio. |
23 |
| - </p> |
24 |
| - </div> |
25 |
| - </div> |
26 |
| - <div className={`${styles.colorCard} p-4`}> |
27 |
| - <div className="h-4/6"> |
28 |
| - <div |
29 |
| - className={`${styles.customBorder} flex h-3/5 items-end bg-[#1A1A1A]`} |
30 |
| - > |
31 |
| - <p className={`${viga.className} pl-2 text-whte`}>#1A1A1A</p> |
32 |
| - </div> |
33 |
| - <div |
34 |
| - className={`${styles.customBorder} flex h-1/5 items-center bg-whte`} |
35 |
| - > |
36 |
| - <p className={`${viga.className} pl-2 text-[#1A1A1A]`}>#EEEEEE</p> |
| 45 | + <div className="flex gap-4"> |
| 46 | + <div className="flex items-center gap-2"> |
| 47 | + <span className="font-bold">HEX:</span> |
| 48 | + <code |
| 49 | + className="rounded border border-blck/30 px-5 py-1" |
| 50 | + style={{ backgroundColor: terminalColor }} |
| 51 | + > |
| 52 | + {activeColor} |
| 53 | + </code> |
| 54 | + </div> |
| 55 | + <div className="flex items-center gap-2"> |
| 56 | + <span className="font-bold">RGB:</span> |
| 57 | + <code |
| 58 | + className="rounded border border-blck/30 px-5 py-1" |
| 59 | + style={{ backgroundColor: terminalColor }} |
| 60 | + > |
| 61 | + {`rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`} |
| 62 | + </code> |
| 63 | + </div> |
| 64 | + <div className="flex items-center gap-2"> |
| 65 | + <span className="font-bold">HSL:</span> |
| 66 | + <code |
| 67 | + className="rounded border border-blck/30 px-5 py-1" |
| 68 | + style={{ backgroundColor: terminalColor }} |
| 69 | + > |
| 70 | + {`hsl(${hsl[0]}, ${hsl[1]}%, ${hsl[2]}%)`} |
| 71 | + </code> |
37 | 72 | </div>
|
38 |
| - <div className={`${styles.customBorder} h-1/5 bg-[#0BC6AB]`}> |
39 |
| - <p className={`${viga.className} pl-2 text-[#1A1A1A]`}>#0BC6AB</p> |
40 |
| - </div> |
41 |
| - </div> |
42 |
| - <div className="mt-2 h-2/6"> |
43 |
| - <p className="text-2xl font-bold">DARK-TECHY THEME</p> |
44 |
| - <p> |
45 |
| - This was used for an org website that the developer once worked on. |
46 |
| - </p> |
47 | 73 | </div>
|
48 | 74 | </div>
|
49 |
| - <div className={`${styles.colorCard} p-4`}> |
50 |
| - <div className="h-4/6"> |
51 |
| - <div |
52 |
| - className={`${styles.customBorder} flex h-3/5 items-end bg-whte`} |
53 |
| - > |
54 |
| - <p className={`${viga.className} pl-2 text-[#393E46]`}>#EEEEEE</p> |
55 |
| - </div> |
56 |
| - <div className={`${styles.customBorder} h-2/5 bg-[#393E46]`}> |
57 |
| - <p className={`${viga.className} pl-2 text-whte`}>#393E46</p> |
| 75 | + <div> |
| 76 | + <div> |
| 77 | + <h3 className="text-lg font-bold">Project-Based Color Palettes:</h3> |
| 78 | + <hr className="my-2 border border-blck/10" /> |
| 79 | + <div className="my-4 flex gap-10"> |
| 80 | + <div className="flex size-40"> |
| 81 | + <div className="h-full w-1/2 rounded-l border border-blck bg-[#FFFFE3] text-sm text-blck"> |
| 82 | + #FFFFE3 |
| 83 | + </div> |
| 84 | + <div className="h-full w-1/2 rounded-r border border-blck bg-[#10100E] text-sm text-whte"> |
| 85 | + #10100E |
| 86 | + </div> |
| 87 | + </div> |
| 88 | + <div className="flex size-40"> |
| 89 | + <div className="h-full w-1/2 rounded-l border border-blck bg-[#EEEEEE]"></div> |
| 90 | + <div className="h-full w-1/2 rounded-r border border-blck bg-[#393E46]"></div> |
| 91 | + </div> |
58 | 92 | </div>
|
59 | 93 | </div>
|
60 |
| - <div className="mt-2 h-2/6"> |
61 |
| - <p className="text-2xl font-bold">PORTFOLIO THEME 2</p> |
62 |
| - <p>This color palette was used in someone's portfolio.</p> |
63 |
| - </div> |
64 |
| - </div> |
65 |
| - <div className={`${styles.colorCard} p-4`}> |
66 |
| - <div className="h-4/6"> |
67 |
| - <div |
68 |
| - className={`${styles.customBorder} flex h-2/5 items-end bg-whte`} |
69 |
| - > |
70 |
| - <p className={`${viga.className} pl-2 text-[#323232]`}>#EEEEEE</p> |
71 |
| - </div> |
72 |
| - <div |
73 |
| - className={`${styles.customBorder} flex h-1/5 items-center bg-[#295F4E]`} |
74 |
| - > |
75 |
| - <p className={`${viga.className} pl-2 text-whte`}>#295F4E</p> |
76 |
| - </div> |
77 |
| - <div |
78 |
| - className={`${styles.customBorder} flex h-1/5 items-center bg-[#6DB193]`} |
79 |
| - > |
80 |
| - <p className={`${viga.className} pl-2 text-[#323232]`}>#6DB193</p> |
| 94 | + <div className="my-20"> |
| 95 | + <h3 className="text-lg font-bold">Standard Color Palettes:</h3> |
| 96 | + <hr className="my-2 border border-blck/10" /> |
| 97 | + <div className="my-4"> |
| 98 | + <div className="flex size-40 flex-col"> |
| 99 | + <div className="h-1/2 w-full rounded-t bg-[#295F4E]"></div> |
| 100 | + <div className="h-1/2 w-full rounded-b bg-[#6DB193]"></div> |
| 101 | + </div> |
81 | 102 | </div>
|
82 |
| - <div className={`${styles.customBorder} h-1/5 bg-[#323232]`}> |
83 |
| - <p className={`${viga.className} pl-2 text-whte`}>#323232</p> |
84 |
| - </div> |
85 |
| - </div> |
86 |
| - <div className="mt-2 h-2/6"> |
87 |
| - <p className="text-2xl font-bold">THESIS SYSTEM THEME</p> |
88 |
| - <p>Dev team color palette for thesis project.</p> |
89 | 103 | </div>
|
90 |
| - </div> |
91 |
| - <div className={`${styles.colorCard} p-4`}> |
92 |
| - <div className="h-4/6"> |
93 |
| - <div |
94 |
| - className={`${styles.customBorder} flex h-1/6 items-center bg-whte`} |
95 |
| - > |
96 |
| - <p className={`${viga.className} pl-2 text-blck`}>#EEEEEE</p> |
| 104 | + <div> |
| 105 | + <h3 className="text-lg font-bold">Color Inspirations:</h3> |
| 106 | + <hr className="my-2 border border-blck/10" /> |
| 107 | + <div className="my-4"> |
| 108 | + <div className="size-40 rounded bg-blck"></div> |
97 | 109 | </div>
|
98 |
| - <div |
99 |
| - className={`${styles.customBorder} flex h-1/6 items-center bg-cyn`} |
100 |
| - > |
101 |
| - <p className={`${viga.className} pl-2 text-blck`}>#CBF3F0</p> |
102 |
| - </div> |
103 |
| - <div |
104 |
| - className={`${styles.customBorder} flex h-1/6 items-center bg-bge`} |
105 |
| - > |
106 |
| - <p className={`${viga.className} pl-2 text-blck`}>#F7EDE2</p> |
107 |
| - </div> |
108 |
| - <div |
109 |
| - className={`${styles.customBorder} flex h-1/6 items-center bg-yllw`} |
110 |
| - > |
111 |
| - <p className={`${viga.className} pl-2 text-blck`}>#F6BD60</p> |
112 |
| - </div> |
113 |
| - <div |
114 |
| - className={`${styles.customBorder} flex h-1/6 items-center bg-blgrn`} |
115 |
| - > |
116 |
| - <p className={`${viga.className} pl-2 text-blck`}>#2EC4B6</p> |
117 |
| - </div> |
118 |
| - <div |
119 |
| - className={`${styles.customBorder} flex h-1/6 items-center bg-rd`} |
120 |
| - > |
121 |
| - <p className={`${viga.className} pl-2 text-blck`}>#E76F51</p> |
122 |
| - </div> |
123 |
| - </div> |
124 |
| - <div className="mt-2 h-2/6"> |
125 |
| - <p className="text-2xl font-bold">THE NOTEPAD THEME</p> |
126 |
| - <p> |
127 |
| - This color palette was used on this website itself for different |
128 |
| - elements. |
129 |
| - </p> |
130 | 110 | </div>
|
131 | 111 | </div>
|
132 | 112 | </main>
|
|
0 commit comments