ReactJS - Let's Build An Invoice App - PART 1

Thomas Sankara
20 Oct 202123:57

Summary

TLDRIn this instructional video, the creator guides viewers through building an invoice application using React.js and Tailwind CSS. The focus of the first episode is on crafting the UI with hardcoded elements, which will be refined and functionalized in subsequent videos. The ultimate goal is to transform the project into a desktop application. Key steps include setting up the React app, installing dependencies like 'uid' and 'react-icons', and structuring the UI with placeholders for future components. The creator also shares a GitHub repository for accessing the finished code and emphasizes the importance of subscribing for updates.

Takeaways

  • 😀 The video tutorial is about building an invoice application using React.js and Tailwind CSS.
  • 🛠 The initial focus is on creating the UI with hardcoded data, with functionality to be added in subsequent videos.
  • 💻 The presenter guides viewers to create a new React application using the terminal and 'npx create-react-app' command.
  • 🔗 It's suggested to check for Node.js and npx installations if errors occur, with instructions to install them if necessary.
  • 🔗 A GitHub repository link is provided for access to the finished code, emphasizing the 'invoicer_v2' as the correct repository to follow.
  • 📁 The tutorial involves deleting unnecessary files from the new React app and restructuring the 'App.js' to build the UI from scratch.
  • 📝 The presenter discusses the importance of separating UI components and planning to refactor the code in later videos.
  • 🖌️ Tailwind CSS is integrated from a CDN for styling the application, with modifications to the 'index.html' file.
  • 📑 The UI layout includes a header, sections for user and client details, dates, a table for items, notes, and a footer.
  • 🎨 Tailwind CSS classes are applied to style elements such as buttons, headers, and layout components like the main content area and footer.
  • 🔧 The presenter emphasizes the trial-and-error nature of web development, especially when it comes to styling and layout adjustments.

Q & A

  • What is the main focus of the video?

    -The main focus of the video is to build an invoice application in React.js with Tailwind CSS, starting with the UI development.

  • What is the name of the React application being created?

    -The React application being created is named 'invoice v2'.

  • What are the two dependencies that the video mentions to install at the beginning?

    -The two dependencies mentioned are 'uid' and 'react-icons'.

  • Where can viewers find the finished code for the project?

    -Viewers can find the finished code on GitHub at the repository 'thomas/invoicer_v2'.

  • What is the purpose of the 'npx create-react-app' command?

    -The 'npx create-react-app' command is used to create a new React application.

  • How can one check if Node.js is installed on their system?

    -One can check if Node.js is installed by running 'node -v' to see the version of Node.js and 'npx -v' for the npx version.

  • What is the purpose of the 'window.print' function used in the video?

    -The 'window.print' function is used to trigger the print dialog so users can print the invoice.

  • Why are the input fields initially included in the UI later removed?

    -The input fields are removed because they are intended to be part of a separate component, and should not be visible when printing the invoice.

  • What is the significance of the comments in the code?

    -The comments in the code are used to mark sections and indicate future refactoring points, making the code more organized and easier to navigate.

  • What styling framework is used for the application's UI?

    -Tailwind CSS is used for styling the application's UI.

  • What does the video suggest for handling different screen sizes?

    -The video suggests using Tailwind CSS classes to adjust the layout and styling for different screen sizes, such as 'flex', 'items-center', 'justify-center', and screen-specific classes like 'sm:', 'md:', 'lg:', and 'xl:'.

Outlines

00:00

🛠️ Setting Up the React Invoice Application

The script begins with an introduction to building an invoice application using React.js and Tailwind CSS. The presenter outlines the plan to first develop the UI with hardcoded elements and then incrementally add functionalities in subsequent videos. The aim is to eventually convert the project into a desktop application. The presenter shows a preview of the finished product and provides instructions for creating a new React application, checking for Node.js and npx installations, and accessing the finished code from a GitHub repository. The video also includes steps for setting up the development environment, including installing necessary dependencies and configuring the project files.

05:01

🎨 Designing the Application UI

