COMMIT CATEGORIES APPLICATION BREAKDOWN APPLICATION SETUP APPLICATION COMPONENT APPLICATION FEATURE APPLICATION BUG FIXES APPLICATION EXTRAS APPLICATION DOCUMENTATION STEP 1: APPLICATION SETUP - META & LINKS META - charset - http-eqCOMPONENTv - viewport meta - author meta - revised meta - language meta - robot meta (index, nofollow) - title & description meta LINKS - Favicon & Font - External CSS file - External JS file (theme, global & page script) STEP 2: APPLICATION SETUP - COLORS VARIABLES (LIGHT & DARK VERSION) BACKGROUND - page background color - text on background color - variant background color PRIMARY ELEMENT - color of primary element - hover color of primary element - container color of primary element BUTTON BADGES - background color of the badges - text color of the badges OUTLINE - general outline color - input outline color - input outline color on hover ALPHA COLORS - 10% opacity black color - 10% opacity white color - 20% opacity black color - 20% opacity white color - typical white color OVERLAY - background color of an ovelay element IMAGE BACKGROUND - fallback color of an image element ACTIVE INDICATOR - color associated with an active element ERROR - color associated with an error element STEP 3: APPLICATION SETUP - TYPOGRAPHY VARIABLES DISPLAY FONT SIZE - small, large, medium font sizes for display elements TITLE FONT-SIZE - small, medium font sizes for title element LABEL FONT-SIZE - small, medium & large font sizes for label element BODY FONT-SIZE - medium & large font sizes for body element HEADLINE FONT-SIZE - small font size for headline element BASE FONT-SIZE - 62.5% FONT-WEIGHT - regular font weight - medium font weight PRIMARY FONT - dm serif display & serif as fallback SECONDARY FONT - dm sans & sans-serif as fallback STEP 4: APPLICATION SETUP - BOX STYLING VARIABLES BORDER RADIUS - 4 pixel border radius - 8 pixel boder radius - border radius for pill element - border radius for circular element BOX SHADOW - 20% opacity black shadow with a blur level of 8 pixel in a y-direction of -1 pixel - 30% opacity black shadow with a blur level & spread level of 4pixel & 1 pixel respectively in a y-direction of 2 pixel. STEP 5: APPLICATION SETUP - SIZE VARIABLES HEADER HEIGHT MOBILE NAVIGATION HEIGHT SECTION GAP STEP 6: APPLICATION SETUP - TRANSITION VARIABLES NOTE: this variables are setup in the root pseudo-seletor UNDER MEDIA QUERY WHOSE 'PREFERS-REDUCED-MOTION' IS SET TO 'NO-PREFERENCE' TRANSITION TIMING FUNCTION - utilizing a cubic bezier function (accelaration of the transition is plotted with a Bezier curve {xaxis-progression & yaxis-time}) - start bezier curve handle position of (.2, 0) - end bezier curve handle position of (0, 1) SHORT TRANSITION - duration of 200ms - timing function of our custom bezier curve LONG TRANSITION - duration of 500ms - timing function of our custom bezier curve STEP 7: APPLICATION SETUP - THEME VARIABLES here, we aim to polymorphorsize our color variables such that the same css variable will reference two different properties depending on the context of the page. this context is determined by the value of an attribute. once this is done, color of elements on the page can connect to a variable & the property will change depending on the value of an attribute on the page. this value can simply be changed via javascript. in step 2, we categorize the coloring of our page into background, primary, badge-btn, outline, alpha e.t.c we then css variable for each category FOR EACH THEME (light & dark) such that we have --light-background, --dark-background, --light-primary, --dark-primary e.t.c in this step, we will create css variables for each category then via css attribute styling if any element has the attribute 'data-theme' set to 'light' the category css variables we just created will reference the light category css variables we created earlier. then also via css attribute styling if any element has the attribute 'data-theme 'set to 'dark', the same category css variables we just created such as '--background: --light-background' e.t.c actually, this attribute will be placed in the html element thus every descendant can utilize the variable STEP 8: APPLICATION SETUP - RESET STYLING ALL ELEMENTS - zero margin & padding - border-box box sizing INLINE ELEMENTS - set the block display of inline elements 'a', 'img', 'button', 'span' INPUT & BUTTON ELEMENT - set font property to inherit - none background & none border LIST & LINK ELEMENT - no list style for li element - no text decoration for anchor element - set color value to inherit for anchor element IMAGE, INPUT & BUTTON ELEMENT - auto height for img element - 100% width of input element - set color value to inherit for button element - set pointer cursor for button element HTML ELEMENT - setup font family & font-size - smooth scroll behaviour - set webkit tap highlight color to transparent BODY ELEMENT - display: flex, column-flex-direction, zero-opacity - size: minimum height of 100vh, top padding of header-height, bottom padding of mobile nav height - color: background color set to 'background variable', text color set to 'on-background variable' - font: set font-size, font-weight, letter-spacing, line-height - animation: setup fade animation such that in short transition time with the transition timing function variable the opacity changes from 0 to 1 MAIN ELEMENT - flex grow of 1 STEP 9: APPLICATION SETUP - FONT SETTING UTILITY CLASSES we categorise element on pages in our web-app by there font setting into "display", "title", "label", "body" "headline". and each category can have a small, medium & large version such that we have "display-small", "display-medium", "display-large" e.t.c therefore we would create utility class which specify the font setting for each category. font-settings such as font-size, font-weight, font-family, letter-spacing, line-height. the classes are "display-{large/small/medium}", "headline-small", "title-{small/medium}", "body-{medium/large}" STEP 10: APPLICATION FEATURE - HEADER COMPONENT THE LAYOUT - the header component is a flexbox with 4 items - the logo, the navigation-links, the theme-switch button, the saved-recipes button - the navigation links to not show in mobile view - the saved-recipies button is actually a link to the saved recipes page - the logo & theme switch button container encapsulates two version 'the light theme version' & 'the dark theme version'. but only one displays depending on the theme of the page - CHECK STEP-1 IN documentation.txt THE STYLING - the hover interaction of the navigation-links & theme-switch button will be encapsulated in a class - the styling of the theme-switch button will be encapsulated in a reusable class "icon-btn" - the styling of the saved recipes button will be encapsulated in a reusable class "btn" & "btn-primary" - CHECK STEP-2 IN documentation.txt THE BASIC INTERACTION - when the the theme-switch button is clicked, the theme of the page changes. - CHECK STEP-3 IN documentation.txt STEP 11: APPLICATION FEATURE - MOBILE NAVIGATION COMPONENT THE CONCEPT - this application features 4 pages 'home page', 'recipes page', 'saved recipes page' & recipe detail page - this application has a mobile navigation component situatd at the bottom of the page - the mobile navigation encapsulate 3 link, 'link to the homepage', 'link to the Recipes page' & 'link to the Saved recipes page' - two items describe the link. an icon & a text(label) THE LAYOUT - this component is implement with an unordered list. - 1 ul element & 3 li element - the li element encapsulate the anchor element so it becomes a link. - the anchor element encapsulates a material icon & a text. - CHECK STEP-4 IN documentation.txt THE STYLES - the mobile navigation is positioned at the bottom of the screen, at a certain height and with viewport width - we want the navigation link icon container to have a grayish background color when the navigation link is hovered upon - we want the active navigation icon container to have a different background color - we want the active navigation icon container material icon to have a 100 percent FILL - CHECK STEP-5 IN documentation.txt STEP 12: APPLICATION FEATURE - THE BANNER COMPONENT THE CONCEPT - basically, each page is divided into 3 parts Header, Main, Footer. - the Main part of the hompage has different sections. - the first section is the banner compnent which basically has 4 items - a background image, an heading text, a search-box, a label text - the banner content is vertically center and horizontally centered - the search box constitute a dummy icon, a search field & a search button. - the heading text font-settings is of the category "DISPLAY-LARGE" - the label text font-settings is of the category "LABEL-SMALL" - CHECK STEP-6 & STEP-7 IN documentation.txt