├── .gitignore ├── README.md ├── build-sandbox ├── 10-empty-project │ ├── index.html │ ├── package.json │ └── src │ │ └── main.js ├── 100-dev-server │ ├── .babelrc │ ├── .browserslistrc │ ├── package.json │ ├── public │ │ └── index.html │ ├── src │ │ ├── index.js │ │ ├── main.scss │ │ └── react.png │ └── webpack.config.js ├── 110-prod-config │ ├── .babelrc │ ├── .browserslistrc │ ├── package.json │ ├── public │ │ └── index.html │ ├── src │ │ ├── index.js │ │ ├── main.scss │ │ └── react.png │ └── webpack.config.js ├── 20-babel-config-files │ ├── .babelrc │ ├── index.html │ ├── package.json │ └── src │ │ └── main.js ├── 30-presets │ ├── .babelrc │ ├── index.html │ ├── package.json │ └── src │ │ └── main.js ├── 40-jsx │ ├── .babelrc │ ├── .browserslistrc │ ├── .gitignore │ ├── index.html │ ├── package.json │ └── src │ │ └── main.js ├── 50-webpack-loader │ ├── .babelrc │ ├── .browserslistrc │ ├── .gitignore │ ├── index.html │ ├── package.json │ ├── src │ │ ├── calc.js │ │ ├── index.js │ │ ├── log.js │ │ └── react.png │ └── webpack.config.js ├── 60-file-types │ ├── .babelrc │ ├── .browserslistrc │ ├── index.html │ ├── package.json │ ├── src │ │ ├── calc.js │ │ ├── index.js │ │ ├── log.js │ │ └── react.png │ └── webpack.config.js ├── 70-babel-loader │ ├── .babelrc │ ├── .browserslistrc │ ├── .gitignore │ ├── index.html │ ├── package.json │ ├── src │ │ ├── index.js │ │ └── react.png │ └── webpack.config.js ├── 80-loader-composition │ ├── .babelrc │ ├── .browserslistrc │ ├── index.html │ ├── package.json │ ├── src │ │ ├── index.js │ │ ├── main.css │ │ └── react.png │ └── webpack.config.js └── 90-html-templates │ ├── .babelrc │ ├── .browserslistrc │ ├── package.json │ ├── public │ └── index.html │ ├── src │ ├── index.js │ ├── main.scss │ └── react.png │ └── webpack.config.js ├── hooks └── 10-use-state │ ├── README.md │ ├── package.json │ ├── public │ ├── favicon.ico │ ├── index.html │ ├── logo192.png │ ├── logo512.png │ ├── manifest.json │ └── robots.txt │ └── src │ └── index.js ├── proxy-config-sample ├── README.md ├── package.json ├── public │ └── index.html └── src │ └── index.js ├── re-store ├── 10-create-basic-components │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── bookstore-service-context │ │ │ ├── bookstore-service-context.js │ │ │ └── index.js │ │ ├── error-boundry │ │ │ ├── error-boundry.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── hoc │ │ │ ├── index.js │ │ │ └── with-bookstore-service.js │ │ └── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ ├── index.js │ │ ├── services │ │ └── bookstore-service.js │ │ └── store.js ├── 100-organizing-reducer-code │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── actions │ │ └── index.js │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── book-list-item │ │ │ ├── book-list-item.css │ │ │ ├── book-list-item.js │ │ │ └── index.js │ │ ├── book-list │ │ │ ├── book-list.css │ │ │ ├── book-list.js │ │ │ └── index.js │ │ ├── bookstore-service-context │ │ │ ├── bookstore-service-context.js │ │ │ └── index.js │ │ ├── error-boundry │ │ │ ├── error-boundry.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── hoc │ │ │ ├── index.js │ │ │ └── with-bookstore-service.js │ │ ├── pages │ │ │ ├── cart-page.js │ │ │ ├── home-page.js │ │ │ └── index.js │ │ ├── shop-header │ │ │ ├── index.js │ │ │ ├── shop-header.css │ │ │ └── shop-header.js │ │ ├── shopping-cart-table │ │ │ ├── index.js │ │ │ ├── shopping-cart-table.css │ │ │ └── shopping-cart-table.js │ │ └── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ ├── index.js │ │ ├── reducers │ │ ├── book-list.js │ │ ├── index.js │ │ └── shopping-cart.js │ │ ├── services │ │ └── bookstore-service.js │ │ ├── store.js │ │ └── utils │ │ ├── compose.js │ │ └── index.js ├── 110-store-enhancers │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── actions │ │ └── index.js │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── book-list-item │ │ │ ├── book-list-item.css │ │ │ ├── book-list-item.js │ │ │ └── index.js │ │ ├── book-list │ │ │ ├── book-list.css │ │ │ ├── book-list.js │ │ │ └── index.js │ │ ├── bookstore-service-context │ │ │ ├── bookstore-service-context.js │ │ │ └── index.js │ │ ├── error-boundry │ │ │ ├── error-boundry.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── hoc │ │ │ ├── index.js │ │ │ └── with-bookstore-service.js │ │ ├── pages │ │ │ ├── cart-page.js │ │ │ ├── home-page.js │ │ │ └── index.js │ │ ├── shop-header │ │ │ ├── index.js │ │ │ ├── shop-header.css │ │ │ └── shop-header.js │ │ ├── shopping-cart-table │ │ │ ├── index.js │ │ │ ├── shopping-cart-table.css │ │ │ └── shopping-cart-table.js │ │ └── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ ├── index.js │ │ ├── reducers │ │ ├── book-list.js │ │ ├── index.js │ │ └── shopping-cart.js │ │ ├── services │ │ └── bookstore-service.js │ │ ├── store.js │ │ └── utils │ │ ├── compose.js │ │ └── index.js ├── 120-middleware │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── actions │ │ └── index.js │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── book-list-item │ │ │ ├── book-list-item.css │ │ │ ├── book-list-item.js │ │ │ └── index.js │ │ ├── book-list │ │ │ ├── book-list.css │ │ │ ├── book-list.js │ │ │ └── index.js │ │ ├── bookstore-service-context │ │ │ ├── bookstore-service-context.js │ │ │ └── index.js │ │ ├── error-boundry │ │ │ ├── error-boundry.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── hoc │ │ │ ├── index.js │ │ │ └── with-bookstore-service.js │ │ ├── pages │ │ │ ├── cart-page.js │ │ │ ├── home-page.js │ │ │ └── index.js │ │ ├── shop-header │ │ │ ├── index.js │ │ │ ├── shop-header.css │ │ │ └── shop-header.js │ │ ├── shopping-cart-table │ │ │ ├── index.js │ │ │ ├── shopping-cart-table.css │ │ │ └── shopping-cart-table.js │ │ └── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ ├── index.js │ │ ├── reducers │ │ ├── book-list.js │ │ ├── index.js │ │ └── shopping-cart.js │ │ ├── services │ │ └── bookstore-service.js │ │ ├── store.js │ │ └── utils │ │ ├── compose.js │ │ └── index.js ├── 130-thunk │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── actions │ │ └── index.js │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── book-list-item │ │ │ ├── book-list-item.css │ │ │ ├── book-list-item.js │ │ │ └── index.js │ │ ├── book-list │ │ │ ├── book-list.css │ │ │ ├── book-list.js │ │ │ └── index.js │ │ ├── bookstore-service-context │ │ │ ├── bookstore-service-context.js │ │ │ └── index.js │ │ ├── error-boundry │ │ │ ├── error-boundry.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── hoc │ │ │ ├── index.js │ │ │ └── with-bookstore-service.js │ │ ├── pages │ │ │ ├── cart-page.js │ │ │ ├── home-page.js │ │ │ └── index.js │ │ ├── shop-header │ │ │ ├── index.js │ │ │ ├── shop-header.css │ │ │ └── shop-header.js │ │ ├── shopping-cart-table │ │ │ ├── index.js │ │ │ ├── shopping-cart-table.css │ │ │ └── shopping-cart-table.js │ │ └── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ ├── index.js │ │ ├── reducers │ │ ├── book-list.js │ │ ├── index.js │ │ └── shopping-cart.js │ │ ├── services │ │ └── bookstore-service.js │ │ ├── store.js │ │ └── utils │ │ ├── compose.js │ │ └── index.js ├── 20-redux-components │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── actions │ │ └── index.js │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── bookstore-service-context │ │ │ ├── bookstore-service-context.js │ │ │ └── index.js │ │ ├── error-boundry │ │ │ ├── error-boundry.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── hoc │ │ │ ├── index.js │ │ │ └── with-bookstore-service.js │ │ └── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ ├── index.js │ │ ├── reducers │ │ └── index.js │ │ ├── services │ │ └── bookstore-service.js │ │ └── store.js ├── 30-connecting-components │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── actions │ │ └── index.js │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── book-list-item │ │ │ ├── book-list-item.css │ │ │ ├── book-list-item.js │ │ │ └── index.js │ │ ├── book-list │ │ │ ├── book-list.css │ │ │ ├── book-list.js │ │ │ └── index.js │ │ ├── bookstore-service-context │ │ │ ├── bookstore-service-context.js │ │ │ └── index.js │ │ ├── error-boundry │ │ │ ├── error-boundry.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── hoc │ │ │ ├── index.js │ │ │ └── with-bookstore-service.js │ │ ├── pages │ │ │ ├── cart-page.js │ │ │ ├── home-page.js │ │ │ └── index.js │ │ └── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ ├── index.js │ │ ├── reducers │ │ └── index.js │ │ ├── services │ │ └── bookstore-service.js │ │ ├── store.js │ │ └── utils │ │ ├── compose.js │ │ └── index.js ├── 40-adding-styles │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── actions │ │ └── index.js │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── book-list-item │ │ │ ├── book-list-item.css │ │ │ ├── book-list-item.js │ │ │ └── index.js │ │ ├── book-list │ │ │ ├── book-list.css │ │ │ ├── book-list.js │ │ │ └── index.js │ │ ├── bookstore-service-context │ │ │ ├── bookstore-service-context.js │ │ │ └── index.js │ │ ├── error-boundry │ │ │ ├── error-boundry.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── hoc │ │ │ ├── index.js │ │ │ └── with-bookstore-service.js │ │ ├── pages │ │ │ ├── cart-page.js │ │ │ ├── home-page.js │ │ │ └── index.js │ │ ├── shop-header │ │ │ ├── index.js │ │ │ ├── shop-header.css │ │ │ └── shop-header.js │ │ ├── shopping-cart-table │ │ │ ├── index.js │ │ │ ├── shopping-cart-table.css │ │ │ └── shopping-cart-table.js │ │ └── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ ├── index.js │ │ ├── reducers │ │ └── index.js │ │ ├── services │ │ └── bookstore-service.js │ │ ├── store.js │ │ └── utils │ │ ├── compose.js │ │ └── index.js ├── 50-async-data │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── actions │ │ └── index.js │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── book-list-item │ │ │ ├── book-list-item.css │ │ │ ├── book-list-item.js │ │ │ └── index.js │ │ ├── book-list │ │ │ ├── book-list.css │ │ │ ├── book-list.js │ │ │ └── index.js │ │ ├── bookstore-service-context │ │ │ ├── bookstore-service-context.js │ │ │ └── index.js │ │ ├── error-boundry │ │ │ ├── error-boundry.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── hoc │ │ │ ├── index.js │ │ │ └── with-bookstore-service.js │ │ ├── pages │ │ │ ├── cart-page.js │ │ │ ├── home-page.js │ │ │ └── index.js │ │ ├── shop-header │ │ │ ├── index.js │ │ │ ├── shop-header.css │ │ │ └── shop-header.js │ │ ├── shopping-cart-table │ │ │ ├── index.js │ │ │ ├── shopping-cart-table.css │ │ │ └── shopping-cart-table.js │ │ └── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ ├── index.js │ │ ├── reducers │ │ └── index.js │ │ ├── services │ │ └── bookstore-service.js │ │ ├── store.js │ │ └── utils │ │ ├── compose.js │ │ └── index.js ├── 60-error-handling │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── actions │ │ └── index.js │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── book-list-item │ │ │ ├── book-list-item.css │ │ │ ├── book-list-item.js │ │ │ └── index.js │ │ ├── book-list │ │ │ ├── book-list.css │ │ │ ├── book-list.js │ │ │ └── index.js │ │ ├── bookstore-service-context │ │ │ ├── bookstore-service-context.js │ │ │ └── index.js │ │ ├── error-boundry │ │ │ ├── error-boundry.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── hoc │ │ │ ├── index.js │ │ │ └── with-bookstore-service.js │ │ ├── pages │ │ │ ├── cart-page.js │ │ │ ├── home-page.js │ │ │ └── index.js │ │ ├── shop-header │ │ │ ├── index.js │ │ │ ├── shop-header.css │ │ │ └── shop-header.js │ │ ├── shopping-cart-table │ │ │ ├── index.js │ │ │ ├── shopping-cart-table.css │ │ │ └── shopping-cart-table.js │ │ └── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ ├── index.js │ │ ├── reducers │ │ └── index.js │ │ ├── services │ │ └── bookstore-service.js │ │ ├── store.js │ │ └── utils │ │ ├── compose.js │ │ └── index.js ├── 70-add-element-to-array │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── actions │ │ └── index.js │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── book-list-item │ │ │ ├── book-list-item.css │ │ │ ├── book-list-item.js │ │ │ └── index.js │ │ ├── book-list │ │ │ ├── book-list.css │ │ │ ├── book-list.js │ │ │ └── index.js │ │ ├── bookstore-service-context │ │ │ ├── bookstore-service-context.js │ │ │ └── index.js │ │ ├── error-boundry │ │ │ ├── error-boundry.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── hoc │ │ │ ├── index.js │ │ │ └── with-bookstore-service.js │ │ ├── pages │ │ │ ├── cart-page.js │ │ │ ├── home-page.js │ │ │ └── index.js │ │ ├── shop-header │ │ │ ├── index.js │ │ │ ├── shop-header.css │ │ │ └── shop-header.js │ │ ├── shopping-cart-table │ │ │ ├── index.js │ │ │ ├── shopping-cart-table.css │ │ │ └── shopping-cart-table.js │ │ └── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ ├── index.js │ │ ├── reducers │ │ └── index.js │ │ ├── services │ │ └── bookstore-service.js │ │ ├── store.js │ │ └── utils │ │ ├── compose.js │ │ └── index.js ├── 80-update-element-in-array │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── actions │ │ └── index.js │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── book-list-item │ │ │ ├── book-list-item.css │ │ │ ├── book-list-item.js │ │ │ └── index.js │ │ ├── book-list │ │ │ ├── book-list.css │ │ │ ├── book-list.js │ │ │ └── index.js │ │ ├── bookstore-service-context │ │ │ ├── bookstore-service-context.js │ │ │ └── index.js │ │ ├── error-boundry │ │ │ ├── error-boundry.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── hoc │ │ │ ├── index.js │ │ │ └── with-bookstore-service.js │ │ ├── pages │ │ │ ├── cart-page.js │ │ │ ├── home-page.js │ │ │ └── index.js │ │ ├── shop-header │ │ │ ├── index.js │ │ │ ├── shop-header.css │ │ │ └── shop-header.js │ │ ├── shopping-cart-table │ │ │ ├── index.js │ │ │ ├── shopping-cart-table.css │ │ │ └── shopping-cart-table.js │ │ └── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ ├── index.js │ │ ├── reducers │ │ └── index.js │ │ ├── services │ │ └── bookstore-service.js │ │ ├── store.js │ │ └── utils │ │ ├── compose.js │ │ └── index.js └── 90-delete-element-from-array │ ├── README.md │ ├── package.json │ ├── public │ └── index.html │ └── src │ ├── actions │ └── index.js │ ├── components │ ├── app │ │ ├── app.css │ │ ├── app.js │ │ └── index.js │ ├── book-list-item │ │ ├── book-list-item.css │ │ ├── book-list-item.js │ │ └── index.js │ ├── book-list │ │ ├── book-list.css │ │ ├── book-list.js │ │ └── index.js │ ├── bookstore-service-context │ │ ├── bookstore-service-context.js │ │ └── index.js │ ├── error-boundry │ │ ├── error-boundry.js │ │ └── index.js │ ├── error-indicator │ │ ├── error-indicator.css │ │ ├── error-indicator.js │ │ └── index.js │ ├── hoc │ │ ├── index.js │ │ └── with-bookstore-service.js │ ├── pages │ │ ├── cart-page.js │ │ ├── home-page.js │ │ └── index.js │ ├── shop-header │ │ ├── index.js │ │ ├── shop-header.css │ │ └── shop-header.js │ ├── shopping-cart-table │ │ ├── index.js │ │ ├── shopping-cart-table.css │ │ └── shopping-cart-table.js │ └── spinner │ │ ├── index.js │ │ ├── spinner.css │ │ └── spinner.js │ ├── index.js │ ├── reducers │ └── index.js │ ├── services │ └── bookstore-service.js │ ├── store.js │ └── utils │ ├── compose.js │ └── index.js ├── redux-sandbox ├── 10-redux-ui │ ├── .gitignore │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ └── index.js ├── 20-bind-action-creators │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── actions.js │ │ ├── index.js │ │ └── reducer.js ├── 30-react-with-redux │ ├── .gitignore │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── actions.js │ │ ├── counter.js │ │ ├── index.js │ │ └── reducer.js ├── 40-connect-map-state-to-props │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── actions.js │ │ ├── components │ │ ├── app.js │ │ └── counter.js │ │ ├── index.js │ │ └── reducer.js ├── 50-map-dispatch-to-props │ ├── .gitignore │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── actions.js │ │ ├── components │ │ ├── app.js │ │ └── counter.js │ │ ├── index.js │ │ └── reducer.js └── 60-map-dispatch-to-props-as-object │ ├── .gitignore │ ├── package.json │ ├── public │ └── index.html │ └── src │ ├── actions.js │ ├── components │ ├── app.js │ └── counter.js │ ├── index.js │ └── reducer.js ├── star-db ├── 00-basic-project-structure │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── header │ │ │ ├── header.css │ │ │ ├── header.js │ │ │ └── index.js │ │ ├── item-list │ │ │ ├── index.js │ │ │ ├── item-list.css │ │ │ └── item-list.js │ │ ├── person-details │ │ │ ├── index.js │ │ │ ├── person-details.css │ │ │ └── person-details.js │ │ ├── planet-details │ │ │ ├── index.js │ │ │ ├── planet-details.css │ │ │ └── planet-details.js │ │ ├── random-planet │ │ │ ├── index.js │ │ │ ├── random-planet.css │ │ │ └── random-planet.js │ │ └── starship-details │ │ │ ├── index.js │ │ │ ├── starship-details.css │ │ │ └── starship-details.js │ │ ├── index.js │ │ └── services │ │ └── swapi-service.js ├── 10-transforming-api-data │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── header │ │ │ ├── header.css │ │ │ ├── header.js │ │ │ └── index.js │ │ ├── item-list │ │ │ ├── index.js │ │ │ ├── item-list.css │ │ │ └── item-list.js │ │ ├── person-details │ │ │ ├── index.js │ │ │ ├── person-details.css │ │ │ └── person-details.js │ │ ├── planet-details │ │ │ ├── index.js │ │ │ ├── planet-details.css │ │ │ └── planet-details.js │ │ ├── random-planet │ │ │ ├── index.js │ │ │ ├── random-planet.css │ │ │ └── random-planet.js │ │ └── starship-details │ │ │ ├── index.js │ │ │ ├── starship-details.css │ │ │ └── starship-details.js │ │ ├── index.js │ │ └── services │ │ └── swapi-service.js ├── 100-higher-order-components │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── error-boundry │ │ │ ├── error-boundry.js │ │ │ └── index.js │ │ ├── error-button │ │ │ ├── error-button.css │ │ │ ├── error-button.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── death-star.png │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── header │ │ │ ├── header.css │ │ │ ├── header.js │ │ │ └── index.js │ │ ├── hoc-helpers │ │ │ ├── index.js │ │ │ └── with-data.js │ │ ├── item-details │ │ │ ├── index.js │ │ │ ├── item-details.css │ │ │ └── item-details.js │ │ ├── item-list │ │ │ ├── index.js │ │ │ ├── item-list.css │ │ │ └── item-list.js │ │ ├── people-page │ │ │ ├── index.js │ │ │ ├── people-page.css │ │ │ └── people-page.js │ │ ├── random-planet │ │ │ ├── index.js │ │ │ ├── random-planet.css │ │ │ └── random-planet.js │ │ ├── row │ │ │ ├── index.js │ │ │ ├── row.css │ │ │ └── row.js │ │ └── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ ├── index.html │ │ ├── index.js │ │ └── services │ │ └── swapi-service.js ├── 110-hoc-composition │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── error-boundry │ │ │ ├── error-boundry.js │ │ │ └── index.js │ │ ├── error-button │ │ │ ├── error-button.css │ │ │ ├── error-button.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── death-star.png │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── header │ │ │ ├── header.css │ │ │ ├── header.js │ │ │ └── index.js │ │ ├── hoc-helpers │ │ │ ├── index.js │ │ │ └── with-data.js │ │ ├── item-details │ │ │ ├── index.js │ │ │ ├── item-details.css │ │ │ └── item-details.js │ │ ├── item-list │ │ │ ├── index.js │ │ │ ├── item-list.css │ │ │ └── item-list.js │ │ ├── people-page │ │ │ ├── index.js │ │ │ ├── people-page.css │ │ │ └── people-page.js │ │ ├── random-planet │ │ │ ├── index.js │ │ │ ├── random-planet.css │ │ │ └── random-planet.js │ │ ├── row │ │ │ ├── index.js │ │ │ ├── row.css │ │ │ └── row.js │ │ ├── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ └── sw-components │ │ │ ├── details.js │ │ │ ├── index.js │ │ │ └── item-lists.js │ │ ├── index.html │ │ ├── index.js │ │ └── services │ │ └── swapi-service.js ├── 120-context │ ├── .gitignore │ ├── README.md │ ├── example.txt │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── error-boundry │ │ │ ├── error-boundry.js │ │ │ └── index.js │ │ ├── error-button │ │ │ ├── error-button.css │ │ │ ├── error-button.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── death-star.png │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── header │ │ │ ├── header.css │ │ │ ├── header.js │ │ │ └── index.js │ │ ├── hoc-helpers │ │ │ ├── index.js │ │ │ └── with-data.js │ │ ├── item-details │ │ │ ├── index.js │ │ │ ├── item-details.css │ │ │ └── item-details.js │ │ ├── item-list │ │ │ ├── index.js │ │ │ ├── item-list.css │ │ │ └── item-list.js │ │ ├── people-page │ │ │ ├── index.js │ │ │ ├── people-page.css │ │ │ └── people-page.js │ │ ├── random-planet │ │ │ ├── index.js │ │ │ ├── random-planet.css │ │ │ └── random-planet.js │ │ ├── row │ │ │ ├── index.js │ │ │ ├── row.css │ │ │ └── row.js │ │ ├── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ ├── sw-components │ │ │ ├── details.js │ │ │ ├── index.js │ │ │ └── item-lists.js │ │ └── swapi-service-context │ │ │ ├── index.js │ │ │ └── swapi-service-context.js │ │ ├── index.html │ │ ├── index.js │ │ └── services │ │ ├── dummy-swapi-service.js │ │ └── swapi-service.js ├── 130-hoc-context │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── error-boundry │ │ │ ├── error-boundry.js │ │ │ └── index.js │ │ ├── error-button │ │ │ ├── error-button.css │ │ │ ├── error-button.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── death-star.png │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── header │ │ │ ├── header.css │ │ │ ├── header.js │ │ │ └── index.js │ │ ├── hoc-helpers │ │ │ ├── index.js │ │ │ ├── with-data.js │ │ │ └── with-swapi-service.js │ │ ├── item-details │ │ │ ├── index.js │ │ │ ├── item-details.css │ │ │ └── item-details.js │ │ ├── item-list │ │ │ ├── index.js │ │ │ ├── item-list.css │ │ │ └── item-list.js │ │ ├── people-page │ │ │ ├── index.js │ │ │ ├── people-page.css │ │ │ └── people-page.js │ │ ├── random-planet │ │ │ ├── index.js │ │ │ ├── random-planet.css │ │ │ └── random-planet.js │ │ ├── row │ │ │ ├── index.js │ │ │ ├── row.css │ │ │ └── row.js │ │ ├── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ ├── sw-components │ │ │ ├── index.js │ │ │ ├── item-lists.js │ │ │ ├── person-details.js │ │ │ ├── planet-details.js │ │ │ └── starship-details.js │ │ └── swapi-service-context │ │ │ ├── index.js │ │ │ └── swapi-service-context.js │ │ ├── index.html │ │ ├── index.js │ │ └── services │ │ ├── dummy-swapi-service.js │ │ └── swapi-service.js ├── 140-dynamic-context-switch │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── error-boundry │ │ │ ├── error-boundry.js │ │ │ └── index.js │ │ ├── error-button │ │ │ ├── error-button.css │ │ │ ├── error-button.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── death-star.png │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── header │ │ │ ├── header.css │ │ │ ├── header.js │ │ │ └── index.js │ │ ├── hoc-helpers │ │ │ ├── index.js │ │ │ ├── with-data.js │ │ │ └── with-swapi-service.js │ │ ├── item-details │ │ │ ├── index.js │ │ │ ├── item-details.css │ │ │ └── item-details.js │ │ ├── item-list │ │ │ ├── index.js │ │ │ ├── item-list.css │ │ │ └── item-list.js │ │ ├── people-page │ │ │ ├── index.js │ │ │ ├── people-page.css │ │ │ └── people-page.js │ │ ├── random-planet │ │ │ ├── index.js │ │ │ ├── random-planet.css │ │ │ └── random-planet.js │ │ ├── row │ │ │ ├── index.js │ │ │ ├── row.css │ │ │ └── row.js │ │ ├── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ ├── sw-components │ │ │ ├── index.js │ │ │ ├── item-lists.js │ │ │ ├── person-details.js │ │ │ ├── planet-details.js │ │ │ └── starship-details.js │ │ └── swapi-service-context │ │ │ ├── index.js │ │ │ └── swapi-service-context.js │ │ ├── index.html │ │ ├── index.js │ │ └── services │ │ ├── dummy-swapi-service.js │ │ └── swapi-service.js ├── 150-prop-types │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── error-boundry │ │ │ ├── error-boundry.js │ │ │ └── index.js │ │ ├── error-button │ │ │ ├── error-button.css │ │ │ ├── error-button.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── death-star.png │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── header │ │ │ ├── header.css │ │ │ ├── header.js │ │ │ └── index.js │ │ ├── hoc-helpers │ │ │ ├── compose.js │ │ │ ├── index.js │ │ │ ├── with-child-function.js │ │ │ ├── with-data.js │ │ │ └── with-swapi-service.js │ │ ├── item-details │ │ │ ├── index.js │ │ │ ├── item-details.css │ │ │ └── item-details.js │ │ ├── item-list │ │ │ ├── index.js │ │ │ ├── item-list.css │ │ │ └── item-list.js │ │ ├── pages │ │ │ ├── index.js │ │ │ ├── people-page.js │ │ │ ├── planets-page.js │ │ │ └── starships-page.js │ │ ├── random-planet │ │ │ ├── index.js │ │ │ ├── random-planet.css │ │ │ └── random-planet.js │ │ ├── row │ │ │ ├── index.js │ │ │ ├── row.css │ │ │ └── row.js │ │ ├── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ ├── sw-components │ │ │ ├── index.js │ │ │ ├── item-lists.js │ │ │ ├── person-details.js │ │ │ ├── planet-details.js │ │ │ └── starship-details.js │ │ └── swapi-service-context │ │ │ ├── index.js │ │ │ └── swapi-service-context.js │ │ ├── index.html │ │ ├── index.js │ │ └── services │ │ ├── dummy-swapi-service.js │ │ └── swapi-service.js ├── 160-basic-routing │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── error-boundry │ │ │ ├── error-boundry.js │ │ │ └── index.js │ │ ├── error-button │ │ │ ├── error-button.css │ │ │ ├── error-button.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── death-star.png │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── header │ │ │ ├── header.css │ │ │ ├── header.js │ │ │ └── index.js │ │ ├── hoc-helpers │ │ │ ├── compose.js │ │ │ ├── index.js │ │ │ ├── with-child-function.js │ │ │ ├── with-data.js │ │ │ └── with-swapi-service.js │ │ ├── item-details │ │ │ ├── index.js │ │ │ ├── item-details.css │ │ │ └── item-details.js │ │ ├── item-list │ │ │ ├── index.js │ │ │ ├── item-list.css │ │ │ └── item-list.js │ │ ├── pages │ │ │ ├── index.js │ │ │ ├── people-page.js │ │ │ ├── planets-page.js │ │ │ └── starships-page.js │ │ ├── random-planet │ │ │ ├── index.js │ │ │ ├── random-planet.css │ │ │ └── random-planet.js │ │ ├── row │ │ │ ├── index.js │ │ │ ├── row.css │ │ │ └── row.js │ │ ├── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ ├── sw-components │ │ │ ├── index.js │ │ │ ├── item-lists.js │ │ │ ├── person-details.js │ │ │ ├── planet-details.js │ │ │ └── starship-details.js │ │ └── swapi-service-context │ │ │ ├── index.js │ │ │ └── swapi-service-context.js │ │ ├── index.html │ │ ├── index.js │ │ └── services │ │ ├── dummy-swapi-service.js │ │ └── swapi-service.js ├── 170-how-routing-works │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── error-boundry │ │ │ ├── error-boundry.js │ │ │ └── index.js │ │ ├── error-button │ │ │ ├── error-button.css │ │ │ ├── error-button.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── death-star.png │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── header │ │ │ ├── header.css │ │ │ ├── header.js │ │ │ └── index.js │ │ ├── hoc-helpers │ │ │ ├── compose.js │ │ │ ├── index.js │ │ │ ├── with-child-function.js │ │ │ ├── with-data.js │ │ │ └── with-swapi-service.js │ │ ├── item-details │ │ │ ├── index.js │ │ │ ├── item-details.css │ │ │ └── item-details.js │ │ ├── item-list │ │ │ ├── index.js │ │ │ ├── item-list.css │ │ │ └── item-list.js │ │ ├── pages │ │ │ ├── index.js │ │ │ ├── people-page.js │ │ │ ├── planets-page.js │ │ │ └── starships-page.js │ │ ├── random-planet │ │ │ ├── index.js │ │ │ ├── random-planet.css │ │ │ └── random-planet.js │ │ ├── row │ │ │ ├── index.js │ │ │ ├── row.css │ │ │ └── row.js │ │ ├── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ ├── sw-components │ │ │ ├── index.js │ │ │ ├── item-lists.js │ │ │ ├── person-details.js │ │ │ ├── planet-details.js │ │ │ └── starship-details.js │ │ └── swapi-service-context │ │ │ ├── index.js │ │ │ └── swapi-service-context.js │ │ ├── index.html │ │ ├── index.js │ │ └── services │ │ ├── dummy-swapi-service.js │ │ └── swapi-service.js ├── 180-relative-paths │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── error-boundry │ │ │ ├── error-boundry.js │ │ │ └── index.js │ │ ├── error-button │ │ │ ├── error-button.css │ │ │ ├── error-button.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── death-star.png │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── header │ │ │ ├── header.css │ │ │ ├── header.js │ │ │ └── index.js │ │ ├── hoc-helpers │ │ │ ├── compose.js │ │ │ ├── index.js │ │ │ ├── with-child-function.js │ │ │ ├── with-data.js │ │ │ └── with-swapi-service.js │ │ ├── item-details │ │ │ ├── index.js │ │ │ ├── item-details.css │ │ │ └── item-details.js │ │ ├── item-list │ │ │ ├── index.js │ │ │ ├── item-list.css │ │ │ └── item-list.js │ │ ├── pages │ │ │ ├── index.js │ │ │ ├── people-page.js │ │ │ ├── planets-page.js │ │ │ └── starships-page.js │ │ ├── random-planet │ │ │ ├── index.js │ │ │ ├── random-planet.css │ │ │ └── random-planet.js │ │ ├── row │ │ │ ├── index.js │ │ │ ├── row.css │ │ │ └── row.js │ │ ├── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ ├── sw-components │ │ │ ├── index.js │ │ │ ├── item-lists.js │ │ │ ├── person-details.js │ │ │ ├── planet-details.js │ │ │ └── starship-details.js │ │ └── swapi-service-context │ │ │ ├── index.js │ │ │ └── swapi-service-context.js │ │ ├── index.html │ │ ├── index.js │ │ └── services │ │ ├── dummy-swapi-service.js │ │ └── swapi-service.js ├── 190-switch-component │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── error-boundry │ │ │ ├── error-boundry.js │ │ │ └── index.js │ │ ├── error-button │ │ │ ├── error-button.css │ │ │ ├── error-button.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── death-star.png │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── header │ │ │ ├── header.css │ │ │ ├── header.js │ │ │ └── index.js │ │ ├── hoc-helpers │ │ │ ├── compose.js │ │ │ ├── index.js │ │ │ ├── with-child-function.js │ │ │ ├── with-data.js │ │ │ └── with-swapi-service.js │ │ ├── item-details │ │ │ ├── index.js │ │ │ ├── item-details.css │ │ │ └── item-details.js │ │ ├── item-list │ │ │ ├── index.js │ │ │ ├── item-list.css │ │ │ └── item-list.js │ │ ├── pages │ │ │ ├── index.js │ │ │ ├── login-page.js │ │ │ ├── people-page.js │ │ │ ├── planets-page.js │ │ │ ├── secret-page.js │ │ │ └── starships-page.js │ │ ├── random-planet │ │ │ ├── index.js │ │ │ ├── random-planet.css │ │ │ └── random-planet.js │ │ ├── row │ │ │ ├── index.js │ │ │ ├── row.css │ │ │ └── row.js │ │ ├── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ ├── sw-components │ │ │ ├── index.js │ │ │ ├── item-lists.js │ │ │ ├── person-details.js │ │ │ ├── planet-details.js │ │ │ └── starship-details.js │ │ └── swapi-service-context │ │ │ ├── index.js │ │ │ └── swapi-service-context.js │ │ ├── index.html │ │ ├── index.js │ │ └── services │ │ ├── dummy-swapi-service.js │ │ └── swapi-service.js ├── 20-handling-api-errors │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── header │ │ │ ├── header.css │ │ │ ├── header.js │ │ │ └── index.js │ │ ├── item-list │ │ │ ├── index.js │ │ │ ├── item-list.css │ │ │ └── item-list.js │ │ ├── person-details │ │ │ ├── index.js │ │ │ ├── person-details.css │ │ │ └── person-details.js │ │ ├── planet-details │ │ │ ├── index.js │ │ │ ├── planet-details.css │ │ │ └── planet-details.js │ │ ├── random-planet │ │ │ ├── index.js │ │ │ ├── random-planet.css │ │ │ └── random-planet.js │ │ ├── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ └── starship-details │ │ │ ├── index.js │ │ │ ├── starship-details.css │ │ │ └── starship-details.js │ │ ├── index.html │ │ ├── index.js │ │ └── services │ │ └── swapi-service.js ├── 30-lifecycle-intro │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── death-star.png │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── header │ │ │ ├── header.css │ │ │ ├── header.js │ │ │ └── index.js │ │ ├── item-list │ │ │ ├── index.js │ │ │ ├── item-list.css │ │ │ └── item-list.js │ │ ├── person-details │ │ │ ├── index.js │ │ │ ├── person-details.css │ │ │ └── person-details.js │ │ ├── planet-details │ │ │ ├── index.js │ │ │ ├── planet-details.css │ │ │ └── planet-details.js │ │ ├── random-planet │ │ │ ├── index.js │ │ │ ├── random-planet.css │ │ │ └── random-planet.js │ │ ├── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ └── starship-details │ │ │ ├── index.js │ │ │ ├── starship-details.css │ │ │ └── starship-details.js │ │ ├── index.html │ │ ├── index.js │ │ └── services │ │ └── swapi-service.js ├── 40-component-did-mount-practice │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── death-star.png │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── header │ │ │ ├── header.css │ │ │ ├── header.js │ │ │ └── index.js │ │ ├── item-list │ │ │ ├── index.js │ │ │ ├── item-list.css │ │ │ └── item-list.js │ │ ├── person-details │ │ │ ├── index.js │ │ │ ├── person-details.css │ │ │ └── person-details.js │ │ ├── planet-details │ │ │ ├── index.js │ │ │ ├── planet-details.css │ │ │ └── planet-details.js │ │ ├── random-planet │ │ │ ├── index.js │ │ │ ├── random-planet.css │ │ │ └── random-planet.js │ │ ├── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ └── starship-details │ │ │ ├── index.js │ │ │ ├── starship-details.css │ │ │ └── starship-details.js │ │ ├── index.html │ │ ├── index.js │ │ └── services │ │ └── swapi-service.js ├── 50-component-did-update │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── death-star.png │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── header │ │ │ ├── header.css │ │ │ ├── header.js │ │ │ └── index.js │ │ ├── item-list │ │ │ ├── index.js │ │ │ ├── item-list.css │ │ │ └── item-list.js │ │ ├── person-details │ │ │ ├── index.js │ │ │ ├── person-details.css │ │ │ └── person-details.js │ │ ├── planet-details │ │ │ ├── index.js │ │ │ ├── planet-details.css │ │ │ └── planet-details.js │ │ ├── random-planet │ │ │ ├── index.js │ │ │ ├── random-planet.css │ │ │ └── random-planet.js │ │ ├── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ └── starship-details │ │ │ ├── index.js │ │ │ ├── starship-details.css │ │ │ └── starship-details.js │ │ ├── index.html │ │ ├── index.js │ │ └── services │ │ └── swapi-service.js ├── 60-error-boundries │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── error-button │ │ │ ├── error-button.css │ │ │ ├── error-button.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── death-star.png │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── header │ │ │ ├── header.css │ │ │ ├── header.js │ │ │ └── index.js │ │ ├── item-list │ │ │ ├── index.js │ │ │ ├── item-list.css │ │ │ └── item-list.js │ │ ├── people-page │ │ │ ├── index.js │ │ │ ├── people-page.css │ │ │ └── people-page.js │ │ ├── person-details │ │ │ ├── index.js │ │ │ ├── person-details.css │ │ │ └── person-details.js │ │ ├── random-planet │ │ │ ├── index.js │ │ │ ├── random-planet.css │ │ │ └── random-planet.js │ │ └── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ ├── index.html │ │ ├── index.js │ │ └── services │ │ └── swapi-service.js ├── 70-passing-function-as-data-sources │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── error-button │ │ │ ├── error-button.css │ │ │ ├── error-button.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── death-star.png │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── header │ │ │ ├── header.css │ │ │ ├── header.js │ │ │ └── index.js │ │ ├── item-list │ │ │ ├── index.js │ │ │ ├── item-list.css │ │ │ └── item-list.js │ │ ├── people-page │ │ │ ├── index.js │ │ │ ├── people-page.css │ │ │ └── people-page.js │ │ ├── person-details │ │ │ ├── index.js │ │ │ ├── person-details.css │ │ │ └── person-details.js │ │ ├── random-planet │ │ │ ├── index.js │ │ │ ├── random-planet.css │ │ │ └── random-planet.js │ │ └── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ ├── index.html │ │ ├── index.js │ │ └── services │ │ └── swapi-service.js ├── 80-children │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ │ └── index.html │ └── src │ │ ├── components │ │ ├── app │ │ │ ├── app.css │ │ │ ├── app.js │ │ │ └── index.js │ │ ├── error-boundry │ │ │ ├── error-boundry.js │ │ │ └── index.js │ │ ├── error-button │ │ │ ├── error-button.css │ │ │ ├── error-button.js │ │ │ └── index.js │ │ ├── error-indicator │ │ │ ├── death-star.png │ │ │ ├── error-indicator.css │ │ │ ├── error-indicator.js │ │ │ └── index.js │ │ ├── header │ │ │ ├── header.css │ │ │ ├── header.js │ │ │ └── index.js │ │ ├── item-list │ │ │ ├── index.js │ │ │ ├── item-list.css │ │ │ └── item-list.js │ │ ├── people-page │ │ │ ├── index.js │ │ │ ├── people-page.css │ │ │ └── people-page.js │ │ ├── person-details │ │ │ ├── index.js │ │ │ ├── person-details.css │ │ │ └── person-details.js │ │ ├── random-planet │ │ │ ├── index.js │ │ │ ├── random-planet.css │ │ │ └── random-planet.js │ │ ├── row │ │ │ ├── index.js │ │ │ ├── row.css │ │ │ └── row.js │ │ └── spinner │ │ │ ├── index.js │ │ │ ├── spinner.css │ │ │ └── spinner.js │ │ ├── index.html │ │ ├── index.js │ │ └── services │ │ └── swapi-service.js └── 90-cloning-elements │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── public │ └── index.html │ └── src │ ├── components │ ├── app │ │ ├── app.css │ │ ├── app.js │ │ └── index.js │ ├── error-boundry │ │ ├── error-boundry.js │ │ └── index.js │ ├── error-button │ │ ├── error-button.css │ │ ├── error-button.js │ │ └── index.js │ ├── error-indicator │ │ ├── death-star.png │ │ ├── error-indicator.css │ │ ├── error-indicator.js │ │ └── index.js │ ├── header │ │ ├── header.css │ │ ├── header.js │ │ └── index.js │ ├── item-details │ │ ├── index.js │ │ ├── item-details.css │ │ └── item-details.js │ ├── item-list │ │ ├── index.js │ │ ├── item-list.css │ │ └── item-list.js │ ├── people-page │ │ ├── index.js │ │ ├── people-page.css │ │ └── people-page.js │ ├── random-planet │ │ ├── index.js │ │ ├── random-planet.css │ │ └── random-planet.js │ ├── row │ │ ├── index.js │ │ ├── row.css │ │ └── row.js │ └── spinner │ │ ├── index.js │ │ ├── spinner.css │ │ └── spinner.js │ ├── index.html │ ├── index.js │ └── services │ └── swapi-service.js └── todo ├── 00-empty-react-project ├── .gitignore ├── README.md ├── package.json ├── public │ └── index.html └── src │ └── index.js ├── 10-elements ├── .gitignore ├── README.md ├── package.json ├── public │ └── index.html └── src │ └── index.js ├── 100-adding-removing-items ├── .gitignore ├── README.md ├── package.json ├── public │ └── index.html └── src │ ├── components │ ├── app-header │ │ ├── app-header.css │ │ ├── app-header.js │ │ └── index.js │ ├── app │ │ ├── app.css │ │ ├── app.js │ │ └── index.js │ ├── item-add-form │ │ ├── index.js │ │ ├── item-add-form.css │ │ └── item-add-form.js │ ├── item-status-filter │ │ ├── index.js │ │ ├── item-status-filter.css │ │ └── item-status-filter.js │ ├── search-panel │ │ ├── index.js │ │ ├── search-panel.css │ │ └── search-panel.js │ ├── todo-list-item │ │ ├── index.js │ │ ├── todo-list-item.css │ │ └── todo-list-item.js │ └── todo-list │ │ ├── index.js │ │ ├── todo-list.css │ │ └── todo-list.js │ └── index.js ├── 120-handling-forms ├── .gitignore ├── README.md ├── package.json ├── public │ └── index.html └── src │ ├── components │ ├── app-header │ │ ├── app-header.css │ │ ├── app-header.js │ │ └── index.js │ ├── app │ │ ├── app.css │ │ ├── app.js │ │ └── index.js │ ├── item-add-form │ │ ├── index.js │ │ ├── item-add-form.css │ │ └── item-add-form.js │ ├── item-status-filter │ │ ├── index.js │ │ ├── item-status-filter.css │ │ └── item-status-filter.js │ ├── search-panel │ │ ├── index.js │ │ ├── search-panel.css │ │ └── search-panel.js │ ├── todo-list-item │ │ ├── index.js │ │ ├── todo-list-item.css │ │ └── todo-list-item.js │ └── todo-list │ │ ├── index.js │ │ ├── todo-list.css │ │ └── todo-list.js │ └── index.js ├── 20-components ├── .gitignore ├── README.md ├── package.json ├── public │ └── index.html └── src │ └── index.js ├── 30-project-structure ├── .gitignore ├── README.md ├── package.json ├── public │ └── index.html └── src │ ├── components │ ├── app-header.js │ ├── search-panel.js │ ├── todo-list-item.js │ └── todo-list.js │ └── index.js ├── 40-props ├── .gitignore ├── README.md ├── package.json ├── public │ └── index.html └── src │ ├── components │ ├── app-header.js │ ├── search-panel.js │ ├── todo-list-item.js │ └── todo-list.js │ └── index.js ├── 50-arrays-as-props ├── .gitignore ├── README.md ├── package.json ├── public │ └── index.html └── src │ ├── components │ ├── app-header.js │ ├── search-panel.js │ ├── todo-list-item.js │ └── todo-list.js │ └── index.js ├── 60-collections-and-keys ├── .gitignore ├── README.md ├── package.json ├── public │ └── index.html └── src │ ├── components │ ├── app-header.js │ ├── search-panel.js │ ├── todo-list-item.js │ └── todo-list.js │ └── index.js ├── 70-importing-css ├── .gitignore ├── README.md ├── package.json ├── public │ └── index.html └── src │ ├── components │ ├── app-header.css │ ├── app-header.js │ ├── item-status-filter.css │ ├── item-status-filter.js │ ├── search-panel.css │ ├── search-panel.js │ ├── todo-list-item.css │ ├── todo-list-item.js │ ├── todo-list.css │ └── todo-list.js │ ├── index.css │ └── index.js ├── 80-folder-per-component ├── .gitignore ├── README.md ├── package.json ├── public │ └── index.html └── src │ ├── components │ ├── app-header │ │ ├── app-header.css │ │ ├── app-header.js │ │ └── index.js │ ├── app │ │ ├── app.css │ │ ├── app.js │ │ └── index.js │ ├── item-status-filter │ │ ├── index.js │ │ ├── item-status-filter.css │ │ └── item-status-filter.js │ ├── search-panel │ │ ├── index.js │ │ ├── search-panel.css │ │ └── search-panel.js │ ├── todo-list-item │ │ ├── index.js │ │ ├── todo-list-item.css │ │ └── todo-list-item.js │ └── todo-list │ │ ├── index.js │ │ ├── todo-list.css │ │ └── todo-list.js │ └── index.js ├── 90-events-and-state ├── .gitignore ├── README.md ├── package.json ├── public │ └── index.html └── src │ ├── components │ ├── app-header │ │ ├── app-header.css │ │ ├── app-header.js │ │ └── index.js │ ├── app │ │ ├── app.css │ │ ├── app.js │ │ └── index.js │ ├── item-status-filter │ │ ├── index.js │ │ ├── item-status-filter.css │ │ └── item-status-filter.js │ ├── search-panel │ │ ├── index.js │ │ ├── search-panel.css │ │ └── search-panel.js │ ├── todo-list-item │ │ ├── index.js │ │ ├── todo-list-item.css │ │ └── todo-list-item.js │ └── todo-list │ │ ├── index.js │ │ ├── todo-list.css │ │ └── todo-list.js │ └── index.js └── todo-final ├── .gitignore ├── README.md ├── package.json ├── public └── index.html └── src ├── components ├── app-header │ ├── app-header.css │ ├── app-header.js │ └── index.js ├── app │ ├── app.css │ ├── app.js │ └── index.js ├── item-add-form │ ├── index.js │ ├── item-add-form.css │ └── item-add-form.js ├── item-status-filter │ ├── index.js │ ├── item-status-filter.css │ └── item-status-filter.js ├── search-panel │ ├── index.js │ ├── search-panel.css │ └── search-panel.js ├── todo-list-item │ ├── index.js │ ├── todo-list-item.css │ └── todo-list-item.js └── todo-list │ ├── index.js │ ├── todo-list.css │ └── todo-list.js └── index.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .idea 3 | .DS_Store 4 | package-lock.json 5 | -------------------------------------------------------------------------------- /build-sandbox/10-empty-project/src/main.js: -------------------------------------------------------------------------------- 1 | 2 | class App { 3 | 4 | run() { 5 | const name = 'World'; 6 | console.log(`Hello ${name}`); 7 | } 8 | } 9 | 10 | const app = new App(); 11 | app.run(); 12 | -------------------------------------------------------------------------------- /build-sandbox/100-dev-server/.browserslistrc: -------------------------------------------------------------------------------- 1 | last 2 chrome versions 2 | last 2 firefox versions 3 | last 1 edge versions 4 | -------------------------------------------------------------------------------- /build-sandbox/100-dev-server/src/main.scss: -------------------------------------------------------------------------------- 1 | $body-color: white; 2 | 3 | body { 4 | background-color: $body-color; 5 | } 6 | -------------------------------------------------------------------------------- /build-sandbox/100-dev-server/src/react.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/build-sandbox/100-dev-server/src/react.png -------------------------------------------------------------------------------- /build-sandbox/110-prod-config/.browserslistrc: -------------------------------------------------------------------------------- 1 | last 2 chrome versions 2 | last 2 firefox versions 3 | last 1 edge versions 4 | -------------------------------------------------------------------------------- /build-sandbox/110-prod-config/src/main.scss: -------------------------------------------------------------------------------- 1 | $body-color: white; 2 | 3 | body { 4 | background-color: $body-color; 5 | } 6 | -------------------------------------------------------------------------------- /build-sandbox/110-prod-config/src/react.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/build-sandbox/110-prod-config/src/react.png -------------------------------------------------------------------------------- /build-sandbox/20-babel-config-files/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": [ 3 | "@babel/plugin-transform-template-literals", 4 | "@babel/plugin-transform-classes", 5 | "@babel/plugin-transform-block-scoping" 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /build-sandbox/20-babel-config-files/src/main.js: -------------------------------------------------------------------------------- 1 | class App { 2 | 3 | run() { 4 | const name = 'World'; 5 | console.log(`Hello ${name}`); 6 | } 7 | } 8 | 9 | const app = new App(); 10 | app.run(); -------------------------------------------------------------------------------- /build-sandbox/30-presets/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["@babel/env"], 3 | "plugins": [ 4 | "@babel/proposal-class-properties" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /build-sandbox/30-presets/src/main.js: -------------------------------------------------------------------------------- 1 | class App { 2 | 3 | run = (name = 'World') => { 4 | console.log(`Hello ${name}`); 5 | }; 6 | } 7 | 8 | const app = new App(); 9 | app.run(); 10 | -------------------------------------------------------------------------------- /build-sandbox/40-jsx/.browserslistrc: -------------------------------------------------------------------------------- 1 | last 2 chrome versions 2 | last 2 firefox versions 3 | last 1 edge versions 4 | -------------------------------------------------------------------------------- /build-sandbox/40-jsx/.gitignore: -------------------------------------------------------------------------------- 1 | package-lock.json 2 | build 3 | .idea 4 | node_modules 5 | .DS_Store 6 | -------------------------------------------------------------------------------- /build-sandbox/40-jsx/src/main.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | 4 | const App = () =>

