From b144fb3fcb7cc2f13a1b8ee7440d51eddf3703c0 Mon Sep 17 00:00:00 2001 From: Guilherme Datilio Ribeiro Date: Fri, 3 Nov 2023 13:17:06 -0300 Subject: [PATCH 1/2] feat: convert React tutorial to NextJS tutorial (#3710) * feat: nextjs tutorial added * chore: step 5 changed to vercel platform * chore: changed docs on step 5 * fix: fixed names * fix: fixed the docs * docs: update NextJS content * Update README.md update syntax * Update src/pages/developing/frameworks/react.mdx * Update src/pages/developing/next-tutorial/faq.mdx Co-authored-by: Andrea N. Cardona * docs: changed nextjs names to react * fix: fixed format * Update README.md Co-authored-by: Scott Strubberg * fix: fixed docs about deploy * Update step-1.mdx * fix: fixed dosc based on feedback * fix: replace icons with pictograms * fix: updated new images * Update wrapping-up.mdx * Update overview.mdx * Update step-1.mdx * Update step-2.mdx * Update step-2.mdx * Update src/pages/developing/react-tutorial/step-3.mdx * Update src/pages/developing/react-tutorial/step-3.mdx * Update src/pages/developing/react-tutorial/step-4.mdx * Update src/pages/developing/react-tutorial/step-4.mdx * Update step-3.mdx * Update step-3.mdx * Update step-3.mdx * Update step-3.mdx * Update step-3.mdx * Update step-3.mdx * Update step-3.mdx * Update step-3.mdx * Update step-4.mdx * chore: format * Update step-2.mdx * Update step-1.mdx * chore: format --------- Co-authored-by: Andrea N. Cardona Co-authored-by: Scott Strubberg --- README.md | 11 +- src/pages/all-about-carbon/what-is-carbon.mdx | 7 +- .../all-about-carbon/who-uses-carbon.mdx | 2 +- src/pages/developing/frameworks/react.mdx | 4 +- src/pages/developing/get-started.mdx | 9 +- src/pages/developing/react-tutorial/faq.mdx | 43 +- .../react-tutorial/images/carbon-badge.png | Bin 120037 -> 0 bytes .../developing/react-tutorial/overview.mdx | 38 +- .../developing/react-tutorial/step-1.mdx | 450 ++++++++---------- .../developing/react-tutorial/step-2.mdx | 179 ++++--- .../developing/react-tutorial/step-3.mdx | 121 +++-- .../developing/react-tutorial/step-4.mdx | 101 ++-- .../developing/react-tutorial/step-5.mdx | 154 +----- .../developing/react-tutorial/wrapping-up.mdx | 17 +- .../shared/step-2/images/landing-layout.png | Bin 182250 -> 811691 bytes .../step-2/images/landing-r1-spacing.png | Bin 37335 -> 49906 bytes .../shared/step-2/images/landing-r1-type.png | Bin 64624 -> 240359 bytes .../step-2/images/landing-r2-spacing.png | Bin 77846 -> 124191 bytes .../step-2/images/landing-r3-spacing.png | Bin 13595 -> 24172 bytes .../shared/step-4/images/info-layout.png | Bin 154407 -> 395916 bytes .../shared/step-4/images/info-spacing.png | Bin 108673 -> 353603 bytes 21 files changed, 477 insertions(+), 659 deletions(-) delete mode 100644 src/pages/developing/react-tutorial/images/carbon-badge.png mode change 100755 => 100644 src/pages/developing/shared/step-2/images/landing-layout.png diff --git a/README.md b/README.md index 81bd729bc98..467bd128634 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,9 @@ ![Deployment status](https://github.com/carbon-design-system/carbon-website/workflows/Deployment%20status/badge.svg) -This is the [Carbon Design System website](http://www.carbondesignsystem.com). It's built using the [gatsby-theme-carbon](https://gatsby-theme-carbon.now.sh/) with [GatsbyJS](https://www.gatsbyjs.org/). +This is the [Carbon Design System website](http://www.carbondesignsystem.com). +It's built using the [gatsby-theme-carbon](https://gatsby.carbondesignsystem.com/) +with [GatsbyJS](https://www.gatsbyjs.org/). ## 📂 Structure @@ -29,11 +31,14 @@ src - `lint:js` – lint your JavaScript files - `format` - run Prettier -If you need more detailed information on how to set up your machine to develop locally, please take a look at our [wiki](https://github.com/carbon-design-system/carbon-website/wiki). +If you need more detailed information on how to set up your machine to develop +locally, please take a look at our +[wiki](https://github.com/carbon-design-system/carbon-website/wiki). ## 🚀 Build -Runing the build command generates all the files and places them in the `public` folder. +Running the build command generates all the files and places them in the +`public` folder. ``` yarn build diff --git a/src/pages/all-about-carbon/what-is-carbon.mdx b/src/pages/all-about-carbon/what-is-carbon.mdx index 473106c5f62..248681d729b 100755 --- a/src/pages/all-about-carbon/what-is-carbon.mdx +++ b/src/pages/all-about-carbon/what-is-carbon.mdx @@ -112,9 +112,10 @@ work and contribute patterns back to the system. ### We support adoption **We conduct training classes, run meetups, and offer certifications.** We offer -tutorials in Angular, React, and Vue. We run [meetups](/whats-happening/meetups) -and design reviews on a regular basis. We're also available to teach at -conferences, bootcamp labs, and wherever else we're needed. +tutorials in Angular, React using Next.js, and Vue. We run +[meetups](/whats-happening/meetups) and design reviews on a regular basis. We're +also available to teach at conferences, bootcamp labs, and wherever else we're +needed. **We engage the community.** We strive to be one of the world's best design systems and we’re diff --git a/src/pages/all-about-carbon/who-uses-carbon.mdx b/src/pages/all-about-carbon/who-uses-carbon.mdx index f6a703acf1f..f8956e80298 100755 --- a/src/pages/all-about-carbon/who-uses-carbon.mdx +++ b/src/pages/all-about-carbon/who-uses-carbon.mdx @@ -133,7 +133,7 @@ Here are some ways developers can begin engaging with Carbon. [design principles](https://www.ibm.com/design/language/). - Check out a tutorial in your framework of choice - ([React](/developing/react-tutorial/overview/), + ([React using Next.js](/developing/react-tutorial/overview/), [Angular (community)](/developing/angular-tutorial/overview/) or [Vue (community)](/developing/vue-tutorial/overview/)). diff --git a/src/pages/developing/frameworks/react.mdx b/src/pages/developing/frameworks/react.mdx index fca981364f6..c7ffcf8f038 100755 --- a/src/pages/developing/frameworks/react.mdx +++ b/src/pages/developing/frameworks/react.mdx @@ -80,7 +80,7 @@ Design System. Components require the use of a build pipeline in your project. This could be in the form of a bundler, framework, or other build tool. Some examples include -NextJS, Vite, Parcel, and Webpack. A comprehensive list is available in the +Next.js, Vite, Parcel, and Webpack. A comprehensive list is available in the [react documentation](https://react.dev/learn/start-a-new-react-project). To use a component, you can import it directly from the package: @@ -122,7 +122,7 @@ A full list of available icons is provided in the [icon library](/guidelines/icons/library/). For a more in depth introduction to using `@carbon/react` in a webpack-based -app, [check out our react tutorial](/developing/react-tutorial/overview/). +app, [check out our React tutorial](/developing/react-tutorial/overview/). ## Development diff --git a/src/pages/developing/get-started.mdx b/src/pages/developing/get-started.mdx index 49d4419b952..1650acf830d 100644 --- a/src/pages/developing/get-started.mdx +++ b/src/pages/developing/get-started.mdx @@ -41,14 +41,15 @@ as well as our GitHub repos and Storybooks for your framework of choice. ### Take a tutorial -We offer tutorials in Angular, React, and Vue to guide you in creating an app -with the Carbon Design System. We’ll teach you the ins and outs of using Carbon -components, and introduce web development best practices along the way. +We offer tutorials in Angular, React using Next.js, and Vue to guide you in +creating an app with the Carbon Design System. We’ll teach you the ins and outs +of using Carbon components, and introduce web development best practices along +the way. diff --git a/src/pages/developing/react-tutorial/faq.mdx b/src/pages/developing/react-tutorial/faq.mdx index 2db1ce72f1e..232cc51d7e7 100644 --- a/src/pages/developing/react-tutorial/faq.mdx +++ b/src/pages/developing/react-tutorial/faq.mdx @@ -1,8 +1,8 @@ --- title: FAQs description: - Welcome to Carbon! This tutorial will guide you in creating a React app with - the Carbon Design System. + Welcome to Carbon! This tutorial will guide you in creating a React app using + Next.js with the Carbon Design System. tabs: [ 'Overview', @@ -16,23 +16,6 @@ tabs: ] --- -### I am getting an error that says `failed to find manifest for cf`. What do I do? - -- The 5th step assumes your spaces are in the US South region. To successfully - deploy, you might need to update the region code (e.g. - `api.[REGION].cf.cloud.ibm.com`) to the region where your spaces were created, - or create a space in the US South region. - -- If you don't have an org, create one - [here](https://cloud.ibm.com/account/cloud-foundry). - - In the top nav go to Manage > Account > Account resources > Cloud Foundry - orgs - - The name you give it doesn't matter, just take note of the region you - select, and use that region's API endpoint (e.g. - `api.[REGION].cf.cloud.ibm.com`) - - Find regions and endpoints - [here](https://cloud.ibm.com/docs/cloud-foundry-public?topic=cloud-foundry-public-endpoints). - ### I am getting an error that says `yarn lockfile missing`. How do I fix this? - This error can occur when the `yarn.lock` file is either missing or differs @@ -48,16 +31,6 @@ tabs: and push up any changes. If this still does not work, ensure your `yarn.lock` file matches the one at the start of the tutorial step -### When will my PR be reviewed? - -- If your PR is passing, it will automatically get approved and closed by a bot. - After it's closed, you can move on to the next step. - -- If your PR is failing, try out the troubleshooting tips on this page first to - fix it. If it's still failing, reach out for help in our slack channel - `#carbon-react` or tag `@carbon-design-system/developers` in a comment on your - PR for help. - ### How can I show others my completion status? - Proof of your completion of the tutorial can be seen by filtering the PR list @@ -67,12 +40,8 @@ tabs: your username. Replace `YOURUSERNAMEHERE` with your username in the following link: - - https://github.com/carbon-design-system/carbon-tutorial/pulls?q=author%3AYOURUSERNAMEHERE - -### Other troubleshooting tips + - https://github.com/carbon-design-system/carbon-tutorial-nextjs/pulls?q=author%3AYOURUSERNAMEHERE -- We updated the `react-scripts` dependency to `v5.0.1`. Pull from `upstream` - and run `yarn` or `npm install` to update your remote branch. -- You no longer need the `.env` with the updated `react-scripts` dependency. If - you are up to date, you can delete that file (previously at the root level). -- Run `yarn format` and commit any changes made. +- It can also be demonstrated by deploying your app. Please see further + documentation + [here](/developing/react-tutorial/step-5#build-for-production-and-deploy). diff --git a/src/pages/developing/react-tutorial/images/carbon-badge.png b/src/pages/developing/react-tutorial/images/carbon-badge.png deleted file mode 100644 index 91b47daf23552042d002aa5faa98fa088ad30fb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120037 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

7?`4P=ihT| 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 diff --git a/src/pages/developing/react-tutorial/overview.mdx b/src/pages/developing/react-tutorial/overview.mdx index 95386037c65..44663b969bd 100644 --- a/src/pages/developing/react-tutorial/overview.mdx +++ b/src/pages/developing/react-tutorial/overview.mdx @@ -1,8 +1,8 @@ --- title: Tutorial overview description: - Welcome to Carbon! This tutorial will guide you in creating a React app with - the Carbon Design System. + Welcome to Carbon! This tutorial will guide you in creating a React app using + Next.js with the Carbon Design System. tabs: [ 'Overview', @@ -20,9 +20,10 @@ import Preview from 'components/Preview'; -Welcome to Carbon! This tutorial will guide you in creating a React app with the -Carbon Design System. We'll teach you the ins and outs of using Carbon -components, while introducing web development best practices along the way. +Welcome to Carbon! This tutorial will guide you in creating a React app using +Next.js with the Carbon Design System. We'll teach you the ins and outs of using +Carbon components, while introducing web development best practices along the +way. @@ -34,13 +35,13 @@ components, while introducing web development best practices along the way. -Here's a [preview](https://v11-react-step-5--carbon-tutorial.netlify.app) of -what you will build: +Here's a [preview](https://carbon-tutorial-nextjs.vercel.app/) of what you will +build: -Starting with Create React App, let's install Carbon and begin using Carbon -components. By the end you will have a React app that uses the UI Shell to -navigate between pages. +Starting from a base Create Next App, let's install Carbon and begin using +Carbon components. By the end you will have a Next.js app that uses the UI Shell +to navigate between pages. @@ -41,13 +41,14 @@ navigate between pages. ## Preview -A [preview](https://v11-react-step-2--carbon-tutorial.netlify.app) of what you -will build: +A +[preview](https://carbon-tutorial-nextjs-nrt4ljsgl-carbon-design-system.vercel.app/) +of what you will build: Hello Carbon! Well, not quite yet. This is the starting point for the Carbon - tutorial. + React tutorial. ``` with: -```jsx path=src/App.js +```jsx path=src/app/page.js ``` @@ -231,34 +251,24 @@ the following files inside `src/components/TutorialHeader`: ```bash src/components/TutorialHeader ├──_tutorial-header.scss -├──index.js └──TutorialHeader.js ``` ### Add UI Shell Sass -Next, in `app.scss`, we'll import our `TutorialHeader` styles. Your file should -now look like this: +Next, in `globals.scss`, we'll import our `TutorialHeader` styles. Add this line +to the top of the file: -```scss path=src/app.scss -@use './components/TutorialHeader/tutorial-header'; +```scss path=src/app/globals.scss +@use '@/components/TutorialHeader/tutorial-header'; ``` ### Import and export the header -In `src/components/TutorialHeader/index.js`, import and export our -`TutorialHeader` component like so: - -```javascript path=src/components/TutorialHeader/index.js -import TutorialHeader from './TutorialHeader'; -export default TutorialHeader; -``` - Next we'll import our Carbon UI Shell components into `TutorialHeader.js`. Set up the file like so: ```javascript path=src/components/TutorialHeader/TutorialHeader.js -import React from 'react'; import { Header, HeaderContainer, @@ -329,11 +339,17 @@ straight to the main content. ### Import icons +First we will install the icons we will use in the header + +```bash +yarn add @carbon/icons-react +``` + Now let's import the icons. In the `TutorialHeader.js` file, we need to import each individual icon we will use. ```javascript path=src/components/TutorialHeader/TutorialHeader.js -import { Switcher, Notification, UserAvatar } from '@carbon/react/icons'; +import { Switcher, Notification, UserAvatar } from '@carbon/icons-react'; ``` Then we need to add the `HeaderGlobalAction` component inside of the @@ -363,30 +379,53 @@ With: ### Render the header Next we'll render our UI Shell by importing our `TutorialHeader` component and -`Content` into `App.js`. Your imports should look like this: - -```javascript path=src/App.js -import React, { Component } from 'react'; -import './app.scss'; -import { Button, Content } from '@carbon/react'; -import TutorialHeader from './components/TutorialHeader'; -``` - -Our `return` currently just contains a `Button`. Let's update that to include -our imported components. This should look like the following: - -```javascript path=src/App.js -class App extends Component { - render() { - return ( - <> - - - - - - ); - } +`Content` into a provider components in the Root Layout. We do this because +layout components in Next.js 13 are server-side components. + + + +**Note:** We can wrap the `{children}` in Root Layout with a Provider component +that will use to hold the components we want across all pages. See this +[explanation](https://nextjs.org/docs/getting-started/react-essentials#rendering-third-party-context-providers-in-server-components) +in Next docs. + + + +```javascript path=src/app/layout.js +import './globals.scss'; +import { Providers } from './providers'; + +export const metadata = { + title: 'Carbon + Next13', + description: 'IBM Carbon Tutorial with Next.js 13', +}; + +export default function RootLayout({ children }) { + return ( + + + {children} + + + ); +} +``` + +Create a `providers.js` file within the app folder with the following content. + +```javascript path=src/app/providers.js +'use client'; + +import TutorialHeader from '@/components/TutorialHeader/TutorialHeader'; +import { Content } from '@carbon/react'; + +export function Providers({ children }) { + return ( +

+ + {children} +
+ ); } ``` @@ -394,200 +433,135 @@ You should now see a styled UI Shell header and a button below it. ## Create pages -Next thing we need to do is create the files for our content. Start by creating -a folder called `content` in `src`. This should be a sibling of -`src/components`. +Next thing we need to do is create the files for our content. We already have a +folder called `app` in `src`. This should be a sibling of `src/components`. -Since our app will have two pages, we'll create two folders in `src/content`. +Since our app will have two pages, we'll create two folders in `src/app`. ```bash -src/content -├── LandingPage -└── RepoPage +src/app +├── home +└── repos ``` -Next, we'll set up these folders the same way we set up -`src/components/TutorialHeader`. +Next.js uses these folders for page routing which is built into the framework, +we do not need separate React routing. In each there is a `page.js` and +optionally a `layout.js` and styling sheet. -Create the following files in the `LandingPage` folder: +Create the following files in the `home` folder: ```bash -src/content/LandingPage +src/app/home ├── _landing-page.scss -├── index.js -└── LandingPage.js +└── page.js ``` -Create the following files in the `RepoPage` folder: +Create the following files in the `repos` folder: ```bash -src/content/RepoPage +src/app/repos ├── _repo-page.scss -├── index.js -└── RepoPage.js +└── page.js ``` ### Set up content Sass -Next, we'll import our content Sass files in `app.scss`, like so: +Next, we'll import our content Sass files in `globals.scss`, like so: -```scss path=src/app.scss -@use './components/TutorialHeader/tutorial-header'; -@use './content/LandingPage/landing-page'; -@use './content/RepoPage/repo-page'; +```scss path=src/app/globals.scss +@use '@/app/home/landing-page'; +@use '@/app/repos/repo-page'; ``` ### Import and export content pages Now that our stylesheets are set up, we need to create our pages' components. Starting with `LandingPage`, just like with our header, we need to export the -component in `src/content/LandingPage/index.js` by adding: +component in `javascript path=src/app/home/page.js` by adding: -```javascript path=src/content/LandingPage/index.js -import LandingPage from './LandingPage'; -export default LandingPage; -``` - -Next in `LandingPage.js`, we'll create our component. - -```javascript path=src/content/LandingPage/LandingPage.js -import React from 'react'; +```javascript path=src/app/home/page.js +`use client`; -const LandingPage = () => { +export default function LandingPage() { return
LANDING PAGE
; -}; - -export default LandingPage; +} ``` -We'll repeat this process with `RepoPage`. +And we will add this into our root page: -In `src/content/RepoPage/index.js`, import and export the `RepoPage` component -like so: +```javascript path=src/app/page.js +import LandingPage from './home/page'; -```javascript path=src/content/RepoPage/index.js -import RepoPage from './RepoPage'; -export default RepoPage; +export default function Page() { + return ; +} ``` -Then in `RepoPage.js` create the component. +We'll repeat this process with `RepoPage`. -```javascript path=src/content/RepoPage/RepoPage.js -import React from 'react'; +```javascript path=src/app/repos/page.js +`use client`; -const RepoPage = () => { +export default function RepoPage() { return
REPO PAGE
; -}; - -export default RepoPage; -``` - -Awesome! We've just created our content pages. Next thing we need to do is -render them with our router. - -## Add routing - -We've updated our app to render our header, but now we need to add routing -functionality. To do this we need to install `react-router-dom`. Go ahead and -stop your development server (with `CTRL-C`) and then: - -```bash -yarn add react-router-dom@5.0.0 -yarn start -``` - -First, we need to wrap our app in the `Router` component. In the root -`index.js`, add the import: - -```javascript path=src/index.js -import { HashRouter as Router } from 'react-router-dom'; -``` - - - -**Note:** We're using `HashRouter` instead of `BrowserRouter` to simplify -deployments in upcoming tutorial steps. Learn more about the React Router -[here](https://reacttraining.com/react-router/web/api/BrowserRouter). - - - -Then, update the `render()` function to include the `Router`. - -```javascript path=src/index.js -createRoot(document.getElementById('root')).render( - - - -); +} ``` -In order to render our content pages, we need to add the following imports in -`App.js` below our existing imports. +Navigate to the repos page by adding `/repos` at the end of your locally hosted +site to see your repos page. -```javascript path=src/App.js -import { Route, Switch, BrowserRouter } from 'react-router-dom'; -import { Content } from '@carbon/react'; -import LandingPage from './content/LandingPage'; -import RepoPage from './content/RepoPage'; -``` +Awesome! We've just created our content pages with automatic page routing +courtesy of Next.js. -This allows us to use our page content components and routing components from -`react-router-dom`. +After that we need to do a couple of quick fixes to the UI Shell to work with +Next.js links. -The next thing we need to do is update what we're returning to `App.js`. We -currently just have a div with some dummy content. In order to render our pages -correctly, we need to replace the `div` with `` (and remove the -text inside). - -Now inside `App.js` we'll add the following: +Add the `Link` import in `TutorialHeader.js`: -```jsx path=src/App.js - - - - - - - - +```javascript path=src/components/TutorialHeader/TutorialHeader.js +import Link from 'next/link'; ``` -After that we need to do a couple quick fixes to the UI Shell to have it work -with the React router. - -Add the `Link` import in `TutorialHeader.js`: +We need to use the `Link` component instead of the default anchor elements to +prevent full page reload when navigating to different pages in Next.js +applications. To use `Link`, we wrap `HeaderName` component and pass through +`href` elements to it: ```javascript path=src/components/TutorialHeader/TutorialHeader.js -import { Link } from 'react-router-dom'; + + Carbon Tutorial + ``` -We need to use the `Link` component instead of the default anchor elements to -prevent full page reload when navigating to different pages with React Router. -To use `Link`, update the `HeaderName` component to use the `element` prop and -replace the `href` with `to`: +Do the same with the components `HeaderNavigation` and `HeaderSideNavItems` that +contain `href="/repos"`, updating them to: ```javascript path=src/components/TutorialHeader/TutorialHeader.js - - Carbon Tutorial - + + + Repositories + + ``` -Do the same with the components that contain `href="/repos"`, updating them to: +and the following: ```javascript path=src/components/TutorialHeader/TutorialHeader.js - - Repositories - + + + Repositories + + ``` You should now have a working header that routes to different pages without full page reload! However, our page does not match the design specs. We need to change the header theme to `g100` to match the specs. -In `App.js` we will add inline theming for our navigation. First, we need to -import our new `Theme` component. +In `providers.js` we will add inline theming for our navigation. First, we need +to import our new `Theme` component. -```javascript path=src/App.js +```javascript path=src/app/providers.js import { Content, Theme } from '@carbon/react'; ``` @@ -595,29 +569,13 @@ Then, we will wrap `Theme` around our header, and set the zoned theme using the `theme` prop, which accepts one of four strings: `"white"`, `"g10"`, `"g90"` or `"g100"`. -```javascript path=src/App.js - +```javascript path=src/app/providers.js +
- - - - - - - -``` - -You might have noticed that the landing and repo page content disappeared. This -is because we now have a wrapper around the UI Shell, and the spacing is off. To -fix this, we'll add the following override in `index.scss` below our style -import: - -```scss path=src/index.scss -.cds--content { - margin-top: 3rem; -} + {children} +
``` We have one last thing to fix before we're done. Because we changed the header @@ -687,7 +645,7 @@ have `.yarn/cache` commit changes. Then, push to your repository: ```bash -git push origin v11-react-step-1 +git push origin v11-next-step-1 ``` @@ -707,7 +665,7 @@ over HTTPS. **Note:** If you receive a `non-fast-forward` error, it's likely that your forked repository is behind the original repository and needs to be updated. This can happen if the tutorial was updated after you began working on it. To -fix, run `git pull upstream v11-react-step-1` to merge the changes into your +fix, run `git pull upstream v11-next-step-1` to merge the changes into your branch, then you can try pushing again. Or, you can [manually merge](https://help.github.com/en/articles/syncing-a-fork) in the upstream changes. @@ -717,9 +675,9 @@ upstream changes. ### Pull request (PR) Finally, visit -[carbon-tutorial](https://github.com/carbon-design-system/carbon-tutorial) to -"Compare & pull request". In doing so, make sure that you are comparing to -`v11-react-step-1` into `base: v11-react-step-1`. Take notice of the +[carbon-react-tutorial](https://github.com/carbon-design-system/carbon-tutorial-nextjs) +to "Compare & pull request". In doing so, make sure that you are comparing to +`v11-next-step-1` into `base: v11-next-step-1`. Take notice of the [Netlify](https://www.netlify.com) bot that deploys a preview of your PR every time that you push new commits. These previews can be shared and viewed by anybody to assist the PR review process. diff --git a/src/pages/developing/react-tutorial/step-2.mdx b/src/pages/developing/react-tutorial/step-2.mdx index 9993d264a7e..cadac7e32d2 100644 --- a/src/pages/developing/react-tutorial/step-2.mdx +++ b/src/pages/developing/react-tutorial/step-2.mdx @@ -1,8 +1,8 @@ --- title: 2. Building pages description: - Welcome to Carbon! This tutorial will guide you in creating a React app with - the Carbon Design System. + Welcome to Carbon! This tutorial will guide you in creating a React app using + Next.js with the Carbon Design System. tabs: [ 'Overview', @@ -20,7 +20,7 @@ import Preview from 'components/Preview'; -Now that we have a React app using the UI Shell, it's time to build a few static +Now that we have our app using the UI Shell, it's time to build a few static pages. In this step, we'll become comfortable with the Carbon grid and various Carbon components. @@ -41,13 +41,14 @@ Carbon components. ## Preview -A [preview](https://v11-react-step-3--carbon-tutorial.netlify.app) of what -you'll build: +A +[preview](https://carbon-tutorial-nextjs-huv7un4ex-carbon-design-system.vercel.app/) +of what you'll build: @@ -93,41 +94,15 @@ yarn Then, start the app: ```bash -yarn start +yarn dev ``` You should see something similar to where the [previous step](/developing/react-tutorial/step-1) left off. -### IE11 polyfills - -Before we get started with this step, we'll be adding some components that -require IE11 polyfills. As shown in the -[Carbon React documentation](https://github.com/carbon-design-system/carbon/blob/v10/packages/react/.storybook/polyfills.js), -go ahead and add these imports to the top of the root `index.js`. They aren't -all needed, but we'll add them all to play it safe for the duration of the -tutorial. - -```javascript path=src/index.js -import 'core-js/modules/es7.array.includes'; -import 'core-js/modules/es6.array.fill'; -import 'core-js/modules/es6.string.includes'; -import 'core-js/modules/es6.string.trim'; -import 'core-js/modules/es7.object.values'; -``` - - - -**Note:** You may be wondering where `core-js`came from because it's not a -Carbon package and we haven't explicitly installed it. Run `yarn why core-js` -and you'll see there are a number of packages that have brought it in as a -dependency. - - - ## Add landing page grid -Let's add our grid elements to `LandingPage.js`. +Let's add our grid elements to our `LandingPage` page component. In order to use the grid, we need to wrap everything in a ``. Because we're building with the new CSS Grid, we won't be using typical rows. We'll use @@ -138,7 +113,7 @@ the `sm`, `md`, and `lg` props. For example, `` means the column will span 2/4 columns at the small breakpoint, 8/8 columns at the medium breakpoint, 8/16 columns at the large breakpoint. -We've included the designs for this tutorial app in the `design.sketch` file +We've included the designs for this tutorial app in the `design.figma` file found as a top-level file in the `carbon-tutorial` repository. But, if you don't have Sketch installed and available to inspect the design, we'll provide screenshots. @@ -153,9 +128,10 @@ screenshots. -First, we need to import our grid components at the top of `LandingPage.js`: +First, we need to import our grid components at the top of `LandingPage`: -```javascript path=src/content/LandingPage/LandingPage.js +```javascript path=src/app/home/page.js +'use client'; import { Grid, Column } from '@carbon/react'; ``` @@ -166,7 +142,7 @@ background looks like it has four columns of equal width. We'll make rows like so: -```jsx path=src/content/LandingPage/LandingPage.js +```jsx path=src/app/home/page.js return ( @@ -218,13 +194,13 @@ components we need. Because we'll be importing several components for this page, we'll import them directly from the `@carbon/react` package instead of the direct path for each one. -```javascript path=src/content/LandingPage/LandingPage.js +```javascript path=src/app/home/page.js import { Breadcrumb, BreadcrumbItem, Grid, Column } from '@carbon/react'; ``` We can now add our component to the first row, along with a header, like so: -```jsx path=src/content/LandingPage/LandingPage.js +```jsx path=src/app/home/page.js @@ -242,7 +218,7 @@ You may notice that the styles look off. Don't worry, we'll fix these later. In our second row we'll need `Tabs` and `Button` components. We'll update the `@carbon/react` import to: -```javascript path=src/content/LandingPage/LandingPage.js +```javascript path=src/app/home/page.js import { Breadcrumb, BreadcrumbItem, @@ -269,7 +245,7 @@ supported. -```jsx path=src/content/LandingPage/LandingPage.js +```jsx path=src/app/home/page.js @@ -341,10 +317,10 @@ Same goes for the `TabList` opening tag: ``` Next, we'll need to add some styling overrides to move the tabs to the right on -large viewports. Create a file `_overrides.scss` in `src/content/LandingPage` -with this declaration block. +large viewports. Create a file `_overrides.scss` in `src/app/home` with this +declaration block. -```scss path=src/content/LandingPage/_overrides.scss +```scss path=src/app/home/_overrides.scss .landing-page__r2 .cds--tabs--scrollable { transform: translateZ(0); justify-content: flex-end; @@ -367,7 +343,7 @@ with this declaration block. Then in `_landing-page.scss` add this import at the top of the file. -```scss path=src/content/LandingPage/_landing-page.scss +```scss path=src/app/home/_landing-page.scss @use './overrides.scss'; ``` @@ -381,21 +357,28 @@ names, you have a consolidated list of styling declaration blocks to review. We can now add our images and text for each column in the first `Tab` in -`LandingPage.js`. +`LandingPage`. + +Let's import `Image` from Next.js by adding the following import under our +Carbon React component imports. + +```jsx path=src/app/home/page.js +import Image from 'next/image'; -```jsx path=src/content/LandingPage/LandingPage.js - Carbon illustration - +; ``` Now let's set the image size in `_landing-page.scss`: -```scss path=src/content/LandingPage/_landing-page.scss +```scss path=src/app/home/_landing-page.scss .landing-page__illo { max-width: 100%; } @@ -410,7 +393,7 @@ we'll leave the code as is. The third row will be created in a later tutorial, so we'll just add the headers for now. -```jsx path=src/content/LandingPage/LandingPage.js +```jsx path=src/app/home/page.js @@ -438,7 +421,7 @@ In `_landing-page.scss`, add these imports at the **top** of the file (above our overrides import) so we can use Carbon breakpoints, tokens, and typography Sass mixins and functions: -```scss path=src/content/LandingPage/_landing-page.scss +```scss path=src/app/home/_landing-page.scss @use '@carbon/react/scss/spacing' as *; @use '@carbon/react/scss/type' as *; @use '@carbon/react/scss/breakpoint' as *; @@ -466,7 +449,7 @@ mixins and functions: Back to `_landing-page.scss`, we need to add space above the breadcrumb and below the heading. For that, add: -```scss path=src/content/LandingPage/_landing-page.scss +```scss path=src/app/home/_landing-page.scss .landing-page__banner { padding-top: $spacing-05; padding-bottom: $spacing-07 * 4; @@ -486,7 +469,7 @@ Looking at the design, we need a wall-to-wall light gray background behind the banner and also behind the third row. This is a great opportunity to use a Sass mixin. We could put this at the top of `_landing-page.scss`, but it's best practice to place mixins in a dedicated file, so create a `_mixins.scss` file in -`src/content/LandingPage`. +`src/app/home`. Add the following in `_mixins.scss`. Per the design we need to use Gray 10 for our banner background color, which can be set with the `$layer-01` @@ -495,7 +478,7 @@ we want the background to extend into the grid's outermost gutters to go the full width of the viewport, so given the DOM structure, we can achieve that by setting the background in an absolutely positioned pseudo element. -```scss path=src/content/LandingPage/_mixins.scss +```scss path=src/app/home/_mixins.scss @use '@carbon/react/scss/spacing' as *; @use '@carbon/react/scss/theme' as *; @@ -508,7 +491,7 @@ setting the background in an absolutely positioned pseudo element. After you have created `_mixins.scss`, import it at the **top** of `_landing-page.scss`. By now you should have six imports: -```scss path=src/content/LandingPage/_landing-page.scss +```scss path=src/app/home/_landing-page.scss @use '@carbon/react/scss/spacing' as *; @use '@carbon/react/scss/type' as *; @use '@carbon/react/scss/breakpoint' as *; @@ -520,7 +503,7 @@ After you have created `_mixins.scss`, import it at the **top** of Now to use the new mixin, update the `.landing-page__banner` declaration block to: -```scss path=src/content/LandingPage/_landing-page.scss +```scss path=src/app/home/_landing-page.scss .landing-page__banner { padding-top: $spacing-05; padding-bottom: $spacing-07 * 4; @@ -546,7 +529,7 @@ translate design to development. So, looking up the [type token](https://www.carbondesignsystem.com/guidelines/typography/productive), we know to use `productive-heading-05`: -```scss path=src/content/LandingPage/_landing-page.scss +```scss path=src/app/home/_landing-page.scss .landing-page__heading { @include type-style('productive-heading-05'); } @@ -559,7 +542,7 @@ design. By inspecting the tabs component, you can see that the tab height computes to `40px`. We can use that to create our negative top margin in rem units. -```scss path=src/content/LandingPage/_landing-page.scss +```scss path=src/app/home/_landing-page.scss .landing-page__r2 { margin-top: rem(-40px); } @@ -588,7 +571,7 @@ baseline, for consistency as well as development ease so `margins` and -```scss path=src/content/LandingPage/_landing-page.scss +```scss path=src/app/home/_landing-page.scss .tabs-group-content { padding: $spacing-10 $spacing-06; } @@ -630,7 +613,7 @@ Let's also add some styles for the last row, even though that will get used later in the tutorial. You'll notice that we get to re-use the `landing-page-background` mixin that we just created. -```scss path=src/content/LandingPage/_landing-page.scss +```scss path=src/app/home/_landing-page.scss .landing-page__r3 { padding-top: $spacing-09; padding-bottom: $spacing-09; @@ -646,7 +629,7 @@ later in the tutorial. You'll notice that we get to re-use the Lastly, we'll fix some grid alignment issues. We'll use one of our breakpoint mixins for the media queries, like so: -```scss path=src/content/LandingPage/_landing-page.scss +```scss path=src/app/home/_landing-page.scss .landing-page__banner, .landing-page__r2, .landing-page__r3 { @@ -661,12 +644,12 @@ mixins for the media queries, like so: ``` We are almost done with the landing page. You may notice a few styles are off. -To fix this, we'll update some of the overriding styles in `index.scss`. We +To fix this, we'll update some of the overriding styles in `globals.scss`. We already have some overriding styles for `.cds--content`. We need to add `padding: 0;` to this selector and add one more selector for the grid below that: -```scss path=src/index.scss +```scss path=src/app/globals.scss .cds--content { margin-top: 3rem; padding: 0; @@ -682,10 +665,10 @@ that: } ``` -Since we are using out `breakpoint` mixin, we need to import the styles for that +Since we are using our `breakpoint` mixin, we need to import the styles for that below our Carbon styles import: -```scss path=src/index.scss +```scss path=src/app/globals.scss @use '@carbon/react'; @use '@carbon/react/scss/breakpoint' as *; ``` @@ -695,18 +678,20 @@ page. ## Add repo page grid -Now in our `RepoPage.js` we'll import our `Grid` components at the top: +Now in our `RepoPage`component in the `src/app/repos/page.js` file we'll import +our `Grid` components at the top: -```javascript path=src/content/RepoPage/RepoPage.js +```javascript path=src/app/repos/page.js +'use client'; import { Grid, Column } from '@carbon/react'; ``` Then add our grid containers in the `return` section. -```javascript path=src/content/RepoPage/RepoPage.js +```javascript path=src/app/repos/page.js return ( - + Data table will go here @@ -715,17 +700,17 @@ return ( ## Build repo page -We currently have `RepoPage.js` that just contains a grid and placeholder -content for the time being. In the next tutorial step we're going to be querying -an API to populate the `DataTable` component in this page. As a best practice to +We currently have `RepoPage` that just contains a grid and placeholder content +for the time being. In the next tutorial step we're going to be querying an API +to populate the `DataTable` component in this page. As a best practice to separate data fetching from the presentation components, go ahead and create a -`RepoTable.js` as a sibling to `RepoPage.js` in `src/content/RepoPage`. +`RepoTable.js` as a sibling to `page.js` in `src/app/repos`. ### Build data table First, we'll add our data table by importing a few components in `RepoTable.js`: -```javascript path=src/content/RepoPage/RepoTable.js +```javascript path=src/app/repos/RepoTable.js import React from 'react'; import { DataTable, @@ -745,7 +730,7 @@ import { Then, let's create the `RepoTable` component and export it at the very bottom of `RepoTable.js`. -```javascript path=src/content/RepoPage/RepoTable.js +```javascript path=src/app/repos/RepoTable.js const RepoTable = ({ rows, headers }) => { return ( { {headers.map((header) => ( - + {header.header} ))} @@ -814,15 +799,15 @@ into the component. -At this point, return to `RepoPage.js` because now we need to render a static +At this point, return to `RepoPage` because now we need to render a static `RepoTable`. ### Render data table -Import `RepoTable` in `RepoPage.js`. +Import `RepoTable` into `RepoPage`. -```javascript path=src/content/RepoPage/RepoPage.js -import React from 'react'; +```javascript path=src/app/repos/page.js +'use client'; import RepoTable from './RepoTable'; import { Grid, Column } from '@carbon/react'; ``` @@ -831,7 +816,7 @@ Then below the imports, include the following arrays to pass into the `RepoTable` component. We'll be setting the `rows` array from an API in the next tutorial step, but for now, static example rows will suffice. -```javascript path=src/content/RepoPage/RepoPage.js +```javascript path=src/app/repos/page.js const headers = [ { key: 'name', @@ -890,10 +875,9 @@ const rows = [ ]; ``` -Lastly in `RepoPage.js`, we need to simply replace `Data table will go here` -with: +Lastly in `RepoPage`, we need to simply replace `Data table will go here` with: -```jsx path=src/content/RepoPage/RepoPage.js +```jsx path=src/app/repos/page.js ``` @@ -904,7 +888,7 @@ vertical spacing issues. In `_repo-page.scss`, add the following styles: -```scss path=src/content/RepoPage/_repo-page.scss +```scss path=src/app/repos/_repo-page.scss @use '@carbon/react/scss/spacing' as *; .repo-page__r1 { @@ -929,9 +913,10 @@ yarn ci-check -**Note:** Having issues running the CI check? -[Step 1]() -has troubleshooting notes that may help. +**Note:** If the `ci-check` is giving an error, it's likely that some of your +source files are not properly formatted. This could happen if your text editor +isn't formatting with Prettier on save. To get `ci-check` to pass, run +`yarn format` then re-run `yarn ci-check`. @@ -948,7 +933,7 @@ git add --all && git commit -m "feat(tutorial): complete step 2" Then, push to your repository: ```bash -git push origin v11-react-step-2 +git push origin v11-next-step-2 ``` @@ -962,9 +947,9 @@ troubleshooting notes that may help. ### Pull request (PR) Finally, visit -[carbon-tutorial](https://github.com/carbon-design-system/carbon-tutorial) to -"Compare & pull request". In doing so, make sure that you are comparing to -`v11-react-step-2` into `base: v11-react-step-2`. +[carbon-react-tutorial](https://github.com/carbon-design-system/carbon-tutorial) +to "Compare & pull request". In doing so, make sure that you are comparing to +`v11-next-step-2` into `base: v11-next-step-2`. diff --git a/src/pages/developing/react-tutorial/step-3.mdx b/src/pages/developing/react-tutorial/step-3.mdx index 997c82b33a9..4dcfc1ed852 100644 --- a/src/pages/developing/react-tutorial/step-3.mdx +++ b/src/pages/developing/react-tutorial/step-3.mdx @@ -1,8 +1,8 @@ --- title: 3. Using APIs description: - Welcome to Carbon! This tutorial will guide you in creating a React app with - the Carbon Design System. + Welcome to Carbon! This tutorial will guide you in creating a React app using + Next.js with the Carbon Design System. tabs: [ 'Overview', @@ -48,13 +48,14 @@ To do so, we'll be using [Octokit Core](https://github.com/octokit/core.js/#readme), a client that makes it easy to interact with Github's APIs. -A [preview](https://v11-react-step-4--carbon-tutorial.netlify.app) of what you -will build (see repositories page): +A +[preview](https://carbon-tutorial-nextjs-8xoxdcixk-carbon-design-system.vercel.app/) +of what you will build (see repositories page): { +```javascript path=src/app/repos/page.js +function RepoPage() { useEffect(() => { async function getCarbonRepos() { const res = await octokitClient.request('GET /orgs/{org}/repos', { @@ -173,11 +175,10 @@ const RepoPage = () => { getCarbonRepos(); }, []); -... ``` -At this point, if you navigate to the `Repositories` page in your running app -and view your browser's console (e.g. +At this point, if you navigate to the Repositories page `/repos` in your running +app and view your browser's console (e.g. [Chrome DevTools](https://developer.chrome.com/docs/devtools/)), you should see the response from GitHub! @@ -186,17 +187,18 @@ the response from GitHub! Our last column in the data table will be a comma-separated list of repository and home page links, so let's create a component called `LinkList`. -Import `Link` at the top of `RepoPage.js`. The imports should look like this. +Import `Link` at the top of `/app/repos/page.js`. The imports should look like +this. -```javascript path=src/content/RepoPage/RepoPage.js +```javascript path=src/app/repos/page.js import { Link, Grid, Column } from '@carbon/react'; ``` -Then use `Link` in this component that has two props (`url` and `homepageUrl`) +Then use `Link` in this component. It has two props (`url` and `homepageUrl`) and returns an unordered list. If the repository does not have a home page URL, only render the repository link. -```javascript path=src/content/RepoPage/RepoPage.js +```javascript path=src/app/repos/page.js const LinkList = ({ url, homepageUrl }) => (