The second paragraph focuses on the UI design process. The script describes creating a main section with a header, which includes branding and navigation buttons for print, download, and send functionalities. The presenter then details the structure for input fields and client details, which are initially included but later reconsidered for separation into different components. The UI layout is further discussed with the addition of sections for dates, item description tables, and notes to the client. The presenter emphasizes the intention to create separate components for each section and the importance of comments for organization during development.

10:03

📝 Refining the UI Components and Styling

In this paragraph, the script moves into refining the UI components and applying initial styles. The presenter discusses the process of adjusting the main content area with padding and margins for better spacing and aesthetics. The header is styled with flex properties to ensure proper alignment and responsiveness. The footer is also styled with a list of contact details, which are later filled with dummy data. The presenter also mentions the use of Tailwind CSS classes for buttons and other elements, and the importance of adjusting styles for different screen sizes.

15:07

🖌️ Finalizing UI Aesthetics and Functionality

The fourth paragraph delves into the final touches for the UI aesthetics and the beginnings of functionality. The presenter adds styles to the main content area, including background color, border radius, and box shadow for a more polished look. The header logo is styled with typography and spacing adjustments. The script also covers the styling of the article for dates and the notes section, with considerations for hierarchy and readability. The presenter discusses the use of semantic HTML tags and the importance of refactoring for cleaner code.

20:08

🔚 Wrapping Up the Initial UI Build

The final paragraph wraps up the initial UI build with the addition of dummy data for demonstration purposes. The presenter fills in the contact details in the footer and discusses the use of span tags for better control over styling and layout. The script concludes with adjustments to the header for larger screens and a reminder to subscribe for updates on the channel. The presenter also teases the next steps in the development process, which will involve further UI work and the introduction of application functionality.

Mindmap

Keywords

💡React.js

React.js is an open-source JavaScript library for building user interfaces, particularly single-page applications. It is maintained by Facebook and a community of individual developers and companies. In the video, React.js is the primary framework used for building the UI of the invoice application, demonstrating its utility for creating interactive and dynamic web applications.

💡Tailwind CSS

Tailwind CSS is a utility-first CSS framework for rapidly building custom user interfaces. It provides a set of pre-defined classes that can be composed to create unique designs without writing custom CSS. In the video, Tailwind CSS is used to style the invoice application, emphasizing its role in streamlining the styling process and enabling rapid UI development.

💡Invoice Application

An invoice application is a software tool designed to create, manage, and send invoices to clients. It is a critical component for businesses to track their sales and payments. In the video, the main theme revolves around building an invoice application using React.js and Tailwind CSS, showcasing the process from UI design to functionality implementation.

💡UI (User Interface)

The user interface, or UI, is the space where interactions between users and a program occur. It encompasses the design and layout of the application's visual elements. The video focuses on developing the UI of the invoice application, highlighting the importance of a well-designed interface for user experience.

💡Hardcoding

Hardcoding refers to the practice of writing fixed values directly into a program's source code. In the context of the video, the instructor mentions hardcoding everything for the initial build of the UI, which means setting values like text, layout, and styles directly in the code without using dynamic data sources.

💡Functionality

Functionality in software refers to the specific features and capabilities that an application provides to the user. The video script discusses adding functionalities 'slowly by slowly' to the invoice application, indicating a phased approach to development that will eventually include interactive elements beyond the static UI.

💡Desktop Application

A desktop application is a software program designed to run on a personal computer rather than over a network or from a remote location. The video mentions the end goal of converting the invoice application into a desktop application, suggesting a transition from a web-based interface to a standalone program that can be installed and used locally.

💡npm (Node Package Manager)

npm is a package manager for JavaScript and the default package manager for the JavaScript runtime environment Node.js. It installs and manages dependencies like libraries and frameworks. In the script, 'npm install' is used to add necessary packages such as 'uid' and 'react-icons' to the project, demonstrating the use of npm for dependency management.

💡Components

In React.js, a component is a piece of code that represents a part of the UI. Components make code reusable and modular. The video script refers to building out the UI with components, indicating the use of this React.js feature to create individual, reusable parts of the invoice application.

💡Props

Props, short for properties, are a way to pass data from a parent component to a child component in React.js. They are a key feature for creating dynamic and interactive applications. The script mentions passing down props to components and accessing them, which is crucial for the data flow and interactivity within the invoice application.

