- Crear un componente
Card
que renderice un elementoarticle
y que pueda contener componentes dentro suyo - Crear un componente
CardTitle
que renderice un elementoh3
y que pueda contener texto dentro suyo - Crear un componente
CardDescription
que renderice un elementop
y que pueda contener texto dentro suyo - Crear un componente
CardActions
que renderice un elementodiv
y que pueda contener componentes dentro suyo. Dicho div debe contener la propiedaddisplay: flex
- Crear un componente
CardAction
que renderice un elementobutton
y que pueda contener texto dentro suyo
- Crear un componente
Header
que renderice un elementoheader
y que pueda contener componente dentro suyo
- Crear un componente
Nav
que renderice un elementonav
y un elementoul
dentro del nav, el componente debe poder contener elementos dentro suyo - El elemento
ul
debe tener el estilodisplay: flex
ylist-style: none
- El componente
NavMenu
debe aceptar la propdirection
con los valores"row"
o"column"
, siendo"row"
el valor por defecto, y cambiar el valor de la propiedadflex-direction
del elementoul
en consecuencia
- Crear un componente
MenuItem
que renderice un componenteli
con un componentea
, el componente debe poder contener elementos dentro suyo - El elemento
li
debe tener el estilodisplay: flex
- Debe aceptar la prop
path
que corresponde al atributohref
del componentea
- Crear un componente
Main
que renderice un componentemain
y que pueda contener componente dentro suyo
- Crear un componente
Footer
que renderice un componentefooter
y que pueda contener componente dentro suyo
Crear un layout usando los componentes anteriores, de la siguiente forma:
<Header>
<NavMenu>
<NavItem path='/home'>Home</NavItem>
<NavItem path='/about-us'>About Us</NavItem>
<NavItem path='/contact'>Contact</NavItem>
</Menu>
</Header>
<Main>
Hola mundo
</Main>
<Footer>® 2020 - All rights reserved</Footer>
- Crear un componente
UserGreeting
que acepte una propuser
(que es un string). Siuser
tiene algún valor, debe renderizar un componentep
que digaWelcome ${user}
y un componentea
que digaLogout
, en cambio siuser
no tiene ningún valor, debe mostrar dos componentesa
, uno que digaLogin
y otroRegister
. Separar luego ambas opciones en dos componentes distintos:GuestUserMessage
(para cuandouser
no tiene ningún valor) yLoggedUserMessage
,
- Crear un componente
List
que acepte una propitems
que sea un array de strings, y renderice un componenteul
con componentesli
por cada string deitems
. Siitems
está vacío o no está definido, se debe mostrar un componentep
que digaSorry, this list is empty
- Crear un componente
PasswordField
que acepte una propstatus
que es un string con los valores posibles: "default", "error", "valid". El componenteField
debe renderizar unlabel
que diga "Password" y uninput
de tipopassword
. Sistatus
tiene el valor "valid", debe mostrar el input con un borde de color verde. Si tiene el valor "error", debe mostrar el input con un borde de color rojo y renderizar debajo del input un componentesmall
en color rojo que diga: "Invalid password, please try again"