Developing a plan for custom hostname settings
Converted the form input to a component, basically just isolating styles
Implemented a noindex meta tag when the site's indexable field is set to false in the database
Updated the site database for custom domain and product subdomain
Fixed the server not found page
Refactored deployments to different domain
12688 packages removed (disk space saved: 116.47 GiB) by running `paccache -r`
I created a button component primarily to isolate the styles
Created a component for standard form actions like save and cancel
Appearance settings are functioning end-to-end
One of the coolest features is the ability to make changes to the appearance, navigate around the site without saving, and then return to the appearance settings to either save or cancel and revert. Totally worth it!
Added client-side error validation to form components
Created the API endpoint and Yup validation schema for updating the site theme settings
Utilizing chroma-js to generate a custom primary color gradient
Added a site theme options backup used to revert appearance changes when the user clicks cancel
Cross-browser testing
When I say 'cross-browser,' I mean that it has been tested in Chrome.
Completed first pass on the color input component
I rarely modify more than these options when compiling Bootstrap from SCSS to create unique-looking websites. By limiting the color palette to a primary color and gray, it greatly reduces the CSS variables needed.
Building a color picker input component
Custom color and form actions have been added to appearance settings
Light mode exists! Just don't expect many screenshots of it.
Added a border-radius range input to the appearance settings
Decided not to offer users a choice of fonts and instead stick with the native font stack
Color and gray theme appearance settings
Custom color theme is next.
Coded a Form Group component for elements like labels and messages to surround inputs
For many years, I developed a habit of simply copying and pasting form input labels and message divs. In retrospect, I realize I should have taken the time to create these components a long time ago. This project is about avoiding shortcuts and investing the time to build things properly.