Highlights

Introduction to building an invoice application using React.js and Tailwind CSS.

Plan to initially hard code the UI and later add functionalities incrementally.

Intention to convert the application into a desktop application by the end of the project.

Instructions on creating a new React application using npx create-react-app.

Checking for Node.js and npx installation with specific commands.

Link to the GitHub repository for the finished code provided in the description.

Instructions to install dependencies 'uid' and 'react-icons' for the project.

Removal of unnecessary files from the source folder to start with a clean slate.

Explanation of the UI structure and components planned for the invoice application.

Integration of Tailwind CSS via CDN for styling the application.

Design considerations for print functionality to ensure inputs are not visible in printouts.

Use of comments to organize the code and prepare for component separation.

Styling the header, including buttons for print, download, and send functionalities.

Implementation of sections for client details, invoice dates, and notes to the client.

Adding a footer with contact information and styling considerations for different screen sizes.

Discussion on the importance of using semantic HTML tags like 'strong' and 'em' for emphasis.

Final touches on styling the application for a clean and professional look.

Teaser for the next video where more UI work and functionality will be added.

Transcripts

play00:05

hello everyone and welcome back to the

play00:06

channel and today we're going to be

play00:07

building an invoice application in

play00:10

react.js and tailored css so for this

play00:12

first video what i want to do is i just

play00:14

want to build out the ui

play00:16

so i'm going to be hard coding

play00:18

everything so everything from all of

play00:20

this and then in the next videos we're

play00:22

going to be adding the functionalities

play00:23

slowly by slowly and then by the end of

play00:26

it all i hope to convert this into a

play00:28

desktop application okay so i have this

play00:30

open just to show you what our finished

play00:33

products is supposed to look like

play00:35

and i'm going to be closing this because

play00:37

it seems to be messing up with my ram

play00:39

quite a bit

play00:40

okay so before we get started i just

play00:42

want to mention that if you're not

play00:43

subscribed to the channel please

play00:44

subscribe and ring the notification bell

play00:47

so that you're always notified of new

play00:49

uploads

play00:50

okay so to get started you would need to

play00:51

create a new react application so you

play00:53

can open up your terminal and then i'm

play00:55

just going to cd into my desktop

play00:58

and into my work folder and then i'm

play01:00

going to say npx create react app and

play01:03

i'm going to call it invoice

play01:05

v2 but i'm not going to let this run

play01:07

because this is already running i

play01:09

already have

play01:10

a folder named this i already canvased

play01:12

my react application but when once you

play01:14

run this then it's going to create a new

play01:16

react application for you now if you try

play01:19

to run npx and it gives you an error

play01:21

then you should probably check whether

play01:23

you have node.js installed by saying no

play01:26

dash desk version and it should give you

play01:27

the note version that you're running and

play01:29

you can do npx dash version as well

play01:33

which will give you the npx version that

play01:34

you're running now if you don't have

play01:36

either of these then you can head over

play01:37

into

play01:38

nodejs.org and you can install node.js

play01:41

on in your system okay now i want to

play01:43

mention that if you want access to the

play01:44

finished code then i'm going to leave

play01:46

this link to the repository in the

play01:48

description so you can head over to

play01:50

github.com

play01:52

thomas for slash invoicer underscore v2

play01:54

okay and this is very important because

play01:56

i have a repository called invoicer okay

play02:00

that's a different one it backfired

play02:02

so inversely that's v2 is what we're

play02:04

going to be working on okay and this is

play02:06

the repository and i'm going to be

play02:07

committing this regularly as as we

play02:10

progress with the video so what i've

play02:11

done is i've opened up vs code in in the

play02:14

newly created folder invoice v2 and i'm

play02:17

also running my dev server on localhost

play02:19

3000

play02:21

okay so if i go into local 3000 then

play02:23

this is what i have on the screen

play02:25

that's very important that you'll be

play02:27

running your server and then i'm just

play02:28

going to place this side by side

play02:31

and then i'm going to close this

play02:34

okay and i think we should be ready to

play02:35

