├── .editorconfig
├── .env.development
├── .env.production
├── .eslintignore
├── .eslintrc
├── .github
├── dependabot.yml
└── workflows
│ ├── analyze.yml
│ ├── analyze_comment.yml
│ ├── discord_notify.yml
│ ├── label_core_team_prs.yml
│ └── site_lint.yml
├── .gitignore
├── .husky
└── pre-commit
├── .prettierignore
├── .prettierrc
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE-DOCS.md
├── README.md
├── TRANSLATION.md
├── colors.js
├── next-env.d.ts
├── next.config.js
├── package.json
├── plugins
├── gatsby-remark-header-custom-ids
│ └── gatsby-ssr.js
├── markdownToHtml.js
├── remark-header-custom-ids.js
└── remark-smartypants.js
├── postcss.config.js
├── public
├── .well-known
│ └── atproto-did
├── android-chrome-192x192.png
├── android-chrome-384x384.png
├── android-chrome-512x512.png
├── apple-touch-icon.png
├── browserconfig.xml
├── favicon-16x16.png
├── favicon-32x32.png
├── favicon.ico
├── favicon_old.ico
├── fonts
│ └── Source-Code-Pro-Regular.woff2
├── html
│ └── single-file-example.html
├── images
│ ├── blog
│ │ └── introducing-react-dev
│ │ │ ├── home-dark.png
│ │ │ └── home-light.png
│ ├── brand
│ │ ├── logo_dark.svg
│ │ ├── logo_light.svg
│ │ ├── wordmark_dark.svg
│ │ └── wordmark_light.svg
│ ├── docs
│ │ ├── diagrams
│ │ │ ├── conditional_render_tree.dark.png
│ │ │ ├── conditional_render_tree.png
│ │ │ ├── generic_dependency_tree.dark.png
│ │ │ ├── generic_dependency_tree.png
│ │ │ ├── generic_render_tree.dark.png
│ │ │ ├── generic_render_tree.png
│ │ │ ├── module_dependency_tree.dark.png
│ │ │ ├── module_dependency_tree.png
│ │ │ ├── passing_data_context_close.dark.png
│ │ │ ├── passing_data_context_close.png
│ │ │ ├── passing_data_context_far.dark.png
│ │ │ ├── passing_data_context_far.png
│ │ │ ├── passing_data_lifting_state.dark.png
│ │ │ ├── passing_data_lifting_state.png
│ │ │ ├── passing_data_prop_drilling.dark.png
│ │ │ ├── passing_data_prop_drilling.png
│ │ │ ├── prerender.dark.png
│ │ │ ├── prerender.png
│ │ │ ├── preserving_state_add_component.dark.png
│ │ │ ├── preserving_state_add_component.png
│ │ │ ├── preserving_state_diff_position_p1.dark.png
│ │ │ ├── preserving_state_diff_position_p1.png
│ │ │ ├── preserving_state_diff_position_p2.dark.png
│ │ │ ├── preserving_state_diff_position_p2.png
│ │ │ ├── preserving_state_diff_position_p3.dark.png
│ │ │ ├── preserving_state_diff_position_p3.png
│ │ │ ├── preserving_state_diff_pt1.dark.png
│ │ │ ├── preserving_state_diff_pt1.png
│ │ │ ├── preserving_state_diff_pt2.dark.png
│ │ │ ├── preserving_state_diff_pt2.png
│ │ │ ├── preserving_state_diff_same_pt1.dark.png
│ │ │ ├── preserving_state_diff_same_pt1.png
│ │ │ ├── preserving_state_diff_same_pt2.dark.png
│ │ │ ├── preserving_state_diff_same_pt2.png
│ │ │ ├── preserving_state_dom_tree.dark.png
│ │ │ ├── preserving_state_dom_tree.png
│ │ │ ├── preserving_state_increment.dark.png
│ │ │ ├── preserving_state_increment.png
│ │ │ ├── preserving_state_remove_component.dark.png
│ │ │ ├── preserving_state_remove_component.png
│ │ │ ├── preserving_state_same_component.dark.png
│ │ │ ├── preserving_state_same_component.png
│ │ │ ├── preserving_state_tree.dark.png
│ │ │ ├── preserving_state_tree.png
│ │ │ ├── prewarm.dark.png
│ │ │ ├── prewarm.png
│ │ │ ├── render_tree.dark.png
│ │ │ ├── render_tree.png
│ │ │ ├── responding_to_input_flow.dark.png
│ │ │ ├── responding_to_input_flow.png
│ │ │ ├── sharing_data_child.dark.png
│ │ │ ├── sharing_data_child.png
│ │ │ ├── sharing_data_child_clicked.dark.png
│ │ │ ├── sharing_data_child_clicked.png
│ │ │ ├── sharing_data_parent.dark.png
│ │ │ ├── sharing_data_parent.png
│ │ │ ├── sharing_data_parent_clicked.dark.png
│ │ │ ├── sharing_data_parent_clicked.png
│ │ │ ├── sharing_state_child.dark.png
│ │ │ ├── sharing_state_child.png
│ │ │ ├── sharing_state_child_clicked.dark.png
│ │ │ ├── sharing_state_child_clicked.png
│ │ │ ├── sharing_state_parent.dark.png
│ │ │ ├── sharing_state_parent.png
│ │ │ ├── sharing_state_parent_clicked.dark.png
│ │ │ ├── sharing_state_parent_clicked.png
│ │ │ ├── use_client_module_dependency.dark.png
│ │ │ ├── use_client_module_dependency.png
│ │ │ ├── use_client_render_tree.dark.png
│ │ │ ├── use_client_render_tree.png
│ │ │ ├── writing_jsx_form.dark.png
│ │ │ ├── writing_jsx_form.png
│ │ │ ├── writing_jsx_html.dark.png
│ │ │ ├── writing_jsx_html.png
│ │ │ ├── writing_jsx_js.dark.png
│ │ │ ├── writing_jsx_js.png
│ │ │ ├── writing_jsx_sidebar.dark.png
│ │ │ └── writing_jsx_sidebar.png
│ │ ├── illustrations
│ │ │ ├── i_browser-paint.png
│ │ │ ├── i_children-prop.png
│ │ │ ├── i_declarative-ui-programming.png
│ │ │ ├── i_imperative-ui-programming.png
│ │ │ ├── i_import-export.svg
│ │ │ ├── i_inputs1.png
│ │ │ ├── i_inputs2.png
│ │ │ ├── i_puritea-recipe.png
│ │ │ ├── i_react-batching.png
│ │ │ ├── i_ref.png
│ │ │ ├── i_render-and-commit1.png
│ │ │ ├── i_render-and-commit2.png
│ │ │ ├── i_render-and-commit3.png
│ │ │ ├── i_render1.png
│ │ │ ├── i_render2.png
│ │ │ ├── i_render3.png
│ │ │ ├── i_rerender1.png
│ │ │ ├── i_rerender2.png
│ │ │ ├── i_rerender3.png
│ │ │ ├── i_state-snapshot1.png
│ │ │ ├── i_state-snapshot2.png
│ │ │ └── i_state-snapshot3.png
│ │ ├── react-devtools-extension.png
│ │ ├── react-devtools-standalone.png
│ │ ├── react-devtools-usedebugvalue.png
│ │ ├── s_thinking-in-react_ui.png
│ │ └── s_thinking-in-react_ui_outline.png
│ ├── g_arrow.png
│ ├── home
│ │ ├── community
│ │ │ ├── react_conf_elizabet.webp
│ │ │ ├── react_conf_fun.webp
│ │ │ ├── react_conf_hallway.webp
│ │ │ ├── react_conf_nat.webp
│ │ │ ├── react_conf_selfie.webp
│ │ │ ├── react_india_hallway.webp
│ │ │ ├── react_india_selfie.webp
│ │ │ ├── react_india_sunil.webp
│ │ │ └── react_india_team.webp
│ │ ├── conf2019
│ │ │ ├── alex.jpg
│ │ │ ├── alexandra.jpg
│ │ │ ├── ashley.jpg
│ │ │ ├── becca.jpg
│ │ │ ├── brian.jpg
│ │ │ ├── brittany.jpg
│ │ │ ├── cameron.jpg
│ │ │ ├── cover.svg
│ │ │ ├── frank.jpg
│ │ │ ├── jed.jpg
│ │ │ ├── jenn.jpg
│ │ │ ├── joe.jpg
│ │ │ ├── lee.jpg
│ │ │ ├── lizzie.jpg
│ │ │ ├── luca.jpg
│ │ │ ├── maja.jpg
│ │ │ ├── nat.jpg
│ │ │ ├── sophie.jpg
│ │ │ ├── tae.jpg
│ │ │ ├── tania.jpg
│ │ │ ├── tejas.jpg
│ │ │ ├── tom.jpg
│ │ │ └── yuzhi.jpg
│ │ ├── conf2021
│ │ │ ├── aakansha.jpg
│ │ │ ├── andrew.jpg
│ │ │ ├── brian.jpg
│ │ │ ├── cover.svg
│ │ │ ├── daishi.jpg
│ │ │ ├── debbie.jpg
│ │ │ ├── delba.jpg
│ │ │ ├── diego.jpg
│ │ │ ├── eric.jpg
│ │ │ ├── helen.jpg
│ │ │ ├── juan.jpg
│ │ │ ├── lauren.jpg
│ │ │ ├── linton.jpg
│ │ │ ├── lyle.jpg
│ │ │ ├── rachel.jpg
│ │ │ ├── rick.jpg
│ │ │ ├── robert.jpg
│ │ │ ├── roman.jpg
│ │ │ ├── sarah.jpg
│ │ │ ├── shaundai.jpg
│ │ │ ├── shruti.jpg
│ │ │ ├── steven.jpg
│ │ │ ├── tafu.jpg
│ │ │ └── xuan.jpg
│ │ └── videos
│ │ │ ├── documentary.webp
│ │ │ ├── hooks.jpg
│ │ │ ├── rethinking.jpg
│ │ │ ├── rn.jpg
│ │ │ └── rsc.jpg
│ ├── meta-gradient-dark.png
│ ├── meta-gradient.png
│ ├── og-blog.png
│ ├── og-community.png
│ ├── og-home.png
│ ├── og-learn.png
│ ├── og-reference.png
│ ├── og-unknown.png
│ ├── team
│ │ ├── acdlite.jpg
│ │ ├── eli-white.jpg
│ │ ├── gaearon.jpg
│ │ ├── hendrik.jpg
│ │ ├── jack-pope.jpg
│ │ ├── jasonbonta.jpg
│ │ ├── joe.jpg
│ │ ├── jordan.jpg
│ │ ├── josh.jpg
│ │ ├── lauren.jpg
│ │ ├── lesiutin.jpg
│ │ ├── matt-carroll.png
│ │ ├── mike.jpg
│ │ ├── mofei-zhang.png
│ │ ├── pieter.jpg
│ │ ├── rickhanlonii.jpg
│ │ ├── sebmarkbage.jpg
│ │ ├── sebsilbermann.jpg
│ │ ├── seth.jpg
│ │ ├── sophiebits.jpg
│ │ └── yuzhi.jpg
│ ├── tutorial
│ │ ├── board-filled-with-ones.png
│ │ ├── board-filled-with-value.png
│ │ ├── codesandbox-devtools.png
│ │ ├── devtools-select.gif
│ │ ├── empty-board.png
│ │ ├── nine-x-filled-squares.png
│ │ ├── number-filled-board.png
│ │ ├── o-replaces-x.gif
│ │ ├── react-starter-code-codesandbox.png
│ │ ├── tictac-adding-x-s.gif
│ │ ├── two-x-filled-squares.png
│ │ └── x-filled-square.png
│ └── uwu.png
├── js
│ ├── jsfiddle-integration-babel.js
│ └── jsfiddle-integration.js
├── mstile-150x150.png
├── robots.txt
├── safari-pinned-tab.svg
└── site.webmanifest
├── scripts
├── downloadFonts.mjs
├── generateRedirects.js
├── generateRss.js
├── headingIDHelpers
│ ├── generateHeadingIDs.js
│ ├── validateHeadingIDs.js
│ └── walk.js
└── headingIdLinter.js
├── src
├── components
│ ├── Breadcrumbs.tsx
│ ├── Button.tsx
│ ├── ButtonLink.tsx
│ ├── DocsFooter.tsx
│ ├── ErrorDecoderContext.tsx
│ ├── ExternalLink.tsx
│ ├── Icon
│ │ ├── IconArrow.tsx
│ │ ├── IconArrowSmall.tsx
│ │ ├── IconBsky.tsx
│ │ ├── IconCanary.tsx
│ │ ├── IconChevron.tsx
│ │ ├── IconClose.tsx
│ │ ├── IconCodeBlock.tsx
│ │ ├── IconCopy.tsx
│ │ ├── IconDeepDive.tsx
│ │ ├── IconDownload.tsx
│ │ ├── IconError.tsx
│ │ ├── IconFacebookCircle.tsx
│ │ ├── IconGitHub.tsx
│ │ ├── IconHamburger.tsx
│ │ ├── IconHint.tsx
│ │ ├── IconInstagram.tsx
│ │ ├── IconLink.tsx
│ │ ├── IconNavArrow.tsx
│ │ ├── IconNewPage.tsx
│ │ ├── IconNote.tsx
│ │ ├── IconPitfall.tsx
│ │ ├── IconRestart.tsx
│ │ ├── IconRocket.tsx
│ │ ├── IconRss.tsx
│ │ ├── IconSearch.tsx
│ │ ├── IconSolution.tsx
│ │ ├── IconTerminal.tsx
│ │ ├── IconThreads.tsx
│ │ ├── IconTwitter.tsx
│ │ └── IconWarning.tsx
│ ├── Layout
│ │ ├── Feedback.tsx
│ │ ├── Footer.tsx
│ │ ├── HomeContent.js
│ │ ├── Page.tsx
│ │ ├── Sidebar
│ │ │ ├── SidebarButton.tsx
│ │ │ ├── SidebarLink.tsx
│ │ │ ├── SidebarRouteTree.tsx
│ │ │ └── index.tsx
│ │ ├── SidebarNav
│ │ │ ├── SidebarNav.tsx
│ │ │ └── index.tsx
│ │ ├── Toc.tsx
│ │ ├── TopNav
│ │ │ ├── BrandMenu.tsx
│ │ │ ├── TopNav.tsx
│ │ │ └── index.tsx
│ │ ├── getRouteMeta.tsx
│ │ └── useTocHighlight.tsx
│ ├── Logo.tsx
│ ├── MDX
│ │ ├── BlogCard.tsx
│ │ ├── Challenges
│ │ │ ├── Challenge.tsx
│ │ │ ├── Challenges.tsx
│ │ │ ├── Navigation.tsx
│ │ │ └── index.tsx
│ │ ├── CodeBlock
│ │ │ ├── CodeBlock.tsx
│ │ │ └── index.tsx
│ │ ├── CodeDiagram.tsx
│ │ ├── ConsoleBlock.tsx
│ │ ├── Diagram.tsx
│ │ ├── DiagramGroup.tsx
│ │ ├── ErrorDecoder.tsx
│ │ ├── ExpandableCallout.tsx
│ │ ├── ExpandableExample.tsx
│ │ ├── Heading.tsx
│ │ ├── InlineCode.tsx
│ │ ├── Intro.tsx
│ │ ├── LanguagesContext.tsx
│ │ ├── Link.tsx
│ │ ├── MDXComponents.module.css
│ │ ├── MDXComponents.tsx
│ │ ├── PackageImport.tsx
│ │ ├── Recap.tsx
│ │ ├── Sandpack
│ │ │ ├── Console.tsx
│ │ │ ├── CustomPreset.tsx
│ │ │ ├── DownloadButton.tsx
│ │ │ ├── ErrorMessage.tsx
│ │ │ ├── LoadingOverlay.tsx
│ │ │ ├── NavigationBar.tsx
│ │ │ ├── OpenInCodeSandboxButton.tsx
│ │ │ ├── OpenInTypeScriptPlayground.tsx
│ │ │ ├── Preview.tsx
│ │ │ ├── ResetButton.tsx
│ │ │ ├── SandpackRoot.tsx
│ │ │ ├── Themes.tsx
│ │ │ ├── createFileMap.ts
│ │ │ ├── index.tsx
│ │ │ ├── runESLint.tsx
│ │ │ ├── template.ts
│ │ │ └── useSandpackLint.tsx
│ │ ├── SandpackWithHTMLOutput.tsx
│ │ ├── SimpleCallout.tsx
│ │ ├── TeamMember.tsx
│ │ ├── TerminalBlock.tsx
│ │ ├── TocContext.tsx
│ │ └── YouWillLearnCard.tsx
│ ├── PageHeading.tsx
│ ├── Search.tsx
│ ├── Seo.tsx
│ ├── SocialBanner.tsx
│ └── Tag.tsx
├── content
│ ├── blog
│ │ ├── 2020
│ │ │ └── 12
│ │ │ │ └── 21
│ │ │ │ └── data-fetching-with-react-server-components.md
│ │ ├── 2021
│ │ │ ├── 12
│ │ │ │ └── 17
│ │ │ │ │ └── react-conf-2021-recap.md
│ │ │ └── 06
│ │ │ │ └── 08
│ │ │ │ └── the-plan-for-react-18.md
│ │ ├── 2022
│ │ │ ├── 03
│ │ │ │ ├── 29
│ │ │ │ │ └── react-v18.md
│ │ │ │ └── 08
│ │ │ │ │ └── react-18-upgrade-guide.md
│ │ │ └── 06
│ │ │ │ └── 15
│ │ │ │ └── react-labs-what-we-have-been-working-on-june-2022.md
│ │ ├── 2023
│ │ │ ├── 03
│ │ │ │ ├── 16
│ │ │ │ │ └── introducing-react-dev.md
│ │ │ │ └── 22
│ │ │ │ │ └── react-labs-what-we-have-been-working-on-march-2023.md
│ │ │ └── 05
│ │ │ │ └── 03
│ │ │ │ └── react-canaries.md
│ │ ├── 2024
│ │ │ ├── 10
│ │ │ │ └── 21
│ │ │ │ │ └── react-compiler-beta-release.md
│ │ │ ├── 12
│ │ │ │ └── 05
│ │ │ │ │ └── react-19.md
│ │ │ ├── 02
│ │ │ │ └── 15
│ │ │ │ │ └── react-labs-what-we-have-been-working-on-february-2024.md
│ │ │ ├── 04
│ │ │ │ └── 25
│ │ │ │ │ └── react-19-upgrade-guide.md
│ │ │ └── 05
│ │ │ │ └── 22
│ │ │ │ └── react-conf-2024-recap.md
│ │ ├── 2025
│ │ │ └── 02
│ │ │ │ └── 14
│ │ │ │ └── sunsetting-create-react-app.md
│ │ └── index.md
│ ├── community
│ │ ├── acknowledgements.md
│ │ ├── conferences.md
│ │ ├── docs-contributors.md
│ │ ├── index.md
│ │ ├── meet-the-team.md
│ │ ├── meetups.md
│ │ ├── team.md
│ │ ├── translations.md
│ │ ├── versioning-policy.md
│ │ └── videos.md
│ ├── errors
│ │ ├── 377.md
│ │ ├── generic.md
│ │ └── index.md
│ ├── index.md
│ ├── learn
│ │ ├── add-react-to-a-website.md
│ │ ├── add-react-to-an-existing-project.md
│ │ ├── adding-interactivity.md
│ │ ├── building-a-react-framework.md
│ │ ├── choosing-the-state-structure.md
│ │ ├── conditional-rendering.md
│ │ ├── creating-a-react-app.md
│ │ ├── describing-the-ui.md
│ │ ├── editor-setup.md
│ │ ├── escape-hatches.md
│ │ ├── extracting-state-logic-into-a-reducer.md
│ │ ├── importing-and-exporting-components.md
│ │ ├── index.md
│ │ ├── installation.md
│ │ ├── javascript-in-jsx-with-curly-braces.md
│ │ ├── keeping-components-pure.md
│ │ ├── lifecycle-of-reactive-effects.md
│ │ ├── managing-state.md
│ │ ├── manipulating-the-dom-with-refs.md
│ │ ├── passing-data-deeply-with-context.md
│ │ ├── passing-props-to-a-component.md
│ │ ├── preserving-and-resetting-state.md
│ │ ├── queueing-a-series-of-state-updates.md
│ │ ├── react-compiler.md
│ │ ├── react-developer-tools.md
│ │ ├── reacting-to-input-with-state.md
│ │ ├── referencing-values-with-refs.md
│ │ ├── removing-effect-dependencies.md
│ │ ├── render-and-commit.md
│ │ ├── rendering-lists.md
│ │ ├── responding-to-events.md
│ │ ├── reusing-logic-with-custom-hooks.md
│ │ ├── scaling-up-with-reducer-and-context.md
│ │ ├── separating-events-from-effects.md
│ │ ├── setup.md
│ │ ├── sharing-state-between-components.md
│ │ ├── start-a-new-react-project.md
│ │ ├── state-a-components-memory.md
│ │ ├── state-as-a-snapshot.md
│ │ ├── synchronizing-with-effects.md
│ │ ├── thinking-in-react.md
│ │ ├── tutorial-tic-tac-toe.md
│ │ ├── typescript.md
│ │ ├── understanding-your-ui-as-a-tree.md
│ │ ├── updating-arrays-in-state.md
│ │ ├── updating-objects-in-state.md
│ │ ├── writing-markup-with-jsx.md
│ │ ├── you-might-not-need-an-effect.md
│ │ └── your-first-component.md
│ ├── reference
│ │ ├── react-dom
│ │ │ ├── client
│ │ │ │ ├── createRoot.md
│ │ │ │ ├── hydrateRoot.md
│ │ │ │ └── index.md
│ │ │ ├── components
│ │ │ │ ├── common.md
│ │ │ │ ├── form.md
│ │ │ │ ├── index.md
│ │ │ │ ├── input.md
│ │ │ │ ├── link.md
│ │ │ │ ├── meta.md
│ │ │ │ ├── option.md
│ │ │ │ ├── progress.md
│ │ │ │ ├── script.md
│ │ │ │ ├── select.md
│ │ │ │ ├── style.md
│ │ │ │ ├── textarea.md
│ │ │ │ └── title.md
│ │ │ ├── createPortal.md
│ │ │ ├── findDOMNode.md
│ │ │ ├── flushSync.md
│ │ │ ├── hooks
│ │ │ │ ├── index.md
│ │ │ │ └── useFormStatus.md
│ │ │ ├── hydrate.md
│ │ │ ├── index.md
│ │ │ ├── preconnect.md
│ │ │ ├── prefetchDNS.md
│ │ │ ├── preinit.md
│ │ │ ├── preinitModule.md
│ │ │ ├── preload.md
│ │ │ ├── preloadModule.md
│ │ │ ├── render.md
│ │ │ ├── server
│ │ │ │ ├── index.md
│ │ │ │ ├── renderToNodeStream.md
│ │ │ │ ├── renderToPipeableStream.md
│ │ │ │ ├── renderToReadableStream.md
│ │ │ │ ├── renderToStaticMarkup.md
│ │ │ │ ├── renderToStaticNodeStream.md
│ │ │ │ └── renderToString.md
│ │ │ ├── static
│ │ │ │ ├── index.md
│ │ │ │ ├── prerender.md
│ │ │ │ └── prerenderToNodeStream.md
│ │ │ └── unmountComponentAtNode.md
│ │ ├── react
│ │ │ ├── Children.md
│ │ │ ├── Component.md
│ │ │ ├── Fragment.md
│ │ │ ├── Profiler.md
│ │ │ ├── PureComponent.md
│ │ │ ├── StrictMode.md
│ │ │ ├── Suspense.md
│ │ │ ├── act.md
│ │ │ ├── apis.md
│ │ │ ├── cache.md
│ │ │ ├── captureOwnerStack.md
│ │ │ ├── cloneElement.md
│ │ │ ├── components.md
│ │ │ ├── createContext.md
│ │ │ ├── createElement.md
│ │ │ ├── createFactory.md
│ │ │ ├── createRef.md
│ │ │ ├── experimental_taintObjectReference.md
│ │ │ ├── experimental_taintUniqueValue.md
│ │ │ ├── experimental_useEffectEvent.md
│ │ │ ├── forwardRef.md
│ │ │ ├── hooks.md
│ │ │ ├── index.md
│ │ │ ├── isValidElement.md
│ │ │ ├── lazy.md
│ │ │ ├── legacy.md
│ │ │ ├── memo.md
│ │ │ ├── startTransition.md
│ │ │ ├── use.md
│ │ │ ├── useActionState.md
│ │ │ ├── useCallback.md
│ │ │ ├── useContext.md
│ │ │ ├── useDebugValue.md
│ │ │ ├── useDeferredValue.md
│ │ │ ├── useEffect.md
│ │ │ ├── useId.md
│ │ │ ├── useImperativeHandle.md
│ │ │ ├── useInsertionEffect.md
│ │ │ ├── useLayoutEffect.md
│ │ │ ├── useMemo.md
│ │ │ ├── useOptimistic.md
│ │ │ ├── useReducer.md
│ │ │ ├── useRef.md
│ │ │ ├── useState.md
│ │ │ ├── useSyncExternalStore.md
│ │ │ └── useTransition.md
│ │ ├── rsc
│ │ │ ├── directives.md
│ │ │ ├── server-actions.md
│ │ │ ├── server-components.md
│ │ │ ├── server-functions.md
│ │ │ ├── use-client.md
│ │ │ └── use-server.md
│ │ └── rules
│ │ │ ├── components-and-hooks-must-be-pure.md
│ │ │ ├── index.md
│ │ │ ├── react-calls-components-and-hooks.md
│ │ │ └── rules-of-hooks.md
│ ├── versions.md
│ └── warnings
│ │ ├── invalid-aria-prop.md
│ │ ├── invalid-hook-call-warning.md
│ │ ├── react-dom-test-utils.md
│ │ ├── react-test-renderer.md
│ │ ├── special-props.md
│ │ └── unknown-prop.md
├── hooks
│ └── usePendingRoute.ts
├── pages
│ ├── 404.js
│ ├── 500.js
│ ├── [[...markdownPath]].js
│ ├── _app.tsx
│ ├── _document.tsx
│ └── errors
│ │ ├── [errorCode].tsx
│ │ └── index.tsx
├── sidebarBlog.json
├── sidebarCommunity.json
├── sidebarHome.json
├── sidebarLearn.json
├── sidebarReference.json
├── siteConfig.js
├── styles
│ ├── algolia.css
│ ├── index.css
│ └── sandpack.css
├── types
│ └── docsearch-react-modal.d.ts
└── utils
│ ├── analytics.ts
│ ├── compileMDX.ts
│ ├── finishedTranslations.ts
│ ├── forwardRefWithAs.tsx
│ ├── prepareMDX.js
│ ├── processShim.js
│ ├── rafShim.js
│ ├── rss.js
│ └── toCommaSeparatedList.tsx
├── tailwind.config.js
├── tsconfig.json
├── vercel.json
└── yarn.lock
/.editorconfig:
--------------------------------------------------------------------------------
1 | [*]
2 | charset = utf-8
3 | indent_style = space
4 | indent_size = 2
5 | end_of_line = lf
6 | insert_final_newline = true
7 | trim_trailing_whitespace = true
8 |
9 | [*.md]
10 | trim_trailing_whitespace = false
11 |
--------------------------------------------------------------------------------
/.env.development:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/.env.development
--------------------------------------------------------------------------------
/.env.production:
--------------------------------------------------------------------------------
1 | NEXT_PUBLIC_GA_TRACKING_ID = 'G-B1E83PJ3RT'
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | scripts
2 | plugins
3 | next.config.js
4 |
--------------------------------------------------------------------------------
/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "root": true,
3 | "extends": "next/core-web-vitals",
4 | "parser": "@typescript-eslint/parser",
5 | "plugins": ["@typescript-eslint", "eslint-plugin-react-compiler"],
6 | "rules": {
7 | "no-unused-vars": "off",
8 | "@typescript-eslint/no-unused-vars": ["error", {"varsIgnorePattern": "^_"}],
9 | "react-hooks/exhaustive-deps": "error",
10 | "react/no-unknown-property": ["error", {"ignore": ["meta"]}],
11 | "react-compiler/react-compiler": "error"
12 | },
13 | "env": {
14 | "node": true,
15 | "commonjs": true,
16 | "browser": true,
17 | "es6": true
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 | updates:
3 | - package-ecosystem: "npm"
4 | directory: "/"
5 | schedule:
6 | interval: "weekly"
7 | # Disable Dependabot. Doing it here so it propagates to translation forks.
8 | open-pull-requests-limit: 0
9 |
--------------------------------------------------------------------------------
/.github/workflows/discord_notify.yml:
--------------------------------------------------------------------------------
1 | name: Discord Notify
2 |
3 | on:
4 | pull_request_target:
5 | types: [labeled]
6 |
7 | jobs:
8 | check_maintainer:
9 | uses: facebook/react/.github/workflows/shared_check_maintainer.yml@main
10 | with:
11 | actor: ${{ github.event.pull_request.user.login }}
12 | is_remote: true
13 |
14 | notify:
15 | if: ${{ needs.check_maintainer.outputs.is_core_team == 'true' }}
16 | needs: check_maintainer
17 | runs-on: ubuntu-latest
18 | steps:
19 | - name: Discord Webhook Action
20 | uses: tsickert/discord-webhook@v6.0.0
21 | with:
22 | webhook-url: ${{ secrets.DISCORD_WEBHOOK_URL }}
23 | embed-author-name: ${{ github.event.pull_request.user.login }}
24 | embed-author-url: ${{ github.event.pull_request.user.html_url }}
25 | embed-author-icon-url: ${{ github.event.pull_request.user.avatar_url }}
26 | embed-title: '#${{ github.event.number }} (+${{github.event.pull_request.additions}} -${{github.event.pull_request.deletions}}): ${{ github.event.pull_request.title }}'
27 | embed-description: ${{ github.event.pull_request.body }}
28 | embed-url: ${{ github.event.pull_request.html_url }}
29 |
--------------------------------------------------------------------------------
/.github/workflows/label_core_team_prs.yml:
--------------------------------------------------------------------------------
1 | name: Label Core Team PRs
2 |
3 | on:
4 | pull_request_target:
5 |
6 | env:
7 | TZ: /usr/share/zoneinfo/America/Los_Angeles
8 | # https://github.com/actions/cache/blob/main/tips-and-workarounds.md#cache-segment-restore-timeout
9 | SEGMENT_DOWNLOAD_TIMEOUT_MINS: 1
10 |
11 | jobs:
12 | check_maintainer:
13 | uses: facebook/react/.github/workflows/shared_check_maintainer.yml@main
14 | with:
15 | actor: ${{ github.event.pull_request.user.login }}
16 | is_remote: true
17 |
18 | label:
19 | if: ${{ needs.check_maintainer.outputs.is_core_team == 'true' }}
20 | runs-on: ubuntu-latest
21 | needs: check_maintainer
22 | steps:
23 | - name: Label PR as React Core Team
24 | uses: actions/github-script@v7
25 | with:
26 | script: |
27 | github.rest.issues.addLabels({
28 | owner: context.repo.owner,
29 | repo: context.repo.repo,
30 | issue_number: ${{ github.event.number }},
31 | labels: ['React Core Team']
32 | });
33 |
--------------------------------------------------------------------------------
/.github/workflows/site_lint.yml:
--------------------------------------------------------------------------------
1 | name: Site Lint / Heading ID check
2 |
3 | on:
4 | push:
5 | branches:
6 | - main # change this if your default branch is named differently
7 | pull_request:
8 | types: [opened, synchronize, reopened]
9 |
10 | jobs:
11 | lint:
12 | runs-on: ubuntu-latest
13 |
14 | name: Lint on node 20.x and ubuntu-latest
15 |
16 | steps:
17 | - uses: actions/checkout@v4
18 | - name: Use Node.js 20.x
19 | uses: actions/setup-node@v4
20 | with:
21 | node-version: 20.x
22 | cache: yarn
23 | cache-dependency-path: yarn.lock
24 |
25 | - name: Restore cached node_modules
26 | uses: actions/cache@v4
27 | with:
28 | path: "**/node_modules"
29 | key: node_modules-${{ runner.arch }}-${{ runner.os }}-${{ hashFiles('yarn.lock') }}
30 |
31 | - name: Install deps
32 | run: yarn install --frozen-lockfile
33 |
34 | - name: Lint codebase
35 | run: yarn ci-check
36 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # next.js
12 | /.next/
13 | /out/
14 |
15 | # production
16 | /build
17 |
18 | # misc
19 | .DS_Store
20 | *.pem
21 | tsconfig.tsbuildinfo
22 |
23 | # debug
24 | npm-debug.log*
25 | yarn-debug.log*
26 | yarn-error.log*
27 |
28 | # local env files
29 | .env.local
30 | .env.development.local
31 | .env.test.local
32 | .env.production.local
33 |
34 | # vercel
35 | .vercel
36 |
37 | # external fonts
38 | public/fonts/**/Optimistic_*.woff2
39 |
40 | # rss
41 | public/rss.xml
42 |
--------------------------------------------------------------------------------
/.husky/pre-commit:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | . "$(dirname "$0")/_/husky.sh"
3 |
4 | yarn lint-staged
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | src/content/**/*.md
2 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "bracketSpacing": false,
3 | "singleQuote": true,
4 | "bracketSameLine": true,
5 | "trailingComma": "es5",
6 | "printWidth": 80,
7 | "overrides": [
8 | {
9 | "files": "*.css",
10 | "options": {
11 | "parser": "css"
12 | }
13 | },
14 | {
15 | "files": "*.md",
16 | "options": {
17 | "parser": "mdx"
18 | }
19 | }
20 | ]
21 | }
22 |
--------------------------------------------------------------------------------
/next-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 | ///
4 |
5 | // NOTE: This file should not be edited
6 | // see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
7 |
--------------------------------------------------------------------------------
/next.config.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | /**
6 | * @type {import('next').NextConfig}
7 | **/
8 | const nextConfig = {
9 | pageExtensions: ['jsx', 'js', 'ts', 'tsx', 'mdx', 'md'],
10 | reactStrictMode: true,
11 | experimental: {
12 | scrollRestoration: true,
13 | reactCompiler: true,
14 | },
15 | env: {},
16 | webpack: (config, {dev, isServer, ...options}) => {
17 | if (process.env.ANALYZE) {
18 | const {BundleAnalyzerPlugin} = require('webpack-bundle-analyzer');
19 | config.plugins.push(
20 | new BundleAnalyzerPlugin({
21 | analyzerMode: 'static',
22 | reportFilename: options.isServer
23 | ? '../analyze/server.html'
24 | : './analyze/client.html',
25 | })
26 | );
27 | }
28 |
29 | // Don't bundle the shim unnecessarily.
30 | config.resolve.alias['use-sync-external-store/shim'] = 'react';
31 |
32 | const {IgnorePlugin, NormalModuleReplacementPlugin} = require('webpack');
33 | config.plugins.push(
34 | new NormalModuleReplacementPlugin(
35 | /^raf$/,
36 | require.resolve('./src/utils/rafShim.js')
37 | ),
38 | new NormalModuleReplacementPlugin(
39 | /^process$/,
40 | require.resolve('./src/utils/processShim.js')
41 | ),
42 | new IgnorePlugin({
43 | checkResource(resource, context) {
44 | if (
45 | /\/eslint\/lib\/rules$/.test(context) &&
46 | /\.\/[\w-]+(\.js)?$/.test(resource)
47 | ) {
48 | // Skips imports of built-in rules that ESLint
49 | // tries to carry into the bundle by default.
50 | // We only want the engine and the React rules.
51 | return true;
52 | }
53 | return false;
54 | },
55 | })
56 | );
57 |
58 | return config;
59 | },
60 | };
61 |
62 | module.exports = nextConfig;
63 |
--------------------------------------------------------------------------------
/plugins/gatsby-remark-header-custom-ids/gatsby-ssr.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | const React = require(`react`);
6 |
7 | const pluginDefaults = {
8 | className: `anchor`,
9 | icon: true,
10 | offsetY: 0,
11 | };
12 |
13 | exports.onRenderBody = ({setHeadComponents}, pluginOptions) => {
14 | const {className, icon, offsetY} = Object.assign(
15 | pluginDefaults,
16 | pluginOptions
17 | );
18 |
19 | const styles = `
20 | .${className} {
21 | float: left;
22 | padding-right: 4px;
23 | margin-left: -20px;
24 | }
25 | h1 .${className} svg,
26 | h2 .${className} svg,
27 | h3 .${className} svg,
28 | h4 .${className} svg,
29 | h5 .${className} svg,
30 | h6 .${className} svg {
31 | visibility: hidden;
32 | }
33 | h1:hover .${className} svg,
34 | h2:hover .${className} svg,
35 | h3:hover .${className} svg,
36 | h4:hover .${className} svg,
37 | h5:hover .${className} svg,
38 | h6:hover .${className} svg,
39 | h1 .${className}:focus svg,
40 | h2 .${className}:focus svg,
41 | h3 .${className}:focus svg,
42 | h4 .${className}:focus svg,
43 | h5 .${className}:focus svg,
44 | h6 .${className}:focus svg {
45 | visibility: visible;
46 | }
47 | `;
48 |
49 | const script = `
50 | document.addEventListener("DOMContentLoaded", function(event) {
51 | var hash = window.decodeURI(location.hash.replace('#', ''))
52 | if (hash !== '') {
53 | var element = document.getElementById(hash)
54 | if (element) {
55 | var offset = element.offsetTop
56 | // Wait for the browser to finish rendering before scrolling.
57 | setTimeout((function() {
58 | window.scrollTo(0, offset - ${offsetY})
59 | }), 0)
60 | }
61 | }
62 | })
63 | `;
64 |
65 | const style = icon ? (
66 |
69 | ) : undefined;
70 |
71 | return setHeadComponents([
72 | style,
73 | ,
77 | ]);
78 | };
79 |
--------------------------------------------------------------------------------
/plugins/markdownToHtml.js:
--------------------------------------------------------------------------------
1 | const remark = require('remark');
2 | const externalLinks = require('remark-external-links'); // Add _target and rel to external links
3 | const customHeaders = require('./remark-header-custom-ids'); // Custom header id's for i18n
4 | const images = require('remark-images'); // Improved image syntax
5 | const unrwapImages = require('remark-unwrap-images'); // Removes
wrapper around images
6 | const smartyPants = require('./remark-smartypants'); // Cleans up typography
7 | const html = require('remark-html');
8 |
9 | module.exports = {
10 | remarkPlugins: [
11 | externalLinks,
12 | customHeaders,
13 | images,
14 | unrwapImages,
15 | smartyPants,
16 | ],
17 | markdownToHtml,
18 | };
19 |
20 | async function markdownToHtml(markdown) {
21 | const result = await remark()
22 | .use(externalLinks)
23 | .use(customHeaders)
24 | .use(images)
25 | .use(unrwapImages)
26 | .use(smartyPants)
27 | .use(html)
28 | .process(markdown);
29 | return result.toString();
30 | }
31 |
--------------------------------------------------------------------------------
/plugins/remark-smartypants.js:
--------------------------------------------------------------------------------
1 | /*!
2 | * Based on 'silvenon/remark-smartypants'
3 | * https://github.com/silvenon/remark-smartypants/pull/80
4 | */
5 |
6 | const visit = require('unist-util-visit');
7 | const retext = require('retext');
8 | const smartypants = require('retext-smartypants');
9 |
10 | function check(parent) {
11 | if (parent.tagName === 'script') return false;
12 | if (parent.tagName === 'style') return false;
13 | return true;
14 | }
15 |
16 | module.exports = function (options) {
17 | const processor = retext().use(smartypants, {
18 | ...options,
19 | // Do not replace ellipses, dashes, backticks because they change string
20 | // length, and we couldn't guarantee right splice of text in second visit of
21 | // tree
22 | ellipses: false,
23 | dashes: false,
24 | backticks: false,
25 | });
26 |
27 | const processor2 = retext().use(smartypants, {
28 | ...options,
29 | // Do not replace quotes because they are already replaced in the first
30 | // processor
31 | quotes: false,
32 | });
33 |
34 | function transformer(tree) {
35 | let allText = '';
36 | let startIndex = 0;
37 | const textOrInlineCodeNodes = [];
38 |
39 | visit(tree, ['text', 'inlineCode'], (node, _, parent) => {
40 | if (check(parent)) {
41 | if (node.type === 'text') allText += node.value;
42 | // for the case when inlineCode contains just one part of quote: `foo'bar`
43 | else allText += 'A'.repeat(node.value.length);
44 | textOrInlineCodeNodes.push(node);
45 | }
46 | });
47 |
48 | // Concat all text into one string, to properly replace quotes around non-"text" nodes
49 | allText = String(processor.processSync(allText));
50 |
51 | for (const node of textOrInlineCodeNodes) {
52 | const endIndex = startIndex + node.value.length;
53 | if (node.type === 'text') {
54 | const processedText = allText.slice(startIndex, endIndex);
55 | node.value = String(processor2.processSync(processedText));
56 | }
57 | startIndex = endIndex;
58 | }
59 | }
60 |
61 | return transformer;
62 | };
63 |
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | module.exports = {
6 | plugins: {
7 | tailwindcss: {},
8 | autoprefixer: {},
9 | 'postcss-flexbugs-fixes': {},
10 | 'postcss-preset-env': {
11 | autoprefixer: {
12 | flexbox: 'no-2009',
13 | },
14 | stage: 3,
15 | features: {
16 | 'custom-properties': false,
17 | },
18 | },
19 | },
20 | }
21 |
--------------------------------------------------------------------------------
/public/.well-known/atproto-did:
--------------------------------------------------------------------------------
1 | did:plc:uorpbnp2q32vuvyeruwauyhe
--------------------------------------------------------------------------------
/public/android-chrome-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/android-chrome-192x192.png
--------------------------------------------------------------------------------
/public/android-chrome-384x384.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/android-chrome-384x384.png
--------------------------------------------------------------------------------
/public/android-chrome-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/android-chrome-512x512.png
--------------------------------------------------------------------------------
/public/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/apple-touch-icon.png
--------------------------------------------------------------------------------
/public/browserconfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | #2b5797
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/public/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/favicon-16x16.png
--------------------------------------------------------------------------------
/public/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/favicon-32x32.png
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/favicon.ico
--------------------------------------------------------------------------------
/public/favicon_old.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/favicon_old.ico
--------------------------------------------------------------------------------
/public/fonts/Source-Code-Pro-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/fonts/Source-Code-Pro-Regular.woff2
--------------------------------------------------------------------------------
/public/html/single-file-example.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Hello World
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
22 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/public/images/blog/introducing-react-dev/home-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/blog/introducing-react-dev/home-dark.png
--------------------------------------------------------------------------------
/public/images/blog/introducing-react-dev/home-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/blog/introducing-react-dev/home-light.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/conditional_render_tree.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/conditional_render_tree.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/conditional_render_tree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/conditional_render_tree.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/generic_dependency_tree.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/generic_dependency_tree.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/generic_dependency_tree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/generic_dependency_tree.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/generic_render_tree.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/generic_render_tree.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/generic_render_tree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/generic_render_tree.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/module_dependency_tree.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/module_dependency_tree.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/module_dependency_tree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/module_dependency_tree.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/passing_data_context_close.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/passing_data_context_close.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/passing_data_context_close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/passing_data_context_close.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/passing_data_context_far.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/passing_data_context_far.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/passing_data_context_far.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/passing_data_context_far.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/passing_data_lifting_state.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/passing_data_lifting_state.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/passing_data_lifting_state.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/passing_data_lifting_state.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/passing_data_prop_drilling.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/passing_data_prop_drilling.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/passing_data_prop_drilling.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/passing_data_prop_drilling.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/prerender.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/prerender.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/prerender.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/prerender.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/preserving_state_add_component.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/preserving_state_add_component.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/preserving_state_add_component.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/preserving_state_add_component.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/preserving_state_diff_position_p1.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/preserving_state_diff_position_p1.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/preserving_state_diff_position_p1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/preserving_state_diff_position_p1.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/preserving_state_diff_position_p2.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/preserving_state_diff_position_p2.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/preserving_state_diff_position_p2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/preserving_state_diff_position_p2.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/preserving_state_diff_position_p3.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/preserving_state_diff_position_p3.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/preserving_state_diff_position_p3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/preserving_state_diff_position_p3.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/preserving_state_diff_pt1.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/preserving_state_diff_pt1.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/preserving_state_diff_pt1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/preserving_state_diff_pt1.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/preserving_state_diff_pt2.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/preserving_state_diff_pt2.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/preserving_state_diff_pt2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/preserving_state_diff_pt2.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/preserving_state_diff_same_pt1.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/preserving_state_diff_same_pt1.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/preserving_state_diff_same_pt1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/preserving_state_diff_same_pt1.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/preserving_state_diff_same_pt2.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/preserving_state_diff_same_pt2.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/preserving_state_diff_same_pt2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/preserving_state_diff_same_pt2.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/preserving_state_dom_tree.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/preserving_state_dom_tree.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/preserving_state_dom_tree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/preserving_state_dom_tree.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/preserving_state_increment.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/preserving_state_increment.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/preserving_state_increment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/preserving_state_increment.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/preserving_state_remove_component.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/preserving_state_remove_component.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/preserving_state_remove_component.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/preserving_state_remove_component.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/preserving_state_same_component.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/preserving_state_same_component.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/preserving_state_same_component.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/preserving_state_same_component.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/preserving_state_tree.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/preserving_state_tree.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/preserving_state_tree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/preserving_state_tree.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/prewarm.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/prewarm.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/prewarm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/prewarm.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/render_tree.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/render_tree.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/render_tree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/render_tree.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/responding_to_input_flow.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/responding_to_input_flow.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/responding_to_input_flow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/responding_to_input_flow.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/sharing_data_child.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/sharing_data_child.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/sharing_data_child.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/sharing_data_child.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/sharing_data_child_clicked.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/sharing_data_child_clicked.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/sharing_data_child_clicked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/sharing_data_child_clicked.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/sharing_data_parent.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/sharing_data_parent.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/sharing_data_parent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/sharing_data_parent.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/sharing_data_parent_clicked.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/sharing_data_parent_clicked.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/sharing_data_parent_clicked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/sharing_data_parent_clicked.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/sharing_state_child.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/sharing_state_child.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/sharing_state_child.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/sharing_state_child.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/sharing_state_child_clicked.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/sharing_state_child_clicked.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/sharing_state_child_clicked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/sharing_state_child_clicked.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/sharing_state_parent.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/sharing_state_parent.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/sharing_state_parent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/sharing_state_parent.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/sharing_state_parent_clicked.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/sharing_state_parent_clicked.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/sharing_state_parent_clicked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/sharing_state_parent_clicked.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/use_client_module_dependency.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/use_client_module_dependency.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/use_client_module_dependency.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/use_client_module_dependency.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/use_client_render_tree.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/use_client_render_tree.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/use_client_render_tree.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/use_client_render_tree.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/writing_jsx_form.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/writing_jsx_form.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/writing_jsx_form.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/writing_jsx_form.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/writing_jsx_html.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/writing_jsx_html.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/writing_jsx_html.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/writing_jsx_html.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/writing_jsx_js.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/writing_jsx_js.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/writing_jsx_js.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/writing_jsx_js.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/writing_jsx_sidebar.dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/writing_jsx_sidebar.dark.png
--------------------------------------------------------------------------------
/public/images/docs/diagrams/writing_jsx_sidebar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/diagrams/writing_jsx_sidebar.png
--------------------------------------------------------------------------------
/public/images/docs/illustrations/i_browser-paint.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/illustrations/i_browser-paint.png
--------------------------------------------------------------------------------
/public/images/docs/illustrations/i_children-prop.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/illustrations/i_children-prop.png
--------------------------------------------------------------------------------
/public/images/docs/illustrations/i_declarative-ui-programming.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/illustrations/i_declarative-ui-programming.png
--------------------------------------------------------------------------------
/public/images/docs/illustrations/i_imperative-ui-programming.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/illustrations/i_imperative-ui-programming.png
--------------------------------------------------------------------------------
/public/images/docs/illustrations/i_inputs1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/illustrations/i_inputs1.png
--------------------------------------------------------------------------------
/public/images/docs/illustrations/i_inputs2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/illustrations/i_inputs2.png
--------------------------------------------------------------------------------
/public/images/docs/illustrations/i_puritea-recipe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/illustrations/i_puritea-recipe.png
--------------------------------------------------------------------------------
/public/images/docs/illustrations/i_react-batching.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/illustrations/i_react-batching.png
--------------------------------------------------------------------------------
/public/images/docs/illustrations/i_ref.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/illustrations/i_ref.png
--------------------------------------------------------------------------------
/public/images/docs/illustrations/i_render-and-commit1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/illustrations/i_render-and-commit1.png
--------------------------------------------------------------------------------
/public/images/docs/illustrations/i_render-and-commit2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/illustrations/i_render-and-commit2.png
--------------------------------------------------------------------------------
/public/images/docs/illustrations/i_render-and-commit3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/illustrations/i_render-and-commit3.png
--------------------------------------------------------------------------------
/public/images/docs/illustrations/i_render1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/illustrations/i_render1.png
--------------------------------------------------------------------------------
/public/images/docs/illustrations/i_render2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/illustrations/i_render2.png
--------------------------------------------------------------------------------
/public/images/docs/illustrations/i_render3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/illustrations/i_render3.png
--------------------------------------------------------------------------------
/public/images/docs/illustrations/i_rerender1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/illustrations/i_rerender1.png
--------------------------------------------------------------------------------
/public/images/docs/illustrations/i_rerender2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/illustrations/i_rerender2.png
--------------------------------------------------------------------------------
/public/images/docs/illustrations/i_rerender3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/illustrations/i_rerender3.png
--------------------------------------------------------------------------------
/public/images/docs/illustrations/i_state-snapshot1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/illustrations/i_state-snapshot1.png
--------------------------------------------------------------------------------
/public/images/docs/illustrations/i_state-snapshot2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/illustrations/i_state-snapshot2.png
--------------------------------------------------------------------------------
/public/images/docs/illustrations/i_state-snapshot3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/illustrations/i_state-snapshot3.png
--------------------------------------------------------------------------------
/public/images/docs/react-devtools-extension.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/react-devtools-extension.png
--------------------------------------------------------------------------------
/public/images/docs/react-devtools-standalone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/react-devtools-standalone.png
--------------------------------------------------------------------------------
/public/images/docs/react-devtools-usedebugvalue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/react-devtools-usedebugvalue.png
--------------------------------------------------------------------------------
/public/images/docs/s_thinking-in-react_ui.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/s_thinking-in-react_ui.png
--------------------------------------------------------------------------------
/public/images/docs/s_thinking-in-react_ui_outline.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/docs/s_thinking-in-react_ui_outline.png
--------------------------------------------------------------------------------
/public/images/g_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/g_arrow.png
--------------------------------------------------------------------------------
/public/images/home/community/react_conf_elizabet.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/community/react_conf_elizabet.webp
--------------------------------------------------------------------------------
/public/images/home/community/react_conf_fun.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/community/react_conf_fun.webp
--------------------------------------------------------------------------------
/public/images/home/community/react_conf_hallway.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/community/react_conf_hallway.webp
--------------------------------------------------------------------------------
/public/images/home/community/react_conf_nat.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/community/react_conf_nat.webp
--------------------------------------------------------------------------------
/public/images/home/community/react_conf_selfie.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/community/react_conf_selfie.webp
--------------------------------------------------------------------------------
/public/images/home/community/react_india_hallway.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/community/react_india_hallway.webp
--------------------------------------------------------------------------------
/public/images/home/community/react_india_selfie.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/community/react_india_selfie.webp
--------------------------------------------------------------------------------
/public/images/home/community/react_india_sunil.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/community/react_india_sunil.webp
--------------------------------------------------------------------------------
/public/images/home/community/react_india_team.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/community/react_india_team.webp
--------------------------------------------------------------------------------
/public/images/home/conf2019/alex.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2019/alex.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2019/alexandra.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2019/alexandra.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2019/ashley.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2019/ashley.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2019/becca.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2019/becca.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2019/brian.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2019/brian.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2019/brittany.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2019/brittany.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2019/cameron.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2019/cameron.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2019/frank.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2019/frank.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2019/jed.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2019/jed.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2019/jenn.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2019/jenn.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2019/joe.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2019/joe.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2019/lee.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2019/lee.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2019/lizzie.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2019/lizzie.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2019/luca.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2019/luca.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2019/maja.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2019/maja.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2019/nat.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2019/nat.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2019/sophie.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2019/sophie.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2019/tae.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2019/tae.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2019/tania.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2019/tania.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2019/tejas.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2019/tejas.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2019/tom.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2019/tom.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2019/yuzhi.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2019/yuzhi.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2021/aakansha.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2021/aakansha.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2021/andrew.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2021/andrew.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2021/brian.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2021/brian.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2021/cover.svg:
--------------------------------------------------------------------------------
1 |
15 |
--------------------------------------------------------------------------------
/public/images/home/conf2021/daishi.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2021/daishi.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2021/debbie.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2021/debbie.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2021/delba.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2021/delba.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2021/diego.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2021/diego.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2021/eric.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2021/eric.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2021/helen.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2021/helen.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2021/juan.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2021/juan.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2021/lauren.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2021/lauren.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2021/linton.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2021/linton.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2021/lyle.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2021/lyle.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2021/rachel.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2021/rachel.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2021/rick.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2021/rick.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2021/robert.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2021/robert.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2021/roman.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2021/roman.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2021/sarah.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2021/sarah.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2021/shaundai.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2021/shaundai.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2021/shruti.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2021/shruti.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2021/steven.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2021/steven.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2021/tafu.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2021/tafu.jpg
--------------------------------------------------------------------------------
/public/images/home/conf2021/xuan.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/conf2021/xuan.jpg
--------------------------------------------------------------------------------
/public/images/home/videos/documentary.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/videos/documentary.webp
--------------------------------------------------------------------------------
/public/images/home/videos/hooks.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/videos/hooks.jpg
--------------------------------------------------------------------------------
/public/images/home/videos/rethinking.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/videos/rethinking.jpg
--------------------------------------------------------------------------------
/public/images/home/videos/rn.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/videos/rn.jpg
--------------------------------------------------------------------------------
/public/images/home/videos/rsc.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/home/videos/rsc.jpg
--------------------------------------------------------------------------------
/public/images/meta-gradient-dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/meta-gradient-dark.png
--------------------------------------------------------------------------------
/public/images/meta-gradient.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/meta-gradient.png
--------------------------------------------------------------------------------
/public/images/og-blog.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/og-blog.png
--------------------------------------------------------------------------------
/public/images/og-community.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/og-community.png
--------------------------------------------------------------------------------
/public/images/og-home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/og-home.png
--------------------------------------------------------------------------------
/public/images/og-learn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/og-learn.png
--------------------------------------------------------------------------------
/public/images/og-reference.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/og-reference.png
--------------------------------------------------------------------------------
/public/images/og-unknown.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/og-unknown.png
--------------------------------------------------------------------------------
/public/images/team/acdlite.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/team/acdlite.jpg
--------------------------------------------------------------------------------
/public/images/team/eli-white.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/team/eli-white.jpg
--------------------------------------------------------------------------------
/public/images/team/gaearon.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/team/gaearon.jpg
--------------------------------------------------------------------------------
/public/images/team/hendrik.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/team/hendrik.jpg
--------------------------------------------------------------------------------
/public/images/team/jack-pope.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/team/jack-pope.jpg
--------------------------------------------------------------------------------
/public/images/team/jasonbonta.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/team/jasonbonta.jpg
--------------------------------------------------------------------------------
/public/images/team/joe.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/team/joe.jpg
--------------------------------------------------------------------------------
/public/images/team/jordan.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/team/jordan.jpg
--------------------------------------------------------------------------------
/public/images/team/josh.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/team/josh.jpg
--------------------------------------------------------------------------------
/public/images/team/lauren.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/team/lauren.jpg
--------------------------------------------------------------------------------
/public/images/team/lesiutin.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/team/lesiutin.jpg
--------------------------------------------------------------------------------
/public/images/team/matt-carroll.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/team/matt-carroll.png
--------------------------------------------------------------------------------
/public/images/team/mike.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/team/mike.jpg
--------------------------------------------------------------------------------
/public/images/team/mofei-zhang.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/team/mofei-zhang.png
--------------------------------------------------------------------------------
/public/images/team/pieter.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/team/pieter.jpg
--------------------------------------------------------------------------------
/public/images/team/rickhanlonii.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/team/rickhanlonii.jpg
--------------------------------------------------------------------------------
/public/images/team/sebmarkbage.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/team/sebmarkbage.jpg
--------------------------------------------------------------------------------
/public/images/team/sebsilbermann.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/team/sebsilbermann.jpg
--------------------------------------------------------------------------------
/public/images/team/seth.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/team/seth.jpg
--------------------------------------------------------------------------------
/public/images/team/sophiebits.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/team/sophiebits.jpg
--------------------------------------------------------------------------------
/public/images/team/yuzhi.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/team/yuzhi.jpg
--------------------------------------------------------------------------------
/public/images/tutorial/board-filled-with-ones.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/tutorial/board-filled-with-ones.png
--------------------------------------------------------------------------------
/public/images/tutorial/board-filled-with-value.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/tutorial/board-filled-with-value.png
--------------------------------------------------------------------------------
/public/images/tutorial/codesandbox-devtools.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/tutorial/codesandbox-devtools.png
--------------------------------------------------------------------------------
/public/images/tutorial/devtools-select.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/tutorial/devtools-select.gif
--------------------------------------------------------------------------------
/public/images/tutorial/empty-board.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/tutorial/empty-board.png
--------------------------------------------------------------------------------
/public/images/tutorial/nine-x-filled-squares.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/tutorial/nine-x-filled-squares.png
--------------------------------------------------------------------------------
/public/images/tutorial/number-filled-board.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/tutorial/number-filled-board.png
--------------------------------------------------------------------------------
/public/images/tutorial/o-replaces-x.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/tutorial/o-replaces-x.gif
--------------------------------------------------------------------------------
/public/images/tutorial/react-starter-code-codesandbox.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/tutorial/react-starter-code-codesandbox.png
--------------------------------------------------------------------------------
/public/images/tutorial/tictac-adding-x-s.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/tutorial/tictac-adding-x-s.gif
--------------------------------------------------------------------------------
/public/images/tutorial/two-x-filled-squares.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/tutorial/two-x-filled-squares.png
--------------------------------------------------------------------------------
/public/images/tutorial/x-filled-square.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/tutorial/x-filled-square.png
--------------------------------------------------------------------------------
/public/images/uwu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Alpha-Coder23/project/590e81ef9f4b9d3cc3d78b6940b762c6d3f3f166/public/images/uwu.png
--------------------------------------------------------------------------------
/public/js/jsfiddle-integration-babel.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | // Do not delete or move this file.
6 | // Many fiddles reference it so we have to keep it here.
7 | (function() {
8 | var tag = document.querySelector(
9 | 'script[type="application/javascript;version=1.7"]'
10 | );
11 | if (!tag || tag.textContent.indexOf('window.onload=function(){') !== -1) {
12 | alert('Bad JSFiddle configuration, please fork the original React JSFiddle');
13 | }
14 | tag.setAttribute('type', 'text/babel');
15 | tag.textContent = tag.textContent.replace(/^\/\/} lines
28 | */
29 | function validateHeaderIds(lines) {
30 | let inCode = false;
31 | const results = [];
32 | lines.forEach((line) => {
33 | // Ignore code blocks
34 | if (line.startsWith('```')) {
35 | inCode = !inCode;
36 |
37 | results.push(line);
38 | return;
39 | }
40 | if (inCode) {
41 | results.push(line);
42 | return;
43 | }
44 | validateHeaderId(line);
45 | });
46 | }
47 | /**
48 | * paths are basically array of path for which we have to validate heading IDs
49 | * @param {Array} paths
50 | */
51 | async function main(paths) {
52 | paths = paths.length === 0 ? ['src/content'] : paths;
53 | const files = paths.map((path) => [...walk(path)]).flat();
54 |
55 | files.forEach((file) => {
56 | if (!(file.endsWith('.md') || file.endsWith('.mdx'))) {
57 | return;
58 | }
59 |
60 | const content = fs.readFileSync(file, 'utf8');
61 | const lines = content.split('\n');
62 | validateHeaderIds(lines);
63 | });
64 | }
65 |
66 | module.exports = main;
67 |
--------------------------------------------------------------------------------
/scripts/headingIDHelpers/walk.js:
--------------------------------------------------------------------------------
1 | const fs = require('fs');
2 |
3 | module.exports = function walk(dir) {
4 | let results = [];
5 | /**
6 | * If the param is a directory we can return the file
7 | */
8 | if (dir.includes('md')) {
9 | return [dir];
10 | }
11 | const list = fs.readdirSync(dir);
12 | list.forEach(function (file) {
13 | file = dir + '/' + file;
14 | const stat = fs.statSync(file);
15 | if (stat && stat.isDirectory()) {
16 | /* Recurse into a subdirectory */
17 | results = results.concat(walk(file));
18 | } else {
19 | /* Is a file */
20 | results.push(file);
21 | }
22 | });
23 | return results;
24 | };
25 |
--------------------------------------------------------------------------------
/scripts/headingIdLinter.js:
--------------------------------------------------------------------------------
1 | const validateHeaderIds = require('./headingIDHelpers/validateHeadingIDs');
2 | const generateHeadingIds = require('./headingIDHelpers/generateHeadingIDs');
3 |
4 | /**
5 | * yarn lint-heading-ids --> Checks all files and causes an error if heading ID is missing
6 | * yarn lint-heading-ids --fix --> Fixes all markdown file's heading IDs
7 | * yarn lint-heading-ids path/to/markdown.md --> Checks that particular file for missing heading ID (path can denote a directory or particular file)
8 | * yarn lint-heading-ids --fix path/to/markdown.md --> Fixes that particular file's markdown IDs (path can denote a directory or particular file)
9 | */
10 |
11 | const markdownPaths = process.argv.slice(2);
12 | if (markdownPaths.includes('--fix')) {
13 | generateHeadingIds(markdownPaths.filter((path) => path !== '--fix'));
14 | } else {
15 | validateHeaderIds(markdownPaths);
16 | }
17 |
--------------------------------------------------------------------------------
/src/components/Breadcrumbs.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {Fragment} from 'react';
6 | import Link from 'next/link';
7 | import type {RouteItem} from 'components/Layout/getRouteMeta';
8 |
9 | function Breadcrumbs({breadcrumbs}: {breadcrumbs: RouteItem[]}) {
10 | return (
11 |
12 | {breadcrumbs.map(
13 | (crumb, i) =>
14 | crumb.path &&
15 | !crumb.skipBreadcrumb && (
16 |
17 |
18 |
21 | {crumb.title}
22 |
23 |
24 |
35 |
36 |
37 |
38 | )
39 | )}
40 |
41 | );
42 | }
43 |
44 | export default Breadcrumbs;
45 |
--------------------------------------------------------------------------------
/src/components/Button.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import * as React from 'react';
6 | import cn from 'classnames';
7 |
8 | interface ButtonProps {
9 | children: React.ReactNode;
10 | onClick?: (event: React.MouseEvent) => void;
11 | active?: boolean;
12 | className?: string;
13 | style?: Record;
14 | }
15 |
16 | export function Button({
17 | children,
18 | onClick,
19 | active = false,
20 | className,
21 | style,
22 | }: ButtonProps) {
23 | return (
24 |
43 | );
44 | }
45 |
46 | export default Button;
47 |
--------------------------------------------------------------------------------
/src/components/ButtonLink.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import cn from 'classnames';
6 | import NextLink from 'next/link';
7 |
8 | interface ButtonLinkProps {
9 | size?: 'md' | 'lg';
10 | type?: 'primary' | 'secondary';
11 | label?: string;
12 | target?: '_self' | '_blank';
13 | }
14 |
15 | function ButtonLink({
16 | href,
17 | className,
18 | children,
19 | type = 'primary',
20 | size = 'md',
21 | label,
22 | target = '_self',
23 | ...props
24 | }: React.AnchorHTMLAttributes & ButtonLinkProps) {
25 | const classes = cn(
26 | className,
27 | 'active:scale-[.98] transition-transform inline-flex font-bold items-center outline-none focus:outline-none focus-visible:outline focus-visible:outline-link focus:outline-offset-2 focus-visible:dark:focus:outline-link-dark leading-snug',
28 | {
29 | 'bg-link text-white dark:bg-brand-dark dark:text-secondary hover:bg-opacity-80':
30 | type === 'primary',
31 | 'text-primary dark:text-primary-dark shadow-secondary-button-stroke dark:shadow-secondary-button-stroke-dark hover:bg-gray-40/5 active:bg-gray-40/10 hover:dark:bg-gray-60/5 active:dark:bg-gray-60/10':
32 | type === 'secondary',
33 | 'text-lg py-3 rounded-full px-4 sm:px-6': size === 'lg',
34 | 'text-base rounded-full px-4 py-2': size === 'md',
35 | }
36 | );
37 | return (
38 |
44 | {children}
45 |
46 | );
47 | }
48 |
49 | export default ButtonLink;
50 |
--------------------------------------------------------------------------------
/src/components/ErrorDecoderContext.tsx:
--------------------------------------------------------------------------------
1 | // Error Decoder requires reading pregenerated error message from getStaticProps,
2 | // but MDX component doesn't support props. So we use React Context to populate
3 | // the value without prop-drilling.
4 | // TODO: Replace with React.cache + React.use when migrating to Next.js App Router
5 |
6 | import {createContext, useContext} from 'react';
7 |
8 | const notInErrorDecoderContext = Symbol('not in error decoder context');
9 |
10 | export const ErrorDecoderContext = createContext<
11 | | {errorMessage: string | null; errorCode: string | null}
12 | | typeof notInErrorDecoderContext
13 | >(notInErrorDecoderContext);
14 |
15 | export const useErrorDecoderParams = () => {
16 | const params = useContext(ErrorDecoderContext);
17 |
18 | if (params === notInErrorDecoderContext) {
19 | throw new Error('useErrorDecoder must be used in error decoder pages only');
20 | }
21 |
22 | return params;
23 | };
24 |
--------------------------------------------------------------------------------
/src/components/ExternalLink.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 | import type {DetailedHTMLProps, AnchorHTMLAttributes} from 'react';
5 |
6 | export function ExternalLink({
7 | href,
8 | target,
9 | children,
10 | ...props
11 | }: DetailedHTMLProps<
12 | AnchorHTMLAttributes,
13 | HTMLAnchorElement
14 | >) {
15 | return (
16 |
17 | {children}
18 |
19 | );
20 | }
21 |
--------------------------------------------------------------------------------
/src/components/Icon/IconArrow.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {memo} from 'react';
6 | import cn from 'classnames';
7 | import type {SVGProps} from 'react';
8 |
9 | export const IconArrow = memo<
10 | SVGProps & {
11 | /**
12 | * The direction the arrow should point.
13 | * `start` and `end` are relative to the current locale.
14 | * for example, in LTR, `start` is left and `end` is right.
15 | */
16 | displayDirection: 'start' | 'end' | 'right' | 'left' | 'up' | 'down';
17 | }
18 | >(function IconArrow({displayDirection, className, ...rest}) {
19 | return (
20 |
34 | );
35 | });
36 |
--------------------------------------------------------------------------------
/src/components/Icon/IconArrowSmall.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {memo} from 'react';
6 | import cn from 'classnames';
7 | import type {SVGProps} from 'react';
8 |
9 | export const IconArrowSmall = memo<
10 | SVGProps & {
11 | /**
12 | * The direction the arrow should point.
13 | * `start` and `end` are relative to the current locale.
14 | * for example, in LTR, `start` is left and `end` is right.
15 | */
16 | displayDirection: 'start' | 'end' | 'right' | 'left' | 'up' | 'down';
17 | }
18 | >(function IconArrowSmall({displayDirection, className, ...rest}) {
19 | const classes = cn(className, {
20 | 'rotate-180': displayDirection === 'left',
21 | 'rotate-180 rtl:rotate-0': displayDirection === 'start',
22 | 'rotate-90': displayDirection === 'down',
23 | });
24 | return (
25 |
37 | );
38 | });
39 |
--------------------------------------------------------------------------------
/src/components/Icon/IconBsky.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {memo} from 'react';
6 | import type {SVGProps} from 'react';
7 |
8 | export const IconBsky = memo>(function IconBsky(props) {
9 | return (
10 |
22 | );
23 | });
24 |
--------------------------------------------------------------------------------
/src/components/Icon/IconChevron.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {memo} from 'react';
6 | import cn from 'classnames';
7 |
8 | export const IconChevron = memo<
9 | JSX.IntrinsicElements['svg'] & {
10 | /**
11 | * The direction the arrow should point.
12 | * `start` and `end` are relative to the current locale.
13 | * for example, in LTR, `start` is left and `end` is right.
14 | */
15 | displayDirection: 'start' | 'end' | 'right' | 'left' | 'up' | 'down';
16 | }
17 | >(function IconChevron({className, displayDirection}) {
18 | const classes = cn(
19 | {
20 | 'rotate-0': displayDirection === 'down',
21 | 'rotate-90': displayDirection === 'left',
22 | 'rotate-180': displayDirection === 'up',
23 | '-rotate-90': displayDirection === 'right',
24 | 'rotate-90 rtl:-rotate-90': displayDirection === 'start',
25 | '-rotate-90 rtl:rotate-90': displayDirection === 'end',
26 | },
27 | className
28 | );
29 | return (
30 |
46 | );
47 | });
48 |
--------------------------------------------------------------------------------
/src/components/Icon/IconClose.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {memo} from 'react';
6 | import type {SVGProps} from 'react';
7 |
8 | export const IconClose = memo>(function IconClose(
9 | props
10 | ) {
11 | return (
12 |
26 | );
27 | });
28 |
--------------------------------------------------------------------------------
/src/components/Icon/IconCodeBlock.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {memo} from 'react';
6 |
7 | export const IconCodeBlock = memo(
8 | function IconCodeBlock({className}) {
9 | return (
10 |
22 | );
23 | }
24 | );
25 |
--------------------------------------------------------------------------------
/src/components/Icon/IconCopy.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {memo} from 'react';
6 |
7 | export const IconCopy = memo(function IconCopy({
8 | className,
9 | }) {
10 | return (
11 |
31 | );
32 | });
33 |
--------------------------------------------------------------------------------
/src/components/Icon/IconDeepDive.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {memo} from 'react';
6 |
7 | export const IconDeepDive = memo(
8 | function IconDeepDive({className}) {
9 | return (
10 |
24 | );
25 | }
26 | );
27 |
--------------------------------------------------------------------------------
/src/components/Icon/IconDownload.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {memo} from 'react';
6 |
7 | export const IconDownload = memo(
8 | function IconDownload({className}) {
9 | return (
10 |
26 | );
27 | }
28 | );
29 |
--------------------------------------------------------------------------------
/src/components/Icon/IconError.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {memo} from 'react';
6 |
7 | export const IconError = memo(function IconError({
8 | className,
9 | }) {
10 | return (
11 |
21 | );
22 | });
23 |
--------------------------------------------------------------------------------
/src/components/Icon/IconFacebookCircle.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {memo} from 'react';
6 | import type {SVGProps} from 'react';
7 |
8 | export const IconFacebookCircle = memo>(
9 | function IconFacebookCircle(props) {
10 | return (
11 |
21 | );
22 | }
23 | );
24 |
--------------------------------------------------------------------------------
/src/components/Icon/IconGitHub.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {memo} from 'react';
6 | import type {SVGProps} from 'react';
7 |
8 | export const IconGitHub = memo>(function IconGitHub(
9 | props
10 | ) {
11 | return (
12 |
21 | );
22 | });
23 |
--------------------------------------------------------------------------------
/src/components/Icon/IconHamburger.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {memo} from 'react';
6 | import type {SVGProps} from 'react';
7 |
8 | export const IconHamburger = memo>(
9 | function IconHamburger(props) {
10 | return (
11 |
25 | );
26 | }
27 | );
28 |
--------------------------------------------------------------------------------
/src/components/Icon/IconHint.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {memo} from 'react';
6 | import cn from 'classnames';
7 |
8 | export const IconHint = memo(function IconHint({
9 | className,
10 | }) {
11 | return (
12 |
23 | );
24 | });
25 |
--------------------------------------------------------------------------------
/src/components/Icon/IconInstagram.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {memo} from 'react';
6 | import type {SVGProps} from 'react';
7 |
8 | export const IconInstagram = memo>(
9 | function IconInstagram(props) {
10 | return (
11 |
21 | );
22 | }
23 | );
24 |
--------------------------------------------------------------------------------
/src/components/Icon/IconLink.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {memo} from 'react';
6 | import type {SVGProps} from 'react';
7 |
8 | export const IconLink = memo>(function IconLink(props) {
9 | return (
10 |
23 | );
24 | });
25 |
--------------------------------------------------------------------------------
/src/components/Icon/IconNavArrow.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {memo} from 'react';
6 | import cn from 'classnames';
7 |
8 | export const IconNavArrow = memo<
9 | JSX.IntrinsicElements['svg'] & {
10 | /**
11 | * The direction the arrow should point.
12 | * `start` and `end` are relative to the current locale.
13 | * for example, in LTR, `start` is left and `end` is right.
14 | */
15 | displayDirection: 'start' | 'end' | 'right' | 'left' | 'down';
16 | }
17 | >(function IconNavArrow({displayDirection = 'start', className}) {
18 | const classes = cn(
19 | 'duration-100 ease-in transition',
20 | {
21 | 'rotate-0': displayDirection === 'down',
22 | 'rotate-90': displayDirection === 'left',
23 | '-rotate-90': displayDirection === 'right',
24 | 'rotate-90 rtl:-rotate-90': displayDirection === 'start',
25 | '-rotate-90 rtl:rotate-90': displayDirection === 'end',
26 | },
27 | className
28 | );
29 |
30 | return (
31 |
48 | );
49 | });
50 |
--------------------------------------------------------------------------------
/src/components/Icon/IconNewPage.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {memo} from 'react';
6 | import type {SVGProps} from 'react';
7 |
8 | export const IconNewPage = memo>(function IconNewPage(
9 | props
10 | ) {
11 | return (
12 |
28 | );
29 | });
30 |
--------------------------------------------------------------------------------
/src/components/Icon/IconNote.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {memo} from 'react';
6 |
7 | export const IconNote = memo(function IconNote({
8 | className,
9 | }) {
10 | return (
11 |
40 | );
41 | });
42 |
--------------------------------------------------------------------------------
/src/components/Icon/IconPitfall.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {memo} from 'react';
6 |
7 | export const IconPitfall = memo(
8 | function IconPitfall({className}) {
9 | return (
10 |
31 | );
32 | }
33 | );
34 |
--------------------------------------------------------------------------------
/src/components/Icon/IconRss.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {memo} from 'react';
6 | import type {SVGProps} from 'react';
7 |
8 | export const IconRss = memo>(function IconRss(props) {
9 | return (
10 |
25 | );
26 | });
27 |
--------------------------------------------------------------------------------
/src/components/Icon/IconSearch.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {memo} from 'react';
6 | import type {SVGProps} from 'react';
7 |
8 | export const IconSearch = memo>(function IconSearch(
9 | props
10 | ) {
11 | return (
12 |
22 | );
23 | });
24 |
--------------------------------------------------------------------------------
/src/components/Icon/IconSolution.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {memo} from 'react';
6 | import cn from 'classnames';
7 |
8 | export const IconSolution = memo(
9 | function IconSolution({className}) {
10 | return (
11 |
22 | );
23 | }
24 | );
25 |
--------------------------------------------------------------------------------
/src/components/Icon/IconTerminal.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {memo} from 'react';
6 |
7 | export const IconTerminal = memo(
8 | function IconTerminal({className}) {
9 | return (
10 |
22 | );
23 | }
24 | );
25 |
--------------------------------------------------------------------------------
/src/components/Icon/IconTwitter.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {memo} from 'react';
6 | import type {SVGProps} from 'react';
7 |
8 | export const IconTwitter = memo>(function IconTwitter(
9 | props
10 | ) {
11 | return (
12 |
22 | );
23 | });
24 |
--------------------------------------------------------------------------------
/src/components/Icon/IconWarning.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {memo} from 'react';
6 |
7 | export const IconWarning = memo(
8 | function IconWarning({className}) {
9 | return (
10 |
25 | );
26 | }
27 | );
28 |
--------------------------------------------------------------------------------
/src/components/Layout/Sidebar/SidebarButton.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import * as React from 'react';
6 | import cn from 'classnames';
7 | import {IconNavArrow} from 'components/Icon/IconNavArrow';
8 |
9 | interface SidebarButtonProps {
10 | title: string;
11 | heading: boolean;
12 | level: number;
13 | onClick: (event: React.MouseEvent) => void;
14 | isExpanded?: boolean;
15 | isBreadcrumb?: boolean;
16 | }
17 |
18 | export function SidebarButton({
19 | title,
20 | heading,
21 | level,
22 | onClick,
23 | isExpanded,
24 | isBreadcrumb,
25 | }: SidebarButtonProps) {
26 | return (
27 | 1,
31 | })}>
32 |
55 |
56 | );
57 | }
58 |
--------------------------------------------------------------------------------
/src/components/Layout/Sidebar/index.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | export {SidebarButton} from './SidebarButton';
6 | export {SidebarLink} from './SidebarLink';
7 | export {SidebarRouteTree} from './SidebarRouteTree';
8 |
--------------------------------------------------------------------------------
/src/components/Layout/SidebarNav/index.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | export {default as SidebarNav} from './SidebarNav';
6 |
--------------------------------------------------------------------------------
/src/components/Layout/TopNav/index.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | export {default as TopNav} from './TopNav';
6 |
--------------------------------------------------------------------------------
/src/components/Logo.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 | import type {SVGProps} from 'react';
5 |
6 | export function Logo(props: SVGProps) {
7 | return (
8 |
22 | );
23 | }
24 |
--------------------------------------------------------------------------------
/src/components/MDX/Challenges/index.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import * as React from 'react';
6 | export {Challenges} from './Challenges';
7 |
8 | export function Hint({children}: {children: React.ReactNode}) {
9 | return {children}
;
10 | }
11 |
12 | export function Solution({children}: {children: React.ReactNode}) {
13 | return {children}
;
14 | }
15 |
--------------------------------------------------------------------------------
/src/components/MDX/CodeBlock/index.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import * as React from 'react';
6 | import cn from 'classnames';
7 | import {lazy, memo, Suspense} from 'react';
8 | const CodeBlock = lazy(() => import('./CodeBlock'));
9 |
10 | export default memo(function CodeBlockWrapper(props: {
11 | children: React.ReactNode & {
12 | props: {
13 | className: string;
14 | children: string;
15 | meta?: string;
16 | };
17 | };
18 | isFromPackageImport: boolean;
19 | noMargin?: boolean;
20 | noMarkers?: boolean;
21 | }): any {
22 | const {children, isFromPackageImport} = props;
23 | return (
24 |
33 |
36 |
37 | }>
38 |
39 |
40 | );
41 | });
42 |
--------------------------------------------------------------------------------
/src/components/MDX/CodeDiagram.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {Children} from 'react';
6 | import * as React from 'react';
7 | import CodeBlock from './CodeBlock';
8 |
9 | interface CodeDiagramProps {
10 | children: React.ReactNode;
11 | flip?: boolean;
12 | }
13 |
14 | export function CodeDiagram({children, flip = false}: CodeDiagramProps) {
15 | const illustration = Children.toArray(children).filter((child: any) => {
16 | return child.type === 'img';
17 | });
18 | const content = Children.toArray(children).map((child: any) => {
19 | if (child.type?.mdxName === 'pre') {
20 | return (
21 |
27 | );
28 | } else if (child.type === 'img') {
29 | return null;
30 | } else {
31 | return child;
32 | }
33 | });
34 | if (flip) {
35 | return (
36 |
37 | {illustration}
38 | {content}
39 |
40 | );
41 | }
42 | return (
43 |
44 | {content}
45 | {illustration}
46 |
47 | );
48 | }
49 |
--------------------------------------------------------------------------------
/src/components/MDX/Diagram.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import Image from 'next/image';
6 |
7 | interface DiagramProps {
8 | name: string;
9 | alt: string;
10 | height: number;
11 | width: number;
12 | children: string;
13 | captionPosition: 'top' | 'bottom' | null;
14 | }
15 |
16 | function Caption({text}: {text: string}) {
17 | return (
18 |
19 |
20 | {text}
21 |
22 |
23 | );
24 | }
25 |
26 | export function Diagram({
27 | name,
28 | alt,
29 | height,
30 | width,
31 | children,
32 | captionPosition,
33 | }: DiagramProps) {
34 | return (
35 |
36 | {captionPosition === 'top' && }
37 |
38 |
44 |
45 |
46 |
52 |
53 | {(!captionPosition || captionPosition === 'bottom') && (
54 |
55 | )}
56 |
57 | );
58 | }
59 |
60 | export default Diagram;
61 |
--------------------------------------------------------------------------------
/src/components/MDX/DiagramGroup.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {ReactNode} from 'react';
6 |
7 | interface DiagramGroupProps {
8 | children: ReactNode;
9 | }
10 |
11 | export function DiagramGroup({children}: DiagramGroupProps) {
12 | return (
13 |
14 | {children}
15 |
16 | );
17 | }
18 |
19 | export default DiagramGroup;
20 |
--------------------------------------------------------------------------------
/src/components/MDX/InlineCode.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import cn from 'classnames';
6 | import type {HTMLAttributes} from 'react';
7 |
8 | interface InlineCodeProps {
9 | isLink?: boolean;
10 | meta?: string;
11 | }
12 | function InlineCode({
13 | isLink,
14 | ...props
15 | }: HTMLAttributes & InlineCodeProps) {
16 | return (
17 | in case of RTL languages to avoid like `()console.log` to be rendered as `console.log()`
19 | className={cn(
20 | 'inline text-code text-secondary dark:text-secondary-dark px-1 rounded-md no-underline',
21 | {
22 | 'bg-gray-30 bg-opacity-10 py-px': !isLink,
23 | 'bg-highlight dark:bg-highlight-dark py-0': isLink,
24 | }
25 | )}
26 | {...props}
27 | />
28 | );
29 | }
30 |
31 | export default InlineCode;
32 |
--------------------------------------------------------------------------------
/src/components/MDX/Intro.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import * as React from 'react';
6 |
7 | export interface IntroProps {
8 | children?: React.ReactNode;
9 | }
10 |
11 | function Intro({children}: IntroProps) {
12 | return (
13 |
14 | {children}
15 |
16 | );
17 | }
18 |
19 | export default Intro;
20 |
--------------------------------------------------------------------------------
/src/components/MDX/LanguagesContext.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {createContext} from 'react';
6 |
7 | export type LanguageItem = {
8 | code: string;
9 | name: string;
10 | enName: string;
11 | };
12 | export type Languages = Array;
13 |
14 | export const LanguagesContext = createContext(null);
15 |
--------------------------------------------------------------------------------
/src/components/MDX/Link.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {Children, cloneElement} from 'react';
6 | import NextLink from 'next/link';
7 | import cn from 'classnames';
8 |
9 | import {ExternalLink} from 'components/ExternalLink';
10 |
11 | function Link({
12 | href,
13 | className,
14 | children,
15 | ...props
16 | }: React.AnchorHTMLAttributes) {
17 | const classes =
18 | 'inline text-link dark:text-link-dark border-b border-link border-opacity-0 hover:border-opacity-100 duration-100 ease-in transition leading-normal';
19 | const modifiedChildren = Children.toArray(children).map((child: any) => {
20 | if (child.type?.mdxName && child.type?.mdxName === 'inlineCode') {
21 | return cloneElement(child, {
22 | isLink: true,
23 | });
24 | }
25 | return child;
26 | });
27 |
28 | if (!href) {
29 | // eslint-disable-next-line jsx-a11y/anchor-has-content
30 | return ;
31 | }
32 | return (
33 | <>
34 | {href.startsWith('https://') ? (
35 |
36 | {modifiedChildren}
37 |
38 | ) : href.startsWith('#') ? (
39 | // eslint-disable-next-line jsx-a11y/anchor-has-content
40 |
41 | {modifiedChildren}
42 |
43 | ) : (
44 |
45 | {modifiedChildren}
46 |
47 | )}
48 | >
49 | );
50 | }
51 |
52 | export default Link;
53 |
--------------------------------------------------------------------------------
/src/components/MDX/MDXComponents.module.css:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | /* Stop purging. */
6 | .markdown p {
7 | @apply mb-4 leading-7 whitespace-pre-wrap text-gray-70;
8 | }
9 |
10 | .markdown ol {
11 | @apply mb-4 ms-8 list-decimal;
12 | }
13 |
14 | .markdown ul {
15 | @apply mb-4 ms-8 list-disc;
16 | }
17 |
18 | .markdown h1 {
19 | @apply mb-6 text-4xl font-extrabold tracking-tight;
20 | }
21 |
22 | .markdown h2 {
23 | @apply mt-12 mb-4 text-3xl font-extrabold tracking-tight;
24 | }
25 | .markdown h3 {
26 | @apply mt-8 mb-3 text-2xl font-extrabold tracking-tight;
27 | }
28 | .markdown h4 {
29 | @apply mt-8 mb-3 text-xl font-extrabold tracking-tight;
30 | }
31 |
32 | .markdown code {
33 | @apply text-gray-70 bg-card dark:bg-card-dark p-1 rounded-lg no-underline;
34 | font-size: 90%;
35 | }
36 |
37 | .markdown li {
38 | @apply mb-2;
39 | }
40 |
41 | .markdown a {
42 | @apply inline text-link dark:text-link-dark break-normal border-b border-link border-opacity-0 hover:border-opacity-100 duration-100 ease-in transition leading-normal;
43 | }
44 |
--------------------------------------------------------------------------------
/src/components/MDX/PackageImport.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {Children} from 'react';
6 | import * as React from 'react';
7 | import CodeBlock from './CodeBlock';
8 |
9 | interface PackageImportProps {
10 | children: React.ReactNode;
11 | }
12 |
13 | export function PackageImport({children}: PackageImportProps) {
14 | const terminal = Children.toArray(children).filter((child: any) => {
15 | return child.type?.mdxName !== 'pre';
16 | });
17 | const code = Children.toArray(children).map((child: any, i: number) => {
18 | if (child.type?.mdxName === 'pre') {
19 | return (
20 |
27 | );
28 | } else {
29 | return null;
30 | }
31 | });
32 | return (
33 |
34 | {terminal}
35 | {code}
36 |
37 | );
38 | }
39 |
--------------------------------------------------------------------------------
/src/components/MDX/Recap.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import * as React from 'react';
6 | import {H2} from './Heading';
7 |
8 | interface RecapProps {
9 | children: React.ReactNode;
10 | }
11 |
12 | function Recap({children}: RecapProps) {
13 | return (
14 |
15 |
16 | 摘要
17 |
18 | {children}
19 |
20 | );
21 | }
22 |
23 | export default Recap;
24 |
--------------------------------------------------------------------------------
/src/components/MDX/Sandpack/ErrorMessage.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | interface ErrorType {
6 | title?: string;
7 | message: string;
8 | column?: number;
9 | line?: number;
10 | path?: string;
11 | }
12 |
13 | export function ErrorMessage({error, ...props}: {error: ErrorType}) {
14 | const {message, title} = error;
15 |
16 | return (
17 |
18 |
{title || 'Error'}
19 |
20 | {message}
21 |
22 |
23 | );
24 | }
25 |
--------------------------------------------------------------------------------
/src/components/MDX/Sandpack/OpenInCodeSandboxButton.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {UnstyledOpenInCodeSandboxButton} from '@codesandbox/sandpack-react/unstyled';
6 | import {IconNewPage} from '../../Icon/IconNewPage';
7 |
8 | export const OpenInCodeSandboxButton = () => {
9 | return (
10 |
13 |
18 | Fork
19 |
20 | );
21 | };
22 |
--------------------------------------------------------------------------------
/src/components/MDX/Sandpack/OpenInTypeScriptPlayground.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {IconNewPage} from '../../Icon/IconNewPage';
6 |
7 | export const OpenInTypeScriptPlaygroundButton = (props: {content: string}) => {
8 | const contentWithReactImport = `import * as React from 'react';\n\n${props.content}`;
9 | return (
10 |
18 |
23 | TypeScript Playground
24 |
25 | );
26 | };
27 |
--------------------------------------------------------------------------------
/src/components/MDX/Sandpack/ResetButton.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import * as React from 'react';
6 | import {IconRestart} from '../../Icon/IconRestart';
7 | export interface ResetButtonProps {
8 | onReset: () => void;
9 | }
10 |
11 | export function ResetButton({onReset}: ResetButtonProps) {
12 | return (
13 |
20 | );
21 | }
22 |
--------------------------------------------------------------------------------
/src/components/MDX/Sandpack/Themes.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import tailwindConfig from '../../../../tailwind.config';
6 |
7 | export const CustomTheme = {
8 | colors: {
9 | accent: 'inherit',
10 | base: 'inherit',
11 | clickable: 'inherit',
12 | disabled: 'inherit',
13 | error: 'inherit',
14 | errorSurface: 'inherit',
15 | hover: 'inherit',
16 | surface1: 'inherit',
17 | surface2: 'inherit',
18 | surface3: 'inherit',
19 | warning: 'inherit',
20 | warningSurface: 'inherit',
21 | },
22 | syntax: {
23 | plain: 'inherit',
24 | comment: 'inherit',
25 | keyword: 'inherit',
26 | tag: 'inherit',
27 | punctuation: 'inherit',
28 | definition: 'inherit',
29 | property: 'inherit',
30 | static: 'inherit',
31 | string: 'inherit',
32 | },
33 | font: {
34 | body: tailwindConfig.theme.extend.fontFamily.text
35 | .join(', ')
36 | .replace(/"/gm, ''),
37 | mono: tailwindConfig.theme.extend.fontFamily.mono
38 | .join(', ')
39 | .replace(/"/gm, ''),
40 | size: tailwindConfig.theme.extend.fontSize.code,
41 | lineHeight: '24px',
42 | },
43 | };
44 |
--------------------------------------------------------------------------------
/src/components/MDX/Sandpack/template.ts:
--------------------------------------------------------------------------------
1 | export const template = {
2 | '/src/index.js': {
3 | hidden: true,
4 | code: `import React, { StrictMode } from "react";
5 | import { createRoot } from "react-dom/client";
6 | import "./styles.css";
7 |
8 | import App from "./App";
9 |
10 | const root = createRoot(document.getElementById("root"));
11 | root.render(
12 |
13 |
14 |
15 | );`,
16 | },
17 | '/package.json': {
18 | hidden: true,
19 | code: JSON.stringify(
20 | {
21 | name: 'react.dev',
22 | version: '0.0.0',
23 | main: '/src/index.js',
24 | scripts: {
25 | start: 'react-scripts start',
26 | build: 'react-scripts build',
27 | test: 'react-scripts test --env=jsdom',
28 | eject: 'react-scripts eject',
29 | },
30 | dependencies: {
31 | react: '19.0.0-rc-3edc000d-20240926',
32 | 'react-dom': '19.0.0-rc-3edc000d-20240926',
33 | 'react-scripts': '^5.0.0',
34 | },
35 | },
36 | null,
37 | 2
38 | ),
39 | },
40 | '/public/index.html': {
41 | hidden: true,
42 | code: `
43 |
44 |
45 |
46 |
47 | Document
48 |
49 |
50 |
51 |
52 | `,
53 | },
54 | };
55 |
--------------------------------------------------------------------------------
/src/components/MDX/Sandpack/useSandpackLint.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | // @ts-nocheck
6 |
7 | import {useState, useEffect} from 'react';
8 | import type {EditorView} from '@codemirror/view';
9 |
10 | export type LintDiagnostic = {
11 | line: number;
12 | column: number;
13 | severity: 'warning' | 'error';
14 | message: string;
15 | }[];
16 |
17 | export const useSandpackLint = () => {
18 | const [lintErrors, setLintErrors] = useState([]);
19 | const [lintExtensions, setLintExtensions] = useState([]);
20 | useEffect(() => {
21 | const loadLinter = async () => {
22 | const {linter} = await import('@codemirror/lint');
23 | const onLint = linter(async (props: EditorView) => {
24 | // This is intentionally delayed until CodeMirror calls it
25 | // so that we don't take away bandwidth from things loading early.
26 | const {runESLint} = await import('./runESLint');
27 | const editorState = props.state.doc;
28 | let {errors, codeMirrorErrors} = runESLint(editorState);
29 | // Ignore parsing or internal linter errors.
30 | const isReactRuleError = (error: any) => error.ruleId != null;
31 | setLintErrors(errors.filter(isReactRuleError));
32 | return codeMirrorErrors.filter(isReactRuleError);
33 | });
34 | setLintExtensions([onLint]);
35 | };
36 |
37 | loadLinter();
38 | }, []);
39 | return {lintErrors, lintExtensions};
40 | };
41 |
--------------------------------------------------------------------------------
/src/components/MDX/SimpleCallout.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import * as React from 'react';
6 | import cn from 'classnames';
7 | import {H3} from './Heading';
8 |
9 | interface SimpleCalloutProps {
10 | title: string;
11 | children: React.ReactNode;
12 | className?: string;
13 | }
14 | function SimpleCallout({title, children, className}: SimpleCalloutProps) {
15 | return (
16 |
21 |
24 | {title}
25 |
26 | {children}
27 |
28 | );
29 | }
30 |
31 | export default SimpleCallout;
32 |
--------------------------------------------------------------------------------
/src/components/MDX/TocContext.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import {createContext} from 'react';
6 | import type {ReactNode} from 'react';
7 |
8 | export type TocItem = {
9 | url: string;
10 | text: ReactNode;
11 | depth: number;
12 | };
13 | export type Toc = Array;
14 |
15 | export const TocContext = createContext([]);
16 |
--------------------------------------------------------------------------------
/src/components/MDX/YouWillLearnCard.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import * as React from 'react';
6 | import ButtonLink from 'components/ButtonLink';
7 | import {IconNavArrow} from 'components/Icon/IconNavArrow';
8 |
9 | interface YouWillLearnCardProps {
10 | title: string;
11 | path: string;
12 | children: React.ReactNode;
13 | }
14 |
15 | function YouWillLearnCard({title, path, children}: YouWillLearnCardProps) {
16 | return (
17 |
18 |
19 |
20 | {title}
21 |
22 |
{children}
23 |
24 |
25 |
31 | 阅读更多
32 |
33 |
34 |
35 |
36 | );
37 | }
38 |
39 | export default YouWillLearnCard;
40 |
--------------------------------------------------------------------------------
/src/components/PageHeading.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import Breadcrumbs from 'components/Breadcrumbs';
6 | import Tag from 'components/Tag';
7 | import {H1} from './MDX/Heading';
8 | import type {RouteTag, RouteItem} from './Layout/getRouteMeta';
9 | import * as React from 'react';
10 | import {IconCanary} from './Icon/IconCanary';
11 |
12 | interface PageHeadingProps {
13 | title: string;
14 | canary?: boolean;
15 | status?: string;
16 | description?: string;
17 | tags?: RouteTag[];
18 | breadcrumbs: RouteItem[];
19 | }
20 |
21 | function PageHeading({
22 | title,
23 | status,
24 | canary,
25 | tags = [],
26 | breadcrumbs,
27 | }: PageHeadingProps) {
28 | return (
29 |
30 |
31 | {breadcrumbs ?
: null}
32 |
33 | {title}
34 | {canary && (
35 |
39 | )}
40 | {status ? —{status} : ''}
41 |
42 | {tags?.length > 0 && (
43 |
44 | {tags.map((tag) => (
45 |
46 | ))}
47 |
48 | )}
49 |
50 |
51 | );
52 | }
53 |
54 | export default PageHeading;
55 |
--------------------------------------------------------------------------------
/src/components/SocialBanner.tsx:
--------------------------------------------------------------------------------
1 | /**
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | *
4 | */
5 |
6 | import {useRef, useEffect} from 'react';
7 | import cn from 'classnames';
8 | import {ExternalLink} from './ExternalLink';
9 |
10 | const bannerText = 'Stream React Conf on May 15-16.';
11 | const bannerLink = 'https://conf.react.dev/';
12 | const bannerLinkText = 'Learn more.';
13 |
14 | export default function SocialBanner() {
15 | const ref = useRef(null);
16 | useEffect(() => {
17 | function patchedScrollTo(x: number, y: number) {
18 | if (y === 0) {
19 | // We're trying to reset scroll.
20 | // If we already scrolled past the banner, consider it as y = 0.
21 | const bannerHeight = ref.current?.offsetHeight ?? 0; // Could be zero (e.g. mobile)
22 | y = Math.min(window.scrollY, bannerHeight);
23 | }
24 | return realScrollTo(x, y);
25 | }
26 | const realScrollTo = window.scrollTo;
27 | (window as any).scrollTo = patchedScrollTo;
28 | return () => {
29 | (window as any).scrollTo = realScrollTo;
30 | };
31 | }, []);
32 | return (
33 |
38 |
{bannerText}
39 |
42 | {bannerLinkText}
43 |
44 |
45 | );
46 | }
47 |
--------------------------------------------------------------------------------
/src/components/Tag.tsx:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) Facebook, Inc. and its affiliates.
3 | */
4 |
5 | import cn from 'classnames';
6 | import type {RouteTag} from './Layout/getRouteMeta';
7 |
8 | const variantMap = {
9 | foundation: {
10 | name: '基础',
11 | classes: 'bg-yellow-50 text-white',
12 | },
13 | intermediate: {
14 | name: '中级',
15 | classes: 'bg-purple-40 text-white',
16 | },
17 | advanced: {
18 | name: '高级',
19 | classes: 'bg-green-40 text-white',
20 | },
21 | experimental: {
22 | name: '实验性的',
23 | classes: 'bg-ui-orange text-white',
24 | },
25 | deprecated: {
26 | name: '弃用',
27 | classes: 'bg-red-40 text-white',
28 | },
29 | };
30 |
31 | interface TagProps {
32 | variant: RouteTag;
33 | text?: string;
34 | className?: string;
35 | }
36 |
37 | function Tag({text, variant, className}: TagProps) {
38 | const {name, classes} = variantMap[variant];
39 | return (
40 |
41 |
46 | {text || name}
47 |
48 |
49 | );
50 | }
51 |
52 | export default Tag;
53 |
--------------------------------------------------------------------------------
/src/content/blog/2020/12/21/data-fetching-with-react-server-components.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "介绍零打包大小的 React 服务器组件"
3 | author: Dan Abramov, Lauren Tan, Joseph Savona, and Sebastian Markbage
4 | date: 2020/12/21
5 | description: 2020 年是漫长的一年。随着它的结束,我们想在节日里分享一份特别的更新,介绍我们对零打包大小的 React 服务器组件的研究。
6 | ---
7 |
8 | 2020 年 12 月 21 日 [Dan Abramov](https://bsky.app/profile/danabra.mov)、[Lauren Tan](https://twitter.com/potetotes)、[Joseph Savona](https://twitter.com/en_JS) 与 [Sebastian Markbåge](https://twitter.com/sebmarkbage)
9 |
10 | ---
11 |
12 |
13 |
14 | 2020 年是漫长的一年。随着它的结束,我们想在节日里分享一份特别的更新,介绍我们对零打包大小的 **React 服务器组件** 的研究。
15 |
16 |
17 |
18 | ---
19 |
20 | 为了介绍 React 服务器组件,我们准备了一次演讲和演示。如果你愿意,在假期期间或新年工作重新开始后查看它们。
21 |
22 |
23 |
24 | **React 服务器组件仍处于研究和开发阶段**。我们将以透明的精神分享这项工作,并希望从 React 社区获得初步反馈。这个过程需要很多时间,所以 **你现在不必急着赶上进展**!
25 |
26 | 如果你想了解它们,我们建议按照以下顺序进行查看:
27 |
28 | 1. **观看演讲** 以了解 React 服务器组件并观看演示。
29 |
30 | 2. **[克隆演示](http://github.com/reactjs/server-components-demo)** 并在你的计算机上尝试使用 React 服务器组件。
31 |
32 | 3. **[阅读 RFC(文末有FAQ)](https://github.com/reactjs/rfcs/pull/188)** 以深入了解技术细节并提供反馈意见。
33 |
34 | 我们非常期待你对 RFC 的反馈或者通过 [@reactjs](https://twitter.com/reactjs) 的 Twitter 账号回复我们。祝你度过愉快的假期,保重,明年再见!
35 |
--------------------------------------------------------------------------------
/src/content/community/docs-contributors.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 文档贡献者
3 | ---
4 |
5 |
6 |
7 | React 文档由 [React 团队](/community/team) 和 [外部贡献者](https://github.com/reactjs/react.dev/graphs/contributors) 编写和维护。在本页面上,我们要感谢一些为该网站做出重大贡献的人员。
8 |
9 |
10 |
11 | ## 内容 {/*content*/}
12 |
13 | * [Rachel Nabors](https://twitter.com/RachelNabors):编辑、写作、插图
14 | * [Dan Abramov](https://bsky.app/profile/danabra.mov):写作、教程设计
15 | * [Sylwia Vargas](https://twitter.com/SylwiaVargas):示例代码、写作
16 | * [Rick Hanlon](https://twitter.com/rickhanlonii):写作
17 | * [David McCabe](https://twitter.com/mcc_abe):写作
18 | * [Sophie Alpert](https://twitter.com/sophiebits):写作
19 | * [Pete Hunt](https://twitter.com/floydophone):写作
20 | * [Andrew Clark](https://twitter.com/acdlite):写作
21 | * [Matt Carroll](https://twitter.com/mattcarrollcode):编辑、写作
22 | * [Natalia Tepluhina](https://twitter.com/n_tepluhina):审查、建议
23 | * [Sebastian Markbåge](https://twitter.com/sebmarkbage):反馈
24 |
25 | ## 设计 {/*design*/}
26 |
27 | * [Dan Lebowitz](https://twitter.com/lebo):站点设计
28 | * [Razvan Gradinar](https://dribbble.com/GradinarRazvan):沙箱设计
29 | * [Maggie Appleton](https://maggieappleton.com/):图表系统
30 | * [Sophie Alpert](https://twitter.com/sophiebits):多彩的代码解释
31 |
32 | ## 开发 {/*development*/}
33 |
34 | * [Jared Palmer](https://twitter.com/jaredpalmer):站点开发
35 | * [ThisDotLabs](https://www.thisdot.co/) ([Dane Grant](https://twitter.com/danecando)、[Dustin Goodman](https://twitter.com/dustinsgoodman)):站点开发
36 | * [CodeSandbox](https://codesandbox.io/) ([Ives van Hoorne](https://twitter.com/CompuIves)、[Alex Moldovan](https://twitter.com/alexnmoldovan)、[Jasper De Moor](https://twitter.com/JasperDeMoor)、[Danilo Woznica](https://twitter.com/danilowoz)):沙箱集成
37 | * [Dan Abramov](https://bsky.app/profile/danabra.mov):站点开发
38 | * [Rick Hanlon](https://twitter.com/rickhanlonii):站点开发
39 | * [Harish Kumar](https://www.strek.in/):开发和维护
40 | * [Luna Ruan](https://twitter.com/lunaruan):沙箱改进
41 |
42 | 我们还要感谢无数的 alpha 测试人员和社区成员,在这个过程中给予我们反馈意见。
43 |
--------------------------------------------------------------------------------
/src/content/community/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: React Community
3 | ---
4 |
5 |
6 |
7 | React 拥有数百万开发者的社区。本章节将为你列出一些与 React 相关的社区,你也可以成为其中的一员;本章节中的其他页面将为你提供更多在线与面对面的学习资料。
8 |
9 |
10 |
11 | ## 行为准则 {/*code-of-conduct*/}
12 |
13 | 在参与 React 社区前,[请阅读我们的行为准则](https://github.com/facebook/react/blob/main/CODE_OF_CONDUCT.md)。我们制订了 [贡献者公约](https://www.contributor-covenant.org/),我们希望所有社区成员都能遵守其中的准则。
14 |
15 | ## Stack Overflow {/*stack-overflow*/}
16 |
17 | Stack Overflow 是非常受欢迎的论坛,在论坛中,你可以提出代码层面的问题,甚至是你工作中的疑难杂症。提问前,请先阅读标有 **reactjs** 的 [已有问题](https://stackoverflow.com/questions/tagged/reactjs),如未找到你需要的答案,[再自行提问](https://stackoverflow.com/questions/ask?tags=reactjs)!
18 |
19 | ## 热门讨论区 {/*popular-discussion-forums*/}
20 |
21 | 许多论坛是讨论最佳实践、应用架构以及 React 新特性的好地方。但如果你想讨论的是代码级问题,通常 Stack Overflow 会更合适。
22 |
23 | 每个社区都由成千上万的 React 开发者组成。
24 |
25 | * [DEV's React community](https://dev.to/t/react)
26 | * [Hashnode's React community](https://hashnode.com/n/reactjs)
27 | * [Reactiflux online chat](https://discord.gg/reactiflux)
28 | * [Reddit's React community](https://www.reddit.com/r/reactjs/)
29 |
30 | ## 新闻 {/*news*/}
31 |
32 | 关于 React 的最新消息,请在 Twitter 上关注 [**@reactjs**](https://twitter.com/reactjs),同时关注本站中的 [React 的官方博客](/blog/)。
33 |
--------------------------------------------------------------------------------
/src/content/community/translations.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Translations
3 | ---
4 |
5 |
6 |
7 | React docs are translated by the global community into many languages all over the world.
8 |
9 |
10 |
11 | ## Source site {/*main-site*/}
12 |
13 | All translations are provided from the canonical source docs:
14 |
15 | - [English](https://react.dev/) — [Contribute](https://github.com/reactjs/react.dev/)
16 |
17 | ## Full translations {/*full-translations*/}
18 |
19 | {/* If you are a language maintainer and want to add your language here, finish the "Core" translations and edit `deployedTranslations` under `src/utils`. */}
20 |
21 |
22 |
23 | ## In-progress translations {/*in-progress-translations*/}
24 |
25 | For the progress of each translation, see: [Is React Translated Yet?](https://translations.react.dev/)
26 |
27 |
28 |
29 | ## How to contribute {/*how-to-contribute*/}
30 |
31 | You can contribute to the translation efforts!
32 |
33 | The community conducts the translation work for the React docs on each language-specific fork of react.dev. Typical translation work involves directly translating a Markdown file and creating a pull request. Click the "contribute" link above to the GitHub repository for your language, and follow the instructions there to help with the translation effort.
34 |
35 | If you want to start a new translation for your language, visit: [translations.react.dev](https://github.com/reactjs/translations.react.dev)
--------------------------------------------------------------------------------
/src/content/errors/377.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | In the minified production build of React, we avoid sending down full error messages in order to reduce the number of bytes sent over the wire.
4 |
5 |
6 |
7 | We highly recommend using the development build locally when debugging your app since it tracks additional debug info and provides helpful warnings about potential problems in your apps, but if you encounter an exception while using the production build, this page will reassemble the original error message.
8 |
9 | The full text of the error you just encountered is:
10 |
11 |
12 |
13 | This error occurs when you pass a BigInt value from a Server Component to a Client Component.
14 |
--------------------------------------------------------------------------------
/src/content/errors/generic.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | In the minified production build of React, we avoid sending down full error messages in order to reduce the number of bytes sent over the wire.
4 |
5 |
6 |
7 | We highly recommend using the development build locally when debugging your app since it tracks additional debug info and provides helpful warnings about potential problems in your apps, but if you encounter an exception while using the production build, this page will reassemble the original error message.
8 |
9 | The full text of the error you just encountered is:
10 |
11 |
12 |
--------------------------------------------------------------------------------
/src/content/errors/index.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | In the minified production build of React, we avoid sending down full error messages in order to reduce the number of bytes sent over the wire.
4 |
5 |
6 |
7 |
8 | We highly recommend using the development build locally when debugging your app since it tracks additional debug info and provides helpful warnings about potential problems in your apps, but if you encounter an exception while using the production build, the error message will include just a link to the docs for the error.
9 |
10 | For an example, see: [https://react.dev/errors/149](/errors/421).
11 |
--------------------------------------------------------------------------------
/src/content/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | id: home
3 | title: React 官方中文文档
4 | permalink: index.html
5 | ---
6 |
7 | {/* See HomeContent.js */}
8 |
--------------------------------------------------------------------------------
/src/content/learn/installation.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: 安装
3 | translators:
4 | - ChelesteWang
5 | ---
6 |
7 |
8 |
9 | React 从诞生之初就是可被渐进式使用的。因此你可以选择性地使用 React 特性。不管你是想体验下 React,用它为简单的 HTML 页面增加交互,还是重新搭建一个由 React 驱动的复杂应用,本章节内容都能帮你快速入门。
10 |
11 |
12 |
13 | ## Try React {/*try-react*/}
14 |
15 | 无需进行任何安装,即可体验:
16 |
17 |
18 |
19 | ```js
20 | function Greeting({ name }) {
21 | return Hello, {name}
;
22 | }
23 |
24 | export default function App() {
25 | return
26 | }
27 | ```
28 |
29 |
30 |
31 | 你可以直接对它进行编辑,或点击右上角的 "Fork" 按钮在一个新的标签页中打开。
32 |
33 | React 文档中的大部分页面都包含这样的 sandbox。除 React 文档以外,还存在许多支持 React 的在线代码编辑器:例如 [CodeSandbox](https://codesandbox.io/s/new),[StackBlitz](https://stackblitz.com/fork/react),或者 [CodePen](https://codepen.io/pen?template=QWYVwWN)。
34 |
35 | 想要在本地尝试 React,你可以 [下载这个 HTML 页面](https://gist.githubusercontent.com/gaearon/0275b1e1518599bbeafcde4722e79ed1/raw/db72dcbf3384ee1708c4a07d3be79860db04bff0/example.html)。然后就可以使用编辑器或是浏览器打开它了!
36 |
37 | ## 创建一个 React 应用 {/*creating-a-react-app*/}
38 |
39 | 如果你想开始一个新的 React 应用,你可以用我们推荐的框架 [创建一个 React 应用](/learn/creating-a-react-app)。
40 |
41 | ## Build a React Framework {/*build-a-react-framework*/}
42 |
43 | 如果某个框架不适合你的项目,或者你更愿意从构建自己的框架开始,则可以 [构建你自己的 React 框架](/learn/building-a-react-framework)。
44 |
45 |
46 | ## 添加 React 到一个已有的项目 {/*add-react-to-an-existing-project*/}
47 |
48 | 如果你想尝试在现有应用程序或网站中使用 React,你可以 [将 React 添加到现有项目](/learn/add-react-to-an-existing-project)。
49 |
50 | ## 弃用的选项 {/*deprecated-options*/}
51 |
52 | ### Create React App(已弃用) {/*create-react-app-deprecated*/}
53 |
54 | Create React App 是一个已弃用的工具,以前建议用于创建新的 React 应用。如果你想启动新的 React 应用,你可以 [创建 React 应用](/learn/creating-a-react-app)并使用推荐的框架。
55 |
56 | 更多信息,参见 [逐步淘汰 Create React App](/blog/2025/02/14/sunsetting-create-react-app)。
57 |
58 | ## 下一节 {/*next-steps*/}
59 |
60 | 前往 [快速入门](/learn) 章节。以学习你每天都会遇到且最为重要的 React 概念。
61 |
--------------------------------------------------------------------------------
/src/content/learn/react-developer-tools.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: React 开发者工具
3 | translators:
4 | - dahui4dev
5 | ---
6 |
7 |
8 |
9 | 使用 React 开发者工具检查 React [components](/learn/your-first-component),编辑 [props](/learn/passing-props-to-a-component) 和 [state](/learn/state-a-components-memory),并识别性能问题。
10 |
11 |
12 |
13 |
14 |
15 | * 如何安装 React 开发者工具
16 |
17 |
18 |
19 | ## 浏览器扩展 {/*browser-extension*/}
20 |
21 | 调试 React 构建的网站最简单的办法就是安装 React 开发者工具浏览器扩展。它可用于几种流行的浏览器:
22 |
23 | * [安装 **Chrome** 扩展](https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi?hl=en)
24 | * [安装 **Firefox** 扩展](https://addons.mozilla.org/zh-CN/firefox/addon/react-devtools/)
25 | * [安装 **Edge** 扩展](https://microsoftedge.microsoft.com/addons/detail/react-developer-tools/gpphkfbcpidddadnkolkpfckpihlkkil)
26 |
27 | 现在,如果你访问一个用 **React 构建** 的网站,你将看到 **Components** 和 **Profiler** 面板。
28 |
29 | 
30 |
31 | ### Safari 和其他浏览器 {/*safari-and-other-browsers*/}
32 | 为其他浏览器(比如,Safari),安装 [`react-devtools`](https://www.npmjs.com/package/react-devtools) npm 包:
33 | ```bash
34 | # Yarn
35 | yarn global add react-devtools
36 |
37 | # Npm
38 | npm install -g react-devtools
39 | ```
40 |
41 | 接下来从终端打开开发者工具:
42 | ```bash
43 | react-devtools
44 | ```
45 |
46 | 然后通过将以下 `
51 | ```
52 |
53 | 现在在浏览器里刷新你的网站,你可以在开发者工具里查看它。
54 |
55 | 
56 |
57 | ## 移动端(React Native) {/*mobile-react-native*/}
58 |
59 | 你可以使用 [React Native DevTools](https://reactnative.dev/docs/react-native-devtools) 来检查 [React Native](https://reactnative.dev/) 应用程序,它的内置调试器与 React Developer Tools 进行了深度集成。所有功能与浏览器扩展的工作方式相同,包括本机元素突出显示和选择。
60 |
61 | [了解有关调试 React Native 的更多信息](https://reactnative.dev/docs/debugging)。
62 |
63 | > 对于 React Native 0.76 之前的版本,请按照上面的 [Safari and other browsers](#safari-and-other-browsers) 指南独立构建 React DevTools。
--------------------------------------------------------------------------------
/src/content/learn/setup.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Setup
3 | ---
4 |
5 |
6 | React integrates with tools like editors, TypeScript, browser extensions, and compliers. This section will help you get your environment set up.
7 |
8 |
9 |
10 | ## Editor Setup {/*editor-setup*/}
11 |
12 | See our [recommended editors](/learn/editor-setup) and learn how to set them up to work with React.
13 |
14 | ## Using TypeScript {/*using-typescript*/}
15 |
16 | TypeScript is a popular way to add type definitions to JavaScript codebases. [Learn how to integrate TypeScript into your React projects](/learn/typescript).
17 |
18 | ## React Developer Tools {/*react-developer-tools*/}
19 |
20 | React Developer Tools is a browser extension that can inspect React components, edit props and state, and identify performance problems. Learn how to install it [here](learn/react-developer-tools).
21 |
22 | ## React Compiler {/*react-compiler*/}
23 |
24 | React Compiler is a tool that automatically optimizes your React app. [Learn more](/learn/react-compiler).
25 |
26 | ## Start a React Project from scratch {/*start-a-react-project-from-scratch*/}
27 |
28 | If you want to build your own framework, you can [start a React project from scratch](/learn/start-a-react-project-from-scratch).
29 |
30 | ## Next steps {/*next-steps*/}
31 |
32 | Head to the [Quick Start](/learn) guide for a tour of the most important React concepts you will encounter every day.
33 |
--------------------------------------------------------------------------------
/src/content/reference/react-dom/client/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Client React DOM API
3 | translators:
4 | - neo-of-matrix
5 | ---
6 |
7 |
8 |
9 | `react-dom/client` API 允许你在客户端(浏览器)渲染 React 组件。这些 API 通常在应用程序顶层调用,以初始化 React 树。有的 [框架](/learn/start-a-new-react-project#production-grade-react-frameworks) 可能会为你调用相关 API,大多数组件不需要导入和使用这些 API。
10 |
11 |
12 |
13 | ---
14 |
15 | ## 客户端 API {/*client-apis*/}
16 |
17 | * [`createRoot`](/reference/react-dom/client/createRoot) 让你可以在浏览器的 DOM 节点里面创建一个根节点以显示 React 组件。
18 | * [`hydrateRoot`](/reference/react-dom/client/hydrateRoot) 让你可以在 HTML 内容提前由 [`react-dom/server`](/reference/react-dom/server) 生成的浏览器 DOM 节点里面显示 React 组件。
19 | ---
20 |
21 | ## 浏览器兼容性 {/*browser-support*/}
22 |
23 | React 支持所有流行的浏览器,包括 Internet Explorer 9 以及以上版本的浏览器。更旧的浏览器比如 IE9 和 IE10 需要使用 polyfill。
24 |
--------------------------------------------------------------------------------
/src/content/reference/react-dom/components/progress.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "