From 234b562857cbfcce0b362e9265e339827f8c5369 Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Wed, 28 Dec 2022 19:54:40 +0400 Subject: [PATCH] Update react roadmap --- content/roadmaps.json | 1 - content/roadmaps/103-react/content-paths.json | 139 +- .../100-create-react-app.md | 9 - .../108-basic-hooks/102-use-context.md | 8 - .../100-react-fundamental-topics/readme.md | 7 - .../content/100-react-roadmap-note.md | 3 + .../101-vite.md => 101-cli-tools/100-vite.md} | 0 .../101-create-react-app.md} | 0 .../100-cli-tools => 101-cli-tools}/readme.md | 0 .../101-react-advanced-topics/101-context.md | 9 - .../101-react-advanced-topics/readme.md | 3 - .../100-class-components.md} | 0 .../101-functional-components.md} | 0 .../101-jsx.md => 102-components/102-jsx.md} | 2 +- .../103-props-vs-state.md | 0 .../104-conditional-rendering.md | 0 .../105-composition-vs-inheritance.md} | 0 .../102-components/readme.md | 0 .../102-react-ecosystem/101-ssr/readme.md | 11 - .../102-react-ecosystem/102-ssg/101-gatsby.md | 8 - .../102-react-ecosystem/102-ssg/readme.md | 9 - .../103-api-calls/101-use-http.md | 9 - .../103-api-calls/105-unfetch.md | 6 - .../101-redux/100-redux-toolkit.md | 8 - .../content/102-react-ecosystem/readme.md | 8 - .../100-component-life-cycle.md} | 0 .../101-lists-and-keys.md} | 0 .../102-render-props.md} | 0 .../102-refs.md => 103-rendering/103-refs.md} | 0 .../104-events.md} | 0 .../105-high-order-components.md} | 0 .../103-react/content/103-rendering/readme.md | 16 + .../100-basic-hooks}/100-use-state.md | 0 .../100-basic-hooks}/101-use-effect.md | 0 .../100-basic-hooks}/readme.md | 1 - .../101-writing-your-own-hooks.md | 0 .../102-common-hooks.md | 0 .../100-hooks => 104-hooks}/readme.md | 5 +- .../100-react-router.md | 0 .../101-reach-router.md | 1 - .../100-routers => 105-routers}/readme.md | 0 .../100-context.md} | 0 .../101-zustand.md | 1 - .../102-redux-and-redux-toolkit.md} | 6 +- .../103-mobx.md} | 0 .../106-state-management/104-recoil.md | 17 + .../readme.md | 0 .../100-styled-components.md} | 0 .../101-emotion.md} | 0 .../102-mantine.md | 0 .../content/107-styling/103-tailwind.md | 10 + .../104-material-ui.md} | 0 .../105-chakra-ui.md} | 0 .../108-styling => 107-styling}/readme.md | 0 .../100-apollo.md} | 0 .../101-relay.md} | 2 +- .../content/108-api-calls/102-urql.md | 15 + .../101-swr.md => 108-api-calls/103-swr.md} | 3 - .../104-react-query.md} | 1 - .../105-axios.md} | 0 .../106-superagent.md | 0 .../103-api-calls => 108-api-calls}/readme.md | 0 .../106-testing => 109-testing}/100-jest.md | 0 .../101-vitest.md} | 0 .../102-react-testing-library.md} | 0 .../103-cypress.md} | 0 .../104-playwright.md | 0 .../106-testing => 109-testing}/readme.md | 0 .../101-ssr => 110-frameworks}/100-remix.md | 0 .../101-next-js.md} | 0 .../content/110-frameworks/readme.md | 8 + .../100-react-hook-form.md | 0 .../105-forms => 111-forms}/101-formik.md | 4 - .../105-forms => 111-forms}/102-final-form.md | 1 - .../105-forms => 111-forms}/readme.md | 0 .../103-react/content/112-suspense.md | 13 + .../105-portals.md => 113-portals.md} | 0 ...-boundaries.md => 114-error-boundaries.md} | 0 ...hitecture.md => 115-fiber-architecture.md} | 2 - .../100-react-native.md | 2 - .../104-mobile => 116-mobile}/readme.md | 0 content/roadmaps/103-react/meta.json | 9 +- content/roadmaps/103-react/resources.md | 7 - public/project/react.json | 8262 ++++++++++------- public/sitemap.xml | 2 +- 85 files changed, 4814 insertions(+), 3814 deletions(-) delete mode 100644 content/roadmaps/103-react/content/100-react-fundamental-topics/100-create-react-app.md delete mode 100644 content/roadmaps/103-react/content/100-react-fundamental-topics/108-basic-hooks/102-use-context.md delete mode 100644 content/roadmaps/103-react/content/100-react-fundamental-topics/readme.md create mode 100644 content/roadmaps/103-react/content/100-react-roadmap-note.md rename content/roadmaps/103-react/content/{100-react-fundamental-topics/100-cli-tools/101-vite.md => 101-cli-tools/100-vite.md} (100%) rename content/roadmaps/103-react/content/{100-react-fundamental-topics/100-cli-tools/100-create-react-app.md => 101-cli-tools/101-create-react-app.md} (100%) rename content/roadmaps/103-react/content/{100-react-fundamental-topics/100-cli-tools => 101-cli-tools}/readme.md (100%) delete mode 100644 content/roadmaps/103-react/content/101-react-advanced-topics/101-context.md delete mode 100644 content/roadmaps/103-react/content/101-react-advanced-topics/readme.md rename content/roadmaps/103-react/content/{100-react-fundamental-topics/102-components/101-class-components.md => 102-components/100-class-components.md} (100%) rename content/roadmaps/103-react/content/{100-react-fundamental-topics/102-components/100-functional-components.md => 102-components/101-functional-components.md} (100%) rename content/roadmaps/103-react/content/{100-react-fundamental-topics/101-jsx.md => 102-components/102-jsx.md} (98%) rename content/roadmaps/103-react/content/{100-react-fundamental-topics => 102-components}/103-props-vs-state.md (100%) rename content/roadmaps/103-react/content/{100-react-fundamental-topics => 102-components}/104-conditional-rendering.md (100%) rename content/roadmaps/103-react/content/{100-react-fundamental-topics/107-composition-vs-inheritance.md => 102-components/105-composition-vs-inheritance.md} (100%) rename content/roadmaps/103-react/content/{100-react-fundamental-topics => }/102-components/readme.md (100%) delete mode 100644 content/roadmaps/103-react/content/102-react-ecosystem/101-ssr/readme.md delete mode 100644 content/roadmaps/103-react/content/102-react-ecosystem/102-ssg/101-gatsby.md delete mode 100644 content/roadmaps/103-react/content/102-react-ecosystem/102-ssg/readme.md delete mode 100644 content/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/101-use-http.md delete mode 100644 content/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/105-unfetch.md delete mode 100644 content/roadmaps/103-react/content/102-react-ecosystem/107-state-management/101-redux/100-redux-toolkit.md delete mode 100644 content/roadmaps/103-react/content/102-react-ecosystem/readme.md rename content/roadmaps/103-react/content/{100-react-fundamental-topics/105-component-life-cycle.md => 103-rendering/100-component-life-cycle.md} (100%) rename content/roadmaps/103-react/content/{100-react-fundamental-topics/106-lists-and-keys.md => 103-rendering/101-lists-and-keys.md} (100%) rename content/roadmaps/103-react/content/{101-react-advanced-topics/103-render-props.md => 103-rendering/102-render-props.md} (100%) rename content/roadmaps/103-react/content/{101-react-advanced-topics/102-refs.md => 103-rendering/103-refs.md} (100%) rename content/roadmaps/103-react/content/{100-react-fundamental-topics/109-events.md => 103-rendering/104-events.md} (100%) rename content/roadmaps/103-react/content/{101-react-advanced-topics/104-high-order-components.md => 103-rendering/105-high-order-components.md} (100%) create mode 100644 content/roadmaps/103-react/content/103-rendering/readme.md rename content/roadmaps/103-react/content/{100-react-fundamental-topics/108-basic-hooks => 104-hooks/100-basic-hooks}/100-use-state.md (100%) rename content/roadmaps/103-react/content/{100-react-fundamental-topics/108-basic-hooks => 104-hooks/100-basic-hooks}/101-use-effect.md (100%) rename content/roadmaps/103-react/content/{100-react-fundamental-topics/108-basic-hooks => 104-hooks/100-basic-hooks}/readme.md (99%) rename content/roadmaps/103-react/content/{101-react-advanced-topics/100-hooks => 104-hooks}/101-writing-your-own-hooks.md (100%) rename content/roadmaps/103-react/content/{101-react-advanced-topics/100-hooks => 104-hooks}/102-common-hooks.md (100%) rename content/roadmaps/103-react/content/{101-react-advanced-topics/100-hooks => 104-hooks}/readme.md (56%) rename content/roadmaps/103-react/content/{102-react-ecosystem/100-routers => 105-routers}/100-react-router.md (100%) rename content/roadmaps/103-react/content/{102-react-ecosystem/100-routers => 105-routers}/101-reach-router.md (99%) rename content/roadmaps/103-react/content/{102-react-ecosystem/100-routers => 105-routers}/readme.md (100%) rename content/roadmaps/103-react/content/{102-react-ecosystem/107-state-management/100-context-state.md => 106-state-management/100-context.md} (100%) rename content/roadmaps/103-react/content/{102-react-ecosystem/107-state-management => 106-state-management}/101-zustand.md (99%) rename content/roadmaps/103-react/content/{102-react-ecosystem/107-state-management/101-redux/readme.md => 106-state-management/102-redux-and-redux-toolkit.md} (70%) rename content/roadmaps/103-react/content/{102-react-ecosystem/107-state-management/102-mobx.md => 106-state-management/103-mobx.md} (100%) create mode 100644 content/roadmaps/103-react/content/106-state-management/104-recoil.md rename content/roadmaps/103-react/content/{102-react-ecosystem/107-state-management => 106-state-management}/readme.md (100%) rename content/roadmaps/103-react/content/{102-react-ecosystem/108-styling/103-styled-components.md => 107-styling/100-styled-components.md} (100%) rename content/roadmaps/103-react/content/{102-react-ecosystem/108-styling/104-emotion.md => 107-styling/101-emotion.md} (100%) rename content/roadmaps/103-react/content/{102-react-ecosystem/108-styling => 107-styling}/102-mantine.md (100%) create mode 100644 content/roadmaps/103-react/content/107-styling/103-tailwind.md rename content/roadmaps/103-react/content/{102-react-ecosystem/108-styling/101-material-ui.md => 107-styling/104-material-ui.md} (100%) rename content/roadmaps/103-react/content/{102-react-ecosystem/108-styling/100-chakra-ui.md => 107-styling/105-chakra-ui.md} (100%) rename content/roadmaps/103-react/content/{102-react-ecosystem/108-styling => 107-styling}/readme.md (100%) rename content/roadmaps/103-react/content/{102-react-ecosystem/103-api-calls/102-apollo.md => 108-api-calls/100-apollo.md} (100%) rename content/roadmaps/103-react/content/{102-react-ecosystem/103-api-calls/103-relay-modern.md => 108-api-calls/101-relay.md} (97%) create mode 100644 content/roadmaps/103-react/content/108-api-calls/102-urql.md rename content/roadmaps/103-react/content/{102-react-ecosystem/103-api-calls/101-swr.md => 108-api-calls/103-swr.md} (99%) rename content/roadmaps/103-react/content/{102-react-ecosystem/103-api-calls/100-react-query.md => 108-api-calls/104-react-query.md} (99%) rename content/roadmaps/103-react/content/{102-react-ecosystem/103-api-calls/104-axios.md => 108-api-calls/105-axios.md} (100%) rename content/roadmaps/103-react/content/{102-react-ecosystem/103-api-calls => 108-api-calls}/106-superagent.md (100%) rename content/roadmaps/103-react/content/{102-react-ecosystem/103-api-calls => 108-api-calls}/readme.md (100%) rename content/roadmaps/103-react/content/{102-react-ecosystem/106-testing => 109-testing}/100-jest.md (100%) rename content/roadmaps/103-react/content/{102-react-ecosystem/106-testing/103-vitest.md => 109-testing/101-vitest.md} (100%) rename content/roadmaps/103-react/content/{102-react-ecosystem/106-testing/101-react-testing-library.md => 109-testing/102-react-testing-library.md} (100%) rename content/roadmaps/103-react/content/{102-react-ecosystem/106-testing/102-cypress.md => 109-testing/103-cypress.md} (100%) rename content/roadmaps/103-react/content/{102-react-ecosystem/106-testing => 109-testing}/104-playwright.md (100%) rename content/roadmaps/103-react/content/{102-react-ecosystem/106-testing => 109-testing}/readme.md (100%) rename content/roadmaps/103-react/content/{102-react-ecosystem/101-ssr => 110-frameworks}/100-remix.md (100%) rename content/roadmaps/103-react/content/{102-react-ecosystem/101-ssr/100-next-js.md => 110-frameworks/101-next-js.md} (100%) create mode 100644 content/roadmaps/103-react/content/110-frameworks/readme.md rename content/roadmaps/103-react/content/{102-react-ecosystem/105-forms => 111-forms}/100-react-hook-form.md (100%) rename content/roadmaps/103-react/content/{102-react-ecosystem/105-forms => 111-forms}/101-formik.md (99%) rename content/roadmaps/103-react/content/{102-react-ecosystem/105-forms => 111-forms}/102-final-form.md (99%) rename content/roadmaps/103-react/content/{102-react-ecosystem/105-forms => 111-forms}/readme.md (100%) create mode 100644 content/roadmaps/103-react/content/112-suspense.md rename content/roadmaps/103-react/content/{101-react-advanced-topics/105-portals.md => 113-portals.md} (100%) rename content/roadmaps/103-react/content/{101-react-advanced-topics/106-error-boundaries.md => 114-error-boundaries.md} (100%) rename content/roadmaps/103-react/content/{101-react-advanced-topics/107-fiber-architecture.md => 115-fiber-architecture.md} (99%) rename content/roadmaps/103-react/content/{102-react-ecosystem/104-mobile => 116-mobile}/100-react-native.md (99%) rename content/roadmaps/103-react/content/{102-react-ecosystem/104-mobile => 116-mobile}/readme.md (100%) delete mode 100644 content/roadmaps/103-react/resources.md diff --git a/content/roadmaps.json b/content/roadmaps.json index 95395de5b..e1ebd1eca 100644 --- a/content/roadmaps.json +++ b/content/roadmaps.json @@ -251,7 +251,6 @@ "isTextHeavy": false, "isCommunity": false, "featured": true, - "resourcesPath": "/roadmaps/103-react/resources.md", "jsonUrl": "/project/react.json", "versions": [ "latest", diff --git a/content/roadmaps/103-react/content-paths.json b/content/roadmaps/103-react/content-paths.json index 3a671f683..2227ad8e1 100644 --- a/content/roadmaps/103-react/content-paths.json +++ b/content/roadmaps/103-react/content-paths.json @@ -1,73 +1,70 @@ { "home": "/roadmaps/103-react/content/readme.md", - "react-advanced-topics": "/roadmaps/103-react/content/101-react-advanced-topics/readme.md", - "react-advanced-topics:hooks": "/roadmaps/103-react/content/101-react-advanced-topics/100-hooks/readme.md", - "react-advanced-topics:hooks:common-hooks": "/roadmaps/103-react/content/101-react-advanced-topics/100-hooks/102-common-hooks.md", - "react-advanced-topics:hooks:writing-your-own-hooks": "/roadmaps/103-react/content/101-react-advanced-topics/100-hooks/101-writing-your-own-hooks.md", - "react-advanced-topics:context": "/roadmaps/103-react/content/101-react-advanced-topics/101-context.md", - "react-advanced-topics:refs": "/roadmaps/103-react/content/101-react-advanced-topics/102-refs.md", - "react-advanced-topics:render-props": "/roadmaps/103-react/content/101-react-advanced-topics/103-render-props.md", - "react-advanced-topics:high-order-components": "/roadmaps/103-react/content/101-react-advanced-topics/104-high-order-components.md", - "react-advanced-topics:portals": "/roadmaps/103-react/content/101-react-advanced-topics/105-portals.md", - "react-advanced-topics:error-boundaries": "/roadmaps/103-react/content/101-react-advanced-topics/106-error-boundaries.md", - "react-advanced-topics:fiber-architecture": "/roadmaps/103-react/content/101-react-advanced-topics/107-fiber-architecture.md", - "react-fundamental-topics": "/roadmaps/103-react/content/100-react-fundamental-topics/readme.md", - "react-fundamental-topics:cli-tools": "/roadmaps/103-react/content/100-react-fundamental-topics/100-cli-tools/readme.md", - "react-fundamental-topics:cli-tools:create-react-app": "/roadmaps/103-react/content/100-react-fundamental-topics/100-cli-tools/100-create-react-app.md", - "react-fundamental-topics:cli-tools:vite": "/roadmaps/103-react/content/100-react-fundamental-topics/100-cli-tools/101-vite.md", - "react-fundamental-topics:create-react-app": "/roadmaps/103-react/content/100-react-fundamental-topics/100-create-react-app.md", - "react-fundamental-topics:jsx": "/roadmaps/103-react/content/100-react-fundamental-topics/101-jsx.md", - "react-fundamental-topics:components": "/roadmaps/103-react/content/100-react-fundamental-topics/102-components/readme.md", - "react-fundamental-topics:components:functional-components": "/roadmaps/103-react/content/100-react-fundamental-topics/102-components/100-functional-components.md", - "react-fundamental-topics:components:class-components": "/roadmaps/103-react/content/100-react-fundamental-topics/102-components/101-class-components.md", - "react-fundamental-topics:props-vs-state": "/roadmaps/103-react/content/100-react-fundamental-topics/103-props-vs-state.md", - "react-fundamental-topics:conditional-rendering": "/roadmaps/103-react/content/100-react-fundamental-topics/104-conditional-rendering.md", - "react-fundamental-topics:component-life-cycle": "/roadmaps/103-react/content/100-react-fundamental-topics/105-component-life-cycle.md", - "react-fundamental-topics:lists-and-keys": "/roadmaps/103-react/content/100-react-fundamental-topics/106-lists-and-keys.md", - "react-fundamental-topics:composition-vs-inheritance": "/roadmaps/103-react/content/100-react-fundamental-topics/107-composition-vs-inheritance.md", - "react-fundamental-topics:basic-hooks": "/roadmaps/103-react/content/100-react-fundamental-topics/108-basic-hooks/readme.md", - "react-fundamental-topics:basic-hooks:use-state": "/roadmaps/103-react/content/100-react-fundamental-topics/108-basic-hooks/100-use-state.md", - "react-fundamental-topics:basic-hooks:use-effect": "/roadmaps/103-react/content/100-react-fundamental-topics/108-basic-hooks/101-use-effect.md", - "react-fundamental-topics:events": "/roadmaps/103-react/content/100-react-fundamental-topics/109-events.md", - "react-ecosystem": "/roadmaps/103-react/content/102-react-ecosystem/readme.md", - "react-ecosystem:routers": "/roadmaps/103-react/content/102-react-ecosystem/100-routers/readme.md", - "react-ecosystem:routers:react-router": "/roadmaps/103-react/content/102-react-ecosystem/100-routers/100-react-router.md", - "react-ecosystem:routers:reach-router": "/roadmaps/103-react/content/102-react-ecosystem/100-routers/101-reach-router.md", - "react-ecosystem:ssr": "/roadmaps/103-react/content/102-react-ecosystem/101-ssr/readme.md", - "react-ecosystem:ssr:next-js": "/roadmaps/103-react/content/102-react-ecosystem/101-ssr/100-next-js.md", - "react-ecosystem:ssr:remix": "/roadmaps/103-react/content/102-react-ecosystem/101-ssr/100-remix.md", - "react-ecosystem:ssg": "/roadmaps/103-react/content/102-react-ecosystem/102-ssg/readme.md", - "react-ecosystem:ssg:gatsby": "/roadmaps/103-react/content/102-react-ecosystem/102-ssg/101-gatsby.md", - "react-ecosystem:api-calls": "/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/readme.md", - "react-ecosystem:api-calls:react-query": "/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/100-react-query.md", - "react-ecosystem:api-calls:swr": "/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/101-swr.md", - "react-ecosystem:api-calls:apollo": "/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/102-apollo.md", - "react-ecosystem:api-calls:relay-modern": "/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/103-relay-modern.md", - "react-ecosystem:api-calls:axios": "/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/104-axios.md", - "react-ecosystem:api-calls:unfetch": "/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/105-unfetch.md", - "react-ecosystem:api-calls:superagent": "/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/106-superagent.md", - "react-ecosystem:mobile": "/roadmaps/103-react/content/102-react-ecosystem/104-mobile/readme.md", - "react-ecosystem:mobile:react-native": "/roadmaps/103-react/content/102-react-ecosystem/104-mobile/100-react-native.md", - "react-ecosystem:forms": "/roadmaps/103-react/content/102-react-ecosystem/105-forms/readme.md", - "react-ecosystem:forms:react-hook-form": "/roadmaps/103-react/content/102-react-ecosystem/105-forms/100-react-hook-form.md", - "react-ecosystem:forms:formik": "/roadmaps/103-react/content/102-react-ecosystem/105-forms/101-formik.md", - "react-ecosystem:forms:final-form": "/roadmaps/103-react/content/102-react-ecosystem/105-forms/102-final-form.md", - "react-ecosystem:testing": "/roadmaps/103-react/content/102-react-ecosystem/106-testing/readme.md", - "react-ecosystem:testing:jest": "/roadmaps/103-react/content/102-react-ecosystem/106-testing/100-jest.md", - "react-ecosystem:testing:vitest": "/roadmaps/103-react/content/102-react-ecosystem/106-testing/103-vitest.md", - "react-ecosystem:testing:playwright": "/roadmaps/103-react/content/102-react-ecosystem/106-testing/104-playwright.md", - "react-ecosystem:testing:react-testing-library": "/roadmaps/103-react/content/102-react-ecosystem/106-testing/101-react-testing-library.md", - "react-ecosystem:testing:cypress": "/roadmaps/103-react/content/102-react-ecosystem/106-testing/102-cypress.md", - "react-ecosystem:state-management": "/roadmaps/103-react/content/102-react-ecosystem/107-state-management/readme.md", - "react-ecosystem:state-management:context-state": "/roadmaps/103-react/content/102-react-ecosystem/107-state-management/100-context-state.md", - "react-ecosystem:state-management:zustand": "/roadmaps/103-react/content/102-react-ecosystem/107-state-management/101-zustand.md", - "react-ecosystem:state-management:redux": "/roadmaps/103-react/content/102-react-ecosystem/107-state-management/101-redux/readme.md", - "react-ecosystem:state-management:redux:redux-toolkit": "/roadmaps/103-react/content/102-react-ecosystem/107-state-management/101-redux/100-redux-toolkit.md", - "react-ecosystem:state-management:mobx": "/roadmaps/103-react/content/102-react-ecosystem/107-state-management/102-mobx.md", - "react-ecosystem:styling": "/roadmaps/103-react/content/102-react-ecosystem/108-styling/readme.md", - "react-ecosystem:styling:chakra-ui": "/roadmaps/103-react/content/102-react-ecosystem/108-styling/100-chakra-ui.md", - "react-ecosystem:styling:material-ui": "/roadmaps/103-react/content/102-react-ecosystem/108-styling/101-material-ui.md", - "react-ecosystem:styling:mantine": "/roadmaps/103-react/content/102-react-ecosystem/108-styling/102-mantine.md", - "react-ecosystem:styling:styled-components": "/roadmaps/103-react/content/102-react-ecosystem/108-styling/103-styled-components.md", - "react-ecosystem:styling:emotion": "/roadmaps/103-react/content/102-react-ecosystem/108-styling/104-emotion.md" -} + "cli-tools": "/roadmaps/103-react/content/101-cli-tools/readme.md", + "cli-tools:create-react-app": "/roadmaps/103-react/content/101-cli-tools/101-create-react-app.md", + "cli-tools:vite": "/roadmaps/103-react/content/101-cli-tools/100-vite.md", + "components": "/roadmaps/103-react/content/102-components/readme.md", + "components:functional-components": "/roadmaps/103-react/content/102-components/101-functional-components.md", + "components:class-components": "/roadmaps/103-react/content/102-components/100-class-components.md", + "components:jsx": "/roadmaps/103-react/content/102-components/102-jsx.md", + "components:props-vs-state": "/roadmaps/103-react/content/102-components/103-props-vs-state.md", + "components:conditional-rendering": "/roadmaps/103-react/content/102-components/104-conditional-rendering.md", + "components:composition-vs-inheritance": "/roadmaps/103-react/content/102-components/105-composition-vs-inheritance.md", + "rendering": "/roadmaps/103-react/content/103-rendering/readme.md", + "rendering:lists-and-keys": "/roadmaps/103-react/content/103-rendering/101-lists-and-keys.md", + "rendering:component-life-cycle": "/roadmaps/103-react/content/103-rendering/100-component-life-cycle.md", + "rendering:render-props": "/roadmaps/103-react/content/103-rendering/102-render-props.md", + "rendering:refs": "/roadmaps/103-react/content/103-rendering/103-refs.md", + "rendering:events": "/roadmaps/103-react/content/103-rendering/104-events.md", + "rendering:high-order-components": "/roadmaps/103-react/content/103-rendering/105-high-order-components.md", + "hooks": "/roadmaps/103-react/content/104-hooks/readme.md", + "hooks:basic-hooks": "/roadmaps/103-react/content/104-hooks/100-basic-hooks/readme.md", + "hooks:basic-hooks:use-state": "/roadmaps/103-react/content/104-hooks/100-basic-hooks/100-use-state.md", + "hooks:basic-hooks:use-effect": "/roadmaps/103-react/content/104-hooks/100-basic-hooks/101-use-effect.md", + "hooks:writing-your-own-hooks": "/roadmaps/103-react/content/104-hooks/101-writing-your-own-hooks.md", + "hooks:common-hooks": "/roadmaps/103-react/content/104-hooks/102-common-hooks.md", + "routers": "/roadmaps/103-react/content/105-routers/readme.md", + "routers:react-router": "/roadmaps/103-react/content/105-routers/100-react-router.md", + "routers:reach-router": "/roadmaps/103-react/content/105-routers/101-reach-router.md", + "state-management": "/roadmaps/103-react/content/106-state-management/readme.md", + "state-management:context": "/roadmaps/103-react/content/106-state-management/100-context.md", + "state-management:zustand": "/roadmaps/103-react/content/106-state-management/101-zustand.md", + "state-management:redux-and-redux-toolkit": "/roadmaps/103-react/content/106-state-management/102-redux-and-redux-toolkit.md", + "state-management:mobx": "/roadmaps/103-react/content/106-state-management/103-mobx.md", + "state-management:recoil": "/roadmaps/103-react/content/106-state-management/104-recoil.md", + "styling": "/roadmaps/103-react/content/107-styling/readme.md", + "styling:chakra-ui": "/roadmaps/103-react/content/107-styling/105-chakra-ui.md", + "styling:material-ui": "/roadmaps/103-react/content/107-styling/104-material-ui.md", + "styling:mantine": "/roadmaps/103-react/content/107-styling/102-mantine.md", + "styling:tailwind": "/roadmaps/103-react/content/107-styling/103-tailwind.md", + "styling:styled-components": "/roadmaps/103-react/content/107-styling/100-styled-components.md", + "styling:emotion": "/roadmaps/103-react/content/107-styling/101-emotion.md", + "api-calls": "/roadmaps/103-react/content/108-api-calls/readme.md", + "api-calls:apollo": "/roadmaps/103-react/content/108-api-calls/100-apollo.md", + "api-calls:relay": "/roadmaps/103-react/content/108-api-calls/101-relay.md", + "api-calls:urql": "/roadmaps/103-react/content/108-api-calls/102-urql.md", + "api-calls:swr": "/roadmaps/103-react/content/108-api-calls/103-swr.md", + "api-calls:axios": "/roadmaps/103-react/content/108-api-calls/105-axios.md", + "api-calls:superagent": "/roadmaps/103-react/content/108-api-calls/106-superagent.md", + "api-calls:react-query": "/roadmaps/103-react/content/108-api-calls/104-react-query.md", + "testing": "/roadmaps/103-react/content/109-testing/readme.md", + "testing:jest": "/roadmaps/103-react/content/109-testing/100-jest.md", + "testing:vitest": "/roadmaps/103-react/content/109-testing/101-vitest.md", + "testing:react-testing-library": "/roadmaps/103-react/content/109-testing/102-react-testing-library.md", + "testing:cypress": "/roadmaps/103-react/content/109-testing/103-cypress.md", + "testing:playwright": "/roadmaps/103-react/content/109-testing/104-playwright.md", + "frameworks": "/roadmaps/103-react/content/110-frameworks/readme.md", + "frameworks:next-js": "/roadmaps/103-react/content/110-frameworks/101-next-js.md", + "frameworks:remix": "/roadmaps/103-react/content/110-frameworks/100-remix.md", + "forms": "/roadmaps/103-react/content/111-forms/readme.md", + "forms:react-hook-form": "/roadmaps/103-react/content/111-forms/100-react-hook-form.md", + "forms:formik": "/roadmaps/103-react/content/111-forms/101-formik.md", + "forms:final-form": "/roadmaps/103-react/content/111-forms/102-final-form.md", + "suspense": "/roadmaps/103-react/content/112-suspense.md", + "portals": "/roadmaps/103-react/content/113-portals.md", + "error-boundaries": "/roadmaps/103-react/content/114-error-boundaries.md", + "fiber-architecture": "/roadmaps/103-react/content/115-fiber-architecture.md", + "mobile": "/roadmaps/103-react/content/116-mobile/readme.md", + "mobile:react-native": "/roadmaps/103-react/content/116-mobile/100-react-native.md", + "react-roadmap-note": "/roadmaps/103-react/content/100-react-roadmap-note.md" +} \ No newline at end of file diff --git a/content/roadmaps/103-react/content/100-react-fundamental-topics/100-create-react-app.md b/content/roadmaps/103-react/content/100-react-fundamental-topics/100-create-react-app.md deleted file mode 100644 index c4e56125c..000000000 --- a/content/roadmaps/103-react/content/100-react-fundamental-topics/100-create-react-app.md +++ /dev/null @@ -1,9 +0,0 @@ -# Create React App - -Create React App is the CLI based tool and is the best way to start building a new single-page application in React. - -It sets up your development environment so that you can use the latest JavaScript features, provides a nice developer experience, and optimizes your app for production. You’ll need to have Node >= 14.0.0 and npm >= 5.6 on your machine. - -Free Content -Official Website -Advanced: Custom Setup with Webpack diff --git a/content/roadmaps/103-react/content/100-react-fundamental-topics/108-basic-hooks/102-use-context.md b/content/roadmaps/103-react/content/100-react-fundamental-topics/108-basic-hooks/102-use-context.md deleted file mode 100644 index 2fe90d27d..000000000 --- a/content/roadmaps/103-react/content/100-react-fundamental-topics/108-basic-hooks/102-use-context.md +++ /dev/null @@ -1,8 +0,0 @@ -# useContext Hook - -`useContext` hook is used to read and subscribe to context from your component. Context allows a parent component to pass data down the entire component tree below it. - -Free Content -Using the Context Hook -Learn useContext in 13 Minutes -How to useContext in React diff --git a/content/roadmaps/103-react/content/100-react-fundamental-topics/readme.md b/content/roadmaps/103-react/content/100-react-fundamental-topics/readme.md deleted file mode 100644 index e2ab25d31..000000000 --- a/content/roadmaps/103-react/content/100-react-fundamental-topics/readme.md +++ /dev/null @@ -1,7 +0,0 @@ -# React - -React is a JavaScript library for building user interfaces. It is an open-source, component-based front end library responsible only for the view layer of the application. - -Free Content -Official Website -Official Documentation diff --git a/content/roadmaps/103-react/content/100-react-roadmap-note.md b/content/roadmaps/103-react/content/100-react-roadmap-note.md new file mode 100644 index 000000000..aee1b039e --- /dev/null +++ b/content/roadmaps/103-react/content/100-react-roadmap-note.md @@ -0,0 +1,3 @@ +# Note + +This roadmap specifically covers **React and the ecosystem** around it. You will notice that it is missing things like version control, package managers, build tools, linters, task runners and other things that are not directly related to React; this is intentional. Have a look at the [Frontend Roadmap](/roadmaps/frontend) for a more comprehensive overview of the frontend ecosystem. diff --git a/content/roadmaps/103-react/content/100-react-fundamental-topics/100-cli-tools/101-vite.md b/content/roadmaps/103-react/content/101-cli-tools/100-vite.md similarity index 100% rename from content/roadmaps/103-react/content/100-react-fundamental-topics/100-cli-tools/101-vite.md rename to content/roadmaps/103-react/content/101-cli-tools/100-vite.md diff --git a/content/roadmaps/103-react/content/100-react-fundamental-topics/100-cli-tools/100-create-react-app.md b/content/roadmaps/103-react/content/101-cli-tools/101-create-react-app.md similarity index 100% rename from content/roadmaps/103-react/content/100-react-fundamental-topics/100-cli-tools/100-create-react-app.md rename to content/roadmaps/103-react/content/101-cli-tools/101-create-react-app.md diff --git a/content/roadmaps/103-react/content/100-react-fundamental-topics/100-cli-tools/readme.md b/content/roadmaps/103-react/content/101-cli-tools/readme.md similarity index 100% rename from content/roadmaps/103-react/content/100-react-fundamental-topics/100-cli-tools/readme.md rename to content/roadmaps/103-react/content/101-cli-tools/readme.md diff --git a/content/roadmaps/103-react/content/101-react-advanced-topics/101-context.md b/content/roadmaps/103-react/content/101-react-advanced-topics/101-context.md deleted file mode 100644 index 1e3a6f2ae..000000000 --- a/content/roadmaps/103-react/content/101-react-advanced-topics/101-context.md +++ /dev/null @@ -1,9 +0,0 @@ -# Context - -Context provides a way to pass data through the component tree without having to pass props down manually at every level. - -In a typical React application, data is passed top-down (parent to child) via props, but such usage can be cumbersome for certain types of props (e.g. locale preference, UI theme) that are required by many components within an application. Context provides a way to share values like these between components without having to explicitly pass a prop through every level of the tree. - -Free Content -Official React Context Docs -React Context: Why, How, and When diff --git a/content/roadmaps/103-react/content/101-react-advanced-topics/readme.md b/content/roadmaps/103-react/content/101-react-advanced-topics/readme.md deleted file mode 100644 index 75a7c3f72..000000000 --- a/content/roadmaps/103-react/content/101-react-advanced-topics/readme.md +++ /dev/null @@ -1,3 +0,0 @@ -# Advanced Topics - -Now that you have covered the basics, next we have the advanced topics such as advanced hook topics, context, refs, portals, error boundaries and more. diff --git a/content/roadmaps/103-react/content/100-react-fundamental-topics/102-components/101-class-components.md b/content/roadmaps/103-react/content/102-components/100-class-components.md similarity index 100% rename from content/roadmaps/103-react/content/100-react-fundamental-topics/102-components/101-class-components.md rename to content/roadmaps/103-react/content/102-components/100-class-components.md diff --git a/content/roadmaps/103-react/content/100-react-fundamental-topics/102-components/100-functional-components.md b/content/roadmaps/103-react/content/102-components/101-functional-components.md similarity index 100% rename from content/roadmaps/103-react/content/100-react-fundamental-topics/102-components/100-functional-components.md rename to content/roadmaps/103-react/content/102-components/101-functional-components.md diff --git a/content/roadmaps/103-react/content/100-react-fundamental-topics/101-jsx.md b/content/roadmaps/103-react/content/102-components/102-jsx.md similarity index 98% rename from content/roadmaps/103-react/content/100-react-fundamental-topics/101-jsx.md rename to content/roadmaps/103-react/content/102-components/102-jsx.md index e14ec7e5b..3002078f0 100644 --- a/content/roadmaps/103-react/content/100-react-fundamental-topics/101-jsx.md +++ b/content/roadmaps/103-react/content/102-components/102-jsx.md @@ -5,4 +5,4 @@ JSX stands for JavaScript XML. It allows writing HTML in JavaScript and converts Free Content Introduction to JSX JSX in React – Explained with Examples -JSX in React on w3school \ No newline at end of file +JSX in React on w3school diff --git a/content/roadmaps/103-react/content/100-react-fundamental-topics/103-props-vs-state.md b/content/roadmaps/103-react/content/102-components/103-props-vs-state.md similarity index 100% rename from content/roadmaps/103-react/content/100-react-fundamental-topics/103-props-vs-state.md rename to content/roadmaps/103-react/content/102-components/103-props-vs-state.md diff --git a/content/roadmaps/103-react/content/100-react-fundamental-topics/104-conditional-rendering.md b/content/roadmaps/103-react/content/102-components/104-conditional-rendering.md similarity index 100% rename from content/roadmaps/103-react/content/100-react-fundamental-topics/104-conditional-rendering.md rename to content/roadmaps/103-react/content/102-components/104-conditional-rendering.md diff --git a/content/roadmaps/103-react/content/100-react-fundamental-topics/107-composition-vs-inheritance.md b/content/roadmaps/103-react/content/102-components/105-composition-vs-inheritance.md similarity index 100% rename from content/roadmaps/103-react/content/100-react-fundamental-topics/107-composition-vs-inheritance.md rename to content/roadmaps/103-react/content/102-components/105-composition-vs-inheritance.md diff --git a/content/roadmaps/103-react/content/100-react-fundamental-topics/102-components/readme.md b/content/roadmaps/103-react/content/102-components/readme.md similarity index 100% rename from content/roadmaps/103-react/content/100-react-fundamental-topics/102-components/readme.md rename to content/roadmaps/103-react/content/102-components/readme.md diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/101-ssr/readme.md b/content/roadmaps/103-react/content/102-react-ecosystem/101-ssr/readme.md deleted file mode 100644 index fdb6257e7..000000000 --- a/content/roadmaps/103-react/content/102-react-ecosystem/101-ssr/readme.md +++ /dev/null @@ -1,11 +0,0 @@ -# Server-side rendering - -Server-side rendering refers to the process that the service side completes the HTML structure splicing of the page, sends it to the browser, and then binds the status and events for it to become a fully interactive page. - -Free Content - -what is server side rendering -When should I Server-Side Render? -Server-Side Rendering (SSR) -what is server side rendering? -What is server-side rendering for web development? diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/102-ssg/101-gatsby.md b/content/roadmaps/103-react/content/102-react-ecosystem/102-ssg/101-gatsby.md deleted file mode 100644 index 229c9a6ed..000000000 --- a/content/roadmaps/103-react/content/102-react-ecosystem/102-ssg/101-gatsby.md +++ /dev/null @@ -1,8 +0,0 @@ -# Gatsby - -Gatsby is a React-based open source framework with performance, scalability and security built-in. - -Free Resources -Gatsby Website -Gatsby Docs -Gatsby Tutorial diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/102-ssg/readme.md b/content/roadmaps/103-react/content/102-react-ecosystem/102-ssg/readme.md deleted file mode 100644 index 5493f99e9..000000000 --- a/content/roadmaps/103-react/content/102-react-ecosystem/102-ssg/readme.md +++ /dev/null @@ -1,9 +0,0 @@ -# Static Site Generators - -A static site generator is a tool that generates a full static HTML website based on raw data and a set of templates. Essentially, a static site generator automates the task of coding individual HTML pages and gets those pages ready to serve to users ahead of time. Because these HTML pages are pre-built, they can load very quickly in users' browsers. - -Free Content -What is a static site generator? -Next.js SSG -Gatsby SSG -SSG — An 11ty, Vite And JAM Sandwich diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/101-use-http.md b/content/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/101-use-http.md deleted file mode 100644 index 50049e6df..000000000 --- a/content/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/101-use-http.md +++ /dev/null @@ -1,9 +0,0 @@ -# use-http - -React hook for making isomorphic http requests. - -Free Content -Official Website: use-http -ava / use-http - - diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/105-unfetch.md b/content/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/105-unfetch.md deleted file mode 100644 index 0279e6a10..000000000 --- a/content/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/105-unfetch.md +++ /dev/null @@ -1,6 +0,0 @@ -# Unfetch - -Unfetch is the bare minimum 500b [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) polyfill. - -Free Content -Official GitHub Repository diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/107-state-management/101-redux/100-redux-toolkit.md b/content/roadmaps/103-react/content/102-react-ecosystem/107-state-management/101-redux/100-redux-toolkit.md deleted file mode 100644 index cf547dcd6..000000000 --- a/content/roadmaps/103-react/content/102-react-ecosystem/107-state-management/101-redux/100-redux-toolkit.md +++ /dev/null @@ -1,8 +0,0 @@ -# Redux Toolkit - -Redux Toolkit (RTK) is a library for managing state in JavaScript applications. It is an opinionated set of tools and utilities for building Redux applications, and it is designed to make it easier and faster to build Redux applications. - -RTK is often used as an alternative to writing Redux applications from scratch, as it provides a set of conventions and utilities that can make it easier and faster to build Redux applications. - -Free Content -Redux Toolkit - ReduxJS diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/readme.md b/content/roadmaps/103-react/content/102-react-ecosystem/readme.md deleted file mode 100644 index 2e4f657f0..000000000 --- a/content/roadmaps/103-react/content/102-react-ecosystem/readme.md +++ /dev/null @@ -1,8 +0,0 @@ -# Ecosystem - -Thanks to its popularity, React has been enriched by a vast ecosystem of plugins and tools. A (long) list is available here: [awesome-react](https://github.com/enaqx/awesome-react). - -Free Content -Awesome React -Awesome React Components -Popular React Libraries diff --git a/content/roadmaps/103-react/content/100-react-fundamental-topics/105-component-life-cycle.md b/content/roadmaps/103-react/content/103-rendering/100-component-life-cycle.md similarity index 100% rename from content/roadmaps/103-react/content/100-react-fundamental-topics/105-component-life-cycle.md rename to content/roadmaps/103-react/content/103-rendering/100-component-life-cycle.md diff --git a/content/roadmaps/103-react/content/100-react-fundamental-topics/106-lists-and-keys.md b/content/roadmaps/103-react/content/103-rendering/101-lists-and-keys.md similarity index 100% rename from content/roadmaps/103-react/content/100-react-fundamental-topics/106-lists-and-keys.md rename to content/roadmaps/103-react/content/103-rendering/101-lists-and-keys.md diff --git a/content/roadmaps/103-react/content/101-react-advanced-topics/103-render-props.md b/content/roadmaps/103-react/content/103-rendering/102-render-props.md similarity index 100% rename from content/roadmaps/103-react/content/101-react-advanced-topics/103-render-props.md rename to content/roadmaps/103-react/content/103-rendering/102-render-props.md diff --git a/content/roadmaps/103-react/content/101-react-advanced-topics/102-refs.md b/content/roadmaps/103-react/content/103-rendering/103-refs.md similarity index 100% rename from content/roadmaps/103-react/content/101-react-advanced-topics/102-refs.md rename to content/roadmaps/103-react/content/103-rendering/103-refs.md diff --git a/content/roadmaps/103-react/content/100-react-fundamental-topics/109-events.md b/content/roadmaps/103-react/content/103-rendering/104-events.md similarity index 100% rename from content/roadmaps/103-react/content/100-react-fundamental-topics/109-events.md rename to content/roadmaps/103-react/content/103-rendering/104-events.md diff --git a/content/roadmaps/103-react/content/101-react-advanced-topics/104-high-order-components.md b/content/roadmaps/103-react/content/103-rendering/105-high-order-components.md similarity index 100% rename from content/roadmaps/103-react/content/101-react-advanced-topics/104-high-order-components.md rename to content/roadmaps/103-react/content/103-rendering/105-high-order-components.md diff --git a/content/roadmaps/103-react/content/103-rendering/readme.md b/content/roadmaps/103-react/content/103-rendering/readme.md new file mode 100644 index 000000000..b67191527 --- /dev/null +++ b/content/roadmaps/103-react/content/103-rendering/readme.md @@ -0,0 +1,16 @@ +# Rendering + +React follows a declarative approach to rendering components, which means that developers specify what a component should look like, and React takes care of rendering the component to the screen. This is in contrast to an imperative approach, where developers would write code to manually manipulate the DOM (Document Object Model) to update the UI. + +The virtual DOM (VDOM) is an important aspect of how React works. It is a lightweight in-memory representation of the DOM (Document Object Model), and it is used to optimize the rendering of components in a React application. + +* Components are written as JavaScript classes or functions that define a render method. The render method returns a description of what the component should look like, using JSX syntax. +* When a component is rendered, React creates a virtual DOM (VDOM) representation of the component. The VDOM is a lightweight in-memory representation of the DOM, and it is used to optimize the rendering of components. +* React compares the VDOM representation of the component with the previous VDOM representation (if it exists). If there are differences between the two VDOMs, React calculates the minimum number of DOM updates needed to bring the actual DOM into line with the new VDOM. +* React updates the actual DOM with the minimum number of DOM updates needed to reflect the changes in the VDOM. + +This process is known as reconciliation, and it is an important aspect of how React works. By using a declarative approach and a VDOM, React is able to optimize the rendering of components and improve the performance of web applications. + +Free Content +React.js under the Hood + diff --git a/content/roadmaps/103-react/content/100-react-fundamental-topics/108-basic-hooks/100-use-state.md b/content/roadmaps/103-react/content/104-hooks/100-basic-hooks/100-use-state.md similarity index 100% rename from content/roadmaps/103-react/content/100-react-fundamental-topics/108-basic-hooks/100-use-state.md rename to content/roadmaps/103-react/content/104-hooks/100-basic-hooks/100-use-state.md diff --git a/content/roadmaps/103-react/content/100-react-fundamental-topics/108-basic-hooks/101-use-effect.md b/content/roadmaps/103-react/content/104-hooks/100-basic-hooks/101-use-effect.md similarity index 100% rename from content/roadmaps/103-react/content/100-react-fundamental-topics/108-basic-hooks/101-use-effect.md rename to content/roadmaps/103-react/content/104-hooks/100-basic-hooks/101-use-effect.md diff --git a/content/roadmaps/103-react/content/100-react-fundamental-topics/108-basic-hooks/readme.md b/content/roadmaps/103-react/content/104-hooks/100-basic-hooks/readme.md similarity index 99% rename from content/roadmaps/103-react/content/100-react-fundamental-topics/108-basic-hooks/readme.md rename to content/roadmaps/103-react/content/104-hooks/100-basic-hooks/readme.md index 248fda045..5f702b4fb 100644 --- a/content/roadmaps/103-react/content/100-react-fundamental-topics/108-basic-hooks/readme.md +++ b/content/roadmaps/103-react/content/104-hooks/100-basic-hooks/readme.md @@ -1,7 +1,6 @@ # Hooks Hooks were introduced in React 16.8 and they let us use React's features-like managing your component's state and or performing an after effect when certain changes occur in state(s) without writing a class. - Free Content Introduction to Hooks diff --git a/content/roadmaps/103-react/content/101-react-advanced-topics/100-hooks/101-writing-your-own-hooks.md b/content/roadmaps/103-react/content/104-hooks/101-writing-your-own-hooks.md similarity index 100% rename from content/roadmaps/103-react/content/101-react-advanced-topics/100-hooks/101-writing-your-own-hooks.md rename to content/roadmaps/103-react/content/104-hooks/101-writing-your-own-hooks.md diff --git a/content/roadmaps/103-react/content/101-react-advanced-topics/100-hooks/102-common-hooks.md b/content/roadmaps/103-react/content/104-hooks/102-common-hooks.md similarity index 100% rename from content/roadmaps/103-react/content/101-react-advanced-topics/100-hooks/102-common-hooks.md rename to content/roadmaps/103-react/content/104-hooks/102-common-hooks.md diff --git a/content/roadmaps/103-react/content/101-react-advanced-topics/100-hooks/readme.md b/content/roadmaps/103-react/content/104-hooks/readme.md similarity index 56% rename from content/roadmaps/103-react/content/101-react-advanced-topics/100-hooks/readme.md rename to content/roadmaps/103-react/content/104-hooks/readme.md index 7cbd43651..5f702b4fb 100644 --- a/content/roadmaps/103-react/content/101-react-advanced-topics/100-hooks/readme.md +++ b/content/roadmaps/103-react/content/104-hooks/readme.md @@ -1,8 +1,7 @@ -# React Hooks +# Hooks -Hooks were introduced in React 16.8 and they let us use state and other React features without writing a class +Hooks were introduced in React 16.8 and they let us use React's features-like managing your component's state and or performing an after effect when certain changes occur in state(s) without writing a class. Free Content Introduction to Hooks Hooks Reference -Hooks by Example diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/100-routers/100-react-router.md b/content/roadmaps/103-react/content/105-routers/100-react-router.md similarity index 100% rename from content/roadmaps/103-react/content/102-react-ecosystem/100-routers/100-react-router.md rename to content/roadmaps/103-react/content/105-routers/100-react-router.md diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/100-routers/101-reach-router.md b/content/roadmaps/103-react/content/105-routers/101-reach-router.md similarity index 99% rename from content/roadmaps/103-react/content/102-react-ecosystem/100-routers/101-reach-router.md rename to content/roadmaps/103-react/content/105-routers/101-reach-router.md index 3e7fd34c4..14285394e 100644 --- a/content/roadmaps/103-react/content/102-react-ecosystem/100-routers/101-reach-router.md +++ b/content/roadmaps/103-react/content/105-routers/101-reach-router.md @@ -5,4 +5,3 @@ Reach Router is a small, simple router for React that borrows from React Router, Free Content Reach Router — Official Website Getting Started Guide - diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/100-routers/readme.md b/content/roadmaps/103-react/content/105-routers/readme.md similarity index 100% rename from content/roadmaps/103-react/content/102-react-ecosystem/100-routers/readme.md rename to content/roadmaps/103-react/content/105-routers/readme.md diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/107-state-management/100-context-state.md b/content/roadmaps/103-react/content/106-state-management/100-context.md similarity index 100% rename from content/roadmaps/103-react/content/102-react-ecosystem/107-state-management/100-context-state.md rename to content/roadmaps/103-react/content/106-state-management/100-context.md diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/107-state-management/101-zustand.md b/content/roadmaps/103-react/content/106-state-management/101-zustand.md similarity index 99% rename from content/roadmaps/103-react/content/102-react-ecosystem/107-state-management/101-zustand.md rename to content/roadmaps/103-react/content/106-state-management/101-zustand.md index 80788b2d0..f0348428f 100644 --- a/content/roadmaps/103-react/content/102-react-ecosystem/107-state-management/101-zustand.md +++ b/content/roadmaps/103-react/content/106-state-management/101-zustand.md @@ -6,4 +6,3 @@ Zustand is often used as an alternative to other state management libraries, suc Free Content Zustand - Official Website - diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/107-state-management/101-redux/readme.md b/content/roadmaps/103-react/content/106-state-management/102-redux-and-redux-toolkit.md similarity index 70% rename from content/roadmaps/103-react/content/102-react-ecosystem/107-state-management/101-redux/readme.md rename to content/roadmaps/103-react/content/106-state-management/102-redux-and-redux-toolkit.md index 45bc23254..d4b25487d 100644 --- a/content/roadmaps/103-react/content/102-react-ecosystem/107-state-management/101-redux/readme.md +++ b/content/roadmaps/103-react/content/106-state-management/102-redux-and-redux-toolkit.md @@ -2,8 +2,12 @@ Redux is a predictable state container for JavaScript apps. It helps you write applications that behave consistently, run in different environments (client, server, and native), and are easy to test. On top of that, it provides a great developer experience, such as [live code editing combined with a time traveling debugger](https://github.com/reduxjs/redux-devtools). -Free Content +Redux Toolkit (RTK) is a library for managing state in JavaScript applications. It is an opinionated set of tools and utilities for building Redux applications, and it is designed to make it easier and faster to build Redux applications. + +RTK is often used as an alternative to writing Redux applications from scratch, as it provides a set of conventions and utilities that can make it easier and faster to build Redux applications. +Free Content +Redux Toolkit - ReduxJS Official Website Official Getting Started to Redux Redux Toolkit Official Website diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/107-state-management/102-mobx.md b/content/roadmaps/103-react/content/106-state-management/103-mobx.md similarity index 100% rename from content/roadmaps/103-react/content/102-react-ecosystem/107-state-management/102-mobx.md rename to content/roadmaps/103-react/content/106-state-management/103-mobx.md diff --git a/content/roadmaps/103-react/content/106-state-management/104-recoil.md b/content/roadmaps/103-react/content/106-state-management/104-recoil.md new file mode 100644 index 000000000..180199a51 --- /dev/null +++ b/content/roadmaps/103-react/content/106-state-management/104-recoil.md @@ -0,0 +1,17 @@ +# Recoil + +Recoil is a library for managing state in React applications. + +Recoil is designed to be easy to use and efficient, with a focus on improving the performance and scalability of large, complex React applications. It is based on the concept of atoms and selectors, which are used to manage the state of a component. Atoms represent the state of a component, and selectors are used to derive new state from atoms. + +Recoil provides a set of utilities and APIs for managing state, including: + +- atom: A utility for creating atoms, which represent the state of a component. +- selector: A utility for creating selectors, which are used to derive new state from atoms. +- useRecoilValue: A hook for accessing the value of an atom or selector in a component. +- useSetRecoilState: A hook for updating the value of an atom in a component. + +Recoil is often used as an alternative to other state management libraries, such as Redux and MobX, because of its simplicity and performance. It is particularly well-suited for large, complex React applications where the overhead of other state management libraries may be too high. + +Free Content +Recoil - Official Website diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/107-state-management/readme.md b/content/roadmaps/103-react/content/106-state-management/readme.md similarity index 100% rename from content/roadmaps/103-react/content/102-react-ecosystem/107-state-management/readme.md rename to content/roadmaps/103-react/content/106-state-management/readme.md diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/108-styling/103-styled-components.md b/content/roadmaps/103-react/content/107-styling/100-styled-components.md similarity index 100% rename from content/roadmaps/103-react/content/102-react-ecosystem/108-styling/103-styled-components.md rename to content/roadmaps/103-react/content/107-styling/100-styled-components.md diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/108-styling/104-emotion.md b/content/roadmaps/103-react/content/107-styling/101-emotion.md similarity index 100% rename from content/roadmaps/103-react/content/102-react-ecosystem/108-styling/104-emotion.md rename to content/roadmaps/103-react/content/107-styling/101-emotion.md diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/108-styling/102-mantine.md b/content/roadmaps/103-react/content/107-styling/102-mantine.md similarity index 100% rename from content/roadmaps/103-react/content/102-react-ecosystem/108-styling/102-mantine.md rename to content/roadmaps/103-react/content/107-styling/102-mantine.md diff --git a/content/roadmaps/103-react/content/107-styling/103-tailwind.md b/content/roadmaps/103-react/content/107-styling/103-tailwind.md new file mode 100644 index 000000000..39d04d1d3 --- /dev/null +++ b/content/roadmaps/103-react/content/107-styling/103-tailwind.md @@ -0,0 +1,10 @@ +# Tailwind CSS + +CSS Framework that provides atomic CSS classes to help you style components e.g. `flex`, `pt-4`, `text-center` and `rotate-90` that can be composed to build any design, directly in your markup. + +Free Content +Tailwind Website +Tailwind CSS: An Introduction +Official Screencasts +Should You Use Tailwind CSS? +Tailwind CSS Crash Course diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/108-styling/101-material-ui.md b/content/roadmaps/103-react/content/107-styling/104-material-ui.md similarity index 100% rename from content/roadmaps/103-react/content/102-react-ecosystem/108-styling/101-material-ui.md rename to content/roadmaps/103-react/content/107-styling/104-material-ui.md diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/108-styling/100-chakra-ui.md b/content/roadmaps/103-react/content/107-styling/105-chakra-ui.md similarity index 100% rename from content/roadmaps/103-react/content/102-react-ecosystem/108-styling/100-chakra-ui.md rename to content/roadmaps/103-react/content/107-styling/105-chakra-ui.md diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/108-styling/readme.md b/content/roadmaps/103-react/content/107-styling/readme.md similarity index 100% rename from content/roadmaps/103-react/content/102-react-ecosystem/108-styling/readme.md rename to content/roadmaps/103-react/content/107-styling/readme.md diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/102-apollo.md b/content/roadmaps/103-react/content/108-api-calls/100-apollo.md similarity index 100% rename from content/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/102-apollo.md rename to content/roadmaps/103-react/content/108-api-calls/100-apollo.md diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/103-relay-modern.md b/content/roadmaps/103-react/content/108-api-calls/101-relay.md similarity index 97% rename from content/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/103-relay-modern.md rename to content/roadmaps/103-react/content/108-api-calls/101-relay.md index 55722ec2e..1d02e661e 100644 --- a/content/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/103-relay-modern.md +++ b/content/roadmaps/103-react/content/108-api-calls/101-relay.md @@ -1,4 +1,4 @@ -# Relay Modern +# Relay Relay is a JavaScript client used in the browser to fetch GraphQL data. It's a JavaScript framework developed by Facebook for managing and fetching data in React applications. It is built with scalability in mind in order to power complex applications like Facebook. The ultimate goal of GraphQL and Relay is to deliver instant UI-response interactions. diff --git a/content/roadmaps/103-react/content/108-api-calls/102-urql.md b/content/roadmaps/103-react/content/108-api-calls/102-urql.md new file mode 100644 index 000000000..1101e8bf4 --- /dev/null +++ b/content/roadmaps/103-react/content/108-api-calls/102-urql.md @@ -0,0 +1,15 @@ +# urql + +urql (Universal React Query Library) is a library for managing GraphQL data in React applications. It is developed and maintained by Formidable Labs and is available as open-source software. + +urql is designed to be easy to use and flexible, with a simple API for performing GraphQL queries and mutations. It is based on the concept of a client, which is used to manage the GraphQL data for an application. The client provides a set of utilities and APIs for managing GraphQL data, including: + +- executeQuery: A utility for executing a GraphQL query. +- executeMutation: A utility for executing a GraphQL mutation. +- useQuery: A hook for executing a GraphQL query and accessing the result in a component. +- useMutation: A hook for executing a GraphQL mutation and accessing the result in a component. + +urql is often used as an alternative to other GraphQL libraries, such as Apollo Client, because of its simplicity and lightweight size. It is particularly well-suited for small to medium-sized React applications where the complexity of other GraphQL libraries may not be required. + +Free Content +urql - Formidable Labs diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/101-swr.md b/content/roadmaps/103-react/content/108-api-calls/103-swr.md similarity index 99% rename from content/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/101-swr.md rename to content/roadmaps/103-react/content/108-api-calls/103-swr.md index 706779106..c7e994ca9 100644 --- a/content/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/101-swr.md +++ b/content/roadmaps/103-react/content/108-api-calls/103-swr.md @@ -8,6 +8,3 @@ With just one hook, you can significantly simplify the data fetching logic in yo Free Content SWR: React Hooks for Data Fetching - - - diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/100-react-query.md b/content/roadmaps/103-react/content/108-api-calls/104-react-query.md similarity index 99% rename from content/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/100-react-query.md rename to content/roadmaps/103-react/content/108-api-calls/104-react-query.md index aa12d0d8d..36b8c836d 100644 --- a/content/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/100-react-query.md +++ b/content/roadmaps/103-react/content/108-api-calls/104-react-query.md @@ -6,4 +6,3 @@ Powerful asynchronous state management, server-state utilities and data fetching TanStack Query React Query in 100 Seconds React Query Tutorial for Beginners - Complete Playlist - diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/104-axios.md b/content/roadmaps/103-react/content/108-api-calls/105-axios.md similarity index 100% rename from content/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/104-axios.md rename to content/roadmaps/103-react/content/108-api-calls/105-axios.md diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/106-superagent.md b/content/roadmaps/103-react/content/108-api-calls/106-superagent.md similarity index 100% rename from content/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/106-superagent.md rename to content/roadmaps/103-react/content/108-api-calls/106-superagent.md diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/readme.md b/content/roadmaps/103-react/content/108-api-calls/readme.md similarity index 100% rename from content/roadmaps/103-react/content/102-react-ecosystem/103-api-calls/readme.md rename to content/roadmaps/103-react/content/108-api-calls/readme.md diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/106-testing/100-jest.md b/content/roadmaps/103-react/content/109-testing/100-jest.md similarity index 100% rename from content/roadmaps/103-react/content/102-react-ecosystem/106-testing/100-jest.md rename to content/roadmaps/103-react/content/109-testing/100-jest.md diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/106-testing/103-vitest.md b/content/roadmaps/103-react/content/109-testing/101-vitest.md similarity index 100% rename from content/roadmaps/103-react/content/102-react-ecosystem/106-testing/103-vitest.md rename to content/roadmaps/103-react/content/109-testing/101-vitest.md diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/106-testing/101-react-testing-library.md b/content/roadmaps/103-react/content/109-testing/102-react-testing-library.md similarity index 100% rename from content/roadmaps/103-react/content/102-react-ecosystem/106-testing/101-react-testing-library.md rename to content/roadmaps/103-react/content/109-testing/102-react-testing-library.md diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/106-testing/102-cypress.md b/content/roadmaps/103-react/content/109-testing/103-cypress.md similarity index 100% rename from content/roadmaps/103-react/content/102-react-ecosystem/106-testing/102-cypress.md rename to content/roadmaps/103-react/content/109-testing/103-cypress.md diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/106-testing/104-playwright.md b/content/roadmaps/103-react/content/109-testing/104-playwright.md similarity index 100% rename from content/roadmaps/103-react/content/102-react-ecosystem/106-testing/104-playwright.md rename to content/roadmaps/103-react/content/109-testing/104-playwright.md diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/106-testing/readme.md b/content/roadmaps/103-react/content/109-testing/readme.md similarity index 100% rename from content/roadmaps/103-react/content/102-react-ecosystem/106-testing/readme.md rename to content/roadmaps/103-react/content/109-testing/readme.md diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/101-ssr/100-remix.md b/content/roadmaps/103-react/content/110-frameworks/100-remix.md similarity index 100% rename from content/roadmaps/103-react/content/102-react-ecosystem/101-ssr/100-remix.md rename to content/roadmaps/103-react/content/110-frameworks/100-remix.md diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/101-ssr/100-next-js.md b/content/roadmaps/103-react/content/110-frameworks/101-next-js.md similarity index 100% rename from content/roadmaps/103-react/content/102-react-ecosystem/101-ssr/100-next-js.md rename to content/roadmaps/103-react/content/110-frameworks/101-next-js.md diff --git a/content/roadmaps/103-react/content/110-frameworks/readme.md b/content/roadmaps/103-react/content/110-frameworks/readme.md new file mode 100644 index 000000000..d32867fbe --- /dev/null +++ b/content/roadmaps/103-react/content/110-frameworks/readme.md @@ -0,0 +1,8 @@ +# SSR Frameworks + +Server-side rendering (SSR) is a technique for rendering a JavaScript application on the server, rather than in the browser. This can improve the performance and user experience of a web application, as the initial render of the application is done on the server and the content is sent to the browser as a fully-rendered HTML page. + +There are several frameworks and libraries available for server-side rendering React applications, most common being: + +- [Next.js](https://nextjs.org/) +- [Remix](https://remix.run/) diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/105-forms/100-react-hook-form.md b/content/roadmaps/103-react/content/111-forms/100-react-hook-form.md similarity index 100% rename from content/roadmaps/103-react/content/102-react-ecosystem/105-forms/100-react-hook-form.md rename to content/roadmaps/103-react/content/111-forms/100-react-hook-form.md diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/105-forms/101-formik.md b/content/roadmaps/103-react/content/111-forms/101-formik.md similarity index 99% rename from content/roadmaps/103-react/content/102-react-ecosystem/105-forms/101-formik.md rename to content/roadmaps/103-react/content/111-forms/101-formik.md index ef4d2dc48..4578a944d 100644 --- a/content/roadmaps/103-react/content/102-react-ecosystem/105-forms/101-formik.md +++ b/content/roadmaps/103-react/content/111-forms/101-formik.md @@ -6,7 +6,3 @@ Formik is another famous opensource form library that helps with getting values Official Website — Formik Getting Started formik/formik - - - - diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/105-forms/102-final-form.md b/content/roadmaps/103-react/content/111-forms/102-final-form.md similarity index 99% rename from content/roadmaps/103-react/content/102-react-ecosystem/105-forms/102-final-form.md rename to content/roadmaps/103-react/content/111-forms/102-final-form.md index df2f74007..f1927f212 100644 --- a/content/roadmaps/103-react/content/102-react-ecosystem/105-forms/102-final-form.md +++ b/content/roadmaps/103-react/content/111-forms/102-final-form.md @@ -5,4 +5,3 @@ High performance subscription-based form state management for React. Free Content Final Form — Official Website final-form / react-final-form - diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/105-forms/readme.md b/content/roadmaps/103-react/content/111-forms/readme.md similarity index 100% rename from content/roadmaps/103-react/content/102-react-ecosystem/105-forms/readme.md rename to content/roadmaps/103-react/content/111-forms/readme.md diff --git a/content/roadmaps/103-react/content/112-suspense.md b/content/roadmaps/103-react/content/112-suspense.md new file mode 100644 index 000000000..96119a060 --- /dev/null +++ b/content/roadmaps/103-react/content/112-suspense.md @@ -0,0 +1,13 @@ +# Suspense + +React Suspense is a feature in React that allows components to "suspend" rendering while they are waiting for something to happen, such as data to be fetched from an API or an image to be loaded. Suspense allows developers to create a more seamless user experience by rendering a placeholder or fallback component while the component is waiting for the required data to be available. + +Here is a general overview of how React Suspense works: + +- A component that uses Suspense wraps a component that may need to "suspend" rendering in a `Suspense` component. +- The wrapped component throws a promise when it needs to suspend rendering. +- The `Suspense` component catches the promise and renders a fallback component while the promise is pending. +- When the promise resolves, the wrapped component is rendered with the required data. + +Free Content +React Suspense - Official Docs diff --git a/content/roadmaps/103-react/content/101-react-advanced-topics/105-portals.md b/content/roadmaps/103-react/content/113-portals.md similarity index 100% rename from content/roadmaps/103-react/content/101-react-advanced-topics/105-portals.md rename to content/roadmaps/103-react/content/113-portals.md diff --git a/content/roadmaps/103-react/content/101-react-advanced-topics/106-error-boundaries.md b/content/roadmaps/103-react/content/114-error-boundaries.md similarity index 100% rename from content/roadmaps/103-react/content/101-react-advanced-topics/106-error-boundaries.md rename to content/roadmaps/103-react/content/114-error-boundaries.md diff --git a/content/roadmaps/103-react/content/101-react-advanced-topics/107-fiber-architecture.md b/content/roadmaps/103-react/content/115-fiber-architecture.md similarity index 99% rename from content/roadmaps/103-react/content/101-react-advanced-topics/107-fiber-architecture.md rename to content/roadmaps/103-react/content/115-fiber-architecture.md index 951dfef4b..f3e834ae3 100644 --- a/content/roadmaps/103-react/content/101-react-advanced-topics/107-fiber-architecture.md +++ b/content/roadmaps/103-react/content/115-fiber-architecture.md @@ -5,5 +5,3 @@ React 16.0 was released with an update to the React core algorithm. This new cor Free Content React Fiber Architecture Understanding React Fiber Architecture - - diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/104-mobile/100-react-native.md b/content/roadmaps/103-react/content/116-mobile/100-react-native.md similarity index 99% rename from content/roadmaps/103-react/content/102-react-ecosystem/104-mobile/100-react-native.md rename to content/roadmaps/103-react/content/116-mobile/100-react-native.md index cf457377d..defd28e9f 100644 --- a/content/roadmaps/103-react/content/102-react-ecosystem/104-mobile/100-react-native.md +++ b/content/roadmaps/103-react/content/116-mobile/100-react-native.md @@ -5,5 +5,3 @@ React Native is an open-source UI software framework created by Meta Platforms, Free Content React Native: Official Website Official Getting Started - - diff --git a/content/roadmaps/103-react/content/102-react-ecosystem/104-mobile/readme.md b/content/roadmaps/103-react/content/116-mobile/readme.md similarity index 100% rename from content/roadmaps/103-react/content/102-react-ecosystem/104-mobile/readme.md rename to content/roadmaps/103-react/content/116-mobile/readme.md diff --git a/content/roadmaps/103-react/meta.json b/content/roadmaps/103-react/meta.json index 07a26e673..fd7df2a47 100644 --- a/content/roadmaps/103-react/meta.json +++ b/content/roadmaps/103-react/meta.json @@ -3,8 +3,8 @@ "title": "React Developer Roadmap: Learn to become a React developer", "description": "Community driven, articles, resources, guides, interview questions, quizzes for react development. Learn to become a modern React developer by following the steps, skills, resources and guides listed in this roadmap.", "keywords": [ - "react roadmap 2022", - "react developer roadmap 2022", + "react roadmap 2023", + "react developer roadmap 2023", "guide to becoming a react developer", "react developer roadmap", "react roadmap", @@ -19,14 +19,13 @@ ] }, "title": "React Developer", - "description": "Everything that is there to learn about React and the ecosystem in 2022.", + "description": "Everything that is there to learn about React and the ecosystem in 2023.", "featuredTitle": "React", "type": "tool", - "featuredDescription": "Step by step guide to become a React Developer in 2022", + "featuredDescription": "Step by step guide to become a React Developer in 2023", "isTextHeavy": false, "isCommunity": false, "featured": true, - "resourcesPath": "./resources.md", "jsonUrl": "/project/react.json", "versions": [ "latest", diff --git a/content/roadmaps/103-react/resources.md b/content/roadmaps/103-react/resources.md deleted file mode 100644 index 9ea876887..000000000 --- a/content/roadmaps/103-react/resources.md +++ /dev/null @@ -1,7 +0,0 @@ -> **We are still preparing the resources**. Please check back later or [subscribe to get notified](/signup). - -While we prepare the list, follow this simple advice to learn anything - -> Just **pick a project and start working on it**, you will learn all that you need along the way. - -**→**   [All Roadmaps](/roadmaps)  •  [Programming guides](/guides)  •  [Subscribe](/signup) diff --git a/public/project/react.json b/public/project/react.json index 25e1df1a0..e33c47e69 100644 --- a/public/project/react.json +++ b/public/project/react.json @@ -3,1988 +3,749 @@ "controls": { "control": [ { - "ID": "14363", - "typeID": "Arrow", - "zOrder": "2", - "w": "1", - "h": "70", - "measuredW": "150", - "measuredH": "100", - "x": "1005", - "y": "516", + "ID": "14593", + "typeID": "Label", + "zOrder": "40", + "measuredW": "76", + "measuredH": "36", + "x": "834", + "y": "153", "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0.2631015041727096, - "y": 69.87074768732577 - }, - "p1": { - "x": 0.48396407046253614, - "y": 0.0006376473756898644 - }, - "p2": { - "x": 0.2631015041727096, - "y": 0.15521002390022431 + "size": "28", + "text": "React" + } + }, + { + "ID": "14594", + "typeID": "Canvas", + "zOrder": "41", + "w": "350", + "h": "141", + "measuredW": "100", + "measuredH": "70", + "x": "1150", + "y": "82" + }, + { + "ID": "14595", + "typeID": "Label", + "zOrder": "42", + "measuredW": "314", + "measuredH": "25", + "x": "1164", + "y": "99", + "properties": { + "size": "17", + "text": "Find the detailed version of this roadmap" + } + }, + { + "ID": "14596", + "typeID": "Label", + "zOrder": "43", + "measuredW": "319", + "measuredH": "25", + "x": "1164", + "y": "127", + "properties": { + "size": "17", + "text": "along with resources and other roadmaps" + } + }, + { + "ID": "14597", + "typeID": "__group__", + "zOrder": "44", + "measuredW": "320", + "measuredH": "45", + "w": "320", + "h": "45", + "x": "1165", + "y": "163", + "properties": { + "controlName": "ext_link:roadmap.sh" + }, + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Canvas", + "zOrder": "0", + "w": "320", + "h": "45", + "measuredW": "100", + "measuredH": "70", + "x": "0", + "y": "0", + "properties": { + "borderColor": "4273622", + "color": "4273622" + } + }, + { + "ID": "1", + "typeID": "Label", + "zOrder": "1", + "measuredW": "105", + "measuredH": "28", + "x": "141", + "y": "8", + "properties": { + "color": "16777215", + "size": "20", + "text": "roadmap.sh" + } + }, + { + "ID": "2", + "typeID": "Label", + "zOrder": "2", + "measuredW": "45", + "measuredH": "28", + "x": "66", + "y": "8", + "properties": { + "color": "16777215", + "size": "20", + "text": "https" + } + }, + { + "ID": "3", + "typeID": "Label", + "zOrder": "3", + "measuredW": "5", + "measuredH": "28", + "x": "113", + "y": "8", + "properties": { + "color": "16777215", + "size": "20", + "text": ":" + } + }, + { + "ID": "4", + "typeID": "Label", + "zOrder": "4", + "measuredW": "10", + "measuredH": "28", + "x": "120", + "y": "9", + "properties": { + "color": "16777215", + "size": "20", + "text": "/" + } + }, + { + "ID": "5", + "typeID": "Label", + "zOrder": "5", + "measuredW": "10", + "measuredH": "28", + "x": "128", + "y": "9", + "properties": { + "color": "16777215", + "size": "20", + "text": "/" + } + } + ] } } }, { - "ID": "14364", - "typeID": "Arrow", - "zOrder": "3", - "w": "122", - "h": "18", - "measuredW": "150", - "measuredH": "100", - "x": "1042", - "y": "705", + "ID": "14598", + "typeID": "__group__", + "zOrder": "45", + "measuredW": "342", + "measuredH": "55", + "w": "342", + "h": "55", + "x": "702", + "y": "264", "properties": { - "color": "2848996", - "curvature": "0", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 122.14512175779441, - "y": 0.26814563722564344 - }, - "p1": { - "x": 0.4507017020005973, - "y": 0.051000298596596466 - }, - "p2": { - "x": -0.22207187435719788, - "y": 18.345117423793454 + "controlName": "ext_link:roadmap.sh/javascript" + }, + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "TextArea", + "zOrder": "0", + "w": "342", + "h": "55", + "measuredW": "200", + "measuredH": "140", + "x": "0", + "y": "0", + "properties": { + "color": "4273622", + "borderColor": "4273622" + } + }, + { + "ID": "1", + "typeID": "Label", + "zOrder": "1", + "measuredW": "230", + "measuredH": "28", + "x": "56", + "y": "14", + "properties": { + "size": "20", + "color": "16777215", + "text": "Visit JavaScript Roadmap" + } + } + ] } } }, { - "ID": "14365", + "ID": "14604", "typeID": "Arrow", - "zOrder": "4", - "w": "107", - "h": "49", + "zOrder": "39", + "w": "15", + "h": "83", "measuredW": "150", "measuredH": "100", - "x": "455", - "y": "370", + "x": "875", + "y": "203", "properties": { "color": "2848996", - "curvature": "0", "direction": "bottom", "leftArrow": "false", "rightArrow": "false", - "stroke": "dotted", "p0": { - "x": 107, - "y": 49 + "x": 11.504552088052037, + "y": 0.21486631796096844 }, "p1": { - "x": 0.623226362084596, - "y": 0.11385756526041142 + "x": 0.48122701874598317, + "y": 0.08919085657179801 }, "p2": { - "x": -0.02838679217563822, - "y": 0.14889944008285738 + "x": -0.05283881539992308, + "y": 83.59686539590052 } } }, { - "ID": "14366", + "ID": "14605", "typeID": "Arrow", - "zOrder": "5", - "w": "109", - "h": "2", + "zOrder": "46", + "w": "11", + "h": "65", "measuredW": "150", "measuredH": "100", - "x": "444", - "y": "429", + "x": "837", + "y": "76", "properties": { "color": "2848996", - "curvature": "0", "direction": "bottom", "leftArrow": "false", "rightArrow": "false", "stroke": "dotted", "p0": { - "x": 109, - "y": 0 + "x": 5.81355254908226, + "y": -0.3048709282632984 }, "p1": { - "x": 0.6380090497737557, - "y": -0.0018099547511312274 + "x": 0.4747832595422888, + "y": -0.12123341254486592 }, "p2": { - "x": -0.15267712237124442, - "y": 1.7703510910608884 + "x": 11, + "y": 65 } } }, { - "ID": "14367", + "ID": "14606", "typeID": "Arrow", - "zOrder": "6", - "w": "2", - "h": "571", + "zOrder": "38", + "w": "195", + "h": "124", "measuredW": "150", "measuredH": "100", - "x": "896", - "y": "158", + "x": "679", + "y": "298", "properties": { "color": "2848996", "direction": "bottom", "leftArrow": "false", "rightArrow": "false", "p0": { - "x": 2.621614465876405, - "y": 0.236415956616014 + "x": 194.50455208805204, + "y": 0.21486631796096844 }, "p1": { - "x": 0.4642857142857143, - "y": -0.00399211336195318 + "x": 0.5125873193980325, + "y": 0.11743289538347922 }, "p2": { - "x": 2.621614465876405, - "y": 570.8810260550937 + "x": -0.016173803428500833, + "y": 124.53032187659227 } } }, { - "ID": "14368", - "typeID": "Label", - "zOrder": "7", - "measuredW": "76", - "measuredH": "36", - "x": "862", - "y": "106", - "properties": { - "size": "28", - "text": "React" - } - }, - { - "ID": "14369", - "typeID": "Arrow", - "zOrder": "8", - "w": "2", - "h": "96", - "measuredW": "150", - "measuredH": "100", - "x": "621", - "y": "1241", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "bottom", - "leftArrow": "false", - "p0": { - "length": 95, - "x": 0, - "y": 95 - }, - "p1": { - "length": 0.4737749079645269, - "x": 0.4737425216042544, - "y": -0.005539552404165743 - }, - "p2": { - "length": 1, - "x": 1, - "y": 0 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14370", - "typeID": "Arrow", - "zOrder": "9", - "w": "105", - "h": "15", - "measuredW": "150", - "measuredH": "100", - "x": "458", - "y": "1189", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "p0": { - "x": 104, - "y": 0 - }, - "p1": { - "x": 0.5740721807586137, - "y": 0.016256006543298233 - }, - "p2": { - "x": 0, - "y": 14 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14371", - "typeID": "Arrow", - "zOrder": "10", - "w": "92", - "h": "22", - "measuredW": "150", - "measuredH": "100", - "x": "469", - "y": "1161", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "top", - "leftArrow": "false", - "p0": { - "x": 91, - "y": 21 - }, - "p1": { - "x": 0.5676406229888018, - "y": 0.009525035397091009 - }, - "p2": { - "x": 0, - "y": 0 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14372", - "typeID": "Arrow", - "zOrder": "11", - "w": "89", - "h": "13", - "measuredW": "150", - "measuredH": "100", - "x": "465", - "y": "1137", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 89.21325016687592, - "y": 0.3226457301532264 - }, - "p1": { - "x": 0.5740721807586137, - "y": 0.016256006543298247 - }, - "p2": { - "x": 0, - "y": 13 - } - } - }, - { - "ID": "14373", - "typeID": "Arrow", - "zOrder": "12", - "w": "6", - "h": "75", - "measuredW": "150", - "measuredH": "100", - "x": "1118", - "y": "1153", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "p0": { - "length": 74.16872656315464, - "x": 5, - "y": 74 - }, - "p1": { - "length": 0.5062618190857066, - "x": 0.5058572949946751, - "y": 0.020234291799786995 - }, - "p2": { - "length": 1, - "x": 1, - "y": 0 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14374", - "typeID": "Arrow", - "zOrder": "13", - "w": "170", - "h": "580", - "measuredW": "150", - "measuredH": "100", - "x": "676", - "y": "1043", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 156, - "y": 0 - }, - "p1": { - "x": 0.6169504337496851, - "y": 0.1519023793239984 - }, - "p2": { - "x": -0.274753807231491, - "y": 579.6297030286876 - } - } - }, - { - "ID": "14375", - "typeID": "Arrow", - "zOrder": "14", - "w": "95", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "461", - "y": "1616", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "top", - "leftArrow": "false", - "p0": { - "length": 0, - "x": 0, - "y": 0 - }, - "p1": { - "length": 0.638011617080294, - "x": 0.6380090497737556, - "y": -0.0018099547511312248 - }, - "p2": { - "length": 94, - "x": 94, - "y": 0 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14376", - "typeID": "Arrow", - "zOrder": "15", - "w": "82", - "h": "40", - "measuredW": "150", - "measuredH": "100", - "x": "1194", - "y": "1501", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.60504464315171, - "y": 0.10352361545015694 - }, - "p2": { - "x": 81.87595827187215, - "y": 40.127754474735184 - } - } - }, - { - "ID": "14377", - "typeID": "Arrow", - "zOrder": "16", - "w": "88", - "h": "7", - "measuredW": "150", - "measuredH": "100", - "x": "1197", - "y": "1483", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "bottom", - "leftArrow": "false", - "p0": { - "length": 6, - "x": 0, - "y": 6 - }, - "p1": { - "length": 0.4948488115176065, - "x": 0.49473684210526303, - "y": -0.010526315789473628 - }, - "p2": { - "length": 87, - "x": 87, - "y": 0 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14378", - "typeID": "Arrow", - "zOrder": "17", - "w": "96", - "h": "46", - "measuredW": "150", - "measuredH": "100", - "x": "1180", - "y": "1433", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": -0.44452638279881285, - "y": 45.889902851717125 - }, - "p1": { - "x": 0.5156841633798173, - "y": -0.10584946033995801 - }, - "p2": { - "x": 95.65228225525743, - "y": -0.07551856258737644 - } - } - }, - { - "ID": "14379", - "typeID": "Arrow", - "zOrder": "18", - "w": "6", - "h": "736", - "measuredW": "150", - "measuredH": "100", - "x": "886", - "y": "1045", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.5326751848090502, - "y": 0.008478779433645882 - }, - "p2": { - "x": 0, - "y": 735.966031340103 - } - } - }, - { - "ID": "14380", - "typeID": "Arrow", - "zOrder": "19", - "w": "1", - "h": "82", - "measuredW": "150", - "measuredH": "100", - "x": "1135", - "y": "1487", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "p0": { - "length": 81, - "x": 0, - "y": 81 - }, - "p1": { - "length": 0.4948488115176067, - "x": 0.4947368421052632, - "y": -0.010526315789473686 - }, - "p2": { - "length": 0, - "x": 0, - "y": 0 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14381", - "typeID": "Arrow", - "zOrder": "20", - "w": "203", - "h": "444", - "measuredW": "150", - "measuredH": "100", - "x": "912", - "y": "1047", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.6386805175102197, - "y": -0.15317754646213497 - }, - "p2": { - "x": 203.43769143423788, - "y": 443.58190904324397 - } - } - }, - { - "ID": "14382", - "typeID": "Arrow", - "zOrder": "21", - "w": "63", - "measuredW": "150", - "measuredH": "100", - "x": "691", - "y": "1029", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 63, - "y": 0 - }, - "p1": { - "x": 0.6971153846153839, - "y": 0.14182692307692268 - }, - "p2": { - "x": -0.4562177065128026, - "y": 99.43152406972195 - } - } - }, - { - "ID": "14383", - "typeID": "Arrow", - "zOrder": "22", - "w": "64", - "h": "109", - "measuredW": "150", - "measuredH": "100", - "x": "938", - "y": "1038", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.7038144329896907, - "y": -0.09391752577319588 - }, - "p2": { - "x": 63, - "y": 108 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14384", - "typeID": "Arrow", - "zOrder": "23", - "w": "86", - "h": "54", - "measuredW": "150", - "measuredH": "100", - "x": "1168", - "y": "925", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 86.52998069063369, - "y": -0.02712034141109143 - }, - "p1": { - "x": 0.3915365653245692, - "y": 0.03985209531635175 - }, - "p2": { - "x": 0.31673063161792925, - "y": 54.20379501829245 - } - } - }, - { - "ID": "14385", - "typeID": "Arrow", - "zOrder": "24", - "w": "89", - "h": "8", - "measuredW": "150", - "measuredH": "100", - "x": "1159", - "y": "975", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 89, - "y": 0 - }, - "p1": { - "x": 0.534385051309542, - "y": 0.03614642364833824 - }, - "p2": { - "x": -0.41702340730330434, - "y": 6.984867600841426 - } - } - }, - { - "ID": "14386", - "typeID": "Arrow", - "zOrder": "25", - "w": "60", - "h": "103", - "measuredW": "150", - "measuredH": "100", - "x": "1186", - "y": "1070", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "p0": { - "x": 59, - "y": 102 - }, - "p1": { - "x": 0.5058572949946751, - "y": 0.020234291799787023 - }, - "p2": { - "x": 0, - "y": 0 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14387", - "typeID": "Arrow", - "zOrder": "26", - "w": "66", - "h": "75", - "measuredW": "150", - "measuredH": "100", - "x": "1185", - "y": "1061", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "p0": { - "x": 65, - "y": 74 - }, - "p1": { - "x": 0.5567467271415318, - "y": -0.043088341408102256 - }, - "p2": { - "x": 0, - "y": 0 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14388", - "typeID": "Arrow", - "zOrder": "27", - "w": "86", - "h": "4", - "measuredW": "150", - "measuredH": "100", - "x": "1168", - "y": "1053", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 86.52998069063369, - "y": 2.683291038387324 - }, - "p1": { - "x": 0.4826498422712937, - "y": 0.022082018927444474 - }, - "p2": { - "x": 0.31673063161792925, - "y": -0.09778154416153484 - } - } - }, - { - "ID": "14389", - "typeID": "Arrow", - "zOrder": "28", - "w": "63", - "h": "24", - "measuredW": "150", - "measuredH": "100", - "x": "940", - "y": "1035", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.4043899289864429, - "y": -0.01368624919302776 - }, - "p2": { - "x": 62, - "y": 23 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14390", - "typeID": "Arrow", - "zOrder": "29", - "w": "95", - "h": "88", - "measuredW": "150", - "measuredH": "100", - "x": "1159", - "y": "882", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 94.13944439935926, - "y": -0.13374537091908678 - }, - "p1": { - "x": 0.47109352379113933, - "y": 0.05433838432583797 - }, - "p2": { - "x": -0.41702340730330434, - "y": 87.47004097937133 - } - } - }, - { - "ID": "14391", - "typeID": "Arrow", - "zOrder": "30", - "w": "95", - "h": "18", - "measuredW": "150", - "measuredH": "100", - "x": "461", - "y": "1312", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "p0": { - "length": 1, - "x": 0, - "y": 1 - }, - "p1": { - "length": 0.48824871437239115, - "x": 0.48542738182708794, - "y": 0.05241244183198628 - }, - "p2": { - "length": 95.524865872714, - "x": 94, - "y": 17 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14392", - "typeID": "Arrow", - "zOrder": "31", - "w": "94", - "h": "59", - "measuredW": "150", - "measuredH": "100", - "x": "461", - "y": "1266", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "p0": { - "length": 1, - "x": 0, - "y": 1 - }, - "p1": { - "length": 0.3714921097791618, - "x": 0.35753908219868885, - "y": 0.10085728693898134 - }, - "p2": { - "length": 109.60383204979652, - "x": 93, - "y": 58 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14393", - "typeID": "Arrow", - "zOrder": "32", - "w": "2", - "h": "96", - "measuredW": "150", - "measuredH": "100", - "x": "621", - "y": "1331", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "bottom", - "leftArrow": "false", - "p0": { - "length": 95, - "x": 0, - "y": 95 - }, - "p1": { - "length": 0.4737749079645269, - "x": 0.4737425216042544, - "y": -0.005539552404165743 - }, - "p2": { - "length": 1, - "x": 1, - "y": 0 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14394", - "typeID": "Arrow", - "zOrder": "33", - "w": "89", - "h": "110", - "measuredW": "150", - "measuredH": "100", - "x": "464", - "y": "1345", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 108 - }, - "p1": { - "x": 0.23770491803278693, - "y": -0.08524590163934422 - }, - "p2": { - "x": 89, - "y": 0 - } - } - }, - { - "ID": "14395", - "typeID": "Arrow", - "zOrder": "34", - "w": "102", - "h": "170", - "measuredW": "150", - "measuredH": "100", - "x": "459", - "y": "1335", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 168 - }, - "p1": { - "x": 0.23741864515537614, - "y": -0.0824090200751674 - }, - "p2": { - "x": 102, - "y": 0 - } - } - }, - { - "ID": "14396", - "typeID": "Arrow", - "zOrder": "35", - "w": "95", - "h": "73", - "measuredW": "150", - "measuredH": "100", - "x": "464", - "y": "1332", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 0, - "y": 73 - }, - "p1": { - "x": 0.32182218956649544, - "y": -0.06784227283859864 - }, - "p2": { - "x": 95, - "y": 0 - } - } - }, - { - "ID": "14397", - "typeID": "Arrow", - "zOrder": "36", - "w": "68", - "h": "51", - "measuredW": "150", - "measuredH": "100", - "x": "938", - "y": "976", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "bottom", - "leftArrow": "false", - "p0": { - "x": 67, - "y": 0 - }, - "p1": { - "x": 0.44040635284017743, - "y": -0.08985548719416225 - }, - "p2": { - "x": 0, - "y": 50 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14398", - "typeID": "Arrow", - "zOrder": "37", - "w": "106", - "h": "16", - "measuredW": "150", - "measuredH": "100", - "x": "458", - "y": "1027", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "bottom", - "leftArrow": "false", - "p0": { - "x": 0, - "y": 11 - }, - "p1": { - "x": 0.418664047151277, - "y": -0.08212180746561885 - }, - "p2": { - "x": 105, - "y": 0 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14399", - "typeID": "Arrow", - "zOrder": "38", - "w": "94", - "h": "31", - "measuredW": "150", - "measuredH": "100", - "x": "461", - "y": "989", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.5210888020482415, - "y": 0.050532273278533865 - }, - "p2": { - "x": 93, - "y": 30 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14400", - "typeID": "Arrow", - "zOrder": "39", - "w": "109", - "h": "5", - "measuredW": "150", - "measuredH": "100", - "x": "660", - "y": "1022", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "bottom", - "leftArrow": "false", - "p0": { - "length": 108, - "x": 108, - "y": 0 - }, - "p1": { - "length": 0.638011617080294, - "x": 0.6380090497737556, - "y": -0.001809954751131225 - }, - "p2": { - "length": 4, - "x": 0, - "y": 4 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14401", - "typeID": "Arrow", - "zOrder": "40", - "w": "118", - "h": "294", - "measuredW": "150", - "measuredH": "100", - "x": "674", - "y": "1037", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 112, - "y": 0 - }, - "p1": { - "x": 0.6562581123678842, - "y": 0.2116447246430557 - }, - "p2": { - "x": 0.24339258269674247, - "y": 293.70454184453115 - } - } - }, - { - "ID": "14402", - "typeID": "Arrow", - "zOrder": "41", - "w": "49", - "h": "292", - "measuredW": "150", - "measuredH": "100", - "x": "899", - "y": "731", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "p0": { - "x": 0, - "y": 0 - }, - "p1": { - "x": 0.5185682873198143, - "y": 0.16381627168336182 - }, - "p2": { - "x": 1, - "y": 291 - }, - "rightArrow": "false" - } - }, - { - "ID": "14403", - "typeID": "Arrow", - "zOrder": "42", - "w": "153", - "h": "89", - "measuredW": "150", - "measuredH": "100", - "x": "1017", - "y": "725", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 152.70726692289236, - "y": 88.72997635663273 - }, - "p1": { - "x": 0.4356676038192479, - "y": -0.019497968927647383 - }, - "p2": { - "x": -0.2517251172973829, - "y": -0.26434628493211676 - } - } - }, - { - "ID": "14404", - "typeID": "Arrow", - "zOrder": "43", - "w": "122", - "h": "32", - "measuredW": "150", - "measuredH": "100", - "x": "1043", - "y": "730", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 122.53565804906884, - "y": 32.28013357947805 - }, - "p1": { - "x": 0.4342814659840945, - "y": -0.040402879811838384 - }, - "p2": { - "x": 0.16846441691723157, - "y": 0.29779888016571476 - } - } - }, - { - "ID": "14405", - "typeID": "Arrow", - "zOrder": "44", - "w": "136", - "h": "60", - "measuredW": "150", - "measuredH": "100", - "x": "1028", - "y": "659", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 136.1451217577944, - "y": 0.3804480251686755 - }, - "p1": { - "x": 0.4507017020005973, - "y": 0.05100029859659641 - }, - "p2": { - "x": -0.12743478710171985, - "y": 60.17350854997005 - } - } - }, - { - "ID": "14406", - "typeID": "Arrow", - "zOrder": "45", - "w": "89", - "h": "106", - "measuredW": "150", - "measuredH": "100", - "x": "708", - "y": "744", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "p0": { - "x": 88, - "y": 0 - }, - "p1": { - "x": 0.694396551724138, - "y": 0.14525862068965517 - }, - "p2": { - "x": 0, - "y": 104 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14407", - "typeID": "Arrow", - "zOrder": "46", - "w": "93", - "h": "65", - "measuredW": "150", - "measuredH": "100", - "x": "700", - "y": "740", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "p0": { - "x": 92, - "y": 0 - }, - "p1": { - "x": 0.5165605095541401, - "y": 0.08630573248407643 - }, - "p2": { - "x": 0, - "y": 64 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14408", - "typeID": "Arrow", - "zOrder": "47", - "w": "69", - "h": "35", - "measuredW": "150", - "measuredH": "100", - "x": "505", - "y": "706", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "bottom", - "leftArrow": "false", - "p0": { - "length": 34, - "x": 0, - "y": 34 - }, - "p1": { - "length": 0.4078400012423434, - "x": 0.4078368652538985, - "y": 0.001599360255897608 - }, - "p2": { - "length": 68, - "x": 68, - "y": 0 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14409", - "typeID": "Arrow", - "zOrder": "48", - "w": "81", - "h": "20", - "measuredW": "150", - "measuredH": "100", - "x": "517", - "y": "683", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "top", - "leftArrow": "false", - "p0": { - "x": 80, - "y": 19 - }, - "p1": { - "x": 0.46527893422148264, - "y": -0.0013322231473772645 - }, - "p2": { - "x": 0, - "y": 0 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14410", - "typeID": "Arrow", - "zOrder": "49", - "w": "127", - "h": "1", - "measuredW": "150", - "measuredH": "100", - "x": "1029", - "y": "516", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 126.80190401014784, - "y": 0.15521002390022431 - }, - "p1": { - "x": 0.4839640704625361, - "y": 0.0006376473756898644 - }, - "p2": { - "x": 0.2631015041727096, - "y": 0.15521002390022431 - } - } - }, - { - "ID": "14411", - "typeID": "Arrow", - "zOrder": "50", - "w": "88", - "h": "21", - "measuredW": "150", - "measuredH": "100", - "x": "707", - "y": "700", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "p0": { - "x": 87, - "y": 20 - }, - "p1": { - "x": 0.46091103024218855, - "y": -0.0549629815535199 - }, - "p2": { - "x": 0, - "y": 0 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14412", - "typeID": "Arrow", - "zOrder": "51", - "w": "105", - "h": "29", - "measuredW": "150", - "measuredH": "100", - "x": "697", - "y": "723", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "p0": { - "x": 104, - "y": 0 - }, - "p1": { - "x": 0.47141024775535, - "y": 0.024843043272800916 - }, - "p2": { - "x": 0, - "y": 28 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14413", - "typeID": "Arrow", - "zOrder": "52", - "w": "108", - "h": "118", - "measuredW": "150", - "measuredH": "100", - "x": "682", - "y": "515", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "p0": { - "x": 107, - "y": 0 - }, - "p1": { - "x": 0.5565339359463882, - "y": 0.11104184524273356 - }, - "p2": { - "x": 0, - "y": 117 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14414", - "typeID": "Arrow", - "zOrder": "53", - "w": "102", - "h": "66", - "measuredW": "150", - "measuredH": "100", - "x": "681", - "y": "516", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "p0": { - "x": 101, - "y": 0 - }, - "p1": { - "x": 0.49432499118787465, - "y": 0.03919633415579831 - }, - "p2": { - "x": 0, - "y": 65 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14415", - "typeID": "Arrow", - "zOrder": "54", - "w": "66", - "h": "65", - "measuredW": "150", - "measuredH": "100", - "x": "1271", - "y": "521", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "p0": { - "length": 91.21951545584967, - "x": 65, - "y": 64 - }, - "p1": { - "length": 0.4412347883439139, - "x": 0.41749789688739336, - "y": -0.14277130152625886 - }, - "p2": { - "length": 0, - "x": 0, - "y": 0 - }, - "rightArrow": "false", - "stroke": "dotted" + "ID": "14607", + "typeID": "__group__", + "zOrder": "47", + "measuredW": "207", + "measuredH": "47", + "w": "207", + "h": "47", + "x": "550", + "y": "414", + "properties": { + "controlName": "101-cli-tools" + }, + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "TextArea", + "zOrder": "0", + "w": "207", + "h": "47", + "measuredW": "200", + "measuredH": "140", + "x": "0", + "y": "0", + "properties": { + "color": "16776960" + } + }, + { + "ID": "1", + "typeID": "Label", + "zOrder": "1", + "measuredW": "72", + "measuredH": "25", + "x": "68", + "y": "11", + "properties": { + "size": "17", + "text": "CLI Tools" + } + } + ] + } } }, { - "ID": "14416", - "typeID": "Arrow", - "zOrder": "55", - "h": "33", - "measuredW": "150", - "measuredH": "100", - "x": "1003", - "y": "469", + "ID": "14608", + "typeID": "__group__", + "zOrder": "48", + "measuredW": "206", + "measuredH": "44", + "w": "206", + "h": "44", + "x": "269", + "y": "416", "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 150.02083142759898, - "y": -0.12302387943111626 - }, - "p1": { - "x": 0.48730252473054736, - "y": 0.054554850140262706 - }, - "p2": { - "x": -0.15708803004190486, - "y": 33.2498471111557 + "controlName": "101-cli-tools:create-react-app" + }, + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "TextArea", + "zOrder": "0", + "w": "197", + "h": "44", + "measuredW": "200", + "measuredH": "140", + "x": "9", + "y": "0", + "properties": { + "color": "16770457" + } + }, + { + "ID": "1", + "typeID": "Label", + "zOrder": "1", + "measuredW": "139", + "measuredH": "25", + "x": "38", + "y": "10", + "properties": { + "size": "17", + "text": "Create React App" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "0", + "y": "11", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "2", + "typeID": "Icon", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "3700253", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } + } + } + ] } } }, { - "ID": "14417", - "typeID": "Arrow", - "zOrder": "56", - "w": "50", - "h": "77", - "measuredW": "150", - "measuredH": "100", - "x": "1208", - "y": "518", + "ID": "14609", + "typeID": "__group__", + "zOrder": "49", + "measuredW": "206", + "measuredH": "44", + "w": "206", + "h": "44", + "x": "269", + "y": "367", "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "p0": { - "length": 76, - "x": 0, - "y": 76 - }, - "p1": { - "length": 0.4763317432510617, - "x": 0.4659313041049986, - "y": 0.09899469421949178 - }, - "p2": { - "length": 49, - "x": 49, - "y": 0 - }, - "rightArrow": "false", - "stroke": "dotted" + "controlName": "100-cli-tools:vite" + }, + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "TextArea", + "zOrder": "0", + "w": "197", + "h": "44", + "measuredW": "200", + "measuredH": "140", + "x": "9", + "y": "0", + "properties": { + "color": "16770457" + } + }, + { + "ID": "1", + "typeID": "Label", + "zOrder": "1", + "measuredW": "30", + "measuredH": "25", + "x": "94", + "y": "10", + "properties": { + "size": "17", + "text": "Vite" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "0", + "y": "10", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "10027263", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } + } + } + ] + } } }, { - "ID": "14418", + "ID": "14611", "typeID": "Arrow", - "zOrder": "57", - "w": "181", - "h": "83", + "zOrder": "37", + "w": "121", + "h": "48", "measuredW": "150", "measuredH": "100", - "x": "971", - "y": "419", + "x": "472", + "y": "380", "properties": { "color": "2848996", - "curvature": "0", - "direction": "bottom", + "curvature": "1", + "direction": "top", "leftArrow": "false", "rightArrow": "false", "stroke": "dotted", "p0": { - "x": 180.63029513632432, - "y": -0.1823303653113726 + "x": -0.24502512380570352, + "y": -0.2591533504318022 }, "p1": { - "x": 0.4419322661853425, - "y": 0.047879162114662706 + "x": 0.3864377036851346, + "y": -0.12346452745048851 }, "p2": { - "x": -0.13942272935423716, - "y": 83.2498471111557 + "x": 120.9799374604795, + "y": 47.93872333970569 } } }, { - "ID": "14419", - "typeID": "Arrow", - "zOrder": "58", - "w": "110", - "h": "19", - "measuredW": "150", - "measuredH": "100", - "x": "672", - "y": "513", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "p0": { - "x": 109, - "y": 0 - }, - "p1": { - "x": 0.49432499118787454, - "y": 0.03919633415579837 - }, - "p2": { - "x": 0, - "y": 18 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14420", + "ID": "14613", "typeID": "Arrow", - "zOrder": "59", - "w": "67", - "h": "29", + "zOrder": "36", + "w": "281", + "h": "1", "measuredW": "150", "measuredH": "100", - "x": "477", - "y": "528", + "x": "654", + "y": "444", "properties": { "color": "2848996", - "curvature": "1", "direction": "bottom", "leftArrow": "false", - "p0": { - "length": 28, - "x": 0, - "y": 28 - }, - "p1": { - "length": 0.45024852627028145, - "x": 0.4470817120622568, - "y": -0.053307392996108954 - }, - "p2": { - "length": 66, - "x": 66, - "y": 0 - }, "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14421", - "typeID": "Arrow", - "zOrder": "60", - "w": "70", - "h": "27", - "measuredW": "150", - "measuredH": "100", - "x": "478", - "y": "503", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "top", - "leftArrow": "false", "p0": { - "length": 0, - "x": 0, - "y": 0 + "x": 281.3020743683919, + "y": 0.8810260550936846 }, "p1": { - "length": 0.4463661980631013, - "x": 0.44581164221486, - "y": 0.022243256034074732 + "x": 0.4642857142857147, + "y": -0.003992113361953183 }, "p2": { - "length": 73.7360156233031, - "x": 69, - "y": 26 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14422", - "typeID": "Canvas", - "zOrder": "61", - "w": "350", - "h": "141", - "measuredW": "100", - "measuredH": "70", - "x": "1150", - "y": "82" - }, - { - "ID": "14423", - "typeID": "Label", - "zOrder": "62", - "measuredW": "314", - "measuredH": "25", - "x": "1164", - "y": "99", - "properties": { - "size": "17", - "text": "Find the detailed version of this roadmap" - } - }, - { - "ID": "14424", - "typeID": "Label", - "zOrder": "63", - "measuredW": "319", - "measuredH": "25", - "x": "1164", - "y": "127", - "properties": { - "size": "17", - "text": "along with resources and other roadmaps" + "x": 0.48803395698428176, + "y": 0.8810260550936846 + } } }, { - "ID": "14425", + "ID": "14614", "typeID": "__group__", - "zOrder": "64", - "measuredW": "320", - "measuredH": "45", - "w": "320", - "h": "45", - "x": "1165", - "y": "163", + "zOrder": "50", + "measuredW": "207", + "measuredH": "47", + "w": "207", + "h": "47", + "x": "862", + "y": "421", "properties": { - "controlName": "ext_link:roadmap.sh" + "controlName": "102-components" }, "children": { "controls": { "control": [ { "ID": "0", - "typeID": "Canvas", + "typeID": "TextArea", "zOrder": "0", - "w": "320", - "h": "45", - "measuredW": "100", - "measuredH": "70", + "w": "207", + "h": "47", + "measuredW": "200", + "measuredH": "140", "x": "0", "y": "0", "properties": { - "borderColor": "4273622", - "color": "4273622" + "color": "16776960" } }, { "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "105", - "measuredH": "28", - "x": "141", - "y": "8", - "properties": { - "color": "16777215", - "size": "20", - "text": "roadmap.sh" - } - }, - { - "ID": "2", - "typeID": "Label", - "zOrder": "2", - "measuredW": "45", - "measuredH": "28", - "x": "66", - "y": "8", + "measuredW": "99", + "measuredH": "25", + "x": "54", + "y": "11", "properties": { - "color": "16777215", - "size": "20", - "text": "https" + "size": "17", + "text": "Components" } - }, + } + ] + } + } + }, + { + "ID": "14615", + "typeID": "__group__", + "zOrder": "51", + "measuredW": "246", + "measuredH": "47", + "w": "246", + "h": "47", + "x": "1154", + "y": "424", + "properties": { + "controlName": "101-components:functional-components" + }, + "children": { + "controls": { + "control": [ { - "ID": "3", - "typeID": "Label", - "zOrder": "3", - "measuredW": "5", - "measuredH": "28", - "x": "113", - "y": "8", + "ID": "0", + "typeID": "TextArea", + "zOrder": "0", + "w": "235", + "h": "47", + "measuredW": "200", + "measuredH": "140", + "x": "0", + "y": "0", "properties": { - "color": "16777215", - "size": "20", - "text": ":" + "color": "16770457" } }, { - "ID": "4", + "ID": "1", "typeID": "Label", - "zOrder": "4", - "measuredW": "10", - "measuredH": "28", - "x": "120", - "y": "9", + "zOrder": "1", + "measuredW": "183", + "measuredH": "25", + "x": "26", + "y": "11", "properties": { - "color": "16777215", - "size": "20", - "text": "/" + "size": "17", + "text": "Functional Components" } }, { - "ID": "5", - "typeID": "Label", - "zOrder": "5", - "measuredW": "10", - "measuredH": "28", - "x": "128", - "y": "9", - "properties": { - "color": "16777215", - "size": "20", - "text": "/" + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "222", + "y": "10", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "10027263", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -1992,110 +753,17 @@ } }, { - "ID": "14426", - "typeID": "Arrow", - "zOrder": "65", - "w": "196", - "h": "128", - "measuredW": "150", - "measuredH": "100", - "x": "954", - "y": "370", - "properties": { - "color": "2848996", - "curvature": "1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 196.2397588450499, - "y": 0.14889944008285738 - }, - "p1": { - "x": 0.4672428999823599, - "y": 0.06392661845122631 - }, - "p2": { - "x": 0.17414177535238196, - "y": 128.07823823733236 - } - } - }, - { - "ID": "14427", - "typeID": "Arrow", - "zOrder": "66", - "w": "128", - "h": "35", - "measuredW": "150", - "measuredH": "100", - "x": "653", - "y": "475", - "properties": { - "color": "2848996", - "curvature": "0", - "direction": "top", - "leftArrow": "false", - "p0": { - "x": 127, - "y": 34 - }, - "p1": { - "x": 0.4652789342214826, - "y": -0.0013322231473772712 - }, - "p2": { - "x": 0, - "y": 0 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14428", - "typeID": "Arrow", - "zOrder": "67", - "w": "109", - "h": "80", - "measuredW": "150", - "measuredH": "100", - "x": "672", - "y": "422", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "p0": { - "x": 108, - "y": 79 - }, - "p1": { - "x": 0.45522128005575585, - "y": -0.054942502032756343 - }, - "p2": { - "x": 0, - "y": 0 - }, - "rightArrow": "false", - "stroke": "dotted" - } - }, - { - "ID": "14429", + "ID": "14616", "typeID": "__group__", - "zOrder": "68", - "measuredW": "272", - "measuredH": "50", - "w": "272", - "h": "50", - "x": "772", - "y": "484", - "properties": { - "controlName": "100-react-fundamental-topics" + "zOrder": "52", + "measuredW": "235", + "measuredH": "47", + "w": "235", + "h": "47", + "x": "1153", + "y": "371", + "properties": { + "controlName": "100-components:class-components" }, "children": { "controls": { @@ -2104,27 +772,27 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "272", - "h": "50", + "w": "235", + "h": "47", "measuredW": "200", "measuredH": "140", "x": "0", "y": "0", "properties": { - "color": "16776960" + "color": "14540253" } }, { "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "155", + "measuredW": "146", "measuredH": "25", - "x": "55", - "y": "13", + "x": "45", + "y": "11", "properties": { "size": "17", - "text": "Fundamental Topics" + "text": "Class Components" } } ] @@ -2132,17 +800,17 @@ } }, { - "ID": "14430", + "ID": "14619", "typeID": "__group__", - "zOrder": "69", - "measuredW": "159", + "zOrder": "53", + "measuredW": "215", "measuredH": "44", - "w": "159", + "w": "215", "h": "44", - "x": "532", - "y": "505", + "x": "1163", + "y": "532", "properties": { - "controlName": "102-react-fundamental-topics:components" + "controlName": "102-components:jsx" }, "children": { "controls": { @@ -2151,7 +819,7 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "159", + "w": "215", "h": "44", "measuredW": "200", "measuredH": "140", @@ -2165,13 +833,13 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "99", + "measuredW": "30", "measuredH": "25", - "x": "29", - "y": "10", + "x": "93", + "y": "9", "properties": { "size": "17", - "text": "Components" + "text": "JSX" } } ] @@ -2179,17 +847,17 @@ } }, { - "ID": "14431", + "ID": "14620", "typeID": "__group__", - "zOrder": "70", - "measuredW": "255", - "measuredH": "44", - "w": "255", - "h": "44", - "x": "1142", - "y": "447", + "zOrder": "54", + "measuredW": "215", + "measuredH": "47", + "w": "215", + "h": "47", + "x": "1163", + "y": "580", "properties": { - "controlName": "107-react-fundamental-topics:composition-vs-inheritance" + "controlName": "103-components:props-vs-state" }, "children": { "controls": { @@ -2198,8 +866,8 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "255", - "h": "44", + "w": "215", + "h": "47", "measuredW": "200", "measuredH": "140", "x": "0", @@ -2212,13 +880,13 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "210", + "measuredW": "110", "measuredH": "25", - "x": "22", - "y": "10", + "x": "53", + "y": "11", "properties": { "size": "17", - "text": "Composition vs Inheritance" + "text": "Props vs State" } } ] @@ -2226,17 +894,17 @@ } }, { - "ID": "14432", + "ID": "14621", "typeID": "__group__", - "zOrder": "71", - "measuredW": "213", - "measuredH": "44", - "w": "213", - "h": "44", - "x": "283", - "y": "482", + "zOrder": "55", + "measuredW": "215", + "measuredH": "47", + "w": "215", + "h": "47", + "x": "1163", + "y": "631", "properties": { - "controlName": "100-react-fundamental-topics:components:functional-components" + "controlName": "104-components:conditional-rendering" }, "children": { "controls": { @@ -2245,8 +913,8 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "213", - "h": "44", + "w": "215", + "h": "47", "measuredW": "200", "measuredH": "140", "x": "0", @@ -2259,13 +927,13 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "183", + "measuredW": "173", "measuredH": "25", - "x": "16", - "y": "10", + "x": "21", + "y": "11", "properties": { "size": "17", - "text": "Functional Components" + "text": "Conditional Rendering" } } ] @@ -2273,17 +941,17 @@ } }, { - "ID": "14433", + "ID": "14622", "typeID": "__group__", - "zOrder": "72", - "measuredW": "213", - "measuredH": "44", - "w": "213", - "h": "44", - "x": "283", - "y": "532", + "zOrder": "56", + "measuredW": "215", + "measuredH": "47", + "w": "215", + "h": "47", + "x": "1163", + "y": "682", "properties": { - "controlName": "101-react-fundamental-topics:components:class-components" + "controlName": "105-components:composition-vs-inheritance" }, "children": { "controls": { @@ -2292,8 +960,8 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "213", - "h": "44", + "w": "215", + "h": "47", "measuredW": "200", "measuredH": "140", "x": "0", @@ -2306,13 +974,13 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "146", + "measuredW": "97", "measuredH": "25", - "x": "33", - "y": "10", + "x": "59", + "y": "11", "properties": { "size": "17", - "text": "Class Components" + "text": "Composition" } } ] @@ -2320,17 +988,131 @@ } }, { - "ID": "14434", - "typeID": "__group__", - "zOrder": "73", - "measuredW": "159", - "measuredH": "44", - "w": "159", + "ID": "14623", + "typeID": "Canvas", + "zOrder": "35", + "w": "198", + "h": "272", + "measuredW": "100", + "measuredH": "70", + "x": "1172", + "y": "481" + }, + { + "ID": "14624", + "typeID": "Label", + "zOrder": "57", + "measuredW": "154", + "measuredH": "25", + "x": "1194", + "y": "496", + "properties": { + "size": "17", + "text": "Components Basics" + } + }, + { + "ID": "14627", + "typeID": "Arrow", + "zOrder": "34", + "w": "154", + "h": "1", + "measuredW": "150", + "measuredH": "100", + "x": "1018", + "y": "446", + "properties": { + "color": "2848996", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "p0": { + "x": 153.18911339670876, + "y": 0.8810260550936846 + }, + "p1": { + "x": 0.46428571428571463, + "y": -0.003992113361953182 + }, + "p2": { + "x": -0.3783855341235949, + "y": 0.8810260550936846 + }, + "stroke": "dotted" + } + }, + { + "ID": "14628", + "typeID": "Arrow", + "zOrder": "33", + "w": "120", "h": "44", - "x": "532", + "measuredW": "150", + "measuredH": "100", + "x": "1042", + "y": "393", + "properties": { + "color": "2848996", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "stroke": "dotted", + "p0": { + "x": 119.54402658050071, + "y": 0.18134219350019976 + }, + "p1": { + "x": 0.45395537525354945, + "y": 0.09452332657200811 + }, + "p2": { + "x": -0.3306238495154048, + "y": 44.27316763902337 + } + } + }, + { + "ID": "14629", + "typeID": "Arrow", + "zOrder": "32", + "w": "153", + "h": "68", + "measuredW": "150", + "measuredH": "100", + "x": "1029", "y": "455", "properties": { - "controlName": "101-react-fundamental-topics:jsx" + "color": "2848996", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "stroke": "dotted", + "p0": { + "x": 153.21206975808968, + "y": 67.70107943972448 + }, + "p1": { + "x": 0.47348954701664, + "y": -0.1281842780799702 + }, + "p2": { + "x": 0.2685502439312586, + "y": 0.18547172626716701 + } + } + }, + { + "ID": "14631", + "typeID": "__group__", + "zOrder": "58", + "measuredW": "207", + "measuredH": "47", + "w": "207", + "h": "47", + "x": "862", + "y": "590", + "properties": { + "controlName": "103-rendering" }, "children": { "controls": { @@ -2339,27 +1121,27 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "159", - "h": "44", + "w": "207", + "h": "47", "measuredW": "200", "measuredH": "140", "x": "0", "y": "0", "properties": { - "color": "16770457" + "color": "16776960" } }, { "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "30", + "measuredW": "82", "measuredH": "25", "x": "63", - "y": "10", + "y": "11", "properties": { "size": "17", - "text": "JSX" + "text": "Rendering" } } ] @@ -2367,17 +1149,17 @@ } }, { - "ID": "14435", + "ID": "14632", "typeID": "__group__", - "zOrder": "74", - "measuredW": "159", - "measuredH": "44", - "w": "159", - "h": "44", - "x": "532", - "y": "557", + "zOrder": "59", + "measuredW": "255", + "measuredH": "47", + "w": "255", + "h": "47", + "x": "450", + "y": "549", "properties": { - "controlName": "103-react-fundamental-topics:props-vs-state" + "controlName": "101-rendering:lists-and-keys" }, "children": { "controls": { @@ -2386,8 +1168,8 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "159", - "h": "44", + "w": "255", + "h": "47", "measuredW": "200", "measuredH": "140", "x": "0", @@ -2400,13 +1182,13 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "110", + "measuredW": "111", "measuredH": "25", - "x": "22", - "y": "10", + "x": "72", + "y": "11", "properties": { "size": "17", - "text": "Props vs State" + "text": "Lists and Keys" } } ] @@ -2414,17 +1196,17 @@ } }, { - "ID": "14436", + "ID": "14633", "typeID": "__group__", - "zOrder": "75", - "measuredW": "254", - "measuredH": "42", - "w": "254", - "h": "42", - "x": "1143", + "zOrder": "60", + "measuredW": "255", + "measuredH": "47", + "w": "255", + "h": "47", + "x": "450", "y": "497", "properties": { - "controlName": "108-react-fundamental-topics:basic-hooks" + "controlName": "100-rendering:component-life-cycle" }, "children": { "controls": { @@ -2433,8 +1215,8 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "254", - "h": "42", + "w": "255", + "h": "47", "measuredW": "200", "measuredH": "140", "x": "0", @@ -2447,13 +1229,13 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "96", + "measuredW": "170", "measuredH": "25", - "x": "80", - "y": "9", + "x": "43", + "y": "11", "properties": { "size": "17", - "text": "Basic Hooks" + "text": "Component Life Cycle" } } ] @@ -2461,17 +1243,46 @@ } }, { - "ID": "14437", + "ID": "14634", + "typeID": "Arrow", + "zOrder": "31", + "w": "2", + "h": "403", + "measuredW": "150", + "measuredH": "100", + "x": "965", + "y": "445", + "properties": { + "color": "2848996", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "p0": { + "x": 0.48803395698428176, + "y": 403.1504450100517 + }, + "p1": { + "x": 0.46428571428571463, + "y": -0.003992113361953183 + }, + "p2": { + "x": 0.48803395698428176, + "y": -0.11897394490631541 + } + } + }, + { + "ID": "14636", "typeID": "__group__", - "zOrder": "76", - "measuredW": "153", - "measuredH": "44", - "w": "153", - "h": "44", - "x": "1116", - "y": "565", + "zOrder": "61", + "measuredW": "255", + "measuredH": "47", + "w": "255", + "h": "47", + "x": "450", + "y": "601", "properties": { - "controlName": "100-react-fundamental-topics:basic-hooks:use-state" + "controlName": "102-rendering:render-props" }, "children": { "controls": { @@ -2480,8 +1291,8 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "153", - "h": "44", + "w": "255", + "h": "47", "measuredW": "200", "measuredH": "140", "x": "0", @@ -2494,13 +1305,13 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "69", + "measuredW": "107", "measuredH": "25", - "x": "41", - "y": "10", + "x": "74", + "y": "11", "properties": { "size": "17", - "text": "useState" + "text": "Render Props" } } ] @@ -2508,17 +1319,17 @@ } }, { - "ID": "14438", + "ID": "14637", "typeID": "__group__", - "zOrder": "77", - "measuredW": "153", - "measuredH": "44", - "w": "153", - "h": "44", - "x": "1276", - "y": "565", + "zOrder": "62", + "measuredW": "255", + "measuredH": "47", + "w": "255", + "h": "47", + "x": "450", + "y": "653", "properties": { - "controlName": "101-react-fundamental-topics:basic-hooks:use-effect" + "controlName": "103-rendering:refs" }, "children": { "controls": { @@ -2527,8 +1338,8 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "153", - "h": "44", + "w": "255", + "h": "47", "measuredW": "200", "measuredH": "140", "x": "0", @@ -2541,13 +1352,13 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "73", + "measuredW": "36", "measuredH": "25", - "x": "39", - "y": "10", + "x": "110", + "y": "11", "properties": { "size": "17", - "text": "useEffect" + "text": "Refs" } } ] @@ -2555,17 +1366,141 @@ } }, { - "ID": "14439", + "ID": "14638", + "typeID": "Arrow", + "zOrder": "29", + "w": "205", + "h": "74", + "measuredW": "150", + "measuredH": "100", + "x": "704", + "y": "522", + "properties": { + "color": "2848996", + "curvature": "0", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "stroke": "dotted", + "p0": { + "x": 204.86359480461078, + "y": 73.99538260490783 + }, + "p1": { + "x": 0.591967784066173, + "y": 0.06824118415324368 + }, + "p2": { + "x": -0.4389674261063874, + "y": -0.4095728344125291 + } + } + }, + { + "ID": "14640", + "typeID": "Arrow", + "zOrder": "28", + "w": "179", + "h": "63", + "measuredW": "150", + "measuredH": "100", + "x": "705", + "y": "617", + "properties": { + "color": "2848996", + "curvature": "0", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "stroke": "dotted", + "p0": { + "x": 179.061942991504, + "y": -0.33657421750319827 + }, + "p1": { + "x": 0.5695204038704248, + "y": -0.0861379890618428 + }, + "p2": { + "x": -0.06109788093374391, + "y": 63.045424860436356 + } + } + }, + { + "ID": "14641", + "typeID": "Arrow", + "zOrder": "27", + "w": "200", + "h": "31", + "measuredW": "150", + "measuredH": "100", + "x": "702", + "y": "567", + "properties": { + "color": "2848996", + "curvature": "0", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "stroke": "dotted", + "p0": { + "x": 199.9742470787478, + "y": 30.37325215008036 + }, + "p1": { + "x": 0.591967784066173, + "y": 0.06824118415324375 + }, + "p2": { + "x": 0.1831630287210828, + "y": 0.06012215628322792 + } + } + }, + { + "ID": "14642", + "typeID": "Arrow", + "zOrder": "30", + "w": "185", + "h": "29", + "measuredW": "150", + "measuredH": "100", + "x": "698", + "y": "608", + "properties": { + "color": "2848996", + "curvature": "0", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "stroke": "dotted", + "p0": { + "x": 184.68407344633147, + "y": 0.3962085114611682 + }, + "p1": { + "x": 0.5656988692166243, + "y": -0.05770306981716299 + }, + "p2": { + "x": 0.049554393203266045, + "y": 29.331468960085772 + } + } + }, + { + "ID": "14643", "typeID": "__group__", - "zOrder": "78", + "zOrder": "63", "measuredW": "255", - "measuredH": "44", + "measuredH": "47", "w": "255", - "h": "44", - "x": "1142", - "y": "398", + "h": "47", + "x": "450", + "y": "705", "properties": { - "controlName": "106-react-fundamental-topics:lists-and-keys" + "controlName": "104-rendering:events" }, "children": { "controls": { @@ -2575,7 +1510,7 @@ "typeID": "TextArea", "zOrder": "0", "w": "255", - "h": "44", + "h": "47", "measuredW": "200", "measuredH": "140", "x": "0", @@ -2588,13 +1523,13 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "111", + "measuredW": "53", "measuredH": "25", - "x": "70", - "y": "10", + "x": "101", + "y": "11", "properties": { "size": "17", - "text": "Lists and Keys" + "text": "Events" } } ] @@ -2602,17 +1537,48 @@ } }, { - "ID": "14440", + "ID": "14644", + "typeID": "Arrow", + "zOrder": "26", + "w": "196", + "h": "113", + "measuredW": "150", + "measuredH": "100", + "x": "705", + "y": "619", + "properties": { + "color": "2848996", + "curvature": "0", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "stroke": "dotted", + "p0": { + "x": 195.59637753357526, + "y": 0.419164872841975 + }, + "p1": { + "x": 0.5695204038704248, + "y": -0.0861379890618429 + }, + "p2": { + "x": -0.06109788093374391, + "y": 113.4044675769951 + } + } + }, + { + "ID": "14645", "typeID": "__group__", - "zOrder": "79", - "measuredW": "215", - "measuredH": "44", - "w": "215", - "h": "44", - "x": "478", - "y": "607", + "zOrder": "64", + "measuredW": "255", + "measuredH": "47", + "w": "255", + "h": "47", + "x": "450", + "y": "758", "properties": { - "controlName": "104-react-fundamental-topics:conditional-rendering" + "controlName": "105-rendering:high-order-components" }, "children": { "controls": { @@ -2621,8 +1587,8 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "215", - "h": "44", + "w": "255", + "h": "47", "measuredW": "200", "measuredH": "140", "x": "0", @@ -2635,13 +1601,13 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "173", + "measuredW": "188", "measuredH": "25", - "x": "23", - "y": "10", + "x": "34", + "y": "11", "properties": { "size": "17", - "text": "Conditional Rendering" + "text": "High Order Components" } } ] @@ -2649,17 +1615,78 @@ } }, { - "ID": "14441", + "ID": "14646", + "typeID": "Arrow", + "zOrder": "25", + "w": "214", + "h": "167", + "measuredW": "150", + "measuredH": "100", + "x": "699", + "y": "619", + "properties": { + "color": "2848996", + "curvature": "0", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "stroke": "dotted", + "p0": { + "x": 213.9972034401286, + "y": 0.1978603245679551 + }, + "p1": { + "x": 0.5695204038704246, + "y": -0.08613798906184292 + }, + "p2": { + "x": 0.42742393837579584, + "y": 166.92007529045236 + } + } + }, + { + "ID": "14647", + "typeID": "Arrow", + "zOrder": "24", + "w": "1", + "h": "66", + "measuredW": "150", + "measuredH": "100", + "x": "966", + "y": "886", + "properties": { + "color": "2848996", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "p0": { + "x": 0.48803395698428176, + "y": 66.30567517486509 + }, + "p1": { + "x": 0.46428571428571463, + "y": -0.003992113361953185 + }, + "p2": { + "x": 0.48803395698428176, + "y": -0.11897394490631541 + }, + "stroke": "dotted" + } + }, + { + "ID": "14648", "typeID": "__group__", - "zOrder": "80", - "measuredW": "162", - "measuredH": "44", - "w": "162", - "h": "44", - "x": "530", - "y": "405", + "zOrder": "65", + "measuredW": "242", + "measuredH": "47", + "w": "242", + "h": "47", + "x": "862", + "y": "850", "properties": { - "controlName": "100-react-fundamental-topics:cli-tools" + "controlName": "104-hooks" }, "children": { "controls": { @@ -2668,27 +1695,27 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "162", - "h": "44", + "w": "242", + "h": "47", "measuredW": "200", "measuredH": "140", "x": "0", "y": "0", "properties": { - "color": "16770457" + "color": "16776960" } }, { "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "72", + "measuredW": "49", "measuredH": "25", - "x": "45", - "y": "10", + "x": "96", + "y": "11", "properties": { "size": "17", - "text": "CLI Tools" + "text": "Hooks" } } ] @@ -2696,17 +1723,17 @@ } }, { - "ID": "14442", + "ID": "14649", "typeID": "__group__", - "zOrder": "81", - "measuredW": "255", + "zOrder": "66", + "measuredW": "174", "measuredH": "44", - "w": "255", + "w": "174", "h": "44", - "x": "1142", - "y": "347", + "x": "1184", + "y": "817", "properties": { - "controlName": "105-react-fundamental-topics:component-life-cycle" + "controlName": "100-hooks:basic-hooks:use-state" }, "children": { "controls": { @@ -2715,7 +1742,7 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "255", + "w": "174", "h": "44", "measuredW": "200", "measuredH": "140", @@ -2729,13 +1756,13 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "170", + "measuredW": "69", "measuredH": "25", - "x": "42", + "x": "52", "y": "10", "properties": { "size": "17", - "text": "Component Life Cycle" + "text": "useState" } } ] @@ -2743,17 +1770,17 @@ } }, { - "ID": "14443", + "ID": "14650", "typeID": "__group__", - "zOrder": "82", - "measuredW": "272", - "measuredH": "50", - "w": "272", - "h": "50", - "x": "788", - "y": "699", + "zOrder": "67", + "measuredW": "175", + "measuredH": "44", + "w": "175", + "h": "44", + "x": "1183", + "y": "865", "properties": { - "controlName": "101-react-advanced-topics" + "controlName": "101-hooks:basic-hooks:use-effect" }, "children": { "controls": { @@ -2762,27 +1789,27 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "272", - "h": "50", + "w": "175", + "h": "44", "measuredW": "200", "measuredH": "140", "x": "0", "y": "0", "properties": { - "color": "16776960" + "color": "16770457" } }, { "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "130", + "measuredW": "73", "measuredH": "25", - "x": "68", - "y": "13", + "x": "51", + "y": "10", "properties": { "size": "17", - "text": "Advanced Topics" + "text": "useEffect" } } ] @@ -2790,17 +1817,17 @@ } }, { - "ID": "14444", + "ID": "14651", "typeID": "__group__", - "zOrder": "83", - "measuredW": "157", - "measuredH": "44", - "w": "157", - "h": "44", - "x": "561", - "y": "680", - "properties": { - "controlName": "100-react-advanced-topics:hooks" + "zOrder": "23", + "measuredW": "198", + "measuredH": "157", + "w": "198", + "h": "157", + "x": "1172", + "y": "769", + "properties": { + "controlName": "100-hooks:basic-hooks" }, "children": { "controls": { @@ -2809,27 +1836,24 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "157", - "h": "44", + "w": "198", + "h": "157", "measuredW": "200", "measuredH": "140", "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } + "y": "0" }, { "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "49", + "measuredW": "96", "measuredH": "25", - "x": "55", - "y": "10", + "x": "51", + "y": "16", "properties": { "size": "17", - "text": "Hooks" + "text": "Basic Hooks" } } ] @@ -2837,17 +1861,47 @@ } }, { - "ID": "14445", + "ID": "14652", + "typeID": "Arrow", + "zOrder": "22", + "w": "170", + "h": "1", + "measuredW": "150", + "measuredH": "100", + "x": "1044", + "y": "873", + "properties": { + "color": "2848996", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "stroke": "dotted", + "p0": { + "x": 169.71016756073527, + "y": 0.8810260550936846 + }, + "p1": { + "x": 0.4642857142857145, + "y": -0.003992113361953182 + }, + "p2": { + "x": -0.3783855341235949, + "y": 0.8810260550936846 + } + } + }, + { + "ID": "14653", "typeID": "__group__", - "zOrder": "84", + "zOrder": "68", "measuredW": "243", - "measuredH": "44", + "measuredH": "47", "w": "243", - "h": "44", - "x": "285", - "y": "659", + "h": "47", + "x": "861", + "y": "928", "properties": { - "controlName": "101-react-advanced-topics:hooks:writing-your-own-hooks" + "controlName": "101-hooks:writing-your-own-hooks" }, "children": { "controls": { @@ -2857,7 +1911,7 @@ "typeID": "TextArea", "zOrder": "0", "w": "243", - "h": "44", + "h": "47", "measuredW": "200", "measuredH": "140", "x": "0", @@ -2870,13 +1924,13 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "183", + "measuredW": "171", "measuredH": "25", - "x": "28", - "y": "10", + "x": "36", + "y": "11", "properties": { "size": "17", - "text": "Writing your Own Hooks" + "text": "Writing Custom Hooks" } } ] @@ -2884,17 +1938,47 @@ } }, { - "ID": "14446", + "ID": "14654", + "typeID": "Arrow", + "zOrder": "21", + "w": "148", + "h": "1", + "measuredW": "150", + "measuredH": "100", + "x": "435", + "y": "438", + "properties": { + "color": "2848996", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "p0": { + "x": 147.7561454352989, + "y": 0.8810260550936846 + }, + "p1": { + "x": 0.4642857142857145, + "y": -0.003992113361953184 + }, + "p2": { + "x": 0.24143192912043787, + "y": 0.8810260550936846 + }, + "stroke": "dotted" + } + }, + { + "ID": "14655", "typeID": "__group__", - "zOrder": "85", + "zOrder": "69", "measuredW": "243", "measuredH": "248", "w": "243", "h": "248", - "x": "285", - "y": "710", + "x": "861", + "y": "982", "properties": { - "controlName": "102-react-advanced-topics:hooks:common-hooks" + "controlName": "102-hooks:common-hooks" }, "children": { "controls": { @@ -3033,59 +2117,314 @@ "size": "17", "text": "useReducer" } - }, + }, + { + "ID": "10", + "typeID": "TextArea", + "zOrder": "10", + "w": "121", + "h": "43", + "measuredW": "200", + "measuredH": "140", + "x": "13", + "y": "193", + "properties": { + "color": "16770457" + } + }, + { + "ID": "11", + "typeID": "Label", + "zOrder": "11", + "measuredW": "88", + "measuredH": "25", + "x": "29", + "y": "202", + "properties": { + "size": "17", + "text": "useContext" + } + }, + { + "ID": "12", + "typeID": "TextArea", + "zOrder": "12", + "w": "92", + "h": "43", + "measuredW": "200", + "measuredH": "140", + "x": "139", + "y": "193", + "properties": { + "color": "16770457" + } + }, + { + "ID": "13", + "typeID": "Label", + "zOrder": "13", + "measuredW": "24", + "measuredH": "25", + "x": "173", + "y": "202", + "properties": { + "size": "17", + "text": "......." + } + } + ] + } + } + }, + { + "ID": "14663", + "typeID": "__group__", + "zOrder": "70", + "measuredW": "157", + "measuredH": "47", + "w": "157", + "h": "47", + "x": "629", + "y": "850", + "properties": { + "controlName": "105-routers" + }, + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "TextArea", + "zOrder": "0", + "w": "157", + "h": "47", + "measuredW": "200", + "measuredH": "140", + "x": "0", + "y": "0", + "properties": { + "color": "16776960" + } + }, + { + "ID": "1", + "typeID": "Label", + "zOrder": "1", + "measuredW": "61", + "measuredH": "25", + "x": "48", + "y": "11", + "properties": { + "size": "17", + "text": "Routers" + } + } + ] + } + } + }, + { + "ID": "14664", + "typeID": "__group__", + "zOrder": "71", + "measuredW": "167", + "measuredH": "47", + "w": "167", + "h": "47", + "x": "619", + "y": "924", + "properties": { + "controlName": "100-routers:react-router" + }, + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "TextArea", + "zOrder": "0", + "w": "158", + "h": "47", + "measuredW": "200", + "measuredH": "140", + "x": "9", + "y": "0", + "properties": { + "color": "16770457" + } + }, + { + "ID": "1", + "typeID": "Label", + "zOrder": "1", + "measuredW": "104", + "measuredH": "25", + "x": "36", + "y": "11", + "properties": { + "size": "17", + "text": "React Router" + } + }, + { + "ID": "3", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "0", + "y": "12", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "10027263", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } + } + } + ] + } + } + }, + { + "ID": "14665", + "typeID": "__group__", + "zOrder": "72", + "measuredW": "168", + "measuredH": "47", + "w": "168", + "h": "47", + "x": "617", + "y": "976", + "properties": { + "controlName": "101-routers:reach-router" + }, + "children": { + "controls": { + "control": [ { - "ID": "10", + "ID": "0", "typeID": "TextArea", - "zOrder": "10", - "w": "121", - "h": "43", + "zOrder": "0", + "w": "157", + "h": "47", "measuredW": "200", "measuredH": "140", - "x": "13", - "y": "193", + "x": "11", + "y": "0", "properties": { "color": "16770457" } }, { - "ID": "11", + "ID": "1", "typeID": "Label", - "zOrder": "11", - "measuredW": "88", + "zOrder": "1", + "measuredW": "108", "measuredH": "25", - "x": "29", - "y": "202", + "x": "37", + "y": "11", "properties": { "size": "17", - "text": "useContext" - } - }, - { - "ID": "12", - "typeID": "TextArea", - "zOrder": "12", - "w": "92", - "h": "43", - "measuredW": "200", - "measuredH": "140", - "x": "139", - "y": "193", - "properties": { - "color": "16770457" + "text": "Reach Router" } }, { - "ID": "13", - "typeID": "Label", - "zOrder": "13", + "ID": "2", + "typeID": "__group__", + "zOrder": "2", "measuredW": "24", - "measuredH": "25", - "x": "173", - "y": "202", - "properties": { - "size": "17", - "text": "......." + "measuredH": "24", + "w": "24", + "h": "24", + "x": "0", + "y": "12", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "2", + "typeID": "Icon", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "3700253", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -3093,17 +2432,76 @@ } }, { - "ID": "14447", - "typeID": "__group__", - "zOrder": "86", - "measuredW": "157", - "measuredH": "44", - "w": "157", - "h": "44", - "x": "561", - "y": "729", + "ID": "14668", + "typeID": "Arrow", + "zOrder": "20", + "w": "497", + "h": "1", + "measuredW": "150", + "measuredH": "100", + "x": "454", + "y": "874", + "properties": { + "color": "2848996", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "p0": { + "x": 497.3020743683919, + "y": -0.11897394490631541 + }, + "p1": { + "x": 0.4685630212909191, + "y": -0.0004822370830620483 + }, + "p2": { + "x": 0.20078475948128016, + "y": -0.11897394490631541 + } + } + }, + { + "ID": "14669", + "typeID": "Arrow", + "zOrder": "19", + "w": "1", + "h": "66", + "measuredW": "150", + "measuredH": "100", + "x": "707", + "y": "874", "properties": { - "controlName": "101-react-advanced-topics:context" + "color": "2848996", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "p0": { + "x": 0.48803395698428176, + "y": 66.30567517486509 + }, + "p1": { + "x": 0.46428571428571463, + "y": -0.003992113361953185 + }, + "p2": { + "x": 0.48803395698428176, + "y": -0.11897394490631541 + }, + "stroke": "dotted" + } + }, + { + "ID": "14670", + "typeID": "__group__", + "zOrder": "73", + "measuredW": "230", + "measuredH": "47", + "w": "230", + "h": "47", + "x": "241", + "y": "851", + "properties": { + "controlName": "106-state-management" }, "children": { "controls": { @@ -3112,27 +2510,27 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "157", - "h": "44", + "w": "230", + "h": "47", "measuredW": "200", "measuredH": "140", "x": "0", "y": "0", "properties": { - "color": "16770457" + "color": "16776960" } }, { "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "60", + "measuredW": "148", "measuredH": "25", - "x": "48", - "y": "10", + "x": "41", + "y": "11", "properties": { "size": "17", - "text": "Context" + "text": "State Management" } } ] @@ -3140,17 +2538,17 @@ } }, { - "ID": "14448", + "ID": "14672", "typeID": "__group__", - "zOrder": "87", - "measuredW": "157", + "zOrder": "74", + "measuredW": "175", "measuredH": "44", - "w": "157", + "w": "175", "h": "44", - "x": "561", - "y": "779", + "x": "231", + "y": "765", "properties": { - "controlName": "102-react-advanced-topics:refs" + "controlName": "100-state-management:context" }, "children": { "controls": { @@ -3159,11 +2557,11 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "157", + "w": "165", "h": "44", "measuredW": "200", "measuredH": "140", - "x": "0", + "x": "10", "y": "0", "properties": { "color": "16770457" @@ -3173,13 +2571,62 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "36", + "measuredW": "60", "measuredH": "25", - "x": "60", + "x": "63", "y": "10", "properties": { "size": "17", - "text": "Refs" + "text": "Context" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "0", + "y": "9", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "10027263", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -3187,17 +2634,17 @@ } }, { - "ID": "14449", + "ID": "14673", "typeID": "__group__", - "zOrder": "88", - "measuredW": "157", + "zOrder": "75", + "measuredW": "174", "measuredH": "44", - "w": "157", + "w": "174", "h": "44", - "x": "561", - "y": "829", + "x": "231", + "y": "717", "properties": { - "controlName": "103-react-advanced-topics:render-props" + "controlName": "101-state-management:zustand" }, "children": { "controls": { @@ -3206,11 +2653,11 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "157", + "w": "164", "h": "44", "measuredW": "200", "measuredH": "140", - "x": "0", + "x": "10", "y": "0", "properties": { "color": "16770457" @@ -3220,60 +2667,62 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "107", + "measuredW": "62", "measuredH": "25", - "x": "25", + "x": "61", "y": "10", "properties": { "size": "17", - "text": "Render Props" - } - } - ] - } - } - }, - { - "ID": "14450", - "typeID": "__group__", - "zOrder": "89", - "measuredW": "224", - "measuredH": "44", - "w": "224", - "h": "44", - "x": "1152", - "y": "640", - "properties": { - "controlName": "104-react-advanced-topics:high-order-components" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "224", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" + "text": "Zustand" } }, { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "188", - "measuredH": "25", - "x": "18", + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "0", "y": "10", - "properties": { - "size": "17", - "text": "High Order Components" + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "10027263", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -3281,17 +2730,17 @@ } }, { - "ID": "14451", + "ID": "14674", "typeID": "__group__", - "zOrder": "90", - "measuredW": "224", + "zOrder": "76", + "measuredW": "176", "measuredH": "44", - "w": "224", + "w": "176", "h": "44", - "x": "1152", - "y": "690", + "x": "231", + "y": "669", "properties": { - "controlName": "105-react-advanced-topics:portals" + "controlName": "102-state-management:redux-and-redux-toolkit" }, "children": { "controls": { @@ -3300,11 +2749,11 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "224", + "w": "166", "h": "44", "measuredW": "200", "measuredH": "140", - "x": "0", + "x": "10", "y": "0", "properties": { "color": "16770457" @@ -3314,13 +2763,78 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "53", + "measuredW": "115", "measuredH": "25", - "x": "85", + "x": "35", "y": "10", "properties": { "size": "17", - "text": "Portals" + "text": "Redux / Toolkit" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "0", + "y": "10", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "2", + "typeID": "Icon", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "3700253", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -3328,17 +2842,47 @@ } }, { - "ID": "14452", + "ID": "14676", + "typeID": "Arrow", + "zOrder": "18", + "w": "1", + "h": "93", + "measuredW": "150", + "measuredH": "100", + "x": "319", + "y": "785", + "properties": { + "color": "2848996", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "p0": { + "x": 0.48803395698428176, + "y": 93.15044501005173 + }, + "p1": { + "x": 0.46428571428571475, + "y": -0.003992113361953184 + }, + "p2": { + "x": 0.48803395698428176, + "y": -0.19048075572618473 + }, + "stroke": "dotted" + } + }, + { + "ID": "14679", "typeID": "__group__", - "zOrder": "91", - "measuredW": "224", + "zOrder": "77", + "measuredW": "174", "measuredH": "44", - "w": "224", + "w": "174", "h": "44", - "x": "1152", - "y": "739", + "x": "232", + "y": "621", "properties": { - "controlName": "106-react-advanced-topics:error-boundaries" + "controlName": "103-state-management:mobx" }, "children": { "controls": { @@ -3347,11 +2891,11 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "224", + "w": "164", "h": "44", "measuredW": "200", "measuredH": "140", - "x": "0", + "x": "10", "y": "0", "properties": { "color": "16770457" @@ -3361,13 +2905,78 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "132", + "measuredW": "44", "measuredH": "25", - "x": "47", + "x": "70", "y": "10", "properties": { "size": "17", - "text": "Error Boundaries" + "text": "MobX" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "0", + "y": "10", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "2", + "typeID": "Icon", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "3700253", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -3375,17 +2984,17 @@ } }, { - "ID": "14453", + "ID": "14680", "typeID": "__group__", - "zOrder": "92", - "measuredW": "224", + "zOrder": "78", + "measuredW": "174", "measuredH": "44", - "w": "224", + "w": "174", "h": "44", - "x": "1152", - "y": "788", + "x": "232", + "y": "573", "properties": { - "controlName": "107-react-advanced-topics:fiber-architecture" + "controlName": "104-state-management:recoil" }, "children": { "controls": { @@ -3394,11 +3003,11 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "224", + "w": "164", "h": "44", "measuredW": "200", "measuredH": "140", - "x": "0", + "x": "10", "y": "0", "properties": { "color": "16770457" @@ -3408,13 +3017,62 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "138", + "measuredW": "49", "measuredH": "25", - "x": "43", + "x": "67", "y": "10", "properties": { "size": "17", - "text": "Fiber Architecture" + "text": "Recoil" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "0", + "y": "10", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "10027263", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -3422,17 +3080,17 @@ } }, { - "ID": "14454", + "ID": "14681", "typeID": "__group__", - "zOrder": "93", - "measuredW": "201", - "measuredH": "50", - "w": "201", - "h": "50", - "x": "744", - "y": "1002", - "properties": { - "controlName": "102-react-ecosystem" + "zOrder": "79", + "measuredW": "227", + "measuredH": "47", + "w": "227", + "h": "47", + "x": "244", + "y": "1056", + "properties": { + "controlName": "107-styling" }, "children": { "controls": { @@ -3441,8 +3099,8 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "201", - "h": "50", + "w": "227", + "h": "47", "measuredW": "200", "measuredH": "140", "x": "0", @@ -3455,13 +3113,13 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "84", + "measuredW": "51", "measuredH": "25", - "x": "56", - "y": "12", + "x": "88", + "y": "10", "properties": { "size": "17", - "text": "Ecosystem" + "text": "Styling" } } ] @@ -3469,64 +3127,46 @@ } }, { - "ID": "14455", - "typeID": "__group__", - "zOrder": "94", - "measuredW": "202", - "measuredH": "44", - "w": "202", - "h": "44", - "x": "990", - "y": "957", + "ID": "14682", + "typeID": "Arrow", + "zOrder": "17", + "w": "1", + "h": "577", + "measuredW": "150", + "measuredH": "100", + "x": "298", + "y": "876", "properties": { - "controlName": "105-react-ecosystem:forms" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "202", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "48", - "measuredH": "25", - "x": "77", - "y": "10", - "properties": { - "size": "17", - "text": "Forms" - } - } - ] + "color": "2848996", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "p0": { + "x": 0.20078475948128016, + "y": 577.1975430248967 + }, + "p1": { + "x": 0.46856302129091965, + "y": -0.0004822370830620473 + }, + "p2": { + "x": 0.20078475948128016, + "y": -0.11897394490631541 } } }, { - "ID": "14456", + "ID": "14683", "typeID": "__group__", - "zOrder": "95", - "measuredW": "171", + "zOrder": "80", + "measuredW": "166", "measuredH": "44", - "w": "171", + "w": "166", "h": "44", - "x": "1239", - "y": "861", + "x": "598", + "y": "1195", "properties": { - "controlName": "100-react-ecosystem:forms:react-hook-form" + "controlName": "105-styling:chakra-ui" }, "children": { "controls": { @@ -3535,7 +3175,7 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "171", + "w": "157", "h": "44", "measuredW": "200", "measuredH": "140", @@ -3549,13 +3189,78 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "135", + "measuredW": "78", "measuredH": "25", - "x": "19", + "x": "40", "y": "10", "properties": { "size": "17", - "text": "React Hook Form" + "text": "Chakra UI" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "142", + "y": "10", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "2", + "typeID": "Icon", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "3700253", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -3563,17 +3268,17 @@ } }, { - "ID": "14457", + "ID": "14684", "typeID": "__group__", - "zOrder": "96", - "measuredW": "171", + "zOrder": "81", + "measuredW": "165", "measuredH": "44", - "w": "171", + "w": "165", "h": "44", - "x": "1239", - "y": "909", + "x": "597", + "y": "1148", "properties": { - "controlName": "101-react-ecosystem:forms:formik" + "controlName": "104-styling:material-ui" }, "children": { "controls": { @@ -3582,7 +3287,7 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "171", + "w": "157", "h": "44", "measuredW": "200", "measuredH": "140", @@ -3596,13 +3301,78 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "52", + "measuredW": "86", "measuredH": "25", - "x": "60", + "x": "36", "y": "10", "properties": { "size": "17", - "text": "Formik" + "text": "Material UI" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "141", + "y": "10", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "2", + "typeID": "Icon", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "3700253", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -3610,17 +3380,17 @@ } }, { - "ID": "14458", + "ID": "14685", "typeID": "__group__", - "zOrder": "97", - "measuredW": "171", + "zOrder": "82", + "measuredW": "167", "measuredH": "44", - "w": "171", + "w": "167", "h": "44", - "x": "1239", - "y": "957", + "x": "598", + "y": "1054", "properties": { - "controlName": "102-react-ecosystem:forms:final-form" + "controlName": "102-styling:mantine" }, "children": { "controls": { @@ -3629,7 +3399,7 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "171", + "w": "157", "h": "44", "measuredW": "200", "measuredH": "140", @@ -3643,13 +3413,62 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "82", + "measuredW": "63", "measuredH": "25", - "x": "46", + "x": "47", "y": "10", "properties": { "size": "17", - "text": "Final Form" + "text": "Mantine" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "143", + "y": "10", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "10027263", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -3657,17 +3476,17 @@ } }, { - "ID": "14459", + "ID": "14686", "typeID": "__group__", - "zOrder": "98", - "measuredW": "157", + "zOrder": "83", + "measuredW": "167", "measuredH": "44", - "w": "157", + "w": "167", "h": "44", - "x": "545", - "y": "1001", + "x": "597", + "y": "1101", "properties": { - "controlName": "100-react-ecosystem:routers" + "controlName": "103-styling:tailwind" }, "children": { "controls": { @@ -3696,7 +3515,56 @@ "y": "10", "properties": { "size": "17", - "text": "Routers" + "text": "Tailwind" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "143", + "y": "10", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "10027263", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -3704,17 +3572,137 @@ } }, { - "ID": "14460", + "ID": "14687", + "typeID": "Arrow", + "zOrder": "13", + "w": "170", + "h": "10", + "measuredW": "150", + "measuredH": "100", + "x": "445", + "y": "1067", + "properties": { + "color": "2848996", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "p0": { + "x": 170.15151515151513, + "y": 10.881026055093571 + }, + "p1": { + "x": 0.46856302129091937, + "y": -0.0004822370830620513 + }, + "p2": { + "x": 0.08755558946864994, + "y": 0.40174459352692793 + }, + "stroke": "dotted" + } + }, + { + "ID": "14688", + "typeID": "Arrow", + "zOrder": "14", + "w": "160", + "h": "49", + "measuredW": "150", + "measuredH": "100", + "x": "453", + "y": "1079", + "properties": { + "color": "2848996", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "stroke": "dotted", + "p0": { + "x": 159.9948370393879, + "y": 49.03492956155333 + }, + "p1": { + "x": 0.4948398930687969, + "y": -0.06769152207708602 + }, + "p2": { + "x": 0.0831404204171804, + "y": 0.39512183994975203 + } + } + }, + { + "ID": "14689", + "typeID": "Arrow", + "zOrder": "15", + "w": "164", + "h": "93", + "measuredW": "150", + "measuredH": "100", + "x": "446", + "y": "1085", + "properties": { + "color": "2848996", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "stroke": "dotted", + "p0": { + "x": 164.32964209573845, + "y": 92.3410360190694 + }, + "p1": { + "x": 0.41660090341695827, + "y": -0.10834198348411798 + }, + "p2": { + "x": 0.4201530612933766, + "y": -0.27448827275134136 + } + } + }, + { + "ID": "14690", + "typeID": "Arrow", + "zOrder": "16", + "w": "165", + "h": "133", + "measuredW": "150", + "measuredH": "100", + "x": "445", + "y": "1093", + "properties": { + "color": "2848996", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "stroke": "dotted", + "p0": { + "x": 165.32964209573845, + "y": 132.31454500476048 + }, + "p1": { + "x": 0.4477509372866056, + "y": -0.11613270851109678 + }, + "p2": { + "x": 0.08755558946864994, + "y": -0.2789034418026404 + } + } + }, + { + "ID": "14691", "typeID": "__group__", - "zOrder": "99", - "measuredW": "158", + "zOrder": "84", + "measuredW": "210", "measuredH": "44", - "w": "158", + "w": "210", "h": "44", - "x": "319", - "y": "967", + "x": "347", + "y": "979", "properties": { - "controlName": "100-react-ecosystem:routers:react-router" + "controlName": "100-styling:styled-components" }, "children": { "controls": { @@ -3723,7 +3711,6 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "158", "h": "44", "measuredW": "200", "measuredH": "140", @@ -3737,13 +3724,78 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "104", + "measuredW": "150", "measuredH": "25", - "x": "27", + "x": "24", "y": "10", "properties": { "size": "17", - "text": "React Router" + "text": "Styled Components" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "186", + "y": "9", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "2", + "typeID": "Icon", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "3700253", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -3751,17 +3803,17 @@ } }, { - "ID": "14461", + "ID": "14692", "typeID": "__group__", - "zOrder": "100", - "measuredW": "157", + "zOrder": "85", + "measuredW": "210", "measuredH": "44", - "w": "157", + "w": "210", "h": "44", - "x": "319", - "y": "1017", + "x": "347", + "y": "931", "properties": { - "controlName": "101-react-ecosystem:routers:reach-router" + "controlName": "101-styling:emotion" }, "children": { "controls": { @@ -3770,7 +3822,7 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "157", + "w": "201", "h": "44", "measuredW": "200", "measuredH": "140", @@ -3784,13 +3836,78 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "108", + "measuredW": "64", "measuredH": "25", - "x": "26", + "x": "69", "y": "10", "properties": { "size": "17", - "text": "Reach Router" + "text": "Emotion" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "186", + "y": "8", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "2", + "typeID": "Icon", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "3700253", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -3798,17 +3915,47 @@ } }, { - "ID": "14462", + "ID": "14693", + "typeID": "Arrow", + "zOrder": "12", + "w": "1", + "h": "91", + "measuredW": "150", + "measuredH": "100", + "x": "439", + "y": "1002", + "properties": { + "color": "2848996", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "stroke": "dotted", + "p0": { + "x": 0.48803395698428176, + "y": 90.42424242424227 + }, + "p1": { + "x": 0.4642857142857146, + "y": -0.003992113361953182 + }, + "p2": { + "x": 0.48803395698428176, + "y": -0.48484848484849863 + } + } + }, + { + "ID": "14695", "typeID": "__group__", - "zOrder": "101", - "measuredW": "157", - "measuredH": "44", - "w": "157", - "h": "44", - "x": "545", - "y": "1307", + "zOrder": "86", + "measuredW": "214", + "measuredH": "47", + "w": "214", + "h": "47", + "x": "250", + "y": "1436", "properties": { - "controlName": "103-react-ecosystem:api-calls" + "controlName": "108-api-calls" }, "children": { "controls": { @@ -3817,14 +3964,14 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "157", - "h": "44", + "w": "214", + "h": "47", "measuredW": "200", "measuredH": "140", "x": "0", "y": "0", "properties": { - "color": "16770457" + "color": "16776960" } }, { @@ -3833,8 +3980,8 @@ "zOrder": "1", "measuredW": "69", "measuredH": "25", - "x": "43", - "y": "10", + "x": "72", + "y": "11", "properties": { "size": "17", "text": "API Calls" @@ -3845,64 +3992,44 @@ } }, { - "ID": "14463", - "typeID": "__group__", - "zOrder": "102", - "measuredW": "157", - "measuredH": "44", - "w": "157", - "h": "44", - "x": "320", - "y": "1380", + "ID": "14696", + "typeID": "TextArea", + "zOrder": "87", + "w": "105", + "h": "200", + "measuredW": "200", + "measuredH": "140", + "x": "366", + "y": "1195", "properties": { - "controlName": "104-react-ecosystem:api-calls:axios" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "157", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "41", - "measuredH": "25", - "x": "57", - "y": "10", - "properties": { - "size": "17", - "text": "Axios" - } - } - ] - } + "color": "16777215" + } + }, + { + "ID": "14697", + "typeID": "Label", + "zOrder": "88", + "measuredW": "71", + "measuredH": "25", + "x": "383", + "y": "1356", + "properties": { + "size": "17", + "text": "GraphQL" } }, { - "ID": "14464", + "ID": "14698", "typeID": "__group__", - "zOrder": "103", - "measuredW": "157", + "zOrder": "89", + "measuredW": "167", "measuredH": "44", - "w": "157", + "w": "167", "h": "44", - "x": "319", - "y": "1430", + "x": "341", + "y": "1210", "properties": { - "controlName": "105-react-ecosystem:api-calls:unfetch" + "controlName": "100-api-calls:apollo" }, "children": { "controls": { @@ -3911,7 +4038,7 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "157", + "w": "156", "h": "44", "measuredW": "200", "measuredH": "140", @@ -3925,13 +4052,62 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "61", + "measuredW": "48", "measuredH": "25", - "x": "49", + "x": "55", "y": "10", "properties": { "size": "17", - "text": "Unfetch" + "text": "Apollo" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "143", + "y": "10", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "10027263", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -3939,17 +4115,17 @@ } }, { - "ID": "14465", + "ID": "14699", "typeID": "__group__", - "zOrder": "104", - "measuredW": "157", + "zOrder": "90", + "measuredW": "165", "measuredH": "44", - "w": "157", + "w": "165", "h": "44", - "x": "319", - "y": "1479", + "x": "341", + "y": "1258", "properties": { - "controlName": "106-react-ecosystem:api-calls:superagent" + "controlName": "101-api-calls:relay" }, "children": { "controls": { @@ -3958,7 +4134,7 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "157", + "w": "156", "h": "44", "measuredW": "200", "measuredH": "140", @@ -3972,13 +4148,78 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "88", + "measuredW": "44", "measuredH": "25", - "x": "35", + "x": "56", "y": "10", "properties": { "size": "17", - "text": "superagent" + "text": "Relay" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "141", + "y": "10", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "2", + "typeID": "Icon", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "3700253", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -3986,30 +4227,17 @@ } }, { - "ID": "14466", - "typeID": "Label", - "zOrder": "105", - "measuredW": "117", - "measuredH": "25", - "x": "337", - "y": "1528", - "properties": { - "size": "17", - "text": "REST API Calls" - } - }, - { - "ID": "14467", + "ID": "14700", "typeID": "__group__", - "zOrder": "106", - "measuredW": "157", + "zOrder": "91", + "measuredW": "165", "measuredH": "44", - "w": "157", + "w": "165", "h": "44", - "x": "545", - "y": "1412", + "x": "341", + "y": "1305", "properties": { - "controlName": "101-react-ecosystem:api-calls:swr" + "controlName": "102-api-calls:urql" }, "children": { "controls": { @@ -4018,7 +4246,7 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "157", + "w": "156", "h": "44", "measuredW": "200", "measuredH": "140", @@ -4032,13 +4260,78 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "38", + "measuredW": "32", "measuredH": "25", - "x": "60", + "x": "62", "y": "10", "properties": { "size": "17", - "text": "SWR" + "text": "Urql" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "141", + "y": "10", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "2", + "typeID": "Icon", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "3700253", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -4046,17 +4339,74 @@ } }, { - "ID": "14468", + "ID": "14701", + "typeID": "Arrow", + "zOrder": "11", + "w": "1", + "h": "179", + "measuredW": "150", + "measuredH": "100", + "x": "418", + "y": "1377", + "properties": { + "color": "2848996", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "stroke": "dotted", + "p0": { + "x": 0.48803395698428176, + "y": 178.1633254647479 + }, + "p1": { + "x": 0.4642857142857147, + "y": -0.00399211336195318 + }, + "p2": { + "x": 0.48803395698428176, + "y": -0.48484848484849863 + } + } + }, + { + "ID": "14702", + "typeID": "TextArea", + "zOrder": "92", + "w": "105", + "h": "248", + "measuredW": "200", + "measuredH": "140", + "x": "366", + "y": "1525", + "properties": { + "color": "16777215" + } + }, + { + "ID": "14703", + "typeID": "Label", + "zOrder": "93", + "measuredW": "44", + "measuredH": "25", + "x": "397", + "y": "1539", + "properties": { + "size": "17", + "text": "REST" + } + }, + { + "ID": "14704", "typeID": "__group__", - "zOrder": "107", - "measuredW": "156", + "zOrder": "94", + "measuredW": "165", "measuredH": "44", - "w": "156", + "w": "165", "h": "44", - "x": "319", - "y": "1243", + "x": "336", + "y": "1571", "properties": { - "controlName": "102-react-ecosystem:api-calls:apollo" + "controlName": "103-api-calls:swr" }, "children": { "controls": { @@ -4079,13 +4429,78 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "48", + "measuredW": "38", "measuredH": "25", - "x": "55", + "x": "59", "y": "10", "properties": { "size": "17", - "text": "Apollo" + "text": "SWR" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "141", + "y": "10", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "2", + "typeID": "Icon", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "icon": { + "ID": "check-circle", + "size": "small" + }, + "color": "10027263" + } + } + ] + } } } ] @@ -4093,17 +4508,17 @@ } }, { - "ID": "14469", + "ID": "14705", "typeID": "__group__", - "zOrder": "108", - "measuredW": "156", + "zOrder": "95", + "measuredW": "165", "measuredH": "44", - "w": "156", + "w": "165", "h": "44", - "x": "319", - "y": "1291", + "x": "337", + "y": "1667", "properties": { - "controlName": "103-react-ecosystem:api-calls:relay-modern" + "controlName": "105-api-calls:axios" }, "children": { "controls": { @@ -4112,7 +4527,7 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "156", + "w": "157", "h": "44", "measuredW": "200", "measuredH": "140", @@ -4126,73 +4541,78 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "107", + "measuredW": "41", "measuredH": "25", - "x": "25", + "x": "57", "y": "10", "properties": { "size": "17", - "text": "Relay Modern" - } - } - ] - } - } - }, - { - "ID": "14470", - "typeID": "Label", - "zOrder": "109", - "measuredW": "71", - "measuredH": "25", - "x": "360", - "y": "1341", - "properties": { - "size": "17", - "text": "GraphQL" - } - }, - { - "ID": "14471", - "typeID": "__group__", - "zOrder": "110", - "measuredW": "202", - "measuredH": "44", - "w": "202", - "h": "44", - "x": "990", - "y": "1035", - "properties": { - "controlName": "106-react-ecosystem:testing" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "202", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" + "text": "Axios" } }, { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "56", - "measuredH": "25", - "x": "72", + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "141", "y": "10", - "properties": { - "size": "17", - "text": "Testing" + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "2", + "typeID": "Icon", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "3700253", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -4200,17 +4620,17 @@ } }, { - "ID": "14472", + "ID": "14707", "typeID": "__group__", - "zOrder": "111", - "measuredW": "218", + "zOrder": "96", + "measuredW": "165", "measuredH": "44", - "w": "218", + "w": "165", "h": "44", - "x": "1239", - "y": "1084", + "x": "338", + "y": "1715", "properties": { - "controlName": "100-react-ecosystem:testing:jest" + "controlName": "106-api-calls:superagent" }, "children": { "controls": { @@ -4219,7 +4639,7 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "218", + "w": "157", "h": "44", "measuredW": "200", "measuredH": "140", @@ -4233,13 +4653,78 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "33", + "measuredW": "88", "measuredH": "25", - "x": "92", + "x": "35", "y": "10", "properties": { "size": "17", - "text": "Jest" + "text": "superagent" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "141", + "y": "10", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "2", + "typeID": "Icon", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "3700253", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -4247,17 +4732,17 @@ } }, { - "ID": "14473", + "ID": "14708", "typeID": "__group__", - "zOrder": "112", - "measuredW": "218", + "zOrder": "97", + "measuredW": "165", "measuredH": "44", - "w": "218", + "w": "165", "h": "44", - "x": "1239", - "y": "1134", + "x": "335", + "y": "1619", "properties": { - "controlName": "101-react-ecosystem:testing:react-testing-library" + "controlName": "104-api-calls:react-query" }, "children": { "controls": { @@ -4266,7 +4751,7 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "218", + "w": "157", "h": "44", "measuredW": "200", "measuredH": "140", @@ -4280,13 +4765,78 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "164", + "measuredW": "90", "measuredH": "25", - "x": "25", - "y": "10", + "x": "34", + "y": "9", "properties": { "size": "17", - "text": "React Testing Library" + "text": "react-query" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "141", + "y": "10", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "2", + "typeID": "Icon", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "icon": { + "ID": "check-circle", + "size": "small" + }, + "color": "10027263" + } + } + ] + } } } ] @@ -4294,17 +4844,17 @@ } }, { - "ID": "14474", + "ID": "14710", "typeID": "__group__", - "zOrder": "113", - "measuredW": "218", - "measuredH": "44", - "w": "218", - "h": "44", - "x": "1239", - "y": "1184", + "zOrder": "98", + "measuredW": "202", + "measuredH": "47", + "w": "202", + "h": "47", + "x": "771", + "y": "1436", "properties": { - "controlName": "102-react-ecosystem:testing:cypress" + "controlName": "109-testing" }, "children": { "controls": { @@ -4313,27 +4863,27 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "218", - "h": "44", + "w": "202", + "h": "47", "measuredW": "200", "measuredH": "140", "x": "0", "y": "0", "properties": { - "color": "16770457" + "color": "16776960" } }, { "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "63", + "measuredW": "56", "measuredH": "25", - "x": "76", - "y": "10", + "x": "73", + "y": "11", "properties": { "size": "17", - "text": "Cypress" + "text": "Testing" } } ] @@ -4341,17 +4891,17 @@ } }, { - "ID": "14475", + "ID": "14711", "typeID": "__group__", - "zOrder": "114", - "measuredW": "202", + "zOrder": "99", + "measuredW": "109", "measuredH": "44", - "w": "202", + "w": "109", "h": "44", - "x": "997", - "y": "1124", + "x": "733", + "y": "1290", "properties": { - "controlName": "107-react-ecosystem:state-management" + "controlName": "100-testing:jest" }, "children": { "controls": { @@ -4360,11 +4910,11 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "202", + "w": "100", "h": "44", "measuredW": "200", "measuredH": "140", - "x": "0", + "x": "9", "y": "0", "properties": { "color": "16770457" @@ -4374,13 +4924,62 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "148", + "measuredW": "33", "measuredH": "25", - "x": "27", + "x": "42", "y": "10", "properties": { "size": "17", - "text": "State Management" + "text": "Jest" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "0", + "y": "10", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "10027263", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -4388,17 +4987,17 @@ } }, { - "ID": "14476", + "ID": "14712", "typeID": "__group__", - "zOrder": "115", - "measuredW": "155", + "zOrder": "100", + "measuredW": "123", "measuredH": "44", - "w": "155", + "w": "123", "h": "44", - "x": "1047", - "y": "1207", + "x": "847", + "y": "1290", "properties": { - "controlName": "100-react-ecosystem:state-management:context-state" + "controlName": "101-testing:vitest" }, "children": { "controls": { @@ -4407,7 +5006,7 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "155", + "w": "112", "h": "44", "measuredW": "200", "measuredH": "140", @@ -4421,13 +5020,78 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "117", + "measuredW": "44", "measuredH": "25", - "x": "17", + "x": "34", "y": "10", "properties": { "size": "17", - "text": "Context / State" + "text": "Vitest" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "99", + "y": "10", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "2", + "typeID": "Icon", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "3700253", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -4435,17 +5099,17 @@ } }, { - "ID": "14477", + "ID": "14713", "typeID": "__group__", - "zOrder": "116", - "measuredW": "155", + "zOrder": "101", + "measuredW": "229", "measuredH": "44", - "w": "155", + "w": "229", "h": "44", - "x": "1047", - "y": "1303", + "x": "730", + "y": "1339", "properties": { - "controlName": "101-react-ecosystem:state-management:redux" + "controlName": "102-testing:react-testing-library" }, "children": { "controls": { @@ -4454,11 +5118,11 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "155", + "w": "218", "h": "44", "measuredW": "200", "measuredH": "140", - "x": "0", + "x": "11", "y": "0", "properties": { "color": "16770457" @@ -4468,13 +5132,62 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "50", + "measuredW": "164", "measuredH": "25", - "x": "53", + "x": "36", "y": "10", "properties": { "size": "17", - "text": "Redux" + "text": "React Testing Library" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "0", + "y": "10", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "10027263", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -4482,17 +5195,90 @@ } }, { - "ID": "14478", + "ID": "14714", + "typeID": "TextArea", + "zOrder": "10", + "w": "249", + "h": "131", + "measuredW": "200", + "measuredH": "140", + "x": "725", + "y": "1273", + "properties": { + "color": "16777215" + } + }, + { + "ID": "14717", + "typeID": "Arrow", + "zOrder": "9", + "w": "399", + "h": "1", + "measuredW": "150", + "measuredH": "100", + "x": "432", + "y": "1459", + "properties": { + "color": "2848996", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "p0": { + "x": 398.87452368273557, + "y": -0.1189739449064291 + }, + "p1": { + "x": 0.46856302129091915, + "y": -0.00048223708306204834 + }, + "p2": { + "x": 0.20078475948128016, + "y": -0.11897394490631541 + } + } + }, + { + "ID": "14718", + "typeID": "Arrow", + "zOrder": "8", + "w": "1", + "h": "158", + "measuredW": "150", + "measuredH": "100", + "x": "871", + "y": "1383", + "properties": { + "color": "2848996", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "stroke": "dotted", + "p0": { + "x": 0.48803395698428176, + "y": 157.48267742941835 + }, + "p1": { + "x": 0.4642857142857147, + "y": -0.003992113361953185 + }, + "p2": { + "x": 0.48803395698428176, + "y": -0.11897394490631541 + } + } + }, + { + "ID": "14719", "typeID": "__group__", - "zOrder": "117", - "measuredW": "155", + "zOrder": "102", + "measuredW": "161", "measuredH": "44", - "w": "155", + "w": "161", "h": "44", - "x": "1047", - "y": "1351", + "x": "821", + "y": "1517", "properties": { - "controlName": "102-react-ecosystem:state-management:mobx" + "controlName": "103-testing:cypress" }, "children": { "controls": { @@ -4501,7 +5287,7 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "155", + "w": "152", "h": "44", "measuredW": "200", "measuredH": "140", @@ -4515,13 +5301,78 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "44", + "measuredW": "63", "measuredH": "25", - "x": "56", + "x": "44", "y": "10", "properties": { "size": "17", - "text": "MobX" + "text": "Cypress" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "137", + "y": "10", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "2", + "typeID": "Icon", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "3700253", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -4529,17 +5380,17 @@ } }, { - "ID": "14479", + "ID": "14720", "typeID": "__group__", - "zOrder": "118", - "measuredW": "157", + "zOrder": "103", + "measuredW": "162", "measuredH": "44", - "w": "157", + "w": "162", "h": "44", - "x": "544", - "y": "1112", + "x": "821", + "y": "1565", "properties": { - "controlName": "101-react-ecosystem:ssr" + "controlName": "104-testing:playwright" }, "children": { "controls": { @@ -4548,7 +5399,7 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "157", + "w": "152", "h": "44", "measuredW": "200", "measuredH": "140", @@ -4562,13 +5413,62 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "33", + "measuredW": "78", "measuredH": "25", - "x": "61", + "x": "37", "y": "10", "properties": { "size": "17", - "text": "SSR" + "text": "Playwright" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "138", + "y": "10", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "10027263", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -4576,64 +5476,46 @@ } }, { - "ID": "14480", - "typeID": "__group__", - "zOrder": "119", - "measuredW": "158", - "measuredH": "44", - "w": "158", - "h": "44", - "x": "317", - "y": "1133", + "ID": "14721", + "typeID": "Arrow", + "zOrder": "7", + "w": "323", + "h": "336", + "measuredW": "150", + "measuredH": "100", + "x": "949", + "y": "1119", "properties": { - "controlName": "100-react-ecosystem:ssr:next-js" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "158", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "52", - "measuredH": "25", - "x": "52", - "y": "10", - "properties": { - "size": "17", - "text": "Next.js" - } - } - ] + "color": "2848996", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "p0": { + "x": 323.71054144095206, + "y": -0.2577704536804504 + }, + "p1": { + "x": 0.5105886846310793, + "y": 0.2003859568009807 + }, + "p2": { + "x": 0.23583113021061308, + "y": 335.9299197382693 } } }, { - "ID": "14481", + "ID": "14722", "typeID": "__group__", - "zOrder": "120", - "measuredW": "157", - "measuredH": "44", - "w": "157", - "h": "44", - "x": "1053", - "y": "1467", + "zOrder": "104", + "measuredW": "202", + "measuredH": "47", + "w": "202", + "h": "47", + "x": "1169", + "y": "1092", "properties": { - "controlName": "108-react-ecosystem:styling" + "controlName": "110-frameworks" }, "children": { "controls": { @@ -4642,27 +5524,27 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "157", - "h": "44", + "w": "202", + "h": "47", "measuredW": "200", "measuredH": "140", "x": "0", "y": "0", "properties": { - "color": "16770457" + "color": "16776960" } }, { "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "51", + "measuredW": "94", "measuredH": "25", - "x": "51", - "y": "10", + "x": "54", + "y": "11", "properties": { "size": "17", - "text": "Styling" + "text": "Frameworks" } } ] @@ -4670,17 +5552,17 @@ } }, { - "ID": "14482", + "ID": "14723", "typeID": "__group__", - "zOrder": "121", - "measuredW": "157", + "zOrder": "105", + "measuredW": "167", "measuredH": "44", - "w": "157", + "w": "167", "h": "44", - "x": "1270", - "y": "1413", + "x": "1213", + "y": "1014", "properties": { - "controlName": "100-react-ecosystem:styling:chakra-ui" + "controlName": "101-frameworks:next-js" }, "children": { "controls": { @@ -4689,7 +5571,7 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "157", + "w": "158", "h": "44", "measuredW": "200", "measuredH": "140", @@ -4703,13 +5585,62 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "78", + "measuredW": "52", "measuredH": "25", - "x": "40", + "x": "52", "y": "10", "properties": { "size": "17", - "text": "Chakra UI" + "text": "Next.js" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "143", + "y": "10", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "10027263", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -4717,17 +5648,17 @@ } }, { - "ID": "14483", + "ID": "14724", "typeID": "__group__", - "zOrder": "122", - "measuredW": "157", + "zOrder": "106", + "measuredW": "169", "measuredH": "44", - "w": "157", + "w": "169", "h": "44", - "x": "1270", - "y": "1462", + "x": "1212", + "y": "966", "properties": { - "controlName": "101-react-ecosystem:styling:material-ui" + "controlName": "100-frameworks:remix" }, "children": { "controls": { @@ -4736,7 +5667,7 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "157", + "w": "158", "h": "44", "measuredW": "200", "measuredH": "140", @@ -4750,13 +5681,78 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "86", + "measuredW": "49", "measuredH": "25", - "x": "36", + "x": "54", "y": "10", "properties": { "size": "17", - "text": "Material UI" + "text": "Remix" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "145", + "y": "10", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "2", + "typeID": "Icon", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "3700253", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -4764,17 +5760,76 @@ } }, { - "ID": "14484", + "ID": "14725", + "typeID": "Arrow", + "zOrder": "6", + "w": "1", + "h": "87", + "measuredW": "150", + "measuredH": "100", + "x": "1293", + "y": "1023", + "properties": { + "color": "2848996", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "stroke": "dotted", + "p0": { + "x": 0.48803395698428176, + "y": 87.26690962551424 + }, + "p1": { + "x": 0.46428571428571475, + "y": -0.0039921133619531856 + }, + "p2": { + "x": 0.48803395698428176, + "y": -0.11897394490631541 + } + } + }, + { + "ID": "14726", + "typeID": "Arrow", + "zOrder": "5", + "w": "1", + "h": "329", + "measuredW": "150", + "measuredH": "100", + "x": "1296", + "y": "1118", + "properties": { + "color": "2848996", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "p0": { + "x": 0.20078475948139385, + "y": 328.45459981746376 + }, + "p1": { + "x": 0.46856302129091976, + "y": -0.0004822370830620469 + }, + "p2": { + "x": 0.20078475948128016, + "y": -0.11897394490631541 + } + } + }, + { + "ID": "14727", "typeID": "__group__", - "zOrder": "123", - "measuredW": "157", + "zOrder": "107", + "measuredW": "202", "measuredH": "44", - "w": "157", + "w": "202", "h": "44", - "x": "1270", - "y": "1510", + "x": "1169", + "y": "1420", "properties": { - "controlName": "102-react-ecosystem:styling:mantine" + "controlName": "111-forms" }, "children": { "controls": { @@ -4783,27 +5838,27 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "157", + "w": "202", "h": "44", "measuredW": "200", "measuredH": "140", "x": "0", "y": "0", "properties": { - "color": "16770457" + "color": "16776960" } }, { "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "63", + "measuredW": "48", "measuredH": "25", - "x": "47", + "x": "77", "y": "10", "properties": { "size": "17", - "text": "Mantine" + "text": "Forms" } } ] @@ -4811,17 +5866,17 @@ } }, { - "ID": "14485", + "ID": "14728", "typeID": "__group__", - "zOrder": "124", - "measuredW": "191", + "zOrder": "108", + "measuredW": "198", "measuredH": "44", - "w": "191", + "w": "198", "h": "44", - "x": "1039", - "y": "1541", + "x": "1190", + "y": "1517", "properties": { - "controlName": "103-react-ecosystem:styling:styled-components" + "controlName": "100-forms:react-hook-form" }, "children": { "controls": { @@ -4830,7 +5885,7 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "191", + "w": "186", "h": "44", "measuredW": "200", "measuredH": "140", @@ -4844,13 +5899,62 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "150", + "measuredW": "135", "measuredH": "25", - "x": "19", + "x": "25", "y": "10", "properties": { "size": "17", - "text": "Styled Components" + "text": "React Hook Form" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "174", + "y": "10", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "10027263", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -4858,17 +5962,17 @@ } }, { - "ID": "14486", + "ID": "14729", "typeID": "__group__", - "zOrder": "125", - "measuredW": "191", + "zOrder": "109", + "measuredW": "195", "measuredH": "44", - "w": "191", + "w": "195", "h": "44", - "x": "1039", - "y": "1590", + "x": "1191", + "y": "1565", "properties": { - "controlName": "104-react-ecosystem:styling:emotion" + "controlName": "101-forms:formik" }, "children": { "controls": { @@ -4877,7 +5981,7 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "191", + "w": "185", "h": "44", "measuredW": "200", "measuredH": "140", @@ -4891,13 +5995,78 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "64", + "measuredW": "52", "measuredH": "25", - "x": "65", + "x": "67", "y": "10", "properties": { "size": "17", - "text": "Emotion" + "text": "Formik" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "171", + "y": "10", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "2", + "typeID": "Icon", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "3700253", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -4905,17 +6074,17 @@ } }, { - "ID": "14487", + "ID": "14730", "typeID": "__group__", - "zOrder": "126", - "measuredW": "157", + "zOrder": "110", + "measuredW": "195", "measuredH": "44", - "w": "157", + "w": "195", "h": "44", - "x": "317", - "y": "1182", + "x": "1191", + "y": "1613", "properties": { - "controlName": "101-react-ecosystem:ssg:gatsby" + "controlName": "102-forms:final-form" }, "children": { "controls": { @@ -4924,7 +6093,7 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "157", + "w": "185", "h": "44", "measuredW": "200", "measuredH": "140", @@ -4938,13 +6107,78 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "54", + "measuredW": "82", "measuredH": "25", - "x": "51", + "x": "52", "y": "10", "properties": { "size": "17", - "text": "Gatsby" + "text": "Final Form" + } + }, + { + "ID": "2", + "typeID": "__group__", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "171", + "y": "10", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "2", + "typeID": "Icon", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "3700253", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] @@ -4952,17 +6186,47 @@ } }, { - "ID": "14488", + "ID": "14731", + "typeID": "Arrow", + "zOrder": "4", + "w": "1", + "h": "107", + "measuredW": "150", + "measuredH": "100", + "x": "1295", + "y": "1437", + "properties": { + "color": "2848996", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "stroke": "dotted", + "p0": { + "x": 0.48803395698428176, + "y": 106.92077890672635 + }, + "p1": { + "x": 0.46428571428571475, + "y": -0.0039921133619531856 + }, + "p2": { + "x": 0.48803395698428176, + "y": -0.11897394490631541 + } + } + }, + { + "ID": "14734", "typeID": "__group__", - "zOrder": "127", - "measuredW": "159", + "zOrder": "113", + "measuredW": "224", "measuredH": "44", - "w": "159", + "w": "224", "h": "44", - "x": "544", - "y": "1594", + "x": "910", + "y": "1679", "properties": { - "controlName": "104-react-ecosystem:mobile" + "controlName": "112-suspense" }, "children": { "controls": { @@ -4971,7 +6235,7 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "159", + "w": "224", "h": "44", "measuredW": "200", "measuredH": "140", @@ -4985,13 +6249,13 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "52", + "measuredW": "77", "measuredH": "25", - "x": "55", + "x": "73", "y": "10", "properties": { "size": "17", - "text": "Mobile" + "text": "Suspense" } } ] @@ -4999,17 +6263,17 @@ } }, { - "ID": "14489", + "ID": "14736", "typeID": "__group__", - "zOrder": "128", - "measuredW": "159", + "zOrder": "114", + "measuredW": "224", "measuredH": "44", - "w": "159", + "w": "224", "h": "44", - "x": "336", - "y": "1594", + "x": "910", + "y": "1727", "properties": { - "controlName": "100-react-ecosystem:mobile:react-native" + "controlName": "113-portals" }, "children": { "controls": { @@ -5018,7 +6282,7 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "159", + "w": "224", "h": "44", "measuredW": "200", "measuredH": "140", @@ -5032,13 +6296,13 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "100", + "measuredW": "53", "measuredH": "25", - "x": "30", + "x": "85", "y": "10", "properties": { "size": "17", - "text": "React Native" + "text": "Portals" } } ] @@ -5046,17 +6310,17 @@ } }, { - "ID": "14490", + "ID": "14737", "typeID": "__group__", - "zOrder": "129", - "measuredW": "157", + "zOrder": "115", + "measuredW": "224", "measuredH": "44", - "w": "157", + "w": "224", "h": "44", - "x": "544", - "y": "1163", + "x": "910", + "y": "1775", "properties": { - "controlName": "102-react-ecosystem:ssg" + "controlName": "114-error-boundaries" }, "children": { "controls": { @@ -5065,7 +6329,7 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "157", + "w": "224", "h": "44", "measuredW": "200", "measuredH": "140", @@ -5079,13 +6343,13 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "34", + "measuredW": "132", "measuredH": "25", - "x": "61", + "x": "47", "y": "10", "properties": { "size": "17", - "text": "SSG" + "text": "Error Boundaries" } } ] @@ -5093,17 +6357,17 @@ } }, { - "ID": "14491", + "ID": "14738", "typeID": "__group__", - "zOrder": "130", - "measuredW": "157", + "zOrder": "116", + "measuredW": "224", "measuredH": "44", - "w": "157", + "w": "224", "h": "44", - "x": "544", - "y": "1232", + "x": "910", + "y": "1823", "properties": { - "controlName": "100-react-ecosystem:api-calls:react-query" + "controlName": "115-fiber-architecture" }, "children": { "controls": { @@ -5112,7 +6376,7 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "157", + "w": "224", "h": "44", "measuredW": "200", "measuredH": "140", @@ -5126,13 +6390,13 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "90", + "measuredW": "138", "measuredH": "25", - "x": "34", - "y": "9", + "x": "43", + "y": "10", "properties": { "size": "17", - "text": "react-query" + "text": "Fiber Architecture" } } ] @@ -5140,145 +6404,131 @@ } }, { - "ID": "14492", - "typeID": "__group__", - "zOrder": "131", - "measuredW": "391", - "measuredH": "55", - "w": "391", - "h": "55", - "x": "702", - "y": "264", + "ID": "14739", + "typeID": "Arrow", + "zOrder": "3", + "w": "100", + "h": "1", + "measuredW": "150", + "measuredH": "100", + "x": "1100", + "y": "1442", "properties": { - "controlName": "ext_link:roadmap.sh/javascript" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "391", - "h": "55", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "4273622", - "borderColor": "4273622" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "230", - "measuredH": "28", - "x": "81", - "y": "14", - "properties": { - "size": "20", - "color": "16777215", - "text": "Visit JavaScript Roadmap" - } - } - ] + "color": "2848996", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "p0": { + "x": 99.87452368273557, + "y": -0.1189739449064291 + }, + "p1": { + "x": 0.4685630212909191, + "y": -0.00048223708306204904 + }, + "p2": { + "x": 0.22113086399144777, + "y": 1.2242665918161038 } } }, { - "ID": "14493", + "ID": "14740", "typeID": "Arrow", - "zOrder": "132", + "zOrder": "111", "w": "1", - "h": "64", + "h": "329", "measuredW": "150", "measuredH": "100", - "x": "899", - "y": "30", + "x": "1100", + "y": "1444", "properties": { "color": "2848996", "direction": "bottom", "leftArrow": "false", "rightArrow": "false", "p0": { - "x": -0.3586399639038973, - "y": 0 + "x": 0.20078475948139385, + "y": 328.45459981746376 }, "p1": { - "x": 0.32941176470588224, - "y": 0 + "x": 0.46856302129091976, + "y": -0.0004822370830620469 }, "p2": { - "x": -0.3586399639038973, - "y": 64 - }, - "stroke": "dotted" - } - }, - { - "ID": "14494", - "typeID": "__group__", - "zOrder": "133", - "measuredW": "391", - "measuredH": "55", - "w": "391", - "h": "55", - "x": "686", - "y": "1657", - "properties": { - "controlName": "ext_link:roadmap.sh/frontend" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "391", - "h": "55", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "4273622", - "borderColor": "4273622" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "219", - "measuredH": "28", - "x": "86", - "y": "14", - "properties": { - "size": "20", - "color": "16777215", - "text": "Visit Frontend Roadmap" - } - } - ] + "x": 0.20078475948128016, + "y": -0.11897394490631541 } } }, { - "ID": "14495", + "ID": "14741", + "typeID": "TextArea", + "zOrder": "112", + "w": "253", + "h": "251", + "measuredW": "200", + "measuredH": "140", + "x": "894", + "y": "1662", + "properties": { + "color": "16777215" + } + }, + { + "ID": "14742", + "typeID": "Label", + "zOrder": "117", + "measuredW": "130", + "measuredH": "25", + "x": "956", + "y": "1877", + "properties": { + "size": "17", + "text": "Advanced Topics" + } + }, + { + "ID": "14743", + "typeID": "Arrow", + "zOrder": "2", + "w": "215", + "h": "1", + "measuredW": "150", + "measuredH": "100", + "x": "707", + "y": "1748", + "properties": { + "color": "2848996", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "p0": { + "x": 214.87452368273557, + "y": -0.1189739449064291 + }, + "p1": { + "x": 0.46856302129091915, + "y": -0.0004822370830620489 + }, + "p2": { + "x": -0.49168649527814523, + "y": -0.1189739449064291 + } + } + }, + { + "ID": "14744", "typeID": "__group__", - "zOrder": "134", - "measuredW": "206", + "zOrder": "118", + "measuredW": "159", "measuredH": "44", - "w": "206", + "w": "159", "h": "44", - "x": "268", - "y": "405", + "x": "628", + "y": "1728", "properties": { - "controlName": "100-react-fundamental-topics:cli-tools:create-react-app" + "controlName": "116-mobile" }, "children": { "controls": { @@ -5287,92 +6537,27 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", - "w": "197", + "w": "159", "h": "44", "measuredW": "200", "measuredH": "140", - "x": "9", + "x": "0", "y": "0", "properties": { - "color": "16770457" + "color": "16776960" } }, { "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "139", + "measuredW": "52", "measuredH": "25", - "x": "38", + "x": "55", "y": "10", "properties": { "size": "17", - "text": "Create React App" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "11", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "2", - "typeID": "Icon", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "3700253", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } + "text": "Mobile" } } ] @@ -5380,17 +6565,17 @@ } }, { - "ID": "14496", + "ID": "14745", "typeID": "__group__", - "zOrder": "135", - "measuredW": "209", + "zOrder": "119", + "measuredW": "159", "measuredH": "44", - "w": "209", + "w": "159", "h": "44", - "x": "268", - "y": "353", + "x": "628", + "y": "1635", "properties": { - "controlName": "101-react-fundamental-topics:cli-tools:vite" + "controlName": "100-mobile:react-native" }, "children": { "controls": { @@ -5399,10 +6584,11 @@ "ID": "0", "typeID": "TextArea", "zOrder": "0", + "w": "159", "h": "44", "measuredW": "200", "measuredH": "140", - "x": "9", + "x": "0", "y": "0", "properties": { "color": "16770457" @@ -5412,62 +6598,13 @@ "ID": "1", "typeID": "Label", "zOrder": "1", - "measuredW": "30", + "measuredW": "100", "measuredH": "25", - "x": "94", + "x": "30", "y": "10", "properties": { "size": "17", - "text": "Vite" - } - }, - { - "ID": "2", - "typeID": "__group__", - "zOrder": "2", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "10", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "10027263", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } + "text": "React Native" } } ] @@ -5475,26 +6612,130 @@ } }, { - "ID": "14497", - "typeID": "Canvas", - "zOrder": "136", - "w": "408", - "h": "202", - "measuredW": "100", - "measuredH": "70", - "x": "215", - "y": "72" + "ID": "14746", + "typeID": "Arrow", + "zOrder": "1", + "w": "1", + "h": "92", + "measuredW": "150", + "measuredH": "100", + "x": "707", + "y": "1653", + "properties": { + "color": "2848996", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "stroke": "dotted", + "p0": { + "x": 0.48803395698428176, + "y": 92.16332546474791 + }, + "p1": { + "x": 0.4642857142857146, + "y": -0.003992113361953179 + }, + "p2": { + "x": 0.48803395698428176, + "y": 0.31578862917604056 + } + } + }, + { + "ID": "14747", + "typeID": "Arrow", + "zOrder": "120", + "w": "1", + "h": "139", + "measuredW": "150", + "measuredH": "100", + "x": "707", + "y": "2078", + "properties": { + "color": "2848996", + "curvature": "-1", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "p0": { + "x": 0, + "y": 0 + }, + "p1": { + "x": 0.4438624012549725, + "y": -0.00008403832147459167 + }, + "p2": { + "x": 0, + "y": 139 + }, + "stroke": "dotted" + } + }, + { + "ID": "14748", + "typeID": "Arrow", + "zOrder": "0", + "w": "1", + "h": "287", + "measuredW": "150", + "measuredH": "100", + "x": "707", + "y": "1760", + "properties": { + "color": "2848996", + "curvature": "-1", + "direction": "bottom", + "leftArrow": "false", + "rightArrow": "false", + "p0": { + "x": 0, + "y": 0 + }, + "p1": { + "x": 0.44386240125497245, + "y": -0.00008403832147459167 + }, + "p2": { + "x": 0, + "y": 286.8596251740669 + } + } + }, + { + "ID": "14749", + "typeID": "TextArea", + "zOrder": "121", + "w": "425", + "h": "124", + "measuredW": "200", + "measuredH": "140", + "x": "494", + "y": "2009" + }, + { + "ID": "14750", + "typeID": "Label", + "zOrder": "122", + "measuredW": "369", + "measuredH": "25", + "x": "523", + "y": "2029", + "properties": { + "size": "17", + "text": "Visit the Frontend Developer Roadmap for more" + } }, { - "ID": "14498", + "ID": "14752", "typeID": "__group__", - "zOrder": "137", - "measuredW": "191", - "measuredH": "27", - "w": "191", - "h": "27", - "x": "250", - "y": "147", + "zOrder": "123", + "measuredW": "370", + "measuredH": "44", + "w": "370", + "h": "44", + "x": "523", + "y": "2064", "properties": { "controlName": "ext_link:roadmap.sh/frontend" }, @@ -5503,64 +6744,29 @@ "control": [ { "ID": "0", - "typeID": "Label", + "typeID": "TextArea", "zOrder": "0", - "measuredW": "158", - "measuredH": "26", - "x": "33", + "w": "370", + "h": "44", + "measuredW": "200", + "measuredH": "140", + "x": "0", "y": "0", "properties": { - "size": "18", - "text": "Frontend Roadmap" + "color": "16770457" } }, { "ID": "1", - "typeID": "__group__", + "typeID": "Label", "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "w": "24", - "h": "24", - "x": "0", - "y": "3", - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "Icon", - "zOrder": "0", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "16777215", - "icon": { - "ID": "circle", - "size": "small" - } - } - }, - { - "ID": "1", - "typeID": "Icon", - "zOrder": "1", - "measuredW": "24", - "measuredH": "24", - "x": "0", - "y": "0", - "properties": { - "color": "10066329", - "icon": { - "ID": "check-circle", - "size": "small" - } - } - } - ] - } + "measuredW": "149", + "measuredH": "25", + "x": "110", + "y": "9", + "properties": { + "size": "17", + "text": "Frontend Roadmap" } } ] @@ -5568,44 +6774,55 @@ } }, { - "ID": "14499", + "ID": "14753", "typeID": "__group__", - "zOrder": "138", - "measuredW": "202", - "measuredH": "27", - "w": "202", - "h": "27", - "x": "250", - "y": "183", + "zOrder": "124", + "measuredW": "352", + "measuredH": "54", + "w": "352", + "h": "54", + "x": "1149", + "y": "266", "properties": { - "controlName": "ext_link:roadmap.sh/javascript" + "controlName": "100-react-roadmap-note" }, "children": { "controls": { "control": [ { "ID": "0", - "typeID": "Label", + "typeID": "TextArea", "zOrder": "0", - "measuredW": "169", + "w": "352", + "h": "54", + "measuredW": "200", + "measuredH": "140", + "x": "0", + "y": "0" + }, + { + "ID": "1", + "typeID": "Label", + "zOrder": "1", + "measuredW": "224", "measuredH": "26", - "x": "33", - "y": "0", + "x": "50", + "y": "14", "properties": { "size": "18", - "text": "JavaScript Roadmap" + "text": "Important Note / Click here" } }, { - "ID": "1", + "ID": "2", "typeID": "__group__", - "zOrder": "1", + "zOrder": "2", "measuredW": "24", "measuredH": "24", "w": "24", "h": "24", - "x": "0", - "y": "3", + "x": "18", + "y": "18", "children": { "controls": { "control": [ @@ -5634,11 +6851,11 @@ "x": "0", "y": "0", "properties": { - "color": "10066329", "icon": { "ID": "check-circle", "size": "small" - } + }, + "color": "13576743" } } ] @@ -5650,33 +6867,28 @@ } }, { - "ID": "14500", + "ID": "14754", "typeID": "__group__", - "zOrder": "139", - "measuredW": "178", - "measuredH": "27", - "w": "178", - "h": "27", - "x": "250", - "y": "219", - "properties": { - "controlName": "ext_link:roadmap.sh/nodejs" - }, + "zOrder": "125", + "measuredW": "408", + "measuredH": "162", + "w": "408", + "h": "162", + "x": "185", + "y": "85", "children": { "controls": { "control": [ { "ID": "0", - "typeID": "Label", + "typeID": "Canvas", "zOrder": "0", - "measuredW": "145", - "measuredH": "26", - "x": "33", - "y": "0", - "properties": { - "size": "18", - "text": "Node.js Roadmap" - } + "w": "408", + "h": "162", + "measuredW": "100", + "measuredH": "70", + "x": "0", + "y": "0" }, { "ID": "1", @@ -5686,8 +6898,8 @@ "measuredH": "24", "w": "24", "h": "24", - "x": "0", - "y": "3", + "x": "23", + "y": "21", "children": { "controls": { "control": [ @@ -5716,392 +6928,218 @@ "x": "0", "y": "0", "properties": { - "color": "10066329", + "color": "10027263", "icon": { "ID": "check-circle", "size": "small" } } } - ] - } - } - } - ] - } - } - }, - { - "ID": "14501", - "typeID": "__group__", - "zOrder": "140", - "measuredW": "218", - "measuredH": "44", - "w": "218", - "h": "44", - "x": "1240", - "y": "1035", - "properties": { - "controlName": "103-react-ecosystem:testing:vitest" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "218", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "44", - "measuredH": "25", - "x": "87", - "y": "10", - "properties": { - "size": "17", - "text": "Vitest" - } - } - ] - } - } - }, - { - "ID": "14502", - "typeID": "__group__", - "zOrder": "141", - "measuredW": "218", - "measuredH": "44", - "w": "218", - "h": "44", - "x": "1239", - "y": "1234", - "properties": { - "controlName": "104-react-ecosystem:testing:playwright" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "218", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "78", - "measuredH": "25", - "x": "70", - "y": "10", - "properties": { - "size": "17", - "text": "Playwright" - } - } - ] - } - } - }, - { - "ID": "14503", - "typeID": "Label", - "zOrder": "142", - "measuredW": "209", - "measuredH": "32", - "x": "250", - "y": "99", - "properties": { - "size": "24", - "text": "Related Roadmaps" - } - }, - { - "ID": "14504", - "typeID": "__group__", - "zOrder": "143", - "measuredW": "153", - "measuredH": "44", - "w": "153", - "h": "44", - "x": "929", - "y": "565", - "properties": { - "controlName": "109-react-fundamental-topics:events" - }, - "children": { - "controls": { - "control": [ - { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "153", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" - } - }, - { - "ID": "1", - "typeID": "Label", - "zOrder": "1", - "measuredW": "53", - "measuredH": "25", - "x": "50", - "y": "10", - "properties": { - "size": "17", - "text": "Events" - } - } - ] - } - } - }, - { - "ID": "14505", - "typeID": "__group__", - "zOrder": "144", - "measuredW": "155", - "measuredH": "44", - "w": "155", - "h": "44", - "x": "1048", - "y": "1255", - "properties": { - "controlName": "101-react-ecosystem:state-management:zustand" - }, - "children": { - "controls": { - "control": [ + ] + } + } + }, { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "155", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", + "ID": "2", + "typeID": "Label", + "zOrder": "2", + "measuredW": "269", + "measuredH": "24", + "x": "59", + "y": "21", "properties": { - "color": "16770457" + "size": "16", + "text": "Personal Recommendation / Opinion" } }, { - "ID": "1", + "ID": "3", "typeID": "Label", - "zOrder": "1", - "measuredW": "62", - "measuredH": "25", - "x": "47", - "y": "10", + "zOrder": "3", + "measuredW": "159", + "measuredH": "24", + "x": "59", + "y": "118", "properties": { - "size": "17", - "text": "Zustand" + "size": "16", + "text": "I wouldn't recommend" } - } - ] - } - } - }, - { - "ID": "14507", - "typeID": "__group__", - "zOrder": "145", - "measuredW": "158", - "measuredH": "44", - "w": "158", - "h": "44", - "x": "317", - "y": "1084", - "properties": { - "controlName": "100-react-ecosystem:ssr:remix" - }, - "children": { - "controls": { - "control": [ + }, { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "158", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", + "ID": "4", + "typeID": "Icon", + "zOrder": "4", + "measuredW": "24", + "measuredH": "24", + "x": "23", + "y": "118", "properties": { - "color": "16770457" + "color": "10066329", + "icon": { + "ID": "circle", + "size": "small" + } } }, { - "ID": "1", + "ID": "5", "typeID": "Label", - "zOrder": "1", - "measuredW": "49", - "measuredH": "25", - "x": "54", - "y": "10", + "zOrder": "5", + "w": "324", + "measuredW": "315", + "measuredH": "24", + "x": "60", + "y": "86", "properties": { - "size": "17", - "text": "Remix" + "size": "16", + "text": "Order in roadmap not strict (Learn anytime)" } - } - ] - } - } - }, - { - "ID": "14508", - "typeID": "Arrow", - "zOrder": "1", - "w": "96", - "h": "30", - "measuredW": "150", - "measuredH": "100", - "x": "461", - "y": "1100", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "bottom", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 96.17695738701968, - "y": 29.91337767979394 - }, - "p1": { - "x": 0.5740721807586135, - "y": 0.016256006543298205 - }, - "p2": { - "x": -0.14352726765127954, - "y": 0.27630547835678954 - } - } - }, - { - "ID": "14509", - "typeID": "__group__", - "zOrder": "146", - "measuredW": "218", - "measuredH": "44", - "w": "218", - "h": "44", - "x": "1239", - "y": "1303", - "properties": { - "controlName": "100-react-ecosystem:state-management:redux:redux-toolkit" - }, - "children": { - "controls": { - "control": [ + }, { - "ID": "0", - "typeID": "TextArea", - "zOrder": "0", - "w": "218", - "h": "44", - "measuredW": "200", - "measuredH": "140", - "x": "0", - "y": "0", - "properties": { - "color": "16770457" + "ID": "6", + "typeID": "__group__", + "zOrder": "6", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "23", + "y": "86", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "10066329", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } }, { - "ID": "1", + "ID": "7", "typeID": "Label", - "zOrder": "1", - "measuredW": "103", - "measuredH": "25", - "x": "57", - "y": "10", + "zOrder": "7", + "measuredW": "272", + "measuredH": "24", + "x": "59", + "y": "54", "properties": { - "size": "17", - "text": "Redux Toolkit" + "size": "16", + "text": "Alternative Option - Pick this or purple" + } + }, + { + "ID": "8", + "typeID": "__group__", + "zOrder": "8", + "measuredW": "24", + "measuredH": "24", + "w": "24", + "h": "24", + "x": "23", + "y": "53", + "children": { + "controls": { + "control": [ + { + "ID": "0", + "typeID": "Icon", + "zOrder": "0", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "1", + "typeID": "Icon", + "zOrder": "1", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "16777215", + "icon": { + "ID": "circle", + "size": "small" + } + } + }, + { + "ID": "2", + "typeID": "Icon", + "zOrder": "2", + "measuredW": "24", + "measuredH": "24", + "x": "0", + "y": "0", + "properties": { + "color": "3700253", + "icon": { + "ID": "check-circle", + "size": "small" + } + } + } + ] + } } } ] } } - }, - { - "ID": "14510", - "typeID": "Arrow", - "zOrder": "0", - "w": "87", - "h": "2", - "measuredW": "150", - "measuredH": "100", - "x": "1169", - "y": "1324", - "properties": { - "color": "2848996", - "curvature": "-1", - "direction": "top", - "leftArrow": "false", - "rightArrow": "false", - "stroke": "dotted", - "p0": { - "x": 87.08063080147826, - "y": 0.28039844162640293 - }, - "p1": { - "x": 0.4826498422712936, - "y": 0.022082018927444477 - }, - "p2": { - "x": 0.40617436331285717, - "y": -0.3216264545321792 - } - } } ] }, "attributes": { - "name": "New Wireframe 1 copy 3", - "order": 1000016.2408968211, + "name": "New Wireframe 1 copy 2", + "order": 1000006.8992828326, "parentID": null, "notes": "" }, "branchID": "Master", - "resourceID": "13C27694-0370-442D-AECD-EFA2B687DD15", - "mockupH": "1751", - "mockupW": "1285", - "measuredW": "1500", - "measuredH": "1781", + "resourceID": "4BE92169-157F-4FC5-8E20-403CBCF7A6C6", + "mockupH": "2141", + "mockupW": "1316", + "measuredW": "1501", + "measuredH": "2217", "version": "1.0" }, "groupOffset": { diff --git a/public/sitemap.xml b/public/sitemap.xml index 1a4214e35..8cab4ee9a 100644 --- a/public/sitemap.xml +++ b/public/sitemap.xml @@ -27,7 +27,7 @@ https://roadmap.sh/react monthly - 2022-11-14T14:37:04.938Z + 2022-12-28T15:28:34.355Z 1.0