begin

play02:36

but before we do that actually what i

play02:38

need to do

play02:39

is i need to install one dependency

play02:43

or rather two dependencies actually

play02:46

the first one i'm going to say npm

play02:47

install uid and then the second one is

play02:49

called react icons so let this install

play02:52

and then we should just go ahead and

play02:54

begin right away so in my inside my

play02:56

source folder i'm going to grab this

play02:59

the upload css app test js the logo

play03:02

report web and the setup tests and i'm

play03:04

just going to delete these files because

play03:05

we don't really need them

play03:07

so delete

play03:09

okay and once we delete those files then

play03:11

we're going to get some errors so let's

play03:12

clear up those errors we've deleted this

play03:15

file so we don't need it

play03:17

and we don't need the import as well

play03:19

we can save this and then we can head

play03:21

over into app.js

play03:24

and we can remove these two inputs at

play03:25

the top

play03:27

and then we can remove this header

play03:29

inside here

play03:30

and then we can remove this div to

play03:32

return an empty fragment okay fantastic

play03:35

and then at the top what i'm going to do

play03:37

is i'm just going to say um

play03:39

actually this is fine as it is because

play03:41

we technically just want to build up the

play03:43

ui right now what i'm going to do is i'm

play03:45

going to build out everything inside

play03:46

this app.js and then in the next videos

play03:49

we're going to be refactoring the code

play03:50

slowly by slowly okay

play03:53

and the reason why i'm doing that

play03:54

actually is just to show you how you can

play03:56

get your components when you're building

play03:58

out very complex applications because

play04:00

this is what happened to me when i was

play04:02

trying uh when i was testing this out in

play04:04

the first place

play04:05

okay so i'm just going to return let me

play04:07

turn a main here and actually i should

play04:10

probably link taylor and css as we start

play04:14

so let's head over into cdnjs so

play04:16

cdnjs.com

play04:20

and then let's grab tailwind

play04:24

come on tailwind

play04:26

okay so grab this link tag

play04:28

and then inside public index.html

play04:32

then i'm just going to paste it inside

play04:34

here

play04:35

and actually let's change this title to

play04:37

inversa

play04:39

and then let's say create

play04:42

invoices

play04:46

clients something like that

play04:48

and then let's remove this comment

play04:51

and let's remove this comment as well as

play04:53

well as the manifest json actually so

play04:56

everything up to here

play04:58

and then let's remove

play04:59

i'm going to change this in a later

play05:01

video actually so there's no need for

play05:02

this

play05:03

okay that should be fine let's press

play05:05

this back to the side

play05:08

and yeah we should be

play05:10

ready to begin fantastic

play05:15

okay so in updates let's turn a main and

play05:18

then inside here let's have a section

play05:22

okay and always does this when i'm

play05:25

recording i don't know why okay so this

play05:27

section is going to have an h2 actually

play05:29

sorry not a section with the section

play05:31

butter header

play05:32

this header is going to have a div

play05:36

and they said this did we're going to

play05:38

have an h2 that says invoicer

play05:41

and then outside obviously we're going

play05:42

to have another div

play05:45

okay

play05:46

another div and this is going to be a ul

play05:49

with three list items so i times three

play05:52

this first one is gonna say print and i

play05:54

said these are going to be buttons by

play05:55

the way so this will be print

play05:58

download and send okay

play06:02

so let's save this let's see what you

play06:03

have we're gonna have that okay let me

play06:05

just press a comment that says header

play06:08

and then below this let's say end of

play06:10

header

play06:12

like so

play06:13

and then inside here once again inside

play06:16

our main let's return a section

play06:19

this section is going to say let's say

play06:21

something like um

play06:25

your details

play06:27

yeah

play06:28

your details inside here and then let's

play06:29

say end of your

play06:32

details so this means inside here we

play06:34

need to have an input with a type of

play06:36

text

play06:37

okay with a name of text with an id of

play06:41

text with a placeholder

play06:44

that says entire your name

play06:48

set this to required as well

play06:50

and then below this let's have um

play06:54

let's have an h2

play06:56

and actually do you know what i've just

play06:57

realized we don't need the inputs inside