Hello

; 5 | 6 | ReactDOM.render(, 7 | document.getElementById('root')); 8 | -------------------------------------------------------------------------------- /build-sandbox/50-webpack-loader/.browserslistrc: -------------------------------------------------------------------------------- 1 | last 2 chrome versions 2 | last 2 firefox versions 3 | last 1 edge versions 4 | -------------------------------------------------------------------------------- /build-sandbox/50-webpack-loader/.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | package-lock.json 3 | build 4 | .idea 5 | node_modules 6 | .DS_Store 7 | -------------------------------------------------------------------------------- /build-sandbox/50-webpack-loader/src/calc.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | export default class Calc { 4 | 5 | add(...args) { 6 | return args.reduce((a, b) => a + b, 0); 7 | } 8 | 9 | } 10 | -------------------------------------------------------------------------------- /build-sandbox/50-webpack-loader/src/log.js: -------------------------------------------------------------------------------- 1 | 2 | export default class Log { 3 | 4 | log(msg) { 5 | console.log('============'); 6 | console.log(msg); 7 | console.log('============'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /build-sandbox/50-webpack-loader/src/react.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/build-sandbox/50-webpack-loader/src/react.png -------------------------------------------------------------------------------- /build-sandbox/60-file-types/.browserslistrc: -------------------------------------------------------------------------------- 1 | last 2 chrome versions 2 | last 2 firefox versions 3 | last 1 edge versions 4 | -------------------------------------------------------------------------------- /build-sandbox/60-file-types/src/calc.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | export default class Calc { 4 | 5 | add(...args) { 6 | return args.reduce((a, b) => a + b, 0); 7 | } 8 | 9 | } 10 | -------------------------------------------------------------------------------- /build-sandbox/60-file-types/src/log.js: -------------------------------------------------------------------------------- 1 | 2 | export default class Log { 3 | 4 | log(msg) { 5 | console.log('============'); 6 | console.log(msg); 7 | console.log('============'); 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /build-sandbox/60-file-types/src/react.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/build-sandbox/60-file-types/src/react.png -------------------------------------------------------------------------------- /build-sandbox/70-babel-loader/.browserslistrc: -------------------------------------------------------------------------------- 1 | last 2 chrome versions 2 | last 2 firefox versions 3 | last 1 edge versions 4 | -------------------------------------------------------------------------------- /build-sandbox/70-babel-loader/.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | package-lock.json 3 | build 4 | .idea 5 | node_modules 6 | .DS_Store 7 | -------------------------------------------------------------------------------- /build-sandbox/70-babel-loader/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | 4 | const App = () =>

Hello

; 5 | 6 | ReactDOM.render(, document.getElementById('root')); 7 | -------------------------------------------------------------------------------- /build-sandbox/70-babel-loader/src/react.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/build-sandbox/70-babel-loader/src/react.png -------------------------------------------------------------------------------- /build-sandbox/80-loader-composition/.browserslistrc: -------------------------------------------------------------------------------- 1 | last 2 chrome versions 2 | last 2 firefox versions 3 | last 1 edge versions 4 | -------------------------------------------------------------------------------- /build-sandbox/80-loader-composition/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import './main.css'; 4 | 5 | const App = () =>

Hello

; 6 | 7 | ReactDOM.render(, document.getElementById('root')); 8 | -------------------------------------------------------------------------------- /build-sandbox/80-loader-composition/src/main.css: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: coral; 3 | } 4 | -------------------------------------------------------------------------------- /build-sandbox/80-loader-composition/src/react.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/build-sandbox/80-loader-composition/src/react.png -------------------------------------------------------------------------------- /build-sandbox/90-html-templates/.browserslistrc: -------------------------------------------------------------------------------- 1 | last 2 chrome versions 2 | last 2 firefox versions 3 | last 1 edge versions 4 | -------------------------------------------------------------------------------- /build-sandbox/90-html-templates/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import './main.scss'; 4 | 5 | const App = () =>

Hello

; 6 | 7 | ReactDOM.render(, document.getElementById('root')); 8 | -------------------------------------------------------------------------------- /build-sandbox/90-html-templates/src/main.scss: -------------------------------------------------------------------------------- 1 | $body-color: olive; 2 | 3 | body { 4 | background-color: $body-color; 5 | } 6 | -------------------------------------------------------------------------------- /build-sandbox/90-html-templates/src/react.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/build-sandbox/90-html-templates/src/react.png -------------------------------------------------------------------------------- /hooks/10-use-state/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/hooks/10-use-state/public/favicon.ico -------------------------------------------------------------------------------- /hooks/10-use-state/public/logo192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/hooks/10-use-state/public/logo192.png -------------------------------------------------------------------------------- /hooks/10-use-state/public/logo512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/hooks/10-use-state/public/logo512.png -------------------------------------------------------------------------------- /hooks/10-use-state/public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | -------------------------------------------------------------------------------- /proxy-config-sample/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/proxy-config-sample/README.md -------------------------------------------------------------------------------- /proxy-config-sample/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Proxy settings test 6 | 7 | 8 |
9 | 10 | 11 | -------------------------------------------------------------------------------- /proxy-config-sample/src/index.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | fetch('/api/people/1/') 4 | .then(res => res.json()) 5 | .then(data => console.log(data)); 6 | -------------------------------------------------------------------------------- /re-store/10-create-basic-components/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/10-create-basic-components/README.md -------------------------------------------------------------------------------- /re-store/10-create-basic-components/src/components/app/app.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/10-create-basic-components/src/components/app/app.css -------------------------------------------------------------------------------- /re-store/10-create-basic-components/src/components/app/app.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import './app.css'; 3 | 4 | const App = () => { 5 | return
App
; 6 | }; 7 | 8 | export default App; 9 | -------------------------------------------------------------------------------- /re-store/10-create-basic-components/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /re-store/10-create-basic-components/src/components/error-boundry/index.js: -------------------------------------------------------------------------------- 1 | import ErrorBoundry from './error-boundry'; 2 | 3 | export default ErrorBoundry; 4 | -------------------------------------------------------------------------------- /re-store/10-create-basic-components/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /re-store/10-create-basic-components/src/components/hoc/index.js: -------------------------------------------------------------------------------- 1 | import withBookstoreService from './with-bookstore-service'; 2 | 3 | export { 4 | withBookstoreService 5 | }; 6 | -------------------------------------------------------------------------------- /re-store/10-create-basic-components/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /re-store/10-create-basic-components/src/components/spinner/spinner.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/10-create-basic-components/src/components/spinner/spinner.css -------------------------------------------------------------------------------- /re-store/10-create-basic-components/src/components/spinner/spinner.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import './spinner.css'; 3 | 4 | const Spinner = () => { 5 | return
loading...
; 6 | }; 7 | 8 | export default Spinner; 9 | -------------------------------------------------------------------------------- /re-store/10-create-basic-components/src/index.js: -------------------------------------------------------------------------------- 1 | 2 | console.log('hello world'); -------------------------------------------------------------------------------- /re-store/10-create-basic-components/src/services/bookstore-service.js: -------------------------------------------------------------------------------- 1 | 2 | export default class BookstoreService { 3 | 4 | getBooks() { 5 | return []; 6 | } 7 | 8 | } -------------------------------------------------------------------------------- /re-store/10-create-basic-components/src/store.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/10-create-basic-components/src/store.js -------------------------------------------------------------------------------- /re-store/100-organizing-reducer-code/src/components/app/app.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/100-organizing-reducer-code/src/components/app/app.css -------------------------------------------------------------------------------- /re-store/100-organizing-reducer-code/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /re-store/100-organizing-reducer-code/src/components/book-list-item/index.js: -------------------------------------------------------------------------------- 1 | import BookListItem from './book-list-item'; 2 | 3 | export default BookListItem; 4 | -------------------------------------------------------------------------------- /re-store/100-organizing-reducer-code/src/components/book-list/book-list.css: -------------------------------------------------------------------------------- 1 | .book-list { 2 | list-style: none; 3 | } -------------------------------------------------------------------------------- /re-store/100-organizing-reducer-code/src/components/book-list/index.js: -------------------------------------------------------------------------------- 1 | import BookList from './book-list'; 2 | 3 | export default BookList; 4 | -------------------------------------------------------------------------------- /re-store/100-organizing-reducer-code/src/components/error-boundry/index.js: -------------------------------------------------------------------------------- 1 | import ErrorBoundry from './error-boundry'; 2 | 3 | export default ErrorBoundry; 4 | -------------------------------------------------------------------------------- /re-store/100-organizing-reducer-code/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /re-store/100-organizing-reducer-code/src/components/hoc/index.js: -------------------------------------------------------------------------------- 1 | import withBookstoreService from './with-bookstore-service'; 2 | 3 | export { 4 | withBookstoreService 5 | }; 6 | -------------------------------------------------------------------------------- /re-store/100-organizing-reducer-code/src/components/pages/cart-page.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const CartPage = () => { 4 | return
Cart Page
5 | }; 6 | 7 | export default CartPage; 8 | -------------------------------------------------------------------------------- /re-store/100-organizing-reducer-code/src/components/pages/index.js: -------------------------------------------------------------------------------- 1 | import HomePage from './home-page'; 2 | import CartPage from './cart-page'; 3 | 4 | export { 5 | HomePage, 6 | CartPage 7 | }; 8 | -------------------------------------------------------------------------------- /re-store/100-organizing-reducer-code/src/components/shop-header/index.js: -------------------------------------------------------------------------------- 1 | import ShopHeader from './shop-header'; 2 | 3 | export default ShopHeader; -------------------------------------------------------------------------------- /re-store/100-organizing-reducer-code/src/components/shopping-cart-table/index.js: -------------------------------------------------------------------------------- 1 | import ShoppingCartTable from './shopping-cart-table'; 2 | 3 | export default ShoppingCartTable; 4 | -------------------------------------------------------------------------------- /re-store/100-organizing-reducer-code/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /re-store/100-organizing-reducer-code/src/components/spinner/spinner.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/100-organizing-reducer-code/src/components/spinner/spinner.css -------------------------------------------------------------------------------- /re-store/100-organizing-reducer-code/src/components/spinner/spinner.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import './spinner.css'; 3 | 4 | const Spinner = () => { 5 | return
loading...
; 6 | }; 7 | 8 | export default Spinner; 9 | -------------------------------------------------------------------------------- /re-store/100-organizing-reducer-code/src/store.js: -------------------------------------------------------------------------------- 1 | import { createStore } from 'redux'; 2 | 3 | import reducer from './reducers'; 4 | 5 | const store = createStore(reducer); 6 | 7 | export default store; 8 | -------------------------------------------------------------------------------- /re-store/100-organizing-reducer-code/src/utils/compose.js: -------------------------------------------------------------------------------- 1 | const compose = (...funcs) => (comp) => { 2 | return funcs.reduceRight( 3 | (wrapped, f) => f(wrapped), comp); 4 | }; 5 | 6 | export default compose; 7 | -------------------------------------------------------------------------------- /re-store/100-organizing-reducer-code/src/utils/index.js: -------------------------------------------------------------------------------- 1 | import compose from './compose'; 2 | 3 | export { 4 | compose 5 | }; 6 | -------------------------------------------------------------------------------- /re-store/110-store-enhancers/README.md: -------------------------------------------------------------------------------- 1 | Правильно писать ENHANCER 2 | 3 | Enhance - улучшать, усовершенствовать -------------------------------------------------------------------------------- /re-store/110-store-enhancers/src/components/app/app.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/110-store-enhancers/src/components/app/app.css -------------------------------------------------------------------------------- /re-store/110-store-enhancers/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /re-store/110-store-enhancers/src/components/book-list-item/index.js: -------------------------------------------------------------------------------- 1 | import BookListItem from './book-list-item'; 2 | 3 | export default BookListItem; 4 | -------------------------------------------------------------------------------- /re-store/110-store-enhancers/src/components/book-list/book-list.css: -------------------------------------------------------------------------------- 1 | .book-list { 2 | list-style: none; 3 | } -------------------------------------------------------------------------------- /re-store/110-store-enhancers/src/components/book-list/index.js: -------------------------------------------------------------------------------- 1 | import BookList from './book-list'; 2 | 3 | export default BookList; 4 | -------------------------------------------------------------------------------- /re-store/110-store-enhancers/src/components/error-boundry/index.js: -------------------------------------------------------------------------------- 1 | import ErrorBoundry from './error-boundry'; 2 | 3 | export default ErrorBoundry; 4 | -------------------------------------------------------------------------------- /re-store/110-store-enhancers/src/components/error-indicator/error-indicator.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/110-store-enhancers/src/components/error-indicator/error-indicator.css -------------------------------------------------------------------------------- /re-store/110-store-enhancers/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /re-store/110-store-enhancers/src/components/hoc/index.js: -------------------------------------------------------------------------------- 1 | import withBookstoreService from './with-bookstore-service'; 2 | 3 | export { 4 | withBookstoreService 5 | }; 6 | -------------------------------------------------------------------------------- /re-store/110-store-enhancers/src/components/pages/cart-page.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const CartPage = () => { 4 | return
Cart Page
5 | }; 6 | 7 | export default CartPage; 8 | -------------------------------------------------------------------------------- /re-store/110-store-enhancers/src/components/pages/index.js: -------------------------------------------------------------------------------- 1 | import HomePage from './home-page'; 2 | import CartPage from './cart-page'; 3 | 4 | export { 5 | HomePage, 6 | CartPage 7 | }; 8 | -------------------------------------------------------------------------------- /re-store/110-store-enhancers/src/components/shop-header/index.js: -------------------------------------------------------------------------------- 1 | import ShopHeader from './shop-header'; 2 | 3 | export default ShopHeader; -------------------------------------------------------------------------------- /re-store/110-store-enhancers/src/components/shopping-cart-table/index.js: -------------------------------------------------------------------------------- 1 | import ShoppingCartTable from './shopping-cart-table'; 2 | 3 | export default ShoppingCartTable; 4 | -------------------------------------------------------------------------------- /re-store/110-store-enhancers/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /re-store/110-store-enhancers/src/components/spinner/spinner.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/110-store-enhancers/src/components/spinner/spinner.css -------------------------------------------------------------------------------- /re-store/110-store-enhancers/src/components/spinner/spinner.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import './spinner.css'; 3 | 4 | const Spinner = () => { 5 | return
loading...
; 6 | }; 7 | 8 | export default Spinner; 9 | -------------------------------------------------------------------------------- /re-store/110-store-enhancers/src/utils/compose.js: -------------------------------------------------------------------------------- 1 | const compose = (...funcs) => (comp) => { 2 | return funcs.reduceRight( 3 | (wrapped, f) => f(wrapped), comp); 4 | }; 5 | 6 | export default compose; 7 | -------------------------------------------------------------------------------- /re-store/110-store-enhancers/src/utils/index.js: -------------------------------------------------------------------------------- 1 | import compose from './compose'; 2 | 3 | export { 4 | compose 5 | }; 6 | -------------------------------------------------------------------------------- /re-store/120-middleware/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/120-middleware/README.md -------------------------------------------------------------------------------- /re-store/120-middleware/src/components/app/app.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/120-middleware/src/components/app/app.css -------------------------------------------------------------------------------- /re-store/120-middleware/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /re-store/120-middleware/src/components/book-list-item/index.js: -------------------------------------------------------------------------------- 1 | import BookListItem from './book-list-item'; 2 | 3 | export default BookListItem; 4 | -------------------------------------------------------------------------------- /re-store/120-middleware/src/components/book-list/book-list.css: -------------------------------------------------------------------------------- 1 | .book-list { 2 | list-style: none; 3 | } -------------------------------------------------------------------------------- /re-store/120-middleware/src/components/book-list/index.js: -------------------------------------------------------------------------------- 1 | import BookList from './book-list'; 2 | 3 | export default BookList; 4 | -------------------------------------------------------------------------------- /re-store/120-middleware/src/components/error-boundry/index.js: -------------------------------------------------------------------------------- 1 | import ErrorBoundry from './error-boundry'; 2 | 3 | export default ErrorBoundry; 4 | -------------------------------------------------------------------------------- /re-store/120-middleware/src/components/error-indicator/error-indicator.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/120-middleware/src/components/error-indicator/error-indicator.css -------------------------------------------------------------------------------- /re-store/120-middleware/src/components/error-indicator/error-indicator.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import './error-indicator.css'; 3 | 4 | const ErrorIndicator = () => { 5 | return
Error!
; 6 | }; 7 | 8 | export default ErrorIndicator; 9 | -------------------------------------------------------------------------------- /re-store/120-middleware/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /re-store/120-middleware/src/components/hoc/index.js: -------------------------------------------------------------------------------- 1 | import withBookstoreService from './with-bookstore-service'; 2 | 3 | export { 4 | withBookstoreService 5 | }; 6 | -------------------------------------------------------------------------------- /re-store/120-middleware/src/components/pages/cart-page.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const CartPage = () => { 4 | return
Cart Page
5 | }; 6 | 7 | export default CartPage; 8 | -------------------------------------------------------------------------------- /re-store/120-middleware/src/components/pages/index.js: -------------------------------------------------------------------------------- 1 | import HomePage from './home-page'; 2 | import CartPage from './cart-page'; 3 | 4 | export { 5 | HomePage, 6 | CartPage 7 | }; 8 | -------------------------------------------------------------------------------- /re-store/120-middleware/src/components/shop-header/index.js: -------------------------------------------------------------------------------- 1 | import ShopHeader from './shop-header'; 2 | 3 | export default ShopHeader; -------------------------------------------------------------------------------- /re-store/120-middleware/src/components/shopping-cart-table/index.js: -------------------------------------------------------------------------------- 1 | import ShoppingCartTable from './shopping-cart-table'; 2 | 3 | export default ShoppingCartTable; 4 | -------------------------------------------------------------------------------- /re-store/120-middleware/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /re-store/120-middleware/src/components/spinner/spinner.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/120-middleware/src/components/spinner/spinner.css -------------------------------------------------------------------------------- /re-store/120-middleware/src/components/spinner/spinner.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import './spinner.css'; 3 | 4 | const Spinner = () => { 5 | return
loading...
; 6 | }; 7 | 8 | export default Spinner; 9 | -------------------------------------------------------------------------------- /re-store/120-middleware/src/utils/compose.js: -------------------------------------------------------------------------------- 1 | const compose = (...funcs) => (comp) => { 2 | return funcs.reduceRight( 3 | (wrapped, f) => f(wrapped), comp); 4 | }; 5 | 6 | export default compose; 7 | -------------------------------------------------------------------------------- /re-store/120-middleware/src/utils/index.js: -------------------------------------------------------------------------------- 1 | import compose from './compose'; 2 | 3 | export { 4 | compose 5 | }; 6 | -------------------------------------------------------------------------------- /re-store/130-thunk/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/130-thunk/README.md -------------------------------------------------------------------------------- /re-store/130-thunk/src/components/app/app.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/130-thunk/src/components/app/app.css -------------------------------------------------------------------------------- /re-store/130-thunk/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /re-store/130-thunk/src/components/book-list-item/index.js: -------------------------------------------------------------------------------- 1 | import BookListItem from './book-list-item'; 2 | 3 | export default BookListItem; 4 | -------------------------------------------------------------------------------- /re-store/130-thunk/src/components/book-list/book-list.css: -------------------------------------------------------------------------------- 1 | .book-list { 2 | list-style: none; 3 | } -------------------------------------------------------------------------------- /re-store/130-thunk/src/components/book-list/index.js: -------------------------------------------------------------------------------- 1 | import BookList from './book-list'; 2 | 3 | export default BookList; 4 | -------------------------------------------------------------------------------- /re-store/130-thunk/src/components/error-boundry/index.js: -------------------------------------------------------------------------------- 1 | import ErrorBoundry from './error-boundry'; 2 | 3 | export default ErrorBoundry; 4 | -------------------------------------------------------------------------------- /re-store/130-thunk/src/components/error-indicator/error-indicator.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/130-thunk/src/components/error-indicator/error-indicator.css -------------------------------------------------------------------------------- /re-store/130-thunk/src/components/error-indicator/error-indicator.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import './error-indicator.css'; 3 | 4 | const ErrorIndicator = () => { 5 | return
Error!
; 6 | }; 7 | 8 | export default ErrorIndicator; 9 | -------------------------------------------------------------------------------- /re-store/130-thunk/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /re-store/130-thunk/src/components/hoc/index.js: -------------------------------------------------------------------------------- 1 | import withBookstoreService from './with-bookstore-service'; 2 | 3 | export { 4 | withBookstoreService 5 | }; 6 | -------------------------------------------------------------------------------- /re-store/130-thunk/src/components/pages/cart-page.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const CartPage = () => { 4 | return
Cart Page
5 | }; 6 | 7 | export default CartPage; 8 | -------------------------------------------------------------------------------- /re-store/130-thunk/src/components/pages/index.js: -------------------------------------------------------------------------------- 1 | import HomePage from './home-page'; 2 | import CartPage from './cart-page'; 3 | 4 | export { 5 | HomePage, 6 | CartPage 7 | }; 8 | -------------------------------------------------------------------------------- /re-store/130-thunk/src/components/shop-header/index.js: -------------------------------------------------------------------------------- 1 | import ShopHeader from './shop-header'; 2 | 3 | export default ShopHeader; -------------------------------------------------------------------------------- /re-store/130-thunk/src/components/shopping-cart-table/index.js: -------------------------------------------------------------------------------- 1 | import ShoppingCartTable from './shopping-cart-table'; 2 | 3 | export default ShoppingCartTable; 4 | -------------------------------------------------------------------------------- /re-store/130-thunk/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /re-store/130-thunk/src/components/spinner/spinner.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/130-thunk/src/components/spinner/spinner.css -------------------------------------------------------------------------------- /re-store/130-thunk/src/components/spinner/spinner.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import './spinner.css'; 3 | 4 | const Spinner = () => { 5 | return
loading...
; 6 | }; 7 | 8 | export default Spinner; 9 | -------------------------------------------------------------------------------- /re-store/130-thunk/src/utils/compose.js: -------------------------------------------------------------------------------- 1 | const compose = (...funcs) => (comp) => { 2 | return funcs.reduceRight( 3 | (wrapped, f) => f(wrapped), comp); 4 | }; 5 | 6 | export default compose; 7 | -------------------------------------------------------------------------------- /re-store/130-thunk/src/utils/index.js: -------------------------------------------------------------------------------- 1 | import compose from './compose'; 2 | 3 | export { 4 | compose 5 | }; 6 | -------------------------------------------------------------------------------- /re-store/20-redux-components/src/actions/index.js: -------------------------------------------------------------------------------- 1 | 2 | const booksLoaded = (newBooks) => { 3 | return { 4 | type: 'BOOKS_LOADED', 5 | payload: newBooks 6 | }; 7 | }; 8 | 9 | export { 10 | booksLoaded 11 | }; 12 | -------------------------------------------------------------------------------- /re-store/20-redux-components/src/components/app/app.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/20-redux-components/src/components/app/app.css -------------------------------------------------------------------------------- /re-store/20-redux-components/src/components/app/app.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import './app.css'; 3 | 4 | const App = () => { 5 | return
App
; 6 | }; 7 | 8 | export default App; 9 | -------------------------------------------------------------------------------- /re-store/20-redux-components/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /re-store/20-redux-components/src/components/error-boundry/index.js: -------------------------------------------------------------------------------- 1 | import ErrorBoundry from './error-boundry'; 2 | 3 | export default ErrorBoundry; 4 | -------------------------------------------------------------------------------- /re-store/20-redux-components/src/components/error-indicator/error-indicator.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/20-redux-components/src/components/error-indicator/error-indicator.css -------------------------------------------------------------------------------- /re-store/20-redux-components/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /re-store/20-redux-components/src/components/hoc/index.js: -------------------------------------------------------------------------------- 1 | import withBookstoreService from './with-bookstore-service'; 2 | 3 | export { 4 | withBookstoreService 5 | }; 6 | -------------------------------------------------------------------------------- /re-store/20-redux-components/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /re-store/20-redux-components/src/components/spinner/spinner.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/20-redux-components/src/components/spinner/spinner.css -------------------------------------------------------------------------------- /re-store/20-redux-components/src/components/spinner/spinner.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import './spinner.css'; 3 | 4 | const Spinner = () => { 5 | return
loading...
; 6 | }; 7 | 8 | export default Spinner; 9 | -------------------------------------------------------------------------------- /re-store/20-redux-components/src/index.js: -------------------------------------------------------------------------------- 1 | 2 | console.log('hello world'); -------------------------------------------------------------------------------- /re-store/20-redux-components/src/services/bookstore-service.js: -------------------------------------------------------------------------------- 1 | 2 | export default class BookstoreService { 3 | 4 | getBooks() { 5 | return []; 6 | } 7 | 8 | } -------------------------------------------------------------------------------- /re-store/20-redux-components/src/store.js: -------------------------------------------------------------------------------- 1 | import { createStore } from 'redux'; 2 | 3 | import reducer from './reducers'; 4 | 5 | const store = createStore(reducer); 6 | 7 | export default store; 8 | -------------------------------------------------------------------------------- /re-store/30-connecting-components/src/actions/index.js: -------------------------------------------------------------------------------- 1 | 2 | const booksLoaded = (newBooks) => { 3 | return { 4 | type: 'BOOKS_LOADED', 5 | payload: newBooks 6 | }; 7 | }; 8 | 9 | export { 10 | booksLoaded 11 | }; 12 | -------------------------------------------------------------------------------- /re-store/30-connecting-components/src/components/app/app.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/30-connecting-components/src/components/app/app.css -------------------------------------------------------------------------------- /re-store/30-connecting-components/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /re-store/30-connecting-components/src/components/book-list-item/book-list-item.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/30-connecting-components/src/components/book-list-item/book-list-item.css -------------------------------------------------------------------------------- /re-store/30-connecting-components/src/components/book-list-item/index.js: -------------------------------------------------------------------------------- 1 | import BookListItem from './book-list-item'; 2 | 3 | export default BookListItem; 4 | -------------------------------------------------------------------------------- /re-store/30-connecting-components/src/components/book-list/book-list.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/30-connecting-components/src/components/book-list/book-list.css -------------------------------------------------------------------------------- /re-store/30-connecting-components/src/components/book-list/index.js: -------------------------------------------------------------------------------- 1 | import BookList from './book-list'; 2 | 3 | export default BookList; 4 | -------------------------------------------------------------------------------- /re-store/30-connecting-components/src/components/error-boundry/index.js: -------------------------------------------------------------------------------- 1 | import ErrorBoundry from './error-boundry'; 2 | 3 | export default ErrorBoundry; 4 | -------------------------------------------------------------------------------- /re-store/30-connecting-components/src/components/error-indicator/error-indicator.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/30-connecting-components/src/components/error-indicator/error-indicator.css -------------------------------------------------------------------------------- /re-store/30-connecting-components/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /re-store/30-connecting-components/src/components/hoc/index.js: -------------------------------------------------------------------------------- 1 | import withBookstoreService from './with-bookstore-service'; 2 | 3 | export { 4 | withBookstoreService 5 | }; 6 | -------------------------------------------------------------------------------- /re-store/30-connecting-components/src/components/pages/cart-page.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const CartPage = () => { 4 | return
Cart Page
5 | }; 6 | 7 | export default CartPage; 8 | -------------------------------------------------------------------------------- /re-store/30-connecting-components/src/components/pages/index.js: -------------------------------------------------------------------------------- 1 | import HomePage from './home-page'; 2 | import CartPage from './cart-page'; 3 | 4 | export { 5 | HomePage, 6 | CartPage 7 | }; 8 | -------------------------------------------------------------------------------- /re-store/30-connecting-components/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /re-store/30-connecting-components/src/components/spinner/spinner.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/30-connecting-components/src/components/spinner/spinner.css -------------------------------------------------------------------------------- /re-store/30-connecting-components/src/components/spinner/spinner.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import './spinner.css'; 3 | 4 | const Spinner = () => { 5 | return
loading...
; 6 | }; 7 | 8 | export default Spinner; 9 | -------------------------------------------------------------------------------- /re-store/30-connecting-components/src/store.js: -------------------------------------------------------------------------------- 1 | import { createStore } from 'redux'; 2 | 3 | import reducer from './reducers'; 4 | 5 | const store = createStore(reducer); 6 | 7 | export default store; 8 | -------------------------------------------------------------------------------- /re-store/30-connecting-components/src/utils/compose.js: -------------------------------------------------------------------------------- 1 | const compose = (...funcs) => (comp) => { 2 | return funcs.reduceRight( 3 | (wrapped, f) => f(wrapped), comp); 4 | }; 5 | 6 | export default compose; 7 | -------------------------------------------------------------------------------- /re-store/30-connecting-components/src/utils/index.js: -------------------------------------------------------------------------------- 1 | import compose from './compose'; 2 | 3 | export { 4 | compose 5 | }; 6 | -------------------------------------------------------------------------------- /re-store/40-adding-styles/src/actions/index.js: -------------------------------------------------------------------------------- 1 | 2 | const booksLoaded = (newBooks) => { 3 | return { 4 | type: 'BOOKS_LOADED', 5 | payload: newBooks 6 | }; 7 | }; 8 | 9 | export { 10 | booksLoaded 11 | }; 12 | -------------------------------------------------------------------------------- /re-store/40-adding-styles/src/components/app/app.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/40-adding-styles/src/components/app/app.css -------------------------------------------------------------------------------- /re-store/40-adding-styles/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /re-store/40-adding-styles/src/components/book-list-item/index.js: -------------------------------------------------------------------------------- 1 | import BookListItem from './book-list-item'; 2 | 3 | export default BookListItem; 4 | -------------------------------------------------------------------------------- /re-store/40-adding-styles/src/components/book-list/book-list.css: -------------------------------------------------------------------------------- 1 | .book-list { 2 | list-style: none; 3 | } -------------------------------------------------------------------------------- /re-store/40-adding-styles/src/components/book-list/index.js: -------------------------------------------------------------------------------- 1 | import BookList from './book-list'; 2 | 3 | export default BookList; 4 | -------------------------------------------------------------------------------- /re-store/40-adding-styles/src/components/error-boundry/index.js: -------------------------------------------------------------------------------- 1 | import ErrorBoundry from './error-boundry'; 2 | 3 | export default ErrorBoundry; 4 | -------------------------------------------------------------------------------- /re-store/40-adding-styles/src/components/error-indicator/error-indicator.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/40-adding-styles/src/components/error-indicator/error-indicator.css -------------------------------------------------------------------------------- /re-store/40-adding-styles/src/components/error-indicator/error-indicator.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import './error-indicator.css'; 3 | 4 | const ErrorIndicator = () => { 5 | return
Error!
; 6 | }; 7 | 8 | export default ErrorIndicator; 9 | -------------------------------------------------------------------------------- /re-store/40-adding-styles/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /re-store/40-adding-styles/src/components/hoc/index.js: -------------------------------------------------------------------------------- 1 | import withBookstoreService from './with-bookstore-service'; 2 | 3 | export { 4 | withBookstoreService 5 | }; 6 | -------------------------------------------------------------------------------- /re-store/40-adding-styles/src/components/pages/cart-page.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const CartPage = () => { 4 | return
Cart Page
5 | }; 6 | 7 | export default CartPage; 8 | -------------------------------------------------------------------------------- /re-store/40-adding-styles/src/components/pages/index.js: -------------------------------------------------------------------------------- 1 | import HomePage from './home-page'; 2 | import CartPage from './cart-page'; 3 | 4 | export { 5 | HomePage, 6 | CartPage 7 | }; 8 | -------------------------------------------------------------------------------- /re-store/40-adding-styles/src/components/shop-header/index.js: -------------------------------------------------------------------------------- 1 | import ShopHeader from './shop-header'; 2 | 3 | export default ShopHeader; -------------------------------------------------------------------------------- /re-store/40-adding-styles/src/components/shopping-cart-table/index.js: -------------------------------------------------------------------------------- 1 | import ShoppingCartTable from './shopping-cart-table'; 2 | 3 | export default ShoppingCartTable; 4 | -------------------------------------------------------------------------------- /re-store/40-adding-styles/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /re-store/40-adding-styles/src/components/spinner/spinner.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/40-adding-styles/src/components/spinner/spinner.css -------------------------------------------------------------------------------- /re-store/40-adding-styles/src/components/spinner/spinner.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import './spinner.css'; 3 | 4 | const Spinner = () => { 5 | return
loading...
; 6 | }; 7 | 8 | export default Spinner; 9 | -------------------------------------------------------------------------------- /re-store/40-adding-styles/src/store.js: -------------------------------------------------------------------------------- 1 | import { createStore } from 'redux'; 2 | 3 | import reducer from './reducers'; 4 | 5 | const store = createStore(reducer); 6 | 7 | export default store; 8 | -------------------------------------------------------------------------------- /re-store/40-adding-styles/src/utils/compose.js: -------------------------------------------------------------------------------- 1 | const compose = (...funcs) => (comp) => { 2 | return funcs.reduceRight( 3 | (wrapped, f) => f(wrapped), comp); 4 | }; 5 | 6 | export default compose; 7 | -------------------------------------------------------------------------------- /re-store/40-adding-styles/src/utils/index.js: -------------------------------------------------------------------------------- 1 | import compose from './compose'; 2 | 3 | export { 4 | compose 5 | }; 6 | -------------------------------------------------------------------------------- /re-store/50-async-data/src/actions/index.js: -------------------------------------------------------------------------------- 1 | 2 | const booksLoaded = (newBooks) => { 3 | return { 4 | type: 'BOOKS_LOADED', 5 | payload: newBooks 6 | }; 7 | }; 8 | 9 | export { 10 | booksLoaded 11 | }; 12 | -------------------------------------------------------------------------------- /re-store/50-async-data/src/components/app/app.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/50-async-data/src/components/app/app.css -------------------------------------------------------------------------------- /re-store/50-async-data/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /re-store/50-async-data/src/components/book-list-item/index.js: -------------------------------------------------------------------------------- 1 | import BookListItem from './book-list-item'; 2 | 3 | export default BookListItem; 4 | -------------------------------------------------------------------------------- /re-store/50-async-data/src/components/book-list/book-list.css: -------------------------------------------------------------------------------- 1 | .book-list { 2 | list-style: none; 3 | } -------------------------------------------------------------------------------- /re-store/50-async-data/src/components/book-list/index.js: -------------------------------------------------------------------------------- 1 | import BookList from './book-list'; 2 | 3 | export default BookList; 4 | -------------------------------------------------------------------------------- /re-store/50-async-data/src/components/error-boundry/index.js: -------------------------------------------------------------------------------- 1 | import ErrorBoundry from './error-boundry'; 2 | 3 | export default ErrorBoundry; 4 | -------------------------------------------------------------------------------- /re-store/50-async-data/src/components/error-indicator/error-indicator.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/50-async-data/src/components/error-indicator/error-indicator.css -------------------------------------------------------------------------------- /re-store/50-async-data/src/components/error-indicator/error-indicator.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import './error-indicator.css'; 3 | 4 | const ErrorIndicator = () => { 5 | return
Error!
; 6 | }; 7 | 8 | export default ErrorIndicator; 9 | -------------------------------------------------------------------------------- /re-store/50-async-data/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /re-store/50-async-data/src/components/hoc/index.js: -------------------------------------------------------------------------------- 1 | import withBookstoreService from './with-bookstore-service'; 2 | 3 | export { 4 | withBookstoreService 5 | }; 6 | -------------------------------------------------------------------------------- /re-store/50-async-data/src/components/pages/cart-page.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const CartPage = () => { 4 | return
Cart Page
5 | }; 6 | 7 | export default CartPage; 8 | -------------------------------------------------------------------------------- /re-store/50-async-data/src/components/pages/index.js: -------------------------------------------------------------------------------- 1 | import HomePage from './home-page'; 2 | import CartPage from './cart-page'; 3 | 4 | export { 5 | HomePage, 6 | CartPage 7 | }; 8 | -------------------------------------------------------------------------------- /re-store/50-async-data/src/components/shop-header/index.js: -------------------------------------------------------------------------------- 1 | import ShopHeader from './shop-header'; 2 | 3 | export default ShopHeader; -------------------------------------------------------------------------------- /re-store/50-async-data/src/components/shopping-cart-table/index.js: -------------------------------------------------------------------------------- 1 | import ShoppingCartTable from './shopping-cart-table'; 2 | 3 | export default ShoppingCartTable; 4 | -------------------------------------------------------------------------------- /re-store/50-async-data/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /re-store/50-async-data/src/components/spinner/spinner.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/50-async-data/src/components/spinner/spinner.css -------------------------------------------------------------------------------- /re-store/50-async-data/src/components/spinner/spinner.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import './spinner.css'; 3 | 4 | const Spinner = () => { 5 | return
loading...
; 6 | }; 7 | 8 | export default Spinner; 9 | -------------------------------------------------------------------------------- /re-store/50-async-data/src/store.js: -------------------------------------------------------------------------------- 1 | import { createStore } from 'redux'; 2 | 3 | import reducer from './reducers'; 4 | 5 | const store = createStore(reducer); 6 | 7 | export default store; 8 | -------------------------------------------------------------------------------- /re-store/50-async-data/src/utils/compose.js: -------------------------------------------------------------------------------- 1 | const compose = (...funcs) => (comp) => { 2 | return funcs.reduceRight( 3 | (wrapped, f) => f(wrapped), comp); 4 | }; 5 | 6 | export default compose; 7 | -------------------------------------------------------------------------------- /re-store/50-async-data/src/utils/index.js: -------------------------------------------------------------------------------- 1 | import compose from './compose'; 2 | 3 | export { 4 | compose 5 | }; 6 | -------------------------------------------------------------------------------- /re-store/60-error-handling/src/components/app/app.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/60-error-handling/src/components/app/app.css -------------------------------------------------------------------------------- /re-store/60-error-handling/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /re-store/60-error-handling/src/components/book-list-item/index.js: -------------------------------------------------------------------------------- 1 | import BookListItem from './book-list-item'; 2 | 3 | export default BookListItem; 4 | -------------------------------------------------------------------------------- /re-store/60-error-handling/src/components/book-list/book-list.css: -------------------------------------------------------------------------------- 1 | .book-list { 2 | list-style: none; 3 | } -------------------------------------------------------------------------------- /re-store/60-error-handling/src/components/book-list/index.js: -------------------------------------------------------------------------------- 1 | import BookList from './book-list'; 2 | 3 | export default BookList; 4 | -------------------------------------------------------------------------------- /re-store/60-error-handling/src/components/error-boundry/index.js: -------------------------------------------------------------------------------- 1 | import ErrorBoundry from './error-boundry'; 2 | 3 | export default ErrorBoundry; 4 | -------------------------------------------------------------------------------- /re-store/60-error-handling/src/components/error-indicator/error-indicator.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/60-error-handling/src/components/error-indicator/error-indicator.css -------------------------------------------------------------------------------- /re-store/60-error-handling/src/components/error-indicator/error-indicator.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import './error-indicator.css'; 3 | 4 | const ErrorIndicator = () => { 5 | return
Error!
; 6 | }; 7 | 8 | export default ErrorIndicator; 9 | -------------------------------------------------------------------------------- /re-store/60-error-handling/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /re-store/60-error-handling/src/components/hoc/index.js: -------------------------------------------------------------------------------- 1 | import withBookstoreService from './with-bookstore-service'; 2 | 3 | export { 4 | withBookstoreService 5 | }; 6 | -------------------------------------------------------------------------------- /re-store/60-error-handling/src/components/pages/cart-page.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const CartPage = () => { 4 | return
Cart Page
5 | }; 6 | 7 | export default CartPage; 8 | -------------------------------------------------------------------------------- /re-store/60-error-handling/src/components/pages/index.js: -------------------------------------------------------------------------------- 1 | import HomePage from './home-page'; 2 | import CartPage from './cart-page'; 3 | 4 | export { 5 | HomePage, 6 | CartPage 7 | }; 8 | -------------------------------------------------------------------------------- /re-store/60-error-handling/src/components/shop-header/index.js: -------------------------------------------------------------------------------- 1 | import ShopHeader from './shop-header'; 2 | 3 | export default ShopHeader; -------------------------------------------------------------------------------- /re-store/60-error-handling/src/components/shopping-cart-table/index.js: -------------------------------------------------------------------------------- 1 | import ShoppingCartTable from './shopping-cart-table'; 2 | 3 | export default ShoppingCartTable; 4 | -------------------------------------------------------------------------------- /re-store/60-error-handling/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /re-store/60-error-handling/src/components/spinner/spinner.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/60-error-handling/src/components/spinner/spinner.css -------------------------------------------------------------------------------- /re-store/60-error-handling/src/components/spinner/spinner.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import './spinner.css'; 3 | 4 | const Spinner = () => { 5 | return
loading...
; 6 | }; 7 | 8 | export default Spinner; 9 | -------------------------------------------------------------------------------- /re-store/60-error-handling/src/store.js: -------------------------------------------------------------------------------- 1 | import { createStore } from 'redux'; 2 | 3 | import reducer from './reducers'; 4 | 5 | const store = createStore(reducer); 6 | 7 | export default store; 8 | -------------------------------------------------------------------------------- /re-store/60-error-handling/src/utils/compose.js: -------------------------------------------------------------------------------- 1 | const compose = (...funcs) => (comp) => { 2 | return funcs.reduceRight( 3 | (wrapped, f) => f(wrapped), comp); 4 | }; 5 | 6 | export default compose; 7 | -------------------------------------------------------------------------------- /re-store/60-error-handling/src/utils/index.js: -------------------------------------------------------------------------------- 1 | import compose from './compose'; 2 | 3 | export { 4 | compose 5 | }; 6 | -------------------------------------------------------------------------------- /re-store/70-add-element-to-array/src/components/app/app.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/70-add-element-to-array/src/components/app/app.css -------------------------------------------------------------------------------- /re-store/70-add-element-to-array/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /re-store/70-add-element-to-array/src/components/book-list-item/index.js: -------------------------------------------------------------------------------- 1 | import BookListItem from './book-list-item'; 2 | 3 | export default BookListItem; 4 | -------------------------------------------------------------------------------- /re-store/70-add-element-to-array/src/components/book-list/book-list.css: -------------------------------------------------------------------------------- 1 | .book-list { 2 | list-style: none; 3 | } -------------------------------------------------------------------------------- /re-store/70-add-element-to-array/src/components/book-list/index.js: -------------------------------------------------------------------------------- 1 | import BookList from './book-list'; 2 | 3 | export default BookList; 4 | -------------------------------------------------------------------------------- /re-store/70-add-element-to-array/src/components/error-boundry/index.js: -------------------------------------------------------------------------------- 1 | import ErrorBoundry from './error-boundry'; 2 | 3 | export default ErrorBoundry; 4 | -------------------------------------------------------------------------------- /re-store/70-add-element-to-array/src/components/error-indicator/error-indicator.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/70-add-element-to-array/src/components/error-indicator/error-indicator.css -------------------------------------------------------------------------------- /re-store/70-add-element-to-array/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /re-store/70-add-element-to-array/src/components/hoc/index.js: -------------------------------------------------------------------------------- 1 | import withBookstoreService from './with-bookstore-service'; 2 | 3 | export { 4 | withBookstoreService 5 | }; 6 | -------------------------------------------------------------------------------- /re-store/70-add-element-to-array/src/components/pages/cart-page.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const CartPage = () => { 4 | return
Cart Page
5 | }; 6 | 7 | export default CartPage; 8 | -------------------------------------------------------------------------------- /re-store/70-add-element-to-array/src/components/pages/index.js: -------------------------------------------------------------------------------- 1 | import HomePage from './home-page'; 2 | import CartPage from './cart-page'; 3 | 4 | export { 5 | HomePage, 6 | CartPage 7 | }; 8 | -------------------------------------------------------------------------------- /re-store/70-add-element-to-array/src/components/shop-header/index.js: -------------------------------------------------------------------------------- 1 | import ShopHeader from './shop-header'; 2 | 3 | export default ShopHeader; -------------------------------------------------------------------------------- /re-store/70-add-element-to-array/src/components/shopping-cart-table/index.js: -------------------------------------------------------------------------------- 1 | import ShoppingCartTable from './shopping-cart-table'; 2 | 3 | export default ShoppingCartTable; 4 | -------------------------------------------------------------------------------- /re-store/70-add-element-to-array/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /re-store/70-add-element-to-array/src/components/spinner/spinner.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/70-add-element-to-array/src/components/spinner/spinner.css -------------------------------------------------------------------------------- /re-store/70-add-element-to-array/src/components/spinner/spinner.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import './spinner.css'; 3 | 4 | const Spinner = () => { 5 | return
loading...
; 6 | }; 7 | 8 | export default Spinner; 9 | -------------------------------------------------------------------------------- /re-store/70-add-element-to-array/src/store.js: -------------------------------------------------------------------------------- 1 | import { createStore } from 'redux'; 2 | 3 | import reducer from './reducers'; 4 | 5 | const store = createStore(reducer); 6 | 7 | export default store; 8 | -------------------------------------------------------------------------------- /re-store/70-add-element-to-array/src/utils/compose.js: -------------------------------------------------------------------------------- 1 | const compose = (...funcs) => (comp) => { 2 | return funcs.reduceRight( 3 | (wrapped, f) => f(wrapped), comp); 4 | }; 5 | 6 | export default compose; 7 | -------------------------------------------------------------------------------- /re-store/70-add-element-to-array/src/utils/index.js: -------------------------------------------------------------------------------- 1 | import compose from './compose'; 2 | 3 | export { 4 | compose 5 | }; 6 | -------------------------------------------------------------------------------- /re-store/80-update-element-in-array/src/components/app/app.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/80-update-element-in-array/src/components/app/app.css -------------------------------------------------------------------------------- /re-store/80-update-element-in-array/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /re-store/80-update-element-in-array/src/components/book-list-item/index.js: -------------------------------------------------------------------------------- 1 | import BookListItem from './book-list-item'; 2 | 3 | export default BookListItem; 4 | -------------------------------------------------------------------------------- /re-store/80-update-element-in-array/src/components/book-list/book-list.css: -------------------------------------------------------------------------------- 1 | .book-list { 2 | list-style: none; 3 | } -------------------------------------------------------------------------------- /re-store/80-update-element-in-array/src/components/book-list/index.js: -------------------------------------------------------------------------------- 1 | import BookList from './book-list'; 2 | 3 | export default BookList; 4 | -------------------------------------------------------------------------------- /re-store/80-update-element-in-array/src/components/error-boundry/index.js: -------------------------------------------------------------------------------- 1 | import ErrorBoundry from './error-boundry'; 2 | 3 | export default ErrorBoundry; 4 | -------------------------------------------------------------------------------- /re-store/80-update-element-in-array/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /re-store/80-update-element-in-array/src/components/hoc/index.js: -------------------------------------------------------------------------------- 1 | import withBookstoreService from './with-bookstore-service'; 2 | 3 | export { 4 | withBookstoreService 5 | }; 6 | -------------------------------------------------------------------------------- /re-store/80-update-element-in-array/src/components/pages/cart-page.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const CartPage = () => { 4 | return
Cart Page
5 | }; 6 | 7 | export default CartPage; 8 | -------------------------------------------------------------------------------- /re-store/80-update-element-in-array/src/components/pages/index.js: -------------------------------------------------------------------------------- 1 | import HomePage from './home-page'; 2 | import CartPage from './cart-page'; 3 | 4 | export { 5 | HomePage, 6 | CartPage 7 | }; 8 | -------------------------------------------------------------------------------- /re-store/80-update-element-in-array/src/components/shop-header/index.js: -------------------------------------------------------------------------------- 1 | import ShopHeader from './shop-header'; 2 | 3 | export default ShopHeader; -------------------------------------------------------------------------------- /re-store/80-update-element-in-array/src/components/shopping-cart-table/index.js: -------------------------------------------------------------------------------- 1 | import ShoppingCartTable from './shopping-cart-table'; 2 | 3 | export default ShoppingCartTable; 4 | -------------------------------------------------------------------------------- /re-store/80-update-element-in-array/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /re-store/80-update-element-in-array/src/components/spinner/spinner.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/80-update-element-in-array/src/components/spinner/spinner.css -------------------------------------------------------------------------------- /re-store/80-update-element-in-array/src/components/spinner/spinner.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import './spinner.css'; 3 | 4 | const Spinner = () => { 5 | return
loading...
; 6 | }; 7 | 8 | export default Spinner; 9 | -------------------------------------------------------------------------------- /re-store/80-update-element-in-array/src/store.js: -------------------------------------------------------------------------------- 1 | import { createStore } from 'redux'; 2 | 3 | import reducer from './reducers'; 4 | 5 | const store = createStore(reducer); 6 | 7 | export default store; 8 | -------------------------------------------------------------------------------- /re-store/80-update-element-in-array/src/utils/compose.js: -------------------------------------------------------------------------------- 1 | const compose = (...funcs) => (comp) => { 2 | return funcs.reduceRight( 3 | (wrapped, f) => f(wrapped), comp); 4 | }; 5 | 6 | export default compose; 7 | -------------------------------------------------------------------------------- /re-store/80-update-element-in-array/src/utils/index.js: -------------------------------------------------------------------------------- 1 | import compose from './compose'; 2 | 3 | export { 4 | compose 5 | }; 6 | -------------------------------------------------------------------------------- /re-store/90-delete-element-from-array/src/components/app/app.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/90-delete-element-from-array/src/components/app/app.css -------------------------------------------------------------------------------- /re-store/90-delete-element-from-array/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /re-store/90-delete-element-from-array/src/components/book-list-item/index.js: -------------------------------------------------------------------------------- 1 | import BookListItem from './book-list-item'; 2 | 3 | export default BookListItem; 4 | -------------------------------------------------------------------------------- /re-store/90-delete-element-from-array/src/components/book-list/book-list.css: -------------------------------------------------------------------------------- 1 | .book-list { 2 | list-style: none; 3 | } -------------------------------------------------------------------------------- /re-store/90-delete-element-from-array/src/components/book-list/index.js: -------------------------------------------------------------------------------- 1 | import BookList from './book-list'; 2 | 3 | export default BookList; 4 | -------------------------------------------------------------------------------- /re-store/90-delete-element-from-array/src/components/error-boundry/index.js: -------------------------------------------------------------------------------- 1 | import ErrorBoundry from './error-boundry'; 2 | 3 | export default ErrorBoundry; 4 | -------------------------------------------------------------------------------- /re-store/90-delete-element-from-array/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /re-store/90-delete-element-from-array/src/components/hoc/index.js: -------------------------------------------------------------------------------- 1 | import withBookstoreService from './with-bookstore-service'; 2 | 3 | export { 4 | withBookstoreService 5 | }; 6 | -------------------------------------------------------------------------------- /re-store/90-delete-element-from-array/src/components/pages/cart-page.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const CartPage = () => { 4 | return
Cart Page
5 | }; 6 | 7 | export default CartPage; 8 | -------------------------------------------------------------------------------- /re-store/90-delete-element-from-array/src/components/pages/index.js: -------------------------------------------------------------------------------- 1 | import HomePage from './home-page'; 2 | import CartPage from './cart-page'; 3 | 4 | export { 5 | HomePage, 6 | CartPage 7 | }; 8 | -------------------------------------------------------------------------------- /re-store/90-delete-element-from-array/src/components/shop-header/index.js: -------------------------------------------------------------------------------- 1 | import ShopHeader from './shop-header'; 2 | 3 | export default ShopHeader; -------------------------------------------------------------------------------- /re-store/90-delete-element-from-array/src/components/shopping-cart-table/index.js: -------------------------------------------------------------------------------- 1 | import ShoppingCartTable from './shopping-cart-table'; 2 | 3 | export default ShoppingCartTable; 4 | -------------------------------------------------------------------------------- /re-store/90-delete-element-from-array/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /re-store/90-delete-element-from-array/src/components/spinner/spinner.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/re-store/90-delete-element-from-array/src/components/spinner/spinner.css -------------------------------------------------------------------------------- /re-store/90-delete-element-from-array/src/components/spinner/spinner.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import './spinner.css'; 3 | 4 | const Spinner = () => { 5 | return
loading...
; 6 | }; 7 | 8 | export default Spinner; 9 | -------------------------------------------------------------------------------- /re-store/90-delete-element-from-array/src/store.js: -------------------------------------------------------------------------------- 1 | import { createStore } from 'redux'; 2 | 3 | import reducer from './reducers'; 4 | 5 | const store = createStore(reducer); 6 | 7 | export default store; 8 | -------------------------------------------------------------------------------- /re-store/90-delete-element-from-array/src/utils/compose.js: -------------------------------------------------------------------------------- 1 | const compose = (...funcs) => (comp) => { 2 | return funcs.reduceRight( 3 | (wrapped, f) => f(wrapped), comp); 4 | }; 5 | 6 | export default compose; 7 | -------------------------------------------------------------------------------- /re-store/90-delete-element-from-array/src/utils/index.js: -------------------------------------------------------------------------------- 1 | import compose from './compose'; 2 | 3 | export { 4 | compose 5 | }; 6 | -------------------------------------------------------------------------------- /redux-sandbox/20-bind-action-creators/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/redux-sandbox/20-bind-action-creators/README.md -------------------------------------------------------------------------------- /redux-sandbox/20-bind-action-creators/src/actions.js: -------------------------------------------------------------------------------- 1 | export const inc = () => ({ type: 'INC' }); 2 | 3 | export const dec = () => ({ type: 'DEC' }); 4 | 5 | export const rnd = (payload) => ({ type: 'RND', payload }); 6 | -------------------------------------------------------------------------------- /redux-sandbox/30-react-with-redux/src/actions.js: -------------------------------------------------------------------------------- 1 | export const inc = () => ({ type: 'INC' }); 2 | 3 | export const dec = () => ({ type: 'DEC' }); 4 | 5 | export const rnd = (payload) => ({ type: 'RND', payload }); 6 | -------------------------------------------------------------------------------- /redux-sandbox/40-connect-map-state-to-props/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/redux-sandbox/40-connect-map-state-to-props/README.md -------------------------------------------------------------------------------- /redux-sandbox/40-connect-map-state-to-props/src/actions.js: -------------------------------------------------------------------------------- 1 | export const inc = () => ({ type: 'INC' }); 2 | 3 | export const dec = () => ({ type: 'DEC' }); 4 | 5 | export const rnd = (payload) => ({ type: 'RND', payload }); 6 | -------------------------------------------------------------------------------- /redux-sandbox/40-connect-map-state-to-props/src/components/app.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Counter from './counter'; 3 | 4 | const App = () => { 5 | return ; 6 | }; 7 | 8 | export default App; 9 | -------------------------------------------------------------------------------- /redux-sandbox/50-map-dispatch-to-props/src/actions.js: -------------------------------------------------------------------------------- 1 | export const inc = () => ({ type: 'INC' }); 2 | 3 | export const dec = () => ({ type: 'DEC' }); 4 | 5 | export const rnd = (payload) => ({ type: 'RND', payload }); 6 | -------------------------------------------------------------------------------- /redux-sandbox/50-map-dispatch-to-props/src/components/app.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Counter from './counter'; 3 | 4 | const App = () => { 5 | return ; 6 | }; 7 | 8 | export default App; 9 | -------------------------------------------------------------------------------- /redux-sandbox/60-map-dispatch-to-props-as-object/src/components/app.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Counter from './counter'; 3 | 4 | const App = () => { 5 | return ; 6 | }; 7 | 8 | export default App; 9 | -------------------------------------------------------------------------------- /star-db/00-basic-project-structure/README.md: -------------------------------------------------------------------------------- 1 | - Axios 2 | - Superagent 3 | - Got 4 | - Request 5 | - Reqwest -------------------------------------------------------------------------------- /star-db/00-basic-project-structure/src/components/app/app.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/00-basic-project-structure/src/components/app/app.css -------------------------------------------------------------------------------- /star-db/00-basic-project-structure/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /star-db/00-basic-project-structure/src/components/header/index.js: -------------------------------------------------------------------------------- 1 | import Header from './header'; 2 | 3 | export default Header; -------------------------------------------------------------------------------- /star-db/00-basic-project-structure/src/components/item-list/index.js: -------------------------------------------------------------------------------- 1 | import ItemList from './item-list'; 2 | 3 | export default ItemList; 4 | -------------------------------------------------------------------------------- /star-db/00-basic-project-structure/src/components/item-list/item-list.css: -------------------------------------------------------------------------------- 1 | .item-list .list-group-item { 2 | cursor: pointer; 3 | } 4 | 5 | .item-list .list-group-item:hover { 6 | background-color: #444; 7 | } -------------------------------------------------------------------------------- /star-db/00-basic-project-structure/src/components/person-details/index.js: -------------------------------------------------------------------------------- 1 | import PersonDetails from './person-details'; 2 | 3 | export default PersonDetails; 4 | -------------------------------------------------------------------------------- /star-db/00-basic-project-structure/src/components/planet-details/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/00-basic-project-structure/src/components/planet-details/index.js -------------------------------------------------------------------------------- /star-db/00-basic-project-structure/src/components/planet-details/planet-details.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/00-basic-project-structure/src/components/planet-details/planet-details.css -------------------------------------------------------------------------------- /star-db/00-basic-project-structure/src/components/planet-details/planet-details.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/00-basic-project-structure/src/components/planet-details/planet-details.js -------------------------------------------------------------------------------- /star-db/00-basic-project-structure/src/components/random-planet/index.js: -------------------------------------------------------------------------------- 1 | import RandomPlanet from './random-planet'; 2 | 3 | export default RandomPlanet; 4 | -------------------------------------------------------------------------------- /star-db/00-basic-project-structure/src/components/starship-details/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/00-basic-project-structure/src/components/starship-details/index.js -------------------------------------------------------------------------------- /star-db/00-basic-project-structure/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './components/app'; 4 | 5 | ReactDOM.render(, 6 | document.getElementById('root')); 7 | -------------------------------------------------------------------------------- /star-db/10-transforming-api-data/README.md: -------------------------------------------------------------------------------- 1 | - Axios 2 | - Superagent 3 | - Got 4 | - Request 5 | - Reqwest -------------------------------------------------------------------------------- /star-db/10-transforming-api-data/src/components/app/app.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/10-transforming-api-data/src/components/app/app.css -------------------------------------------------------------------------------- /star-db/10-transforming-api-data/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /star-db/10-transforming-api-data/src/components/header/index.js: -------------------------------------------------------------------------------- 1 | import Header from './header'; 2 | 3 | export default Header; -------------------------------------------------------------------------------- /star-db/10-transforming-api-data/src/components/item-list/index.js: -------------------------------------------------------------------------------- 1 | import ItemList from './item-list'; 2 | 3 | export default ItemList; 4 | -------------------------------------------------------------------------------- /star-db/10-transforming-api-data/src/components/item-list/item-list.css: -------------------------------------------------------------------------------- 1 | .item-list .list-group-item { 2 | cursor: pointer; 3 | } 4 | 5 | .item-list .list-group-item:hover { 6 | background-color: #444; 7 | } -------------------------------------------------------------------------------- /star-db/10-transforming-api-data/src/components/person-details/index.js: -------------------------------------------------------------------------------- 1 | import PersonDetails from './person-details'; 2 | 3 | export default PersonDetails; 4 | -------------------------------------------------------------------------------- /star-db/10-transforming-api-data/src/components/planet-details/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/10-transforming-api-data/src/components/planet-details/index.js -------------------------------------------------------------------------------- /star-db/10-transforming-api-data/src/components/planet-details/planet-details.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/10-transforming-api-data/src/components/planet-details/planet-details.css -------------------------------------------------------------------------------- /star-db/10-transforming-api-data/src/components/planet-details/planet-details.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/10-transforming-api-data/src/components/planet-details/planet-details.js -------------------------------------------------------------------------------- /star-db/10-transforming-api-data/src/components/random-planet/index.js: -------------------------------------------------------------------------------- 1 | import RandomPlanet from './random-planet'; 2 | 3 | export default RandomPlanet; 4 | -------------------------------------------------------------------------------- /star-db/10-transforming-api-data/src/components/starship-details/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/10-transforming-api-data/src/components/starship-details/index.js -------------------------------------------------------------------------------- /star-db/10-transforming-api-data/src/components/starship-details/starship-details.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/10-transforming-api-data/src/components/starship-details/starship-details.css -------------------------------------------------------------------------------- /star-db/10-transforming-api-data/src/components/starship-details/starship-details.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/10-transforming-api-data/src/components/starship-details/starship-details.js -------------------------------------------------------------------------------- /star-db/10-transforming-api-data/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './components/app'; 4 | 5 | ReactDOM.render(, 6 | document.getElementById('root')); 7 | -------------------------------------------------------------------------------- /star-db/100-higher-order-components/src/components/app/app.css: -------------------------------------------------------------------------------- 1 | .button-row { 2 | margin: 0 0 1rem 0; 3 | } 4 | 5 | .button-row button { 6 | margin-right: 1rem; 7 | } 8 | 9 | .stardb-app .row { 10 | margin-bottom: 1rem; 11 | } -------------------------------------------------------------------------------- /star-db/100-higher-order-components/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /star-db/100-higher-order-components/src/components/error-boundry/index.js: -------------------------------------------------------------------------------- 1 | import ErrorBoundry from './error-boundry'; 2 | 3 | export default ErrorBoundry; 4 | -------------------------------------------------------------------------------- /star-db/100-higher-order-components/src/components/error-button/error-button.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/100-higher-order-components/src/components/error-button/error-button.css -------------------------------------------------------------------------------- /star-db/100-higher-order-components/src/components/error-button/index.js: -------------------------------------------------------------------------------- 1 | import ErrorButton from './error-button'; 2 | 3 | export default ErrorButton; 4 | -------------------------------------------------------------------------------- /star-db/100-higher-order-components/src/components/error-indicator/death-star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/100-higher-order-components/src/components/error-indicator/death-star.png -------------------------------------------------------------------------------- /star-db/100-higher-order-components/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /star-db/100-higher-order-components/src/components/header/index.js: -------------------------------------------------------------------------------- 1 | import Header from './header'; 2 | 3 | export default Header; -------------------------------------------------------------------------------- /star-db/100-higher-order-components/src/components/hoc-helpers/index.js: -------------------------------------------------------------------------------- 1 | import withData from './with-data'; 2 | 3 | export { 4 | withData 5 | }; 6 | -------------------------------------------------------------------------------- /star-db/100-higher-order-components/src/components/item-details/index.js: -------------------------------------------------------------------------------- 1 | import ItemDetails, { Record } from './item-details'; 2 | 3 | export default ItemDetails; 4 | 5 | export { Record }; -------------------------------------------------------------------------------- /star-db/100-higher-order-components/src/components/item-list/index.js: -------------------------------------------------------------------------------- 1 | import ItemList from './item-list'; 2 | 3 | export default ItemList; 4 | -------------------------------------------------------------------------------- /star-db/100-higher-order-components/src/components/people-page/index.js: -------------------------------------------------------------------------------- 1 | import PeoplePage from './people-page'; 2 | 3 | export default PeoplePage; 4 | -------------------------------------------------------------------------------- /star-db/100-higher-order-components/src/components/people-page/people-page.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/100-higher-order-components/src/components/people-page/people-page.css -------------------------------------------------------------------------------- /star-db/100-higher-order-components/src/components/random-planet/index.js: -------------------------------------------------------------------------------- 1 | import RandomPlanet from './random-planet'; 2 | 3 | export default RandomPlanet; 4 | -------------------------------------------------------------------------------- /star-db/100-higher-order-components/src/components/row/index.js: -------------------------------------------------------------------------------- 1 | import Row from './row'; 2 | 3 | export default Row; 4 | -------------------------------------------------------------------------------- /star-db/100-higher-order-components/src/components/row/row.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/100-higher-order-components/src/components/row/row.css -------------------------------------------------------------------------------- /star-db/100-higher-order-components/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /star-db/100-higher-order-components/src/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/100-higher-order-components/src/index.html -------------------------------------------------------------------------------- /star-db/100-higher-order-components/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './components/app'; 4 | 5 | ReactDOM.render(, 6 | document.getElementById('root')); 7 | -------------------------------------------------------------------------------- /star-db/110-hoc-composition/src/components/app/app.css: -------------------------------------------------------------------------------- 1 | .button-row { 2 | margin: 0 0 1rem 0; 3 | } 4 | 5 | .button-row button { 6 | margin-right: 1rem; 7 | } 8 | 9 | .stardb-app .row { 10 | margin-bottom: 1rem; 11 | } -------------------------------------------------------------------------------- /star-db/110-hoc-composition/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /star-db/110-hoc-composition/src/components/error-boundry/index.js: -------------------------------------------------------------------------------- 1 | import ErrorBoundry from './error-boundry'; 2 | 3 | export default ErrorBoundry; 4 | -------------------------------------------------------------------------------- /star-db/110-hoc-composition/src/components/error-button/error-button.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/110-hoc-composition/src/components/error-button/error-button.css -------------------------------------------------------------------------------- /star-db/110-hoc-composition/src/components/error-button/index.js: -------------------------------------------------------------------------------- 1 | import ErrorButton from './error-button'; 2 | 3 | export default ErrorButton; 4 | -------------------------------------------------------------------------------- /star-db/110-hoc-composition/src/components/error-indicator/death-star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/110-hoc-composition/src/components/error-indicator/death-star.png -------------------------------------------------------------------------------- /star-db/110-hoc-composition/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /star-db/110-hoc-composition/src/components/header/index.js: -------------------------------------------------------------------------------- 1 | import Header from './header'; 2 | 3 | export default Header; -------------------------------------------------------------------------------- /star-db/110-hoc-composition/src/components/hoc-helpers/index.js: -------------------------------------------------------------------------------- 1 | import withData from './with-data'; 2 | 3 | export { 4 | withData 5 | }; 6 | -------------------------------------------------------------------------------- /star-db/110-hoc-composition/src/components/item-details/index.js: -------------------------------------------------------------------------------- 1 | import ItemDetails, { Record } from './item-details'; 2 | 3 | export default ItemDetails; 4 | 5 | export { Record }; 6 | -------------------------------------------------------------------------------- /star-db/110-hoc-composition/src/components/item-list/index.js: -------------------------------------------------------------------------------- 1 | import ItemList from './item-list'; 2 | 3 | export default ItemList; 4 | -------------------------------------------------------------------------------- /star-db/110-hoc-composition/src/components/people-page/index.js: -------------------------------------------------------------------------------- 1 | import PeoplePage from './people-page'; 2 | 3 | export default PeoplePage; 4 | -------------------------------------------------------------------------------- /star-db/110-hoc-composition/src/components/people-page/people-page.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/110-hoc-composition/src/components/people-page/people-page.css -------------------------------------------------------------------------------- /star-db/110-hoc-composition/src/components/random-planet/index.js: -------------------------------------------------------------------------------- 1 | import RandomPlanet from './random-planet'; 2 | 3 | export default RandomPlanet; 4 | -------------------------------------------------------------------------------- /star-db/110-hoc-composition/src/components/row/index.js: -------------------------------------------------------------------------------- 1 | import Row from './row'; 2 | 3 | export default Row; 4 | -------------------------------------------------------------------------------- /star-db/110-hoc-composition/src/components/row/row.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/110-hoc-composition/src/components/row/row.css -------------------------------------------------------------------------------- /star-db/110-hoc-composition/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /star-db/110-hoc-composition/src/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/110-hoc-composition/src/index.html -------------------------------------------------------------------------------- /star-db/110-hoc-composition/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './components/app'; 4 | 5 | ReactDOM.render(, 6 | document.getElementById('root')); 7 | -------------------------------------------------------------------------------- /star-db/120-context/src/components/app/app.css: -------------------------------------------------------------------------------- 1 | .button-row { 2 | margin: 0 0 1rem 0; 3 | } 4 | 5 | .button-row button { 6 | margin-right: 1rem; 7 | } 8 | 9 | .stardb-app .row { 10 | margin-bottom: 1rem; 11 | } -------------------------------------------------------------------------------- /star-db/120-context/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /star-db/120-context/src/components/error-boundry/index.js: -------------------------------------------------------------------------------- 1 | import ErrorBoundry from './error-boundry'; 2 | 3 | export default ErrorBoundry; 4 | -------------------------------------------------------------------------------- /star-db/120-context/src/components/error-button/error-button.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/120-context/src/components/error-button/error-button.css -------------------------------------------------------------------------------- /star-db/120-context/src/components/error-button/index.js: -------------------------------------------------------------------------------- 1 | import ErrorButton from './error-button'; 2 | 3 | export default ErrorButton; 4 | -------------------------------------------------------------------------------- /star-db/120-context/src/components/error-indicator/death-star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/120-context/src/components/error-indicator/death-star.png -------------------------------------------------------------------------------- /star-db/120-context/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /star-db/120-context/src/components/header/index.js: -------------------------------------------------------------------------------- 1 | import Header from './header'; 2 | 3 | export default Header; -------------------------------------------------------------------------------- /star-db/120-context/src/components/hoc-helpers/index.js: -------------------------------------------------------------------------------- 1 | import withData from './with-data'; 2 | 3 | export { 4 | withData 5 | }; 6 | -------------------------------------------------------------------------------- /star-db/120-context/src/components/item-details/index.js: -------------------------------------------------------------------------------- 1 | import ItemDetails, { Record } from './item-details'; 2 | 3 | export default ItemDetails; 4 | 5 | export { Record }; 6 | -------------------------------------------------------------------------------- /star-db/120-context/src/components/item-list/index.js: -------------------------------------------------------------------------------- 1 | import ItemList from './item-list'; 2 | 3 | export default ItemList; 4 | -------------------------------------------------------------------------------- /star-db/120-context/src/components/item-list/item-list.css: -------------------------------------------------------------------------------- 1 | .item-list { 2 | margin-bottom: 1rem; 3 | } 4 | 5 | .item-list .list-group-item { 6 | cursor: pointer; 7 | } 8 | 9 | .item-list .list-group-item:hover { 10 | background-color: #444; 11 | } -------------------------------------------------------------------------------- /star-db/120-context/src/components/people-page/index.js: -------------------------------------------------------------------------------- 1 | import PeoplePage from './people-page'; 2 | 3 | export default PeoplePage; 4 | -------------------------------------------------------------------------------- /star-db/120-context/src/components/people-page/people-page.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/120-context/src/components/people-page/people-page.css -------------------------------------------------------------------------------- /star-db/120-context/src/components/random-planet/index.js: -------------------------------------------------------------------------------- 1 | import RandomPlanet from './random-planet'; 2 | 3 | export default RandomPlanet; 4 | -------------------------------------------------------------------------------- /star-db/120-context/src/components/row/index.js: -------------------------------------------------------------------------------- 1 | import Row from './row'; 2 | 3 | export default Row; 4 | -------------------------------------------------------------------------------- /star-db/120-context/src/components/row/row.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/120-context/src/components/row/row.css -------------------------------------------------------------------------------- /star-db/120-context/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /star-db/120-context/src/components/swapi-service-context/index.js: -------------------------------------------------------------------------------- 1 | import { 2 | SwapiServiceProvider, 3 | SwapiServiceConsumer 4 | } from './swapi-service-context'; 5 | 6 | export { 7 | SwapiServiceProvider, 8 | SwapiServiceConsumer 9 | }; 10 | -------------------------------------------------------------------------------- /star-db/120-context/src/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/120-context/src/index.html -------------------------------------------------------------------------------- /star-db/120-context/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './components/app'; 4 | 5 | ReactDOM.render(, 6 | document.getElementById('root')); 7 | -------------------------------------------------------------------------------- /star-db/130-hoc-context/src/components/app/app.css: -------------------------------------------------------------------------------- 1 | .button-row { 2 | margin: 0 0 1rem 0; 3 | } 4 | 5 | .button-row button { 6 | margin-right: 1rem; 7 | } 8 | 9 | .stardb-app .row { 10 | margin-bottom: 1rem; 11 | } -------------------------------------------------------------------------------- /star-db/130-hoc-context/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /star-db/130-hoc-context/src/components/error-boundry/index.js: -------------------------------------------------------------------------------- 1 | import ErrorBoundry from './error-boundry'; 2 | 3 | export default ErrorBoundry; 4 | -------------------------------------------------------------------------------- /star-db/130-hoc-context/src/components/error-button/error-button.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/130-hoc-context/src/components/error-button/error-button.css -------------------------------------------------------------------------------- /star-db/130-hoc-context/src/components/error-button/index.js: -------------------------------------------------------------------------------- 1 | import ErrorButton from './error-button'; 2 | 3 | export default ErrorButton; 4 | -------------------------------------------------------------------------------- /star-db/130-hoc-context/src/components/error-indicator/death-star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/130-hoc-context/src/components/error-indicator/death-star.png -------------------------------------------------------------------------------- /star-db/130-hoc-context/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /star-db/130-hoc-context/src/components/header/index.js: -------------------------------------------------------------------------------- 1 | import Header from './header'; 2 | 3 | export default Header; -------------------------------------------------------------------------------- /star-db/130-hoc-context/src/components/hoc-helpers/index.js: -------------------------------------------------------------------------------- 1 | import withData from './with-data'; 2 | import withSwapiService from './with-swapi-service'; 3 | 4 | export { 5 | withData, 6 | withSwapiService 7 | }; 8 | -------------------------------------------------------------------------------- /star-db/130-hoc-context/src/components/item-details/index.js: -------------------------------------------------------------------------------- 1 | import ItemDetails, { Record } from './item-details'; 2 | 3 | export default ItemDetails; 4 | 5 | export { Record }; 6 | -------------------------------------------------------------------------------- /star-db/130-hoc-context/src/components/item-list/index.js: -------------------------------------------------------------------------------- 1 | import ItemList from './item-list'; 2 | 3 | export default ItemList; 4 | -------------------------------------------------------------------------------- /star-db/130-hoc-context/src/components/people-page/index.js: -------------------------------------------------------------------------------- 1 | import PeoplePage from './people-page'; 2 | 3 | export default PeoplePage; 4 | -------------------------------------------------------------------------------- /star-db/130-hoc-context/src/components/people-page/people-page.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/130-hoc-context/src/components/people-page/people-page.css -------------------------------------------------------------------------------- /star-db/130-hoc-context/src/components/random-planet/index.js: -------------------------------------------------------------------------------- 1 | import RandomPlanet from './random-planet'; 2 | 3 | export default RandomPlanet; 4 | -------------------------------------------------------------------------------- /star-db/130-hoc-context/src/components/row/index.js: -------------------------------------------------------------------------------- 1 | import Row from './row'; 2 | 3 | export default Row; 4 | -------------------------------------------------------------------------------- /star-db/130-hoc-context/src/components/row/row.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/130-hoc-context/src/components/row/row.css -------------------------------------------------------------------------------- /star-db/130-hoc-context/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /star-db/130-hoc-context/src/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/130-hoc-context/src/index.html -------------------------------------------------------------------------------- /star-db/130-hoc-context/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './components/app'; 4 | 5 | ReactDOM.render(, 6 | document.getElementById('root')); 7 | -------------------------------------------------------------------------------- /star-db/140-dynamic-context-switch/src/components/app/app.css: -------------------------------------------------------------------------------- 1 | .button-row { 2 | margin: 0 0 1rem 0; 3 | } 4 | 5 | .button-row button { 6 | margin-right: 1rem; 7 | } 8 | 9 | .stardb-app .row { 10 | margin-bottom: 1rem; 11 | } -------------------------------------------------------------------------------- /star-db/140-dynamic-context-switch/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /star-db/140-dynamic-context-switch/src/components/error-boundry/index.js: -------------------------------------------------------------------------------- 1 | import ErrorBoundry from './error-boundry'; 2 | 3 | export default ErrorBoundry; 4 | -------------------------------------------------------------------------------- /star-db/140-dynamic-context-switch/src/components/error-button/error-button.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/140-dynamic-context-switch/src/components/error-button/error-button.css -------------------------------------------------------------------------------- /star-db/140-dynamic-context-switch/src/components/error-button/index.js: -------------------------------------------------------------------------------- 1 | import ErrorButton from './error-button'; 2 | 3 | export default ErrorButton; 4 | -------------------------------------------------------------------------------- /star-db/140-dynamic-context-switch/src/components/error-indicator/death-star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/140-dynamic-context-switch/src/components/error-indicator/death-star.png -------------------------------------------------------------------------------- /star-db/140-dynamic-context-switch/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /star-db/140-dynamic-context-switch/src/components/header/index.js: -------------------------------------------------------------------------------- 1 | import Header from './header'; 2 | 3 | export default Header; -------------------------------------------------------------------------------- /star-db/140-dynamic-context-switch/src/components/hoc-helpers/index.js: -------------------------------------------------------------------------------- 1 | import withData from './with-data'; 2 | import withSwapiService from './with-swapi-service'; 3 | 4 | export { 5 | withData, 6 | withSwapiService 7 | }; 8 | -------------------------------------------------------------------------------- /star-db/140-dynamic-context-switch/src/components/item-details/index.js: -------------------------------------------------------------------------------- 1 | import ItemDetails, { Record } from './item-details'; 2 | 3 | export default ItemDetails; 4 | 5 | export { Record }; 6 | -------------------------------------------------------------------------------- /star-db/140-dynamic-context-switch/src/components/item-list/index.js: -------------------------------------------------------------------------------- 1 | import ItemList from './item-list'; 2 | 3 | export default ItemList; 4 | -------------------------------------------------------------------------------- /star-db/140-dynamic-context-switch/src/components/people-page/index.js: -------------------------------------------------------------------------------- 1 | import PeoplePage from './people-page'; 2 | 3 | export default PeoplePage; 4 | -------------------------------------------------------------------------------- /star-db/140-dynamic-context-switch/src/components/people-page/people-page.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/140-dynamic-context-switch/src/components/people-page/people-page.css -------------------------------------------------------------------------------- /star-db/140-dynamic-context-switch/src/components/random-planet/index.js: -------------------------------------------------------------------------------- 1 | import RandomPlanet from './random-planet'; 2 | 3 | export default RandomPlanet; 4 | -------------------------------------------------------------------------------- /star-db/140-dynamic-context-switch/src/components/row/index.js: -------------------------------------------------------------------------------- 1 | import Row from './row'; 2 | 3 | export default Row; 4 | -------------------------------------------------------------------------------- /star-db/140-dynamic-context-switch/src/components/row/row.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/140-dynamic-context-switch/src/components/row/row.css -------------------------------------------------------------------------------- /star-db/140-dynamic-context-switch/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /star-db/140-dynamic-context-switch/src/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/140-dynamic-context-switch/src/index.html -------------------------------------------------------------------------------- /star-db/140-dynamic-context-switch/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './components/app'; 4 | 5 | ReactDOM.render(, 6 | document.getElementById('root')); 7 | -------------------------------------------------------------------------------- /star-db/150-prop-types/src/components/app/app.css: -------------------------------------------------------------------------------- 1 | .button-row { 2 | margin: 0 0 1rem 0; 3 | } 4 | 5 | .button-row button { 6 | margin-right: 1rem; 7 | } 8 | 9 | .stardb-app .row { 10 | margin-bottom: 1rem; 11 | } -------------------------------------------------------------------------------- /star-db/150-prop-types/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /star-db/150-prop-types/src/components/error-boundry/index.js: -------------------------------------------------------------------------------- 1 | import ErrorBoundry from './error-boundry'; 2 | 3 | export default ErrorBoundry; 4 | -------------------------------------------------------------------------------- /star-db/150-prop-types/src/components/error-button/error-button.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/150-prop-types/src/components/error-button/error-button.css -------------------------------------------------------------------------------- /star-db/150-prop-types/src/components/error-button/index.js: -------------------------------------------------------------------------------- 1 | import ErrorButton from './error-button'; 2 | 3 | export default ErrorButton; 4 | -------------------------------------------------------------------------------- /star-db/150-prop-types/src/components/error-indicator/death-star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/150-prop-types/src/components/error-indicator/death-star.png -------------------------------------------------------------------------------- /star-db/150-prop-types/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /star-db/150-prop-types/src/components/header/index.js: -------------------------------------------------------------------------------- 1 | import Header from './header'; 2 | 3 | export default Header; -------------------------------------------------------------------------------- /star-db/150-prop-types/src/components/hoc-helpers/compose.js: -------------------------------------------------------------------------------- 1 | const compose = (...funcs) => (comp) => { 2 | return funcs.reduceRight( 3 | (wrapped, f) => f(wrapped), comp); 4 | }; 5 | 6 | export default compose; -------------------------------------------------------------------------------- /star-db/150-prop-types/src/components/item-details/index.js: -------------------------------------------------------------------------------- 1 | import ItemDetails, { Record } from './item-details'; 2 | 3 | export default ItemDetails; 4 | 5 | export { Record }; 6 | -------------------------------------------------------------------------------- /star-db/150-prop-types/src/components/item-list/index.js: -------------------------------------------------------------------------------- 1 | import ItemList from './item-list'; 2 | 3 | export default ItemList; 4 | -------------------------------------------------------------------------------- /star-db/150-prop-types/src/components/random-planet/index.js: -------------------------------------------------------------------------------- 1 | import RandomPlanet from './random-planet'; 2 | 3 | export default RandomPlanet; 4 | -------------------------------------------------------------------------------- /star-db/150-prop-types/src/components/row/index.js: -------------------------------------------------------------------------------- 1 | import Row from './row'; 2 | 3 | export default Row; 4 | -------------------------------------------------------------------------------- /star-db/150-prop-types/src/components/row/row.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/150-prop-types/src/components/row/row.css -------------------------------------------------------------------------------- /star-db/150-prop-types/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /star-db/150-prop-types/src/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/150-prop-types/src/index.html -------------------------------------------------------------------------------- /star-db/150-prop-types/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './components/app'; 4 | 5 | ReactDOM.render(, 6 | document.getElementById('root')); 7 | -------------------------------------------------------------------------------- /star-db/160-basic-routing/src/components/app/app.css: -------------------------------------------------------------------------------- 1 | .button-row { 2 | margin: 0 0 1rem 0; 3 | } 4 | 5 | .button-row button { 6 | margin-right: 1rem; 7 | } 8 | 9 | .stardb-app .row { 10 | margin-bottom: 1rem; 11 | } -------------------------------------------------------------------------------- /star-db/160-basic-routing/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /star-db/160-basic-routing/src/components/error-boundry/index.js: -------------------------------------------------------------------------------- 1 | import ErrorBoundry from './error-boundry'; 2 | 3 | export default ErrorBoundry; 4 | -------------------------------------------------------------------------------- /star-db/160-basic-routing/src/components/error-button/error-button.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/160-basic-routing/src/components/error-button/error-button.css -------------------------------------------------------------------------------- /star-db/160-basic-routing/src/components/error-button/index.js: -------------------------------------------------------------------------------- 1 | import ErrorButton from './error-button'; 2 | 3 | export default ErrorButton; 4 | -------------------------------------------------------------------------------- /star-db/160-basic-routing/src/components/error-indicator/death-star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/160-basic-routing/src/components/error-indicator/death-star.png -------------------------------------------------------------------------------- /star-db/160-basic-routing/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /star-db/160-basic-routing/src/components/header/index.js: -------------------------------------------------------------------------------- 1 | import Header from './header'; 2 | 3 | export default Header; -------------------------------------------------------------------------------- /star-db/160-basic-routing/src/components/hoc-helpers/compose.js: -------------------------------------------------------------------------------- 1 | const compose = (...funcs) => (comp) => { 2 | return funcs.reduceRight( 3 | (wrapped, f) => f(wrapped), comp); 4 | }; 5 | 6 | export default compose; -------------------------------------------------------------------------------- /star-db/160-basic-routing/src/components/item-details/index.js: -------------------------------------------------------------------------------- 1 | import ItemDetails, { Record } from './item-details'; 2 | 3 | export default ItemDetails; 4 | 5 | export { Record }; 6 | -------------------------------------------------------------------------------- /star-db/160-basic-routing/src/components/item-list/index.js: -------------------------------------------------------------------------------- 1 | import ItemList from './item-list'; 2 | 3 | export default ItemList; 4 | -------------------------------------------------------------------------------- /star-db/160-basic-routing/src/components/random-planet/index.js: -------------------------------------------------------------------------------- 1 | import RandomPlanet from './random-planet'; 2 | 3 | export default RandomPlanet; 4 | -------------------------------------------------------------------------------- /star-db/160-basic-routing/src/components/row/index.js: -------------------------------------------------------------------------------- 1 | import Row from './row'; 2 | 3 | export default Row; 4 | -------------------------------------------------------------------------------- /star-db/160-basic-routing/src/components/row/row.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/160-basic-routing/src/components/row/row.css -------------------------------------------------------------------------------- /star-db/160-basic-routing/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /star-db/160-basic-routing/src/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/160-basic-routing/src/index.html -------------------------------------------------------------------------------- /star-db/160-basic-routing/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './components/app'; 4 | 5 | ReactDOM.render(, 6 | document.getElementById('root')); 7 | -------------------------------------------------------------------------------- /star-db/170-how-routing-works/src/components/app/app.css: -------------------------------------------------------------------------------- 1 | .button-row { 2 | margin: 0 0 1rem 0; 3 | } 4 | 5 | .button-row button { 6 | margin-right: 1rem; 7 | } 8 | 9 | .stardb-app .row { 10 | margin-bottom: 1rem; 11 | } -------------------------------------------------------------------------------- /star-db/170-how-routing-works/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /star-db/170-how-routing-works/src/components/error-boundry/index.js: -------------------------------------------------------------------------------- 1 | import ErrorBoundry from './error-boundry'; 2 | 3 | export default ErrorBoundry; 4 | -------------------------------------------------------------------------------- /star-db/170-how-routing-works/src/components/error-button/error-button.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/170-how-routing-works/src/components/error-button/error-button.css -------------------------------------------------------------------------------- /star-db/170-how-routing-works/src/components/error-button/index.js: -------------------------------------------------------------------------------- 1 | import ErrorButton from './error-button'; 2 | 3 | export default ErrorButton; 4 | -------------------------------------------------------------------------------- /star-db/170-how-routing-works/src/components/error-indicator/death-star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/170-how-routing-works/src/components/error-indicator/death-star.png -------------------------------------------------------------------------------- /star-db/170-how-routing-works/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /star-db/170-how-routing-works/src/components/header/index.js: -------------------------------------------------------------------------------- 1 | import Header from './header'; 2 | 3 | export default Header; -------------------------------------------------------------------------------- /star-db/170-how-routing-works/src/components/hoc-helpers/compose.js: -------------------------------------------------------------------------------- 1 | const compose = (...funcs) => (comp) => { 2 | return funcs.reduceRight( 3 | (wrapped, f) => f(wrapped), comp); 4 | }; 5 | 6 | export default compose; -------------------------------------------------------------------------------- /star-db/170-how-routing-works/src/components/item-details/index.js: -------------------------------------------------------------------------------- 1 | import ItemDetails, { Record } from './item-details'; 2 | 3 | export default ItemDetails; 4 | 5 | export { Record }; 6 | -------------------------------------------------------------------------------- /star-db/170-how-routing-works/src/components/item-list/index.js: -------------------------------------------------------------------------------- 1 | import ItemList from './item-list'; 2 | 3 | export default ItemList; 4 | -------------------------------------------------------------------------------- /star-db/170-how-routing-works/src/components/random-planet/index.js: -------------------------------------------------------------------------------- 1 | import RandomPlanet from './random-planet'; 2 | 3 | export default RandomPlanet; 4 | -------------------------------------------------------------------------------- /star-db/170-how-routing-works/src/components/row/index.js: -------------------------------------------------------------------------------- 1 | import Row from './row'; 2 | 3 | export default Row; 4 | -------------------------------------------------------------------------------- /star-db/170-how-routing-works/src/components/row/row.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/170-how-routing-works/src/components/row/row.css -------------------------------------------------------------------------------- /star-db/170-how-routing-works/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /star-db/170-how-routing-works/src/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/170-how-routing-works/src/index.html -------------------------------------------------------------------------------- /star-db/170-how-routing-works/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './components/app'; 4 | 5 | ReactDOM.render(, 6 | document.getElementById('root')); 7 | -------------------------------------------------------------------------------- /star-db/180-relative-paths/src/components/app/app.css: -------------------------------------------------------------------------------- 1 | .button-row { 2 | margin: 0 0 1rem 0; 3 | } 4 | 5 | .button-row button { 6 | margin-right: 1rem; 7 | } 8 | 9 | .stardb-app .row { 10 | margin-bottom: 1rem; 11 | } -------------------------------------------------------------------------------- /star-db/180-relative-paths/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /star-db/180-relative-paths/src/components/error-boundry/index.js: -------------------------------------------------------------------------------- 1 | import ErrorBoundry from './error-boundry'; 2 | 3 | export default ErrorBoundry; 4 | -------------------------------------------------------------------------------- /star-db/180-relative-paths/src/components/error-button/error-button.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/180-relative-paths/src/components/error-button/error-button.css -------------------------------------------------------------------------------- /star-db/180-relative-paths/src/components/error-button/index.js: -------------------------------------------------------------------------------- 1 | import ErrorButton from './error-button'; 2 | 3 | export default ErrorButton; 4 | -------------------------------------------------------------------------------- /star-db/180-relative-paths/src/components/error-indicator/death-star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/180-relative-paths/src/components/error-indicator/death-star.png -------------------------------------------------------------------------------- /star-db/180-relative-paths/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /star-db/180-relative-paths/src/components/header/index.js: -------------------------------------------------------------------------------- 1 | import Header from './header'; 2 | 3 | export default Header; -------------------------------------------------------------------------------- /star-db/180-relative-paths/src/components/hoc-helpers/compose.js: -------------------------------------------------------------------------------- 1 | const compose = (...funcs) => (comp) => { 2 | return funcs.reduceRight( 3 | (wrapped, f) => f(wrapped), comp); 4 | }; 5 | 6 | export default compose; -------------------------------------------------------------------------------- /star-db/180-relative-paths/src/components/item-details/index.js: -------------------------------------------------------------------------------- 1 | import ItemDetails, { Record } from './item-details'; 2 | 3 | export default ItemDetails; 4 | 5 | export { Record }; 6 | -------------------------------------------------------------------------------- /star-db/180-relative-paths/src/components/item-list/index.js: -------------------------------------------------------------------------------- 1 | import ItemList from './item-list'; 2 | 3 | export default ItemList; 4 | -------------------------------------------------------------------------------- /star-db/180-relative-paths/src/components/random-planet/index.js: -------------------------------------------------------------------------------- 1 | import RandomPlanet from './random-planet'; 2 | 3 | export default RandomPlanet; 4 | -------------------------------------------------------------------------------- /star-db/180-relative-paths/src/components/row/index.js: -------------------------------------------------------------------------------- 1 | import Row from './row'; 2 | 3 | export default Row; 4 | -------------------------------------------------------------------------------- /star-db/180-relative-paths/src/components/row/row.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/180-relative-paths/src/components/row/row.css -------------------------------------------------------------------------------- /star-db/180-relative-paths/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /star-db/180-relative-paths/src/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/180-relative-paths/src/index.html -------------------------------------------------------------------------------- /star-db/180-relative-paths/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './components/app'; 4 | 5 | ReactDOM.render(, 6 | document.getElementById('root')); 7 | -------------------------------------------------------------------------------- /star-db/190-switch-component/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /star-db/190-switch-component/src/components/error-boundry/index.js: -------------------------------------------------------------------------------- 1 | import ErrorBoundry from './error-boundry'; 2 | 3 | export default ErrorBoundry; 4 | -------------------------------------------------------------------------------- /star-db/190-switch-component/src/components/error-button/error-button.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/190-switch-component/src/components/error-button/error-button.css -------------------------------------------------------------------------------- /star-db/190-switch-component/src/components/error-button/index.js: -------------------------------------------------------------------------------- 1 | import ErrorButton from './error-button'; 2 | 3 | export default ErrorButton; 4 | -------------------------------------------------------------------------------- /star-db/190-switch-component/src/components/error-indicator/death-star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/190-switch-component/src/components/error-indicator/death-star.png -------------------------------------------------------------------------------- /star-db/190-switch-component/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /star-db/190-switch-component/src/components/header/index.js: -------------------------------------------------------------------------------- 1 | import Header from './header'; 2 | 3 | export default Header; -------------------------------------------------------------------------------- /star-db/190-switch-component/src/components/hoc-helpers/compose.js: -------------------------------------------------------------------------------- 1 | const compose = (...funcs) => (comp) => { 2 | return funcs.reduceRight( 3 | (wrapped, f) => f(wrapped), comp); 4 | }; 5 | 6 | export default compose; -------------------------------------------------------------------------------- /star-db/190-switch-component/src/components/item-details/index.js: -------------------------------------------------------------------------------- 1 | import ItemDetails, { Record } from './item-details'; 2 | 3 | export default ItemDetails; 4 | 5 | export { Record }; 6 | -------------------------------------------------------------------------------- /star-db/190-switch-component/src/components/item-list/index.js: -------------------------------------------------------------------------------- 1 | import ItemList from './item-list'; 2 | 3 | export default ItemList; 4 | -------------------------------------------------------------------------------- /star-db/190-switch-component/src/components/random-planet/index.js: -------------------------------------------------------------------------------- 1 | import RandomPlanet from './random-planet'; 2 | 3 | export default RandomPlanet; 4 | -------------------------------------------------------------------------------- /star-db/190-switch-component/src/components/row/index.js: -------------------------------------------------------------------------------- 1 | import Row from './row'; 2 | 3 | export default Row; 4 | -------------------------------------------------------------------------------- /star-db/190-switch-component/src/components/row/row.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/190-switch-component/src/components/row/row.css -------------------------------------------------------------------------------- /star-db/190-switch-component/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /star-db/190-switch-component/src/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/190-switch-component/src/index.html -------------------------------------------------------------------------------- /star-db/190-switch-component/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './components/app'; 4 | 5 | ReactDOM.render(, 6 | document.getElementById('root')); 7 | -------------------------------------------------------------------------------- /star-db/20-handling-api-errors/README.md: -------------------------------------------------------------------------------- 1 | - Axios 2 | - Superagent 3 | - Got 4 | - Request 5 | - Reqwest -------------------------------------------------------------------------------- /star-db/20-handling-api-errors/src/components/app/app.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/20-handling-api-errors/src/components/app/app.css -------------------------------------------------------------------------------- /star-db/20-handling-api-errors/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /star-db/20-handling-api-errors/src/components/header/index.js: -------------------------------------------------------------------------------- 1 | import Header from './header'; 2 | 3 | export default Header; -------------------------------------------------------------------------------- /star-db/20-handling-api-errors/src/components/item-list/index.js: -------------------------------------------------------------------------------- 1 | import ItemList from './item-list'; 2 | 3 | export default ItemList; 4 | -------------------------------------------------------------------------------- /star-db/20-handling-api-errors/src/components/person-details/index.js: -------------------------------------------------------------------------------- 1 | import PersonDetails from './person-details'; 2 | 3 | export default PersonDetails; 4 | -------------------------------------------------------------------------------- /star-db/20-handling-api-errors/src/components/planet-details/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/20-handling-api-errors/src/components/planet-details/index.js -------------------------------------------------------------------------------- /star-db/20-handling-api-errors/src/components/planet-details/planet-details.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/20-handling-api-errors/src/components/planet-details/planet-details.css -------------------------------------------------------------------------------- /star-db/20-handling-api-errors/src/components/planet-details/planet-details.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/20-handling-api-errors/src/components/planet-details/planet-details.js -------------------------------------------------------------------------------- /star-db/20-handling-api-errors/src/components/random-planet/index.js: -------------------------------------------------------------------------------- 1 | import RandomPlanet from './random-planet'; 2 | 3 | export default RandomPlanet; 4 | -------------------------------------------------------------------------------- /star-db/20-handling-api-errors/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /star-db/20-handling-api-errors/src/components/starship-details/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/20-handling-api-errors/src/components/starship-details/index.js -------------------------------------------------------------------------------- /star-db/20-handling-api-errors/src/components/starship-details/starship-details.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/20-handling-api-errors/src/components/starship-details/starship-details.css -------------------------------------------------------------------------------- /star-db/20-handling-api-errors/src/components/starship-details/starship-details.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/20-handling-api-errors/src/components/starship-details/starship-details.js -------------------------------------------------------------------------------- /star-db/20-handling-api-errors/src/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/20-handling-api-errors/src/index.html -------------------------------------------------------------------------------- /star-db/20-handling-api-errors/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './components/app'; 4 | 5 | ReactDOM.render(, 6 | document.getElementById('root')); 7 | -------------------------------------------------------------------------------- /star-db/30-lifecycle-intro/src/components/app/app.css: -------------------------------------------------------------------------------- 1 | .toggle-planet { 2 | margin-bottom: 1rem; 3 | } -------------------------------------------------------------------------------- /star-db/30-lifecycle-intro/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /star-db/30-lifecycle-intro/src/components/error-indicator/death-star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/30-lifecycle-intro/src/components/error-indicator/death-star.png -------------------------------------------------------------------------------- /star-db/30-lifecycle-intro/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /star-db/30-lifecycle-intro/src/components/header/index.js: -------------------------------------------------------------------------------- 1 | import Header from './header'; 2 | 3 | export default Header; -------------------------------------------------------------------------------- /star-db/30-lifecycle-intro/src/components/item-list/index.js: -------------------------------------------------------------------------------- 1 | import ItemList from './item-list'; 2 | 3 | export default ItemList; 4 | -------------------------------------------------------------------------------- /star-db/30-lifecycle-intro/src/components/person-details/index.js: -------------------------------------------------------------------------------- 1 | import PersonDetails from './person-details'; 2 | 3 | export default PersonDetails; 4 | -------------------------------------------------------------------------------- /star-db/30-lifecycle-intro/src/components/planet-details/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/30-lifecycle-intro/src/components/planet-details/index.js -------------------------------------------------------------------------------- /star-db/30-lifecycle-intro/src/components/planet-details/planet-details.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/30-lifecycle-intro/src/components/planet-details/planet-details.css -------------------------------------------------------------------------------- /star-db/30-lifecycle-intro/src/components/planet-details/planet-details.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/30-lifecycle-intro/src/components/planet-details/planet-details.js -------------------------------------------------------------------------------- /star-db/30-lifecycle-intro/src/components/random-planet/index.js: -------------------------------------------------------------------------------- 1 | import RandomPlanet from './random-planet'; 2 | 3 | export default RandomPlanet; 4 | -------------------------------------------------------------------------------- /star-db/30-lifecycle-intro/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /star-db/30-lifecycle-intro/src/components/starship-details/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/30-lifecycle-intro/src/components/starship-details/index.js -------------------------------------------------------------------------------- /star-db/30-lifecycle-intro/src/components/starship-details/starship-details.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/30-lifecycle-intro/src/components/starship-details/starship-details.css -------------------------------------------------------------------------------- /star-db/30-lifecycle-intro/src/components/starship-details/starship-details.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/30-lifecycle-intro/src/components/starship-details/starship-details.js -------------------------------------------------------------------------------- /star-db/30-lifecycle-intro/src/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/30-lifecycle-intro/src/index.html -------------------------------------------------------------------------------- /star-db/30-lifecycle-intro/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './components/app'; 4 | 5 | ReactDOM.render(, 6 | document.getElementById('root')); 7 | -------------------------------------------------------------------------------- /star-db/40-component-did-mount-practice/src/components/app/app.css: -------------------------------------------------------------------------------- 1 | .toggle-planet { 2 | margin-bottom: 1rem; 3 | } -------------------------------------------------------------------------------- /star-db/40-component-did-mount-practice/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /star-db/40-component-did-mount-practice/src/components/error-indicator/death-star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/40-component-did-mount-practice/src/components/error-indicator/death-star.png -------------------------------------------------------------------------------- /star-db/40-component-did-mount-practice/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /star-db/40-component-did-mount-practice/src/components/header/index.js: -------------------------------------------------------------------------------- 1 | import Header from './header'; 2 | 3 | export default Header; -------------------------------------------------------------------------------- /star-db/40-component-did-mount-practice/src/components/item-list/index.js: -------------------------------------------------------------------------------- 1 | import ItemList from './item-list'; 2 | 3 | export default ItemList; 4 | -------------------------------------------------------------------------------- /star-db/40-component-did-mount-practice/src/components/person-details/index.js: -------------------------------------------------------------------------------- 1 | import PersonDetails from './person-details'; 2 | 3 | export default PersonDetails; 4 | -------------------------------------------------------------------------------- /star-db/40-component-did-mount-practice/src/components/planet-details/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/40-component-did-mount-practice/src/components/planet-details/index.js -------------------------------------------------------------------------------- /star-db/40-component-did-mount-practice/src/components/random-planet/index.js: -------------------------------------------------------------------------------- 1 | import RandomPlanet from './random-planet'; 2 | 3 | export default RandomPlanet; 4 | -------------------------------------------------------------------------------- /star-db/40-component-did-mount-practice/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /star-db/40-component-did-mount-practice/src/components/starship-details/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/40-component-did-mount-practice/src/components/starship-details/index.js -------------------------------------------------------------------------------- /star-db/40-component-did-mount-practice/src/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/40-component-did-mount-practice/src/index.html -------------------------------------------------------------------------------- /star-db/40-component-did-mount-practice/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './components/app'; 4 | 5 | ReactDOM.render(, 6 | document.getElementById('root')); 7 | -------------------------------------------------------------------------------- /star-db/50-component-did-update/src/components/app/app.css: -------------------------------------------------------------------------------- 1 | .toggle-planet { 2 | margin-bottom: 1rem; 3 | } -------------------------------------------------------------------------------- /star-db/50-component-did-update/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /star-db/50-component-did-update/src/components/error-indicator/death-star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/50-component-did-update/src/components/error-indicator/death-star.png -------------------------------------------------------------------------------- /star-db/50-component-did-update/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /star-db/50-component-did-update/src/components/header/index.js: -------------------------------------------------------------------------------- 1 | import Header from './header'; 2 | 3 | export default Header; -------------------------------------------------------------------------------- /star-db/50-component-did-update/src/components/item-list/index.js: -------------------------------------------------------------------------------- 1 | import ItemList from './item-list'; 2 | 3 | export default ItemList; 4 | -------------------------------------------------------------------------------- /star-db/50-component-did-update/src/components/person-details/index.js: -------------------------------------------------------------------------------- 1 | import PersonDetails from './person-details'; 2 | 3 | export default PersonDetails; 4 | -------------------------------------------------------------------------------- /star-db/50-component-did-update/src/components/planet-details/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/50-component-did-update/src/components/planet-details/index.js -------------------------------------------------------------------------------- /star-db/50-component-did-update/src/components/planet-details/planet-details.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/50-component-did-update/src/components/planet-details/planet-details.css -------------------------------------------------------------------------------- /star-db/50-component-did-update/src/components/planet-details/planet-details.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/50-component-did-update/src/components/planet-details/planet-details.js -------------------------------------------------------------------------------- /star-db/50-component-did-update/src/components/random-planet/index.js: -------------------------------------------------------------------------------- 1 | import RandomPlanet from './random-planet'; 2 | 3 | export default RandomPlanet; 4 | -------------------------------------------------------------------------------- /star-db/50-component-did-update/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /star-db/50-component-did-update/src/components/starship-details/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/50-component-did-update/src/components/starship-details/index.js -------------------------------------------------------------------------------- /star-db/50-component-did-update/src/components/starship-details/starship-details.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/50-component-did-update/src/components/starship-details/starship-details.css -------------------------------------------------------------------------------- /star-db/50-component-did-update/src/components/starship-details/starship-details.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/50-component-did-update/src/components/starship-details/starship-details.js -------------------------------------------------------------------------------- /star-db/50-component-did-update/src/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/50-component-did-update/src/index.html -------------------------------------------------------------------------------- /star-db/50-component-did-update/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './components/app'; 4 | 5 | ReactDOM.render(, 6 | document.getElementById('root')); 7 | -------------------------------------------------------------------------------- /star-db/60-error-boundries/src/components/app/app.css: -------------------------------------------------------------------------------- 1 | .button-row { 2 | margin: 0 0 1rem 0; 3 | } 4 | 5 | .button-row button { 6 | margin-right: 1rem; 7 | } 8 | 9 | .stardb-app .row { 10 | margin-bottom: 1rem; 11 | } -------------------------------------------------------------------------------- /star-db/60-error-boundries/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /star-db/60-error-boundries/src/components/error-button/error-button.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/60-error-boundries/src/components/error-button/error-button.css -------------------------------------------------------------------------------- /star-db/60-error-boundries/src/components/error-button/index.js: -------------------------------------------------------------------------------- 1 | import ErrorButton from './error-button'; 2 | 3 | export default ErrorButton; 4 | -------------------------------------------------------------------------------- /star-db/60-error-boundries/src/components/error-indicator/death-star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/60-error-boundries/src/components/error-indicator/death-star.png -------------------------------------------------------------------------------- /star-db/60-error-boundries/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /star-db/60-error-boundries/src/components/header/index.js: -------------------------------------------------------------------------------- 1 | import Header from './header'; 2 | 3 | export default Header; -------------------------------------------------------------------------------- /star-db/60-error-boundries/src/components/item-list/index.js: -------------------------------------------------------------------------------- 1 | import ItemList from './item-list'; 2 | 3 | export default ItemList; 4 | -------------------------------------------------------------------------------- /star-db/60-error-boundries/src/components/people-page/index.js: -------------------------------------------------------------------------------- 1 | import PeoplePage from './people-page'; 2 | 3 | export default PeoplePage; 4 | -------------------------------------------------------------------------------- /star-db/60-error-boundries/src/components/people-page/people-page.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/60-error-boundries/src/components/people-page/people-page.css -------------------------------------------------------------------------------- /star-db/60-error-boundries/src/components/person-details/index.js: -------------------------------------------------------------------------------- 1 | import PersonDetails from './person-details'; 2 | 3 | export default PersonDetails; 4 | -------------------------------------------------------------------------------- /star-db/60-error-boundries/src/components/random-planet/index.js: -------------------------------------------------------------------------------- 1 | import RandomPlanet from './random-planet'; 2 | 3 | export default RandomPlanet; 4 | -------------------------------------------------------------------------------- /star-db/60-error-boundries/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /star-db/60-error-boundries/src/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/60-error-boundries/src/index.html -------------------------------------------------------------------------------- /star-db/60-error-boundries/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './components/app'; 4 | 5 | ReactDOM.render(, 6 | document.getElementById('root')); 7 | -------------------------------------------------------------------------------- /star-db/70-passing-function-as-data-sources/src/components/app/app.css: -------------------------------------------------------------------------------- 1 | .button-row { 2 | margin: 0 0 1rem 0; 3 | } 4 | 5 | .button-row button { 6 | margin-right: 1rem; 7 | } 8 | 9 | .stardb-app .row { 10 | margin-bottom: 1rem; 11 | } -------------------------------------------------------------------------------- /star-db/70-passing-function-as-data-sources/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /star-db/70-passing-function-as-data-sources/src/components/error-button/index.js: -------------------------------------------------------------------------------- 1 | import ErrorButton from './error-button'; 2 | 3 | export default ErrorButton; 4 | -------------------------------------------------------------------------------- /star-db/70-passing-function-as-data-sources/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /star-db/70-passing-function-as-data-sources/src/components/header/index.js: -------------------------------------------------------------------------------- 1 | import Header from './header'; 2 | 3 | export default Header; -------------------------------------------------------------------------------- /star-db/70-passing-function-as-data-sources/src/components/item-list/index.js: -------------------------------------------------------------------------------- 1 | import ItemList from './item-list'; 2 | 3 | export default ItemList; 4 | -------------------------------------------------------------------------------- /star-db/70-passing-function-as-data-sources/src/components/people-page/index.js: -------------------------------------------------------------------------------- 1 | import PeoplePage from './people-page'; 2 | 3 | export default PeoplePage; 4 | -------------------------------------------------------------------------------- /star-db/70-passing-function-as-data-sources/src/components/person-details/index.js: -------------------------------------------------------------------------------- 1 | import PersonDetails from './person-details'; 2 | 3 | export default PersonDetails; 4 | -------------------------------------------------------------------------------- /star-db/70-passing-function-as-data-sources/src/components/random-planet/index.js: -------------------------------------------------------------------------------- 1 | import RandomPlanet from './random-planet'; 2 | 3 | export default RandomPlanet; 4 | -------------------------------------------------------------------------------- /star-db/70-passing-function-as-data-sources/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /star-db/70-passing-function-as-data-sources/src/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/70-passing-function-as-data-sources/src/index.html -------------------------------------------------------------------------------- /star-db/70-passing-function-as-data-sources/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './components/app'; 4 | 5 | ReactDOM.render(, 6 | document.getElementById('root')); 7 | -------------------------------------------------------------------------------- /star-db/80-children/src/components/app/app.css: -------------------------------------------------------------------------------- 1 | .button-row { 2 | margin: 0 0 1rem 0; 3 | } 4 | 5 | .button-row button { 6 | margin-right: 1rem; 7 | } 8 | 9 | .stardb-app .row { 10 | margin-bottom: 1rem; 11 | } -------------------------------------------------------------------------------- /star-db/80-children/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /star-db/80-children/src/components/error-boundry/index.js: -------------------------------------------------------------------------------- 1 | import ErrorBoundry from './error-boundry'; 2 | 3 | export default ErrorBoundry; 4 | -------------------------------------------------------------------------------- /star-db/80-children/src/components/error-button/error-button.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/80-children/src/components/error-button/error-button.css -------------------------------------------------------------------------------- /star-db/80-children/src/components/error-button/index.js: -------------------------------------------------------------------------------- 1 | import ErrorButton from './error-button'; 2 | 3 | export default ErrorButton; 4 | -------------------------------------------------------------------------------- /star-db/80-children/src/components/error-indicator/death-star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/80-children/src/components/error-indicator/death-star.png -------------------------------------------------------------------------------- /star-db/80-children/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /star-db/80-children/src/components/header/index.js: -------------------------------------------------------------------------------- 1 | import Header from './header'; 2 | 3 | export default Header; -------------------------------------------------------------------------------- /star-db/80-children/src/components/item-list/index.js: -------------------------------------------------------------------------------- 1 | import ItemList from './item-list'; 2 | 3 | export default ItemList; 4 | -------------------------------------------------------------------------------- /star-db/80-children/src/components/item-list/item-list.css: -------------------------------------------------------------------------------- 1 | .item-list { 2 | margin-bottom: 1rem; 3 | } 4 | 5 | .item-list .list-group-item { 6 | cursor: pointer; 7 | } 8 | 9 | .item-list .list-group-item:hover { 10 | background-color: #444; 11 | } -------------------------------------------------------------------------------- /star-db/80-children/src/components/people-page/index.js: -------------------------------------------------------------------------------- 1 | import PeoplePage from './people-page'; 2 | 3 | export default PeoplePage; 4 | -------------------------------------------------------------------------------- /star-db/80-children/src/components/people-page/people-page.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/80-children/src/components/people-page/people-page.css -------------------------------------------------------------------------------- /star-db/80-children/src/components/person-details/index.js: -------------------------------------------------------------------------------- 1 | import PersonDetails from './person-details'; 2 | 3 | export default PersonDetails; 4 | -------------------------------------------------------------------------------- /star-db/80-children/src/components/random-planet/index.js: -------------------------------------------------------------------------------- 1 | import RandomPlanet from './random-planet'; 2 | 3 | export default RandomPlanet; 4 | -------------------------------------------------------------------------------- /star-db/80-children/src/components/row/index.js: -------------------------------------------------------------------------------- 1 | import Row from './row'; 2 | 3 | export default Row; 4 | -------------------------------------------------------------------------------- /star-db/80-children/src/components/row/row.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/80-children/src/components/row/row.css -------------------------------------------------------------------------------- /star-db/80-children/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /star-db/80-children/src/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/80-children/src/index.html -------------------------------------------------------------------------------- /star-db/80-children/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './components/app'; 4 | 5 | ReactDOM.render(, 6 | document.getElementById('root')); 7 | -------------------------------------------------------------------------------- /star-db/90-cloning-elements/src/components/app/app.css: -------------------------------------------------------------------------------- 1 | .button-row { 2 | margin: 0 0 1rem 0; 3 | } 4 | 5 | .button-row button { 6 | margin-right: 1rem; 7 | } 8 | 9 | .stardb-app .row { 10 | margin-bottom: 1rem; 11 | } -------------------------------------------------------------------------------- /star-db/90-cloning-elements/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /star-db/90-cloning-elements/src/components/error-boundry/index.js: -------------------------------------------------------------------------------- 1 | import ErrorBoundry from './error-boundry'; 2 | 3 | export default ErrorBoundry; 4 | -------------------------------------------------------------------------------- /star-db/90-cloning-elements/src/components/error-button/error-button.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/90-cloning-elements/src/components/error-button/error-button.css -------------------------------------------------------------------------------- /star-db/90-cloning-elements/src/components/error-button/index.js: -------------------------------------------------------------------------------- 1 | import ErrorButton from './error-button'; 2 | 3 | export default ErrorButton; 4 | -------------------------------------------------------------------------------- /star-db/90-cloning-elements/src/components/error-indicator/death-star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/90-cloning-elements/src/components/error-indicator/death-star.png -------------------------------------------------------------------------------- /star-db/90-cloning-elements/src/components/error-indicator/index.js: -------------------------------------------------------------------------------- 1 | import ErrorIndicator from './error-indicator'; 2 | 3 | export default ErrorIndicator; 4 | -------------------------------------------------------------------------------- /star-db/90-cloning-elements/src/components/header/index.js: -------------------------------------------------------------------------------- 1 | import Header from './header'; 2 | 3 | export default Header; -------------------------------------------------------------------------------- /star-db/90-cloning-elements/src/components/item-details/index.js: -------------------------------------------------------------------------------- 1 | import ItemDetails, { Record } from './item-details'; 2 | 3 | export default ItemDetails; 4 | 5 | export { Record }; -------------------------------------------------------------------------------- /star-db/90-cloning-elements/src/components/item-list/index.js: -------------------------------------------------------------------------------- 1 | import ItemList from './item-list'; 2 | 3 | export default ItemList; 4 | -------------------------------------------------------------------------------- /star-db/90-cloning-elements/src/components/people-page/index.js: -------------------------------------------------------------------------------- 1 | import PeoplePage from './people-page'; 2 | 3 | export default PeoplePage; 4 | -------------------------------------------------------------------------------- /star-db/90-cloning-elements/src/components/people-page/people-page.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/90-cloning-elements/src/components/people-page/people-page.css -------------------------------------------------------------------------------- /star-db/90-cloning-elements/src/components/random-planet/index.js: -------------------------------------------------------------------------------- 1 | import RandomPlanet from './random-planet'; 2 | 3 | export default RandomPlanet; 4 | -------------------------------------------------------------------------------- /star-db/90-cloning-elements/src/components/row/index.js: -------------------------------------------------------------------------------- 1 | import Row from './row'; 2 | 3 | export default Row; 4 | -------------------------------------------------------------------------------- /star-db/90-cloning-elements/src/components/row/row.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/90-cloning-elements/src/components/row/row.css -------------------------------------------------------------------------------- /star-db/90-cloning-elements/src/components/spinner/index.js: -------------------------------------------------------------------------------- 1 | import Spinner from './spinner'; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /star-db/90-cloning-elements/src/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/star-db/90-cloning-elements/src/index.html -------------------------------------------------------------------------------- /star-db/90-cloning-elements/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './components/app'; 4 | 5 | ReactDOM.render(, 6 | document.getElementById('root')); 7 | -------------------------------------------------------------------------------- /todo/00-empty-react-project/README.md: -------------------------------------------------------------------------------- 1 | Todo Application 2 | ----- -------------------------------------------------------------------------------- /todo/00-empty-react-project/src/index.js: -------------------------------------------------------------------------------- 1 | console.log('Hello World'); -------------------------------------------------------------------------------- /todo/10-elements/README.md: -------------------------------------------------------------------------------- 1 | Todo Application 2 | ----- -------------------------------------------------------------------------------- /todo/100-adding-removing-items/README.md: -------------------------------------------------------------------------------- 1 | Todo Application 2 | ----- -------------------------------------------------------------------------------- /todo/100-adding-removing-items/src/components/app-header/index.js: -------------------------------------------------------------------------------- 1 | import AppHeader from './app-header'; 2 | 3 | export default AppHeader; 4 | -------------------------------------------------------------------------------- /todo/100-adding-removing-items/src/components/app/app.css: -------------------------------------------------------------------------------- 1 | .todo-app { 2 | margin: 2rem auto 0 auto; 3 | max-width: 400px; 4 | } 5 | 6 | .top-panel { 7 | margin: 1rem 0; 8 | } 9 | -------------------------------------------------------------------------------- /todo/100-adding-removing-items/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /todo/100-adding-removing-items/src/components/item-add-form/index.js: -------------------------------------------------------------------------------- 1 | import ItemAddForm from './item-add-form'; 2 | 3 | export default ItemAddForm; 4 | -------------------------------------------------------------------------------- /todo/100-adding-removing-items/src/components/item-add-form/item-add-form.css: -------------------------------------------------------------------------------- 1 | .item-add-form { 2 | margin-top: 10px; 3 | } -------------------------------------------------------------------------------- /todo/100-adding-removing-items/src/components/item-status-filter/index.js: -------------------------------------------------------------------------------- 1 | import ItemStatusFilter from './item-status-filter'; 2 | 3 | export default ItemStatusFilter; 4 | -------------------------------------------------------------------------------- /todo/100-adding-removing-items/src/components/search-panel/index.js: -------------------------------------------------------------------------------- 1 | import SearchPanel from './search-panel'; 2 | 3 | export default SearchPanel; 4 | -------------------------------------------------------------------------------- /todo/100-adding-removing-items/src/components/search-panel/search-panel.css: -------------------------------------------------------------------------------- 1 | .search-input { 2 | width: auto; 3 | flex-grow: 1; 4 | margin-right: 3px; 5 | } -------------------------------------------------------------------------------- /todo/100-adding-removing-items/src/components/todo-list-item/index.js: -------------------------------------------------------------------------------- 1 | import TodoListItem from './todo-list-item'; 2 | 3 | export default TodoListItem; 4 | -------------------------------------------------------------------------------- /todo/100-adding-removing-items/src/components/todo-list/index.js: -------------------------------------------------------------------------------- 1 | import TodoList from './todo-list'; 2 | 3 | export default TodoList; 4 | -------------------------------------------------------------------------------- /todo/100-adding-removing-items/src/components/todo-list/todo-list.css: -------------------------------------------------------------------------------- 1 | .todo-list .list-group-item { 2 | padding: .25rem .75rem; 3 | } 4 | -------------------------------------------------------------------------------- /todo/100-adding-removing-items/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | 4 | import App from './components/app'; 5 | 6 | ReactDOM.render(, 7 | document.getElementById('root')); 8 | -------------------------------------------------------------------------------- /todo/120-handling-forms/README.md: -------------------------------------------------------------------------------- 1 | Todo Application 2 | ----- -------------------------------------------------------------------------------- /todo/120-handling-forms/src/components/app-header/app-header.css: -------------------------------------------------------------------------------- 1 | .app-header { 2 | align-items: flex-end; 3 | } 4 | 5 | .app-header h1 { 6 | flex-grow: 1; 7 | } 8 | 9 | .app-header h2 { 10 | font-size: 1.2rem; 11 | color: grey; 12 | } 13 | -------------------------------------------------------------------------------- /todo/120-handling-forms/src/components/app-header/index.js: -------------------------------------------------------------------------------- 1 | import AppHeader from './app-header'; 2 | 3 | export default AppHeader; 4 | -------------------------------------------------------------------------------- /todo/120-handling-forms/src/components/app/app.css: -------------------------------------------------------------------------------- 1 | .todo-app { 2 | margin: 2rem auto 0 auto; 3 | max-width: 400px; 4 | } 5 | 6 | .top-panel { 7 | margin: 1rem 0; 8 | } 9 | -------------------------------------------------------------------------------- /todo/120-handling-forms/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /todo/120-handling-forms/src/components/item-add-form/index.js: -------------------------------------------------------------------------------- 1 | import ItemAddForm from './item-add-form'; 2 | 3 | export default ItemAddForm; 4 | -------------------------------------------------------------------------------- /todo/120-handling-forms/src/components/item-add-form/item-add-form.css: -------------------------------------------------------------------------------- 1 | .item-add-form { 2 | margin-top: 10px; 3 | } 4 | 5 | .item-add-form input { 6 | margin-right: 3px; 7 | } -------------------------------------------------------------------------------- /todo/120-handling-forms/src/components/item-status-filter/index.js: -------------------------------------------------------------------------------- 1 | import ItemStatusFilter from './item-status-filter'; 2 | 3 | export default ItemStatusFilter; 4 | -------------------------------------------------------------------------------- /todo/120-handling-forms/src/components/item-status-filter/item-status-filter.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/todo/120-handling-forms/src/components/item-status-filter/item-status-filter.css -------------------------------------------------------------------------------- /todo/120-handling-forms/src/components/search-panel/index.js: -------------------------------------------------------------------------------- 1 | import SearchPanel from './search-panel'; 2 | 3 | export default SearchPanel; 4 | -------------------------------------------------------------------------------- /todo/120-handling-forms/src/components/search-panel/search-panel.css: -------------------------------------------------------------------------------- 1 | .search-input { 2 | width: auto; 3 | flex-grow: 1; 4 | margin-right: 3px; 5 | } -------------------------------------------------------------------------------- /todo/120-handling-forms/src/components/todo-list-item/index.js: -------------------------------------------------------------------------------- 1 | import TodoListItem from './todo-list-item'; 2 | 3 | export default TodoListItem; 4 | -------------------------------------------------------------------------------- /todo/120-handling-forms/src/components/todo-list/index.js: -------------------------------------------------------------------------------- 1 | import TodoList from './todo-list'; 2 | 3 | export default TodoList; 4 | -------------------------------------------------------------------------------- /todo/120-handling-forms/src/components/todo-list/todo-list.css: -------------------------------------------------------------------------------- 1 | .todo-list .list-group-item { 2 | padding: .25rem .75rem; 3 | } 4 | -------------------------------------------------------------------------------- /todo/120-handling-forms/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | 4 | import App from './components/app'; 5 | 6 | ReactDOM.render(, 7 | document.getElementById('root')); 8 | -------------------------------------------------------------------------------- /todo/20-components/README.md: -------------------------------------------------------------------------------- 1 | Todo Application 2 | ----- -------------------------------------------------------------------------------- /todo/30-project-structure/README.md: -------------------------------------------------------------------------------- 1 | Todo Application 2 | ----- -------------------------------------------------------------------------------- /todo/30-project-structure/src/components/app-header.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const AppHeader = () => { 4 | return

My Todo List

; 5 | }; 6 | 7 | export default AppHeader; -------------------------------------------------------------------------------- /todo/30-project-structure/src/components/search-panel.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const SearchPanel = () => { 4 | return ; 5 | }; 6 | 7 | export default SearchPanel; 8 | -------------------------------------------------------------------------------- /todo/30-project-structure/src/components/todo-list-item.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const TodoListItem = () => { 4 | return Drink Coffee; 5 | }; 6 | 7 | export default TodoListItem; 8 | -------------------------------------------------------------------------------- /todo/40-props/README.md: -------------------------------------------------------------------------------- 1 | Todo Application 2 | ----- -------------------------------------------------------------------------------- /todo/40-props/src/components/app-header.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const AppHeader = () => { 4 | return

My Todo List

; 5 | }; 6 | 7 | export default AppHeader; -------------------------------------------------------------------------------- /todo/40-props/src/components/search-panel.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const SearchPanel = () => { 4 | return ; 5 | }; 6 | 7 | export default SearchPanel; 8 | -------------------------------------------------------------------------------- /todo/50-arrays-as-props/README.md: -------------------------------------------------------------------------------- 1 | Todo Application 2 | ----- -------------------------------------------------------------------------------- /todo/50-arrays-as-props/src/components/app-header.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const AppHeader = () => { 4 | return

My Todo List

; 5 | }; 6 | 7 | export default AppHeader; -------------------------------------------------------------------------------- /todo/50-arrays-as-props/src/components/search-panel.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const SearchPanel = () => { 4 | return ; 5 | }; 6 | 7 | export default SearchPanel; 8 | -------------------------------------------------------------------------------- /todo/60-collections-and-keys/README.md: -------------------------------------------------------------------------------- 1 | Todo Application 2 | ----- -------------------------------------------------------------------------------- /todo/60-collections-and-keys/src/components/app-header.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const AppHeader = () => { 4 | return

My Todo List

; 5 | }; 6 | 7 | export default AppHeader; -------------------------------------------------------------------------------- /todo/60-collections-and-keys/src/components/search-panel.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const SearchPanel = () => { 4 | return ; 5 | }; 6 | 7 | export default SearchPanel; 8 | -------------------------------------------------------------------------------- /todo/70-importing-css/README.md: -------------------------------------------------------------------------------- 1 | Todo Application 2 | ----- -------------------------------------------------------------------------------- /todo/70-importing-css/src/components/app-header.css: -------------------------------------------------------------------------------- 1 | .app-header { 2 | align-items: flex-end; 3 | } 4 | 5 | .app-header h1 { 6 | flex-grow: 1; 7 | } 8 | 9 | .app-header h2 { 10 | font-size: 1.2rem; 11 | color: grey; 12 | } 13 | -------------------------------------------------------------------------------- /todo/70-importing-css/src/components/item-status-filter.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/todo/70-importing-css/src/components/item-status-filter.css -------------------------------------------------------------------------------- /todo/70-importing-css/src/components/search-panel.css: -------------------------------------------------------------------------------- 1 | .search-input { 2 | width: auto; 3 | flex-grow: 1; 4 | margin-right: 3px; 5 | } -------------------------------------------------------------------------------- /todo/70-importing-css/src/components/todo-list.css: -------------------------------------------------------------------------------- 1 | .todo-list .list-group-item { 2 | padding: .25rem .75rem; 3 | } 4 | -------------------------------------------------------------------------------- /todo/70-importing-css/src/index.css: -------------------------------------------------------------------------------- 1 | .todo-app { 2 | margin: 2rem auto 0 auto; 3 | max-width: 400px; 4 | } 5 | 6 | .top-panel { 7 | margin: 1rem 0; 8 | } 9 | -------------------------------------------------------------------------------- /todo/80-folder-per-component/README.md: -------------------------------------------------------------------------------- 1 | Todo Application 2 | ----- -------------------------------------------------------------------------------- /todo/80-folder-per-component/src/components/app-header/app-header.css: -------------------------------------------------------------------------------- 1 | .app-header { 2 | align-items: flex-end; 3 | } 4 | 5 | .app-header h1 { 6 | flex-grow: 1; 7 | } 8 | 9 | .app-header h2 { 10 | font-size: 1.2rem; 11 | color: grey; 12 | } 13 | -------------------------------------------------------------------------------- /todo/80-folder-per-component/src/components/app-header/index.js: -------------------------------------------------------------------------------- 1 | import AppHeader from './app-header'; 2 | 3 | export default AppHeader; 4 | -------------------------------------------------------------------------------- /todo/80-folder-per-component/src/components/app/app.css: -------------------------------------------------------------------------------- 1 | .todo-app { 2 | margin: 2rem auto 0 auto; 3 | max-width: 400px; 4 | } 5 | 6 | .top-panel { 7 | margin: 1rem 0; 8 | } 9 | -------------------------------------------------------------------------------- /todo/80-folder-per-component/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /todo/80-folder-per-component/src/components/item-status-filter/index.js: -------------------------------------------------------------------------------- 1 | import ItemStatusFilter from './item-status-filter'; 2 | 3 | export default ItemStatusFilter; 4 | -------------------------------------------------------------------------------- /todo/80-folder-per-component/src/components/item-status-filter/item-status-filter.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/todo/80-folder-per-component/src/components/item-status-filter/item-status-filter.css -------------------------------------------------------------------------------- /todo/80-folder-per-component/src/components/search-panel/index.js: -------------------------------------------------------------------------------- 1 | import SearchPanel from './search-panel'; 2 | 3 | export default SearchPanel; 4 | -------------------------------------------------------------------------------- /todo/80-folder-per-component/src/components/search-panel/search-panel.css: -------------------------------------------------------------------------------- 1 | .search-input { 2 | width: auto; 3 | flex-grow: 1; 4 | margin-right: 3px; 5 | } -------------------------------------------------------------------------------- /todo/80-folder-per-component/src/components/todo-list-item/index.js: -------------------------------------------------------------------------------- 1 | import TodoListItem from './todo-list-item'; 2 | 3 | export default TodoListItem; 4 | -------------------------------------------------------------------------------- /todo/80-folder-per-component/src/components/todo-list/index.js: -------------------------------------------------------------------------------- 1 | import TodoList from './todo-list'; 2 | 3 | export default TodoList; 4 | -------------------------------------------------------------------------------- /todo/80-folder-per-component/src/components/todo-list/todo-list.css: -------------------------------------------------------------------------------- 1 | .todo-list .list-group-item { 2 | padding: .25rem .75rem; 3 | } 4 | -------------------------------------------------------------------------------- /todo/80-folder-per-component/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | 4 | import App from './components/app'; 5 | 6 | ReactDOM.render(, 7 | document.getElementById('root')); 8 | -------------------------------------------------------------------------------- /todo/90-events-and-state/README.md: -------------------------------------------------------------------------------- 1 | Todo Application 2 | ----- -------------------------------------------------------------------------------- /todo/90-events-and-state/src/components/app-header/app-header.css: -------------------------------------------------------------------------------- 1 | .app-header { 2 | align-items: flex-end; 3 | } 4 | 5 | .app-header h1 { 6 | flex-grow: 1; 7 | } 8 | 9 | .app-header h2 { 10 | font-size: 1.2rem; 11 | color: grey; 12 | } 13 | -------------------------------------------------------------------------------- /todo/90-events-and-state/src/components/app-header/index.js: -------------------------------------------------------------------------------- 1 | import AppHeader from './app-header'; 2 | 3 | export default AppHeader; 4 | -------------------------------------------------------------------------------- /todo/90-events-and-state/src/components/app/app.css: -------------------------------------------------------------------------------- 1 | .todo-app { 2 | margin: 2rem auto 0 auto; 3 | max-width: 400px; 4 | } 5 | 6 | .top-panel { 7 | margin: 1rem 0; 8 | } 9 | -------------------------------------------------------------------------------- /todo/90-events-and-state/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /todo/90-events-and-state/src/components/item-status-filter/index.js: -------------------------------------------------------------------------------- 1 | import ItemStatusFilter from './item-status-filter'; 2 | 3 | export default ItemStatusFilter; 4 | -------------------------------------------------------------------------------- /todo/90-events-and-state/src/components/item-status-filter/item-status-filter.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/todo/90-events-and-state/src/components/item-status-filter/item-status-filter.css -------------------------------------------------------------------------------- /todo/90-events-and-state/src/components/search-panel/index.js: -------------------------------------------------------------------------------- 1 | import SearchPanel from './search-panel'; 2 | 3 | export default SearchPanel; 4 | -------------------------------------------------------------------------------- /todo/90-events-and-state/src/components/search-panel/search-panel.css: -------------------------------------------------------------------------------- 1 | .search-input { 2 | width: auto; 3 | flex-grow: 1; 4 | margin-right: 3px; 5 | } -------------------------------------------------------------------------------- /todo/90-events-and-state/src/components/todo-list-item/index.js: -------------------------------------------------------------------------------- 1 | import TodoListItem from './todo-list-item'; 2 | 3 | export default TodoListItem; 4 | -------------------------------------------------------------------------------- /todo/90-events-and-state/src/components/todo-list/index.js: -------------------------------------------------------------------------------- 1 | import TodoList from './todo-list'; 2 | 3 | export default TodoList; 4 | -------------------------------------------------------------------------------- /todo/90-events-and-state/src/components/todo-list/todo-list.css: -------------------------------------------------------------------------------- 1 | .todo-list .list-group-item { 2 | padding: .25rem .75rem; 3 | } 4 | -------------------------------------------------------------------------------- /todo/90-events-and-state/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | 4 | import App from './components/app'; 5 | 6 | ReactDOM.render(, 7 | document.getElementById('root')); 8 | -------------------------------------------------------------------------------- /todo/todo-final/README.md: -------------------------------------------------------------------------------- 1 | Todo Application 2 | ----- -------------------------------------------------------------------------------- /todo/todo-final/src/components/app-header/app-header.css: -------------------------------------------------------------------------------- 1 | .app-header { 2 | align-items: flex-end; 3 | } 4 | 5 | .app-header h1 { 6 | flex-grow: 1; 7 | } 8 | 9 | .app-header h2 { 10 | font-size: 1.2rem; 11 | color: grey; 12 | } -------------------------------------------------------------------------------- /todo/todo-final/src/components/app-header/index.js: -------------------------------------------------------------------------------- 1 | import AppHeader from './app-header'; 2 | 3 | export default AppHeader; 4 | -------------------------------------------------------------------------------- /todo/todo-final/src/components/app/app.css: -------------------------------------------------------------------------------- 1 | .todo-app { 2 | margin: 2rem auto 0 auto; 3 | max-width: 500px; 4 | } 5 | -------------------------------------------------------------------------------- /todo/todo-final/src/components/app/index.js: -------------------------------------------------------------------------------- 1 | import App from './app'; 2 | 3 | export default App; 4 | -------------------------------------------------------------------------------- /todo/todo-final/src/components/item-add-form/index.js: -------------------------------------------------------------------------------- 1 | import ItemAddForm from './item-add-form'; 2 | 3 | export default ItemAddForm; 4 | -------------------------------------------------------------------------------- /todo/todo-final/src/components/item-add-form/item-add-form.css: -------------------------------------------------------------------------------- 1 | .bottom-panel { 2 | margin-top: 10px; 3 | } 4 | 5 | .bottom-panel .new-todo-label { 6 | width: auto; 7 | flex-grow: 1; 8 | margin-right: 3px; 9 | } 10 | -------------------------------------------------------------------------------- /todo/todo-final/src/components/item-status-filter/index.js: -------------------------------------------------------------------------------- 1 | import ItemStatusFilter from './item-status-filter'; 2 | 3 | export default ItemStatusFilter; 4 | -------------------------------------------------------------------------------- /todo/todo-final/src/components/item-status-filter/item-status-filter.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juriy/pro-react-redux/211d736b448a8cae31f6f4901039dfd2e4428686/todo/todo-final/src/components/item-status-filter/item-status-filter.css -------------------------------------------------------------------------------- /todo/todo-final/src/components/search-panel/index.js: -------------------------------------------------------------------------------- 1 | import SearchPanel from './search-panel'; 2 | 3 | export default SearchPanel; 4 | -------------------------------------------------------------------------------- /todo/todo-final/src/components/search-panel/search-panel.css: -------------------------------------------------------------------------------- 1 | .search-panel { 2 | margin: 1rem 0; 3 | } 4 | 5 | .search-panel .search-input { 6 | width: auto; 7 | flex-grow: 1; 8 | margin-right: 3px; 9 | } 10 | -------------------------------------------------------------------------------- /todo/todo-final/src/components/todo-list-item/index.js: -------------------------------------------------------------------------------- 1 | import TodoListItem from './todo-list-item'; 2 | 3 | export default TodoListItem; 4 | -------------------------------------------------------------------------------- /todo/todo-final/src/components/todo-list/index.js: -------------------------------------------------------------------------------- 1 | import TodoList from './todo-list'; 2 | 3 | export default TodoList; 4 | -------------------------------------------------------------------------------- /todo/todo-final/src/components/todo-list/todo-list.css: -------------------------------------------------------------------------------- 1 | .todo-list .list-group-item { 2 | padding: .25rem .75rem; 3 | } 4 | -------------------------------------------------------------------------------- /todo/todo-final/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from './components/app'; 4 | 5 | ReactDOM.render(, 6 | document.getElementById('root')); --------------------------------------------------------------------------------