├── .gitignore ├── LICENSE.md ├── README.md ├── banner.png ├── eslint.config.js ├── index.html ├── package-lock.json ├── package.json ├── postcss.config.js ├── public ├── favicon.png └── images │ ├── brand │ ├── brand-01.svg │ ├── brand-02.svg │ ├── brand-03.svg │ ├── brand-04.svg │ ├── brand-05.svg │ ├── brand-06.svg │ ├── brand-07.svg │ ├── brand-08.svg │ ├── brand-09.svg │ ├── brand-10.svg │ ├── brand-11.svg │ ├── brand-12.svg │ ├── brand-13.svg │ ├── brand-14.svg │ └── brand-15.svg │ ├── cards │ ├── card-01.jpg │ ├── card-01.png │ ├── card-02.jpg │ ├── card-02.png │ ├── card-03.jpg │ └── card-03.png │ ├── carousel │ ├── carousel-01.png │ ├── carousel-02.png │ ├── carousel-03.png │ └── carousel-04.png │ ├── chat │ └── chat.jpg │ ├── country │ ├── country-01.svg │ ├── country-02.svg │ ├── country-03.svg │ ├── country-04.svg │ ├── country-05.svg │ ├── country-06.svg │ ├── country-07.svg │ └── country-08.svg │ ├── error │ ├── 404-dark.svg │ ├── 404.svg │ ├── 500-dark.svg │ ├── 500.svg │ ├── 503-dark.svg │ ├── 503.svg │ ├── maintenance-dark.svg │ ├── maintenance.svg │ ├── success-dark.svg │ └── success.svg │ ├── favicon.ico │ ├── grid-image │ ├── image-01.png │ ├── image-02.png │ ├── image-03.png │ ├── image-04.png │ ├── image-05.png │ └── image-06.png │ ├── icons │ ├── file-image-dark.svg │ ├── file-image.svg │ ├── file-pdf-dark.svg │ ├── file-pdf.svg │ ├── file-video-dark.svg │ └── file-video.svg │ ├── logo │ ├── auth-logo.svg │ ├── logo-dark.svg │ ├── logo-icon.svg │ └── logo.svg │ ├── product │ ├── product-01.jpg │ ├── product-02.jpg │ ├── product-03.jpg │ ├── product-04.jpg │ └── product-05.jpg │ ├── shape │ └── grid-01.svg │ ├── task │ ├── google-drive.svg │ ├── pdf.svg │ ├── task.jpg │ └── task.png │ ├── user │ ├── owner.jpg │ ├── user-01.jpg │ ├── user-02.jpg │ ├── user-03.jpg │ ├── user-04.jpg │ ├── user-05.jpg │ ├── user-06.jpg │ ├── user-07.jpg │ ├── user-08.jpg │ ├── user-09.jpg │ ├── user-10.jpg │ ├── user-11.jpg │ ├── user-12.jpg │ ├── user-13.jpg │ ├── user-14.jpg │ ├── user-15.jpg │ ├── user-16.jpg │ ├── user-17.jpg │ ├── user-18.jpg │ ├── user-19.jpg │ ├── user-20.jpg │ ├── user-21.jpg │ ├── user-22.jpg │ ├── user-23.jpg │ ├── user-24.jpg │ ├── user-25.jpg │ ├── user-26.jpg │ ├── user-27.jpg │ ├── user-28.jpg │ ├── user-29.jpg │ ├── user-30.jpg │ ├── user-31.jpg │ ├── user-32.jpg │ ├── user-33.jpg │ ├── user-34.jpg │ ├── user-35.jpg │ ├── user-36.jpg │ └── user-37.jpg │ └── video-thumb │ ├── thumb-16.png │ └── youtube-icon-84.svg ├── src ├── App.tsx ├── components │ ├── UserProfile │ │ ├── UserAddressCard.tsx │ │ ├── UserInfoCard.tsx │ │ └── UserMetaCard.tsx │ ├── auth │ │ ├── SignInForm.tsx │ │ └── SignUpForm.tsx │ ├── charts │ │ ├── bar │ │ │ └── BarChartOne.tsx │ │ └── line │ │ │ └── LineChartOne.tsx │ ├── common │ │ ├── ChartTab.tsx │ │ ├── ComponentCard.tsx │ │ ├── GridShape.tsx │ │ ├── PageBreadCrumb.tsx │ │ ├── PageMeta.tsx │ │ ├── ScrollToTop.tsx │ │ ├── ThemeToggleButton.tsx │ │ └── ThemeTogglerTwo.tsx │ ├── ecommerce │ │ ├── CountryMap.tsx │ │ ├── DemographicCard.tsx │ │ ├── EcommerceMetrics.tsx │ │ ├── MonthlySalesChart.tsx │ │ ├── MonthlyTarget.tsx │ │ ├── RecentOrders.tsx │ │ └── StatisticsChart.tsx │ ├── form │ │ ├── Form.tsx │ │ ├── Label.tsx │ │ ├── MultiSelect.tsx │ │ ├── Select.tsx │ │ ├── date-picker.tsx │ │ ├── form-elements │ │ │ ├── CheckboxComponents.tsx │ │ │ ├── DefaultInputs.tsx │ │ │ ├── DropZone.tsx │ │ │ ├── FileInputExample.tsx │ │ │ ├── InputGroup.tsx │ │ │ ├── InputStates.tsx │ │ │ ├── RadioButtons.tsx │ │ │ ├── SelectInputs.tsx │ │ │ ├── TextAreaInput.tsx │ │ │ └── ToggleSwitch.tsx │ │ ├── group-input │ │ │ └── PhoneInput.tsx │ │ ├── input │ │ │ ├── Checkbox.tsx │ │ │ ├── FileInput.tsx │ │ │ ├── InputField.tsx │ │ │ ├── Radio.tsx │ │ │ ├── RadioSm.tsx │ │ │ └── TextArea.tsx │ │ └── switch │ │ │ └── Switch.tsx │ ├── header │ │ ├── Header.tsx │ │ ├── NotificationDropdown.tsx │ │ └── UserDropdown.tsx │ ├── tables │ │ └── BasicTables │ │ │ └── BasicTableOne.tsx │ └── ui │ │ ├── alert │ │ └── Alert.tsx │ │ ├── avatar │ │ └── Avatar.tsx │ │ ├── badge │ │ └── Badge.tsx │ │ ├── button │ │ └── Button.tsx │ │ ├── dropdown │ │ ├── Dropdown.tsx │ │ └── DropdownItem.tsx │ │ ├── images │ │ ├── ResponsiveImage.tsx │ │ ├── ThreeColumnImageGrid.tsx │ │ └── TwoColumnImageGrid.tsx │ │ ├── modal │ │ └── index.tsx │ │ ├── table │ │ └── index.tsx │ │ └── videos │ │ ├── AspectRatioVideo.tsx │ │ ├── FourIsToThree.tsx │ │ ├── OneIsToOne.tsx │ │ ├── SixteenIsToNine.tsx │ │ └── TwentyOneIsToNine.tsx ├── context │ ├── SidebarContext.tsx │ └── ThemeContext.tsx ├── hooks │ ├── useGoBack.ts │ └── useModal.ts ├── icons │ ├── alert-hexa.svg │ ├── alert.svg │ ├── angle-down.svg │ ├── angle-left.svg │ ├── angle-right.svg │ ├── angle-up.svg │ ├── arrow-down.svg │ ├── arrow-right.svg │ ├── arrow-up.svg │ ├── audio.svg │ ├── bolt.svg │ ├── box-cube.svg │ ├── box-line.svg │ ├── box.svg │ ├── calendar.svg │ ├── calender-line.svg │ ├── chat.svg │ ├── check-circle.svg │ ├── check-line.svg │ ├── chevron-down.svg │ ├── chevron-left.svg │ ├── chevron-up.svg │ ├── close-line.svg │ ├── close.svg │ ├── copy.svg │ ├── docs.svg │ ├── dollar-line.svg │ ├── download.svg │ ├── envelope.svg │ ├── eye-close.svg │ ├── eye.svg │ ├── file.svg │ ├── folder.svg │ ├── grid.svg │ ├── group.svg │ ├── horizontal-dots.svg │ ├── index.ts │ ├── info-error.svg │ ├── info-hexa.svg │ ├── info.svg │ ├── list.svg │ ├── lock.svg │ ├── mail-line.svg │ ├── moredot.svg │ ├── page.svg │ ├── paper-plane.svg │ ├── pencil.svg │ ├── pie-chart.svg │ ├── plug-in.svg │ ├── plus.svg │ ├── shooting-star.svg │ ├── table.svg │ ├── task-icon.svg │ ├── time.svg │ ├── trash.svg │ ├── user-circle.svg │ ├── user-line.svg │ └── videos.svg ├── index.css ├── layout │ ├── AppHeader.tsx │ ├── AppLayout.tsx │ ├── AppSidebar.tsx │ ├── Backdrop.tsx │ └── SidebarWidget.tsx ├── main.tsx ├── pages │ ├── AuthPages │ │ ├── AuthPageLayout.tsx │ │ ├── SignIn.tsx │ │ └── SignUp.tsx │ ├── Blank.tsx │ ├── Calendar.tsx │ ├── Charts │ │ ├── BarChart.tsx │ │ └── LineChart.tsx │ ├── Dashboard │ │ └── Home.tsx │ ├── Forms │ │ └── FormElements.tsx │ ├── OtherPage │ │ └── NotFound.tsx │ ├── Tables │ │ └── BasicTables.tsx │ ├── UiElements │ │ ├── Alerts.tsx │ │ ├── Avatars.tsx │ │ ├── Badges.tsx │ │ ├── Buttons.tsx │ │ ├── Images.tsx │ │ └── Videos.tsx │ └── UserProfiles.tsx ├── svg.d.ts └── vite-env.d.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 TailAdmin 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. 22 | -------------------------------------------------------------------------------- /banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/banner.png -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | import js from '@eslint/js' 2 | import globals from 'globals' 3 | import reactHooks from 'eslint-plugin-react-hooks' 4 | import reactRefresh from 'eslint-plugin-react-refresh' 5 | import tseslint from 'typescript-eslint' 6 | 7 | export default tseslint.config( 8 | { ignores: ['dist'] }, 9 | { 10 | extends: [js.configs.recommended, ...tseslint.configs.recommended], 11 | files: ['**/*.{ts,tsx}'], 12 | languageOptions: { 13 | ecmaVersion: 2020, 14 | globals: globals.browser, 15 | }, 16 | plugins: { 17 | 'react-hooks': reactHooks, 18 | 'react-refresh': reactRefresh, 19 | }, 20 | rules: { 21 | ...reactHooks.configs.recommended.rules, 22 | 'react-refresh/only-export-components': [ 23 | 'warn', 24 | { allowConstantExport: true }, 25 | ], 26 | }, 27 | }, 28 | ) 29 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tailadmin-react", 3 | "private": true, 4 | "version": "2.0.2", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc -b && vite build", 9 | "lint": "eslint .", 10 | "preview": "vite preview" 11 | }, 12 | "dependencies": { 13 | "@fullcalendar/core": "^6.1.15", 14 | "@fullcalendar/daygrid": "^6.1.15", 15 | "@fullcalendar/interaction": "^6.1.15", 16 | "@fullcalendar/list": "^6.1.15", 17 | "@fullcalendar/react": "^6.1.15", 18 | "@fullcalendar/timegrid": "^6.1.15", 19 | "@react-jvectormap/core": "^1.0.4", 20 | "@react-jvectormap/world": "^1.1.2", 21 | "apexcharts": "^4.1.0", 22 | "clsx": "^2.1.1", 23 | "flatpickr": "^4.6.13", 24 | "react": "^19.0.0", 25 | "react-apexcharts": "^1.7.0", 26 | "react-dnd": "^16.0.1", 27 | "react-dnd-html5-backend": "^16.0.1", 28 | "react-dom": "^19.0.0", 29 | "react-dropzone": "^14.3.5", 30 | "react-helmet-async": "^2.0.5", 31 | "react-router": "^7.1.5", 32 | "swiper": "^11.2.3", 33 | "tailwind-merge": "^3.0.1" 34 | }, 35 | "devDependencies": { 36 | "@eslint/js": "^9.19.0", 37 | "@tailwindcss/postcss": "^4.0.8", 38 | "@types/react": "^19.0.12", 39 | "@types/react-dom": "^19.0.4", 40 | "@vitejs/plugin-react": "^4.3.4", 41 | "eslint": "^9.19.0", 42 | "eslint-plugin-react-hooks": "^5.0.0", 43 | "eslint-plugin-react-refresh": "^0.4.18", 44 | "globals": "^15.14.0", 45 | "postcss": "^8.5.2", 46 | "tailwindcss": "^4.0.8", 47 | "typescript": "~5.7.2", 48 | "typescript-eslint": "^8.22.0", 49 | "vite": "^6.1.0", 50 | "vite-plugin-svgr": "^4.3.0" 51 | }, 52 | "overrides": { 53 | "react-helmet-async": { 54 | "react": "^16.8.0 || ^17 || ^18 || ^19" 55 | }, 56 | "@react-jvectormap/core": { 57 | "react": "^16.8.0 || ^17 || ^18 || ^19", 58 | "react-dom": "^16.8.0 || ^17 || ^18 || ^19" 59 | }, 60 | "@react-jvectormap/world": { 61 | "react": "^16.8.0 || ^17 || ^18 || ^19", 62 | "react-dom": "^16.8.0 || ^17 || ^18 || ^19" 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | '@tailwindcss/postcss': {}, 4 | }, 5 | } 6 | -------------------------------------------------------------------------------- /public/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/favicon.png -------------------------------------------------------------------------------- /public/images/brand/brand-01.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/images/brand/brand-02.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /public/images/brand/brand-03.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/brand/brand-05.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/images/brand/brand-06.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/images/brand/brand-07.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/images/brand/brand-09.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/brand/brand-10.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/images/brand/brand-11.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/images/brand/brand-12.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/images/brand/brand-13.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /public/images/brand/brand-14.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/images/brand/brand-15.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /public/images/cards/card-01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/cards/card-01.jpg -------------------------------------------------------------------------------- /public/images/cards/card-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/cards/card-01.png -------------------------------------------------------------------------------- /public/images/cards/card-02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/cards/card-02.jpg -------------------------------------------------------------------------------- /public/images/cards/card-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/cards/card-02.png -------------------------------------------------------------------------------- /public/images/cards/card-03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/cards/card-03.jpg -------------------------------------------------------------------------------- /public/images/cards/card-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/cards/card-03.png -------------------------------------------------------------------------------- /public/images/carousel/carousel-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/carousel/carousel-01.png -------------------------------------------------------------------------------- /public/images/carousel/carousel-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/carousel/carousel-02.png -------------------------------------------------------------------------------- /public/images/carousel/carousel-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/carousel/carousel-03.png -------------------------------------------------------------------------------- /public/images/carousel/carousel-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/carousel/carousel-04.png -------------------------------------------------------------------------------- /public/images/chat/chat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/chat/chat.jpg -------------------------------------------------------------------------------- /public/images/country/country-01.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /public/images/country/country-02.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /public/images/country/country-03.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /public/images/country/country-04.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /public/images/country/country-05.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /public/images/country/country-06.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /public/images/country/country-07.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /public/images/country/country-08.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /public/images/error/404-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /public/images/error/404.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /public/images/error/success.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /public/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/favicon.ico -------------------------------------------------------------------------------- /public/images/grid-image/image-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/grid-image/image-01.png -------------------------------------------------------------------------------- /public/images/grid-image/image-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/grid-image/image-02.png -------------------------------------------------------------------------------- /public/images/grid-image/image-03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/grid-image/image-03.png -------------------------------------------------------------------------------- /public/images/grid-image/image-04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/grid-image/image-04.png -------------------------------------------------------------------------------- /public/images/grid-image/image-05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/grid-image/image-05.png -------------------------------------------------------------------------------- /public/images/grid-image/image-06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/grid-image/image-06.png -------------------------------------------------------------------------------- /public/images/icons/file-image-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /public/images/icons/file-image.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /public/images/icons/file-video-dark.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/images/icons/file-video.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /public/images/product/product-01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/product/product-01.jpg -------------------------------------------------------------------------------- /public/images/product/product-02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/product/product-02.jpg -------------------------------------------------------------------------------- /public/images/product/product-03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/product/product-03.jpg -------------------------------------------------------------------------------- /public/images/product/product-04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/product/product-04.jpg -------------------------------------------------------------------------------- /public/images/product/product-05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/product/product-05.jpg -------------------------------------------------------------------------------- /public/images/task/pdf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /public/images/task/task.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/task/task.jpg -------------------------------------------------------------------------------- /public/images/task/task.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/task/task.png -------------------------------------------------------------------------------- /public/images/user/owner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/owner.jpg -------------------------------------------------------------------------------- /public/images/user/user-01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-01.jpg -------------------------------------------------------------------------------- /public/images/user/user-02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-02.jpg -------------------------------------------------------------------------------- /public/images/user/user-03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-03.jpg -------------------------------------------------------------------------------- /public/images/user/user-04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-04.jpg -------------------------------------------------------------------------------- /public/images/user/user-05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-05.jpg -------------------------------------------------------------------------------- /public/images/user/user-06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-06.jpg -------------------------------------------------------------------------------- /public/images/user/user-07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-07.jpg -------------------------------------------------------------------------------- /public/images/user/user-08.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-08.jpg -------------------------------------------------------------------------------- /public/images/user/user-09.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-09.jpg -------------------------------------------------------------------------------- /public/images/user/user-10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-10.jpg -------------------------------------------------------------------------------- /public/images/user/user-11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-11.jpg -------------------------------------------------------------------------------- /public/images/user/user-12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-12.jpg -------------------------------------------------------------------------------- /public/images/user/user-13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-13.jpg -------------------------------------------------------------------------------- /public/images/user/user-14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-14.jpg -------------------------------------------------------------------------------- /public/images/user/user-15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-15.jpg -------------------------------------------------------------------------------- /public/images/user/user-16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-16.jpg -------------------------------------------------------------------------------- /public/images/user/user-17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-17.jpg -------------------------------------------------------------------------------- /public/images/user/user-18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-18.jpg -------------------------------------------------------------------------------- /public/images/user/user-19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-19.jpg -------------------------------------------------------------------------------- /public/images/user/user-20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-20.jpg -------------------------------------------------------------------------------- /public/images/user/user-21.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-21.jpg -------------------------------------------------------------------------------- /public/images/user/user-22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-22.jpg -------------------------------------------------------------------------------- /public/images/user/user-23.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-23.jpg -------------------------------------------------------------------------------- /public/images/user/user-24.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-24.jpg -------------------------------------------------------------------------------- /public/images/user/user-25.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-25.jpg -------------------------------------------------------------------------------- /public/images/user/user-26.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-26.jpg -------------------------------------------------------------------------------- /public/images/user/user-27.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-27.jpg -------------------------------------------------------------------------------- /public/images/user/user-28.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-28.jpg -------------------------------------------------------------------------------- /public/images/user/user-29.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-29.jpg -------------------------------------------------------------------------------- /public/images/user/user-30.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-30.jpg -------------------------------------------------------------------------------- /public/images/user/user-31.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-31.jpg -------------------------------------------------------------------------------- /public/images/user/user-32.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-32.jpg -------------------------------------------------------------------------------- /public/images/user/user-33.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-33.jpg -------------------------------------------------------------------------------- /public/images/user/user-34.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-34.jpg -------------------------------------------------------------------------------- /public/images/user/user-35.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-35.jpg -------------------------------------------------------------------------------- /public/images/user/user-36.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-36.jpg -------------------------------------------------------------------------------- /public/images/user/user-37.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/user/user-37.jpg -------------------------------------------------------------------------------- /public/images/video-thumb/thumb-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TailAdmin/free-react-tailwind-admin-dashboard/79869aa5ac30573815fdeac1732a56bdf99b6f4f/public/images/video-thumb/thumb-16.png -------------------------------------------------------------------------------- /public/images/video-thumb/youtube-icon-84.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/components/charts/bar/BarChartOne.tsx: -------------------------------------------------------------------------------- 1 | import Chart from "react-apexcharts"; 2 | import { ApexOptions } from "apexcharts"; 3 | 4 | export default function BarChartOne() { 5 | const options: ApexOptions = { 6 | colors: ["#465fff"], 7 | chart: { 8 | fontFamily: "Outfit, sans-serif", 9 | type: "bar", 10 | height: 180, 11 | toolbar: { 12 | show: false, 13 | }, 14 | }, 15 | plotOptions: { 16 | bar: { 17 | horizontal: false, 18 | columnWidth: "39%", 19 | borderRadius: 5, 20 | borderRadiusApplication: "end", 21 | }, 22 | }, 23 | dataLabels: { 24 | enabled: false, 25 | }, 26 | stroke: { 27 | show: true, 28 | width: 4, 29 | colors: ["transparent"], 30 | }, 31 | xaxis: { 32 | categories: [ 33 | "Jan", 34 | "Feb", 35 | "Mar", 36 | "Apr", 37 | "May", 38 | "Jun", 39 | "Jul", 40 | "Aug", 41 | "Sep", 42 | "Oct", 43 | "Nov", 44 | "Dec", 45 | ], 46 | axisBorder: { 47 | show: false, 48 | }, 49 | axisTicks: { 50 | show: false, 51 | }, 52 | }, 53 | legend: { 54 | show: true, 55 | position: "top", 56 | horizontalAlign: "left", 57 | fontFamily: "Outfit", 58 | }, 59 | yaxis: { 60 | title: { 61 | text: undefined, 62 | }, 63 | }, 64 | grid: { 65 | yaxis: { 66 | lines: { 67 | show: true, 68 | }, 69 | }, 70 | }, 71 | fill: { 72 | opacity: 1, 73 | }, 74 | 75 | tooltip: { 76 | x: { 77 | show: false, 78 | }, 79 | y: { 80 | formatter: (val: number) => `${val}`, 81 | }, 82 | }, 83 | }; 84 | const series = [ 85 | { 86 | name: "Sales", 87 | data: [168, 385, 201, 298, 187, 195, 291, 110, 215, 390, 280, 112], 88 | }, 89 | ]; 90 | return ( 91 |
92 |
93 | 94 |
95 |
96 | ); 97 | } 98 | -------------------------------------------------------------------------------- /src/components/common/ChartTab.tsx: -------------------------------------------------------------------------------- 1 | import { useState } from "react"; 2 | 3 | const ChartTab: React.FC = () => { 4 | const [selected, setSelected] = useState< 5 | "optionOne" | "optionTwo" | "optionThree" 6 | >("optionOne"); 7 | 8 | const getButtonClass = (option: "optionOne" | "optionTwo" | "optionThree") => 9 | selected === option 10 | ? "shadow-theme-xs text-gray-900 dark:text-white bg-white dark:bg-gray-800" 11 | : "text-gray-500 dark:text-gray-400"; 12 | 13 | return ( 14 |
15 | 23 | 24 | 32 | 33 | 41 |
42 | ); 43 | }; 44 | 45 | export default ChartTab; 46 | -------------------------------------------------------------------------------- /src/components/common/ComponentCard.tsx: -------------------------------------------------------------------------------- 1 | interface ComponentCardProps { 2 | title: string; 3 | children: React.ReactNode; 4 | className?: string; // Additional custom classes for styling 5 | desc?: string; // Description text 6 | } 7 | 8 | const ComponentCard: React.FC = ({ 9 | title, 10 | children, 11 | className = "", 12 | desc = "", 13 | }) => { 14 | return ( 15 |
18 | {/* Card Header */} 19 |
20 |

21 | {title} 22 |

23 | {desc && ( 24 |

25 | {desc} 26 |

27 | )} 28 |
29 | 30 | {/* Card Body */} 31 |
32 |
{children}
33 |
34 |
35 | ); 36 | }; 37 | 38 | export default ComponentCard; 39 | -------------------------------------------------------------------------------- /src/components/common/GridShape.tsx: -------------------------------------------------------------------------------- 1 | export default function GridShape() { 2 | return ( 3 | <> 4 |
5 | grid 6 |
7 |
8 | grid 9 |
10 | 11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /src/components/common/PageBreadCrumb.tsx: -------------------------------------------------------------------------------- 1 | import { Link } from "react-router"; 2 | 3 | interface BreadcrumbProps { 4 | pageTitle: string; 5 | } 6 | 7 | const PageBreadcrumb: React.FC = ({ pageTitle }) => { 8 | return ( 9 |
10 |

14 | {pageTitle} 15 |

16 | 47 |
48 | ); 49 | }; 50 | 51 | export default PageBreadcrumb; 52 | -------------------------------------------------------------------------------- /src/components/common/PageMeta.tsx: -------------------------------------------------------------------------------- 1 | import { HelmetProvider, Helmet } from "react-helmet-async"; 2 | 3 | const PageMeta = ({ 4 | title, 5 | description, 6 | }: { 7 | title: string; 8 | description: string; 9 | }) => ( 10 | 11 | {title} 12 | 13 | 14 | ); 15 | 16 | export const AppWrapper = ({ children }: { children: React.ReactNode }) => ( 17 | {children} 18 | ); 19 | 20 | export default PageMeta; 21 | -------------------------------------------------------------------------------- /src/components/common/ScrollToTop.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect } from "react"; 2 | import { useLocation } from "react-router"; 3 | 4 | export function ScrollToTop() { 5 | const { pathname } = useLocation(); 6 | 7 | useEffect(() => { 8 | window.scrollTo({ 9 | top: 0, 10 | left: 0, 11 | behavior: "smooth", 12 | }); 13 | }, [pathname]); 14 | 15 | return null; 16 | } 17 | -------------------------------------------------------------------------------- /src/components/ecommerce/EcommerceMetrics.tsx: -------------------------------------------------------------------------------- 1 | import { 2 | ArrowDownIcon, 3 | ArrowUpIcon, 4 | BoxIconLine, 5 | GroupIcon, 6 | } from "../../icons"; 7 | import Badge from "../ui/badge/Badge"; 8 | 9 | export default function EcommerceMetrics() { 10 | return ( 11 |
12 | {/* */} 13 |
14 |
15 | 16 |
17 | 18 |
19 |
20 | 21 | Customers 22 | 23 |

24 | 3,782 25 |

26 |
27 | 28 | 29 | 11.01% 30 | 31 |
32 |
33 | {/* */} 34 | 35 | {/* */} 36 |
37 |
38 | 39 |
40 |
41 |
42 | 43 | Orders 44 | 45 |

46 | 5,359 47 |

48 |
49 | 50 | 51 | 52 | 9.05% 53 | 54 |
55 |
56 | {/* */} 57 |
58 | ); 59 | } 60 | -------------------------------------------------------------------------------- /src/components/form/Form.tsx: -------------------------------------------------------------------------------- 1 | import { FC, ReactNode, FormEvent } from "react"; 2 | 3 | interface FormProps { 4 | onSubmit: (event: FormEvent) => void; 5 | children: ReactNode; 6 | className?: string; 7 | } 8 | 9 | const Form: FC = ({ onSubmit, children, className }) => { 10 | return ( 11 |
{ 13 | event.preventDefault(); // Prevent default form submission 14 | onSubmit(event); 15 | }} 16 | className={` ${className}`} // Default spacing between form fields 17 | > 18 | {children} 19 |
20 | ); 21 | }; 22 | 23 | export default Form; 24 | -------------------------------------------------------------------------------- /src/components/form/Label.tsx: -------------------------------------------------------------------------------- 1 | import { FC, ReactNode } from "react"; 2 | import { twMerge } from "tailwind-merge"; 3 | import { clsx } from "clsx"; 4 | 5 | interface LabelProps { 6 | htmlFor?: string; 7 | children: ReactNode; 8 | className?: string; 9 | } 10 | 11 | const Label: FC = ({ htmlFor, children, className }) => { 12 | return ( 13 | 24 | ); 25 | }; 26 | 27 | export default Label; 28 | -------------------------------------------------------------------------------- /src/components/form/Select.tsx: -------------------------------------------------------------------------------- 1 | import { useState } from "react"; 2 | 3 | interface Option { 4 | value: string; 5 | label: string; 6 | } 7 | 8 | interface SelectProps { 9 | options: Option[]; 10 | placeholder?: string; 11 | onChange: (value: string) => void; 12 | className?: string; 13 | defaultValue?: string; 14 | } 15 | 16 | const Select: React.FC = ({ 17 | options, 18 | placeholder = "Select an option", 19 | onChange, 20 | className = "", 21 | defaultValue = "", 22 | }) => { 23 | // Manage the selected value 24 | const [selectedValue, setSelectedValue] = useState(defaultValue); 25 | 26 | const handleChange = (e: React.ChangeEvent) => { 27 | const value = e.target.value; 28 | setSelectedValue(value); 29 | onChange(value); // Trigger parent handler 30 | }; 31 | 32 | return ( 33 | 61 | ); 62 | }; 63 | 64 | export default Select; 65 | -------------------------------------------------------------------------------- /src/components/form/date-picker.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect } from "react"; 2 | import flatpickr from "flatpickr"; 3 | import "flatpickr/dist/flatpickr.css"; 4 | import Label from "./Label"; 5 | import { CalenderIcon } from "../../icons"; 6 | import Hook = flatpickr.Options.Hook; 7 | import DateOption = flatpickr.Options.DateOption; 8 | 9 | type PropsType = { 10 | id: string; 11 | mode?: "single" | "multiple" | "range" | "time"; 12 | onChange?: Hook | Hook[]; 13 | defaultDate?: DateOption; 14 | label?: string; 15 | placeholder?: string; 16 | }; 17 | 18 | export default function DatePicker({ 19 | id, 20 | mode, 21 | onChange, 22 | label, 23 | defaultDate, 24 | placeholder, 25 | }: PropsType) { 26 | useEffect(() => { 27 | const flatPickr = flatpickr(`#${id}`, { 28 | mode: mode || "single", 29 | static: true, 30 | monthSelectorType: "static", 31 | dateFormat: "Y-m-d", 32 | defaultDate, 33 | onChange, 34 | }); 35 | 36 | return () => { 37 | if (!Array.isArray(flatPickr)) { 38 | flatPickr.destroy(); 39 | } 40 | }; 41 | }, [mode, onChange, id, defaultDate]); 42 | 43 | return ( 44 |
45 | {label && } 46 | 47 |
48 | 53 | 54 | 55 | 56 | 57 |
58 |
59 | ); 60 | } 61 | -------------------------------------------------------------------------------- /src/components/form/form-elements/CheckboxComponents.tsx: -------------------------------------------------------------------------------- 1 | import { useState } from "react"; 2 | import ComponentCard from "../../common/ComponentCard"; 3 | import Checkbox from "../input/Checkbox"; 4 | 5 | export default function CheckboxComponents() { 6 | const [isChecked, setIsChecked] = useState(false); 7 | const [isCheckedTwo, setIsCheckedTwo] = useState(true); 8 | const [isCheckedDisabled, setIsCheckedDisabled] = useState(false); 9 | return ( 10 | 11 |
12 |
13 | 14 | 15 | Default 16 | 17 |
18 |
19 | 24 |
25 |
26 | 32 |
33 |
34 |
35 | ); 36 | } 37 | -------------------------------------------------------------------------------- /src/components/form/form-elements/FileInputExample.tsx: -------------------------------------------------------------------------------- 1 | import ComponentCard from "../../common/ComponentCard"; 2 | import FileInput from "../input/FileInput"; 3 | import Label from "../Label"; 4 | 5 | export default function FileInputExample() { 6 | const handleFileChange = (event: React.ChangeEvent) => { 7 | const file = event.target.files?.[0]; 8 | if (file) { 9 | console.log("Selected file:", file.name); 10 | } 11 | }; 12 | 13 | return ( 14 | 15 |
16 | 17 | 18 |
19 |
20 | ); 21 | } 22 | -------------------------------------------------------------------------------- /src/components/form/form-elements/InputGroup.tsx: -------------------------------------------------------------------------------- 1 | import ComponentCard from "../../common/ComponentCard"; 2 | import Label from "../Label"; 3 | import Input from "../input/InputField"; 4 | import { EnvelopeIcon } from "../../../icons"; 5 | import PhoneInput from "../group-input/PhoneInput"; 6 | 7 | export default function InputGroup() { 8 | const countries = [ 9 | { code: "US", label: "+1" }, 10 | { code: "GB", label: "+44" }, 11 | { code: "CA", label: "+1" }, 12 | { code: "AU", label: "+61" }, 13 | ]; 14 | const handlePhoneNumberChange = (phoneNumber: string) => { 15 | console.log("Updated phone number:", phoneNumber); 16 | }; 17 | return ( 18 | 19 |
20 |
21 | 22 |
23 | 28 | 29 | 30 | 31 |
32 |
33 |
34 | 35 | 41 |
{" "} 42 |
43 | 44 | 50 |
51 |
52 |
53 | ); 54 | } 55 | -------------------------------------------------------------------------------- /src/components/form/form-elements/InputStates.tsx: -------------------------------------------------------------------------------- 1 | import { useState } from "react"; 2 | import ComponentCard from "../../common/ComponentCard"; 3 | import Input from "../input/InputField"; 4 | import Label from "../Label"; 5 | export default function InputStates() { 6 | const [email, setEmail] = useState(""); 7 | const [emailTwo, setEmailTwo] = useState(""); 8 | const [error, setError] = useState(false); 9 | 10 | // Simulate a validation check 11 | const validateEmail = (value: string) => { 12 | const isValidEmail = 13 | /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(value); 14 | setError(!isValidEmail); 15 | return isValidEmail; 16 | }; 17 | 18 | const handleEmailChange = (e: React.ChangeEvent) => { 19 | const value = e.target.value; 20 | setEmail(value); 21 | validateEmail(value); 22 | }; 23 | const handleEmailTwoChange = (e: React.ChangeEvent) => { 24 | const value = e.target.value; 25 | setEmailTwo(value); 26 | validateEmail(value); 27 | }; 28 | return ( 29 | 33 |
34 | {/* Error Input */} 35 |
36 | 37 | 45 |
46 | 47 | {/* Success Input */} 48 |
49 | 50 | 58 |
59 | 60 | {/* Disabled Input */} 61 |
62 | 63 | 69 |
70 |
71 |
72 | ); 73 | } 74 | -------------------------------------------------------------------------------- /src/components/form/form-elements/RadioButtons.tsx: -------------------------------------------------------------------------------- 1 | import { useState } from "react"; 2 | import ComponentCard from "../../common/ComponentCard"; 3 | import Radio from "../input/Radio"; 4 | 5 | export default function RadioButtons() { 6 | const [selectedValue, setSelectedValue] = useState("option2"); 7 | 8 | const handleRadioChange = (value: string) => { 9 | setSelectedValue(value); 10 | }; 11 | return ( 12 | 13 |
14 | 22 | 30 | 39 |
40 |
41 | ); 42 | } 43 | -------------------------------------------------------------------------------- /src/components/form/form-elements/SelectInputs.tsx: -------------------------------------------------------------------------------- 1 | import { useState } from "react"; 2 | import ComponentCard from "../../common/ComponentCard"; 3 | import Label from "../Label"; 4 | import Select from "../Select"; 5 | import MultiSelect from "../MultiSelect"; 6 | 7 | export default function SelectInputs() { 8 | const options = [ 9 | { value: "marketing", label: "Marketing" }, 10 | { value: "template", label: "Template" }, 11 | { value: "development", label: "Development" }, 12 | ]; 13 | const handleSelectChange = (value: string) => { 14 | console.log("Selected value:", value); 15 | }; 16 | const [selectedValues, setSelectedValues] = useState([]); 17 | 18 | const multiOptions = [ 19 | { value: "1", text: "Option 1", selected: false }, 20 | { value: "2", text: "Option 2", selected: false }, 21 | { value: "3", text: "Option 3", selected: false }, 22 | { value: "4", text: "Option 4", selected: false }, 23 | { value: "5", text: "Option 5", selected: false }, 24 | ]; 25 | return ( 26 | 27 |
28 |
29 | 30 |