play07:00

here

play07:01

i've just realized that and i'm going to

play07:02

show you why so inside here we're going

play07:04

to be targeting technically the name

play07:05

right so i'm just placing my name for

play07:07

now

play07:08

just how to put it inside now uh what i

play07:10

mean is i don't want this input to be

play07:12

inside here because when i click on this

play07:14

print i don't want the input to be

play07:17

visible right

play07:18

on the print document and actually let

play07:20

me just show you what i mean if i

play07:21

convert this into a button

play07:24

and then let's say on click let's just

play07:26

uh let's just say

play07:28

let's say handle print create a function

play07:30

called handle print

play07:32

and then above this let's say const

play07:34

handle

play07:35

print

play07:36

set this to an arrow function and let's

play07:38

let's just say window.print

play07:40

okay

play07:42

so let's see so well with the print

play07:44

button

play07:46

print here i've got another text

play07:49

so print then it should give me this

play07:51

window right here and then notice how it

play07:53

still says these three items and then it

play07:55

also shows the input right now i don't

play07:57

want the input to be visible inside here

play08:00

so technically what i'm going to do is

play08:03

i'm going to go where is it

play08:05

what is that

play08:06

okay so inside here i'm going to move

play08:08

this input

play08:10

i'm going to remove this input because

play08:11

we're going to be adding it inside a

play08:12

separate component and then we're going

play08:14

to be passing down the props inside this

play08:17

uh our main component and then we're

play08:19

going to be accessing it inside our h2

play08:21

and so on and so forth so i'm going to

play08:23

remove the input and then below this

play08:24

we're going to have a paragraph that say

play08:26

this is the address

play08:29

so your address like so

play08:33

okay

play08:34

and then this is your details so we're

play08:36

going to create another one says client

play08:38

details

play08:40

details like so

play08:42

let's say end of client details

play08:45

so let's section

play08:47

this section is going to have an h2 as

play08:49

well that says client

play08:52

client's name and then below this we're

play08:54

going to have a paragraph that says

play08:56

client's address

play08:59

client's address come on

play09:02

like so

play09:03

so save this and then below this once

play09:05

again remember we're just building up

play09:07

the ui because we want to know how it's

play09:08

going to look like

play09:10

so below this we're going to have the

play09:12

dates okay

play09:14

so end updates

play09:18

so let's have let's have let's return an

play09:20

article

play09:23

this article is going to have a ul with

play09:25

three list items so this is going to be

play09:27

the today's date so today's

play09:30

date

play09:31

okay

play09:32

and then it's going to say due date

play09:34

what is it let's say due date

play09:37

what else does an invoice say i

play09:38

forgotten

play09:40

okay so this is this is not today's that

play09:42

this is um

play09:44

this should say

play09:46

come on

play09:48

this should say inverse number

play09:51

and then this is say invoice date so

play09:54

invoice

play09:56

invoice date

play09:58

and then this should say due dates

play10:03

so fantastic let's save this let's see

play10:05

what we have and we're going to have

play10:06

this okay looking nice looking nice and

play10:09

then now below this we're going to have

play10:11

our table okay so table technically our

play10:16

item description table but that's okay

play10:18

so end of table

play10:20

and we're going to create a table inside

play10:22

here which i don't want to do now

play10:23

because i really hate dealing with

play10:25

tables

play10:26

and then below this we're going to have

play10:28

the notes section some

play10:31

okay and then let's say end of notes

play10:34

and the reason why i'm placing so many

play10:35

comments is just because we're going to

play10:37

be creating separate components for all

play10:39

of these okay

play10:40

so end of notes let's return let's have

play10:42

a section

play10:44

and this section is going to have a text

play10:45

area once again because i don't want to

play10:47

add inputs and text areas inside here so

play10:50

we're going to have a text area and then

play10:52

let's just have a paragraph that says

play10:55

notes to the client

play10:58

these are not like how to pay where to

play11:00

pay your bank account details and so on

play11:02

and so forth just in case they missed

play11:04

them at the top

play11:05

okay so nice to the client and this

play11:08

should be having that so end of notes

play11:10

and then below this let's have our

