{item.title}
14 |{price}
15 | 18 |├── public ├── vader.png ├── pikachu.png ├── gwen-artist.png ├── koopa-troopa.png ├── cleveland-museum.jpg ├── shopping-cart-backpack.jpg ├── shopping-cart-can-opener.jpg ├── shopping-cart-night-light.png └── shopping-cart-coffee-machine.jpg ├── src ├── components │ └── Spinner │ │ ├── index.js │ │ ├── Spinner.module.css │ │ └── Spinner.js └── app │ ├── layout.js │ ├── exercises │ ├── 01-clock │ │ ├── page.js │ │ ├── styles.css │ │ └── Clock.js │ ├── 02-checkout │ │ ├── StoreItem.js │ │ ├── data.js │ │ ├── reducer.js │ │ ├── CartTable.js │ │ ├── page.js │ │ ├── CheckoutFlow.js │ │ └── styles.css │ └── 03-interview │ │ ├── page.js │ │ ├── styles.css │ │ └── Interview.js │ ├── page.js │ └── styles.css ├── .gitignore └── .codesandbox └── tasks.json /public/vader.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/victorbecerra-k/next-ssr-exercises/HEAD/public/vader.png -------------------------------------------------------------------------------- /src/components/Spinner/index.js: -------------------------------------------------------------------------------- 1 | export * from './Spinner'; 2 | export { default } from './Spinner'; 3 | -------------------------------------------------------------------------------- /public/pikachu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/victorbecerra-k/next-ssr-exercises/HEAD/public/pikachu.png -------------------------------------------------------------------------------- /public/gwen-artist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/victorbecerra-k/next-ssr-exercises/HEAD/public/gwen-artist.png -------------------------------------------------------------------------------- /public/koopa-troopa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/victorbecerra-k/next-ssr-exercises/HEAD/public/koopa-troopa.png -------------------------------------------------------------------------------- /public/cleveland-museum.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/victorbecerra-k/next-ssr-exercises/HEAD/public/cleveland-museum.jpg -------------------------------------------------------------------------------- /public/shopping-cart-backpack.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/victorbecerra-k/next-ssr-exercises/HEAD/public/shopping-cart-backpack.jpg -------------------------------------------------------------------------------- /public/shopping-cart-can-opener.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/victorbecerra-k/next-ssr-exercises/HEAD/public/shopping-cart-can-opener.jpg -------------------------------------------------------------------------------- /public/shopping-cart-night-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/victorbecerra-k/next-ssr-exercises/HEAD/public/shopping-cart-night-light.png -------------------------------------------------------------------------------- /public/shopping-cart-coffee-machine.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/victorbecerra-k/next-ssr-exercises/HEAD/public/shopping-cart-coffee-machine.jpg -------------------------------------------------------------------------------- /src/app/layout.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import './styles.css'; 4 | 5 | function RootLayout({ children }) { 6 | return ( 7 | 8 |
{children} 9 | 10 | ); 11 | } 12 | 13 | export default RootLayout; 14 | -------------------------------------------------------------------------------- /src/app/exercises/01-clock/page.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | import Clock from './Clock'; 4 | import './styles.css'; 5 | 6 | function ClockExercise() { 7 | return ( 8 |{format(time, 'hh:mm:ss.S a')}
20 | ); 21 | } 22 | 23 | export default Clock; 24 | -------------------------------------------------------------------------------- /src/app/exercises/02-checkout/StoreItem.js: -------------------------------------------------------------------------------- 1 | 'use client'; 2 | import React from 'react'; 3 | 4 | function StoreItem({ item, handleAddToCart }) { 5 | const price = new Intl.NumberFormat('en-US', { 6 | style: 'currency', 7 | currency: 'USD', 8 | }).format(item.price); 9 | 10 | return ( 11 |{price}
15 | 18 |7 | This repository consists of three exercises: 8 |
9 || Title | 10 |Price | 11 |# | 12 |13 | |
|---|---|---|---|
| {item.title} | 19 |${item.price} | 20 |{item.quantity} | 21 |22 | 27 | | 28 |
Your Cart is Empty
15 || Subtotal | 39 |{priceFormatter.format(subtotal)} | 40 |
|---|---|
| Taxes | 43 |{priceFormatter.format(taxes)} | 44 |
| Total | 47 |{priceFormatter.format(total)} | 48 |
11 |
12 | 15 | Interviewer: It's a pleasure to 16 | have you with us today. Your work has recently been 17 | making waves on social media. Can you start by 18 | telling us a little about yourself and your journey 19 | into the world of art? 20 |
21 | 22 |23 | Gwen: I've always had a fondness 24 | for both traditional art and popular culture. I 25 | studied fine art in college, but found that I kept 26 | coming back to the characters and stories that I 27 | grew up with. Combining the two felt natural, a way 28 | to bridge the gap between high art and everyday pop 29 | culture. 30 |
31 | 32 |33 | Interviewer: What inspired you to 34 | combine traditional oil painting with modern pop 35 | culture references? 36 |
37 | 38 |39 | Gwen: I think there's a certain 40 | beauty in taking something modern, something often 41 | seen as lowbrow or transient, and giving it a 42 | timeless quality through the medium of oil painting. 43 | There's also an element of nostalgia and joy in 44 | these characters that I think resonates with a lot 45 | of people, myself included. 46 |
47 | 48 |49 | Interviewer: Your style is very 50 | unique. How did you develop this approach? 51 |
52 | 53 |54 | Gwen: It was a process of trial and 55 | error, really. Initially, I tried to keep the pop 56 | culture and traditional elements separate, but it 57 | felt disjointed. I started experimenting with 58 | blending the two more seamlessly, incorporating 59 | elements from each into a cohesive whole. I wanted 60 | each painting to feel like it could hang in a 61 | museum, but also fit right in at a comic convention. 62 |
63 | 64 |65 | Interviewer: What message, if any, 66 | do you hope people take away from your artwork? 67 |
68 | 69 |70 | Gwen: I hope people see that art 71 | can be fun, and that it doesn't have to fit into a 72 | traditional box to be valuable or meaningful. I also 73 | hope that it encourages people to embrace the things 74 | that they love, even if they might seem silly or 75 | inconsequential to others. 76 |
77 | 78 |79 | Interviewer: Fascinating. Lastly, 80 | what's next for you? Can we expect more of these 81 | incredible crossovers in the future? 82 |
83 | 84 |85 | Gwen: I definitely plan on 86 | continuing this series, there's still so many 87 | characters I want to explore. I'm also considering 88 | branching out into other mediums, maybe even some 3D 89 | work. As for what's next, well, you'll just have to 90 | wait and see. 91 |
92 | 93 |
98 |
102 |