├── .DS_Store
├── .eslintignore
├── .eslintrc.js
├── .github
└── FUNDING.yml
├── .gitignore
├── .prettierrc.js
├── .vscode
└── settings.json
├── CONTRIBUTING.md
├── LICENCE.md
├── README.md
├── components
├── .DS_Store
├── kit
│ ├── .DS_Store
│ ├── components
│ │ ├── .DS_Store
│ │ ├── commerce
│ │ │ ├── index.tsx
│ │ │ ├── pricing
│ │ │ │ ├── PricingCard.tsx
│ │ │ │ ├── PricingCard2.tsx
│ │ │ │ ├── PricingCard3.tsx
│ │ │ │ ├── PricingCard4.tsx
│ │ │ │ ├── PricingCard5.tsx
│ │ │ │ ├── PricingCard6.tsx
│ │ │ │ ├── PricingCard7.tsx
│ │ │ │ ├── PricingCard8.tsx
│ │ │ │ └── PricingCard9.tsx
│ │ │ └── shopping
│ │ │ │ ├── ClassicShoppingCard.tsx
│ │ │ │ ├── MultipleShoppingCard.tsx
│ │ │ │ ├── ProductWithEval.tsx
│ │ │ │ ├── ShippedCard.tsx
│ │ │ │ ├── ShoppingColorChoice.tsx
│ │ │ │ ├── ShoppingDetailsCard.tsx
│ │ │ │ └── SimpleShoppingCard.tsx
│ │ ├── elements
│ │ │ ├── alert
│ │ │ │ ├── BandeauAlert.tsx
│ │ │ │ ├── BandeauLineAlert.tsx
│ │ │ │ ├── ClosableLongAlert.tsx
│ │ │ │ ├── ConfirmationCard.tsx
│ │ │ │ ├── CookieAlert2.tsx
│ │ │ │ ├── InformationCard.tsx
│ │ │ │ ├── InformationModale.tsx
│ │ │ │ └── SimpleAlert.tsx
│ │ │ ├── avatars
│ │ │ │ ├── Avatar.tsx
│ │ │ │ └── MultipleAvatar.tsx
│ │ │ ├── badges
│ │ │ │ ├── Badge.tsx
│ │ │ │ ├── BadgeList.tsx
│ │ │ │ ├── ClickableBadge.tsx
│ │ │ │ ├── ColoredTextAndBadge.tsx
│ │ │ │ ├── NotificationBadge.tsx
│ │ │ │ └── NotificationIconBadge.tsx
│ │ │ ├── buttons
│ │ │ │ ├── Button.tsx
│ │ │ │ ├── ButtonWithIndications.tsx
│ │ │ │ ├── MultipleButton.tsx
│ │ │ │ ├── PagerButton.tsx
│ │ │ │ ├── RoundedButton.tsx
│ │ │ │ ├── SquareButton.tsx
│ │ │ │ └── StoreButton.tsx
│ │ │ ├── data
│ │ │ │ ├── ActivityCard.tsx
│ │ │ │ ├── CalendarCard.tsx
│ │ │ │ ├── CalendarCardMonth.tsx
│ │ │ │ ├── CovidInfo.tsx
│ │ │ │ ├── GoogleTask.tsx
│ │ │ │ ├── InfoNumberCard.tsx
│ │ │ │ ├── InfoNumberCard2.tsx
│ │ │ │ ├── InfoNumberCard3.tsx
│ │ │ │ ├── InformationIconCard.tsx
│ │ │ │ ├── JobCard.tsx
│ │ │ │ ├── LessonsList.tsx
│ │ │ │ ├── MessagesList.tsx
│ │ │ │ ├── MutlipleTask.tsx
│ │ │ │ ├── PaymentCard.tsx
│ │ │ │ ├── PopularPerson.tsx
│ │ │ │ ├── ProjectDataCard.tsx
│ │ │ │ ├── RecapCard.tsx
│ │ │ │ ├── SimpleIconDescCard.tsx
│ │ │ │ ├── SimpleLevelsCard.tsx
│ │ │ │ ├── SimpleNotificationCard.tsx
│ │ │ │ ├── SimplePhotoDescCard.tsx
│ │ │ │ ├── SimpleTask.tsx
│ │ │ │ ├── SlackTask.tsx
│ │ │ │ ├── TagsCard.tsx
│ │ │ │ ├── TaskCard.tsx
│ │ │ │ ├── TasksList.tsx
│ │ │ │ └── VideoDetailsCard.tsx
│ │ │ ├── ddm
│ │ │ │ ├── DropDownMenu.tsx
│ │ │ │ ├── DropDownMenuWithForm.tsx
│ │ │ │ └── LargeDropDownMenu.tsx
│ │ │ ├── index.tsx
│ │ │ ├── progress
│ │ │ │ └── ProgressBar.tsx
│ │ │ ├── skeleton
│ │ │ │ ├── HorizontalSkeletonCard.tsx
│ │ │ │ ├── PictureAndTextSkeleton.tsx
│ │ │ │ └── SimpleSkeleton.tsx
│ │ │ └── tabs
│ │ │ │ ├── BasicTabs.tsx
│ │ │ │ ├── BasicTabsDisabled.tsx
│ │ │ │ └── BasicTabsUnderline.tsx
│ │ ├── form
│ │ │ ├── dateTimePicker
│ │ │ │ └── TimePicker.tsx
│ │ │ ├── index.tsx
│ │ │ ├── inputtext
│ │ │ │ ├── InputArea.tsx
│ │ │ │ ├── InputGroup.tsx
│ │ │ │ └── InputText.tsx
│ │ │ ├── layout
│ │ │ │ ├── ContactForm.tsx
│ │ │ │ ├── CreateAccount.tsx
│ │ │ │ ├── DesignLogin.tsx
│ │ │ │ ├── FormSubscribe.tsx
│ │ │ │ ├── LoginWithBackground.tsx
│ │ │ │ ├── SearchForm.tsx
│ │ │ │ ├── SignIn.tsx
│ │ │ │ └── UserInfoForm.tsx
│ │ │ ├── select
│ │ │ │ ├── CustomSelect.tsx
│ │ │ │ ├── Select.tsx
│ │ │ │ └── SelectWithLabel.tsx
│ │ │ └── toggle
│ │ │ │ ├── Checkbox.tsx
│ │ │ │ ├── MultipleToggle.tsx
│ │ │ │ ├── Radio.tsx
│ │ │ │ └── Toggle.tsx
│ │ ├── list
│ │ │ ├── index.tsx
│ │ │ ├── list
│ │ │ │ ├── BlockList.tsx
│ │ │ │ ├── DescriptionList.tsx
│ │ │ │ ├── SimpleList.tsx
│ │ │ │ └── TodoList.tsx
│ │ │ └── table
│ │ │ │ ├── ComplexTable.tsx
│ │ │ │ └── Table.tsx
│ │ ├── navigation
│ │ │ ├── footer
│ │ │ │ ├── Footer.tsx
│ │ │ │ ├── FooterLight.tsx
│ │ │ │ └── SimpleFooter.tsx
│ │ │ ├── header
│ │ │ │ ├── CenterHeader.tsx
│ │ │ │ ├── Header.tsx
│ │ │ │ ├── SearchHeader.tsx
│ │ │ │ └── SimpleSearchHeader.tsx
│ │ │ ├── index.tsx
│ │ │ └── sidebar
│ │ │ │ ├── LittleSidebar.tsx
│ │ │ │ ├── SideBar2.tsx
│ │ │ │ ├── Sidebar.tsx
│ │ │ │ └── SidebarWithCateg.tsx
│ │ ├── pagesection
│ │ │ ├── blog
│ │ │ │ ├── BlogCard.tsx
│ │ │ │ └── BlogList.tsx
│ │ │ ├── cta
│ │ │ │ ├── BandeauInfo.tsx
│ │ │ │ ├── BandeauNumber.tsx
│ │ │ │ ├── MultipleImagesCta.tsx
│ │ │ │ ├── NextJSCta.tsx
│ │ │ │ ├── NotifyMeCta.tsx
│ │ │ │ ├── SimpleTextCta.tsx
│ │ │ │ ├── SubscribeCta.tsx
│ │ │ │ ├── TimerEvent.tsx
│ │ │ │ └── WatchCta.tsx
│ │ │ ├── faq
│ │ │ │ ├── Faq.tsx
│ │ │ │ └── FaqHori.tsx
│ │ │ ├── feature
│ │ │ │ ├── FeaturesAndDesc.tsx
│ │ │ │ ├── FeaturesCards.tsx
│ │ │ │ ├── FeaturesImage.tsx
│ │ │ │ ├── FeaturesImage2.tsx
│ │ │ │ └── FeaturesSquare.tsx
│ │ │ ├── index.tsx
│ │ │ ├── profile
│ │ │ │ ├── AddProfilInfo.tsx
│ │ │ │ ├── CoverAndButtonsProfilCard.tsx
│ │ │ │ ├── CoverAndInfoProfil.tsx
│ │ │ │ ├── FullPhotoCard.tsx
│ │ │ │ ├── HeadProfil.tsx
│ │ │ │ └── SimpleProfil.tsx
│ │ │ ├── team
│ │ │ │ ├── AllTeam.tsx
│ │ │ │ ├── DoubleTeam.tsx
│ │ │ │ ├── ShadowTeam.tsx
│ │ │ │ ├── ShadowTeams.tsx
│ │ │ │ ├── SimpleTeam.tsx
│ │ │ │ └── SimpleTeams.tsx
│ │ │ └── testimonial
│ │ │ │ ├── BigTestimonial.tsx
│ │ │ │ ├── BigTestimonialFlex.tsx
│ │ │ │ ├── FullWidthTesti.tsx
│ │ │ │ ├── HeadTestimonial.tsx
│ │ │ │ ├── MultipleTestimonial.tsx
│ │ │ │ ├── ReviewWithRate.tsx
│ │ │ │ ├── SimpleReview.tsx
│ │ │ │ └── SimpleTestimonial.tsx
│ │ └── profile
│ │ │ └── GroupInfo.tsx
│ └── templates
│ │ ├── dashboardPages
│ │ ├── dataDashboard
│ │ │ └── KpitDashboard.tsx
│ │ ├── index.tsx
│ │ └── projectDashboard
│ │ │ └── SimpleProjectDashboard.tsx
│ │ ├── errorsPages
│ │ ├── error404
│ │ │ ├── Background404.tsx
│ │ │ ├── Pictures404.tsx
│ │ │ └── Simple404.tsx
│ │ └── index.tsx
│ │ └── homePages
│ │ ├── folio
│ │ └── SimpleFolioHome.tsx
│ │ ├── index.tsx
│ │ └── simplePage
│ │ ├── Natural2Home.tsx
│ │ ├── Natural3Home.tsx
│ │ ├── NaturalHome.tsx
│ │ ├── NextJSHome.tsx
│ │ ├── TailkitHome.tsx
│ │ └── Watch.tsx
├── layout
│ ├── AppLayout.tsx
│ ├── ComponentLayout.tsx
│ └── HomeLayout.tsx
└── site
│ ├── DropDown
│ └── DropD.tsx
│ ├── Meta.tsx
│ ├── header
│ ├── AppHeader.tsx
│ ├── SectionHeader.tsx
│ └── header.tsx
│ ├── home
│ └── HomeComps.tsx
│ └── section
│ └── SectionDesc.tsx
├── editorTheme.tsx
├── global.css
├── lib
└── gtag.js
├── next-env.d.ts
├── next.config.js
├── package.json
├── pages
├── _app.tsx
├── _document.tsx
├── components
│ ├── alert
│ │ └── index.tsx
│ ├── avatar
│ │ └── index.tsx
│ ├── badges
│ │ └── index.tsx
│ ├── blog
│ │ └── index.tsx
│ ├── buttons
│ │ └── index.tsx
│ ├── cta
│ │ └── index.tsx
│ ├── data
│ │ └── index.tsx
│ ├── ddm
│ │ └── index.tsx
│ ├── faq
│ │ └── index.tsx
│ ├── feature
│ │ └── index.tsx
│ ├── footer
│ │ └── index.tsx
│ ├── form
│ │ └── index.tsx
│ ├── header
│ │ └── index.tsx
│ ├── index.tsx
│ ├── inputselect
│ │ └── index.tsx
│ ├── inputtext
│ │ └── index.tsx
│ ├── list
│ │ └── index.tsx
│ ├── pricing
│ │ └── index.tsx
│ ├── profile
│ │ └── index.tsx
│ ├── progress
│ │ └── index.tsx
│ ├── shopping
│ │ └── index.tsx
│ ├── sidebar
│ │ └── index.tsx
│ ├── skeleton
│ │ └── index.tsx
│ ├── table
│ │ └── index.tsx
│ ├── tabs
│ │ └── index.tsx
│ ├── team
│ │ └── index.tsx
│ ├── testimonial
│ │ └── index.tsx
│ └── toggle
│ │ └── index.tsx
├── index.tsx
├── request
│ └── index.tsx
├── started
│ └── index.tsx
└── templates
│ ├── dashboard
│ └── index.tsx
│ ├── datadashboard
│ └── index.tsx
│ ├── errors404
│ └── index.tsx
│ ├── folio
│ └── index.tsx
│ ├── getStarted
│ └── index.tsx
│ ├── index.tsx
│ └── simpleHome
│ └── index.tsx
├── postcss.config.js
├── public
├── .DS_Store
├── ads.txt
├── banner.jpg
├── dashboard.png
├── demo.gif
├── home.png
├── icons
│ ├── .DS_Store
│ ├── check-circle.svg
│ ├── check.svg
│ ├── cookie.svg
│ ├── rocket.png
│ └── rocket.svg
├── images
│ ├── .DS_Store
│ ├── blog
│ │ ├── .DS_Store
│ │ ├── 1.jpg
│ │ ├── 2.jpg
│ │ ├── 3.jpg
│ │ ├── 4.jpg
│ │ ├── 5.jpg
│ │ └── 6.jpg
│ ├── car
│ │ ├── .DS_Store
│ │ ├── 1.jpg
│ │ └── 2.jpg
│ ├── food
│ │ ├── .DS_Store
│ │ ├── 1.jpg
│ │ ├── 2.jpg
│ │ └── 3.jpg
│ ├── illustrations
│ │ └── 1.svg
│ ├── landscape
│ │ ├── .DS_Store
│ │ ├── 1.jpg
│ │ ├── 2.jpg
│ │ ├── 3.jpg
│ │ ├── 4.jpg
│ │ ├── 5.svg
│ │ ├── 6.svg
│ │ ├── 7.svg
│ │ └── 8.svg
│ ├── object
│ │ ├── .DS_Store
│ │ ├── 1.png
│ │ ├── 10.png
│ │ ├── 11.svg
│ │ ├── 12.svg
│ │ ├── 2.png
│ │ ├── 3.png
│ │ ├── 4.jpg
│ │ ├── 5.png
│ │ ├── 5.webp
│ │ ├── 6.png
│ │ ├── 7.png
│ │ ├── 8.jpg
│ │ └── 9.jpg
│ ├── person
│ │ ├── .DS_Store
│ │ ├── 1.jpg
│ │ ├── 10.jpg
│ │ ├── 11.webp
│ │ ├── 2.jpeg
│ │ ├── 3.jpg
│ │ ├── 4.jpg
│ │ ├── 5.jpg
│ │ ├── 6.jpg
│ │ ├── 7.jpg
│ │ ├── 8.jpg
│ │ └── 9.jpg
│ └── sections
│ │ ├── .DS_Store
│ │ ├── 404.png
│ │ ├── alerte.png
│ │ ├── avatar.png
│ │ ├── badges.png
│ │ ├── blog.png
│ │ ├── button.png
│ │ ├── coming.gif
│ │ ├── cta.png
│ │ ├── dashboard.png
│ │ ├── data.png
│ │ ├── datadashboard.png
│ │ ├── ddm.png
│ │ ├── faq.png
│ │ ├── feature.png
│ │ ├── folio.png
│ │ ├── folio.webp
│ │ ├── footer.png
│ │ ├── header.png
│ │ ├── homePage.png
│ │ ├── homePage.webp
│ │ ├── homePage2.png
│ │ ├── homePage2.webp
│ │ ├── homePage3.png
│ │ ├── homePage3.webp
│ │ ├── homePage4.png
│ │ ├── homePage4.webp
│ │ ├── homePage5.png
│ │ ├── homePage5.webp
│ │ ├── input.png
│ │ ├── list.png
│ │ ├── login.png
│ │ ├── pricing.png
│ │ ├── profile.png
│ │ ├── progress.png
│ │ ├── select.png
│ │ ├── shopping.png
│ │ ├── sidebar.png
│ │ ├── skeleton.png
│ │ ├── table.png
│ │ ├── tabs.png
│ │ ├── team.png
│ │ ├── testimonial.png
│ │ └── toggle.png
├── pub.mp4
├── request.png
├── robots.txt
├── sitemap.htm
├── sitemap.xml
├── template.png
└── template2.png
├── pull_request_template.md
├── tailwind.config.js
├── tsconfig.json
├── utils
└── Utils.ts
└── yarn.lock
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/.DS_Store
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | ./next-end.d.ts
2 | ./next.config.js
3 | ./postcss.config.js
4 | ./tailwind.config.js
5 | ./build
6 | ./node_modules
7 | ./public
8 | ./lib/gtag.js
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | parser: '@typescript-eslint/parser', // Specifies the ESLint parser
3 | parserOptions: {
4 | ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features
5 | sourceType: 'module', // Allows for the use of imports
6 | ecmaFeatures: {
7 | jsx: true, // Allows for the parsing of JSX
8 | },
9 | },
10 | settings: {
11 | react: {
12 | version: 'detect', // Tells eslint-plugin-react to automatically detect the version of React to use
13 | },
14 | },
15 | extends: [
16 | 'plugin:react/recommended', // Uses the recommended rules from @eslint-plugin-react
17 | 'plugin:@typescript-eslint/recommended', // Uses the recommended rules from the @typescript-eslint/eslint-plugin
18 | 'prettier/@typescript-eslint', // Uses eslint-config-prettier to disable ESLint rules from @typescript-eslint/eslint-plugin that would conflict with prettier
19 | 'plugin:prettier/recommended', // Enables eslint-plugin-prettier and eslint-config-prettier. This will display prettier errors as ESLint errors. Make sure this is always the last configuration in the extends array.
20 | ],
21 | rules: {
22 | // Place to specify ESLint rules. Can be used to overwrite rules specified from the extended configs
23 | // e.g. "@typescript-eslint/explicit-function-return-type": "off",
24 | // suppress errors for missing 'import React' in files
25 | 'react/react-in-jsx-scope': 'off',
26 | 'react/no-unescaped-entities': 'off',
27 | '@typescript-eslint/explicit-module-boundary-types': 'off',
28 | 'react/prop-types': [2, { ignore: ['children'] }],
29 | // allow jsx syntax in js files (for next.js project)
30 | 'react/jsx-filename-extension': [1, { extensions: ['.js', '.jsx', '.ts', '.tsx'] }], //should add ".ts" if typescript project
31 | },
32 | };
33 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | github: Charlie85270
4 | patreon: # Replace with a single Patreon username
5 | open_collective: # Replace with a single Open Collective username
6 | ko_fi: # Replace with a single Ko-fi username
7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | liberapay: # Replace with a single Liberapay username
10 | issuehunt: # Replace with a single IssueHunt username
11 | otechie: # Replace with a single Otechie username
12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
13 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | build/
3 | out/
4 | .DS_STORE
--------------------------------------------------------------------------------
/.prettierrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | semi: true,
3 | trailingComma: "all",
4 | singleQuote: true,
5 | printWidth: 120,
6 | tabWidth: 4,
7 | };
8 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "typescript.tsdk": "node_modules/typescript/lib"
3 | }
--------------------------------------------------------------------------------
/LICENCE.md:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Charlie Rabiller
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/components/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/components/.DS_Store
--------------------------------------------------------------------------------
/components/kit/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/components/kit/.DS_Store
--------------------------------------------------------------------------------
/components/kit/components/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/components/kit/components/.DS_Store
--------------------------------------------------------------------------------
/components/kit/components/commerce/index.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import SectionDesc from '../../../site/section/SectionDesc';
3 |
4 | const Commerce: FC = () => {
5 | const commerceSections = [
6 | {
7 | title: 'Pricing cards',
8 | items: 9,
9 | img: 'images/sections/pricing.png',
10 | link: '/components/pricing',
11 | },
12 | {
13 | title: 'Shopping cards',
14 | items: 7,
15 | img: 'images/sections/shopping.png',
16 | link: '/components/shopping',
17 | },
18 | ];
19 |
20 | return ;
21 | };
22 |
23 | export default Commerce;
24 |
--------------------------------------------------------------------------------
/components/kit/components/commerce/pricing/PricingCard8.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import Button from '../../elements/buttons/Button';
3 |
4 | const PricingCard8: FC = () => {
5 | return (
6 |
7 |
8 |
Basic
9 |
10 |
5000 products
All features
11 |
Free support
12 |
13 |
14 | 249 $
15 |
16 |
/ month
17 |
18 |
19 |
20 |
21 |
22 | );
23 | };
24 | export default PricingCard8;
25 |
--------------------------------------------------------------------------------
/components/kit/components/commerce/pricing/PricingCard9.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import Button from '../../elements/buttons/Button';
3 |
4 | const PricingCard9: FC = () => {
5 | return (
6 |
7 |
8 |
9 |
10 | Business
11 | Plan
12 |
13 |
14 |
12 of 20 user
15 |
20 |
21 |
22 |
23 |
24 |
25 | $ 199 / month
26 |
27 |
28 |
29 |
30 |
31 | );
32 | };
33 | export default PricingCard9;
34 |
--------------------------------------------------------------------------------
/components/kit/components/commerce/shopping/ProductWithEval.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | const ProductWithEval: FC = () => {
3 | return (
4 |
5 |
6 |
7 |
Tomorow
8 |
9 | You can't buy your future, but you can do it. Money is nothing, you'r everything.
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
$220
30 |
31 | Add to Card
32 |
33 |
34 |
35 |
36 | );
37 | };
38 | export default ProductWithEval;
39 |
--------------------------------------------------------------------------------
/components/kit/components/commerce/shopping/ShippedCard.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | const ShippedCard: FC = () => {
3 | return (
4 |
5 |
6 |
7 |
15 |
16 |
17 |
by express
18 |
Package delivered
19 |
20 | Your package was delivered in 1 day and 4 hours by our postal partner
21 |
22 |
23 |
24 |
25 | );
26 | };
27 | export default ShippedCard;
28 |
--------------------------------------------------------------------------------
/components/kit/components/commerce/shopping/ShoppingDetailsCard.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | const ShoppingDetailsCard: FC = () => {
3 | return (
4 |
5 |
6 |
7 |
8 |
Adidas
9 |
Live your dream
10 |
11 |
$98.00
12 |
16 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | );
31 | };
32 | export default ShoppingDetailsCard;
33 |
--------------------------------------------------------------------------------
/components/kit/components/commerce/shopping/SimpleShoppingCard.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | const SimpleShoppingCard: FC = () => {
3 | return (
4 |
5 |
6 |
7 |
Avg
8 |
9 | Detail is not an obsession, it is the very essence of perfection.
10 |
11 |
$399
12 |
13 |
14 | );
15 | };
16 | export default SimpleShoppingCard;
17 |
--------------------------------------------------------------------------------
/components/kit/components/elements/alert/BandeauLineAlert.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | interface Props {
4 | title: string;
5 | closeAction?: () => void;
6 | }
7 |
8 | const BandeauLineAlert = (props: Props) => {
9 | return (
10 |
11 |
12 |
20 |
21 |
22 | {props.title}
23 |
24 |
props.closeAction && props.closeAction()}
27 | className="flex flex-shrink-0 p-2 -mr-1 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 sm:-mr-2"
28 | >
29 | Dismiss
30 |
38 |
39 |
40 |
41 |
42 | );
43 | };
44 |
45 | export default BandeauLineAlert;
46 |
--------------------------------------------------------------------------------
/components/kit/components/elements/alert/ClosableLongAlert.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | interface Props {
4 | text: string;
5 | }
6 |
7 | const ClosableLongAlert = (props: Props) => {
8 | return (
9 |
13 |
21 |
22 |
23 |
24 |
{props.text}
25 |
26 |
27 |
35 |
36 |
37 |
38 |
39 | );
40 | };
41 |
42 | export default ClosableLongAlert;
43 |
--------------------------------------------------------------------------------
/components/kit/components/elements/alert/ConfirmationCard.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import Button from '../buttons/Button';
3 | const ConfirmationCard: FC = () => {
4 | return (
5 |
6 |
7 |
8 |
16 |
17 |
18 |
19 |
Remove card
20 |
21 | Are you sure you want to delete this card ?
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | );
31 | };
32 | export default ConfirmationCard;
33 |
--------------------------------------------------------------------------------
/components/kit/components/elements/alert/CookieAlert2.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Button from '../buttons/Button';
3 |
4 | const CookieAlert2 = () => {
5 | return (
6 |
7 |
8 |
9 |
10 |
11 |
12 | We care about your data, and we'd love to use cookies to make your experience better.
13 |
14 |
15 |
23 |
24 | );
25 | };
26 |
27 | export default CookieAlert2;
28 |
--------------------------------------------------------------------------------
/components/kit/components/elements/alert/InformationCard.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import Button from '../buttons/Button';
3 | const InformationCard: FC = () => {
4 | return (
5 |
6 |
7 |
8 |
14 |
15 |
16 |
17 | User 23722873 has been deleted
18 | form database.
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | );
27 | };
28 | export default InformationCard;
29 |
--------------------------------------------------------------------------------
/components/kit/components/elements/alert/SimpleAlert.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | interface Props {
4 | type: 'alert' | 'success' | 'danger';
5 | title: string;
6 | text: string;
7 | }
8 |
9 | const SimpleAlert = (props: Props) => {
10 | let cssClasses = 'bg-yellow-200 border-yellow-600 text-yellow-600';
11 | if (props.type !== 'alert') {
12 | cssClasses =
13 | props.type === 'success'
14 | ? 'bg-green-200 border-green-600 text-green-600'
15 | : 'bg-red-200 border-red-600 text-red-600';
16 | }
17 |
18 | return (
19 |
20 |
{props.title}
21 |
{props.text}
22 |
23 | );
24 | };
25 |
26 | export default SimpleAlert;
27 |
--------------------------------------------------------------------------------
/components/kit/components/elements/avatars/Avatar.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | interface Props {
4 | withBorder?: boolean;
5 | withInfo?: boolean;
6 | img?: string;
7 | size?: 'small' | 'normal' | 'big' | 'monster';
8 | type?: 'square' | 'rounded' | 'full';
9 | }
10 | const Avatar = ({ withBorder, size, withInfo, type, img }: Props) => {
11 | let sizeClasses = 'h-16 w-16';
12 | if (size && size !== 'normal') {
13 | sizeClasses = size === 'small' ? 'h-10 w-10' : 'h-20 w-20';
14 | if (size === 'monster') {
15 | sizeClasses = 'h-40 w-40';
16 | }
17 | }
18 |
19 | let roundedClasses = 'rounded-full';
20 | if (type && type !== 'full') {
21 | roundedClasses = type === 'square' ? '' : 'rounded-lg';
22 | }
23 | return (
24 |
25 |
32 | {withInfo && (
33 |
34 | )}
35 |
36 | );
37 | };
38 | export default Avatar;
39 |
--------------------------------------------------------------------------------
/components/kit/components/elements/avatars/MultipleAvatar.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | interface Props {
3 | size?: 'small' | 'normal' | 'big';
4 | withHoverEffect?: boolean;
5 | }
6 | const MultipleAvatar = ({ size, withHoverEffect }: Props) => {
7 | let sizeClasses = 'h-16 w-16';
8 | if (size && size !== 'normal') {
9 | sizeClasses = size === 'small' ? 'h-10 w-10' : 'h-20 w-20';
10 | }
11 |
12 | const effectClasses = withHoverEffect
13 | ? 'hover:scale-150 hover:z-10 transform ease-in-out transition duration-500'
14 | : '';
15 |
16 | return (
17 |
47 | );
48 | };
49 | export default MultipleAvatar;
50 |
--------------------------------------------------------------------------------
/components/kit/components/elements/badges/BadgeList.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import Badge from './Badge';
3 |
4 | const BadgeList: FC = () => {
5 | return (
6 |
7 |
8 |
15 |
22 |
23 | );
24 | };
25 |
26 | export default BadgeList;
27 |
--------------------------------------------------------------------------------
/components/kit/components/elements/badges/ClickableBadge.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | const ClickableBadge: FC = () => {
3 | return (
4 |
8 | Starter
9 |
10 | );
11 | };
12 | export default ClickableBadge;
13 |
--------------------------------------------------------------------------------
/components/kit/components/elements/badges/ColoredTextAndBadge.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | interface Props {
4 | textColor?: string;
5 | backgroundBadgeColor: string;
6 | label: string;
7 | badgeLabel: string;
8 | }
9 | const ColoredTextAndBadge = (props: Props) => {
10 | return (
11 |
12 |
15 | {props.badgeLabel}
16 |
17 | {props.label}
18 |
19 | );
20 | };
21 | export default ColoredTextAndBadge;
22 |
--------------------------------------------------------------------------------
/components/kit/components/elements/badges/NotificationBadge.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | interface Props {
4 | number: number;
5 | size?: 'small' | 'normal' | 'big';
6 | }
7 |
8 | const NotificationBadge = (props: Props) => {
9 | let sizeClasses = 'w-8 h-8 text-base';
10 | if (props.size && props.size !== 'normal') {
11 | sizeClasses = props.size === 'small' ? 'w-6 h-6 text-xs' : 'w-12 h-12 text-base';
12 | }
13 | return (
14 |
15 | {props.number}
16 |
17 | );
18 | };
19 | export default NotificationBadge;
20 |
--------------------------------------------------------------------------------
/components/kit/components/elements/badges/NotificationIconBadge.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | const NotificationIconBadge: FC = () => {
3 | return (
4 |
5 | 2
6 |
14 |
15 |
16 |
17 | );
18 | };
19 | export default NotificationIconBadge;
20 |
--------------------------------------------------------------------------------
/components/kit/components/elements/buttons/Button.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | interface Props {
4 | rounded?: boolean;
5 | color?: string;
6 | icon?: JSX.Element;
7 | disabled?: boolean;
8 | submit?: boolean;
9 | isFat?: boolean;
10 | label?: string;
11 | onClick?: () => void;
12 | }
13 |
14 | const colors = {
15 | white: 'bg-white hover:bg-gray-100 focus:ring-indigo-500 focus:ring-offset-indigo-200 text-indigo-500',
16 | gray: 'bg-gray-600 hover:bg-gray-700 focus:ring-gray-500 focus:ring-offset-gray-200',
17 | red: 'bg-red-600 hover:bg-red-700 focus:ring-red-500 focus:ring-offset-red-200',
18 | yellow: 'bg-yellow-600 hover:bg-yellow-700 focus:ring-yellow-500 focus:ring-offset-yellow-200',
19 | green: 'bg-green-500 hover:bg-green-700 focus:ring-green-500 focus:ring-offset-green-200',
20 | blue: 'bg-blue-600 hover:bg-blue-700 focus:ring-blue-500 focus:ring-offset-blue-200',
21 | indigo: 'bg-indigo-600 hover:bg-indigo-700 focus:ring-indigo-500 focus:ring-offset-indigo-200',
22 | purple: 'bg-purple-600 hover:bg-purple-700 focus:ring-purple-500 focus:ring-offset-purple-200',
23 | pink: 'bg-pink-600 hover:bg-pink-700 focus:ring-pink-500 focus:ring-offset-pink-200',
24 | };
25 |
26 | const Button = (props: Props) => {
27 | return (
28 |
40 | {props.icon && props.icon}
41 |
42 | {props.label && props.label}
43 |
44 | );
45 | };
46 | export default Button;
47 |
--------------------------------------------------------------------------------
/components/kit/components/elements/buttons/ButtonWithIndications.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | interface Props {
4 | label: string;
5 | indication: string;
6 | onClick?: () => void;
7 | onIndicationClick?: () => void;
8 | }
9 |
10 | const ButtonWithIndications = (props: Props) => {
11 | return (
12 |
13 |
props.onClick()}
15 | type="button"
16 | className="flex items-center w-full px-4 py-2 text-base font-medium text-black bg-white border-t border-b border-l rounded-l-md hover:bg-gray-100"
17 | >
18 |
26 |
27 | {' '}
28 | {props.label}
29 |
30 |
31 |
props.onIndicationClick()}
34 | className="w-full px-4 py-2 text-base font-medium text-black bg-white border rounded-r-md hover:bg-gray-100"
35 | >
36 | {props.indication}
37 |
38 |
39 | );
40 | };
41 | export default ButtonWithIndications;
42 |
--------------------------------------------------------------------------------
/components/kit/components/elements/buttons/MultipleButton.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 |
3 | const MultipleButton: FC = () => {
4 | return (
5 |
6 |
10 | Left
11 |
12 |
16 | Center
17 |
18 |
22 | Right
23 |
24 |
25 | );
26 | };
27 | export default MultipleButton;
28 |
--------------------------------------------------------------------------------
/components/kit/components/elements/buttons/RoundedButton.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | interface Props {
4 | icon?: boolean;
5 | label?: string;
6 | onClick?: () => void;
7 | }
8 |
9 | const RoundedButton = (props: Props) => {
10 | return (
11 |
17 | {props.icon && (
18 |
26 |
27 |
28 | )}
29 | {props.label}
30 |
31 | );
32 | };
33 | export default RoundedButton;
34 |
--------------------------------------------------------------------------------
/components/kit/components/elements/buttons/SquareButton.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | interface Props {
4 | color?: string;
5 | icon?: JSX.Element;
6 | isFat?: boolean;
7 | label?: string;
8 | onClick?: () => void;
9 | }
10 |
11 | const colors = {
12 | gray: 'bg-gray-600 hover:bg-gray-700 focus:ring-gray-500 focus:ring-offset-gray-200',
13 | red: 'bg-red-600 hover:bg-red-700 focus:ring-red-500 focus:ring-offset-red-200',
14 | yellow: 'bg-yellow-600 hover:bg-yellow-700 focus:ring-yellow-500 focus:ring-offset-yellow-200',
15 | green: 'bg-green-600 hover:bg-green-700 focus:ring-green-500 focus:ring-offset-green-200',
16 | blue: 'bg-blue-600 hover:bg-blue-700 focus:ring-blue-500 focus:ring-offset-blue-200',
17 | indigo: 'bg-indigo-600 hover:bg-indigo-700 focus:ring-indigo-500 focus:ring-offset-indigo-200',
18 | purple: 'bg-purple-600 hover:bg-purple-700 focus:ring-purple-500 focus:ring-offset-purple-200',
19 | pink: 'bg-pink-600 hover:bg-pink-700 focus:ring-pink-500 focus:ring-offset-pink-200',
20 | variant: 'bg-gradient-to-r from-green-400 to-blue-500',
21 | };
22 |
23 | const SquareButton = (props: Props) => {
24 | return (
25 |
36 | {props.label && props.label}
37 | {props.icon && {props.icon} }
38 |
39 | );
40 | };
41 | export default SquareButton;
42 |
--------------------------------------------------------------------------------
/components/kit/components/elements/data/CovidInfo.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 |
3 | const CovidInfo: FC = () => {
4 | return (
5 |
6 |
7 | Total Cases
8 | 75,858,724
9 |
10 |
11 |
12 |
13 |
21 |
22 |
23 | 1.2% increase
24 |
25 |
26 |
27 | from yesterday (+906,503)
28 |
29 |
30 |
31 | );
32 | };
33 |
34 | export default CovidInfo;
35 |
--------------------------------------------------------------------------------
/components/kit/components/elements/data/InfoNumberCard.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | const InfoNumberCard: FC = () => {
3 | return (
4 |
5 |
6 |
7 |
15 |
16 |
17 |
18 |
Sales
19 |
20 |
26 |
27 | );
28 | };
29 | export default InfoNumberCard;
30 |
--------------------------------------------------------------------------------
/components/kit/components/elements/data/InfoNumberCard2.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 |
3 | const InfoNumberCard2: FC = () => {
4 | return (
5 |
6 |
11 |
12 |
13 | Valeur de la transaction
14 | $ 5,749,480
15 |
16 |
17 | 500.000 BTC
18 |
19 |
20 |
21 |
22 |
23 | );
24 | };
25 |
26 | export default InfoNumberCard2;
27 |
--------------------------------------------------------------------------------
/components/kit/components/elements/data/InformationIconCard.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | const InformationIconCard: FC = () => {
3 | return (
4 |
5 |
6 |
18 |
19 |
Justice
20 |
21 | I therefore look forward to further developments in this area so that we can ease the path in
22 | bringing these reckless individuals to justice.
23 |
24 |
25 |
26 | );
27 | };
28 | export default InformationIconCard;
29 |
--------------------------------------------------------------------------------
/components/kit/components/elements/data/JobCard.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Avatar from '../avatars/Avatar';
3 | import Badge from '../badges/Badge';
4 | import Button from '../buttons/Button';
5 |
6 | const JobCard = () => {
7 | return (
8 |
9 |
10 |
11 |
12 |
13 | Charlie Rabiller
14 | Updated 3 min ago
15 |
16 |
17 |
18 | Design
19 |
20 |
21 |
22 | Need a designer to form branding for my business.
23 |
24 |
25 | Looking for a talented brand designer to create all the branding materials for my new startup. This
26 | should be a long term project and my hope I hight on the person whom I would like to hire.
27 |
28 |
29 |
30 |
31 | $ 4,500
32 | /Month
33 |
34 |
35 | Full time
36 |
37 |
38 |
39 |
40 |
41 | );
42 | };
43 | export default JobCard;
44 |
--------------------------------------------------------------------------------
/components/kit/components/elements/data/MutlipleTask.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 |
3 | const MutlipleTask: FC = () => {
4 | return (
5 |
44 | );
45 | };
46 |
47 | export default MutlipleTask;
48 |
--------------------------------------------------------------------------------
/components/kit/components/elements/data/SimpleIconDescCard.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | const SimpleIconDescCard: FC = () => {
3 | return (
4 |
5 |
6 |
7 |
15 |
16 |
17 |
by express
18 |
Package delivered
19 |
20 | Your package was delivered in 1 day and 4 hours by our postal partner
21 |
22 |
23 |
24 |
25 | );
26 | };
27 | export default SimpleIconDescCard;
28 |
--------------------------------------------------------------------------------
/components/kit/components/elements/data/SimpleNotificationCard.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | const SimpleNotificationCard: FC = () => {
3 | return (
4 |
5 |
6 |
7 |
8 |
9 |
10 | You have
11 | 2 new messages
12 |
13 |
14 |
26 |
27 | );
28 | };
29 | export default SimpleNotificationCard;
30 |
--------------------------------------------------------------------------------
/components/kit/components/elements/data/SimplePhotoDescCard.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 |
3 | const SimplePhotoDescCard: FC = () => {
4 | return (
5 |
6 |
7 |
8 |
NextJS
9 |
10 | NextJs build all free components and templates for React website.
11 |
12 |
13 |
14 | );
15 | };
16 | export default SimplePhotoDescCard;
17 |
--------------------------------------------------------------------------------
/components/kit/components/elements/data/SimpleTask.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import Avatar from '../avatars/Avatar';
3 |
4 | const SimpleTask: FC = () => {
5 | return (
6 |
23 | );
24 | };
25 |
26 | export default SimpleTask;
27 |
--------------------------------------------------------------------------------
/components/kit/components/elements/data/TagsCard.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | const TagsCard: FC = () => {
3 | return (
4 |
5 |
6 |
7 |
12 |
20 |
21 |
22 |
23 |
Templates
24 |
25 | Improve UI with beautiful templates and components for Tailwind css.
26 |
27 |
28 |
#css
29 |
30 | #tailwind
31 |
32 |
#components
33 |
34 |
35 |
36 | );
37 | };
38 | export default TagsCard;
39 |
--------------------------------------------------------------------------------
/components/kit/components/elements/data/TaskCard.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import MultipleAvatar from '../avatars/MultipleAvatar';
3 |
4 | const TaskCard: FC = () => {
5 | return (
6 |
31 | );
32 | };
33 |
34 | export default TaskCard;
35 |
--------------------------------------------------------------------------------
/components/kit/components/elements/index.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import SectionDesc from '../../../site/section/SectionDesc';
3 |
4 | const Elements: FC = () => {
5 | const elementsSection = [
6 | {
7 | title: 'Buttons',
8 | items: 22,
9 | img: 'images/sections/button.png',
10 | link: '/components/buttons',
11 | },
12 | {
13 | title: 'Badges',
14 | items: 15,
15 | img: 'images/sections/badges.png',
16 | link: '/components/badges',
17 | },
18 | {
19 | title: 'Avatars',
20 | items: 11,
21 | img: 'images/sections/avatar.png',
22 | link: '/components/avatar',
23 | },
24 | {
25 | title: 'Menu list',
26 | items: 7,
27 | img: 'images/sections/ddm.png',
28 | link: '/components/ddm',
29 | },
30 | {
31 | title: 'Alerts',
32 | items: 11,
33 | img: 'images/sections/alerte.png',
34 | link: '/components/alert',
35 | },
36 | {
37 | title: 'Dashboards',
38 | items: 26,
39 | img: 'images/sections/data.png',
40 | link: '/components/data',
41 | },
42 | {
43 | title: 'Progress bars',
44 | items: 5,
45 | img: 'images/sections/progress.png',
46 | link: '/components/progress',
47 | },
48 | {
49 | title: 'Skeleton',
50 | items: 3,
51 | img: 'images/sections/skeleton.png',
52 | link: '/components/skeleton',
53 | },
54 | {
55 | title: 'Tabs',
56 | isNew: true,
57 | items: 3,
58 | img: 'images/sections/tabs.png',
59 | link: '/components/tabs',
60 | },
61 | ];
62 |
63 | return ;
64 | };
65 |
66 | export default Elements;
67 |
--------------------------------------------------------------------------------
/components/kit/components/elements/progress/ProgressBar.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | interface Props {
4 | color?: string;
5 | textColor?: string;
6 | isFat?: boolean;
7 | label?: string;
8 | withBadge?: boolean;
9 | }
10 |
11 | const ProgressBar = (props: Props) => {
12 | return (
13 |
14 |
15 | {props.withBadge && (
16 |
17 |
20 | Task in progress
21 |
22 |
23 | )}
24 |
25 |
26 | {props.label}
27 |
28 |
29 |
30 |
31 | );
32 | };
33 | export default ProgressBar;
34 |
--------------------------------------------------------------------------------
/components/kit/components/elements/skeleton/HorizontalSkeletonCard.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const HorizontalSkeletonCard = () => {
4 | return (
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | );
23 | };
24 | export default HorizontalSkeletonCard;
25 |
--------------------------------------------------------------------------------
/components/kit/components/elements/skeleton/PictureAndTextSkeleton.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const PictureAndTextSkeleton = () => {
4 | return (
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | );
20 | };
21 | export default PictureAndTextSkeleton;
22 |
--------------------------------------------------------------------------------
/components/kit/components/elements/skeleton/SimpleSkeleton.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const SimpleSkeleton = () => {
4 | return (
5 |
14 | );
15 | };
16 | export default SimpleSkeleton;
17 |
--------------------------------------------------------------------------------
/components/kit/components/elements/tabs/BasicTabs.tsx:
--------------------------------------------------------------------------------
1 | export default function BasicTabs() {
2 | return (
3 |
25 | );
26 | }
27 |
--------------------------------------------------------------------------------
/components/kit/components/elements/tabs/BasicTabsDisabled.tsx:
--------------------------------------------------------------------------------
1 | export default function BasicTabsDisabled() {
2 | return (
3 |
30 | );
31 | }
32 |
--------------------------------------------------------------------------------
/components/kit/components/elements/tabs/BasicTabsUnderline.tsx:
--------------------------------------------------------------------------------
1 | export default function BasicTabsUnderline() {
2 | return (
3 |
40 | );
41 | }
42 |
--------------------------------------------------------------------------------
/components/kit/components/form/dateTimePicker/TimePicker.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | export const TimePicker = () => {
4 | return (
5 |
6 |
10 |
11 | );
12 | };
13 |
--------------------------------------------------------------------------------
/components/kit/components/form/index.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import SectionDesc from '../../../site/section/SectionDesc';
3 |
4 | const Forms: FC = () => {
5 | const formSections = [
6 | {
7 | title: 'Inputs',
8 | items: 10,
9 | img: 'images/sections/input.png',
10 | link: '/components/inputtext',
11 | },
12 | {
13 | title: 'Selects',
14 | items: 4,
15 | img: 'images/sections/select.png',
16 | link: '/components/inputselect',
17 | },
18 | {
19 | title: 'Toggles',
20 | items: 3,
21 | img: 'images/sections/toggle.png',
22 | link: '/components/toggle',
23 | },
24 | {
25 | title: 'Layouts',
26 | items: 10,
27 | img: 'images/sections/login.png',
28 | link: '/components/form',
29 | },
30 | ];
31 |
32 | return ;
33 | };
34 |
35 | export default Forms;
36 |
--------------------------------------------------------------------------------
/components/kit/components/form/inputtext/InputArea.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const InputArea = () => {
4 | return (
5 |
6 |
14 |
15 | );
16 | };
17 |
18 | export default InputArea;
19 |
--------------------------------------------------------------------------------
/components/kit/components/form/inputtext/InputGroup.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const InputGroup = () => {
4 | return (
5 |
6 |
7 | Price
8 |
9 |
10 |
11 | $
12 |
13 |
20 |
21 |
22 | Currency
23 |
24 |
29 | USD
30 | CAD
31 | EUR
32 |
33 |
34 |
35 |
36 | );
37 | };
38 |
39 | export default InputGroup;
40 |
--------------------------------------------------------------------------------
/components/kit/components/form/layout/ContactForm.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import InputText from '../inputtext/InputText';
3 | import InputArea from '../inputtext/InputArea';
4 | import Button from '../../elements/buttons/Button';
5 |
6 | const ContactForm = () => {
7 | return (
8 |
31 | );
32 | };
33 | export default ContactForm;
34 |
--------------------------------------------------------------------------------
/components/kit/components/form/layout/CreateAccount.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Button from '../../elements/buttons/Button';
3 | import InputText from '../inputtext/InputText';
4 | import Checkbox from '../toggle/Checkbox';
5 |
6 | const CreateAccount = () => {
7 | return (
8 |
9 |
10 | Create a new account
11 |
12 |
13 | Already have an account ?
14 |
15 | Sign in
16 |
17 |
18 |
19 |
45 |
46 | );
47 | };
48 | export default CreateAccount;
49 |
--------------------------------------------------------------------------------
/components/kit/components/form/layout/FormSubscribe.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import InputText from '../inputtext/InputText';
3 |
4 | interface Props {
5 | label: string;
6 | placeholder: string;
7 | }
8 |
9 | const FormSubscribe = ({ label, placeholder }: Props) => {
10 | return (
11 |
20 | );
21 | };
22 | export default FormSubscribe;
23 |
--------------------------------------------------------------------------------
/components/kit/components/form/layout/LoginWithBackground.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import InputText from '../inputtext/InputText';
3 | import Button from '../../elements/buttons/Button';
4 |
5 | const LoginWithBackground = () => {
6 | return (
7 |
33 | );
34 | };
35 | export default LoginWithBackground;
36 |
--------------------------------------------------------------------------------
/components/kit/components/form/layout/SearchForm.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Button from '../../elements/buttons/Button';
3 | import InputText from '../../../components/form/inputtext/InputText';
4 |
5 | const SearchForm = () => {
6 | return (
7 |
8 |
9 |
10 |
13 |
14 | Search criteria
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
This data are display for information and can change
38 |
39 |
40 | );
41 | };
42 | export default SearchForm;
43 |
--------------------------------------------------------------------------------
/components/kit/components/form/select/Select.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC, useEffect, useRef, useState, useCallback } from 'react';
2 |
3 | const Select = () => {
4 | return (
5 |
9 | Select an option
10 | Dog
11 | Cat
12 | Hamster
13 | Parrot
14 | Spider
15 | Goldfish
16 |
17 | );
18 | };
19 | export default Select;
20 |
--------------------------------------------------------------------------------
/components/kit/components/form/select/SelectWithLabel.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const SelectWithLabel = () => {
4 | return (
5 |
6 | Animals
7 |
12 | Select an option
13 | Dog
14 | Cat
15 | Hamster
16 | Parrot
17 | Spider
18 | Goldfish
19 |
20 |
21 | );
22 | };
23 | export default SelectWithLabel;
24 |
--------------------------------------------------------------------------------
/components/kit/components/form/toggle/Checkbox.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | interface Props {
4 | label?: string;
5 | onChange?: (checked) => void;
6 | }
7 |
8 | const colors = [
9 | {
10 | color: 'checked:bg-blue-500',
11 | label: 'Blue',
12 | },
13 | {
14 | color: 'checked:bg-pink-500',
15 | label: 'Pink',
16 | },
17 | {
18 | color: 'checked:bg-green-500',
19 | label: 'Green',
20 | },
21 | {
22 | color: 'checked:bg-yellow-500',
23 | label: 'Orange',
24 | },
25 | {
26 | color: 'checked:bg-purple-500',
27 | label: 'Purple',
28 | },
29 | {
30 | color: 'checked:bg-black',
31 | label: 'Black',
32 | },
33 | {
34 | color: 'checked:bg-indigo-500',
35 | label: 'Indigo',
36 | },
37 | {
38 | color: 'checked:bg-red-500',
39 | label: 'Red',
40 | },
41 | {
42 | color: 'checked:bg-gray-500',
43 | label: 'Gray',
44 | },
45 | ];
46 |
47 | const Checkbox = (props: Props) => {
48 | return (
49 |
50 | {colors.map((color, index) => {
51 | return (
52 |
53 |
58 | {color.label}
59 |
60 | );
61 | })}
62 |
63 | );
64 | };
65 | export default Checkbox;
66 |
--------------------------------------------------------------------------------
/components/kit/components/form/toggle/MultipleToggle.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import _uniqueId from 'lodash/uniqueId';
3 |
4 | interface Props {
5 | onChange: (checked) => void;
6 | check?: boolean;
7 | label?: string;
8 | }
9 |
10 | const colors = [
11 | {
12 | color: 'checked:bg-blue-500',
13 | label: 'Blue',
14 | },
15 | {
16 | color: 'checked:bg-pink-500',
17 | label: 'Pink',
18 | },
19 | {
20 | color: 'checked:bg-green-500',
21 | label: 'Green',
22 | },
23 | {
24 | color: 'checked:bg-yellow-500',
25 | label: 'Orange',
26 | },
27 | {
28 | color: 'checked:bg-purple-500',
29 | label: 'Purple',
30 | },
31 | {
32 | color: 'checked:bg-black',
33 | label: 'Black',
34 | },
35 | {
36 | color: 'checked:bg-indigo-500',
37 | label: 'Indigo',
38 | },
39 | {
40 | color: 'checked:bg-red-500',
41 | label: 'Red',
42 | },
43 | {
44 | color: 'checked:bg-gray-500',
45 | label: 'Gray',
46 | },
47 | ];
48 |
49 | const MultipleToggle = (props: Props) => {
50 | return (
51 |
52 | {colors.map((color) => {
53 | return (
54 |
55 |
56 | props.onChange(e.target.checked)}
61 | className={`${color.color} outline-none focus:outline-none right-4 checked:right-0 duration-200 ease-in absolute block w-6 h-6 rounded-full bg-white border-4 appearance-none cursor-pointer`}
62 | />
63 |
67 |
68 |
69 |
{props.label || color.label}
70 |
71 | );
72 | })}
73 |
74 | );
75 | };
76 | export default MultipleToggle;
77 |
--------------------------------------------------------------------------------
/components/kit/components/form/toggle/Radio.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const Radio = () => {
4 | return (
5 |
6 |
7 |
8 | Car
9 |
10 |
11 |
12 | Cycle
13 |
14 |
15 | );
16 | };
17 | export default Radio;
18 |
--------------------------------------------------------------------------------
/components/kit/components/form/toggle/Toggle.tsx:
--------------------------------------------------------------------------------
1 | import React, { useState } from 'react';
2 | import _uniqueId from 'lodash/uniqueId';
3 |
4 | interface Props {
5 | onChange: (checked) => void;
6 | check?: boolean;
7 | label?: string;
8 | }
9 |
10 | const Toggle = (props: Props) => {
11 | const [id] = useState(_uniqueId('prefix-'));
12 | return (
13 |
14 |
15 | props.onChange(e.target.checked)}
21 | className="absolute block w-6 h-6 duration-200 ease-in bg-white border-4 rounded-full appearance-none cursor-pointer right-4 checked:right-0 checked:bg-blue-600"
22 | />
23 |
24 |
25 | {props.label &&
{props.label} }
26 |
27 | );
28 | };
29 | export default Toggle;
30 |
--------------------------------------------------------------------------------
/components/kit/components/list/index.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import SectionDesc from '../../../site/section/SectionDesc';
3 |
4 | const ListPage: FC = () => {
5 | const tableSections = [
6 | {
7 | title: 'Tables',
8 | items: 6,
9 | img: 'images/sections/table.png',
10 | link: '/components/table',
11 | },
12 | {
13 | title: 'Lists',
14 | items: 11,
15 | img: 'images/sections/list.png',
16 | link: '/components/list',
17 | },
18 | ];
19 |
20 | return ;
21 | };
22 |
23 | export default ListPage;
24 |
--------------------------------------------------------------------------------
/components/kit/components/list/table/Table.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 |
3 | interface Props {
4 | withBorder?: boolean;
5 | }
6 |
7 | const Table = (props: Props) => {
8 | const headers = ['#', 'First name', 'Last name', 'Username'];
9 | const rows = [
10 | {
11 | data: ['1', 'Jean Marc', 'Louis', 'Jl987'],
12 | },
13 | {
14 | data: ['2', 'Eric', 'Prouve', 'prouveE'],
15 | },
16 | {
17 | data: ['3', 'Julien', 'Clai', 'CJUL87'],
18 | },
19 | {
20 | data: ['4', 'Igor', 'Louth', 'IGL89_9'],
21 | },
22 | ];
23 |
24 | const borderClasses = props.withBorder ? 'border' : 'border-b-2';
25 |
26 | return (
27 |
28 |
29 |
30 | {headers.map((head) => {
31 | return (
32 |
36 | {head}
37 |
38 | );
39 | })}
40 |
41 |
42 |
43 | {rows.map((row, index) => {
44 | return (
45 |
46 | {row.data.map((text) => {
47 | return (
48 |
49 | {text}
50 |
51 | );
52 | })}
53 |
54 | );
55 | })}
56 |
57 |
58 | );
59 | };
60 |
61 | export default Table;
62 |
--------------------------------------------------------------------------------
/components/kit/components/navigation/header/CenterHeader.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const CenterHeader = () => {
4 | return (
5 |
6 |
11 |
12 |
13 |
14 | Menu
15 |
16 |
17 |
18 |
19 |
30 |
41 |
42 | );
43 | };
44 | export default CenterHeader;
45 |
--------------------------------------------------------------------------------
/components/kit/components/navigation/index.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import SectionDesc from '../../../site/section/SectionDesc';
3 |
4 | const Navigation: FC = () => {
5 | const formSections = [
6 | {
7 | title: 'Headers',
8 | items: 10,
9 | img: 'images/sections/header.png',
10 | link: '/components/header',
11 | },
12 | {
13 | title: 'Footers',
14 | items: 9,
15 | img: 'images/sections/footer.png',
16 | link: '/components/footer',
17 | },
18 | {
19 | title: 'Sidebars',
20 | items: 9,
21 | img: 'images/sections/sidebar.png',
22 | link: '/components/sidebar',
23 | },
24 | ];
25 |
26 | return ;
27 | };
28 |
29 | export default Navigation;
30 |
--------------------------------------------------------------------------------
/components/kit/components/pagesection/cta/BandeauInfo.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import Button from '../../elements/buttons/Button';
3 | const BandeauInfo: FC = () => {
4 | return (
5 |
6 |
7 |
8 | Used by leading architects, home builders renovators.
9 |
10 |
11 | Feel confident in choosing the best energy assessor for your energy rating.
12 |
13 |
14 |
15 |
16 |
119
17 |
Energy raters
18 |
19 |
20 |
6
21 |
Quotes on average
22 |
23 |
24 |
24 hours
25 |
Average turnaround
26 |
27 |
28 |
29 |
33 | Buy the kit
34 |
35 |
36 |
37 | );
38 | };
39 | export default BandeauInfo;
40 |
--------------------------------------------------------------------------------
/components/kit/components/pagesection/cta/BandeauNumber.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import Button from '../../elements/buttons/Button';
3 | const BandeauNumber: FC = () => {
4 | return (
5 |
6 |
7 |
8 |
9 | 2179
10 | +
11 |
12 |
Cups of coffee
13 |
14 |
15 |
16 | 13
17 | +
18 |
19 |
Ongoing contracts
20 |
21 |
22 |
23 | 31
24 | +
25 |
26 |
Finished projects
27 |
28 |
29 |
30 | 3
31 | +
32 |
33 |
Years in business
34 |
35 |
36 |
37 |
38 |
39 |
40 | );
41 | };
42 | export default BandeauNumber;
43 |
--------------------------------------------------------------------------------
/components/kit/components/pagesection/cta/MultipleImagesCta.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Button from '../../elements/buttons/Button';
3 |
4 | interface Props {
5 | title: string;
6 | description?: string;
7 | isLeft?: boolean;
8 | }
9 |
10 | const MultipleImagesCta = (props: Props) => {
11 | return (
12 |
13 |
14 |
15 | {props.title}
16 |
17 | {props.description &&
{props.description}
}
18 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 | );
35 | };
36 |
37 | export default MultipleImagesCta;
38 |
--------------------------------------------------------------------------------
/components/kit/components/pagesection/cta/NextJSCta.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const NextJSCta = () => {
4 | return (
5 |
6 |
7 |
8 |
9 | The React Framework for Production
10 |
11 |
12 | Next.js gives you the best developer experience with all the features you need for production:
13 | hybrid static & server rendering, TypeScript support, smart bundling, route pre-fetching, and
14 | more. No config needed.
15 |
16 |
30 |
31 |
32 |
33 |
34 |
35 |
36 | );
37 | };
38 |
39 | export default NextJSCta;
40 |
--------------------------------------------------------------------------------
/components/kit/components/pagesection/cta/NotifyMeCta.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const NotifyMeCta = () => {
4 | return (
5 |
6 |
7 |
8 | Receive alert about new commit or pull request on your github
9 |
10 |
11 | No account or email required. We use push notifications. You can choose between several modes and
12 | define your own alert threshold.
13 |
14 |
15 |
16 |
17 |
18 | Notify me
19 |
20 |
21 |
22 | We care about the protection of your data. Your data is safe and never used for commercial purposes.
23 |
24 |
25 | In order to receive the notifications, you must give permission sufficient to your web browser.
26 |
27 |
28 |
29 | );
30 | };
31 |
32 | export default NotifyMeCta;
33 |
--------------------------------------------------------------------------------
/components/kit/components/pagesection/cta/SubscribeCta.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import FormSubscribe from '../../form/layout/FormSubscribe';
3 |
4 | const SubscribeCta = () => {
5 | return (
6 |
7 |
8 |
9 | We've got more coming...
10 |
11 |
12 | Want to hear from us when we add new components? Sign up for our newsletter and we'll email you
13 | every time we release a new batch of components.
14 |
15 |
20 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
34 | );
35 | };
36 |
37 | export default SubscribeCta;
38 |
--------------------------------------------------------------------------------
/components/kit/components/pagesection/cta/WatchCta.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const WatchCta = () => {
4 | return (
5 |
6 |
7 |
8 |
9 |
10 | Be on Time
11 |
12 |
13 | Dimension of reality that makes change possible and understandable. An indefinite and
14 | homogeneous environment in which natural events and human existence take place.
15 |
16 |
30 |
31 |
32 |
33 |
34 |
35 |
36 | );
37 | };
38 |
39 | export default WatchCta;
40 |
--------------------------------------------------------------------------------
/components/kit/components/pagesection/faq/Faq.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | interface Props {
4 | questions?: Question[];
5 | }
6 |
7 | interface Question {
8 | question: string;
9 | response: string;
10 | }
11 |
12 | const Faq = (props: Props) => {
13 | return (
14 |
15 |
FAQs
16 |
17 |
18 | {props.questions.map((quest) => {
19 | return (
20 |
21 | {quest.question}
22 |
23 |
{quest.response}
24 |
25 |
26 | );
27 | })}
28 |
29 |
30 | );
31 | };
32 | export default Faq;
33 |
--------------------------------------------------------------------------------
/components/kit/components/pagesection/index.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import SectionDesc from '../../../site/section/SectionDesc';
3 |
4 | const Pagesection: FC = () => {
5 | const pageSections = [
6 | {
7 | title: 'CTAs',
8 | items: 15,
9 | img: 'images/sections/cta.png',
10 | link: '/components/cta',
11 | },
12 | {
13 | title: 'Testimonials',
14 | items: 7,
15 | img: 'images/sections/testimonial.png',
16 | link: '/components/testimonial',
17 | },
18 | {
19 | title: 'Profiles',
20 | items: 8,
21 | img: 'images/sections/profile.png',
22 | link: '/components/profile',
23 | },
24 | {
25 | title: 'Teams',
26 | items: 6,
27 | img: 'images/sections/team.png',
28 | link: '/components/team',
29 | },
30 | {
31 | title: 'FAQs',
32 | items: 2,
33 | img: 'images/sections/faq.png',
34 | link: '/components/faq',
35 | },
36 | {
37 | title: 'Features',
38 | items: 5,
39 | img: 'images/sections/feature.png',
40 | link: '/components/feature',
41 | },
42 | {
43 | title: 'Blogs',
44 | items: 5,
45 | img: 'images/sections/blog.png',
46 | link: '/components/blog',
47 | },
48 | ];
49 |
50 | return ;
51 | };
52 |
53 | export default Pagesection;
54 |
--------------------------------------------------------------------------------
/components/kit/components/pagesection/profile/CoverAndButtonsProfilCard.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import Avatar from '../../elements/avatars/Avatar';
3 | import Button from '../../elements/buttons/Button';
4 |
5 | const CoverAndButtonsProfilCard: FC = () => {
6 | return (
7 |
8 |
9 |
10 |
11 |
12 |
Charlie
13 |
14 |
22 |
23 |
24 | Nantes
25 |
26 |
FullStack dev
27 |
28 |
29 |
30 |
31 |
32 |
33 | );
34 | };
35 | export default CoverAndButtonsProfilCard;
36 |
--------------------------------------------------------------------------------
/components/kit/components/pagesection/profile/CoverAndInfoProfil.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import Avatar from '../../elements/avatars/Avatar';
3 |
4 | const CoverAndInfoProfil: FC = () => {
5 | return (
6 |
7 |
8 |
9 |
10 |
11 |
Charlie
12 |
Nantes
13 |
Professional
14 |
15 |
16 |
17 |
18 | Articles
19 | 34
20 |
21 |
22 | Followers 455
23 |
24 |
25 | Rating 9.3
26 |
27 |
28 |
29 |
30 |
31 | );
32 | };
33 | export default CoverAndInfoProfil;
34 |
--------------------------------------------------------------------------------
/components/kit/components/pagesection/profile/FullPhotoCard.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | const FullPhotoCard: FC = () => {
3 | return (
4 |
5 |
6 |
7 |
Helena Yakro
8 |
9 |
18/12/1993
10 |
11 |
19 |
20 |
21 | Nantes
22 |
23 |
24 |
25 |
26 | );
27 | };
28 | export default FullPhotoCard;
29 |
--------------------------------------------------------------------------------
/components/kit/components/pagesection/profile/HeadProfil.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Avatar from '../../elements/avatars/Avatar';
3 | import Button from '../../elements/buttons/Button';
4 |
5 | const HeadProfil = () => {
6 | return (
7 |
8 |
11 |
12 |
13 |
John Jackson
14 |
FullStack dev
15 |
16 |
17 |
18 |
19 |
20 | Art.
21 | 34
22 |
23 |
24 | Foll.
25 | 455
26 |
27 |
28 | Rat.
29 | 9.3
30 |
31 |
32 |
33 |
34 |
35 |
36 | );
37 | };
38 |
39 | export default HeadProfil;
40 |
--------------------------------------------------------------------------------
/components/kit/components/pagesection/profile/SimpleProfil.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import Avatar from '../../elements/avatars/Avatar';
3 | import Button from '../../elements/buttons/Button';
4 |
5 | interface Props {
6 | horizontal?: boolean;
7 | name?: string;
8 | job?: string;
9 | img?: string;
10 | size?: 'small' | 'normal' | 'big' | 'monster';
11 | noBackground?: boolean;
12 | withAction?: boolean;
13 | }
14 |
15 | const SimpleProfile = (props: Props) => {
16 | return (
17 |
18 |
19 |
22 |
23 |
24 | {props.name || 'Charlie'}
25 | {props.job || 'CTO'}
26 |
27 |
28 | {props.withAction &&
}
29 |
30 |
31 | );
32 | };
33 | export default SimpleProfile;
34 |
--------------------------------------------------------------------------------
/components/kit/components/pagesection/team/DoubleTeam.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Avatar from '../../elements/avatars/Avatar';
3 |
4 | const DoubleTeam = () => {
5 | return (
6 |
7 |
8 |
9 |
17 |
18 |
19 |
20 |
25 |
33 |
34 |
35 | );
36 | };
37 | export default DoubleTeam;
38 |
--------------------------------------------------------------------------------
/components/kit/components/pagesection/team/ShadowTeams.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import ShadowTeam from './ShadowTeam';
3 |
4 | const ShadowTeams = () => {
5 | return (
6 |
7 |
Professional team
8 |
Meat the best team in wolrd
9 |
10 |
17 |
24 |
31 |
32 |
33 | );
34 | };
35 | export default ShadowTeams;
36 |
--------------------------------------------------------------------------------
/components/kit/components/pagesection/team/SimpleTeams.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import SimpleTeam from './SimpleTeam';
3 |
4 | const SimpleTeams = () => {
5 | return (
6 |
7 |
Professional team
8 |
9 | Meat the best team in wolrd
10 |
11 |
12 |
19 |
26 |
33 |
34 |
35 | );
36 | };
37 | export default SimpleTeams;
38 |
--------------------------------------------------------------------------------
/components/kit/components/pagesection/testimonial/BigTestimonial.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Avatar from '../../elements/avatars/Avatar';
3 |
4 | const BigTestimonial = () => {
5 | return (
6 |
7 |
8 |
9 |
10 | “
11 | To get social media testimonials like these, keep your customers engaged with your social media accounts
12 | by posting regularly yourself
13 | ”
14 |
15 |
16 |
17 |
18 |
19 | Jean Miguel
20 | /
21 | User of Tail-Kit
22 |
23 |
24 |
25 | );
26 | };
27 |
28 | export default BigTestimonial;
29 |
--------------------------------------------------------------------------------
/components/kit/components/pagesection/testimonial/BigTestimonialFlex.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Avatar from '../../elements/avatars/Avatar';
3 |
4 | const BigTestimonialFlex = () => {
5 | return (
6 |
7 |
8 |
9 |
10 |
11 |
12 | “
13 | To get social media testimonials like these, keep your customers engaged with your social media
14 | accounts by posting regularly yourself
15 | ”
16 |
17 |
18 | Jean Miguel
19 | /
20 | User of tail-kit
21 |
22 |
23 |
24 |
25 | );
26 | };
27 |
28 | export default BigTestimonialFlex;
29 |
--------------------------------------------------------------------------------
/components/kit/components/pagesection/testimonial/FullWidthTesti.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const FullWidthTesti = () => {
4 | return TODOs
;
5 | };
6 |
7 | export default FullWidthTesti;
8 |
--------------------------------------------------------------------------------
/components/kit/components/pagesection/testimonial/HeadTestimonial.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Avatar from '../../elements/avatars/Avatar';
3 |
4 | const HeadTestimonial = () => {
5 | return (
6 |
7 |
8 |
11 |
12 |
“
13 |
14 | To get social media testimonials like these, keep your customers engaged with your social media
15 | accounts by posting regularly yourself
16 |
17 |
”
18 |
19 |
20 |
Tom Hardy
21 |
@thom.hardy
22 |
23 |
24 |
25 | );
26 | };
27 |
28 | export default HeadTestimonial;
29 |
--------------------------------------------------------------------------------
/components/kit/components/pagesection/testimonial/MultipleTestimonial.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import SimpleTestimonial from './SimpleTestimonial';
3 |
4 | const MultipleTestimonial = () => {
5 | return (
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | );
14 | };
15 |
16 | export default MultipleTestimonial;
17 |
--------------------------------------------------------------------------------
/components/kit/components/pagesection/testimonial/SimpleTestimonial.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Avatar from '../../elements/avatars/Avatar';
3 |
4 | interface Props {
5 | withShadow?: boolean;
6 | }
7 |
8 | const SimpleTestimonial = (props: Props) => {
9 | return (
10 |
11 |
12 | “ To get social media testimonials like these,
13 | keep your customers engaged with your social media accounts by posting regularly yourself
14 | ”
15 |
16 |
17 |
18 |
19 |
Jean Miguel
20 |
21 | User of Tail-Kit
22 |
23 |
24 |
25 |
26 |
27 | );
28 | };
29 |
30 | export default SimpleTestimonial;
31 |
--------------------------------------------------------------------------------
/components/kit/components/profile/GroupInfo.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import MultipleAvatar from '../elements/avatars/MultipleAvatar';
3 |
4 | const GroupInfo: FC = () => {
5 | return (
6 |
7 |
8 |
9 |
10 |
11 |
12 |
Eggs eater
13 |
13 458 members
14 |
15 |
16 |
17 |
18 |
19 |
20 |
24 | Invite friend
25 |
26 |
30 | Join
31 |
32 |
33 |
34 | );
35 | };
36 | export default GroupInfo;
37 |
--------------------------------------------------------------------------------
/components/kit/templates/dashboardPages/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import SectionDesc from '../../../site/section/SectionDesc';
3 |
4 | const DashboardPages = () => {
5 | const dashboardSections = [
6 | {
7 | title: 'Projects',
8 | items: 1,
9 | img: 'images/sections/dashboard.png',
10 | link: '/templates/dashboard',
11 | },
12 | {
13 | title: 'Datas',
14 | isNew: true,
15 | items: 1,
16 | img: 'images/sections/datadashboard.png',
17 | link: '/templates/datadashboard',
18 | },
19 | ];
20 |
21 | return (
22 |
29 | );
30 | };
31 |
32 | export default DashboardPages;
33 |
--------------------------------------------------------------------------------
/components/kit/templates/errorsPages/error404/Background404.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const Background404 = () => {
4 | return (
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | You're alone here
13 |
14 |
15 |
404
16 |
17 |
18 |
19 | );
20 | };
21 | export default Background404;
22 |
--------------------------------------------------------------------------------
/components/kit/templates/errorsPages/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import SectionDesc from '../../../site/section/SectionDesc';
3 |
4 | const ErrorPages = () => {
5 | const homeSection = [
6 | {
7 | title: '404 Not found',
8 | items: 3,
9 | img: 'images/sections/404.png',
10 | link: '/templates/errors404',
11 | },
12 | ];
13 |
14 | return (
15 |
23 | );
24 | };
25 |
26 | export default ErrorPages;
27 |
--------------------------------------------------------------------------------
/components/kit/templates/homePages/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import SectionDesc from '../../../site/section/SectionDesc';
3 |
4 | const HomePage = () => {
5 | const homeSection = [
6 | {
7 | title: 'Products',
8 | items: 3,
9 | img: 'images/sections/homePage2.png',
10 | link: '/templates/simpleHome',
11 | },
12 | {
13 | title: 'Get Started',
14 | items: 3,
15 | img: 'images/sections/homePage.png',
16 | link: '/templates/getStarted',
17 | },
18 | {
19 | title: 'Portfolio',
20 | items: 1,
21 | img: 'images/sections/folio.png',
22 | link: '/templates/folio',
23 | },
24 | ];
25 |
26 | return (
27 |
28 | );
29 | };
30 |
31 | export default HomePage;
32 |
--------------------------------------------------------------------------------
/components/kit/templates/homePages/simplePage/Watch.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import WatchCta from '../../../components/pagesection/cta/WatchCta';
3 |
4 | const WatchLandingPage = () => {
5 | return (
6 |
7 |
36 |
37 |
38 | );
39 | };
40 | export default WatchLandingPage;
41 |
--------------------------------------------------------------------------------
/components/layout/HomeLayout.tsx:
--------------------------------------------------------------------------------
1 | import { FC } from 'react';
2 | import AppHeader from '../site/header/AppHeader';
3 | import Meta from '../site/Meta';
4 |
5 | const HomeLayout: FC = ({ children }) => {
6 | return (
7 | <>
8 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | {children}
19 |
20 |
21 |
22 |
23 | >
24 | );
25 | };
26 |
27 | export default HomeLayout;
28 |
--------------------------------------------------------------------------------
/components/site/Meta.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Head from 'next/head';
3 | import { useRouter } from 'next/router';
4 |
5 | interface Props {
6 | pageTitle: string;
7 | description: string;
8 | }
9 |
10 | const Meta = ({ pageTitle, description }: Props) => {
11 | const router = useRouter();
12 |
13 | const url = 'https://www.tailwind-kit.com';
14 | const path = router.asPath;
15 |
16 | return (
17 |
18 | {pageTitle}
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 | );
33 | };
34 | export default Meta;
35 |
--------------------------------------------------------------------------------
/components/site/header/SectionHeader.tsx:
--------------------------------------------------------------------------------
1 | import React, { useState, FC } from 'react';
2 | import Link from 'next/link';
3 |
4 | interface Props {
5 | title: string;
6 | backLink?: string;
7 | }
8 |
9 | const SectionHeader = ({ title, backLink }: Props) => {
10 | return (
11 |
30 | );
31 | };
32 | export default SectionHeader;
33 |
--------------------------------------------------------------------------------
/global.css:
--------------------------------------------------------------------------------
1 | @import "tailwindcss/base";
2 | @import "tailwindcss/components";
3 | @import "tailwindcss/utilities";
4 |
5 | @import url("https://fonts.googleapis.com/css2?family=Poppins:wght@500;600;900&display=swap");
6 | .fade-A {
7 | animation: animA 10s infinite alternate;
8 | }
9 | .fade-B {
10 | animation: animB 10s infinite alternate;
11 | }
12 | .titleHome {
13 | font-family: "Poppins", sans-serif;
14 | }
15 |
16 | @keyframes animA {
17 | 0%,
18 | 40% {
19 | opacity: 1;
20 | }
21 | 60%,
22 | 100% {
23 | opacity: 0;
24 | }
25 | }
26 |
27 | @keyframes animB {
28 | 0%,
29 | 40% {
30 | opacity: 0;
31 | }
32 | 60%,
33 | 100% {
34 | opacity: 1;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/lib/gtag.js:
--------------------------------------------------------------------------------
1 | export const GA_TRACKING_ID = 'G-1KT9X3Z5KR';
2 |
3 | // https://developers.google.com/analytics/devguides/collection/gtagjs/pages
4 | export const pageview = (url) => {
5 | window.gtag('config', GA_TRACKING_ID, {
6 | page_path: url,
7 | });
8 | };
9 |
10 | // https://developers.google.com/analytics/devguides/collection/gtagjs/events
11 | export const event = ({ action, category, label, value }) => {
12 | window.gtag('event', action, {
13 | event_category: category,
14 | event_label: label,
15 | value: value,
16 | });
17 | };
18 |
--------------------------------------------------------------------------------
/next-env.d.ts:
--------------------------------------------------------------------------------
1 | ///
2 | ///
3 |
--------------------------------------------------------------------------------
/next.config.js:
--------------------------------------------------------------------------------
1 | const withBundleAnalyzer = require("@next/bundle-analyzer")({
2 | enabled: process.env.ANALYZE === "true",
3 | });
4 |
5 | module.exports = withBundleAnalyzer({
6 | distDir: "build",
7 | publicRuntimeConfig: {
8 | // add your public runtime environment variables here with NEXT_PUBLIC_*** prefix
9 | },
10 | webpack: (config) => {
11 | // extend your webpack configuration here
12 | return config;
13 | },
14 | });
15 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "tail-kit",
3 | "version": "1.0.0",
4 | "main": "index.js",
5 | "license": "MIT",
6 | "scripts": {
7 | "dev": "next dev",
8 | "build": "next build && next export",
9 | "start": "next start",
10 | "lint": "eslint '*/**/*.{js,ts,tsx}' --quiet --fix"
11 | },
12 | "devDependencies": {
13 | "@types/node": "^14.14.11",
14 | "@types/react": "^17.0.0",
15 | "@typescript-eslint/eslint-plugin": "^4.9.1",
16 | "@typescript-eslint/parser": "^4.9.1",
17 | "eslint": "^7.15.0",
18 | "eslint-config-prettier": "^7.0.0",
19 | "eslint-plugin-prettier": "^3.2.0",
20 | "eslint-plugin-react": "^7.21.5",
21 | "eslint-plugin-react-hooks": "^4.2.0",
22 | "prettier": "^2.2.1",
23 | "typescript": "^4.1.2"
24 | },
25 | "dependencies": {
26 | "@next/bundle-analyzer": "^10.0.4",
27 | "autoprefixer": "^10.4.13",
28 | "lodash": "^4.17.20",
29 | "next": "^10.0.3",
30 | "postcss": "^8.4.19",
31 | "postcss-import": "^13.0.0",
32 | "react": "^17.0.1",
33 | "react-device-detect": "^1.15.0",
34 | "react-dom": "^17.0.1",
35 | "react-live": "^2.2.3",
36 | "tailwindcss": "^3.2.4"
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/pages/_app.tsx:
--------------------------------------------------------------------------------
1 | import { FC, useEffect } from 'react';
2 | import { AppProps } from 'next/app';
3 | import '../global.css';
4 | import { useRouter } from 'next/dist/client/router';
5 | import * as gtag from '../lib/gtag';
6 |
7 | const App: FC = ({ Component, pageProps }: AppProps) => {
8 | const router = useRouter();
9 | useEffect(() => {
10 | const handleRouteChange = (url) => {
11 | gtag.pageview(url);
12 | };
13 | router.events.on('routeChangeComplete', handleRouteChange);
14 | return () => {
15 | router.events.off('routeChangeComplete', handleRouteChange);
16 | };
17 | }, [router.events]);
18 | return ;
19 | };
20 | export default App;
21 |
--------------------------------------------------------------------------------
/pages/_document.tsx:
--------------------------------------------------------------------------------
1 | import Document, { Html, Head, Main, NextScript } from 'next/document';
2 | import { GA_TRACKING_ID } from '../lib/gtag';
3 |
4 | export default class MyDocument extends Document {
5 | render() {
6 | return (
7 |
8 |
9 | {/* Global Site Tag (gtag.js) - Google Analytics */}
10 |
11 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | );
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/pages/components/avatar/index.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import AppLayout from '../../../components/layout/AppLayout';
3 | import ComponentLayout from '../../../components/layout/ComponentLayout';
4 | import SectionHeader from '../../../components/site/header/SectionHeader';
5 | import Avatar from '../../../components/kit/components/elements/avatars/Avatar';
6 | import MultipleAvatar from '../../../components/kit/components/elements/avatars/MultipleAvatar';
7 |
8 | const AvatarPage: FC = () => {
9 | return (
10 |
14 |
15 | } component={Avatar} />
16 | } component={Avatar} />
17 | } component={Avatar} />
18 | } component={Avatar} />
19 | } component={Avatar} />
20 | } component={Avatar} />
21 | } component={MultipleAvatar} />
22 | }
26 | component={MultipleAvatar}
27 | />
28 | }
31 | component={MultipleAvatar}
32 | />
33 | }
37 | component={MultipleAvatar}
38 | />
39 |
40 | );
41 | };
42 |
43 | export default AvatarPage;
44 |
--------------------------------------------------------------------------------
/pages/components/index.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import AppLayout from '../../components/layout/AppLayout';
3 | import Elements from '../../components/kit/components/elements';
4 | import Forms from '../../components/kit/components/form';
5 | import Commerce from '../../components/kit/components/commerce';
6 | import Navigation from '../../components/kit/components/navigation';
7 | import Pagesection from '../../components/kit/components/pagesection';
8 | import ListPage from '../../components/kit/components/list';
9 |
10 | const ComponentsPage: FC = () => {
11 | return (
12 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | );
25 | };
26 |
27 | export default ComponentsPage;
28 |
--------------------------------------------------------------------------------
/pages/components/inputselect/index.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import AppLayout from '../../../components/layout/AppLayout';
3 | import ComponentLayout from '../../../components/layout/ComponentLayout';
4 | import SectionHeader from '../../../components/site/header/SectionHeader';
5 | import CustomSelect from '../../../components/kit/components/form/select/CustomSelect';
6 | import Select from '../../../components/kit/components/form/select/Select';
7 | import SelectWithLabel from '../../../components/kit/components/form/select/SelectWithLabel';
8 |
9 | const InputTextPage: FC = () => {
10 | return (
11 |
15 |
16 | } component={Select} />
17 | } component={SelectWithLabel} />
18 | }
22 | component={CustomSelect}
23 | />
24 | }
28 | component={CustomSelect}
29 | />
30 |
31 | );
32 | };
33 |
34 | export default InputTextPage;
35 |
--------------------------------------------------------------------------------
/pages/components/shopping/index.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import AppLayout from '../../../components/layout/AppLayout';
3 | import ComponentLayout from '../../../components/layout/ComponentLayout';
4 | import SectionHeader from '../../../components/site/header/SectionHeader';
5 | import ShoppingDetailsCard from '../../../components/kit/components/commerce/shopping/ShoppingDetailsCard';
6 | import ShoppingColorChoice from '../../../components/kit/components/commerce/shopping/ShoppingColorChoice';
7 | import MultipleShoppingCard from '../../../components/kit/components/commerce/shopping/MultipleShoppingCard';
8 | import ClassicShoppingCard from '../../../components/kit/components/commerce/shopping/ClassicShoppingCard';
9 | import SimpleShoppingCard from '../../../components/kit/components/commerce/shopping/SimpleShoppingCard';
10 | import ShippedCard from '../../../components/kit/components/commerce/shopping/ShippedCard';
11 | import ProductWithEval from '../../../components/kit/components/commerce/shopping/ProductWithEval';
12 |
13 | const ShoppingPage: FC = () => {
14 | return (
15 |
16 |
17 |
18 | } component={SimpleShoppingCard} />
19 |
20 | } component={ShoppingColorChoice} />
21 | } component={MultipleShoppingCard} />
22 | } component={ProductWithEval} />
23 | }
27 | component={ClassicShoppingCard}
28 | withPub
29 | />
30 | } component={ShoppingDetailsCard} />
31 | } component={ShippedCard} />
32 |
33 | );
34 | };
35 |
36 | export default ShoppingPage;
37 |
--------------------------------------------------------------------------------
/pages/components/skeleton/index.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import AppLayout from '../../../components/layout/AppLayout';
3 | import ComponentLayout from '../../../components/layout/ComponentLayout';
4 | import SectionHeader from '../../../components/site/header/SectionHeader';
5 | import SimpleSkeleton from '../../../components/kit/components/elements/skeleton/SimpleSkeleton';
6 | import PictureAndTextSkeleton from '../../../components/kit/components/elements/skeleton/PictureAndTextSkeleton';
7 | import HorizontalSkeletonCard from '../../../components/kit/components/elements/skeleton/HorizontalSkeletonCard';
8 |
9 | const ComponentsPage: FC = () => {
10 | return (
11 |
15 |
16 | } component={SimpleSkeleton} />
17 | }
21 | component={PictureAndTextSkeleton}
22 | />
23 | }
27 | component={HorizontalSkeletonCard}
28 | />
29 |
30 | );
31 | };
32 |
33 | export default ComponentsPage;
34 |
--------------------------------------------------------------------------------
/pages/components/table/index.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import AppLayout from '../../../components/layout/AppLayout';
3 | import ComponentLayout from '../../../components/layout/ComponentLayout';
4 | import SectionHeader from '../../../components/site/header/SectionHeader';
5 | import Table from '../../../components/kit/components/list/table/Table';
6 | import ComplexTable from '../../../components/kit/components/list/table/ComplexTable';
7 |
8 | const TablesPage: FC = () => {
9 | return (
10 |
11 |
12 | } component={Table} />
13 | } component={Table} />
14 | } component={ComplexTable} />
15 | }
19 | component={ComplexTable}
20 | />
21 | }
25 | component={ComplexTable}
26 | />
27 | }
32 | component={ComplexTable}
33 | />
34 |
35 | );
36 | };
37 |
38 | export default TablesPage;
39 |
--------------------------------------------------------------------------------
/pages/components/tabs/index.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import AppLayout from '../../../components/layout/AppLayout';
3 | import ComponentLayout from '../../../components/layout/ComponentLayout';
4 | import SectionHeader from '../../../components/site/header/SectionHeader';
5 | import BasicTabs from '../../../components/kit/components/elements/tabs/BasicTabs';
6 | import BasicTabsDisabled from '../../../components/kit/components/elements/tabs/BasicTabsDisabled';
7 | import BasicTabsUnderline from '../../../components/kit/components/elements/tabs/BasicTabsUnderline';
8 | const ComponentsPage: FC = () => {
9 | return (
10 |
14 |
15 | } component={BasicTabs} />
16 | }
19 | component={BasicTabsDisabled}
20 | />
21 | }
24 | component={BasicTabsUnderline}
25 | />
26 |
27 | );
28 | };
29 |
30 | export default ComponentsPage;
31 |
--------------------------------------------------------------------------------
/pages/components/toggle/index.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import AppLayout from '../../../components/layout/AppLayout';
3 | import ComponentLayout from '../../../components/layout/ComponentLayout';
4 | import SectionHeader from '../../../components/site/header/SectionHeader';
5 | import Checkbox from '../../../components/kit/components/form/toggle/Checkbox';
6 | import MultipleToggle from '../../../components/kit/components/form/toggle/MultipleToggle';
7 | import Radio from '../../../components/kit/components/form/toggle/Radio';
8 |
9 | const TogglePage: FC = () => {
10 | return (
11 |
15 |
16 | } component={Checkbox} />
17 | null} />}
21 | component={MultipleToggle}
22 | />
23 | } component={Radio} />
24 |
25 | );
26 | };
27 |
28 | export default TogglePage;
29 |
--------------------------------------------------------------------------------
/pages/templates/dashboard/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import AppLayout from '../../../components/layout/AppLayout';
3 | import SectionHeader from '../../../components/site/header/SectionHeader';
4 | import ComponentLayout from '../../../components/layout/ComponentLayout';
5 | import SimpleProjectDashboard from '../../../components/kit/templates/dashboardPages/projectDashboard/SimpleProjectDashboard';
6 |
7 | const DashBoardTemplates = () => {
8 | return (
9 |
13 |
14 |
15 | }
22 | component={SimpleProjectDashboard}
23 | />
24 |
25 | );
26 | };
27 |
28 | export default DashBoardTemplates;
29 |
--------------------------------------------------------------------------------
/pages/templates/datadashboard/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import AppLayout from '../../../components/layout/AppLayout';
3 | import SectionHeader from '../../../components/site/header/SectionHeader';
4 | import ComponentLayout from '../../../components/layout/ComponentLayout';
5 | import KpiProject from '../../../components/kit/templates/dashboardPages/dataDashboard/KpitDashboard';
6 |
7 | const dDtadashboardTemplates = () => {
8 | return (
9 |
13 |
14 |
15 | }
21 | withPub
22 | component={KpiProject}
23 | />
24 |
25 | );
26 | };
27 |
28 | export default dDtadashboardTemplates;
29 |
--------------------------------------------------------------------------------
/pages/templates/errors404/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Pictures404 from '../../../components/kit/templates/errorsPages/error404/Pictures404';
3 | import Simple404 from '../../../components/kit/templates/errorsPages/error404/Simple404';
4 | import AppLayout from '../../../components/layout/AppLayout';
5 | import ComponentLayout from '../../../components/layout/ComponentLayout';
6 | import SectionHeader from '../../../components/site/header/SectionHeader';
7 | import Background404 from '../../../components/kit/templates/errorsPages/error404/Background404';
8 |
9 | const The404pages = () => {
10 | return (
11 |
15 |
16 |
17 | } component={Simple404} />
18 | }
22 | component={Background404}
23 | />
24 | }
28 | component={Pictures404}
29 | />
30 |
31 | );
32 | };
33 |
34 | export default The404pages;
35 |
--------------------------------------------------------------------------------
/pages/templates/folio/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import AppLayout from '../../../components/layout/AppLayout';
3 | import SectionHeader from '../../../components/site/header/SectionHeader';
4 | import ComponentLayout from '../../../components/layout/ComponentLayout';
5 | import SimpleFolioHome from '../../../components/kit/templates/homePages/folio/SimpleFolioHome';
6 |
7 | const Folio = () => {
8 | return (
9 |
13 |
14 |
15 | }
20 | withPub
21 | component={SimpleFolioHome}
22 | />
23 |
24 | );
25 | };
26 |
27 | export default Folio;
28 |
--------------------------------------------------------------------------------
/pages/templates/getStarted/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import AppLayout from '../../../components/layout/AppLayout';
3 | import SectionHeader from '../../../components/site/header/SectionHeader';
4 | import ComponentLayout from '../../../components/layout/ComponentLayout';
5 | import NaturalHome from '../../../components/kit/templates/homePages/simplePage/NaturalHome';
6 | import Natural2Home from '../../../components/kit/templates/homePages/simplePage/Natural2Home';
7 | import Natural3Home from '../../../components/kit/templates/homePages/simplePage/Natural3Home';
8 |
9 | const HomePage = () => {
10 | return (
11 |
15 |
16 |
17 | }
21 | component={NaturalHome}
22 | />
23 | }
27 | component={Natural2Home}
28 | />
29 | }
33 | withPub
34 | component={Natural3Home}
35 | />
36 |
37 | );
38 | };
39 |
40 | export default HomePage;
41 |
--------------------------------------------------------------------------------
/pages/templates/index.tsx:
--------------------------------------------------------------------------------
1 | import React, { FC } from 'react';
2 | import AppLayout from '../../components/layout/AppLayout';
3 | import HomePage from '../../components/kit/templates/homePages';
4 | import ErrorPages from '../../components/kit/templates/errorsPages';
5 | import DashboardPages from '../../components/kit/templates/dashboardPages';
6 |
7 | const ComponentsPage: FC = () => {
8 | return (
9 |
14 |
15 |
16 |
17 |
18 | );
19 | };
20 |
21 | export default ComponentsPage;
22 |
--------------------------------------------------------------------------------
/pages/templates/simpleHome/index.tsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import AppLayout from '../../../components/layout/AppLayout';
3 | import SectionHeader from '../../../components/site/header/SectionHeader';
4 | import ComponentLayout from '../../../components/layout/ComponentLayout';
5 | import TailkitHome from '../../../components/kit/templates/homePages/simplePage/TailkitHome';
6 | import WatchLandingPage from '../../../components/kit/templates/homePages/simplePage/Watch';
7 | import NaturalHome from '../../../components/kit/templates/homePages/simplePage/NaturalHome';
8 | import Natural2Home from '../../../components/kit/templates/homePages/simplePage/Natural2Home';
9 | import NextJs from '../../../components/kit/templates/homePages/simplePage/NextJSHome';
10 |
11 | const HomePage = () => {
12 | return (
13 |
17 |
18 | }
22 | component={TailkitHome}
23 | />
24 | }
29 | component={WatchLandingPage}
30 | withPub
31 | />
32 | } component={NextJs} />
33 |
34 | );
35 | };
36 |
37 | export default HomePage;
38 |
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: ['postcss-import', 'tailwindcss', 'autoprefixer'],
3 | };
4 |
--------------------------------------------------------------------------------
/public/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/.DS_Store
--------------------------------------------------------------------------------
/public/ads.txt:
--------------------------------------------------------------------------------
1 | google.com, pub-9198515375847190, DIRECT, f08c47fec0942fa0
--------------------------------------------------------------------------------
/public/banner.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/banner.jpg
--------------------------------------------------------------------------------
/public/dashboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/dashboard.png
--------------------------------------------------------------------------------
/public/demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/demo.gif
--------------------------------------------------------------------------------
/public/home.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/home.png
--------------------------------------------------------------------------------
/public/icons/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/icons/.DS_Store
--------------------------------------------------------------------------------
/public/icons/check-circle.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/icons/check.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/public/icons/rocket.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/icons/rocket.png
--------------------------------------------------------------------------------
/public/images/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/.DS_Store
--------------------------------------------------------------------------------
/public/images/blog/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/blog/.DS_Store
--------------------------------------------------------------------------------
/public/images/blog/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/blog/1.jpg
--------------------------------------------------------------------------------
/public/images/blog/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/blog/2.jpg
--------------------------------------------------------------------------------
/public/images/blog/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/blog/3.jpg
--------------------------------------------------------------------------------
/public/images/blog/4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/blog/4.jpg
--------------------------------------------------------------------------------
/public/images/blog/5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/blog/5.jpg
--------------------------------------------------------------------------------
/public/images/blog/6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/blog/6.jpg
--------------------------------------------------------------------------------
/public/images/car/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/car/.DS_Store
--------------------------------------------------------------------------------
/public/images/car/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/car/1.jpg
--------------------------------------------------------------------------------
/public/images/car/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/car/2.jpg
--------------------------------------------------------------------------------
/public/images/food/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/food/.DS_Store
--------------------------------------------------------------------------------
/public/images/food/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/food/1.jpg
--------------------------------------------------------------------------------
/public/images/food/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/food/2.jpg
--------------------------------------------------------------------------------
/public/images/food/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/food/3.jpg
--------------------------------------------------------------------------------
/public/images/landscape/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/landscape/.DS_Store
--------------------------------------------------------------------------------
/public/images/landscape/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/landscape/1.jpg
--------------------------------------------------------------------------------
/public/images/landscape/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/landscape/2.jpg
--------------------------------------------------------------------------------
/public/images/landscape/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/landscape/3.jpg
--------------------------------------------------------------------------------
/public/images/landscape/4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/landscape/4.jpg
--------------------------------------------------------------------------------
/public/images/object/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/object/.DS_Store
--------------------------------------------------------------------------------
/public/images/object/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/object/1.png
--------------------------------------------------------------------------------
/public/images/object/10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/object/10.png
--------------------------------------------------------------------------------
/public/images/object/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/object/2.png
--------------------------------------------------------------------------------
/public/images/object/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/object/3.png
--------------------------------------------------------------------------------
/public/images/object/4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/object/4.jpg
--------------------------------------------------------------------------------
/public/images/object/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/object/5.png
--------------------------------------------------------------------------------
/public/images/object/5.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/object/5.webp
--------------------------------------------------------------------------------
/public/images/object/6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/object/6.png
--------------------------------------------------------------------------------
/public/images/object/7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/object/7.png
--------------------------------------------------------------------------------
/public/images/object/8.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/object/8.jpg
--------------------------------------------------------------------------------
/public/images/object/9.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/object/9.jpg
--------------------------------------------------------------------------------
/public/images/person/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/person/.DS_Store
--------------------------------------------------------------------------------
/public/images/person/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/person/1.jpg
--------------------------------------------------------------------------------
/public/images/person/10.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/person/10.jpg
--------------------------------------------------------------------------------
/public/images/person/11.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/person/11.webp
--------------------------------------------------------------------------------
/public/images/person/2.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/person/2.jpeg
--------------------------------------------------------------------------------
/public/images/person/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/person/3.jpg
--------------------------------------------------------------------------------
/public/images/person/4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/person/4.jpg
--------------------------------------------------------------------------------
/public/images/person/5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/person/5.jpg
--------------------------------------------------------------------------------
/public/images/person/6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/person/6.jpg
--------------------------------------------------------------------------------
/public/images/person/7.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/person/7.jpg
--------------------------------------------------------------------------------
/public/images/person/8.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/person/8.jpg
--------------------------------------------------------------------------------
/public/images/person/9.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/person/9.jpg
--------------------------------------------------------------------------------
/public/images/sections/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/.DS_Store
--------------------------------------------------------------------------------
/public/images/sections/404.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/404.png
--------------------------------------------------------------------------------
/public/images/sections/alerte.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/alerte.png
--------------------------------------------------------------------------------
/public/images/sections/avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/avatar.png
--------------------------------------------------------------------------------
/public/images/sections/badges.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/badges.png
--------------------------------------------------------------------------------
/public/images/sections/blog.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/blog.png
--------------------------------------------------------------------------------
/public/images/sections/button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/button.png
--------------------------------------------------------------------------------
/public/images/sections/coming.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/coming.gif
--------------------------------------------------------------------------------
/public/images/sections/cta.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/cta.png
--------------------------------------------------------------------------------
/public/images/sections/dashboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/dashboard.png
--------------------------------------------------------------------------------
/public/images/sections/data.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/data.png
--------------------------------------------------------------------------------
/public/images/sections/datadashboard.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/datadashboard.png
--------------------------------------------------------------------------------
/public/images/sections/ddm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/ddm.png
--------------------------------------------------------------------------------
/public/images/sections/faq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/faq.png
--------------------------------------------------------------------------------
/public/images/sections/feature.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/feature.png
--------------------------------------------------------------------------------
/public/images/sections/folio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/folio.png
--------------------------------------------------------------------------------
/public/images/sections/folio.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/folio.webp
--------------------------------------------------------------------------------
/public/images/sections/footer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/footer.png
--------------------------------------------------------------------------------
/public/images/sections/header.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/header.png
--------------------------------------------------------------------------------
/public/images/sections/homePage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/homePage.png
--------------------------------------------------------------------------------
/public/images/sections/homePage.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/homePage.webp
--------------------------------------------------------------------------------
/public/images/sections/homePage2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/homePage2.png
--------------------------------------------------------------------------------
/public/images/sections/homePage2.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/homePage2.webp
--------------------------------------------------------------------------------
/public/images/sections/homePage3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/homePage3.png
--------------------------------------------------------------------------------
/public/images/sections/homePage3.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/homePage3.webp
--------------------------------------------------------------------------------
/public/images/sections/homePage4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/homePage4.png
--------------------------------------------------------------------------------
/public/images/sections/homePage4.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/homePage4.webp
--------------------------------------------------------------------------------
/public/images/sections/homePage5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/homePage5.png
--------------------------------------------------------------------------------
/public/images/sections/homePage5.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/homePage5.webp
--------------------------------------------------------------------------------
/public/images/sections/input.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/input.png
--------------------------------------------------------------------------------
/public/images/sections/list.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/list.png
--------------------------------------------------------------------------------
/public/images/sections/login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/login.png
--------------------------------------------------------------------------------
/public/images/sections/pricing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/pricing.png
--------------------------------------------------------------------------------
/public/images/sections/profile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/profile.png
--------------------------------------------------------------------------------
/public/images/sections/progress.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/progress.png
--------------------------------------------------------------------------------
/public/images/sections/select.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/select.png
--------------------------------------------------------------------------------
/public/images/sections/shopping.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/shopping.png
--------------------------------------------------------------------------------
/public/images/sections/sidebar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/sidebar.png
--------------------------------------------------------------------------------
/public/images/sections/skeleton.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/skeleton.png
--------------------------------------------------------------------------------
/public/images/sections/table.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/table.png
--------------------------------------------------------------------------------
/public/images/sections/tabs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/tabs.png
--------------------------------------------------------------------------------
/public/images/sections/team.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/team.png
--------------------------------------------------------------------------------
/public/images/sections/testimonial.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/testimonial.png
--------------------------------------------------------------------------------
/public/images/sections/toggle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/images/sections/toggle.png
--------------------------------------------------------------------------------
/public/pub.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/pub.mp4
--------------------------------------------------------------------------------
/public/request.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/request.png
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Allow: /
3 | Allow: /sitemap.htm
4 | Sitemap: https://www.tailwind-kit.com/sitemap.xml
5 |
--------------------------------------------------------------------------------
/public/template.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/template.png
--------------------------------------------------------------------------------
/public/template2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Charlie85270/tail-kit/80efd91e8e40fd6b3e0f20fd0a00dd7614593fa9/public/template2.png
--------------------------------------------------------------------------------
/pull_request_template.md:
--------------------------------------------------------------------------------
1 | Hi and huge thanks for your contribution !
2 |
3 | If you add a new component/template, or modify the core of the app please verify that you have check if :
4 |
5 | - [x] A similar item does not already exist
6 | - [x] Your item is in the right category
7 | - [x] The sitemap.xml is up to date (for new section added)
8 | - [x] My item is logically grouped below similar items
9 | - [x] The content of my item is realistic (avoid lorem ipsum)
10 | - [x] All images use in my item are serve locally and as light as possible (use [next/image](https://nextjs.org/docs/api-reference/next/image "next/image") for optimization )
11 | - [x] If possible, provide a dark implementation of the item
12 | - [x] I have read and followed the [contribution guidelines](.github/CONTRIBUTING.md)
13 |
14 | For more information see the [contribution guidelines](.github/CONTRIBUTING.md)
15 |
--------------------------------------------------------------------------------
/tailwind.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | important: true,
3 | // Active dark mode on class basis
4 | darkMode: 'class',
5 | i18n: {
6 | locales: ['en-US'],
7 | defaultLocale: 'en-US',
8 | },
9 | purge: {
10 | content: ['./pages/**/*.tsx', './components/**/*.tsx'],
11 | // These options are passed through directly to PurgeCSS
12 | },
13 | theme: {
14 | extend: {
15 | backgroundImage: (theme) => ({
16 | check: "url('/icons/check.svg')",
17 | landscape: "url('/images/landscape/2.jpg')",
18 | }),
19 | },
20 | },
21 |
22 | plugins: [],
23 | future: {
24 | purgeLayersByDefault: true,
25 | },
26 | };
27 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "target": "es5",
4 | "lib": [
5 | "dom",
6 | "dom.iterable",
7 | "esnext"
8 | ],
9 | "allowJs": true,
10 | "skipLibCheck": true,
11 | "strict": false,
12 | "forceConsistentCasingInFileNames": true,
13 | "noEmit": true,
14 | "sourceMap": true,
15 | "esModuleInterop": true,
16 | "module": "esnext",
17 | "moduleResolution": "node",
18 | "resolveJsonModule": true,
19 | "isolatedModules": true,
20 | "jsx": "preserve"
21 | },
22 | "include": [
23 | "next-env.d.ts",
24 | "**/*.ts",
25 | "**/*.tsx"
26 | ],
27 | "exclude": [
28 | "node_modules"
29 | ]
30 | }
--------------------------------------------------------------------------------
/utils/Utils.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * return indentation for a level
3 | * @param level
4 | */
5 | const getIndent = (level) => {
6 | let result = '',
7 | i = level * 4;
8 | if (level < 0) {
9 | throw 'Level is below 0';
10 | }
11 | while (i--) {
12 | result += ' ';
13 | }
14 | return result;
15 | };
16 |
17 | /**
18 | * Format and beautify html output
19 | * @param html the html to format
20 | */
21 | export const formatHtml = (html: string) => {
22 | html = html.trim();
23 | const tokens = html.split(/);
24 | let result = '',
25 | indentLevel = 0;
26 |
27 | for (let i = 0, l = tokens.length; i < l; i++) {
28 | const parts = tokens[i].split(/>/);
29 | if (parts.length === 2) {
30 | if (tokens[i][0] === '/') {
31 | indentLevel--;
32 | }
33 | result += getIndent(indentLevel);
34 | if (tokens[i][0] !== '/') {
35 | indentLevel++;
36 | }
37 |
38 | if (i > 0) {
39 | result += '<';
40 | }
41 |
42 | result += parts[0].trim() + '>\n';
43 | if (parts[1].trim() !== '') {
44 | result += getIndent(indentLevel) + parts[1].trim().replace(/\s+/g, ' ') + '\n';
45 | }
46 |
47 | if (parts[0].match(/^(img|hr|br)/)) {
48 | indentLevel--;
49 | }
50 | } else {
51 | result += getIndent(indentLevel) + parts[0] + '\n';
52 | }
53 | }
54 | return result;
55 | };
56 |
--------------------------------------------------------------------------------