play11:12

footer

play11:13

and then let's say end of

play11:16

butter now the food is going to be

play11:17

interesting

play11:18

water

play11:21

emit isn't working

play11:24

so the food is going to say um we're

play11:26

going to have a ul okay

play11:28

ul with let's say how many list items

play11:31

let's say about

play11:33

let's say five okay so this one is going

play11:35

to say your name okay which you're going

play11:37

to get from this okay so when you pass

play11:39

down the props we're going to be

play11:40

accessing the props that we pass inside

play11:42

here

play11:43

okay so this this is going to be your

play11:45

name

play11:46

uh this is going to be your email

play11:48

address this is going to be

play11:51

phone number

play11:53

okay and then this is going to be bank

play11:56

this is going to be bank account or

play11:58

rather account

play12:00

account number bank account number right

play12:03

and then probably we should add another

play12:04

one that says website

play12:08

and then once we have website probably

play12:10

what i should do is

play12:12

between bank and account number i should

play12:14

have

play12:16

um accounts holder name

play12:19

or rather account hold i think that

play12:20

would be disproportionately descriptive

play12:22

enough

play12:23

okay so let's save this let's watch over

play12:24

the screen and we have this looking ugly

play12:28

so let's tell this out

play12:29

let's start this out remember this is

play12:31

the desktop application first so i don't

play12:33

really intend it to be working on mobile

play12:34

screens all that well but we're going to

play12:36

be studying it for mobile screens as

play12:37

well

play12:38

so in the header let's have a class name

play12:42

flex and flex column

play12:45

and

play12:46

item center and justify

play12:49

center and imagine bottom of five

play12:54

okay so that we're going to have that

play12:56

let's go inside this ul give this a

play12:58

class name of flex

play13:00

item center and justify

play13:03

justify between and then let's say flex

play13:06

wrap

play13:07

so that they're going to automatically

play13:08

go into the next line once this uh width

play13:11

is completely full

play13:13

and that these two are going to be

play13:14

buttons so let's add a button here that

play13:15

says download

play13:18

and then let's remove this let's have a

play13:20

button that says send so for the for the

play13:22

send button we're going to create a

play13:24

model for the download button we're just

play13:26

going to say download um the invoice

play13:29

okay so this this first button

play13:32

is going to have a class name of

play13:33

btn.print

play13:36

okay so a class number btn

play13:37

unbeaten.print so let's just let me just

play13:40

copy this

play13:42

and paste it inside here this is going

play13:44

to say btn download

play13:47

and then this is going to say btn send

play13:50

okay

play13:50

so save this and nothing really changes

play13:53

because we're going to be standing

play13:54

styling out the buttons later

play13:57

and then for this section one let's say

play14:00

uh what do you want to do what i want to

play14:02

do is say class name of flags and flex

play14:06

and should be the one

play14:08

um let's no not flex and sorry but items

play14:12

end

play14:13

should be the class

play14:14

go to the left come on ready or justify

play14:17

end

play14:18

item center

play14:21

and justify end there we go

play14:24

there we go and then let's say flex

play14:25

column

play14:28

come on don't do that items end now

play14:32

flexbox can be a bit confusing okay so

play14:35

items end and justify end which will

play14:37

take it to the end and i've just

play14:38

realized that probably this main should

play14:40

have a padding all around

play14:42

so class name of padding of five volt

play14:44

round push everything inwards just a bit

play14:46

on small screens and then let's say that

play14:48

for

play14:49

medium screens then the max width should

play14:51

be medium let me see how this would look

play14:56

too small

play14:57

let's say let me let me say for large

play15:00

screens then the max width should be

play15:02

large

play15:06

still too small

play15:08

excel

play15:10

okay and then let's say for large

play15:11

screens let's say mx auto push it to the

play15:14

center there we go and then probably

play15:16

what i should do is i should go into the

play15:18

body

play15:20

into my index the index.css and i should

play15:23

give the body a background color

play15:26

of f1 f1 f1 a very slight gray

play15:30

there we go

play15:31

and then what i'm going to do now is go

play15:33

inside my main

play15:35

right hand side and say bg white

play15:39

