From 642e1796993f5c8134907314a8716c59dc128800 Mon Sep 17 00:00:00 2001 From: Phuoc Nguyen Date: Sun, 24 Nov 2019 23:09:38 +0700 Subject: [PATCH 1/6] Rename to typescript extension --- client/{App.jsx => App.tsx} | 0 client/{Home.jsx => Home.tsx} | 0 .../{CoverCard.jsx => CoverCard.tsx} | 0 .../components/{Heading.jsx => Heading.tsx} | 0 ...elatedPatterns.jsx => RelatedPatterns.tsx} | 0 .../{SampleCode.jsx => SampleCode.tsx} | 0 client/helpers/{highlight.js => highlight.ts} | 0 client/helpers/{random.js => random.ts} | 0 ...{randomFromArray.js => randomFromArray.ts} | 0 client/helpers/{shuffe.js => shuffe.ts} | 0 client/helpers/{slug.js => slug.ts} | 0 ...seDocumentTitle.js => useDocumentTitle.ts} | 0 .../hooks/{useInterval.js => useInterval.ts} | 0 client/{index.jsx => index.tsx} | 0 .../{DetailsLayout.jsx => DetailsLayout.tsx} | 0 client/layouts/{Footer.jsx => Footer.tsx} | 0 client/layouts/{Layout.jsx => Layout.tsx} | 0 .../{CoverLoader.jsx => CoverLoader.tsx} | 0 .../{DetailsLoader.jsx => DetailsLoader.tsx} | 0 .../patterns/badge/{Cover.jsx => Cover.tsx} | 0 .../badge/{Details.jsx => Details.tsx} | 0 .../breadcrumb/{Cover.jsx => Cover.tsx} | 0 .../breadcrumb/{Details.jsx => Details.tsx} | 0 .../button-with-icon/{Cover.jsx => Cover.tsx} | 0 .../{Details.jsx => Details.tsx} | 0 client/patterns/card/{Cover.jsx => Cover.tsx} | 0 .../card/{Details.jsx => Details.tsx} | 0 .../centering/{Cover.jsx => Cover.tsx} | 0 .../centering/{Details.jsx => Details.tsx} | 0 .../docked-at-corner/{Cover.jsx => Cover.tsx} | 0 .../{Details.jsx => Details.tsx} | 0 .../dot-navigation/{Cover.jsx => Cover.tsx} | 0 .../{Details.jsx => Details.tsx} | 0 .../feature-list/{Cover.jsx => Cover.tsx} | 0 .../feature-list/{Details.jsx => Details.tsx} | 0 .../fixed-at-corner/{Cover.jsx => Cover.tsx} | 0 .../{Details.jsx => Details.tsx} | 0 .../holy-grail/{Cover.jsx => Cover.tsx} | 0 .../holy-grail/{Details.jsx => Details.tsx} | 0 .../input-add-on/{Cover.jsx => Cover.tsx} | 0 .../input-add-on/{Details.jsx => Details.tsx} | 0 .../media-object/{Cover.jsx => Cover.tsx} | 0 .../media-object/{Details.jsx => Details.tsx} | 0 client/patterns/menu/{Cover.jsx => Cover.tsx} | 0 .../menu/{Details.jsx => Details.tsx} | 0 .../patterns/modal/{Cover.jsx => Cover.tsx} | 0 .../modal/{Details.jsx => Details.tsx} | 0 .../notification/{Cover.jsx => Cover.tsx} | 0 .../notification/{Details.jsx => Details.tsx} | 0 .../pagination/{Cover.jsx => Cover.tsx} | 0 .../pagination/{Details.jsx => Details.tsx} | 0 .../{Cover.jsx => Cover.tsx} | 0 .../{Details.jsx => Details.tsx} | 0 .../pricing-table/{Cover.jsx => Cover.tsx} | 0 .../{Details.jsx => Details.tsx} | 0 .../progress-bar/{Cover.jsx => Cover.tsx} | 0 .../progress-bar/{Details.jsx => Details.tsx} | 0 .../{Cover.jsx => Cover.tsx} | 0 .../{Details.jsx => Details.tsx} | 0 .../radio-switch/{Cover.jsx => Cover.tsx} | 0 .../radio-switch/{Details.jsx => Details.tsx} | 0 .../{Cover.jsx => Cover.tsx} | 0 .../{Details.jsx => Details.tsx} | 0 .../search-box/{Cover.jsx => Cover.tsx} | 0 .../search-box/{Details.jsx => Details.tsx} | 0 .../separator/{Cover.jsx => Cover.tsx} | 0 .../separator/{Details.jsx => Details.tsx} | 0 .../patterns/sidebar/{Cover.jsx => Cover.tsx} | 0 .../sidebar/{Details.jsx => Details.tsx} | 0 .../simple-grid/{Cover.jsx => Cover.tsx} | 0 .../simple-grid/{Details.jsx => Details.tsx} | 0 .../patterns/slider/{Cover.jsx => Cover.tsx} | 0 .../slider/{Details.jsx => Details.tsx} | 0 .../split-navigation/{Cover.jsx => Cover.tsx} | 0 .../{Details.jsx => Details.tsx} | 0 .../split-screen/{Cover.jsx => Cover.tsx} | 0 .../split-screen/{Details.jsx => Details.tsx} | 0 .../stepper-input/{Cover.jsx => Cover.tsx} | 0 .../{Details.jsx => Details.tsx} | 0 .../sticky-footer/{Cover.jsx => Cover.tsx} | 0 .../{Details.jsx => Details.tsx} | 0 .../sticky-header/{Cover.jsx => Cover.tsx} | 0 .../{Details.jsx => Details.tsx} | 0 .../patterns/switch/{Cover.jsx => Cover.tsx} | 0 .../switch/{Details.jsx => Details.tsx} | 0 client/patterns/tab/{Cover.jsx => Cover.tsx} | 0 .../patterns/tab/{Details.jsx => Details.tsx} | 0 .../{Cover.jsx => Cover.tsx} | 0 .../{Details.jsx => Details.tsx} | 0 .../patterns/wizard/{Cover.jsx => Cover.tsx} | 0 .../wizard/{Details.jsx => Details.tsx} | 0 client/placeholders/{Block.jsx => Block.tsx} | 0 .../{BrowserFrame.jsx => BrowserFrame.tsx} | 0 .../placeholders/{Circle.jsx => Circle.tsx} | 0 client/placeholders/{Frame.jsx => Frame.tsx} | 0 client/placeholders/{Line.jsx => Line.tsx} | 0 .../{Rectangle.jsx => Rectangle.tsx} | 0 .../placeholders/{Square.jsx => Square.tsx} | 0 .../{Triangle.jsx => Triangle.tsx} | 0 .../{VerticalLine.jsx => VerticalLine.tsx} | 0 package-lock.json | 153 ++++++++++++++++++ package.json | 7 + tsconfig.json | 11 ++ webpack.config.js | 14 +- 104 files changed, 183 insertions(+), 2 deletions(-) rename client/{App.jsx => App.tsx} (100%) rename client/{Home.jsx => Home.tsx} (100%) rename client/components/{CoverCard.jsx => CoverCard.tsx} (100%) rename client/components/{Heading.jsx => Heading.tsx} (100%) rename client/components/{RelatedPatterns.jsx => RelatedPatterns.tsx} (100%) rename client/components/{SampleCode.jsx => SampleCode.tsx} (100%) rename client/helpers/{highlight.js => highlight.ts} (100%) rename client/helpers/{random.js => random.ts} (100%) rename client/helpers/{randomFromArray.js => randomFromArray.ts} (100%) rename client/helpers/{shuffe.js => shuffe.ts} (100%) rename client/helpers/{slug.js => slug.ts} (100%) rename client/hooks/{useDocumentTitle.js => useDocumentTitle.ts} (100%) rename client/hooks/{useInterval.js => useInterval.ts} (100%) rename client/{index.jsx => index.tsx} (100%) rename client/layouts/{DetailsLayout.jsx => DetailsLayout.tsx} (100%) rename client/layouts/{Footer.jsx => Footer.tsx} (100%) rename client/layouts/{Layout.jsx => Layout.tsx} (100%) rename client/loaders/{CoverLoader.jsx => CoverLoader.tsx} (100%) rename client/loaders/{DetailsLoader.jsx => DetailsLoader.tsx} (100%) rename client/patterns/badge/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/badge/{Details.jsx => Details.tsx} (100%) rename client/patterns/breadcrumb/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/breadcrumb/{Details.jsx => Details.tsx} (100%) rename client/patterns/button-with-icon/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/button-with-icon/{Details.jsx => Details.tsx} (100%) rename client/patterns/card/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/card/{Details.jsx => Details.tsx} (100%) rename client/patterns/centering/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/centering/{Details.jsx => Details.tsx} (100%) rename client/patterns/docked-at-corner/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/docked-at-corner/{Details.jsx => Details.tsx} (100%) rename client/patterns/dot-navigation/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/dot-navigation/{Details.jsx => Details.tsx} (100%) rename client/patterns/feature-list/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/feature-list/{Details.jsx => Details.tsx} (100%) rename client/patterns/fixed-at-corner/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/fixed-at-corner/{Details.jsx => Details.tsx} (100%) rename client/patterns/holy-grail/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/holy-grail/{Details.jsx => Details.tsx} (100%) rename client/patterns/input-add-on/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/input-add-on/{Details.jsx => Details.tsx} (100%) rename client/patterns/media-object/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/media-object/{Details.jsx => Details.tsx} (100%) rename client/patterns/menu/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/menu/{Details.jsx => Details.tsx} (100%) rename client/patterns/modal/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/modal/{Details.jsx => Details.tsx} (100%) rename client/patterns/notification/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/notification/{Details.jsx => Details.tsx} (100%) rename client/patterns/pagination/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/pagination/{Details.jsx => Details.tsx} (100%) rename client/patterns/previous-next-buttons/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/previous-next-buttons/{Details.jsx => Details.tsx} (100%) rename client/patterns/pricing-table/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/pricing-table/{Details.jsx => Details.tsx} (100%) rename client/patterns/progress-bar/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/progress-bar/{Details.jsx => Details.tsx} (100%) rename client/patterns/questions-and-answers/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/questions-and-answers/{Details.jsx => Details.tsx} (100%) rename client/patterns/radio-switch/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/radio-switch/{Details.jsx => Details.tsx} (100%) rename client/patterns/same-height-columns/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/same-height-columns/{Details.jsx => Details.tsx} (100%) rename client/patterns/search-box/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/search-box/{Details.jsx => Details.tsx} (100%) rename client/patterns/separator/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/separator/{Details.jsx => Details.tsx} (100%) rename client/patterns/sidebar/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/sidebar/{Details.jsx => Details.tsx} (100%) rename client/patterns/simple-grid/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/simple-grid/{Details.jsx => Details.tsx} (100%) rename client/patterns/slider/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/slider/{Details.jsx => Details.tsx} (100%) rename client/patterns/split-navigation/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/split-navigation/{Details.jsx => Details.tsx} (100%) rename client/patterns/split-screen/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/split-screen/{Details.jsx => Details.tsx} (100%) rename client/patterns/stepper-input/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/stepper-input/{Details.jsx => Details.tsx} (100%) rename client/patterns/sticky-footer/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/sticky-footer/{Details.jsx => Details.tsx} (100%) rename client/patterns/sticky-header/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/sticky-header/{Details.jsx => Details.tsx} (100%) rename client/patterns/switch/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/switch/{Details.jsx => Details.tsx} (100%) rename client/patterns/tab/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/tab/{Details.jsx => Details.tsx} (100%) rename client/patterns/toggle-password-visibility/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/toggle-password-visibility/{Details.jsx => Details.tsx} (100%) rename client/patterns/wizard/{Cover.jsx => Cover.tsx} (100%) rename client/patterns/wizard/{Details.jsx => Details.tsx} (100%) rename client/placeholders/{Block.jsx => Block.tsx} (100%) rename client/placeholders/{BrowserFrame.jsx => BrowserFrame.tsx} (100%) rename client/placeholders/{Circle.jsx => Circle.tsx} (100%) rename client/placeholders/{Frame.jsx => Frame.tsx} (100%) rename client/placeholders/{Line.jsx => Line.tsx} (100%) rename client/placeholders/{Rectangle.jsx => Rectangle.tsx} (100%) rename client/placeholders/{Square.jsx => Square.tsx} (100%) rename client/placeholders/{Triangle.jsx => Triangle.tsx} (100%) rename client/placeholders/{VerticalLine.jsx => VerticalLine.tsx} (100%) create mode 100644 tsconfig.json diff --git a/client/App.jsx b/client/App.tsx similarity index 100% rename from client/App.jsx rename to client/App.tsx diff --git a/client/Home.jsx b/client/Home.tsx similarity index 100% rename from client/Home.jsx rename to client/Home.tsx diff --git a/client/components/CoverCard.jsx b/client/components/CoverCard.tsx similarity index 100% rename from client/components/CoverCard.jsx rename to client/components/CoverCard.tsx diff --git a/client/components/Heading.jsx b/client/components/Heading.tsx similarity index 100% rename from client/components/Heading.jsx rename to client/components/Heading.tsx diff --git a/client/components/RelatedPatterns.jsx b/client/components/RelatedPatterns.tsx similarity index 100% rename from client/components/RelatedPatterns.jsx rename to client/components/RelatedPatterns.tsx diff --git a/client/components/SampleCode.jsx b/client/components/SampleCode.tsx similarity index 100% rename from client/components/SampleCode.jsx rename to client/components/SampleCode.tsx diff --git a/client/helpers/highlight.js b/client/helpers/highlight.ts similarity index 100% rename from client/helpers/highlight.js rename to client/helpers/highlight.ts diff --git a/client/helpers/random.js b/client/helpers/random.ts similarity index 100% rename from client/helpers/random.js rename to client/helpers/random.ts diff --git a/client/helpers/randomFromArray.js b/client/helpers/randomFromArray.ts similarity index 100% rename from client/helpers/randomFromArray.js rename to client/helpers/randomFromArray.ts diff --git a/client/helpers/shuffe.js b/client/helpers/shuffe.ts similarity index 100% rename from client/helpers/shuffe.js rename to client/helpers/shuffe.ts diff --git a/client/helpers/slug.js b/client/helpers/slug.ts similarity index 100% rename from client/helpers/slug.js rename to client/helpers/slug.ts diff --git a/client/hooks/useDocumentTitle.js b/client/hooks/useDocumentTitle.ts similarity index 100% rename from client/hooks/useDocumentTitle.js rename to client/hooks/useDocumentTitle.ts diff --git a/client/hooks/useInterval.js b/client/hooks/useInterval.ts similarity index 100% rename from client/hooks/useInterval.js rename to client/hooks/useInterval.ts diff --git a/client/index.jsx b/client/index.tsx similarity index 100% rename from client/index.jsx rename to client/index.tsx diff --git a/client/layouts/DetailsLayout.jsx b/client/layouts/DetailsLayout.tsx similarity index 100% rename from client/layouts/DetailsLayout.jsx rename to client/layouts/DetailsLayout.tsx diff --git a/client/layouts/Footer.jsx b/client/layouts/Footer.tsx similarity index 100% rename from client/layouts/Footer.jsx rename to client/layouts/Footer.tsx diff --git a/client/layouts/Layout.jsx b/client/layouts/Layout.tsx similarity index 100% rename from client/layouts/Layout.jsx rename to client/layouts/Layout.tsx diff --git a/client/loaders/CoverLoader.jsx b/client/loaders/CoverLoader.tsx similarity index 100% rename from client/loaders/CoverLoader.jsx rename to client/loaders/CoverLoader.tsx diff --git a/client/loaders/DetailsLoader.jsx b/client/loaders/DetailsLoader.tsx similarity index 100% rename from client/loaders/DetailsLoader.jsx rename to client/loaders/DetailsLoader.tsx diff --git a/client/patterns/badge/Cover.jsx b/client/patterns/badge/Cover.tsx similarity index 100% rename from client/patterns/badge/Cover.jsx rename to client/patterns/badge/Cover.tsx diff --git a/client/patterns/badge/Details.jsx b/client/patterns/badge/Details.tsx similarity index 100% rename from client/patterns/badge/Details.jsx rename to client/patterns/badge/Details.tsx diff --git a/client/patterns/breadcrumb/Cover.jsx b/client/patterns/breadcrumb/Cover.tsx similarity index 100% rename from client/patterns/breadcrumb/Cover.jsx rename to client/patterns/breadcrumb/Cover.tsx diff --git a/client/patterns/breadcrumb/Details.jsx b/client/patterns/breadcrumb/Details.tsx similarity index 100% rename from client/patterns/breadcrumb/Details.jsx rename to client/patterns/breadcrumb/Details.tsx diff --git a/client/patterns/button-with-icon/Cover.jsx b/client/patterns/button-with-icon/Cover.tsx similarity index 100% rename from client/patterns/button-with-icon/Cover.jsx rename to client/patterns/button-with-icon/Cover.tsx diff --git a/client/patterns/button-with-icon/Details.jsx b/client/patterns/button-with-icon/Details.tsx similarity index 100% rename from client/patterns/button-with-icon/Details.jsx rename to client/patterns/button-with-icon/Details.tsx diff --git a/client/patterns/card/Cover.jsx b/client/patterns/card/Cover.tsx similarity index 100% rename from client/patterns/card/Cover.jsx rename to client/patterns/card/Cover.tsx diff --git a/client/patterns/card/Details.jsx b/client/patterns/card/Details.tsx similarity index 100% rename from client/patterns/card/Details.jsx rename to client/patterns/card/Details.tsx diff --git a/client/patterns/centering/Cover.jsx b/client/patterns/centering/Cover.tsx similarity index 100% rename from client/patterns/centering/Cover.jsx rename to client/patterns/centering/Cover.tsx diff --git a/client/patterns/centering/Details.jsx b/client/patterns/centering/Details.tsx similarity index 100% rename from client/patterns/centering/Details.jsx rename to client/patterns/centering/Details.tsx diff --git a/client/patterns/docked-at-corner/Cover.jsx b/client/patterns/docked-at-corner/Cover.tsx similarity index 100% rename from client/patterns/docked-at-corner/Cover.jsx rename to client/patterns/docked-at-corner/Cover.tsx diff --git a/client/patterns/docked-at-corner/Details.jsx b/client/patterns/docked-at-corner/Details.tsx similarity index 100% rename from client/patterns/docked-at-corner/Details.jsx rename to client/patterns/docked-at-corner/Details.tsx diff --git a/client/patterns/dot-navigation/Cover.jsx b/client/patterns/dot-navigation/Cover.tsx similarity index 100% rename from client/patterns/dot-navigation/Cover.jsx rename to client/patterns/dot-navigation/Cover.tsx diff --git a/client/patterns/dot-navigation/Details.jsx b/client/patterns/dot-navigation/Details.tsx similarity index 100% rename from client/patterns/dot-navigation/Details.jsx rename to client/patterns/dot-navigation/Details.tsx diff --git a/client/patterns/feature-list/Cover.jsx b/client/patterns/feature-list/Cover.tsx similarity index 100% rename from client/patterns/feature-list/Cover.jsx rename to client/patterns/feature-list/Cover.tsx diff --git a/client/patterns/feature-list/Details.jsx b/client/patterns/feature-list/Details.tsx similarity index 100% rename from client/patterns/feature-list/Details.jsx rename to client/patterns/feature-list/Details.tsx diff --git a/client/patterns/fixed-at-corner/Cover.jsx b/client/patterns/fixed-at-corner/Cover.tsx similarity index 100% rename from client/patterns/fixed-at-corner/Cover.jsx rename to client/patterns/fixed-at-corner/Cover.tsx diff --git a/client/patterns/fixed-at-corner/Details.jsx b/client/patterns/fixed-at-corner/Details.tsx similarity index 100% rename from client/patterns/fixed-at-corner/Details.jsx rename to client/patterns/fixed-at-corner/Details.tsx diff --git a/client/patterns/holy-grail/Cover.jsx b/client/patterns/holy-grail/Cover.tsx similarity index 100% rename from client/patterns/holy-grail/Cover.jsx rename to client/patterns/holy-grail/Cover.tsx diff --git a/client/patterns/holy-grail/Details.jsx b/client/patterns/holy-grail/Details.tsx similarity index 100% rename from client/patterns/holy-grail/Details.jsx rename to client/patterns/holy-grail/Details.tsx diff --git a/client/patterns/input-add-on/Cover.jsx b/client/patterns/input-add-on/Cover.tsx similarity index 100% rename from client/patterns/input-add-on/Cover.jsx rename to client/patterns/input-add-on/Cover.tsx diff --git a/client/patterns/input-add-on/Details.jsx b/client/patterns/input-add-on/Details.tsx similarity index 100% rename from client/patterns/input-add-on/Details.jsx rename to client/patterns/input-add-on/Details.tsx diff --git a/client/patterns/media-object/Cover.jsx b/client/patterns/media-object/Cover.tsx similarity index 100% rename from client/patterns/media-object/Cover.jsx rename to client/patterns/media-object/Cover.tsx diff --git a/client/patterns/media-object/Details.jsx b/client/patterns/media-object/Details.tsx similarity index 100% rename from client/patterns/media-object/Details.jsx rename to client/patterns/media-object/Details.tsx diff --git a/client/patterns/menu/Cover.jsx b/client/patterns/menu/Cover.tsx similarity index 100% rename from client/patterns/menu/Cover.jsx rename to client/patterns/menu/Cover.tsx diff --git a/client/patterns/menu/Details.jsx b/client/patterns/menu/Details.tsx similarity index 100% rename from client/patterns/menu/Details.jsx rename to client/patterns/menu/Details.tsx diff --git a/client/patterns/modal/Cover.jsx b/client/patterns/modal/Cover.tsx similarity index 100% rename from client/patterns/modal/Cover.jsx rename to client/patterns/modal/Cover.tsx diff --git a/client/patterns/modal/Details.jsx b/client/patterns/modal/Details.tsx similarity index 100% rename from client/patterns/modal/Details.jsx rename to client/patterns/modal/Details.tsx diff --git a/client/patterns/notification/Cover.jsx b/client/patterns/notification/Cover.tsx similarity index 100% rename from client/patterns/notification/Cover.jsx rename to client/patterns/notification/Cover.tsx diff --git a/client/patterns/notification/Details.jsx b/client/patterns/notification/Details.tsx similarity index 100% rename from client/patterns/notification/Details.jsx rename to client/patterns/notification/Details.tsx diff --git a/client/patterns/pagination/Cover.jsx b/client/patterns/pagination/Cover.tsx similarity index 100% rename from client/patterns/pagination/Cover.jsx rename to client/patterns/pagination/Cover.tsx diff --git a/client/patterns/pagination/Details.jsx b/client/patterns/pagination/Details.tsx similarity index 100% rename from client/patterns/pagination/Details.jsx rename to client/patterns/pagination/Details.tsx diff --git a/client/patterns/previous-next-buttons/Cover.jsx b/client/patterns/previous-next-buttons/Cover.tsx similarity index 100% rename from client/patterns/previous-next-buttons/Cover.jsx rename to client/patterns/previous-next-buttons/Cover.tsx diff --git a/client/patterns/previous-next-buttons/Details.jsx b/client/patterns/previous-next-buttons/Details.tsx similarity index 100% rename from client/patterns/previous-next-buttons/Details.jsx rename to client/patterns/previous-next-buttons/Details.tsx diff --git a/client/patterns/pricing-table/Cover.jsx b/client/patterns/pricing-table/Cover.tsx similarity index 100% rename from client/patterns/pricing-table/Cover.jsx rename to client/patterns/pricing-table/Cover.tsx diff --git a/client/patterns/pricing-table/Details.jsx b/client/patterns/pricing-table/Details.tsx similarity index 100% rename from client/patterns/pricing-table/Details.jsx rename to client/patterns/pricing-table/Details.tsx diff --git a/client/patterns/progress-bar/Cover.jsx b/client/patterns/progress-bar/Cover.tsx similarity index 100% rename from client/patterns/progress-bar/Cover.jsx rename to client/patterns/progress-bar/Cover.tsx diff --git a/client/patterns/progress-bar/Details.jsx b/client/patterns/progress-bar/Details.tsx similarity index 100% rename from client/patterns/progress-bar/Details.jsx rename to client/patterns/progress-bar/Details.tsx diff --git a/client/patterns/questions-and-answers/Cover.jsx b/client/patterns/questions-and-answers/Cover.tsx similarity index 100% rename from client/patterns/questions-and-answers/Cover.jsx rename to client/patterns/questions-and-answers/Cover.tsx diff --git a/client/patterns/questions-and-answers/Details.jsx b/client/patterns/questions-and-answers/Details.tsx similarity index 100% rename from client/patterns/questions-and-answers/Details.jsx rename to client/patterns/questions-and-answers/Details.tsx diff --git a/client/patterns/radio-switch/Cover.jsx b/client/patterns/radio-switch/Cover.tsx similarity index 100% rename from client/patterns/radio-switch/Cover.jsx rename to client/patterns/radio-switch/Cover.tsx diff --git a/client/patterns/radio-switch/Details.jsx b/client/patterns/radio-switch/Details.tsx similarity index 100% rename from client/patterns/radio-switch/Details.jsx rename to client/patterns/radio-switch/Details.tsx diff --git a/client/patterns/same-height-columns/Cover.jsx b/client/patterns/same-height-columns/Cover.tsx similarity index 100% rename from client/patterns/same-height-columns/Cover.jsx rename to client/patterns/same-height-columns/Cover.tsx diff --git a/client/patterns/same-height-columns/Details.jsx b/client/patterns/same-height-columns/Details.tsx similarity index 100% rename from client/patterns/same-height-columns/Details.jsx rename to client/patterns/same-height-columns/Details.tsx diff --git a/client/patterns/search-box/Cover.jsx b/client/patterns/search-box/Cover.tsx similarity index 100% rename from client/patterns/search-box/Cover.jsx rename to client/patterns/search-box/Cover.tsx diff --git a/client/patterns/search-box/Details.jsx b/client/patterns/search-box/Details.tsx similarity index 100% rename from client/patterns/search-box/Details.jsx rename to client/patterns/search-box/Details.tsx diff --git a/client/patterns/separator/Cover.jsx b/client/patterns/separator/Cover.tsx similarity index 100% rename from client/patterns/separator/Cover.jsx rename to client/patterns/separator/Cover.tsx diff --git a/client/patterns/separator/Details.jsx b/client/patterns/separator/Details.tsx similarity index 100% rename from client/patterns/separator/Details.jsx rename to client/patterns/separator/Details.tsx diff --git a/client/patterns/sidebar/Cover.jsx b/client/patterns/sidebar/Cover.tsx similarity index 100% rename from client/patterns/sidebar/Cover.jsx rename to client/patterns/sidebar/Cover.tsx diff --git a/client/patterns/sidebar/Details.jsx b/client/patterns/sidebar/Details.tsx similarity index 100% rename from client/patterns/sidebar/Details.jsx rename to client/patterns/sidebar/Details.tsx diff --git a/client/patterns/simple-grid/Cover.jsx b/client/patterns/simple-grid/Cover.tsx similarity index 100% rename from client/patterns/simple-grid/Cover.jsx rename to client/patterns/simple-grid/Cover.tsx diff --git a/client/patterns/simple-grid/Details.jsx b/client/patterns/simple-grid/Details.tsx similarity index 100% rename from client/patterns/simple-grid/Details.jsx rename to client/patterns/simple-grid/Details.tsx diff --git a/client/patterns/slider/Cover.jsx b/client/patterns/slider/Cover.tsx similarity index 100% rename from client/patterns/slider/Cover.jsx rename to client/patterns/slider/Cover.tsx diff --git a/client/patterns/slider/Details.jsx b/client/patterns/slider/Details.tsx similarity index 100% rename from client/patterns/slider/Details.jsx rename to client/patterns/slider/Details.tsx diff --git a/client/patterns/split-navigation/Cover.jsx b/client/patterns/split-navigation/Cover.tsx similarity index 100% rename from client/patterns/split-navigation/Cover.jsx rename to client/patterns/split-navigation/Cover.tsx diff --git a/client/patterns/split-navigation/Details.jsx b/client/patterns/split-navigation/Details.tsx similarity index 100% rename from client/patterns/split-navigation/Details.jsx rename to client/patterns/split-navigation/Details.tsx diff --git a/client/patterns/split-screen/Cover.jsx b/client/patterns/split-screen/Cover.tsx similarity index 100% rename from client/patterns/split-screen/Cover.jsx rename to client/patterns/split-screen/Cover.tsx diff --git a/client/patterns/split-screen/Details.jsx b/client/patterns/split-screen/Details.tsx similarity index 100% rename from client/patterns/split-screen/Details.jsx rename to client/patterns/split-screen/Details.tsx diff --git a/client/patterns/stepper-input/Cover.jsx b/client/patterns/stepper-input/Cover.tsx similarity index 100% rename from client/patterns/stepper-input/Cover.jsx rename to client/patterns/stepper-input/Cover.tsx diff --git a/client/patterns/stepper-input/Details.jsx b/client/patterns/stepper-input/Details.tsx similarity index 100% rename from client/patterns/stepper-input/Details.jsx rename to client/patterns/stepper-input/Details.tsx diff --git a/client/patterns/sticky-footer/Cover.jsx b/client/patterns/sticky-footer/Cover.tsx similarity index 100% rename from client/patterns/sticky-footer/Cover.jsx rename to client/patterns/sticky-footer/Cover.tsx diff --git a/client/patterns/sticky-footer/Details.jsx b/client/patterns/sticky-footer/Details.tsx similarity index 100% rename from client/patterns/sticky-footer/Details.jsx rename to client/patterns/sticky-footer/Details.tsx diff --git a/client/patterns/sticky-header/Cover.jsx b/client/patterns/sticky-header/Cover.tsx similarity index 100% rename from client/patterns/sticky-header/Cover.jsx rename to client/patterns/sticky-header/Cover.tsx diff --git a/client/patterns/sticky-header/Details.jsx b/client/patterns/sticky-header/Details.tsx similarity index 100% rename from client/patterns/sticky-header/Details.jsx rename to client/patterns/sticky-header/Details.tsx diff --git a/client/patterns/switch/Cover.jsx b/client/patterns/switch/Cover.tsx similarity index 100% rename from client/patterns/switch/Cover.jsx rename to client/patterns/switch/Cover.tsx diff --git a/client/patterns/switch/Details.jsx b/client/patterns/switch/Details.tsx similarity index 100% rename from client/patterns/switch/Details.jsx rename to client/patterns/switch/Details.tsx diff --git a/client/patterns/tab/Cover.jsx b/client/patterns/tab/Cover.tsx similarity index 100% rename from client/patterns/tab/Cover.jsx rename to client/patterns/tab/Cover.tsx diff --git a/client/patterns/tab/Details.jsx b/client/patterns/tab/Details.tsx similarity index 100% rename from client/patterns/tab/Details.jsx rename to client/patterns/tab/Details.tsx diff --git a/client/patterns/toggle-password-visibility/Cover.jsx b/client/patterns/toggle-password-visibility/Cover.tsx similarity index 100% rename from client/patterns/toggle-password-visibility/Cover.jsx rename to client/patterns/toggle-password-visibility/Cover.tsx diff --git a/client/patterns/toggle-password-visibility/Details.jsx b/client/patterns/toggle-password-visibility/Details.tsx similarity index 100% rename from client/patterns/toggle-password-visibility/Details.jsx rename to client/patterns/toggle-password-visibility/Details.tsx diff --git a/client/patterns/wizard/Cover.jsx b/client/patterns/wizard/Cover.tsx similarity index 100% rename from client/patterns/wizard/Cover.jsx rename to client/patterns/wizard/Cover.tsx diff --git a/client/patterns/wizard/Details.jsx b/client/patterns/wizard/Details.tsx similarity index 100% rename from client/patterns/wizard/Details.jsx rename to client/patterns/wizard/Details.tsx diff --git a/client/placeholders/Block.jsx b/client/placeholders/Block.tsx similarity index 100% rename from client/placeholders/Block.jsx rename to client/placeholders/Block.tsx diff --git a/client/placeholders/BrowserFrame.jsx b/client/placeholders/BrowserFrame.tsx similarity index 100% rename from client/placeholders/BrowserFrame.jsx rename to client/placeholders/BrowserFrame.tsx diff --git a/client/placeholders/Circle.jsx b/client/placeholders/Circle.tsx similarity index 100% rename from client/placeholders/Circle.jsx rename to client/placeholders/Circle.tsx diff --git a/client/placeholders/Frame.jsx b/client/placeholders/Frame.tsx similarity index 100% rename from client/placeholders/Frame.jsx rename to client/placeholders/Frame.tsx diff --git a/client/placeholders/Line.jsx b/client/placeholders/Line.tsx similarity index 100% rename from client/placeholders/Line.jsx rename to client/placeholders/Line.tsx diff --git a/client/placeholders/Rectangle.jsx b/client/placeholders/Rectangle.tsx similarity index 100% rename from client/placeholders/Rectangle.jsx rename to client/placeholders/Rectangle.tsx diff --git a/client/placeholders/Square.jsx b/client/placeholders/Square.tsx similarity index 100% rename from client/placeholders/Square.jsx rename to client/placeholders/Square.tsx diff --git a/client/placeholders/Triangle.jsx b/client/placeholders/Triangle.tsx similarity index 100% rename from client/placeholders/Triangle.jsx rename to client/placeholders/Triangle.tsx diff --git a/client/placeholders/VerticalLine.jsx b/client/placeholders/VerticalLine.tsx similarity index 100% rename from client/placeholders/VerticalLine.jsx rename to client/placeholders/VerticalLine.tsx diff --git a/package-lock.json b/package-lock.json index aa5b531..1fd05e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1977,6 +1977,21 @@ "@types/node": "*" } }, + "@types/history": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.3.tgz", + "integrity": "sha512-cS5owqtwzLN5kY+l+KgKdRJ/Cee8tlmQoGQuIE9tWnSmS3JMKzmxo2HIAk2wODMifGwO20d62xZQLYz+RLfXmw==", + "dev": true + }, + "@types/loadable__component": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/@types/loadable__component/-/loadable__component-5.10.0.tgz", + "integrity": "sha512-AaDP1VxV3p7CdPOtOTl3ALgQ6ES4AxJKO9UGj9vJonq/w2yERxwdzFiWNQFh9fEDXEzjxujBlM2RmSJtHV1/pA==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, "@types/minimatch": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", @@ -1988,6 +2003,52 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.7.tgz", "integrity": "sha512-E6Zn0rffhgd130zbCbAr/JdXfXkoOUFAKNs/rF8qnafSJ8KYaA/j3oz7dcwal+lYjLA7xvdd5J4wdYpCTlP8+w==" }, + "@types/prop-types": { + "version": "15.7.3", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==", + "dev": true + }, + "@types/react": { + "version": "16.9.13", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.13.tgz", + "integrity": "sha512-LikzRslbiufJYHyzbHSW0GrAiff8QYLMBFeZmSxzCYGXKxi8m/1PHX+rsVOwhr7mJNq+VIu2Dhf7U6mjFERK6w==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "csstype": "^2.2.0" + } + }, + "@types/react-dom": { + "version": "16.9.4", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.4.tgz", + "integrity": "sha512-fya9xteU/n90tda0s+FtN5Ym4tbgxpq/hb/Af24dvs6uYnYn+fspaxw5USlw0R8apDNwxsqumdRoCoKitckQqw==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/react-router": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.3.tgz", + "integrity": "sha512-0gGhmerBqN8CzlnDmSgGNun3tuZFXerUclWkqEhozdLaJtfcJRUTGkKaEKk+/MpHd1KDS1+o2zb/3PkBUiv2qQ==", + "dev": true, + "requires": { + "@types/history": "*", + "@types/react": "*" + } + }, + "@types/react-router-dom": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.1.2.tgz", + "integrity": "sha512-kRx8hoBflE4Dp7uus+j/0uMHR5uGTAvQtc4A3vOTWKS+epe0leCuxEx7HNT7XGUd1lH53/moWM51MV2YUyhzAg==", + "dev": true, + "requires": { + "@types/history": "*", + "@types/react": "*", + "@types/react-router": "*" + } + }, "@webassemblyjs/ast": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", @@ -3436,6 +3497,12 @@ "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", "dev": true }, + "csstype": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.7.tgz", + "integrity": "sha512-9Mcn9sFbGBAdmimWb2gLVDtFJzeKtDGIr76TUqmjZrw9LFXBMSU70lcs+C0/7fyCd6iBDqmksUcCOUIkisPHsQ==", + "dev": true + }, "cyclist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", @@ -6748,6 +6815,12 @@ "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" }, + "picomatch": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.1.1.tgz", + "integrity": "sha512-OYMyqkKzK7blWO/+XZYP6w8hH0LDvkBvdvKukti+7kqYFCiEAk+gI3DWnryapc0Dau05ugGTy0foQ6mqn4AHYA==", + "dev": true + }, "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", @@ -7930,6 +8003,16 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, + "source-map-loader": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.4.tgz", + "integrity": "sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==", + "dev": true, + "requires": { + "async": "^2.5.0", + "loader-utils": "^1.1.0" + } + }, "source-map-resolve": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", @@ -8337,6 +8420,70 @@ "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", "dev": true }, + "ts-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-6.2.1.tgz", + "integrity": "sha512-Dd9FekWuABGgjE1g0TlQJ+4dFUfYGbYcs52/HQObE0ZmUNjQlmLAS7xXsSzy23AMaMwipsx5sNHvoEpT2CZq1g==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^4.0.0", + "semver": "^6.0.0" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, "tslib": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", @@ -8363,6 +8510,12 @@ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, + "typescript": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.2.tgz", + "integrity": "sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ==", + "dev": true + }, "uglify-js": { "version": "3.4.10", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", diff --git a/package.json b/package.json index 94ff105..a554f8a 100644 --- a/package.json +++ b/package.json @@ -22,10 +22,17 @@ "@babel/preset-env": "^7.7.4", "@babel/preset-react": "^7.7.4", "@loadable/babel-plugin": "^5.10.3", + "@types/loadable__component": "^5.10.0", + "@types/react": "^16.9.13", + "@types/react-dom": "^16.9.4", + "@types/react-router-dom": "^5.1.2", "babel-loader": "^8.0.6", "css-loader": "^3.2.0", "html-webpack-plugin": "^3.2.0", + "source-map-loader": "^0.2.4", "style-loader": "^1.0.0", + "ts-loader": "^6.2.1", + "typescript": "^3.7.2", "webpack": "^4.41.2", "webpack-bundle-analyzer": "^3.6.0", "webpack-cli": "^3.3.10", diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..36e6fba --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "outDir": "./dist/", + "esModuleInterop": true, + "sourceMap": true, + "noImplicitAny": true, + "module": "commonjs", + "target": "es6", + "jsx": "react" + } +} diff --git a/webpack.config.js b/webpack.config.js index 32f6c19..c808016 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -14,7 +14,7 @@ if (process.env.NODE_ENV === "analyse") { } module.exports = { - entry: './client/index.jsx', + entry: './client/index.tsx', output: { path: path.join(__dirname, 'dist'), filename: '[name].[contenthash].js', @@ -35,10 +35,20 @@ module.exports = { test: /\.css$/, use: ['style-loader', 'css-loader'], }, + { + test: /\.ts(x?)$/, + exclude: /node_modules/, + use: 'ts-loader', + }, + { + enforce: "pre", + test: /\.js$/, + loader: 'source-map-loader', + }, ], }, resolve: { - extensions: ['.js', '.jsx'], + extensions: ['.js', '.jsx', '.ts', '.tsx'], }, devtool: 'cheap-module-eavl-source-map', devServer: { From 154a61de914137ab6335ea5427eb55b5afb10d1c Mon Sep 17 00:00:00 2001 From: Phuoc Nguyen Date: Sun, 24 Nov 2019 23:18:12 +0700 Subject: [PATCH 2/6] Define typescript type for placeholders --- client/components/CoverCard.tsx | 6 +++++- client/loaders/CoverLoader.tsx | 10 +++++++--- client/placeholders/Block.tsx | 8 +++++++- client/placeholders/BrowserFrame.tsx | 9 +++++++-- client/placeholders/Circle.tsx | 6 +++++- client/placeholders/Frame.tsx | 2 +- client/placeholders/Line.tsx | 2 +- client/placeholders/Rectangle.tsx | 6 +++++- client/placeholders/Square.tsx | 6 +++++- client/placeholders/Triangle.tsx | 7 ++++++- client/placeholders/VerticalLine.tsx | 2 +- 11 files changed, 50 insertions(+), 14 deletions(-) diff --git a/client/components/CoverCard.tsx b/client/components/CoverCard.tsx index b84ef7c..b4da205 100644 --- a/client/components/CoverCard.tsx +++ b/client/components/CoverCard.tsx @@ -4,7 +4,11 @@ import { Link } from 'react-router-dom'; import CoverLoader from '../loaders/CoverLoader'; import slug from '../helpers/slug'; -const CoverCard = ({ pattern }) => { +interface CoverCardProps { + pattern: string; +} + +const CoverCard: React.FC = ({ pattern }) => { return (
item.toLowerCase().split(' ').join('-'); +const slug = (item: string) => item.toLowerCase().split(' ').join('-'); -const CoverLoader = loadable(props => import(`../patterns/${slug(props.pattern)}/Cover`)); +const CoverLoader: LoadableComponent = loadable(props => import(`../patterns/${slug(props.pattern)}/Cover`)); export default CoverLoader; diff --git a/client/placeholders/Block.tsx b/client/placeholders/Block.tsx index 7cdb6ba..71c8c78 100644 --- a/client/placeholders/Block.tsx +++ b/client/placeholders/Block.tsx @@ -2,7 +2,13 @@ import React from 'react'; import random from '../helpers/random'; -const Block = ({ justify = 'start', numberOfBlocks = 1, blockHeight = 4 }) => { +interface BlockProps { + blockHeight?: number; + justify?: string; + numberOfBlocks?: number; +} + +const Block: React.FC = ({ justify = 'start', numberOfBlocks = 1, blockHeight = 4 }) => { return (
{ diff --git a/client/placeholders/BrowserFrame.tsx b/client/placeholders/BrowserFrame.tsx index f50176b..dee1b8d 100644 --- a/client/placeholders/BrowserFrame.tsx +++ b/client/placeholders/BrowserFrame.tsx @@ -1,8 +1,13 @@ -import React, { useState } from 'react'; +import React, { useState, ReactNode } from 'react'; import SampleCode from '../components/SampleCode'; -const BrowserFrame = ({ content, source }) => { +interface BrowserFrameProps { + content: ReactNode; + source: string; +} + +const BrowserFrame: React.FC = ({ content, source }) => { const [isContentActive, setContentActive] = useState(true); const flip = () => setContentActive(isActive => !isActive); diff --git a/client/placeholders/Circle.tsx b/client/placeholders/Circle.tsx index df64689..f09127f 100644 --- a/client/placeholders/Circle.tsx +++ b/client/placeholders/Circle.tsx @@ -1,6 +1,10 @@ import React from 'react'; -const Circle = ({ size = 16 }) => { +interface CircleProps { + size?: number; +} + +const Circle: React.FC = ({ size = 16 }) => { return (
{ +const Frame: React.FC<{}> = ({ children }) => { return (
{ +const Line: React.FC<{}> = () => { return (
{ +interface RectangleProps { + height?: number; +} + +const Rectangle: React.FC = ({ height = 8 }) => { return (
{ +interface SquareProps { + size?: number; +} + +const Square: React.FC = ({ size = 8 }) => { return (
); diff --git a/client/placeholders/Triangle.tsx b/client/placeholders/Triangle.tsx index 1cb1d09..2d71136 100644 --- a/client/placeholders/Triangle.tsx +++ b/client/placeholders/Triangle.tsx @@ -1,6 +1,11 @@ import React from 'react'; -const Triangle = ({ size = 16, corner = 'tl' }) => { +interface TriangleProps { + corner?: string; + size?: number; +} + +const Triangle: React.FC = ({ size = 16, corner = 'tl' }) => { let bw = ''; let bc = ''; switch (corner) { diff --git a/client/placeholders/VerticalLine.tsx b/client/placeholders/VerticalLine.tsx index e098ed8..0c3e857 100644 --- a/client/placeholders/VerticalLine.tsx +++ b/client/placeholders/VerticalLine.tsx @@ -1,6 +1,6 @@ import React from 'react'; -const VerticalLine = () => { +const VerticalLine: React.FC<{}> = () => { return (
Date: Sun, 24 Nov 2019 23:36:43 +0700 Subject: [PATCH 3/6] Add typescript types for patterns --- client/components/Heading.tsx | 6 +++++- client/components/RelatedPatterns.tsx | 6 +++++- client/components/SampleCode.tsx | 7 ++++++- client/helpers/highlight.ts | 2 +- client/helpers/random.ts | 3 ++- client/helpers/randomFromArray.ts | 3 ++- client/helpers/shuffe.ts | 2 +- client/helpers/slug.ts | 3 ++- client/hooks/useDocumentTitle.ts | 2 +- client/hooks/useInterval.ts | 2 +- client/layouts/DetailsLayout.tsx | 6 +++++- client/layouts/Footer.tsx | 2 +- client/layouts/Layout.tsx | 2 +- client/loaders/DetailsLoader.tsx | 12 ++++++++---- client/patterns/badge/Cover.tsx | 2 +- client/patterns/badge/Details.tsx | 2 +- client/patterns/breadcrumb/Cover.tsx | 2 +- client/patterns/breadcrumb/Details.tsx | 2 +- client/patterns/button-with-icon/Cover.tsx | 2 +- client/patterns/button-with-icon/Details.tsx | 2 +- client/patterns/card/Cover.tsx | 2 +- client/patterns/card/Details.tsx | 2 +- client/patterns/centering/Cover.tsx | 2 +- client/patterns/centering/Details.tsx | 2 +- client/patterns/docked-at-corner/Cover.tsx | 2 +- client/patterns/docked-at-corner/Details.tsx | 2 +- client/patterns/dot-navigation/Cover.tsx | 2 +- client/patterns/dot-navigation/Details.tsx | 8 ++++++-- client/patterns/feature-list/Cover.tsx | 2 +- client/patterns/feature-list/Details.tsx | 2 +- client/patterns/fixed-at-corner/Cover.tsx | 2 +- client/patterns/fixed-at-corner/Details.tsx | 2 +- client/patterns/holy-grail/Cover.tsx | 2 +- client/patterns/holy-grail/Details.tsx | 2 +- client/patterns/input-add-on/Cover.tsx | 2 +- client/patterns/input-add-on/Details.tsx | 2 +- client/patterns/media-object/Cover.tsx | 2 +- client/patterns/media-object/Details.tsx | 2 +- client/patterns/menu/Cover.tsx | 2 +- client/patterns/menu/Details.tsx | 2 +- client/patterns/modal/Cover.tsx | 2 +- client/patterns/modal/Details.tsx | 2 +- client/patterns/notification/Cover.tsx | 2 +- client/patterns/notification/Details.tsx | 2 +- client/patterns/pagination/Cover.tsx | 2 +- client/patterns/pagination/Details.tsx | 2 +- client/patterns/previous-next-buttons/Cover.tsx | 2 +- client/patterns/previous-next-buttons/Details.tsx | 2 +- client/patterns/pricing-table/Cover.tsx | 2 +- client/patterns/pricing-table/Details.tsx | 2 +- client/patterns/progress-bar/Cover.tsx | 2 +- client/patterns/progress-bar/Details.tsx | 2 +- client/patterns/questions-and-answers/Cover.tsx | 2 +- client/patterns/questions-and-answers/Details.tsx | 9 +++++++-- client/patterns/radio-switch/Cover.tsx | 2 +- client/patterns/radio-switch/Details.tsx | 2 +- client/patterns/same-height-columns/Cover.tsx | 2 +- client/patterns/same-height-columns/Details.tsx | 2 +- client/patterns/search-box/Cover.tsx | 2 +- client/patterns/search-box/Details.tsx | 2 +- client/patterns/separator/Cover.tsx | 2 +- client/patterns/separator/Details.tsx | 2 +- client/patterns/sidebar/Cover.tsx | 2 +- client/patterns/sidebar/Details.tsx | 2 +- client/patterns/simple-grid/Cover.tsx | 2 +- client/patterns/simple-grid/Details.tsx | 2 +- client/patterns/slider/Cover.tsx | 2 +- client/patterns/slider/Details.tsx | 2 +- client/patterns/split-navigation/Cover.tsx | 2 +- client/patterns/split-navigation/Details.tsx | 2 +- client/patterns/split-screen/Cover.tsx | 2 +- client/patterns/split-screen/Details.tsx | 2 +- client/patterns/stepper-input/Cover.tsx | 2 +- client/patterns/stepper-input/Details.tsx | 4 ++-- client/patterns/sticky-footer/Cover.tsx | 2 +- client/patterns/sticky-footer/Details.tsx | 2 +- client/patterns/sticky-header/Cover.tsx | 2 +- client/patterns/sticky-header/Details.tsx | 2 +- client/patterns/switch/Cover.tsx | 2 +- client/patterns/switch/Details.tsx | 2 +- client/patterns/tab/Cover.tsx | 2 +- client/patterns/tab/Details.tsx | 8 ++++++-- .../patterns/toggle-password-visibility/Cover.tsx | 2 +- .../toggle-password-visibility/Details.tsx | 2 +- client/patterns/wizard/Cover.tsx | 2 +- client/patterns/wizard/Details.tsx | 2 +- package-lock.json | 15 +++++++++++++++ package.json | 1 + 88 files changed, 146 insertions(+), 93 deletions(-) diff --git a/client/components/Heading.tsx b/client/components/Heading.tsx index 3dd9647..0c6de4a 100644 --- a/client/components/Heading.tsx +++ b/client/components/Heading.tsx @@ -1,6 +1,10 @@ import React from 'react'; -const Heading = ({ title }) => { +interface HeadingProps { + title: string; +} + +const Heading: React.FC = ({ title }) => { return (

{title}

diff --git a/client/components/RelatedPatterns.tsx b/client/components/RelatedPatterns.tsx index 0db9682..28de192 100644 --- a/client/components/RelatedPatterns.tsx +++ b/client/components/RelatedPatterns.tsx @@ -3,7 +3,11 @@ import React, { useEffect } from 'react'; import CoverCard from './CoverCard'; import Heading from './Heading'; -const RelatedPatterns = ({ patterns }) => { +interface RelatedPatternsProps { + patterns: string[]; +} + +const RelatedPatterns: React.FC = ({ patterns }) => { return (
diff --git a/client/components/SampleCode.tsx b/client/components/SampleCode.tsx index d3991f1..f082e93 100644 --- a/client/components/SampleCode.tsx +++ b/client/components/SampleCode.tsx @@ -2,7 +2,12 @@ import React from 'react'; import highlight from '../helpers/highlight'; -const SampleCode = ({ code, lang }) => { +interface SampleCodeProps { + code: string; + lang: string; +} + +const SampleCode: React.FC = ({ code, lang }) => { return code === '' ? <> : ( diff --git a/client/helpers/highlight.ts b/client/helpers/highlight.ts index d80bf36..6c0732b 100755 --- a/client/helpers/highlight.ts +++ b/client/helpers/highlight.ts @@ -3,7 +3,7 @@ import html from 'highlight.js/lib/languages/xml'; hljs.registerLanguage('html', html); -const highlight = (input, language) => { +const highlight = (input: string, language: string) => { const lang = language || 'html'; const { value } = hljs.highlight(lang, input); const highlighted = value.replace('&', '&').trim(); diff --git a/client/helpers/random.ts b/client/helpers/random.ts index 72658a7..cec9113 100644 --- a/client/helpers/random.ts +++ b/client/helpers/random.ts @@ -1,2 +1,3 @@ -const random = (min, max) => min + Math.round(Math.random() * (max - min)); +const random = (min: number, max: number) => min + Math.round(Math.random() * (max - min)); + export default random; diff --git a/client/helpers/randomFromArray.ts b/client/helpers/randomFromArray.ts index 1ba00fd..ca7ba73 100644 --- a/client/helpers/randomFromArray.ts +++ b/client/helpers/randomFromArray.ts @@ -1,2 +1,3 @@ -const randomFromArray = (array) => array[Math.floor(Math.random() * array.length)]; +const randomFromArray = (array: number[]) => array[Math.floor(Math.random() * array.length)]; + export default randomFromArray; diff --git a/client/helpers/shuffe.ts b/client/helpers/shuffe.ts index 4572f5d..d87417d 100644 --- a/client/helpers/shuffe.ts +++ b/client/helpers/shuffe.ts @@ -1,4 +1,4 @@ -const shuffe = (array) => { +const shuffe = (array: number[]) => { array.sort(() => Math.random() - 0.5); return array; }; diff --git a/client/helpers/slug.ts b/client/helpers/slug.ts index 9ca612b..bbbcfa3 100644 --- a/client/helpers/slug.ts +++ b/client/helpers/slug.ts @@ -1,2 +1,3 @@ -const slug = item => item.toLowerCase().split(' ').join('-'); +const slug = (item: string) => item.toLowerCase().split(' ').join('-'); + export default slug; diff --git a/client/hooks/useDocumentTitle.ts b/client/hooks/useDocumentTitle.ts index 17066ee..00f730a 100644 --- a/client/hooks/useDocumentTitle.ts +++ b/client/hooks/useDocumentTitle.ts @@ -1,6 +1,6 @@ import { useEffect } from 'react'; -const useDocumentTitle = (title) => { +const useDocumentTitle = (title: string) => { useEffect(() => { document.title = title; }, [title]); diff --git a/client/hooks/useInterval.ts b/client/hooks/useInterval.ts index cb441ad..5c057cd 100644 --- a/client/hooks/useInterval.ts +++ b/client/hooks/useInterval.ts @@ -1,6 +1,6 @@ import { useEffect } from 'react'; -const useInterval = (callback, delay) => { +const useInterval = (callback: () => void, delay?: number) => { useEffect( () => { const handler = () => callback(); diff --git a/client/layouts/DetailsLayout.tsx b/client/layouts/DetailsLayout.tsx index aecedb6..bae7ebc 100644 --- a/client/layouts/DetailsLayout.tsx +++ b/client/layouts/DetailsLayout.tsx @@ -4,7 +4,11 @@ import { Link } from 'react-router-dom'; import useDocumentTitle from '../hooks/useDocumentTitle'; import Layout from './Layout'; -const DetailsLayout = ({ title, children }) => { +interface DetailsLayoutProps { + title: string; +} + +const DetailsLayout: React.FC = ({ title, children }) => { useDocumentTitle(`CSS Layout ∙ ${title}`); return ( diff --git a/client/layouts/Footer.tsx b/client/layouts/Footer.tsx index 3b900e4..c7bf7c8 100644 --- a/client/layouts/Footer.tsx +++ b/client/layouts/Footer.tsx @@ -2,7 +2,7 @@ import React from 'react'; import Heading from '../components/Heading'; -const Footer = () => { +const Footer: React.FC<{}> = () => { return (
diff --git a/client/layouts/Layout.tsx b/client/layouts/Layout.tsx index fe0274f..9d99df5 100644 --- a/client/layouts/Layout.tsx +++ b/client/layouts/Layout.tsx @@ -2,7 +2,7 @@ import React, { useEffect } from 'react'; import Footer from './Footer'; -const Layout = ({ children }) => { +const Layout: React.FC<{}> = ({ children }) => { useEffect(() => { window.scrollTo(0, 0); }, []); diff --git a/client/loaders/DetailsLoader.tsx b/client/loaders/DetailsLoader.tsx index 5bddd06..7400c24 100644 --- a/client/loaders/DetailsLoader.tsx +++ b/client/loaders/DetailsLoader.tsx @@ -1,9 +1,13 @@ import React from 'react'; -import loadable from '@loadable/component'; +import loadable, { LoadableComponent } from '@loadable/component'; import './spinner.css'; -const slug = item => item.toLowerCase().split(' ').join('-'); +interface DetailsLoaderProps { + pattern: string; +} + +const slug = (item: string) => item.toLowerCase().split(' ').join('-'); // In order to create a link to another page that is dynamically loaded (via ), // the page chunks have to be loadable by @loadable. @@ -12,9 +16,9 @@ const slug = item => item.toLowerCase().split(' ').join('-'); // { // "plugins": ["@loadable/babel-plugin"], // } -const loadDetails = /* #__LOADABLE__ */ (props) => import(`../patterns/${slug(props.pattern)}/Details`) +const loadDetails = /* #__LOADABLE__ */ (props: DetailsLoaderProps) => import(`../patterns/${slug(props.pattern)}/Details`) -const DetailsLoader = loadable(loadDetails, { +const DetailsLoader: LoadableComponent = loadable(loadDetails, { fallback: (
diff --git a/client/patterns/badge/Cover.tsx b/client/patterns/badge/Cover.tsx index 0e94fc0..5da6a43 100644 --- a/client/patterns/badge/Cover.tsx +++ b/client/patterns/badge/Cover.tsx @@ -2,7 +2,7 @@ import React from 'react'; import Frame from '../../placeholders/Frame'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/badge/Details.tsx b/client/patterns/badge/Details.tsx index 730ffb4..42e60b3 100644 --- a/client/patterns/badge/Details.tsx +++ b/client/patterns/badge/Details.tsx @@ -3,7 +3,7 @@ import React from 'react'; import DetailsLayout from '../../layouts/DetailsLayout'; import BrowserFrame from '../../placeholders/BrowserFrame'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/breadcrumb/Cover.tsx b/client/patterns/breadcrumb/Cover.tsx index f1b9a99..6fdc55e 100644 --- a/client/patterns/breadcrumb/Cover.tsx +++ b/client/patterns/breadcrumb/Cover.tsx @@ -3,7 +3,7 @@ import React from 'react'; import Frame from '../../placeholders/Frame'; import Rectangle from '../../placeholders/Rectangle'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/breadcrumb/Details.tsx b/client/patterns/breadcrumb/Details.tsx index 37a271f..243caf0 100644 --- a/client/patterns/breadcrumb/Details.tsx +++ b/client/patterns/breadcrumb/Details.tsx @@ -4,7 +4,7 @@ import DetailsLayout from '../../layouts/DetailsLayout'; import BrowserFrame from '../../placeholders/BrowserFrame'; import Rectangle from '../../placeholders/Rectangle'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/button-with-icon/Cover.tsx b/client/patterns/button-with-icon/Cover.tsx index fc921d3..d89e5c1 100644 --- a/client/patterns/button-with-icon/Cover.tsx +++ b/client/patterns/button-with-icon/Cover.tsx @@ -4,7 +4,7 @@ import Circle from '../../placeholders/Circle'; import Frame from '../../placeholders/Frame'; import Rectangle from '../../placeholders/Rectangle'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/button-with-icon/Details.tsx b/client/patterns/button-with-icon/Details.tsx index e4251a1..2a7afb5 100644 --- a/client/patterns/button-with-icon/Details.tsx +++ b/client/patterns/button-with-icon/Details.tsx @@ -5,7 +5,7 @@ import BrowserFrame from '../../placeholders/BrowserFrame'; import Circle from '../../placeholders/Circle'; import Rectangle from '../../placeholders/Rectangle'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/card/Cover.tsx b/client/patterns/card/Cover.tsx index c85e38c..e639d59 100644 --- a/client/patterns/card/Cover.tsx +++ b/client/patterns/card/Cover.tsx @@ -4,7 +4,7 @@ import Frame from '../../placeholders/Frame'; import Line from '../../placeholders/Line'; import Rectangle from '../../placeholders/Rectangle'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/card/Details.tsx b/client/patterns/card/Details.tsx index 2d78d1b..6f3b6bc 100644 --- a/client/patterns/card/Details.tsx +++ b/client/patterns/card/Details.tsx @@ -5,7 +5,7 @@ import Block from '../../placeholders/Block'; import BrowserFrame from '../../placeholders/BrowserFrame'; import Rectangle from '../../placeholders/Rectangle'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/centering/Cover.tsx b/client/patterns/centering/Cover.tsx index 528259b..8a21955 100644 --- a/client/patterns/centering/Cover.tsx +++ b/client/patterns/centering/Cover.tsx @@ -4,7 +4,7 @@ import Circle from '../../placeholders/Circle'; import Frame from '../../placeholders/Frame'; import Line from '../../placeholders/Line'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/centering/Details.tsx b/client/patterns/centering/Details.tsx index c255b36..4138491 100644 --- a/client/patterns/centering/Details.tsx +++ b/client/patterns/centering/Details.tsx @@ -5,7 +5,7 @@ import BrowserFrame from '../../placeholders/BrowserFrame'; import Circle from '../../placeholders/Circle'; import Rectangle from '../../placeholders/Rectangle'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/docked-at-corner/Cover.tsx b/client/patterns/docked-at-corner/Cover.tsx index 201832f..a6853c6 100644 --- a/client/patterns/docked-at-corner/Cover.tsx +++ b/client/patterns/docked-at-corner/Cover.tsx @@ -2,7 +2,7 @@ import React from 'react'; import Frame from '../../placeholders/Frame'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/docked-at-corner/Details.tsx b/client/patterns/docked-at-corner/Details.tsx index 15d24cc..e5da3ac 100644 --- a/client/patterns/docked-at-corner/Details.tsx +++ b/client/patterns/docked-at-corner/Details.tsx @@ -5,7 +5,7 @@ import DetailsLayout from '../../layouts/DetailsLayout'; import BrowserFrame from '../../placeholders/BrowserFrame'; import Rectangle from '../../placeholders/Rectangle'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/dot-navigation/Cover.tsx b/client/patterns/dot-navigation/Cover.tsx index a9ed22e..1f4a0b9 100644 --- a/client/patterns/dot-navigation/Cover.tsx +++ b/client/patterns/dot-navigation/Cover.tsx @@ -2,7 +2,7 @@ import React from 'react'; import Frame from '../../placeholders/Frame'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/dot-navigation/Details.tsx b/client/patterns/dot-navigation/Details.tsx index 6db5a37..e5d0c54 100644 --- a/client/patterns/dot-navigation/Details.tsx +++ b/client/patterns/dot-navigation/Details.tsx @@ -3,10 +3,14 @@ import React, { useState } from 'react'; import DetailsLayout from '../../layouts/DetailsLayout'; import BrowserFrame from '../../placeholders/BrowserFrame'; -const Details = () => { +interface DotProps { + index: number; +} + +const Details: React.FC<{}> = () => { const [activeItem, setActiveItem] = useState(0); - const Dot = ({ index }) => { + const Dot: React.FC = ({ index }) => { const isActive = index === activeItem; const click = () => setActiveItem(index); return ( diff --git a/client/patterns/feature-list/Cover.tsx b/client/patterns/feature-list/Cover.tsx index 83b971f..9e3d30f 100644 --- a/client/patterns/feature-list/Cover.tsx +++ b/client/patterns/feature-list/Cover.tsx @@ -5,7 +5,7 @@ import Frame from '../../placeholders/Frame'; import Line from '../../placeholders/Line'; import Rectangle from '../../placeholders/Rectangle'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/feature-list/Details.tsx b/client/patterns/feature-list/Details.tsx index ac39a27..741bb22 100644 --- a/client/patterns/feature-list/Details.tsx +++ b/client/patterns/feature-list/Details.tsx @@ -6,7 +6,7 @@ import BrowserFrame from '../../placeholders/BrowserFrame'; import Circle from '../../placeholders/Circle'; import Rectangle from '../../placeholders/Rectangle'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/fixed-at-corner/Cover.tsx b/client/patterns/fixed-at-corner/Cover.tsx index 0857f72..bac55d4 100644 --- a/client/patterns/fixed-at-corner/Cover.tsx +++ b/client/patterns/fixed-at-corner/Cover.tsx @@ -3,7 +3,7 @@ import React from 'react'; import Frame from '../../placeholders/Frame'; import Triangle from '../../placeholders/Triangle'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/fixed-at-corner/Details.tsx b/client/patterns/fixed-at-corner/Details.tsx index add55f1..b5fc633 100644 --- a/client/patterns/fixed-at-corner/Details.tsx +++ b/client/patterns/fixed-at-corner/Details.tsx @@ -4,7 +4,7 @@ import DetailsLayout from '../../layouts/DetailsLayout'; import BrowserFrame from '../../placeholders/BrowserFrame'; import Triangle from '../../placeholders/Triangle'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/holy-grail/Cover.tsx b/client/patterns/holy-grail/Cover.tsx index 1c4efe5..074b849 100644 --- a/client/patterns/holy-grail/Cover.tsx +++ b/client/patterns/holy-grail/Cover.tsx @@ -3,7 +3,7 @@ import React from 'react'; import Frame from '../../placeholders/Frame'; import Line from '../../placeholders/Line'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/holy-grail/Details.tsx b/client/patterns/holy-grail/Details.tsx index 9ee05fc..ce4dc54 100644 --- a/client/patterns/holy-grail/Details.tsx +++ b/client/patterns/holy-grail/Details.tsx @@ -5,7 +5,7 @@ import Block from '../../placeholders/Block'; import BrowserFrame from '../../placeholders/BrowserFrame'; import Rectangle from '../../placeholders/Rectangle'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/input-add-on/Cover.tsx b/client/patterns/input-add-on/Cover.tsx index 1925a65..a0dd9ca 100644 --- a/client/patterns/input-add-on/Cover.tsx +++ b/client/patterns/input-add-on/Cover.tsx @@ -3,7 +3,7 @@ import React from 'react'; import Frame from '../../placeholders/Frame'; import Line from '../../placeholders/Line'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/input-add-on/Details.tsx b/client/patterns/input-add-on/Details.tsx index 2d26f7f..06d7261 100644 --- a/client/patterns/input-add-on/Details.tsx +++ b/client/patterns/input-add-on/Details.tsx @@ -4,7 +4,7 @@ import DetailsLayout from '../../layouts/DetailsLayout'; import BrowserFrame from '../../placeholders/BrowserFrame'; import Rectangle from '../../placeholders/Rectangle'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/media-object/Cover.tsx b/client/patterns/media-object/Cover.tsx index 44e203b..b54b867 100644 --- a/client/patterns/media-object/Cover.tsx +++ b/client/patterns/media-object/Cover.tsx @@ -4,7 +4,7 @@ import Frame from '../../placeholders/Frame'; import Line from '../../placeholders/Line'; import Square from '../../placeholders/Square'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/media-object/Details.tsx b/client/patterns/media-object/Details.tsx index d431278..f23c220 100644 --- a/client/patterns/media-object/Details.tsx +++ b/client/patterns/media-object/Details.tsx @@ -6,7 +6,7 @@ import BrowserFrame from '../../placeholders/BrowserFrame'; import Rectangle from '../../placeholders/Rectangle'; import Square from '../../placeholders/Square'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/menu/Cover.tsx b/client/patterns/menu/Cover.tsx index d585df9..841c9b4 100644 --- a/client/patterns/menu/Cover.tsx +++ b/client/patterns/menu/Cover.tsx @@ -3,7 +3,7 @@ import React from 'react'; import Frame from '../../placeholders/Frame'; import Line from '../../placeholders/Line'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/menu/Details.tsx b/client/patterns/menu/Details.tsx index bb5ad21..3583c44 100644 --- a/client/patterns/menu/Details.tsx +++ b/client/patterns/menu/Details.tsx @@ -5,7 +5,7 @@ import BrowserFrame from '../../placeholders/BrowserFrame'; import Circle from '../../placeholders/Circle'; import Rectangle from '../../placeholders/Rectangle'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/modal/Cover.tsx b/client/patterns/modal/Cover.tsx index f4c4c5e..e2faccc 100644 --- a/client/patterns/modal/Cover.tsx +++ b/client/patterns/modal/Cover.tsx @@ -4,7 +4,7 @@ import Frame from '../../placeholders/Frame'; import Line from '../../placeholders/Line'; import Rectangle from '../../placeholders/Rectangle'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/modal/Details.tsx b/client/patterns/modal/Details.tsx index 3e4bf66..81c2032 100644 --- a/client/patterns/modal/Details.tsx +++ b/client/patterns/modal/Details.tsx @@ -6,7 +6,7 @@ import BrowserFrame from '../../placeholders/BrowserFrame'; import Circle from '../../placeholders/Circle'; import Rectangle from '../../placeholders/Rectangle'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/notification/Cover.tsx b/client/patterns/notification/Cover.tsx index 9d5975a..48a12f1 100644 --- a/client/patterns/notification/Cover.tsx +++ b/client/patterns/notification/Cover.tsx @@ -3,7 +3,7 @@ import React from 'react'; import Frame from '../../placeholders/Frame'; import Rectangle from '../../placeholders/Rectangle'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/notification/Details.tsx b/client/patterns/notification/Details.tsx index 8065ffc..a89f39c 100644 --- a/client/patterns/notification/Details.tsx +++ b/client/patterns/notification/Details.tsx @@ -5,7 +5,7 @@ import Block from '../../placeholders/Block'; import BrowserFrame from '../../placeholders/BrowserFrame'; import Circle from '../../placeholders/Circle'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/pagination/Cover.tsx b/client/patterns/pagination/Cover.tsx index 522029d..18ef6df 100644 --- a/client/patterns/pagination/Cover.tsx +++ b/client/patterns/pagination/Cover.tsx @@ -4,7 +4,7 @@ import Frame from '../../placeholders/Frame'; import Circle from '../../placeholders/Circle'; import Rectangle from '../../placeholders/Rectangle'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/pagination/Details.tsx b/client/patterns/pagination/Details.tsx index a1fade8..c457dfe 100644 --- a/client/patterns/pagination/Details.tsx +++ b/client/patterns/pagination/Details.tsx @@ -5,7 +5,7 @@ import BrowserFrame from '../../placeholders/BrowserFrame'; import Circle from '../../placeholders/Circle'; import Rectangle from '../../placeholders/Rectangle'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/previous-next-buttons/Cover.tsx b/client/patterns/previous-next-buttons/Cover.tsx index 7f76b8b..ce863f2 100644 --- a/client/patterns/previous-next-buttons/Cover.tsx +++ b/client/patterns/previous-next-buttons/Cover.tsx @@ -3,7 +3,7 @@ import React from 'react'; import Frame from '../../placeholders/Frame'; import Rectangle from '../../placeholders/Rectangle'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/previous-next-buttons/Details.tsx b/client/patterns/previous-next-buttons/Details.tsx index 95323a3..fa57fc3 100644 --- a/client/patterns/previous-next-buttons/Details.tsx +++ b/client/patterns/previous-next-buttons/Details.tsx @@ -4,7 +4,7 @@ import DetailsLayout from '../../layouts/DetailsLayout'; import BrowserFrame from '../../placeholders/BrowserFrame'; import Rectangle from '../../placeholders/Rectangle'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/pricing-table/Cover.tsx b/client/patterns/pricing-table/Cover.tsx index 1c25298..c065b09 100644 --- a/client/patterns/pricing-table/Cover.tsx +++ b/client/patterns/pricing-table/Cover.tsx @@ -5,7 +5,7 @@ import Frame from '../../placeholders/Frame'; import Line from '../../placeholders/Line'; import Rectangle from '../../placeholders/Rectangle'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/pricing-table/Details.tsx b/client/patterns/pricing-table/Details.tsx index ed0e32f..b5c1c30 100644 --- a/client/patterns/pricing-table/Details.tsx +++ b/client/patterns/pricing-table/Details.tsx @@ -6,7 +6,7 @@ import Block from '../../placeholders/Block'; import BrowserFrame from '../../placeholders/BrowserFrame'; import Rectangle from '../../placeholders/Rectangle'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/progress-bar/Cover.tsx b/client/patterns/progress-bar/Cover.tsx index 4c47898..cb1ac32 100644 --- a/client/patterns/progress-bar/Cover.tsx +++ b/client/patterns/progress-bar/Cover.tsx @@ -2,7 +2,7 @@ import React from 'react'; import Frame from '../../placeholders/Frame'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/progress-bar/Details.tsx b/client/patterns/progress-bar/Details.tsx index fb13a36..92b2b83 100644 --- a/client/patterns/progress-bar/Details.tsx +++ b/client/patterns/progress-bar/Details.tsx @@ -4,7 +4,7 @@ import DetailsLayout from '../../layouts/DetailsLayout'; import BrowserFrame from '../../placeholders/BrowserFrame'; import useInterval from '../../hooks/useInterval'; -const Details = () => { +const Details: React.FC<{}> = () => { const [progress, setProgress] = useState(0); useInterval(() => { setProgress(v => v === 100 ? 0 : v + 1); diff --git a/client/patterns/questions-and-answers/Cover.tsx b/client/patterns/questions-and-answers/Cover.tsx index de4f8ab..3b55282 100644 --- a/client/patterns/questions-and-answers/Cover.tsx +++ b/client/patterns/questions-and-answers/Cover.tsx @@ -5,7 +5,7 @@ import Line from '../../placeholders/Line'; import Rectangle from '../../placeholders/Rectangle'; import Triangle from '../../placeholders/Triangle'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/questions-and-answers/Details.tsx b/client/patterns/questions-and-answers/Details.tsx index 3eb2998..938ad6f 100644 --- a/client/patterns/questions-and-answers/Details.tsx +++ b/client/patterns/questions-and-answers/Details.tsx @@ -6,10 +6,15 @@ import BrowserFrame from '../../placeholders/BrowserFrame'; import Rectangle from '../../placeholders/Rectangle'; import Triangle from '../../placeholders/Triangle'; -const Details = () => { +interface ItemProps { + index: number; + title: React.ReactNode; +} + +const Details: React.FC<{}> = () => { const [activeItem, setActiveItem] = useState(-1); - const Item = ({ index, title, children }) => { + const Item: React.FC = ({ index, title, children }) => { const isOpened = (index === activeItem); const click = () => setActiveItem(isOpened ? -1 : index); return ( diff --git a/client/patterns/radio-switch/Cover.tsx b/client/patterns/radio-switch/Cover.tsx index f845219..f187bee 100644 --- a/client/patterns/radio-switch/Cover.tsx +++ b/client/patterns/radio-switch/Cover.tsx @@ -3,7 +3,7 @@ import React from 'react'; import Frame from '../../placeholders/Frame'; import Rectangle from '../../placeholders/Rectangle'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/radio-switch/Details.tsx b/client/patterns/radio-switch/Details.tsx index f587d88..3f1329d 100644 --- a/client/patterns/radio-switch/Details.tsx +++ b/client/patterns/radio-switch/Details.tsx @@ -5,7 +5,7 @@ import RelatedPatterns from '../../components/RelatedPatterns'; import DetailsLayout from '../../layouts/DetailsLayout'; import BrowserFrame from '../../placeholders/BrowserFrame'; -const Details = () => { +const Details: React.FC<{}> = () => { const [isFirstChecked, setFirstChecked] = useState(false); const toggle = () => setFirstChecked(c => !c); diff --git a/client/patterns/same-height-columns/Cover.tsx b/client/patterns/same-height-columns/Cover.tsx index 2bd6b22..8dc38f1 100644 --- a/client/patterns/same-height-columns/Cover.tsx +++ b/client/patterns/same-height-columns/Cover.tsx @@ -4,7 +4,7 @@ import Frame from '../../placeholders/Frame'; import Line from '../../placeholders/Line'; import Square from '../../placeholders/Square'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/same-height-columns/Details.tsx b/client/patterns/same-height-columns/Details.tsx index 147ca60..70bbb17 100644 --- a/client/patterns/same-height-columns/Details.tsx +++ b/client/patterns/same-height-columns/Details.tsx @@ -5,7 +5,7 @@ import Block from '../../placeholders/Block'; import BrowserFrame from '../../placeholders/BrowserFrame'; import Rectangle from '../../placeholders/Rectangle'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/search-box/Cover.tsx b/client/patterns/search-box/Cover.tsx index 39e13e6..9b1e653 100644 --- a/client/patterns/search-box/Cover.tsx +++ b/client/patterns/search-box/Cover.tsx @@ -3,7 +3,7 @@ import React from 'react'; import Circle from '../../placeholders/Circle'; import Frame from '../../placeholders/Frame'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/search-box/Details.tsx b/client/patterns/search-box/Details.tsx index 3be9ded..6892dc2 100644 --- a/client/patterns/search-box/Details.tsx +++ b/client/patterns/search-box/Details.tsx @@ -4,7 +4,7 @@ import DetailsLayout from '../../layouts/DetailsLayout'; import BrowserFrame from '../../placeholders/BrowserFrame'; import Circle from '../../placeholders/Circle'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/separator/Cover.tsx b/client/patterns/separator/Cover.tsx index cb231aa..79de80b 100644 --- a/client/patterns/separator/Cover.tsx +++ b/client/patterns/separator/Cover.tsx @@ -4,7 +4,7 @@ import Frame from '../../placeholders/Frame'; import Line from '../../placeholders/Line'; import Rectangle from '../../placeholders/Rectangle'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/separator/Details.tsx b/client/patterns/separator/Details.tsx index f919fe0..54a3e6c 100644 --- a/client/patterns/separator/Details.tsx +++ b/client/patterns/separator/Details.tsx @@ -4,7 +4,7 @@ import DetailsLayout from '../../layouts/DetailsLayout'; import BrowserFrame from '../../placeholders/BrowserFrame'; import Rectangle from '../../placeholders/Rectangle'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/sidebar/Cover.tsx b/client/patterns/sidebar/Cover.tsx index 994889c..5b6d141 100644 --- a/client/patterns/sidebar/Cover.tsx +++ b/client/patterns/sidebar/Cover.tsx @@ -3,7 +3,7 @@ import React from 'react'; import Frame from '../../placeholders/Frame'; import Line from '../../placeholders/Line'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/sidebar/Details.tsx b/client/patterns/sidebar/Details.tsx index 7598d6e..641e115 100644 --- a/client/patterns/sidebar/Details.tsx +++ b/client/patterns/sidebar/Details.tsx @@ -4,7 +4,7 @@ import DetailsLayout from '../../layouts/DetailsLayout'; import BrowserFrame from '../../placeholders/BrowserFrame'; import Block from '../../placeholders/Block'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/simple-grid/Cover.tsx b/client/patterns/simple-grid/Cover.tsx index 3789dfe..42c98c4 100644 --- a/client/patterns/simple-grid/Cover.tsx +++ b/client/patterns/simple-grid/Cover.tsx @@ -3,7 +3,7 @@ import React from 'react'; import Frame from '../../placeholders/Frame'; import Rectangle from '../../placeholders/Rectangle'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/simple-grid/Details.tsx b/client/patterns/simple-grid/Details.tsx index a9c901b..1796bd7 100644 --- a/client/patterns/simple-grid/Details.tsx +++ b/client/patterns/simple-grid/Details.tsx @@ -4,7 +4,7 @@ import DetailsLayout from '../../layouts/DetailsLayout'; import BrowserFrame from '../../placeholders/BrowserFrame'; import Rectangle from '../../placeholders/Rectangle'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/slider/Cover.tsx b/client/patterns/slider/Cover.tsx index e7bc561..8398737 100644 --- a/client/patterns/slider/Cover.tsx +++ b/client/patterns/slider/Cover.tsx @@ -4,7 +4,7 @@ import Circle from '../../placeholders/Circle'; import Frame from '../../placeholders/Frame'; import Line from '../../placeholders/Line'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/slider/Details.tsx b/client/patterns/slider/Details.tsx index 749d00a..3f8317a 100644 --- a/client/patterns/slider/Details.tsx +++ b/client/patterns/slider/Details.tsx @@ -5,7 +5,7 @@ import Circle from '../../placeholders/Circle'; import BrowserFrame from '../../placeholders/BrowserFrame'; import Rectangle from '../../placeholders/Rectangle'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/split-navigation/Cover.tsx b/client/patterns/split-navigation/Cover.tsx index c5fdf44..ce22cf3 100644 --- a/client/patterns/split-navigation/Cover.tsx +++ b/client/patterns/split-navigation/Cover.tsx @@ -3,7 +3,7 @@ import React from 'react'; import Frame from '../../placeholders/Frame'; import Rectangle from '../../placeholders/Rectangle'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/split-navigation/Details.tsx b/client/patterns/split-navigation/Details.tsx index 6eafa9d..20ed21d 100644 --- a/client/patterns/split-navigation/Details.tsx +++ b/client/patterns/split-navigation/Details.tsx @@ -4,7 +4,7 @@ import DetailsLayout from '../../layouts/DetailsLayout'; import BrowserFrame from '../../placeholders/BrowserFrame'; import Rectangle from '../../placeholders/Rectangle'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/split-screen/Cover.tsx b/client/patterns/split-screen/Cover.tsx index d31076e..38f1257 100644 --- a/client/patterns/split-screen/Cover.tsx +++ b/client/patterns/split-screen/Cover.tsx @@ -4,7 +4,7 @@ import Circle from '../../placeholders/Circle'; import Frame from '../../placeholders/Frame'; import Line from '../../placeholders/Line'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/split-screen/Details.tsx b/client/patterns/split-screen/Details.tsx index f2d6d45..2f897fd 100644 --- a/client/patterns/split-screen/Details.tsx +++ b/client/patterns/split-screen/Details.tsx @@ -6,7 +6,7 @@ import Block from '../../placeholders/Block'; import Circle from '../../placeholders/Circle'; import Rectangle from '../../placeholders/Rectangle'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/stepper-input/Cover.tsx b/client/patterns/stepper-input/Cover.tsx index 821ab96..8f289ee 100644 --- a/client/patterns/stepper-input/Cover.tsx +++ b/client/patterns/stepper-input/Cover.tsx @@ -2,7 +2,7 @@ import React from 'react'; import Frame from '../../placeholders/Frame'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/stepper-input/Details.tsx b/client/patterns/stepper-input/Details.tsx index 466d18b..facb12e 100644 --- a/client/patterns/stepper-input/Details.tsx +++ b/client/patterns/stepper-input/Details.tsx @@ -4,11 +4,11 @@ import { Link } from 'react-router-dom'; import DetailsLayout from '../../layouts/DetailsLayout'; import BrowserFrame from '../../placeholders/BrowserFrame'; -const Details = () => { +const Details: React.FC<{}> = () => { const [value, setValue] = useState(0); const decrease = () => setValue(value - 1); const increase = () => setValue(value + 1); - const change = (e) => setValue(parseInt(e.target.value, 10)); + const change = (e: React.ChangeEvent) => setValue(parseInt(e.target.value, 10)); return ( diff --git a/client/patterns/sticky-footer/Cover.tsx b/client/patterns/sticky-footer/Cover.tsx index 88ddded..9c97e3c 100644 --- a/client/patterns/sticky-footer/Cover.tsx +++ b/client/patterns/sticky-footer/Cover.tsx @@ -3,7 +3,7 @@ import React from 'react'; import Frame from '../../placeholders/Frame'; import Line from '../../placeholders/Line'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/sticky-footer/Details.tsx b/client/patterns/sticky-footer/Details.tsx index 47fdd9e..f1a1e35 100644 --- a/client/patterns/sticky-footer/Details.tsx +++ b/client/patterns/sticky-footer/Details.tsx @@ -5,7 +5,7 @@ import Block from '../../placeholders/Block'; import BrowserFrame from '../../placeholders/BrowserFrame'; import Rectangle from '../../placeholders/Rectangle'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/sticky-header/Cover.tsx b/client/patterns/sticky-header/Cover.tsx index 4a3341e..fee6f4b 100644 --- a/client/patterns/sticky-header/Cover.tsx +++ b/client/patterns/sticky-header/Cover.tsx @@ -3,7 +3,7 @@ import React from 'react'; import Frame from '../../placeholders/Frame'; import Line from '../../placeholders/Line'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/sticky-header/Details.tsx b/client/patterns/sticky-header/Details.tsx index d629729..f2bb73b 100644 --- a/client/patterns/sticky-header/Details.tsx +++ b/client/patterns/sticky-header/Details.tsx @@ -5,7 +5,7 @@ import Block from '../../placeholders/Block'; import BrowserFrame from '../../placeholders/BrowserFrame'; import Rectangle from '../../placeholders/Rectangle'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/client/patterns/switch/Cover.tsx b/client/patterns/switch/Cover.tsx index 62c8203..008da00 100644 --- a/client/patterns/switch/Cover.tsx +++ b/client/patterns/switch/Cover.tsx @@ -2,7 +2,7 @@ import React from 'react'; import Frame from '../../placeholders/Frame'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/switch/Details.tsx b/client/patterns/switch/Details.tsx index e71f239..b769cd7 100644 --- a/client/patterns/switch/Details.tsx +++ b/client/patterns/switch/Details.tsx @@ -4,7 +4,7 @@ import RelatedPatterns from '../../components/RelatedPatterns'; import DetailsLayout from '../../layouts/DetailsLayout'; import BrowserFrame from '../../placeholders/BrowserFrame'; -const Details = () => { +const Details: React.FC<{}> = () => { const [checked, setChecked] = useState(false); const toggle = () => setChecked(c => !c); diff --git a/client/patterns/tab/Cover.tsx b/client/patterns/tab/Cover.tsx index 3a9c7d8..4e7097b 100644 --- a/client/patterns/tab/Cover.tsx +++ b/client/patterns/tab/Cover.tsx @@ -3,7 +3,7 @@ import React from 'react'; import Circle from '../../placeholders/Circle'; import Frame from '../../placeholders/Frame'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/tab/Details.tsx b/client/patterns/tab/Details.tsx index 36713a0..449c8cc 100644 --- a/client/patterns/tab/Details.tsx +++ b/client/patterns/tab/Details.tsx @@ -4,10 +4,14 @@ import DetailsLayout from '../../layouts/DetailsLayout'; import BrowserFrame from '../../placeholders/BrowserFrame'; import Rectangle from '../../placeholders/Rectangle'; -const Details = () => { +interface TabProps { + tabIndex: number; +} + +const Details: React.FC<{}> = () => { const [activeTab, setActiveTab] = useState(0); - const Tab = ({ tabIndex, children }) => { + const Tab: React.FC = ({ tabIndex, children }) => { const isActive = tabIndex === activeTab; const click = () => setActiveTab(tabIndex); return ( diff --git a/client/patterns/toggle-password-visibility/Cover.tsx b/client/patterns/toggle-password-visibility/Cover.tsx index 51fe665..7eee841 100644 --- a/client/patterns/toggle-password-visibility/Cover.tsx +++ b/client/patterns/toggle-password-visibility/Cover.tsx @@ -3,7 +3,7 @@ import React from 'react'; import Circle from '../../placeholders/Circle'; import Frame from '../../placeholders/Frame'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/toggle-password-visibility/Details.tsx b/client/patterns/toggle-password-visibility/Details.tsx index 299189b..1b5c821 100644 --- a/client/patterns/toggle-password-visibility/Details.tsx +++ b/client/patterns/toggle-password-visibility/Details.tsx @@ -3,7 +3,7 @@ import React, { useState } from 'react'; import DetailsLayout from '../../layouts/DetailsLayout'; import BrowserFrame from '../../placeholders/BrowserFrame'; -const Details = () => { +const Details: React.FC<{}> = () => { const [visible, setVisible] = useState(false); const toggle = () => setVisible(v => !v); diff --git a/client/patterns/wizard/Cover.tsx b/client/patterns/wizard/Cover.tsx index 4b18390..a399984 100644 --- a/client/patterns/wizard/Cover.tsx +++ b/client/patterns/wizard/Cover.tsx @@ -3,7 +3,7 @@ import React from 'react'; import Frame from '../../placeholders/Frame'; import Line from '../../placeholders/Line'; -const Cover = () => { +const Cover: React.FC<{}> = () => { return (
diff --git a/client/patterns/wizard/Details.tsx b/client/patterns/wizard/Details.tsx index b1e771c..e1f03f5 100644 --- a/client/patterns/wizard/Details.tsx +++ b/client/patterns/wizard/Details.tsx @@ -6,7 +6,7 @@ import BrowserFrame from '../../placeholders/BrowserFrame'; import Circle from '../../placeholders/Circle'; import Line from '../../placeholders/Line'; -const Details = () => { +const Details: React.FC<{}> = () => { return (
diff --git a/package-lock.json b/package-lock.json index 1fd05e3..46f6e03 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1977,6 +1977,21 @@ "@types/node": "*" } }, + "@types/highlight.js": { + "version": "9.12.3", + "resolved": "https://registry.npmjs.org/@types/highlight.js/-/highlight.js-9.12.3.tgz", + "integrity": "sha512-pGF/zvYOACZ/gLGWdQH8zSwteQS1epp68yRcVLJMgUck/MjEn/FBYmPub9pXT8C1e4a8YZfHo1CKyV8q1vKUnQ==", + "dev": true + }, + "@types/highlightjs": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/@types/highlightjs/-/highlightjs-9.12.0.tgz", + "integrity": "sha512-MmUcjkDtCBfx2BPeLLTtJ5mFmGgWk9nAgZmNesixaGHOr0tCecsTU2iUgYvhRsWJSts2WbcpAtVPuIzZ0ybJ1A==", + "dev": true, + "requires": { + "@types/highlight.js": "*" + } + }, "@types/history": { "version": "4.7.3", "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.3.tgz", diff --git a/package.json b/package.json index a554f8a..eea9ac5 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "@babel/preset-env": "^7.7.4", "@babel/preset-react": "^7.7.4", "@loadable/babel-plugin": "^5.10.3", + "@types/highlightjs": "^9.12.0", "@types/loadable__component": "^5.10.0", "@types/react": "^16.9.13", "@types/react-dom": "^16.9.4", From 837f1eff5804b95d54fe449b8d43e386e8879418 Mon Sep 17 00:00:00 2001 From: Phuoc Nguyen Date: Sun, 24 Nov 2019 23:51:32 +0700 Subject: [PATCH 4/6] Add typescript types for highlightjs --- client/types/hightlight.d.ts | 12 ++++++++++++ package-lock.json | 15 --------------- package.json | 1 - 3 files changed, 12 insertions(+), 16 deletions(-) create mode 100644 client/types/hightlight.d.ts diff --git a/client/types/hightlight.d.ts b/client/types/hightlight.d.ts new file mode 100644 index 0000000..e8c5db3 --- /dev/null +++ b/client/types/hightlight.d.ts @@ -0,0 +1,12 @@ +declare module 'highlight.js/lib/highlight' { + interface HighlightResult { + value: string; + } + + function highlight(lang: string, code: string): HighlightResult; + function registerLanguage(name: string, language: any): void; +} + +declare module 'highlight.js/lib/languages/xml' { + +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 46f6e03..1fd05e3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1977,21 +1977,6 @@ "@types/node": "*" } }, - "@types/highlight.js": { - "version": "9.12.3", - "resolved": "https://registry.npmjs.org/@types/highlight.js/-/highlight.js-9.12.3.tgz", - "integrity": "sha512-pGF/zvYOACZ/gLGWdQH8zSwteQS1epp68yRcVLJMgUck/MjEn/FBYmPub9pXT8C1e4a8YZfHo1CKyV8q1vKUnQ==", - "dev": true - }, - "@types/highlightjs": { - "version": "9.12.0", - "resolved": "https://registry.npmjs.org/@types/highlightjs/-/highlightjs-9.12.0.tgz", - "integrity": "sha512-MmUcjkDtCBfx2BPeLLTtJ5mFmGgWk9nAgZmNesixaGHOr0tCecsTU2iUgYvhRsWJSts2WbcpAtVPuIzZ0ybJ1A==", - "dev": true, - "requires": { - "@types/highlight.js": "*" - } - }, "@types/history": { "version": "4.7.3", "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.3.tgz", diff --git a/package.json b/package.json index eea9ac5..a554f8a 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,6 @@ "@babel/preset-env": "^7.7.4", "@babel/preset-react": "^7.7.4", "@loadable/babel-plugin": "^5.10.3", - "@types/highlightjs": "^9.12.0", "@types/loadable__component": "^5.10.0", "@types/react": "^16.9.13", "@types/react-dom": "^16.9.4", From efc9046824a7370dfdbfd010e6236e1f0bf610cf Mon Sep 17 00:00:00 2001 From: Phuoc Nguyen Date: Mon, 25 Nov 2019 00:29:05 +0700 Subject: [PATCH 5/6] Fix the build to make @loadable work --- tsconfig.json | 5 +++-- webpack.config.js | 9 +++------ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/tsconfig.json b/tsconfig.json index 36e6fba..495fd53 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,8 +4,9 @@ "esModuleInterop": true, "sourceMap": true, "noImplicitAny": true, - "module": "commonjs", - "target": "es6", + "module": "esnext", + "moduleResolution": "node", + "target": "esnext", "jsx": "react" } } diff --git a/webpack.config.js b/webpack.config.js index c808016..ebf3654 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -26,11 +26,6 @@ module.exports = { }, module: { rules: [ - { - test: /\.jsx?$/, - exclude: /node_modules/, - loader: 'babel-loader', - }, { test: /\.css$/, use: ['style-loader', 'css-loader'], @@ -38,7 +33,9 @@ module.exports = { { test: /\.ts(x?)$/, exclude: /node_modules/, - use: 'ts-loader', + // The order of loaders are very important + // It will make the @loadable/component work + use: ['babel-loader', 'ts-loader'], }, { enforce: "pre", From 5fd9ff5ddfff3904e1cd4138b518f15516c1a8bc Mon Sep 17 00:00:00 2001 From: Phuoc Nguyen Date: Mon, 25 Nov 2019 01:00:48 +0700 Subject: [PATCH 6/6] Fix tslint --- .gitignore | 3 +- client/App.tsx | 8 +- client/Home.tsx | 11 ++- client/components/CoverCard.tsx | 2 +- client/components/RelatedPatterns.tsx | 2 +- client/helpers/highlight.ts | 4 +- client/hooks/useInterval.ts | 2 +- client/layouts/Footer.tsx | 15 ++- client/loaders/CoverLoader.tsx | 3 +- client/loaders/DetailsLoader.tsx | 6 +- client/patterns/badge/Details.tsx | 4 +- client/patterns/breadcrumb/Details.tsx | 4 +- client/patterns/button-with-icon/Details.tsx | 4 +- client/patterns/card/Details.tsx | 4 +- client/patterns/centering/Details.tsx | 4 +- client/patterns/docked-at-corner/Details.tsx | 4 +- client/patterns/dot-navigation/Details.tsx | 4 +- client/patterns/feature-list/Details.tsx | 4 +- client/patterns/fixed-at-corner/Details.tsx | 4 +- client/patterns/holy-grail/Details.tsx | 6 +- client/patterns/input-add-on/Cover.tsx | 6 +- client/patterns/input-add-on/Details.tsx | 12 +-- client/patterns/media-object/Cover.tsx | 4 +- client/patterns/media-object/Details.tsx | 4 +- client/patterns/menu/Details.tsx | 4 +- client/patterns/modal/Details.tsx | 4 +- client/patterns/notification/Details.tsx | 9 +- client/patterns/pagination/Cover.tsx | 3 +- client/patterns/pagination/Details.tsx | 4 +- .../previous-next-buttons/Details.tsx | 4 +- client/patterns/pricing-table/Cover.tsx | 15 ++- client/patterns/pricing-table/Details.tsx | 39 ++++---- client/patterns/progress-bar/Details.tsx | 13 ++- .../questions-and-answers/Details.tsx | 4 +- client/patterns/radio-switch/Cover.tsx | 3 +- client/patterns/radio-switch/Details.tsx | 16 +++- .../patterns/same-height-columns/Details.tsx | 4 +- client/patterns/search-box/Details.tsx | 18 +++- client/patterns/separator/Details.tsx | 6 +- client/patterns/sidebar/Details.tsx | 6 +- client/patterns/simple-grid/Details.tsx | 4 +- client/patterns/slider/Details.tsx | 8 +- client/patterns/split-navigation/Details.tsx | 4 +- client/patterns/split-screen/Details.tsx | 11 ++- client/patterns/stepper-input/Cover.tsx | 2 +- client/patterns/stepper-input/Details.tsx | 24 +++-- client/patterns/sticky-footer/Details.tsx | 4 +- client/patterns/sticky-header/Details.tsx | 8 +- client/patterns/switch/Details.tsx | 11 ++- client/patterns/tab/Cover.tsx | 7 +- client/patterns/tab/Details.tsx | 4 +- .../toggle-password-visibility/Details.tsx | 8 +- client/patterns/wizard/Details.tsx | 20 ++-- client/placeholders/BrowserFrame.tsx | 18 ++-- client/types/hightlight.d.ts | 3 +- package-lock.json | 93 +++++++++++++++++++ package.json | 5 +- tslint.json | 11 +++ 58 files changed, 353 insertions(+), 168 deletions(-) create mode 100644 tslint.json diff --git a/.gitignore b/.gitignore index 506e98f..f007ff9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .netlify dist -node_modules \ No newline at end of file +node_modules +tslint.log \ No newline at end of file diff --git a/client/App.tsx b/client/App.tsx index 48af5e8..cc794b6 100644 --- a/client/App.tsx +++ b/client/App.tsx @@ -27,10 +27,14 @@ const App = () => { - + + + - + + + diff --git a/client/Home.tsx b/client/Home.tsx index e50ce88..06d6128 100644 --- a/client/Home.tsx +++ b/client/Home.tsx @@ -12,9 +12,16 @@ const Home = () => {
-

CSS Layout

+

+ CSS Layout +

-

a collection of popular layouts and patterns made with CSS

+

+ a collection of popular layouts and patterns made with CSS +

    diff --git a/client/components/CoverCard.tsx b/client/components/CoverCard.tsx index b4da205..651aabd 100644 --- a/client/components/CoverCard.tsx +++ b/client/components/CoverCard.tsx @@ -1,8 +1,8 @@ import React from 'react'; import { Link } from 'react-router-dom'; -import CoverLoader from '../loaders/CoverLoader'; import slug from '../helpers/slug'; +import CoverLoader from '../loaders/CoverLoader'; interface CoverCardProps { pattern: string; diff --git a/client/components/RelatedPatterns.tsx b/client/components/RelatedPatterns.tsx index 28de192..06eb348 100644 --- a/client/components/RelatedPatterns.tsx +++ b/client/components/RelatedPatterns.tsx @@ -14,7 +14,7 @@ const RelatedPatterns: React.FC = ({ patterns }) => {
    { - patterns.map(pattern => ) + patterns.map((pattern) => ) }
diff --git a/client/helpers/highlight.ts b/client/helpers/highlight.ts index 6c0732b..81a56a6 100755 --- a/client/helpers/highlight.ts +++ b/client/helpers/highlight.ts @@ -1,5 +1,5 @@ -import hljs from 'highlight.js/lib/highlight'; -import html from 'highlight.js/lib/languages/xml'; +import hljs from 'highlight.js/lib/highlight'; // tslint:disable-line +import html from 'highlight.js/lib/languages/xml'; // tslint:disable-line hljs.registerLanguage('html', html); diff --git a/client/hooks/useInterval.ts b/client/hooks/useInterval.ts index 5c057cd..05a93dc 100644 --- a/client/hooks/useInterval.ts +++ b/client/hooks/useInterval.ts @@ -9,7 +9,7 @@ const useInterval = (callback: () => void, delay?: number) => { return () => clearInterval(id); } }, - [delay] + [delay], ); }; diff --git a/client/layouts/Footer.tsx b/client/layouts/Footer.tsx index c7bf7c8..bf9882a 100644 --- a/client/layouts/Footer.tsx +++ b/client/layouts/Footer.tsx @@ -35,7 +35,10 @@ const Footer: React.FC<{}> = () => {
- ) + ), }); export default DetailsLoader; diff --git a/client/patterns/badge/Details.tsx b/client/patterns/badge/Details.tsx index 42e60b3..06f7957 100644 --- a/client/patterns/badge/Details.tsx +++ b/client/patterns/badge/Details.tsx @@ -8,13 +8,13 @@ const Details: React.FC<{}> = () => {
1
- } + )} source={`
@@ -21,7 +21,7 @@ const Details: React.FC<{}> = () => {
- } + )} source={`
- } + )} source={`
- } + )} source={`
- } + )} source={`
@@ -20,7 +20,7 @@ const Details: React.FC<{}> = () => { />
- } + )} source={`
    @@ -38,7 +38,7 @@ const Details: React.FC<{}> = () => {
- } + )} source={`
    @@ -30,7 +30,7 @@ const Details: React.FC<{}> = () => {
    - } + )} source={`
    @@ -24,7 +24,7 @@ const Details: React.FC<{}> = () => {
    - } + )} source={`
    @@ -30,7 +30,7 @@ const Details: React.FC<{}> = () => {
    - } + )} source={`
    = () => {
    -
    - -
    +
    -
    +
    diff --git a/client/patterns/input-add-on/Details.tsx b/client/patterns/input-add-on/Details.tsx index 06d7261..53a2b73 100644 --- a/client/patterns/input-add-on/Details.tsx +++ b/client/patterns/input-add-on/Details.tsx @@ -9,7 +9,7 @@ const Details: React.FC<{}> = () => {
    @@ -35,7 +35,7 @@ const Details: React.FC<{}> = () => {
    - } + )} source={`
    = () => { ">
    = () => {
    - +
    - +
    diff --git a/client/patterns/media-object/Details.tsx b/client/patterns/media-object/Details.tsx index f23c220..2271a6e 100644 --- a/client/patterns/media-object/Details.tsx +++ b/client/patterns/media-object/Details.tsx @@ -11,7 +11,7 @@ const Details: React.FC<{}> = () => {
    @@ -24,7 +24,7 @@ const Details: React.FC<{}> = () => {
    - } + )} source={`
    @@ -46,7 +46,7 @@ const Details: React.FC<{}> = () => {
    - } + )} source={`
    @@ -30,7 +30,7 @@ const Details: React.FC<{}> = () => {
    - } + )} source={`
    -
    - } + )} source={`
    @@ -33,7 +33,7 @@ const Details: React.FC<{}> = () => {
    - } + )} source={`
    @@ -24,7 +24,7 @@ const Details: React.FC<{}> = () => {
    - } + )} source={`
    -
    +
    @@ -18,7 +21,10 @@ const Cover: React.FC<{}> = () => {
    -
    +
    @@ -29,7 +35,10 @@ const Cover: React.FC<{}> = () => {
    -
    +
    diff --git a/client/patterns/pricing-table/Details.tsx b/client/patterns/pricing-table/Details.tsx index b5c1c30..bf2cb52 100644 --- a/client/patterns/pricing-table/Details.tsx +++ b/client/patterns/pricing-table/Details.tsx @@ -1,9 +1,9 @@ import React from 'react'; import DetailsLayout from '../../layouts/DetailsLayout'; -import Circle from '../../placeholders/Circle'; import Block from '../../placeholders/Block'; import BrowserFrame from '../../placeholders/BrowserFrame'; +import Circle from '../../placeholders/Circle'; import Rectangle from '../../placeholders/Rectangle'; const Details: React.FC<{}> = () => { @@ -11,36 +11,39 @@ const Details: React.FC<{}> = () => {
    -
    +
    -
    - -
    +
    -
    +
    -
    - -
    +
    -
    -
    -
    -
    - -
    -
    +
    +
    +
    +
    +
    - } + )} source={`
    -
    +
    {progress}%
    - } + )} source={`
    @@ -64,7 +64,7 @@ const Details: React.FC<{}> = () => {
    - } + )} source={`
    -
    -
    +
    diff --git a/client/patterns/radio-switch/Details.tsx b/client/patterns/radio-switch/Details.tsx index 3f1329d..b7c7d43 100644 --- a/client/patterns/radio-switch/Details.tsx +++ b/client/patterns/radio-switch/Details.tsx @@ -7,26 +7,32 @@ import BrowserFrame from '../../placeholders/BrowserFrame'; const Details: React.FC<{}> = () => { const [isFirstChecked, setFirstChecked] = useState(false); - const toggle = () => setFirstChecked(c => !c); + const toggle = () => setFirstChecked((c) => !c); return (