My First Hackathon: Day 3
Tags: javascript, webdev, beginners
Published: 2021-11-23 09:33:12

## Progress

Sooo I'm still dreading the javascript but definitely not as much now. I played around with a few codepens, trying to hack a dark/light theme toggle that responses to user preferences and I think I got it! 

With the other dev on the team we got in the weeds with a p5 codepen. We struggled with getting the correct CDN link and it ended up not working outside of the codepen sandbox. I'm now cautiously optimistic about my theme toggle lol

I [designed the app interface](https://www.figma.com/file/3MRS43Q1AT04QvrVOgcF08/painting-app-interface?node-id=4%3A525) and I already want to change it in a big way but I do like the start. I modeled it after two sources. The app Sketches and another [HTML5 canvas app on github]().


I now want to switch the sides of the brush and color interface to match a lil more closely to Sketches, but I'm not stressing about it.

### Design process

I mirrored the design of the HTML5 app as closely as I could. I like the simplicity. I thought it'd lend well to dark mode too. I was inspired by our designer to include icons, so instead of having explicitly name buttons, I think having icons will be a little cleaner. I'm open to adding text under the icons, if that's better accessibility.

I also realized that I designed the whole interface and forgot to put the one thing we needed –– the sun and moon icons! How will the user toggle the theme? lol

I was proud of myself for figuring out how to get the rows of colors to lighten gradually, and the rgb (or HSL -- I'm gonna push for that over rgb) picker icon. Angular gradient for the win.


I found a cool icon pack for figma and it saved me with the min/max icons. I was using - and + which worked but I feel like this communicates the feature I'm aiming to implement.


### Features
Speaking of, I found this experimental library called interactive.js. I think it's so cool someone made this for school! I'm going to see if it'll work for us, but if so, I'd love to see the tool elements move around and maybe even resize! Especially, if it'll minimize, dock and reopen without me tinkering with toooo much javascript? Win win for me!

I'm also leaning more to the design of having the canvas cover most, if not all of the window. That was the use could utilize all of that screen real estate. But then, idk that also seems too big? Almost like the user could get lost... Maybe I'll make the window expand to max height? I'm not sure. I can't decide. I'll talk it over with the team and we'll see!

### Changes I would make
I don't know if we're going to include all the features like undo, save, and erase. But I think it's nice to visualize it. I think we should also include it even if they don't work, just to show our thought process. But idk, maybe that wouldn't look intentional?

I'm also realizing that there's no canvas control panel. I'm thinking to add it to the side where the current brush area is. Maybe under that.

My mom brought up canvas texture and I hadn't thought of that! I think that'd be another neat feature to implement. 


### Resources used today
- [Light/Dark theme toggle by Devawesome](https://codepen.io/KaioRocha/pen/MdvWmg?ref=devawesome.io)
- [Light/Dark Theme toggle by Florin Pop](https://codepen.io/FlorinPop17/pen/XWWZYYG)
- [Setting theme mode to user preferences](https://dev.to/ayc0/light-dark-mode-system-mode-user-preferences-1fcd)
- [@media prefers-color-scheme MDN](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme)
- [Minimize and Maximize Div in HTML](https://pretagteam.com/question/minimize-and-maximize-div-in-html)
- [Figma Iconset](https://www.figma.com/file/sDmOFSW14x9cksz7ZsJbtN/coolicons-%7C-Free-Iconset-(Community)?node-id=1393%3A898)
- [HTML5 Canvas Paint Application](https://github.com/demihe/HTML5-Canvas-Paint-Application)
- [Interactive JS Library](https://interactivejs.github.io/interactiveJS/)