and we should have that looking

play15:41

fantastic and probably now instead of

play15:43

this being a magic a padding sorry i

play15:44

should make it a margin so that uh the

play15:47

white background pushes in once

play15:50

like so okay

play15:51

and then actually let me just add a

play15:53

padding all around as well so that this

play15:54

is not all the way to the edge

play15:57

web development is a lot of trial and

play15:58

error

play16:00

so let's have a rounded borderless i'll

play16:01

have a slight box shadow

play16:04

like so looking fantastic looking

play16:06

fantastic just so that it looks a bit

play16:08

elevated

play16:10

so i'm going to have that and then let's

play16:11

go inside this where is it this h2 so

play16:14

for a logo give this a glass name of

play16:16

front bold

play16:19

okay so front what let's say uppercase

play16:24

let's say tracking

play16:26

white and let's say text dash for xl

play16:29

okay

play16:30

we're going to change this colors later

play16:32

don't worry about it let's say margin

play16:34

bottom of three pushed away from these

play16:36

three buttons okay

play16:38

and then let's go inside and actually

play16:40

you know what probably i should have

play16:42

styled this out

play16:44

inside my css

play16:45

but that's okay we're going to refactor

play16:48

quite a bit

play16:49

and actually let me change this to a and

play16:51

each one

play16:52

okay

play16:54

so your name your address let's deal

play16:55

with so the client name and client

play16:57

address are going to remain on this side

play16:58

and actually they're fine as they as it

play17:00

is

play17:01

and this is the details this is client

play17:03

details so this is fine

play17:05

probably let me start these two h2s

play17:08

because i want them to be bigger so

play17:09

let's say text dash for excel let's say

play17:11

uppercase

play17:14

see how that looks

play17:16

okay so now this this isn't really good

play17:18

on small screens right

play17:20

so let's change this to text excel

play17:23

so i don't have that okay fantastic

play17:25

now inside this article let's give this

play17:28

article a class name of margin top of

play17:30

five and actually i've just remembered

play17:32

that this section should have a margin

play17:34

bottom of five

play17:35

actually imagine top of five just so

play17:37

that it pushes away from this so there's

play17:39

just a bit of

play17:40

spacing between this and this

play17:43

and then we're going to do the same

play17:44

thing that we did on this we're going to

play17:46

do the same thing here

play17:49

and probably this should be on bigger

play17:51

screens but

play17:52

[Music]

play17:53

no

play17:54

let's just do it here so i'm going to

play17:55

copy these styles copy these and paste

play17:58

them inside here

play18:01

actually is that correct

play18:03

okay there we go

play18:05

that being said actually we don't really

play18:07

we don't really need the flex column

play18:09

here actually

play18:11

we don't need the flex column because

play18:13

this only has one item inside which is

play18:16

the ul okay if you was telling dc the

play18:18

list items inside the ul then we would

play18:20

need the flex column

play18:23

okay so we don't need that and then

play18:25

let's say margin top actually let's

play18:26

imagine y of fire so imagine at the top

play18:28

and bottom

play18:31

fantastic and then we're going to grab

play18:33

this place it inside a span

play18:35

and grab this

play18:37

place it inside a spawn

play18:39

and then grab this place it inside a

play18:42

sponge

play18:43

and then let's grab all of these pants

play18:46

and the length let's just say class

play18:48

name of a front pole

play18:53

okay

play18:54

so the span is going to be front pulled

play18:55

and then the text inside here what we're

play18:57

going to have inside here is the date is

play18:59

not going to be bold unless i'm doing

play19:01

that wrongly i should be outside of the

play19:02

span

play19:04

right inside here so the text is not

play19:05

going to be bold in front okay just so

play19:08

that it brings a bit of a hierarchy

play19:09

which is much

play19:11

uh it actually looks much better so let

play19:13

me remove this

play19:16

okay

play19:17

fantastic

play19:18

and then let's go into notes to the

play19:20

client actually we don't really need to

play19:22

style anything inside here but let me

play19:24

just have a deal

play19:25

inside this table that says this is the

play19:28

table

play19:32

okay just to separate it out let's give

play19:34

this div a class name

play19:36

of margin y of five

play19:40

likes also notes to the client and then

play19:42

give this section a class name of margin

play19:45

bottom of five

play19:47

push right from that and then let's go

play19:48

inside the footer and inside this ul

play19:51

give this a class

play19:53

name of flex

play19:55

and flex wrap

play19:57

okay and then let's say items that

play20:00

center and justify dash between

play20:03

justify

play20:04

between

play20:07

okay not between but center sorry

play20:11

center so that we're going to have this

play20:12

fantastic so let's just add some dummy

play20:14

data inside here

play20:16

let's add some dummy data

play20:18

let's say

play20:21

this

play20:23

for your email let's say

play20:27

gmail.com

play20:30

phone number let's say 07

play20:32

sorry zero seven one two three four five

play20:36

six seven eight

play20:39

bank let's say

play20:41

bank

play20:42

account

play20:45

account holder that's me account number

play20:48

let's change this to one two three four

play20:50

one two three four five six seven eight

play20:52

time

play20:54

and for the website let's do this

play20:58

ts come on i can't spell my own website

play21:02

let's see that okay

play21:04

okay

play21:05

now remember that uh once we do actually

play21:08

not let me just do it right now let me

play21:09

not postpone it let's have grab this

play21:11

basically set as pan

play21:13

grab this place it inside a spam

play21:16

now technically let me just mention it

play21:18

by doing technically you can grab this

play21:20

and place it inside a bolt tag and it

play21:21

would still work okay it's it would

play21:23

still work as you'd expect okay but i

play21:25

don't want to do that because i don't

play21:27

have a bit of

play21:28

leeway when installing this out

play21:30

that's why i like using spawns

play21:33

is so

play21:34

spun and instead of using the ball tag

play21:36

if you want you can actually use the

play21:38

strong tag

play21:39

as well

play21:40

it still works still works the very same

play21:43

way but i still like using sponge

play21:46

so spawn spawn and then

play21:49

spawn

play21:51

okay

play21:52

grab this placency in place it inside a

play21:54

spawn and then finally grab this and

play21:58

place it inside a span now let's grab

play22:01

all of these pants and by that i'm

play22:02

adding multiple casters

play22:05

by holding down the alt key and then

play22:06

clicking on where i want the cursor to

play22:08

be

play22:09

so right there right there right there

play22:11

and right there

play22:13

give all of this a class name of font

play22:16

dashboard

play22:20

fantastic

play22:21

fantastic okay

play22:23

this is looking

play22:25

nice for the initial ui but then this is

play22:28

a bit too small actually you know what

play22:29

let me just change this

play22:31

let me change where is it

play22:33

this

play22:34

let me move this let me check something

play22:37

okay so let's say that for excel screens

play22:39

then the max width should be for xl

play22:44

and then let's say for xl screens then

play22:46

let's say the mx should be auto

play22:50

okay so we're going to have that

play22:52

now once we add start adding in all the

play22:54

items in our application then this is

play22:56

going to fill up and it's going to go to

play22:58

the bottom so don't worry about this

play23:00

too much

play23:01

and then probably one thing that i

play23:03

should do is reset this some of this

play23:05

turning for the header

play23:07

where i'm going to say that for large

play23:08

screens let's say for excel screens then

play23:10

the flex should go back to row

play23:13

like so and then for xl screens then

play23:16

let's say justify

play23:18

just t

play23:19

by between

play23:22

we should take this to the end fantastic

play23:25

okay so in the next video we're going to

play23:27

start dealing with more of our ui and

play23:28

then starting starting to add a bit more

play23:31

of our functionality so see you in the

play23:32

next video

play23:34

if you're not subscribed to the channel

play23:35

please subscribe and ring the

play23:37

notification bell so that you're always

play23:39

notified of new uploads

play23:42

[Music]

play23:51

[Music]

play23:56

you

Rate This

5.0 / 5 (0 votes)

Связанные теги
React.jsInvoice AppTailwind CSSUI DesignWeb DevelopmentCoding TutorialDesktop ApplicationFunctionalitiesFrontendJavaScript
Вам нужно краткое изложение на английском?