diff --git a/tailadmin/.DS_Store b/tailadmin/.DS_Store new file mode 100644 index 0000000..263f96e Binary files /dev/null and b/tailadmin/.DS_Store differ diff --git a/tailadmin/.browserslistrc b/tailadmin/.browserslistrc new file mode 100644 index 0000000..97bd415 --- /dev/null +++ b/tailadmin/.browserslistrc @@ -0,0 +1,4 @@ +last 1 version +>1% +maintained node versions +not dead \ No newline at end of file diff --git a/tailadmin/.gitignore b/tailadmin/.gitignore new file mode 100644 index 0000000..6285d17 --- /dev/null +++ b/tailadmin/.gitignore @@ -0,0 +1,3 @@ +node_modules +package-lock.json +/build \ No newline at end of file diff --git a/tailadmin/.prettierrc b/tailadmin/.prettierrc new file mode 100644 index 0000000..8b0bc4e --- /dev/null +++ b/tailadmin/.prettierrc @@ -0,0 +1,3 @@ +{ + "plugins": ["prettier-plugin-tailwindcss"] +} \ No newline at end of file diff --git a/tailadmin/.vscode/settings.json b/tailadmin/.vscode/settings.json new file mode 100644 index 0000000..4d6c166 --- /dev/null +++ b/tailadmin/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "css.validate": false, + "prettier.printWidth": 80 +} diff --git a/tailadmin/LICENSE b/tailadmin/LICENSE new file mode 100755 index 0000000..cb92d41 --- /dev/null +++ b/tailadmin/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 TailAdmin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/tailadmin/README.md b/tailadmin/README.md new file mode 100755 index 0000000..359609b --- /dev/null +++ b/tailadmin/README.md @@ -0,0 +1,156 @@ +# TailAdmin - Free Tailwind Admin Dashboard Template + +TailAdmin is a high-quality, open-source, and **free Tailwind CSS admin template** that is perfect for creating data-rich backends, +powerful web applications and dashboard-admin projects. + +![TailAdmin Dashboard Preview](./banner.png) + +## Overview + +TailAdmin provides essential UI components and layouts for building feature-rich, data-driven admin dashboards and control panels. It's built using: + +- HTML +- Alpine.js +- Tailwind CSS +- and Webpack (for bundling) + +### Quick Links + +- [✨ Visit Website](https://tailadmin.com) +- [📄 Documentation](https://tailadmin.com/docs) +- [⬇️ Download](https://tailadmin.com/download) +- [🖌️ Figma Design File (Community Edition)](https://www.figma.com/community/file/1463141366275764364) +- [⚡ Get PRO Version](https://tailadmin.com/pricing) + +### Demos + +- [Free Version](https://free-demo.tailadmin.com/) +- [Pro Version](https://demo.tailadmin.com) + +### Other Versions + +- [Next.js Version](https://github.com/TailAdmin/free-nextjs-admin-dashboard) +- [React.js Version](https://github.com/TailAdmin/free-react-tailwind-admin-dashboard) +- [Vue.js Version](https://github.com/TailAdmin/vue-tailwind-admin-dashboard) +- [Angular Version](https://github.com/TailAdmin/free-angular-tailwind-dashboard) +- [Laravel Version](https://github.com/TailAdmin/tailadmin-laravel) + +## Installation + +### Prerequisites + +To get started with TailAdmin, ensure you have the following prerequisites installed and set up: + +- Node.js 18.x or later + +### Cloning the Repository + +Clone the repository using the following command: + +```bash +git clone https://github.com/TailAdmin/tailadmin-free-tailwind-dashboard-template.git +``` + +> Windows Users: place the repository near the root of your drive if you face issues while cloning. + +1. Install dependencies: + + ```bash + npm install + # or + yarn install + ``` + +2. Start the development server: + ```bash + npm run start + # or + yarn start + ``` + +## Components + +TailAdmin is a pre-designed starting point for building a web-based dashboard using HTML, Alpine.js and Tailwind CSS. The template includes: + +- Sophisticated and accessible sidebar +- Data visualization components +- Prebuilt profile management and 404 page +- Tables and Charts(Line and Bar) +- Authentication forms and input elements +- Alerts, Dropdowns, Modals, Buttons and more +- Can't forget Dark Mode 🕶️ + +## Feature Comparison + +### Free Version + +- 1 Unique Dashboard +- 30+ dashboard components +- 50+ UI elements +- Basic Figma design files +- Community support + +### Pro Version + +- 7 Unique Dashboards: Analytics, Ecommerce, Marketing, CRM, Stocks (more coming soon) +- 500+ dashboard components and UI elements +- Complete Figma design system file +- Email support + +To learn more about pro version features and pricing, visit our [pricing page](https://tailadmin.com/pricing). + +## Update Logs + +### Version 2.0.1 - [February 27, 2025] + +#### Update Overview + +- Upgraded to Tailwind CSS v4 for better performance and efficiency. +- Updated class usage to match the latest syntax and features. +- Replaced deprecated class and optimized styles. + +#### Next Steps + +- Run npm install or yarn install to update dependencies. +- Check for any style changes or compatibility issues. +- Refer to the Tailwind CSS v4 [Migration Guide](https://tailwindcss.com/docs/upgrade-guide) on this release. if needed. +- This update keeps the project up to date with the latest Tailwind improvements. 🚀 + +### Version 2.0.0 - [February 2025] + +Major update with comprehensive redesign and new features. + +#### Major Improvements + +- Complete UI redesign of all pages and components +- Enhanced user interface with new elements +- Improved responsiveness and accessibility +- New features: collapsible sidebar, chat, and calendar +- Updated data visualization components + +#### New Features + +- Redesigned dashboards (Ecommerce, Analytics, Marketing, CRM) +- Enhanced navigation with improved header and breadcrumbs +- Advanced table components with sorting and filtering +- New UI components (Avatar, Alert, Ribbon) +- Full-featured calendar with drag-and-drop + +#### Breaking Changes + +- Updated sidebar component API +- New charting library implementation +- Revised authentication system +- **Deprecations:** SimpleTable component and legacy icon set + +#### Previous Versions + +For detailed changelogs of previous versions (1.0.0 - 1.3.0), visit our [documentation](https://tailadmin.com/docs/update-logs/). + +## License + +The community edition of TailAdmin is released under the MIT License. + +## Support + +If you find this project helpful, please consider giving it a star on GitHub. Your support helps us continue developing and maintaining this template. diff --git a/tailadmin/banner.png b/tailadmin/banner.png new file mode 100755 index 0000000..1b8c2f3 Binary files /dev/null and b/tailadmin/banner.png differ diff --git a/tailadmin/package.json b/tailadmin/package.json new file mode 100755 index 0000000..fa96d96 --- /dev/null +++ b/tailadmin/package.json @@ -0,0 +1,58 @@ +{ + "name": "tailadmin-free", + "version": "2.0.1", + "description": "TailAdmin is a high-quality, open-source, and free Tailwind CSS admin template that is perfect for creating data-rich backends, powerful web applications and dashboard-admin projects.", + "main": "index.js", + "scripts": { + "start": "webpack serve --open --config webpack.config.js", + "build": "webpack --config webpack.config.js", + "sort": "npx prettier --write src" + }, + "keywords": [], + "author": { + "name": "TailAdmin", + "email": "hello@tailadmin.com", + "url": "https://tailadmin.com" + }, + "license": "ISC", + "devDependencies": { + "@babel/core": "^7.24.9", + "@babel/preset-env": "^7.24.8", + "@tailwindcss/forms": "^0.5.9", + "@tailwindcss/postcss": "^4.0.0", + "babel-loader": "^9.1.3", + "babel-plugin-prismjs": "^2.1.0", + "css-loader": "^7.1.2", + "file-loader": "^1.0.0", + "glob": "^11.0.0", + "html-loader": "^5.0.0", + "html-webpack-plugin": "^5.6.0", + "mini-css-extract-plugin": "^2.9.0", + "postcss": "^8.4.39", + "postcss-loader": "^8.1.1", + "postcss-preset-env": "^9.6.0", + "prettier": "^3.3.3", + "prettier-plugin-tailwindcss": "^0.6.11", + "style-loader": "^4.0.0", + "tailwindcss": "^4.0.0", + "webpack": "^5.96.1", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^5.0.4" + }, + "dependencies": { + "@alpinejs/persist": "^3.14.1", + "@fullcalendar/core": "^6.1.15", + "@fullcalendar/daygrid": "^6.1.15", + "@fullcalendar/interaction": "^6.1.15", + "@fullcalendar/list": "^6.1.15", + "@fullcalendar/timegrid": "^6.1.15", + "alpinejs": "^3.14.1", + "apexcharts": "^3.51.0", + "chart.js": "^4.4.6", + "dropzone": "^6.0.0-beta.2", + "flatpickr": "^4.6.13", + "fullcalendar": "^6.1.15", + "jsvectormap": "^1.6.0", + "swiper": "^12.1.2" + } +} diff --git a/tailadmin/postcss.config.js b/tailadmin/postcss.config.js new file mode 100755 index 0000000..241bd69 --- /dev/null +++ b/tailadmin/postcss.config.js @@ -0,0 +1,5 @@ +module.exports = { + plugins: { + '@tailwindcss/postcss': {}, + } +} \ No newline at end of file diff --git a/tailadmin/src/404.html b/tailadmin/src/404.html new file mode 100644 index 0000000..baba490 --- /dev/null +++ b/tailadmin/src/404.html @@ -0,0 +1,71 @@ + + + + + + + + 404 Error Page | TailAdmin - Tailwind CSS Admin Dashboard Template + + + + + + + + +
+ + + + + +
+

+ ERROR +

+ + 404 + + +

+ We can’t seem to find the page you are looking for! +

+ + + Back to Home Page + +
+ +

+ © - TailAdmin +

+
+ + + + diff --git a/tailadmin/src/alerts.html b/tailadmin/src/alerts.html new file mode 100644 index 0000000..2ee5f3d --- /dev/null +++ b/tailadmin/src/alerts.html @@ -0,0 +1,135 @@ + + + + + + + Alerts | TailAdmin - Tailwind CSS Admin Dashboard Template + + + + + + + +
+ + + + + +
+ + + + + + + + + +
+
+ +
+ +
+ + +
+
+
+

+ Success Alert +

+
+
+
+ +
+
+
+ +
+
+

+ Warning Alert +

+
+
+
+ +
+
+
+ +
+
+

+ Error Alert +

+
+
+
+ +
+
+
+ +
+
+

+ Info Alert +

+
+
+
+ +
+
+
+
+
+
+ +
+ +
+ + + diff --git a/tailadmin/src/avatars.html b/tailadmin/src/avatars.html new file mode 100644 index 0000000..d87415a --- /dev/null +++ b/tailadmin/src/avatars.html @@ -0,0 +1,119 @@ + + + + + + + Avatars | TailAdmin - Tailwind CSS Admin Dashboard Template + + + + + + + +
+ + + + + +
+ + + + + + + + + +
+
+ +
+ +
+ + +
+
+
+

+ Default Avatar +

+
+
+ +
+
+ +
+
+

+ Avatar with online indicator +

+
+
+ +
+
+ +
+
+

+ Avatar with Offline indicator +

+
+
+ +
+
+ +
+
+

+ Avatar with busy indicator +

+
+
+ +
+
+
+
+
+ +
+ +
+ + + diff --git a/tailadmin/src/badge.html b/tailadmin/src/badge.html new file mode 100644 index 0000000..5a92134 --- /dev/null +++ b/tailadmin/src/badge.html @@ -0,0 +1,161 @@ + + + + + + + Badge | TailAdmin - Tailwind CSS Admin Dashboard Template + + + + + + + +
+ + + + + +
+ + + + + + + + + +
+
+ +
+ +
+ + +
+
+
+

+ With Light Background +

+
+
+ +
+
+ +
+
+

+ With Solid Background +

+
+
+ +
+
+ +
+
+

+ Light Background with Left Icon +

+
+
+ +
+
+ +
+
+

+ Solid Background with Left Icon +

+
+
+ +
+
+ +
+
+

+ Light Background with Right Icon +

+
+
+ +
+
+ +
+
+

+ Solid Background with Right Icon +

+
+
+ +
+
+
+
+
+ +
+ +
+ + + diff --git a/tailadmin/src/bar-chart.html b/tailadmin/src/bar-chart.html new file mode 100644 index 0000000..d801144 --- /dev/null +++ b/tailadmin/src/bar-chart.html @@ -0,0 +1,80 @@ + + + + + + + Bar Chart | TailAdmin - Tailwind CSS Admin Dashboard Template + + + + + + + +
+ + + + + +
+ + + + + + + + + +
+
+ +
+ +
+ + +
+
+
+

+ Bar Chart 1 +

+
+
+ +
+
+
+ +
+
+
+
+
+ +
+ +
+ + + diff --git a/tailadmin/src/basic-tables.html b/tailadmin/src/basic-tables.html new file mode 100644 index 0000000..ca10502 --- /dev/null +++ b/tailadmin/src/basic-tables.html @@ -0,0 +1,80 @@ + + + + + + + + Basic Tables | TailAdmin - Tailwind CSS Admin Dashboard Template + + + + + + + + +
+ + + + + +
+ + + + + + + + + +
+
+ +
+ +
+ + +
+
+
+

+ Basic Table 1 +

+
+
+ + + +
+
+
+
+
+ +
+ +
+ + + diff --git a/tailadmin/src/blank.html b/tailadmin/src/blank.html new file mode 100644 index 0000000..92a0947 --- /dev/null +++ b/tailadmin/src/blank.html @@ -0,0 +1,79 @@ + + + + + + + + Blank Page | TailAdmin - Tailwind CSS Admin Dashboard Template + + + + + + + + +
+ + + + + +
+ + + + + + + + + +
+
+ +
+ +
+ + +
+
+

+ Card Title Here +

+ +

+ Start putting content on grids or panels, you can also use + different combinations of grids.
Please check out the + dashboard and other pages +

+
+
+
+
+ +
+ +
+ + + diff --git a/tailadmin/src/buttons.html b/tailadmin/src/buttons.html new file mode 100644 index 0000000..d05d66c --- /dev/null +++ b/tailadmin/src/buttons.html @@ -0,0 +1,161 @@ + + + + + + + Buttons | TailAdmin - Tailwind CSS Admin Dashboard Template + + + + + + + +
+ + + + + +
+ + + + + + + + + +
+
+ +
+ +
+ + +
+
+
+

+ Primary Button +

+
+
+ +
+
+ +
+
+

+ Primary Button with Left Icon +

+
+
+ +
+
+ +
+
+

+ Primary Button with Right Icon +

+
+
+ +
+
+ +
+
+

+ Secondary Button +

+
+
+ +
+
+ +
+
+

+ Secondary Button with Left Icon +

+
+
+ +
+
+ +
+
+

+ Secondary Button with Right Icon +

+
+
+ +
+
+
+
+
+ +
+ +
+ + + diff --git a/tailadmin/src/calendar.html b/tailadmin/src/calendar.html new file mode 100644 index 0000000..d450158 --- /dev/null +++ b/tailadmin/src/calendar.html @@ -0,0 +1,67 @@ + + + + + + + Calendar | TailAdmin - Tailwind CSS Admin Dashboard Template + + + + + + + +
+ + + + + +
+ + + + + + + + + +
+
+ +
+ +
+ + +
+
+
+ + + + +
+
+ +
+ +
+ + + diff --git a/tailadmin/src/css/style.css b/tailadmin/src/css/style.css new file mode 100644 index 0000000..30ff5e1 --- /dev/null +++ b/tailadmin/src/css/style.css @@ -0,0 +1,751 @@ +@import url("https://fonts.googleapis.com/css2?family=Outfit:wght@100..900&display=swap") +layer(base); + +@import "tailwindcss"; + +@custom-variant dark (&:is(.dark *)); + +@theme { + --font-*: initial; + --font-outfit: Outfit, sans-serif; + + --breakpoint-*: initial; + --breakpoint-2xsm: 375px; + --breakpoint-xsm: 425px; + --breakpoint-3xl: 2000px; + --breakpoint-sm: 640px; + --breakpoint-md: 768px; + --breakpoint-lg: 1024px; + --breakpoint-xl: 1280px; + --breakpoint-2xl: 1536px; + + --text-title-2xl: 72px; + --text-title-2xl--line-height: 90px; + --text-title-xl: 60px; + --text-title-xl--line-height: 72px; + --text-title-lg: 48px; + --text-title-lg--line-height: 60px; + --text-title-md: 36px; + --text-title-md--line-height: 44px; + --text-title-sm: 30px; + --text-title-sm--line-height: 38px; + --text-theme-xl: 20px; + --text-theme-xl--line-height: 30px; + --text-theme-sm: 14px; + --text-theme-sm--line-height: 20px; + --text-theme-xs: 12px; + --text-theme-xs--line-height: 18px; + + --color-current: currentColor; + --color-transparent: transparent; + --color-white: #ffffff; + --color-black: #101828; + + --color-brand-25: #f2f7ff; + --color-brand-50: #ecf3ff; + --color-brand-100: #dde9ff; + --color-brand-200: #c2d6ff; + --color-brand-300: #9cb9ff; + --color-brand-400: #7592ff; + --color-brand-500: #465fff; + --color-brand-600: #3641f5; + --color-brand-700: #2a31d8; + --color-brand-800: #252dae; + --color-brand-900: #262e89; + --color-brand-950: #161950; + + --color-blue-light-25: #f5fbff; + --color-blue-light-50: #f0f9ff; + --color-blue-light-100: #e0f2fe; + --color-blue-light-200: #b9e6fe; + --color-blue-light-300: #7cd4fd; + --color-blue-light-400: #36bffa; + --color-blue-light-500: #0ba5ec; + --color-blue-light-600: #0086c9; + --color-blue-light-700: #026aa2; + --color-blue-light-800: #065986; + --color-blue-light-900: #0b4a6f; + --color-blue-light-950: #062c41; + + --color-gray-25: #fcfcfd; + --color-gray-50: #f9fafb; + --color-gray-100: #f2f4f7; + --color-gray-200: #e4e7ec; + --color-gray-300: #d0d5dd; + --color-gray-400: #98a2b3; + --color-gray-500: #667085; + --color-gray-600: #475467; + --color-gray-700: #344054; + --color-gray-800: #1d2939; + --color-gray-900: #101828; + --color-gray-950: #0c111d; + --color-gray-dark: #1a2231; + + --color-orange-25: #fffaf5; + --color-orange-50: #fff6ed; + --color-orange-100: #ffead5; + --color-orange-200: #fddcab; + --color-orange-300: #feb273; + --color-orange-400: #fd853a; + --color-orange-500: #fb6514; + --color-orange-600: #ec4a0a; + --color-orange-700: #c4320a; + --color-orange-800: #9c2a10; + --color-orange-900: #7e2410; + --color-orange-950: #511c10; + + --color-success-25: #f6fef9; + --color-success-50: #ecfdf3; + --color-success-100: #d1fadf; + --color-success-200: #a6f4c5; + --color-success-300: #6ce9a6; + --color-success-400: #32d583; + --color-success-500: #12b76a; + --color-success-600: #039855; + --color-success-700: #027a48; + --color-success-800: #05603a; + --color-success-900: #054f31; + --color-success-950: #053321; + + --color-error-25: #fffbfa; + --color-error-50: #fef3f2; + --color-error-100: #fee4e2; + --color-error-200: #fecdca; + --color-error-300: #fda29b; + --color-error-400: #f97066; + --color-error-500: #f04438; + --color-error-600: #d92d20; + --color-error-700: #b42318; + --color-error-800: #912018; + --color-error-900: #7a271a; + --color-error-950: #55160c; + + --color-warning-25: #fffcf5; + --color-warning-50: #fffaeb; + --color-warning-100: #fef0c7; + --color-warning-200: #fedf89; + --color-warning-300: #fec84b; + --color-warning-400: #fdb022; + --color-warning-500: #f79009; + --color-warning-600: #dc6803; + --color-warning-700: #b54708; + --color-warning-800: #93370d; + --color-warning-900: #7a2e0e; + --color-warning-950: #4e1d09; + + --color-theme-pink-500: #ee46bc; + + --color-theme-purple-500: #7a5af8; + + --shadow-theme-md: 0px 4px 8px -2px rgba(16, 24, 40, 0.1), + 0px 2px 4px -2px rgba(16, 24, 40, 0.06); + --shadow-theme-lg: 0px 12px 16px -4px rgba(16, 24, 40, 0.08), + 0px 4px 6px -2px rgba(16, 24, 40, 0.03); + --shadow-theme-sm: 0px 1px 3px 0px rgba(16, 24, 40, 0.1), + 0px 1px 2px 0px rgba(16, 24, 40, 0.06); + --shadow-theme-xs: 0px 1px 2px 0px rgba(16, 24, 40, 0.05); + --shadow-theme-xl: 0px 20px 24px -4px rgba(16, 24, 40, 0.08), + 0px 8px 8px -4px rgba(16, 24, 40, 0.03); + --shadow-datepicker: -5px 0 0 #262d3c, 5px 0 0 #262d3c; + --shadow-focus-ring: 0px 0px 0px 4px rgba(70, 95, 255, 0.12); + --shadow-slider-navigation: 0px 1px 2px 0px rgba(16, 24, 40, 0.1), + 0px 1px 3px 0px rgba(16, 24, 40, 0.1); + --shadow-tooltip: 0px 4px 6px -2px rgba(16, 24, 40, 0.05), + -8px 0px 20px 8px rgba(16, 24, 40, 0.05); + + --drop-shadow-4xl: 0 35px 35px rgba(0, 0, 0, 0.25), + 0 45px 65px rgba(0, 0, 0, 0.15); + + --z-index-1: 1; + --z-index-9: 9; + --z-index-99: 99; + --z-index-999: 999; + --z-index-9999: 9999; + --z-index-99999: 99999; + --z-index-999999: 999999; +} + +/* + The default border color has changed to `currentColor` in Tailwind CSS v4, + so we've added these compatibility styles to make sure everything still + looks the same as it did with Tailwind CSS v3. + + If we ever want to remove these styles, we need to add an explicit border + color utility to any element that depends on these defaults. +*/ +@layer base { + *, + ::after, + ::before, + ::backdrop, + ::file-selector-button { + border-color: var(--color-gray-200, currentColor); + } + button:not(:disabled), + [role="button"]:not(:disabled) { + cursor: pointer; + } +} + +@utility menu-item { + @apply text-theme-sm relative flex items-center gap-3 rounded-lg px-3 py-2 font-medium; +} + +@utility menu-item-active { + @apply bg-brand-50 text-brand-500 dark:bg-brand-500/[0.12] dark:text-brand-400; +} + +@utility menu-item-inactive { + @apply text-gray-700 hover:bg-gray-100 hover:text-gray-700 dark:text-gray-300 dark:hover:bg-white/5 dark:hover:text-gray-300; +} + +@utility menu-item-icon-active { + @apply fill-brand-500 dark:fill-brand-400; +} + +@utility menu-item-icon-inactive { + @apply fill-gray-500 group-hover:fill-gray-700 dark:fill-gray-400 dark:group-hover:fill-gray-300; +} + +@utility menu-item-arrow { + @apply absolute top-1/2 right-2.5 -translate-y-1/2; +} + +@utility menu-item-arrow-active { + @apply stroke-brand-500 dark:stroke-brand-400 rotate-180; +} + +@utility menu-item-arrow-inactive { + @apply stroke-gray-500 group-hover:stroke-gray-700 dark:stroke-gray-400 dark:group-hover:stroke-gray-300; +} + +@utility menu-dropdown-item { + @apply text-theme-sm relative flex items-center gap-3 rounded-lg px-3 py-2.5 font-medium; +} + +@utility menu-dropdown-item-active { + @apply bg-brand-50 text-brand-500 dark:bg-brand-500/[0.12] dark:text-brand-400; +} + +@utility menu-dropdown-item-inactive { + @apply text-gray-700 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-white/5; +} + +@utility menu-dropdown-badge { + @apply text-brand-500 dark:text-brand-400 block rounded-full px-2.5 py-0.5 text-xs font-medium uppercase; +} + +@utility menu-dropdown-badge-active { + @apply bg-brand-100 dark:bg-brand-500/20; +} + +@utility menu-dropdown-badge-inactive { + @apply bg-brand-50 group-hover:bg-brand-100 dark:bg-brand-500/15 dark:group-hover:bg-brand-500/20; +} + +@utility no-scrollbar { + /* Chrome, Safari and Opera */ + &::-webkit-scrollbar { + display: none; + } + -ms-overflow-style: none; /* IE and Edge */ + scrollbar-width: none; /* Firefox */ +} + +@utility custom-scrollbar { + &::-webkit-scrollbar { + @apply size-1.5; + } + + &::-webkit-scrollbar-track { + @apply rounded-full; + } + + &::-webkit-scrollbar-thumb { + @apply rounded-full bg-gray-200; + } +} + +.dark .custom-scrollbar::-webkit-scrollbar-thumb { + background-color: #344054; +} + +@layer base { + body { + @apply font-outfit relative z-1 bg-gray-50 text-base font-normal; + } +} + +@layer utilities { + /* For Remove Date Icon */ + input[type="date"]::-webkit-inner-spin-button, + input[type="time"]::-webkit-inner-spin-button, + input[type="date"]::-webkit-calendar-picker-indicator, + input[type="time"]::-webkit-calendar-picker-indicator { + display: none; + -webkit-appearance: none; + } +} + +.sidebar:hover { + width: 290px; +} +.sidebar:hover .logo { + display: block; +} +.sidebar:hover .logo-icon { + display: none; +} +.sidebar:hover .sidebar-header { + justify-content: space-between; +} +.sidebar:hover .menu-group-title { + display: block; +} +.sidebar:hover .menu-group-icon { + display: none; +} + +.sidebar:hover .menu-item-text { + display: inline; +} + +.sidebar:hover .menu-item-arrow { + display: block; +} + +.sidebar:hover .menu-dropdown { + display: flex; +} + +.tableCheckbox:checked ~ span span { + @apply opacity-100; +} +.tableCheckbox:checked ~ span { + @apply border-brand-500 bg-brand-500; +} + +/* third-party libraries CSS */ +.apexcharts-legend-text { + @apply text-gray-700! dark:text-gray-400!; +} + +.apexcharts-text { + @apply fill-gray-700! dark:fill-gray-400!; +} + +.apexcharts-tooltip.apexcharts-theme-light { + @apply shadow-theme-sm! gap-1 rounded-lg! border-gray-200! p-3 dark:border-gray-800! dark:bg-gray-900!; +} + +.apexcharts-tooltip-marker { + @apply mr-1.5! h-1.5! w-1.5!; +} +.apexcharts-legend-text { + @apply pl-5! text-gray-700! dark:text-gray-400!; +} +.apexcharts-tooltip-series-group { + @apply p-0!; +} +.apexcharts-tooltip-y-group { + @apply p-0!; +} +.apexcharts-tooltip-title { + @apply mb-0! border-b-0! bg-transparent! p-0! text-[10px]! leading-4! text-gray-800! dark:text-white/90!; +} +.apexcharts-tooltip-text { + @apply text-theme-xs! text-gray-700! dark:text-white/90!; +} +.apexcharts-tooltip-text-y-value { + @apply font-medium!; +} + +.apexcharts-gridline { + @apply stroke-gray-100! dark:stroke-gray-800!; +} +#chartTwo .apexcharts-datalabels-group { + @apply -translate-y-24!; +} +#chartTwo .apexcharts-datalabels-group .apexcharts-text { + @apply fill-gray-800! font-semibold! dark:fill-white/90!; +} + +#chartSixteen .apexcharts-legend { + @apply p-0! pl-6!; +} + +.jvm-container { + @apply bg-gray-50! dark:bg-gray-900!; +} +.jvm-region.jvm-element { + @apply hover:fill-brand-500! dark:hover:fill-brand-500! fill-gray-300! dark:fill-gray-700!; +} +.jvm-marker.jvm-element { + @apply stroke-gray-200! dark:stroke-gray-800!; +} + +.stocks-slider-outer .swiper-button-next:after, +.stocks-slider-outer .swiper-button-prev:after { + @apply hidden; +} + +.stocks-slider-outer .swiper-button-next, +.stocks-slider-outer .swiper-button-prev { + @apply static! mt-0 h-8 w-9 rounded-full border border-gray-200 text-gray-700! transition hover:bg-gray-100 dark:border-gray-800 dark:bg-gray-800 dark:text-gray-400!; +} + +.stocks-slider-outer .swiper-button-next.swiper-button-disabled, +.stocks-slider-outer .swiper-button-prev.swiper-button-disabled { + @apply bg-white opacity-100 dark:bg-gray-900; +} + +.stocks-slider-outer .swiper-button-next svg, +.stocks-slider-outer .swiper-button-prev svg { + @apply h-auto! w-auto!; +} + +.flatpickr-wrapper { + @apply w-full; +} +.flatpickr-calendar { + @apply dark:bg-gray-dark! dark:shadow-theme-xl! 2xsm:w-auto! mt-2 rounded-xl! p-5! text-gray-500! dark:text-gray-400!; +} + +.flatpickr-months .flatpickr-prev-month:hover svg, +.flatpickr-months .flatpickr-next-month:hover svg { + @apply stroke-brand-500; +} +.flatpickr-calendar.arrowTop:before, +.flatpickr-calendar.arrowTop:after { + @apply hidden; +} +.flatpickr-current-month .cur-month, +.flatpickr-current-month input.cur-year { + @apply h-auto! pt-0! text-lg! font-medium! text-gray-800! dark:text-white/90!; +} + +.flatpickr-prev-month, +.flatpickr-next-month { + @apply p-0!; +} + +.flatpickr-weekdays { + @apply mt-6 mb-4 h-auto; +} + +.flatpickr-weekday { + @apply text-theme-sm! font-medium! text-gray-500! dark:text-gray-400!; +} + +.flatpickr-day { + @apply text-theme-sm! flex! items-center! font-medium! text-gray-800! dark:text-white/90! dark:hover:border-gray-300! dark:hover:bg-gray-900!; +} +.flatpickr-day.nextMonthDay, +.flatpickr-day.prevMonthDay { + @apply text-gray-400!; +} +.flatpickr-months .flatpickr-prev-month, +.flatpickr-months .flatpickr-next-month { + @apply top-7! dark:fill-white! dark:text-white!; +} +.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month, +.flatpickr-months .flatpickr-next-month.flatpickr-prev-month { + @apply left-7!; +} +.flatpickr-months .flatpickr-prev-month.flatpickr-next-month, +.flatpickr-months .flatpickr-next-month.flatpickr-next-month { + @apply right-7!; +} +span.flatpickr-weekday, +.flatpickr-months .flatpickr-month { + @apply dark:fill-white! dark:text-white!; +} +.flatpickr-day.inRange { + box-shadow: + -5px 0 0 #f9fafb, + 5px 0 0 #f9fafb !important; + @apply dark:shadow-datepicker!; +} +.flatpickr-day.inRange, +.flatpickr-day.prevMonthDay.inRange, +.flatpickr-day.nextMonthDay.inRange, +.flatpickr-day.today.inRange, +.flatpickr-day.prevMonthDay.today.inRange, +.flatpickr-day.nextMonthDay.today.inRange, +.flatpickr-day:hover, +.flatpickr-day.prevMonthDay:hover, +.flatpickr-day.nextMonthDay:hover, +.flatpickr-day:focus, +.flatpickr-day.prevMonthDay:focus, +.flatpickr-day.nextMonthDay:focus { + @apply border-gray-50! bg-gray-50! dark:border-0! dark:border-white/5! dark:bg-white/5!; +} +.flatpickr-day.selected, +.flatpickr-day.startRange, +.flatpickr-day.selected, +.flatpickr-day.endRange { + @apply text-white! dark:text-white!; +} +.flatpickr-day.selected, +.flatpickr-day.startRange, +.flatpickr-day.endRange, +.flatpickr-day.selected.inRange, +.flatpickr-day.startRange.inRange, +.flatpickr-day.endRange.inRange, +.flatpickr-day.selected:focus, +.flatpickr-day.startRange:focus, +.flatpickr-day.endRange:focus, +.flatpickr-day.selected:hover, +.flatpickr-day.startRange:hover, +.flatpickr-day.endRange:hover, +.flatpickr-day.selected.prevMonthDay, +.flatpickr-day.startRange.prevMonthDay, +.flatpickr-day.endRange.prevMonthDay, +.flatpickr-day.selected.nextMonthDay, +.flatpickr-day.startRange.nextMonthDay, +.flatpickr-day.endRange.nextMonthDay { + background: #465fff; + @apply border-brand-500! bg-brand-500! hover:border-brand-500! hover:bg-brand-500!; +} +.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n + 1)), +.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n + 1)), +.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n + 1)) { + box-shadow: -10px 0 0 #465fff; +} + +.flatpickr-months .flatpickr-prev-month svg, +.flatpickr-months .flatpickr-next-month svg, +.flatpickr-months .flatpickr-prev-month, +.flatpickr-months .flatpickr-next-month { + @apply hover:fill-none!; +} +.flatpickr-months .flatpickr-prev-month:hover svg, +.flatpickr-months .flatpickr-next-month:hover svg { + fill: none !important; +} + +.flatpickr-calendar.static { + @apply right-0; +} + +@media screen and (max-width: 525px) { + .flatpickr-calendar.static { + margin-right: -60px !important; + } +} + +.fc .fc-view-harness { + @apply custom-scrollbar max-w-full overflow-x-auto; +} +.fc-dayGridMonth-view.fc-view.fc-daygrid { + @apply min-w-[718px]; +} +.fc .fc-scrollgrid-section > * { + border-right-width: 0; + border-bottom-width: 0; +} +.fc .fc-scrollgrid { + border-left-width: 0; +} +.fc .fc-toolbar.fc-header-toolbar { + @apply flex-col gap-4 px-6 pt-6 sm:flex-row; +} +.fc-button-group { + @apply gap-2; +} +.fc-button-group .fc-button { + @apply flex h-10 w-10 items-center justify-center rounded-lg! border border-gray-200 bg-transparent hover:border-gray-200 hover:bg-gray-50 focus:shadow-none active:border-gray-200! active:bg-transparent! active:shadow-none! dark:border-gray-800 dark:hover:border-gray-800 dark:hover:bg-gray-900 dark:active:border-gray-800!; +} + +.fc-button-group .fc-button.fc-prev-button:before { + @apply mt-1 inline-block; + content: url("data:image/svg+xml,%3Csvg width='25' height='24' viewBox='0 0 25 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16.0068 6L9.75684 12.25L16.0068 18.5' stroke='%23344054' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E%0A"); +} +.fc-button-group .fc-button.fc-next-button:before { + @apply mt-1 inline-block; + content: url("data:image/svg+xml,%3Csvg width='25' height='24' viewBox='0 0 25 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M9.50684 19L15.7568 12.75L9.50684 6.5' stroke='%23344054' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E%0A"); +} +.dark .fc-button-group .fc-button.fc-prev-button:before { + content: url("data:image/svg+xml,%3Csvg width='25' height='24' viewBox='0 0 25 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16.0068 6L9.75684 12.25L16.0068 18.5' stroke='%2398A2B3' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E%0A"); +} +.dark .fc-button-group .fc-button.fc-next-button:before { + content: url("data:image/svg+xml,%3Csvg width='25' height='24' viewBox='0 0 25 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M9.50684 19L15.7568 12.75L9.50684 6.5' stroke='%2398A2B3' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E%0A"); +} +.fc-button-group .fc-button .fc-icon { + @apply hidden; +} +.fc-addEventButton-button { + @apply bg-brand-500! hover:bg-brand-600! rounded-lg! border-0! px-4! py-2.5! text-sm! font-medium! focus:shadow-none!; +} +.fc-toolbar-title { + @apply text-lg! font-medium! text-gray-800 dark:text-white/90; +} +.fc-header-toolbar.fc-toolbar .fc-toolbar-chunk:last-child { + @apply rounded-lg bg-gray-100 p-0.5 dark:bg-gray-900; +} +.fc-header-toolbar.fc-toolbar .fc-toolbar-chunk:last-child .fc-button { + @apply h-auto! w-auto! rounded-md border-0! bg-transparent px-5! py-2! text-sm font-medium text-gray-500 hover:text-gray-700 focus:shadow-none! dark:text-gray-400; +} +.fc-header-toolbar.fc-toolbar + .fc-toolbar-chunk:last-child + .fc-button.fc-button-active { + @apply bg-white text-gray-900 dark:bg-gray-800 dark:text-white; +} +.fc-theme-standard th { + @apply border-x-0! border-t border-gray-200! bg-gray-50 text-left! dark:border-gray-800! dark:bg-gray-900; +} +.fc-theme-standard td, +.fc-theme-standard .fc-scrollgrid { + @apply border-gray-200! dark:border-gray-800!; +} +.fc .fc-col-header-cell-cushion { + @apply px-5! py-4! text-sm font-medium text-gray-400 uppercase; +} +.fc .fc-daygrid-day.fc-day-today { + @apply bg-transparent; +} +.fc .fc-daygrid-day { + @apply p-2; +} +.fc .fc-daygrid-day.fc-day-today .fc-scrollgrid-sync-inner { + @apply rounded-sm bg-gray-100 dark:bg-white/[0.03]; +} +.fc .fc-daygrid-day-number { + @apply p-3! text-sm font-medium text-gray-700 dark:text-gray-400; +} +.fc .fc-daygrid-day-top { + @apply flex-row!; +} +.fc .fc-day-other .fc-daygrid-day-top { + opacity: 1; +} +.fc .fc-day-other .fc-daygrid-day-top .fc-daygrid-day-number { + @apply text-gray-400 dark:text-white/30; +} +.event-fc-color { + @apply rounded-lg py-2.5 pr-3 pl-4; +} +.event-fc-color .fc-event-title { + @apply p-0 text-sm font-normal text-gray-700; +} +.fc-daygrid-event-dot { + @apply mr-3 ml-0 h-5 w-1 rounded-sm border-none; +} +.fc-event { + @apply focus:shadow-none; +} +.fc-daygrid-event.fc-event-start { + @apply ml-3!; +} +.event-fc-color.fc-bg-success { + @apply border-success-50 bg-success-50; +} +.event-fc-color.fc-bg-danger { + @apply border-error-50 bg-error-50; +} +.event-fc-color.fc-bg-primary { + @apply border-brand-50 bg-brand-50; +} +.event-fc-color.fc-bg-warning { + @apply border-orange-50 bg-orange-50; +} +.event-fc-color.fc-bg-success .fc-daygrid-event-dot { + @apply bg-success-500; +} +.event-fc-color.fc-bg-danger .fc-daygrid-event-dot { + @apply bg-error-500; +} +.event-fc-color.fc-bg-primary .fc-daygrid-event-dot { + @apply bg-brand-500; +} +.event-fc-color.fc-bg-warning .fc-daygrid-event-dot { + @apply bg-orange-500; +} +.fc-direction-ltr .fc-timegrid-slot-label-frame { + @apply px-3 py-1.5 text-left text-sm font-medium text-gray-500 dark:text-gray-400; +} +.fc .fc-timegrid-axis-cushion { + @apply text-sm font-medium text-gray-500 dark:text-gray-400; +} + +.input-date-icon::-webkit-inner-spin-button, +.input-date-icon::-webkit-calendar-picker-indicator { + opacity: 0; + -webkit-appearance: none; +} + +.swiper-button-prev svg, +.swiper-button-next svg { + @apply h-auto! w-auto!; +} + +.carouselTwo .swiper-button-next:after, +.carouselTwo .swiper-button-prev:after, +.carouselFour .swiper-button-next:after, +.carouselFour .swiper-button-prev:after { + @apply hidden; +} +.carouselTwo .swiper-button-next.swiper-button-disabled, +.carouselTwo .swiper-button-prev.swiper-button-disabled, +.carouselFour .swiper-button-next.swiper-button-disabled, +.carouselFour .swiper-button-prev.swiper-button-disabled { + @apply bg-white/60 opacity-100!; +} +.carouselTwo .swiper-button-next, +.carouselTwo .swiper-button-prev, +.carouselFour .swiper-button-next, +.carouselFour .swiper-button-prev { + @apply shadow-slider-navigation h-10 w-10 rounded-full border-[0.5px] border-white/10 bg-white/90 text-gray-700! backdrop-blur-[10px]; +} + +.carouselTwo .swiper-button-prev, +.carouselFour .swiper-button-prev { + @apply left-3! sm:left-4!; +} + +.carouselTwo .swiper-button-next, +.carouselFour .swiper-button-next { + @apply right-3! sm:right-4!; +} + +.carouselThree .swiper-pagination, +.carouselFour .swiper-pagination { + @apply shadow-slider-navigation bottom-3! left-1/2! inline-flex w-auto! -translate-x-1/2 items-center gap-1.5 rounded-[40px] border-[0.5px] border-white/10 bg-white/60 px-2 py-1.5 backdrop-blur-[10px] sm:bottom-5!; +} + +.carouselThree .swiper-pagination-bullet, +.carouselFour .swiper-pagination-bullet { + @apply shadow-theme-xs m-0! h-2.5 w-2.5 bg-white opacity-100 duration-200 ease-in-out; +} + +.carouselThree .swiper-pagination-bullet-active, +.carouselFour .swiper-pagination-bullet-active { + @apply w-6.5 rounded-xl; +} + +.form-check-input:checked ~ span { + @apply border-brand-500 dark:border-brand-500 border-[6px]; +} + +.taskCheckbox:checked ~ .box span { + @apply opacity-100; +} +.taskCheckbox:checked ~ p { + @apply text-gray-400 line-through; +} +.taskCheckbox:checked ~ .box { + @apply border-brand-500 bg-brand-500 dark:border-brand-500; +} + +.task { + transition: all 0.2s ease; /* Smooth transition for visual effects */ +} + +.task.is-dragging { + border-radius: 0.75rem; + box-shadow: + 0px 1px 3px 0px rgba(16, 24, 40, 0.1), + 0px 1px 2px 0px rgba(16, 24, 40, 0.06); + opacity: 0.8; + cursor: grabbing; /* Changes the cursor to indicate dragging */ +} diff --git a/tailadmin/src/form-elements.html b/tailadmin/src/form-elements.html new file mode 100644 index 0000000..44056f7 --- /dev/null +++ b/tailadmin/src/form-elements.html @@ -0,0 +1,1573 @@ + + + + + + + + Form Elements | TailAdmin - Tailwind CSS Admin Dashboard Template + + + + + + + + +
+ + + + + +
+ + + + + + + + + +
+
+ +
+ +
+ + + +
+
+
+
+

+ Default Inputs +

+
+
+ +
+ + +
+ + +
+ + +
+ + +
+ +
+ + + + + + +
+
+ + +
+ +
+ + + + + + + + + + +
+
+ + +
+ + +
+ + + + + + +
+
+ + +
+ +
+ + + + + + +
+
+ + +
+ + +
+ + + + + + + + +
+
+
+
+ +
+
+

+ Select Inputs +

+
+
+ +
+ +
+ + + + + + +
+
+ + +
+ +
+ + +
+ +
+
+
+
+
+ +
+ +
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+ +
+
+

+ Textarea input field +

+
+
+ +
+ + +
+ + +
+ + +
+ + +
+ + +

+ Please enter a message in the textarea. +

+
+
+
+ +
+
+

+ Input States +

+

+ Validation styles for error, success and disabled states + on form controls. +

+
+
+ +
+ +
+ + + + + + +
+ +

+ This is an error message. +

+
+ + +
+ +
+ + + + + + +
+ +

+ This is an success message. +

+
+ + +
+ + +
+
+
+
+ +
+
+
+

+ Input Group +

+
+
+ +
+ +
+ + + + + + +
+
+ + +
+ +
+
+ +
+ + + +
+
+ +
+
+ + +
+ +
+
+ +
+ + + +
+
+ +
+
+ + +
+ +
+ + http:// + + +
+
+ + +
+ +
+ + +
+
+
+
+ +
+
+

+ File Input +

+
+
+ +
+ + +
+
+
+ +
+
+

+ Checkboxes +

+
+
+ +
+
+ +
+ +
+ +
+ +
+ +
+
+
+
+ +
+
+

+ Radio Buttons +

+
+
+ +
+
+ +
+ +
+ +
+ +
+ +
+
+
+
+ +
+
+

+ Toggle switch input +

+
+
+ +
+
+ +
+ +
+ +
+ +
+ +
+
+ + +
+
+ +
+ +
+ +
+ +
+ +
+
+
+
+ +
+
+

+ Dropzone +

+
+
+
+
+
+
+ + + +
+
+ +

+ Drop File Here +

+ + Drag and drop your PNG, JPG, WebP, SVG images here or + browse + + + + Browse File + +
+
+
+
+
+
+ +
+
+ +
+ +
+ + + + + diff --git a/tailadmin/src/images.html b/tailadmin/src/images.html new file mode 100644 index 0000000..1946876 --- /dev/null +++ b/tailadmin/src/images.html @@ -0,0 +1,110 @@ + + + + + + + Images | TailAdmin - Tailwind CSS Admin Dashboard Template + + + + + + + +
+ + + + + +
+ + + + + + + + + +
+
+ +
+ +
+ + +
+
+
+

+ Responsive image +

+
+
+ +
+
+ +
+
+

+ Image in 2 Grid +

+
+
+ +
+
+ +
+
+

+ Image in 3 Grid +

+
+
+ +
+
+
+
+
+ +
+ +
+ + + diff --git a/tailadmin/src/images/brand/brand-01.svg b/tailadmin/src/images/brand/brand-01.svg new file mode 100644 index 0000000..7321fbf --- /dev/null +++ b/tailadmin/src/images/brand/brand-01.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/tailadmin/src/images/brand/brand-02.svg b/tailadmin/src/images/brand/brand-02.svg new file mode 100644 index 0000000..14da422 --- /dev/null +++ b/tailadmin/src/images/brand/brand-02.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/tailadmin/src/images/brand/brand-03.svg b/tailadmin/src/images/brand/brand-03.svg new file mode 100644 index 0000000..8d29afa --- /dev/null +++ b/tailadmin/src/images/brand/brand-03.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/tailadmin/src/images/brand/brand-04.svg b/tailadmin/src/images/brand/brand-04.svg new file mode 100644 index 0000000..837a4d4 --- /dev/null +++ b/tailadmin/src/images/brand/brand-04.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tailadmin/src/images/brand/brand-05.svg b/tailadmin/src/images/brand/brand-05.svg new file mode 100644 index 0000000..7044f46 --- /dev/null +++ b/tailadmin/src/images/brand/brand-05.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/tailadmin/src/images/brand/brand-06.svg b/tailadmin/src/images/brand/brand-06.svg new file mode 100644 index 0000000..78c5d01 --- /dev/null +++ b/tailadmin/src/images/brand/brand-06.svg @@ -0,0 +1,4 @@ + + + + diff --git a/tailadmin/src/images/brand/brand-07.svg b/tailadmin/src/images/brand/brand-07.svg new file mode 100644 index 0000000..5abb368 --- /dev/null +++ b/tailadmin/src/images/brand/brand-07.svg @@ -0,0 +1,4 @@ + + + + diff --git a/tailadmin/src/images/brand/brand-08.svg b/tailadmin/src/images/brand/brand-08.svg new file mode 100644 index 0000000..71bc1e2 --- /dev/null +++ b/tailadmin/src/images/brand/brand-08.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/tailadmin/src/images/brand/brand-09.svg b/tailadmin/src/images/brand/brand-09.svg new file mode 100644 index 0000000..1330ba2 --- /dev/null +++ b/tailadmin/src/images/brand/brand-09.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/tailadmin/src/images/brand/brand-10.svg b/tailadmin/src/images/brand/brand-10.svg new file mode 100644 index 0000000..60308dd --- /dev/null +++ b/tailadmin/src/images/brand/brand-10.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/tailadmin/src/images/brand/brand-11.svg b/tailadmin/src/images/brand/brand-11.svg new file mode 100644 index 0000000..b316bb4 --- /dev/null +++ b/tailadmin/src/images/brand/brand-11.svg @@ -0,0 +1,4 @@ + + + + diff --git a/tailadmin/src/images/brand/brand-12.svg b/tailadmin/src/images/brand/brand-12.svg new file mode 100644 index 0000000..8396a56 --- /dev/null +++ b/tailadmin/src/images/brand/brand-12.svg @@ -0,0 +1,4 @@ + + + + diff --git a/tailadmin/src/images/brand/brand-13.svg b/tailadmin/src/images/brand/brand-13.svg new file mode 100644 index 0000000..dd53f79 --- /dev/null +++ b/tailadmin/src/images/brand/brand-13.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/tailadmin/src/images/brand/brand-14.svg b/tailadmin/src/images/brand/brand-14.svg new file mode 100644 index 0000000..381d72d --- /dev/null +++ b/tailadmin/src/images/brand/brand-14.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/tailadmin/src/images/brand/brand-15.svg b/tailadmin/src/images/brand/brand-15.svg new file mode 100644 index 0000000..dfde3dd --- /dev/null +++ b/tailadmin/src/images/brand/brand-15.svg @@ -0,0 +1,4 @@ + + + + diff --git a/tailadmin/src/images/country/country-01.svg b/tailadmin/src/images/country/country-01.svg new file mode 100644 index 0000000..4c14b12 --- /dev/null +++ b/tailadmin/src/images/country/country-01.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/tailadmin/src/images/country/country-02.svg b/tailadmin/src/images/country/country-02.svg new file mode 100644 index 0000000..52f57c7 --- /dev/null +++ b/tailadmin/src/images/country/country-02.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/tailadmin/src/images/country/country-03.svg b/tailadmin/src/images/country/country-03.svg new file mode 100644 index 0000000..e435fab --- /dev/null +++ b/tailadmin/src/images/country/country-03.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/tailadmin/src/images/country/country-04.svg b/tailadmin/src/images/country/country-04.svg new file mode 100644 index 0000000..93b49b6 --- /dev/null +++ b/tailadmin/src/images/country/country-04.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tailadmin/src/images/country/country-05.svg b/tailadmin/src/images/country/country-05.svg new file mode 100644 index 0000000..5aa26b5 --- /dev/null +++ b/tailadmin/src/images/country/country-05.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/tailadmin/src/images/country/country-06.svg b/tailadmin/src/images/country/country-06.svg new file mode 100644 index 0000000..730e2e6 --- /dev/null +++ b/tailadmin/src/images/country/country-06.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/tailadmin/src/images/country/country-07.svg b/tailadmin/src/images/country/country-07.svg new file mode 100644 index 0000000..ce770d4 --- /dev/null +++ b/tailadmin/src/images/country/country-07.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/tailadmin/src/images/country/country-08.svg b/tailadmin/src/images/country/country-08.svg new file mode 100644 index 0000000..c652b95 --- /dev/null +++ b/tailadmin/src/images/country/country-08.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/tailadmin/src/images/error/404-dark.svg b/tailadmin/src/images/error/404-dark.svg new file mode 100644 index 0000000..4d14ec9 --- /dev/null +++ b/tailadmin/src/images/error/404-dark.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tailadmin/src/images/error/404.svg b/tailadmin/src/images/error/404.svg new file mode 100644 index 0000000..ff8b8a2 --- /dev/null +++ b/tailadmin/src/images/error/404.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/tailadmin/src/images/favicon.ico b/tailadmin/src/images/favicon.ico new file mode 100644 index 0000000..cf3128a Binary files /dev/null and b/tailadmin/src/images/favicon.ico differ diff --git a/tailadmin/src/images/grid-image/image-01.png b/tailadmin/src/images/grid-image/image-01.png new file mode 100644 index 0000000..b00223b Binary files /dev/null and b/tailadmin/src/images/grid-image/image-01.png differ diff --git a/tailadmin/src/images/grid-image/image-02.png b/tailadmin/src/images/grid-image/image-02.png new file mode 100644 index 0000000..e1e9fb2 Binary files /dev/null and b/tailadmin/src/images/grid-image/image-02.png differ diff --git a/tailadmin/src/images/grid-image/image-03.png b/tailadmin/src/images/grid-image/image-03.png new file mode 100644 index 0000000..9fe184a Binary files /dev/null and b/tailadmin/src/images/grid-image/image-03.png differ diff --git a/tailadmin/src/images/grid-image/image-04.png b/tailadmin/src/images/grid-image/image-04.png new file mode 100644 index 0000000..0020a65 Binary files /dev/null and b/tailadmin/src/images/grid-image/image-04.png differ diff --git a/tailadmin/src/images/grid-image/image-05.png b/tailadmin/src/images/grid-image/image-05.png new file mode 100644 index 0000000..9ee8797 Binary files /dev/null and b/tailadmin/src/images/grid-image/image-05.png differ diff --git a/tailadmin/src/images/grid-image/image-06.png b/tailadmin/src/images/grid-image/image-06.png new file mode 100644 index 0000000..d7e3668 Binary files /dev/null and b/tailadmin/src/images/grid-image/image-06.png differ diff --git a/tailadmin/src/images/icons/file-image-dark.svg b/tailadmin/src/images/icons/file-image-dark.svg new file mode 100644 index 0000000..ff2d6df --- /dev/null +++ b/tailadmin/src/images/icons/file-image-dark.svg @@ -0,0 +1,3 @@ + + + diff --git a/tailadmin/src/images/icons/file-image.svg b/tailadmin/src/images/icons/file-image.svg new file mode 100644 index 0000000..0303d63 --- /dev/null +++ b/tailadmin/src/images/icons/file-image.svg @@ -0,0 +1,3 @@ + + + diff --git a/tailadmin/src/images/icons/file-pdf-dark.svg b/tailadmin/src/images/icons/file-pdf-dark.svg new file mode 100644 index 0000000..8fc5a47 --- /dev/null +++ b/tailadmin/src/images/icons/file-pdf-dark.svg @@ -0,0 +1,3 @@ + + + diff --git a/tailadmin/src/images/icons/file-pdf.svg b/tailadmin/src/images/icons/file-pdf.svg new file mode 100644 index 0000000..a525a26 --- /dev/null +++ b/tailadmin/src/images/icons/file-pdf.svg @@ -0,0 +1,3 @@ + + + diff --git a/tailadmin/src/images/icons/file-video-dark.svg b/tailadmin/src/images/icons/file-video-dark.svg new file mode 100644 index 0000000..9415c3d --- /dev/null +++ b/tailadmin/src/images/icons/file-video-dark.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/tailadmin/src/images/icons/file-video.svg b/tailadmin/src/images/icons/file-video.svg new file mode 100644 index 0000000..49732ca --- /dev/null +++ b/tailadmin/src/images/icons/file-video.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/tailadmin/src/images/logo/auth-logo.svg b/tailadmin/src/images/logo/auth-logo.svg new file mode 100644 index 0000000..eb11cc7 --- /dev/null +++ b/tailadmin/src/images/logo/auth-logo.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tailadmin/src/images/logo/logo-dark.svg b/tailadmin/src/images/logo/logo-dark.svg new file mode 100644 index 0000000..4b94dac --- /dev/null +++ b/tailadmin/src/images/logo/logo-dark.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tailadmin/src/images/logo/logo-icon.svg b/tailadmin/src/images/logo/logo-icon.svg new file mode 100644 index 0000000..11d52ca --- /dev/null +++ b/tailadmin/src/images/logo/logo-icon.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tailadmin/src/images/logo/logo.svg b/tailadmin/src/images/logo/logo.svg new file mode 100644 index 0000000..758dedd --- /dev/null +++ b/tailadmin/src/images/logo/logo.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tailadmin/src/images/product/product-01.jpg b/tailadmin/src/images/product/product-01.jpg new file mode 100644 index 0000000..7ffb1e6 Binary files /dev/null and b/tailadmin/src/images/product/product-01.jpg differ diff --git a/tailadmin/src/images/product/product-02.jpg b/tailadmin/src/images/product/product-02.jpg new file mode 100644 index 0000000..db30a9a Binary files /dev/null and b/tailadmin/src/images/product/product-02.jpg differ diff --git a/tailadmin/src/images/product/product-03.jpg b/tailadmin/src/images/product/product-03.jpg new file mode 100644 index 0000000..95fd8d4 Binary files /dev/null and b/tailadmin/src/images/product/product-03.jpg differ diff --git a/tailadmin/src/images/product/product-04.jpg b/tailadmin/src/images/product/product-04.jpg new file mode 100644 index 0000000..131a9f5 Binary files /dev/null and b/tailadmin/src/images/product/product-04.jpg differ diff --git a/tailadmin/src/images/product/product-05.jpg b/tailadmin/src/images/product/product-05.jpg new file mode 100644 index 0000000..1ad17a9 Binary files /dev/null and b/tailadmin/src/images/product/product-05.jpg differ diff --git a/tailadmin/src/images/shape/grid-01.svg b/tailadmin/src/images/shape/grid-01.svg new file mode 100644 index 0000000..6490367 --- /dev/null +++ b/tailadmin/src/images/shape/grid-01.svg @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tailadmin/src/images/user/owner.jpg b/tailadmin/src/images/user/owner.jpg new file mode 100644 index 0000000..55985fe Binary files /dev/null and b/tailadmin/src/images/user/owner.jpg differ diff --git a/tailadmin/src/images/user/user-01.jpg b/tailadmin/src/images/user/user-01.jpg new file mode 100644 index 0000000..4877840 Binary files /dev/null and b/tailadmin/src/images/user/user-01.jpg differ diff --git a/tailadmin/src/images/user/user-02.jpg b/tailadmin/src/images/user/user-02.jpg new file mode 100644 index 0000000..fe64d3e Binary files /dev/null and b/tailadmin/src/images/user/user-02.jpg differ diff --git a/tailadmin/src/images/user/user-03.jpg b/tailadmin/src/images/user/user-03.jpg new file mode 100644 index 0000000..7a8647a Binary files /dev/null and b/tailadmin/src/images/user/user-03.jpg differ diff --git a/tailadmin/src/images/user/user-04.jpg b/tailadmin/src/images/user/user-04.jpg new file mode 100644 index 0000000..0522414 Binary files /dev/null and b/tailadmin/src/images/user/user-04.jpg differ diff --git a/tailadmin/src/images/user/user-05.jpg b/tailadmin/src/images/user/user-05.jpg new file mode 100644 index 0000000..c0b7ddb Binary files /dev/null and b/tailadmin/src/images/user/user-05.jpg differ diff --git a/tailadmin/src/images/user/user-06.jpg b/tailadmin/src/images/user/user-06.jpg new file mode 100644 index 0000000..d80d37e Binary files /dev/null and b/tailadmin/src/images/user/user-06.jpg differ diff --git a/tailadmin/src/images/user/user-07.jpg b/tailadmin/src/images/user/user-07.jpg new file mode 100644 index 0000000..7e8f58d Binary files /dev/null and b/tailadmin/src/images/user/user-07.jpg differ diff --git a/tailadmin/src/images/user/user-08.jpg b/tailadmin/src/images/user/user-08.jpg new file mode 100644 index 0000000..86d14ef Binary files /dev/null and b/tailadmin/src/images/user/user-08.jpg differ diff --git a/tailadmin/src/images/user/user-09.jpg b/tailadmin/src/images/user/user-09.jpg new file mode 100644 index 0000000..35942ed Binary files /dev/null and b/tailadmin/src/images/user/user-09.jpg differ diff --git a/tailadmin/src/images/user/user-10.jpg b/tailadmin/src/images/user/user-10.jpg new file mode 100644 index 0000000..e330208 Binary files /dev/null and b/tailadmin/src/images/user/user-10.jpg differ diff --git a/tailadmin/src/images/user/user-11.jpg b/tailadmin/src/images/user/user-11.jpg new file mode 100644 index 0000000..7aa2dd9 Binary files /dev/null and b/tailadmin/src/images/user/user-11.jpg differ diff --git a/tailadmin/src/images/user/user-12.jpg b/tailadmin/src/images/user/user-12.jpg new file mode 100644 index 0000000..2b9065c Binary files /dev/null and b/tailadmin/src/images/user/user-12.jpg differ diff --git a/tailadmin/src/images/user/user-13.jpg b/tailadmin/src/images/user/user-13.jpg new file mode 100644 index 0000000..7657777 Binary files /dev/null and b/tailadmin/src/images/user/user-13.jpg differ diff --git a/tailadmin/src/images/user/user-14.jpg b/tailadmin/src/images/user/user-14.jpg new file mode 100644 index 0000000..28ef7a9 Binary files /dev/null and b/tailadmin/src/images/user/user-14.jpg differ diff --git a/tailadmin/src/images/user/user-15.jpg b/tailadmin/src/images/user/user-15.jpg new file mode 100644 index 0000000..e39fb30 Binary files /dev/null and b/tailadmin/src/images/user/user-15.jpg differ diff --git a/tailadmin/src/images/user/user-16.jpg b/tailadmin/src/images/user/user-16.jpg new file mode 100644 index 0000000..f23e96c Binary files /dev/null and b/tailadmin/src/images/user/user-16.jpg differ diff --git a/tailadmin/src/images/user/user-17.jpg b/tailadmin/src/images/user/user-17.jpg new file mode 100644 index 0000000..4effac3 Binary files /dev/null and b/tailadmin/src/images/user/user-17.jpg differ diff --git a/tailadmin/src/images/user/user-18.jpg b/tailadmin/src/images/user/user-18.jpg new file mode 100644 index 0000000..4660835 Binary files /dev/null and b/tailadmin/src/images/user/user-18.jpg differ diff --git a/tailadmin/src/images/user/user-19.jpg b/tailadmin/src/images/user/user-19.jpg new file mode 100644 index 0000000..b8d2ae9 Binary files /dev/null and b/tailadmin/src/images/user/user-19.jpg differ diff --git a/tailadmin/src/images/user/user-20.jpg b/tailadmin/src/images/user/user-20.jpg new file mode 100644 index 0000000..6acae07 Binary files /dev/null and b/tailadmin/src/images/user/user-20.jpg differ diff --git a/tailadmin/src/images/user/user-21.jpg b/tailadmin/src/images/user/user-21.jpg new file mode 100644 index 0000000..d86084c Binary files /dev/null and b/tailadmin/src/images/user/user-21.jpg differ diff --git a/tailadmin/src/images/user/user-22.jpg b/tailadmin/src/images/user/user-22.jpg new file mode 100644 index 0000000..9cf7e13 Binary files /dev/null and b/tailadmin/src/images/user/user-22.jpg differ diff --git a/tailadmin/src/images/user/user-23.jpg b/tailadmin/src/images/user/user-23.jpg new file mode 100644 index 0000000..b79ffec Binary files /dev/null and b/tailadmin/src/images/user/user-23.jpg differ diff --git a/tailadmin/src/images/user/user-24.jpg b/tailadmin/src/images/user/user-24.jpg new file mode 100644 index 0000000..ee09128 Binary files /dev/null and b/tailadmin/src/images/user/user-24.jpg differ diff --git a/tailadmin/src/images/user/user-25.jpg b/tailadmin/src/images/user/user-25.jpg new file mode 100644 index 0000000..e930892 Binary files /dev/null and b/tailadmin/src/images/user/user-25.jpg differ diff --git a/tailadmin/src/images/user/user-26.jpg b/tailadmin/src/images/user/user-26.jpg new file mode 100644 index 0000000..c4934b4 Binary files /dev/null and b/tailadmin/src/images/user/user-26.jpg differ diff --git a/tailadmin/src/images/user/user-27.jpg b/tailadmin/src/images/user/user-27.jpg new file mode 100644 index 0000000..2a08ebe Binary files /dev/null and b/tailadmin/src/images/user/user-27.jpg differ diff --git a/tailadmin/src/images/user/user-28.jpg b/tailadmin/src/images/user/user-28.jpg new file mode 100644 index 0000000..82cf2d1 Binary files /dev/null and b/tailadmin/src/images/user/user-28.jpg differ diff --git a/tailadmin/src/images/user/user-29.jpg b/tailadmin/src/images/user/user-29.jpg new file mode 100644 index 0000000..1a1fa49 Binary files /dev/null and b/tailadmin/src/images/user/user-29.jpg differ diff --git a/tailadmin/src/images/user/user-30.jpg b/tailadmin/src/images/user/user-30.jpg new file mode 100644 index 0000000..512e8dd Binary files /dev/null and b/tailadmin/src/images/user/user-30.jpg differ diff --git a/tailadmin/src/images/user/user-31.jpg b/tailadmin/src/images/user/user-31.jpg new file mode 100644 index 0000000..0144b84 Binary files /dev/null and b/tailadmin/src/images/user/user-31.jpg differ diff --git a/tailadmin/src/images/user/user-32.jpg b/tailadmin/src/images/user/user-32.jpg new file mode 100644 index 0000000..712e336 Binary files /dev/null and b/tailadmin/src/images/user/user-32.jpg differ diff --git a/tailadmin/src/images/user/user-33.jpg b/tailadmin/src/images/user/user-33.jpg new file mode 100644 index 0000000..1f7796b Binary files /dev/null and b/tailadmin/src/images/user/user-33.jpg differ diff --git a/tailadmin/src/images/user/user-34.jpg b/tailadmin/src/images/user/user-34.jpg new file mode 100644 index 0000000..40202f6 Binary files /dev/null and b/tailadmin/src/images/user/user-34.jpg differ diff --git a/tailadmin/src/images/user/user-35.jpg b/tailadmin/src/images/user/user-35.jpg new file mode 100644 index 0000000..b78921a Binary files /dev/null and b/tailadmin/src/images/user/user-35.jpg differ diff --git a/tailadmin/src/images/user/user-36.jpg b/tailadmin/src/images/user/user-36.jpg new file mode 100644 index 0000000..a023f2f Binary files /dev/null and b/tailadmin/src/images/user/user-36.jpg differ diff --git a/tailadmin/src/images/user/user-37.jpg b/tailadmin/src/images/user/user-37.jpg new file mode 100644 index 0000000..6d3186e Binary files /dev/null and b/tailadmin/src/images/user/user-37.jpg differ diff --git a/tailadmin/src/images/video-thumb/thumb-16.png b/tailadmin/src/images/video-thumb/thumb-16.png new file mode 100644 index 0000000..1f12017 Binary files /dev/null and b/tailadmin/src/images/video-thumb/thumb-16.png differ diff --git a/tailadmin/src/images/video-thumb/youtube-icon-84.svg b/tailadmin/src/images/video-thumb/youtube-icon-84.svg new file mode 100644 index 0000000..5a9478a --- /dev/null +++ b/tailadmin/src/images/video-thumb/youtube-icon-84.svg @@ -0,0 +1,4 @@ + + + + diff --git a/tailadmin/src/index.html b/tailadmin/src/index.html new file mode 100644 index 0000000..9d068c0 --- /dev/null +++ b/tailadmin/src/index.html @@ -0,0 +1,89 @@ + + + + + + + + mcServ // Home + + + + + + + + +
+ + + + + +
+ + + + + + + + + +
+
+
+
+ + + + + + + +
+
+ + + +
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+
+
+
+ + +
+ +
+ + + diff --git a/tailadmin/src/js/components/calendar-init.js b/tailadmin/src/js/components/calendar-init.js new file mode 100644 index 0000000..47d080f --- /dev/null +++ b/tailadmin/src/js/components/calendar-init.js @@ -0,0 +1,315 @@ +import { Calendar } from "@fullcalendar/core"; +import dayGridPlugin from "@fullcalendar/daygrid"; +import listPlugin from "@fullcalendar/list"; +import timeGridPlugin from "@fullcalendar/timegrid"; +import interactionPlugin from "@fullcalendar/interaction"; + +/*========Calender Js=========*/ +/*==========================*/ + +document.addEventListener("DOMContentLoaded", function () { + const calendarWrapper = document.querySelector("#calendar"); + + if (calendarWrapper) { + /*=================*/ + // Calender Date variable + /*=================*/ + const newDate = new Date(); + const getDynamicMonth = () => { + const month = newDate.getMonth() + 1; + return month < 10 ? `0${month}` : `${month}`; + }; + + /*=================*/ + // Calender Modal Elements + /*=================*/ + const getModalTitleEl = document.querySelector("#event-title"); + const getModalStartDateEl = document.querySelector("#event-start-date"); + const getModalEndDateEl = document.querySelector("#event-end-date"); + const getModalAddBtnEl = document.querySelector(".btn-add-event"); + const getModalUpdateBtnEl = document.querySelector(".btn-update-event"); + const calendarsEvents = { + Danger: "danger", + Success: "success", + Primary: "primary", + Warning: "warning", + }; + + /*=====================*/ + // Calendar Elements and options + /*=====================*/ + const calendarEl = document.querySelector("#calendar"); + + const calendarHeaderToolbar = { + left: "prev,next addEventButton", + center: "title", + right: "dayGridMonth,timeGridWeek,timeGridDay", + }; + + const calendarEventsList = [ + { + id: 1, + title: "Event Conf.", + start: `${newDate.getFullYear()}-${getDynamicMonth()}-01`, + extendedProps: { calendar: "Danger" }, + }, + { + id: 2, + title: "Seminar #4", + start: `${newDate.getFullYear()}-${getDynamicMonth()}-07`, + end: `${newDate.getFullYear()}-${getDynamicMonth()}-10`, + extendedProps: { calendar: "Success" }, + }, + { + groupId: "999", + id: 3, + title: "Meeting #5", + start: `${newDate.getFullYear()}-${getDynamicMonth()}-09T16:00:00`, + extendedProps: { calendar: "Primary" }, + }, + { + groupId: "999", + id: 4, + title: "Submission #1", + start: `${newDate.getFullYear()}-${getDynamicMonth()}-16T16:00:00`, + extendedProps: { calendar: "Warning" }, + }, + { + id: 5, + title: "Seminar #6", + start: `${newDate.getFullYear()}-${getDynamicMonth()}-11`, + end: `${newDate.getFullYear()}-${getDynamicMonth()}-13`, + extendedProps: { calendar: "Danger" }, + }, + { + id: 6, + title: "Meeting 3", + start: `${newDate.getFullYear()}-${getDynamicMonth()}-12T10:30:00`, + end: `${newDate.getFullYear()}-${getDynamicMonth()}-12T12:30:00`, + extendedProps: { calendar: "Success" }, + }, + { + id: 7, + title: "Meetup #", + start: `${newDate.getFullYear()}-${getDynamicMonth()}-12T12:00:00`, + extendedProps: { calendar: "Primary" }, + }, + { + id: 8, + title: "Submission", + start: `${newDate.getFullYear()}-${getDynamicMonth()}-12T14:30:00`, + extendedProps: { calendar: "Warning" }, + }, + { + id: 9, + title: "Attend event", + start: `${newDate.getFullYear()}-${getDynamicMonth()}-13T07:00:00`, + extendedProps: { calendar: "Success" }, + }, + { + id: 10, + title: "Project submission #2", + start: `${newDate.getFullYear()}-${getDynamicMonth()}-28`, + extendedProps: { calendar: "Primary" }, + }, + ]; + + /*=====================*/ + // Modal Functions + /*=====================*/ + const openModal = () => { + document.getElementById("eventModal").style.display = "flex"; + }; + + const closeModal = () => { + document.getElementById("eventModal").style.display = "none"; + resetModalFields(); + }; + + // Close modal when clicking outside of it + window.onclick = function (event) { + const modal = document.getElementById("eventModal"); + if (event.target === modal) { + closeModal(); + } + }; + + /*=====================*/ + // Calendar Select fn. + /*=====================*/ + const calendarSelect = (info) => { + resetModalFields(); + + getModalAddBtnEl.style.display = "flex"; + getModalUpdateBtnEl.style.display = "none"; + openModal(); + getModalStartDateEl.value = info.startStr; + getModalEndDateEl.value = info.endStr || info.startStr; + getModalTitleEl.value = ""; + }; + + /*=====================*/ + // Calendar AddEvent fn. + /*=====================*/ + const calendarAddEvent = () => { + const currentDate = new Date(); + const dd = String(currentDate.getDate()).padStart(2, "0"); + const mm = String(currentDate.getMonth() + 1).padStart(2, "0"); + const yyyy = currentDate.getFullYear(); + const combineDate = `${yyyy}-${mm}-${dd}T00:00:00`; + + getModalAddBtnEl.style.display = "flex"; + getModalUpdateBtnEl.style.display = "none"; + openModal(); + getModalStartDateEl.value = combineDate; + }; + + /*=====================*/ + // Calender Event Function + /*=====================*/ + const calendarEventClick = (info) => { + const eventObj = info.event; + + if (eventObj.url) { + window.open(eventObj.url); + info.jsEvent.preventDefault(); + } else { + const getModalEventId = eventObj._def.publicId; + const getModalEventLevel = eventObj._def.extendedProps.calendar; + const getModalCheckedRadioBtnEl = document.querySelector( + `input[value="${getModalEventLevel}"]`, + ); + + getModalTitleEl.value = eventObj.title; + getModalStartDateEl.value = eventObj.startStr.slice(0, 10); + getModalEndDateEl.value = eventObj.endStr + ? eventObj.endStr.slice(0, 10) + : ""; + if (getModalCheckedRadioBtnEl) { + getModalCheckedRadioBtnEl.checked = true; + } + getModalUpdateBtnEl.dataset.fcEventPublicId = getModalEventId; + getModalAddBtnEl.style.display = "none"; + getModalUpdateBtnEl.style.display = "block"; + openModal(); + } + }; + + /*=====================*/ + // Active Calender + /*=====================*/ + const calendar = new Calendar(calendarEl, { + plugins: [dayGridPlugin, timeGridPlugin, listPlugin, interactionPlugin], + selectable: true, + initialView: "dayGridMonth", + initialDate: `${newDate.getFullYear()}-${getDynamicMonth()}-07`, + headerToolbar: calendarHeaderToolbar, + events: calendarEventsList, + select: calendarSelect, + eventClick: calendarEventClick, + dateClick: calendarAddEvent, + customButtons: { + addEventButton: { + text: "Add Event +", + click: calendarAddEvent, + }, + }, + eventClassNames({ event: calendarEvent }) { + const getColorValue = + calendarsEvents[calendarEvent._def.extendedProps.calendar]; + return [`event-fc-color`, `fc-bg-${getColorValue}`]; + }, + }); + + /*=====================*/ + // Update Calender Event + /*=====================*/ + getModalUpdateBtnEl.addEventListener("click", () => { + const getPublicID = getModalUpdateBtnEl.dataset.fcEventPublicId; + const getTitleUpdatedValue = getModalTitleEl.value; + const setModalStartDateValue = getModalStartDateEl.value; + const setModalEndDateValue = getModalEndDateEl.value; + const getEvent = calendar.getEventById(getPublicID); + const getModalUpdatedCheckedRadioBtnEl = document.querySelector( + 'input[name="event-level"]:checked', + ); + + const getModalUpdatedCheckedRadioBtnValue = + getModalUpdatedCheckedRadioBtnEl + ? getModalUpdatedCheckedRadioBtnEl.value + : ""; + + getEvent.setProp("title", getTitleUpdatedValue); + getEvent.setDates(setModalStartDateValue, setModalEndDateValue); + getEvent.setExtendedProp("calendar", getModalUpdatedCheckedRadioBtnValue); + closeModal(); + }); + + /*=====================*/ + // Add Calender Event + /*=====================*/ + getModalAddBtnEl.addEventListener("click", () => { + const getModalCheckedRadioBtnEl = document.querySelector( + 'input[name="event-level"]:checked', + ); + + const getTitleValue = getModalTitleEl.value; + const setModalStartDateValue = getModalStartDateEl.value; + const setModalEndDateValue = getModalEndDateEl.value; + const getModalCheckedRadioBtnValue = getModalCheckedRadioBtnEl + ? getModalCheckedRadioBtnEl.value + : ""; + + calendar.addEvent({ + id: Date.now(), // Use unique ID based on timestamp + title: getTitleValue, + start: setModalStartDateValue, + end: setModalEndDateValue, + allDay: true, + extendedProps: { calendar: getModalCheckedRadioBtnValue }, + }); + closeModal(); + }); + + /*=====================*/ + // Calendar Init + /*=====================*/ + calendar.render(); + + // Reset modal fields when hidden + document.getElementById("eventModal").addEventListener("click", (event) => { + if (event.target.classList.contains("modal-close-btn")) { + closeModal(); + } + }); + + function resetModalFields() { + getModalTitleEl.value = ""; + getModalStartDateEl.value = ""; + getModalEndDateEl.value = ""; + const getModalIfCheckedRadioBtnEl = document.querySelector( + 'input[name="event-level"]:checked', + ); + if (getModalIfCheckedRadioBtnEl) { + getModalIfCheckedRadioBtnEl.checked = false; + } + } + + document + .getElementById("eventModal") + .addEventListener("hidden.bs.modal", () => { + resetModalFields(); + }); + + // Close modal when clicking on close button or outside modal + document.querySelectorAll(".modal-close-btn").forEach((btn) => { + btn.addEventListener("click", closeModal); + }); + + window.addEventListener("click", (event) => { + if (event.target === document.getElementById("eventModal")) { + closeModal(); + } + }); + } +}); diff --git a/tailadmin/src/js/components/charts/chart-01.js b/tailadmin/src/js/components/charts/chart-01.js new file mode 100644 index 0000000..4d75cca --- /dev/null +++ b/tailadmin/src/js/components/charts/chart-01.js @@ -0,0 +1,106 @@ +import ApexCharts from "apexcharts"; + +// ===== chartOne +const chart01 = () => { + const chartOneOptions = { + series: [ + { + name: "Sales", + data: [168, 385, 201, 298, 187, 195, 291, 110, 215, 390, 280, 112], + }, + ], + colors: ["#465fff"], + chart: { + fontFamily: "Outfit, sans-serif", + type: "bar", + height: 180, + toolbar: { + show: false, + }, + }, + plotOptions: { + bar: { + horizontal: false, + columnWidth: "39%", + borderRadius: 5, + borderRadiusApplication: "end", + }, + }, + dataLabels: { + enabled: false, + }, + stroke: { + show: true, + width: 4, + colors: ["transparent"], + }, + xaxis: { + categories: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec", + ], + axisBorder: { + show: false, + }, + axisTicks: { + show: false, + }, + }, + legend: { + show: true, + position: "top", + horizontalAlign: "left", + fontFamily: "Outfit", + + markers: { + radius: 99, + }, + }, + yaxis: { + title: false, + }, + grid: { + yaxis: { + lines: { + show: true, + }, + }, + }, + fill: { + opacity: 1, + }, + + tooltip: { + x: { + show: false, + }, + y: { + formatter: function (val) { + return val; + }, + }, + }, + }; + + const chartSelector = document.querySelectorAll("#chartOne"); + + if (chartSelector.length) { + const chartFour = new ApexCharts( + document.querySelector("#chartOne"), + chartOneOptions, + ); + chartFour.render(); + } +}; + +export default chart01; diff --git a/tailadmin/src/js/components/charts/chart-02.js b/tailadmin/src/js/components/charts/chart-02.js new file mode 100644 index 0000000..4791ede --- /dev/null +++ b/tailadmin/src/js/components/charts/chart-02.js @@ -0,0 +1,65 @@ +import ApexCharts from "apexcharts"; + +// ===== chartTwo +const chart02 = () => { + const chartTwoOptions = { + series: [75.55], + colors: ["#465FFF"], + chart: { + fontFamily: "Outfit, sans-serif", + type: "radialBar", + height: 330, + sparkline: { + enabled: true, + }, + }, + plotOptions: { + radialBar: { + startAngle: -90, + endAngle: 90, + hollow: { + size: "80%", + }, + track: { + background: "#E4E7EC", + strokeWidth: "100%", + margin: 5, // margin is in pixels + }, + dataLabels: { + name: { + show: false, + }, + value: { + fontSize: "36px", + fontWeight: "600", + offsetY: 60, + color: "#1D2939", + formatter: function (val) { + return val + "%"; + }, + }, + }, + }, + }, + fill: { + type: "solid", + colors: ["#465FFF"], + }, + stroke: { + lineCap: "round", + }, + labels: ["Progress"], + }; + + const chartSelector = document.querySelectorAll("#chartTwo"); + + if (chartSelector.length) { + const chartFour = new ApexCharts( + document.querySelector("#chartTwo"), + chartTwoOptions, + ); + chartFour.render(); + } +}; + +export default chart02; diff --git a/tailadmin/src/js/components/charts/chart-03.js b/tailadmin/src/js/components/charts/chart-03.js new file mode 100644 index 0000000..232ca12 --- /dev/null +++ b/tailadmin/src/js/components/charts/chart-03.js @@ -0,0 +1,113 @@ +import ApexCharts from "apexcharts"; + +// ===== chartThree +const chart03 = () => { + const chartThreeOptions = { + series: [ + { + name: "Sales", + data: [180, 190, 170, 160, 175, 165, 170, 205, 230, 210, 240, 235], + }, + { + name: "Revenue", + data: [40, 30, 50, 40, 55, 40, 70, 100, 110, 120, 150, 140], + }, + ], + legend: { + show: false, + position: "top", + horizontalAlign: "left", + }, + colors: ["#465FFF", "#9CB9FF"], + chart: { + fontFamily: "Outfit, sans-serif", + height: 310, + type: "area", + toolbar: { + show: false, + }, + }, + fill: { + gradient: { + enabled: true, + opacityFrom: 0.55, + opacityTo: 0, + }, + }, + stroke: { + curve: "straight", + width: ["2", "2"], + }, + + markers: { + size: 0, + }, + labels: { + show: false, + position: "top", + }, + grid: { + xaxis: { + lines: { + show: false, + }, + }, + yaxis: { + lines: { + show: true, + }, + }, + }, + dataLabels: { + enabled: false, + }, + tooltip: { + x: { + format: "dd MMM yyyy", + }, + }, + xaxis: { + type: "category", + categories: [ + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec", + ], + axisBorder: { + show: false, + }, + axisTicks: { + show: false, + }, + tooltip: false, + }, + yaxis: { + title: { + style: { + fontSize: "0px", + }, + }, + }, + }; + + const chartSelector = document.querySelectorAll("#chartThree"); + + if (chartSelector.length) { + const chartThree = new ApexCharts( + document.querySelector("#chartThree"), + chartThreeOptions, + ); + chartThree.render(); + } +}; + +export default chart03; diff --git a/tailadmin/src/js/components/image-resize.js b/tailadmin/src/js/components/image-resize.js new file mode 100644 index 0000000..baa82c2 --- /dev/null +++ b/tailadmin/src/js/components/image-resize.js @@ -0,0 +1,302 @@ +/* + * @author https://twitter.com/blurspline / https://github.com/zz85 + * See post @ http://www.lab4games.net/zz85/blog/2014/11/15/resizing-moving-snapping-windows-with-js-css/ + */ + +if (document.querySelectorAll("#pane").length) { + ("use strict"); + + // Minimum resizable area + var minWidth = 60; + var minHeight = 40; + + // Thresholds + var FULLSCREEN_MARGINS = -10; + var MARGINS = 4; + + // End of what's configurable. + var clicked = null; + var onRightEdge, onBottomEdge, onLeftEdge, onTopEdge; + + var rightScreenEdge, bottomScreenEdge; + + var preSnapped; + + var b, x, y; + + var redraw = false; + + var pane = document.getElementById("pane"); + var ghostpane = document.getElementById("ghostpane"); + + function setBounds(element, x, y, w, h) { + element.style.left = x + "px"; + element.style.top = y + "px"; + element.style.width = w + "px"; + element.style.height = h + "px"; + } + + function hintHide() { + setBounds(ghostpane, b.left, b.top, b.width, b.height); + ghostpane.style.opacity = 0; + + // var b = ghostpane.getBoundingClientRect(); + // ghostpane.style.top = b.top + b.height / 2; + // ghostpane.style.left = b.left + b.width / 2; + // ghostpane.style.width = 0; + // ghostpane.style.height = 0; + } + + // Mouse events + pane.addEventListener("mousedown", onMouseDown); + document.addEventListener("mousemove", onMove); + document.addEventListener("mouseup", onUp); + + // Touch events + pane.addEventListener("touchstart", onTouchDown); + document.addEventListener("touchmove", onTouchMove); + document.addEventListener("touchend", onTouchEnd); + + function onTouchDown(e) { + onDown(e.touches[0]); + e.preventDefault(); + } + + function onTouchMove(e) { + onMove(e.touches[0]); + } + + function onTouchEnd(e) { + if (e.touches.length == 0) onUp(e.changedTouches[0]); + } + + function onMouseDown(e) { + onDown(e); + e.preventDefault(); + } + + function onDown(e) { + calc(e); + + var isResizing = onRightEdge || onBottomEdge || onTopEdge || onLeftEdge; + + clicked = { + x: x, + y: y, + cx: e.clientX, + cy: e.clientY, + w: b.width, + h: b.height, + isResizing: isResizing, + isMoving: !isResizing && canMove(), + onTopEdge: onTopEdge, + onLeftEdge: onLeftEdge, + onRightEdge: onRightEdge, + onBottomEdge: onBottomEdge, + }; + } + + function canMove() { + return x > 0 && x < b.width && y > 0 && y < b.height && y < 30; + } + + function calc(e) { + b = pane.getBoundingClientRect(); + x = e.clientX - b.left; + y = e.clientY - b.top; + + onTopEdge = y < MARGINS; + onLeftEdge = x < MARGINS; + onRightEdge = x >= b.width - MARGINS; + onBottomEdge = y >= b.height - MARGINS; + + rightScreenEdge = window.innerWidth - MARGINS; + bottomScreenEdge = window.innerHeight - MARGINS; + } + + var e; + + function onMove(ee) { + calc(ee); + + e = ee; + + redraw = true; + } + + function animate() { + requestAnimationFrame(animate); + + if (!redraw) return; + + redraw = false; + + if (clicked && clicked.isResizing) { + if (clicked.onRightEdge) pane.style.width = Math.max(x, minWidth) + "px"; + if (clicked.onBottomEdge) + pane.style.height = Math.max(y, minHeight) + "px"; + + if (clicked.onLeftEdge) { + var currentWidth = Math.max( + clicked.cx - e.clientX + clicked.w, + minWidth, + ); + if (currentWidth > minWidth) { + pane.style.width = currentWidth + "px"; + pane.style.left = e.clientX + "px"; + } + } + + if (clicked.onTopEdge) { + var currentHeight = Math.max( + clicked.cy - e.clientY + clicked.h, + minHeight, + ); + if (currentHeight > minHeight) { + pane.style.height = currentHeight + "px"; + pane.style.top = e.clientY + "px"; + } + } + + hintHide(); + + return; + } + + if (clicked && clicked.isMoving) { + if ( + b.top < FULLSCREEN_MARGINS || + b.left < FULLSCREEN_MARGINS || + b.right > window.innerWidth - FULLSCREEN_MARGINS || + b.bottom > window.innerHeight - FULLSCREEN_MARGINS + ) { + // hintFull(); + setBounds(ghostpane, 0, 0, window.innerWidth, window.innerHeight); + ghostpane.style.opacity = 0.2; + } else if (b.top < MARGINS) { + // hintTop(); + setBounds(ghostpane, 0, 0, window.innerWidth, window.innerHeight / 2); + ghostpane.style.opacity = 0.2; + } else if (b.left < MARGINS) { + // hintLeft(); + setBounds(ghostpane, 0, 0, window.innerWidth / 2, window.innerHeight); + ghostpane.style.opacity = 0.2; + } else if (b.right > rightScreenEdge) { + // hintRight(); + setBounds( + ghostpane, + window.innerWidth / 2, + 0, + window.innerWidth / 2, + window.innerHeight, + ); + ghostpane.style.opacity = 0.2; + } else if (b.bottom > bottomScreenEdge) { + // hintBottom(); + setBounds( + ghostpane, + 0, + window.innerHeight / 2, + window.innerWidth, + window.innerWidth / 2, + ); + ghostpane.style.opacity = 0.2; + } else { + hintHide(); + } + + if (preSnapped) { + setBounds( + pane, + e.clientX - preSnapped.width / 2, + e.clientY - Math.min(clicked.y, preSnapped.height), + preSnapped.width, + preSnapped.height, + ); + return; + } + + // moving + pane.style.top = e.clientY - clicked.y + "px"; + pane.style.left = e.clientX - clicked.x + "px"; + + return; + } + + // This code executes when mouse moves without clicking + + // style cursor + if ((onRightEdge && onBottomEdge) || (onLeftEdge && onTopEdge)) { + pane.style.cursor = "nwse-resize"; + } else if ((onRightEdge && onTopEdge) || (onBottomEdge && onLeftEdge)) { + pane.style.cursor = "nesw-resize"; + } else if (onRightEdge || onLeftEdge) { + pane.style.cursor = "ew-resize"; + } else if (onBottomEdge || onTopEdge) { + pane.style.cursor = "ns-resize"; + } else if (canMove()) { + pane.style.cursor = "move"; + } else { + pane.style.cursor = "default"; + } + } + + animate(); + + function onUp(e) { + calc(e); + + if (clicked && clicked.isMoving) { + // Snap + var snapped = { + width: b.width, + height: b.height, + }; + + if ( + b.top < FULLSCREEN_MARGINS || + b.left < FULLSCREEN_MARGINS || + b.right > window.innerWidth - FULLSCREEN_MARGINS || + b.bottom > window.innerHeight - FULLSCREEN_MARGINS + ) { + // hintFull(); + setBounds(pane, 0, 0, window.innerWidth, window.innerHeight); + preSnapped = snapped; + } else if (b.top < MARGINS) { + // hintTop(); + setBounds(pane, 0, 0, window.innerWidth, window.innerHeight / 2); + preSnapped = snapped; + } else if (b.left < MARGINS) { + // hintLeft(); + setBounds(pane, 0, 0, window.innerWidth / 2, window.innerHeight); + preSnapped = snapped; + } else if (b.right > rightScreenEdge) { + // hintRight(); + setBounds( + pane, + window.innerWidth / 2, + 0, + window.innerWidth / 2, + window.innerHeight, + ); + preSnapped = snapped; + } else if (b.bottom > bottomScreenEdge) { + // hintBottom(); + setBounds( + pane, + 0, + window.innerHeight / 2, + window.innerWidth, + window.innerWidth / 2, + ); + preSnapped = snapped; + } else { + preSnapped = null; + } + + hintHide(); + } + + clicked = null; + } +} diff --git a/tailadmin/src/js/components/map-01.js b/tailadmin/src/js/components/map-01.js new file mode 100644 index 0000000..1f9b2d2 --- /dev/null +++ b/tailadmin/src/js/components/map-01.js @@ -0,0 +1,63 @@ +import jsVectorMap from "jsvectormap"; +import "jsvectormap/dist/maps/world"; + +const map01 = () => { + const mapSelectorOne = document.querySelectorAll("#mapOne"); + + if (mapSelectorOne.length) { + const mapOne = new jsVectorMap({ + selector: "#mapOne", + map: "world", + zoomButtons: false, + + regionStyle: { + initial: { + fontFamily: "Outfit", + fill: "#D9D9D9", + }, + hover: { + fillOpacity: 1, + fill: "#465fff", + }, + }, + markers: [ + { + name: "Egypt", + coords: [26.8206, 30.8025], + }, + { + name: "United Kingdom", + coords: [55.3781, 3.436], + }, + { + name: "United States", + coords: [37.0902, -95.7129], + }, + ], + + markerStyle: { + initial: { + strokeWidth: 1, + fill: "#465fff", + fillOpacity: 1, + r: 4, + }, + hover: { + fill: "#465fff", + fillOpacity: 1, + }, + selected: {}, + selectedHover: {}, + }, + + onRegionTooltipShow: function (tooltip, code) { + if (code === "EG") { + tooltip.selector.innerHTML = + tooltip.text() + " (Hello Russia)"; + } + }, + }); + } +}; + +export default map01; diff --git a/tailadmin/src/js/index.js b/tailadmin/src/js/index.js new file mode 100644 index 0000000..44f8a0c --- /dev/null +++ b/tailadmin/src/js/index.js @@ -0,0 +1,118 @@ +import "jsvectormap/dist/jsvectormap.min.css"; +import "flatpickr/dist/flatpickr.min.css"; +import "dropzone/dist/dropzone.css"; +import "../css/style.css"; + +import Alpine from "alpinejs"; +import persist from "@alpinejs/persist"; +import flatpickr from "flatpickr"; +import Dropzone from "dropzone"; + +import chart01 from "./components/charts/chart-01"; +import chart02 from "./components/charts/chart-02"; +import chart03 from "./components/charts/chart-03"; +import map01 from "./components/map-01"; +import "./components/calendar-init.js"; +import "./components/image-resize"; + +Alpine.plugin(persist); +window.Alpine = Alpine; +Alpine.start(); + +// Init flatpickr +flatpickr(".datepicker", { + mode: "range", + static: true, + monthSelectorType: "static", + dateFormat: "M j", + defaultDate: [new Date().setDate(new Date().getDate() - 6), new Date()], + prevArrow: + '', + nextArrow: + '', + onReady: (selectedDates, dateStr, instance) => { + // eslint-disable-next-line no-param-reassign + instance.element.value = dateStr.replace("to", "-"); + const customClass = instance.element.getAttribute("data-class"); + instance.calendarContainer.classList.add(customClass); + }, + onChange: (selectedDates, dateStr, instance) => { + // eslint-disable-next-line no-param-reassign + instance.element.value = dateStr.replace("to", "-"); + }, +}); + +// Init Dropzone +const dropzoneArea = document.querySelectorAll("#demo-upload"); + +if (dropzoneArea.length) { + let myDropzone = new Dropzone("#demo-upload", { url: "/file/post" }); +} + +// Document Loaded +document.addEventListener("DOMContentLoaded", () => { + chart01(); + chart02(); + chart03(); + map01(); +}); + +// Get the current year +const year = document.getElementById("year"); +if (year) { + year.textContent = new Date().getFullYear(); +} + +// For Copy// +document.addEventListener("DOMContentLoaded", () => { + const copyInput = document.getElementById("copy-input"); + if (copyInput) { + // Select the copy button and input field + const copyButton = document.getElementById("copy-button"); + const copyText = document.getElementById("copy-text"); + const websiteInput = document.getElementById("website-input"); + + // Event listener for the copy button + copyButton.addEventListener("click", () => { + // Copy the input value to the clipboard + navigator.clipboard.writeText(websiteInput.value).then(() => { + // Change the text to "Copied" + copyText.textContent = "Copied"; + + // Reset the text back to "Copy" after 2 seconds + setTimeout(() => { + copyText.textContent = "Copy"; + }, 2000); + }); + }); + } +}); + +document.addEventListener("DOMContentLoaded", function () { + const searchInput = document.getElementById("search-input"); + const searchButton = document.getElementById("search-button"); + + // Function to focus the search input + function focusSearchInput() { + searchInput.focus(); + } + + // Add click event listener to the search button + searchButton.addEventListener("click", focusSearchInput); + + // Add keyboard event listener for Cmd+K (Mac) or Ctrl+K (Windows/Linux) + document.addEventListener("keydown", function (event) { + if ((event.metaKey || event.ctrlKey) && event.key === "k") { + event.preventDefault(); // Prevent the default browser behavior + focusSearchInput(); + } + }); + + // Add keyboard event listener for "/" key + document.addEventListener("keydown", function (event) { + if (event.key === "/" && document.activeElement !== searchInput) { + event.preventDefault(); // Prevent the "/" character from being typed + focusSearchInput(); + } + }); +}); diff --git a/tailadmin/src/line-chart.html b/tailadmin/src/line-chart.html new file mode 100644 index 0000000..b8fd6d5 --- /dev/null +++ b/tailadmin/src/line-chart.html @@ -0,0 +1,82 @@ + + + + + + + + Line Chart | TailAdmin - Tailwind CSS Admin Dashboard Template + + + + + + + + +
+ + + + + +
+ + + + + + + + + +
+
+ +
+ +
+ + +
+
+
+

+ Line Chart 1 +

+
+
+ +
+
+
+ +
+
+
+
+
+ +
+ +
+ + + diff --git a/tailadmin/src/partials/alert/alert-error.html b/tailadmin/src/partials/alert/alert-error.html new file mode 100644 index 0000000..bc77c7c --- /dev/null +++ b/tailadmin/src/partials/alert/alert-error.html @@ -0,0 +1,76 @@ +
+
+
+ + + +
+ +
+

+ Error Message +

+ +

+ You can insert a description for the message here.The text relates to + the action that has been performed. +

+ + + Learn more + +
+
+
+ +
+
+
+ + + +
+ +
+

+ Error Message +

+ +

+ You can insert a description for the message here.The text relates to + the action that has been performed. +

+
+
+
diff --git a/tailadmin/src/partials/alert/alert-info.html b/tailadmin/src/partials/alert/alert-info.html new file mode 100644 index 0000000..615e190 --- /dev/null +++ b/tailadmin/src/partials/alert/alert-info.html @@ -0,0 +1,76 @@ +
+
+
+ + + +
+ +
+

+ Success Message +

+ +

+ You can insert a description for the message here.The text relates to + the action that has been performed. +

+ + + Learn more + +
+
+
+ +
+
+
+ + + +
+ +
+

+ Success Message +

+ +

+ You can insert a description for the message here.The text relates to + the action that has been performed. +

+
+
+
diff --git a/tailadmin/src/partials/alert/alert-success.html b/tailadmin/src/partials/alert/alert-success.html new file mode 100644 index 0000000..3620017 --- /dev/null +++ b/tailadmin/src/partials/alert/alert-success.html @@ -0,0 +1,76 @@ +
+
+
+ + + +
+ +
+

+ Success Message +

+ +

+ You can insert a description for the message here.The text relates to + the action that has been performed. +

+ + + Learn more + +
+
+
+ +
+
+
+ + + +
+ +
+

+ Success Message +

+ +

+ You can insert a description for the message here.The text relates to + the action that has been performed. +

+
+
+
diff --git a/tailadmin/src/partials/alert/alert-warning.html b/tailadmin/src/partials/alert/alert-warning.html new file mode 100644 index 0000000..9c05fe9 --- /dev/null +++ b/tailadmin/src/partials/alert/alert-warning.html @@ -0,0 +1,76 @@ +
+
+
+ + + +
+ +
+

+ Warning Message +

+ +

+ You can insert a description for the message here.The text relates to + the action that has been performed. +

+ + + Learn more + +
+
+
+ +
+
+
+ + + +
+ +
+

+ Warning Message +

+ +

+ You can insert a description for the message here.The text relates to + the action that has been performed. +

+
+
+
diff --git a/tailadmin/src/partials/avatar/avatar-01.html b/tailadmin/src/partials/avatar/avatar-01.html new file mode 100644 index 0000000..d03930b --- /dev/null +++ b/tailadmin/src/partials/avatar/avatar-01.html @@ -0,0 +1,49 @@ +
+
+ user +
+ +
+ user +
+ +
+ user +
+ +
+ user +
+ +
+ user +
+ +
+ user +
+
diff --git a/tailadmin/src/partials/avatar/avatar-02.html b/tailadmin/src/partials/avatar/avatar-02.html new file mode 100644 index 0000000..d7f7157 --- /dev/null +++ b/tailadmin/src/partials/avatar/avatar-02.html @@ -0,0 +1,73 @@ +
+
+ user + + +
+ +
+ user + + +
+ +
+ user + + +
+ +
+ user + + +
+ +
+ user + + +
+ +
+ user + + +
+
diff --git a/tailadmin/src/partials/avatar/avatar-03.html b/tailadmin/src/partials/avatar/avatar-03.html new file mode 100644 index 0000000..e50853a --- /dev/null +++ b/tailadmin/src/partials/avatar/avatar-03.html @@ -0,0 +1,73 @@ +
+
+ user + + +
+ +
+ user + + +
+ +
+ user + + +
+ +
+ user + + +
+ +
+ user + + +
+ +
+ user + + +
+
diff --git a/tailadmin/src/partials/avatar/avatar-04.html b/tailadmin/src/partials/avatar/avatar-04.html new file mode 100644 index 0000000..5a9aefd --- /dev/null +++ b/tailadmin/src/partials/avatar/avatar-04.html @@ -0,0 +1,73 @@ +
+
+ user + + +
+ +
+ user + + +
+ +
+ user + + +
+ +
+ user + + +
+ +
+ user + + +
+ +
+ user + + +
+
diff --git a/tailadmin/src/partials/badge/badge-01.html b/tailadmin/src/partials/badge/badge-01.html new file mode 100644 index 0000000..d430860 --- /dev/null +++ b/tailadmin/src/partials/badge/badge-01.html @@ -0,0 +1,50 @@ +
+ + + Primary + + + + + Success + + + + + Error + + + + + Warning + + + + + Info + + + + + Light + + + + + Dark + +
diff --git a/tailadmin/src/partials/badge/badge-02.html b/tailadmin/src/partials/badge/badge-02.html new file mode 100644 index 0000000..05cc42c --- /dev/null +++ b/tailadmin/src/partials/badge/badge-02.html @@ -0,0 +1,50 @@ +
+ + + Primary + + + + + Success + + + + + Error + + + + + Warning + + + + + Info + + + + + Light + + + + + Dark + +
diff --git a/tailadmin/src/partials/badge/badge-03.html b/tailadmin/src/partials/badge/badge-03.html new file mode 100644 index 0000000..fa91630 --- /dev/null +++ b/tailadmin/src/partials/badge/badge-03.html @@ -0,0 +1,161 @@ +
+ + + + + + + Primary + + + + + + + + Success + + + + + + + + + Error + + + + + + + + + Warning + + + + + + + + + Info + + + + + + + + + Light + + + + + + + + + Dark + +
diff --git a/tailadmin/src/partials/badge/badge-04.html b/tailadmin/src/partials/badge/badge-04.html new file mode 100644 index 0000000..f6a27e7 --- /dev/null +++ b/tailadmin/src/partials/badge/badge-04.html @@ -0,0 +1,162 @@ +
+ + + + + + + Primary + + + + + + + + + Success + + + + + + + + + Error + + + + + + + + + Warning + + + + + + + + + Info + + + + + + + + + Light + + + + + + + + + Dark + +
diff --git a/tailadmin/src/partials/badge/badge-05.html b/tailadmin/src/partials/badge/badge-05.html new file mode 100644 index 0000000..cf7ea40 --- /dev/null +++ b/tailadmin/src/partials/badge/badge-05.html @@ -0,0 +1,162 @@ +
+ + + Primary + + + + + + + + + Success + + + + + + + + + Error + + + + + + + + + Warning + + + + + + + + + Info + + + + + + + + + Light + + + + + + + + + Dark + + + + + +
diff --git a/tailadmin/src/partials/badge/badge-06.html b/tailadmin/src/partials/badge/badge-06.html new file mode 100644 index 0000000..da158fa --- /dev/null +++ b/tailadmin/src/partials/badge/badge-06.html @@ -0,0 +1,162 @@ +
+ + + Primary + + + + + + + + + Success + + + + + + + + + Error + + + + + + + + + Warning + + + + + + + + + Info + + + + + + + + + Light + + + + + + + + + Dark + + + + + +
diff --git a/tailadmin/src/partials/breadcrumb.html b/tailadmin/src/partials/breadcrumb.html new file mode 100644 index 0000000..a3614ec --- /dev/null +++ b/tailadmin/src/partials/breadcrumb.html @@ -0,0 +1,39 @@ +
+

+ + +
diff --git a/tailadmin/src/partials/buttons/button-01.html b/tailadmin/src/partials/buttons/button-01.html new file mode 100644 index 0000000..81840cb --- /dev/null +++ b/tailadmin/src/partials/buttons/button-01.html @@ -0,0 +1,13 @@ +
+ + + +
diff --git a/tailadmin/src/partials/buttons/button-02.html b/tailadmin/src/partials/buttons/button-02.html new file mode 100644 index 0000000..fa7ef9d --- /dev/null +++ b/tailadmin/src/partials/buttons/button-02.html @@ -0,0 +1,44 @@ +
+ + + +
diff --git a/tailadmin/src/partials/buttons/button-03.html b/tailadmin/src/partials/buttons/button-03.html new file mode 100644 index 0000000..c637277 --- /dev/null +++ b/tailadmin/src/partials/buttons/button-03.html @@ -0,0 +1,44 @@ +
+ + + +
diff --git a/tailadmin/src/partials/buttons/button-04.html b/tailadmin/src/partials/buttons/button-04.html new file mode 100644 index 0000000..3f90a57 --- /dev/null +++ b/tailadmin/src/partials/buttons/button-04.html @@ -0,0 +1,13 @@ +
+ + + +
diff --git a/tailadmin/src/partials/buttons/button-05.html b/tailadmin/src/partials/buttons/button-05.html new file mode 100644 index 0000000..b1ed7e7 --- /dev/null +++ b/tailadmin/src/partials/buttons/button-05.html @@ -0,0 +1,43 @@ +
+ + + +
diff --git a/tailadmin/src/partials/buttons/button-06.html b/tailadmin/src/partials/buttons/button-06.html new file mode 100644 index 0000000..77750bf --- /dev/null +++ b/tailadmin/src/partials/buttons/button-06.html @@ -0,0 +1,45 @@ +
+ + + +
diff --git a/tailadmin/src/partials/calendar-event-modal.html b/tailadmin/src/partials/calendar-event-modal.html new file mode 100644 index 0000000..61e089b --- /dev/null +++ b/tailadmin/src/partials/calendar-event-modal.html @@ -0,0 +1,283 @@ + + + diff --git a/tailadmin/src/partials/chart/chart-01.html b/tailadmin/src/partials/chart/chart-01.html new file mode 100644 index 0000000..61c0a95 --- /dev/null +++ b/tailadmin/src/partials/chart/chart-01.html @@ -0,0 +1,57 @@ +
+
+

+ Monthly Sales +

+ +
+ +
+ + +
+
+
+ +
+
+
+
+
+
diff --git a/tailadmin/src/partials/chart/chart-02.html b/tailadmin/src/partials/chart/chart-02.html new file mode 100644 index 0000000..c4b9739 --- /dev/null +++ b/tailadmin/src/partials/chart/chart-02.html @@ -0,0 +1,157 @@ +
+
+
+
+

+ Monthly Target +

+

+ Target you’ve set for each month +

+
+
+ +
+ + +
+
+
+
+
+ +10% +
+

+ You earn $3287 today, it's higher than last month. Keep up your good work! +

+
+ +
+
+

+ Target +

+

+ $20K + + + +

+
+ +
+ +
+

+ Revenue +

+

+ $20K + + + +

+
+ +
+ +
+

+ Today +

+

+ $20K + + + +

+
+
+
diff --git a/tailadmin/src/partials/chart/chart-03.html b/tailadmin/src/partials/chart/chart-03.html new file mode 100644 index 0000000..2270d1e --- /dev/null +++ b/tailadmin/src/partials/chart/chart-03.html @@ -0,0 +1,74 @@ +
+
+
+

+ Statistics +

+

+ Target you’ve set for each month +

+
+ +
+
+ + + +
+ +
+ +
+ + + +
+
+
+
+
+
+
+
diff --git a/tailadmin/src/partials/common-grid-shape.html b/tailadmin/src/partials/common-grid-shape.html new file mode 100644 index 0000000..8338591 --- /dev/null +++ b/tailadmin/src/partials/common-grid-shape.html @@ -0,0 +1,8 @@ +
+ grid +
+
+ grid +
diff --git a/tailadmin/src/partials/common-social-links.html b/tailadmin/src/partials/common-social-links.html new file mode 100644 index 0000000..d39cab5 --- /dev/null +++ b/tailadmin/src/partials/common-social-links.html @@ -0,0 +1,81 @@ +

+ Follow Us On +

+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/tailadmin/src/partials/datepicker.html b/tailadmin/src/partials/datepicker.html new file mode 100644 index 0000000..57f85f9 --- /dev/null +++ b/tailadmin/src/partials/datepicker.html @@ -0,0 +1,26 @@ +
+ +
+ + + +
+
diff --git a/tailadmin/src/partials/grid-image/image-01.html b/tailadmin/src/partials/grid-image/image-01.html new file mode 100644 index 0000000..8aafee0 --- /dev/null +++ b/tailadmin/src/partials/grid-image/image-01.html @@ -0,0 +1,13 @@ +
+
+ Cover +
+
+
diff --git a/tailadmin/src/partials/grid-image/image-02.html b/tailadmin/src/partials/grid-image/image-02.html new file mode 100644 index 0000000..114182b --- /dev/null +++ b/tailadmin/src/partials/grid-image/image-02.html @@ -0,0 +1,17 @@ +
+
+ image grid +
+ +
+ image grid +
+
diff --git a/tailadmin/src/partials/grid-image/image-03.html b/tailadmin/src/partials/grid-image/image-03.html new file mode 100644 index 0000000..56f448f --- /dev/null +++ b/tailadmin/src/partials/grid-image/image-03.html @@ -0,0 +1,25 @@ +
+
+ image grid +
+ +
+ image grid +
+ +
+ image grid +
+
diff --git a/tailadmin/src/partials/header.html b/tailadmin/src/partials/header.html new file mode 100644 index 0000000..65b0cb1 --- /dev/null +++ b/tailadmin/src/partials/header.html @@ -0,0 +1,298 @@ +
+
+
+ + + + + + Logo + + + + + + + +
+
+ + + + + +
+ + + User + + + Musharof + + + + + + + +
+
+ + Musharof Chowdhury + + + randomuser@pimjo.com + +
+ + + +
+ +
+ +
+
+
diff --git a/tailadmin/src/partials/map-01.html b/tailadmin/src/partials/map-01.html new file mode 100644 index 0000000..fcbf68c --- /dev/null +++ b/tailadmin/src/partials/map-01.html @@ -0,0 +1,125 @@ +
+
+
+

+ Customers Demographic +

+

+ Number of customer based on country +

+
+ +
+ +
+ + +
+
+
+
+
+
+ +
+
+
+
+ usa +
+
+

+ USA +

+ + 2,379 Customers + +
+
+ +
+
+
+
+

+ 79% +

+
+
+ +
+
+
+ france +
+
+

+ France +

+ + 589 Customers + +
+
+ +
+
+
+
+

+ 23% +

+
+
+
+
diff --git a/tailadmin/src/partials/media-card.html b/tailadmin/src/partials/media-card.html new file mode 100644 index 0000000..ed28212 --- /dev/null +++ b/tailadmin/src/partials/media-card.html @@ -0,0 +1,372 @@ +
+
+
+

+ All Media +

+ +
+
+ + + +
+ + +
+
+
+
+
+ +
+
+
+ + + +
+ +
+

+ Image +

+ + 17% Used + +
+
+ +
+ + 245 files + + + 26.40 GB + +
+
+ + +
+
+
+ + + +
+ +
+

+ Videos +

+ + 22% Used + +
+
+ +
+ + 245 files + + + 26.40 GB + +
+
+ + +
+
+
+ + + +
+ +
+

+ Audio +

+ + 24% Used + +
+
+ +
+ + 245 files + + + 26.40 GB + +
+
+ + +
+
+
+ + + +
+ +
+

+ Apps +

+ + 46% Used + +
+
+ +
+ + 245 files + + + 26.40 GB + +
+
+ + +
+
+
+ + + +
+ +
+

+ Docs +

+ + 18% Used + +
+
+ +
+ + 245 files + + + 26.40 GB + +
+
+ + +
+
+
+ + + +
+ +
+

+ Downloads +

+ + 16% Used + +
+
+ +
+ + 245 files + + + 26.40 GB + +
+
+
+
+
diff --git a/tailadmin/src/partials/metric-group/metric-group-01.html b/tailadmin/src/partials/metric-group/metric-group-01.html new file mode 100644 index 0000000..f982fec --- /dev/null +++ b/tailadmin/src/partials/metric-group/metric-group-01.html @@ -0,0 +1,75 @@ +
+ +
+
+ + + +
+ +
+
+ Servers +

+

+
+
+
+ + + +
+
+ + + +
+ +
+
+ Users +

+

+
+
+
+ +
diff --git a/tailadmin/src/partials/overlay.html b/tailadmin/src/partials/overlay.html new file mode 100644 index 0000000..5f31dc0 --- /dev/null +++ b/tailadmin/src/partials/overlay.html @@ -0,0 +1,5 @@ +
diff --git a/tailadmin/src/partials/preloader.html b/tailadmin/src/partials/preloader.html new file mode 100644 index 0000000..a21b05d --- /dev/null +++ b/tailadmin/src/partials/preloader.html @@ -0,0 +1,9 @@ +
+
+
diff --git a/tailadmin/src/partials/profile/profile-address-modal.html b/tailadmin/src/partials/profile/profile-address-modal.html new file mode 100644 index 0000000..4395eb9 --- /dev/null +++ b/tailadmin/src/partials/profile/profile-address-modal.html @@ -0,0 +1,115 @@ +
+ +
+ + + +
+

+ Edit Address +

+

+ Update your details to keep your profile up-to-date. +

+
+
+
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+
+ + +
+
+
+
diff --git a/tailadmin/src/partials/profile/profile-info-modal.html b/tailadmin/src/partials/profile/profile-info-modal.html new file mode 100644 index 0000000..ce20c52 --- /dev/null +++ b/tailadmin/src/partials/profile/profile-info-modal.html @@ -0,0 +1,196 @@ +
+ +
+ + +
+

+ Edit Personal Information +

+

+ Update your details to keep your profile up-to-date. +

+
+
+
+
+
+ Social Links +
+ +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+
+
+ Personal Information +
+ +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+
+
+
+
+ + +
+
+
+
diff --git a/tailadmin/src/partials/sidebar.html b/tailadmin/src/partials/sidebar.html new file mode 100644 index 0000000..f804e68 --- /dev/null +++ b/tailadmin/src/partials/sidebar.html @@ -0,0 +1,803 @@ + diff --git a/tailadmin/src/partials/table/table-01.html b/tailadmin/src/partials/table/table-01.html new file mode 100644 index 0000000..70374bf --- /dev/null +++ b/tailadmin/src/partials/table/table-01.html @@ -0,0 +1,341 @@ +
+
+
+

+ Recent Orders +

+
+ +
+ + + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

+ Products +

+
+
+
+

+ Category +

+
+
+
+

+ Price +

+
+
+
+

+ Status +

+
+
+
+
+
+ Product +
+
+

+ Macbook pro 13” +

+ + 2 Variants + +
+
+
+
+
+

+ Laptop +

+
+
+
+

+ $2399.00 +

+
+
+
+

+ Delivered +

+
+
+
+
+
+ Product +
+
+

+ Apple Watch Ultra +

+ + 1 Variants + +
+
+
+
+
+

+ Watch +

+
+
+
+

+ $879.00 +

+
+
+
+

+ Pending +

+
+
+
+
+
+ Product +
+
+

+ iPhone 15 Pro Max +

+ + 2 Variants + +
+
+
+
+
+

+ SmartPhone +

+
+
+
+

+ $1869.00 +

+
+
+
+

+ Delivered +

+
+
+
+
+
+ Product +
+
+

+ iPad Pro 3rd Gen +

+ + 2 Variants + +
+
+
+
+
+

+ Electronics +

+
+
+
+

+ $1699.00 +

+
+
+
+

+ Canceled +

+
+
+
+
+
+ Product +
+
+

+ Airpods Pro 2nd Gen +

+ + 1 Variants + +
+
+
+
+
+

+ Accessories +

+
+
+
+

+ $240.00 +

+
+
+
+

+ Delivered +

+
+
+
+
diff --git a/tailadmin/src/partials/table/table-06.html b/tailadmin/src/partials/table/table-06.html new file mode 100644 index 0000000..ea5eaea --- /dev/null +++ b/tailadmin/src/partials/table/table-06.html @@ -0,0 +1,381 @@ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

+ User +

+
+
+
+

+ Project Name +

+
+
+
+

+ Team +

+
+
+
+

+ Status +

+
+
+
+

+ Budget +

+
+
+
+
+
+ brand +
+ +
+ + Lindsey Curtis + + + Web Designer + +
+
+
+
+
+

+ Agency Website +

+
+
+
+
+
+ user +
+
+ user +
+
+ user +
+
+
+
+
+

+ Active +

+
+
+
+

3.9K

+
+
+
+
+
+ brand +
+ +
+ + Kaiya George + + + Project Manager + +
+
+
+
+
+

+ Technology +

+
+
+
+
+
+ user +
+
+ user +
+
+
+
+
+

+ Pending +

+
+
+
+

+ 24.9K +

+
+
+
+
+
+ brand +
+ +
+ + Zain Geidt + + + Content Writer + +
+
+
+
+
+

+ Blog Writing +

+
+
+
+
+
+ user +
+
+
+
+
+

+ Active +

+
+
+
+

+ 12.7K +

+
+
+
+
+
+ brand +
+ +
+ + Abram Schleifer + + + Digital Marketer + +
+
+
+
+
+

+ Social Media +

+
+
+
+
+
+ user +
+
+ user +
+
+ user +
+
+
+
+
+

+ Cancel +

+
+
+
+

2.8K

+
+
+
+
+
+ brand +
+ +
+ + Carla George + + + Front-end Developer + +
+
+
+
+
+

+ Website +

+
+
+
+
+
+ user +
+
+ user +
+
+ user +
+
+
+
+
+

+ Active +

+
+
+
+

4,5K

+
+
+
+
diff --git a/tailadmin/src/partials/top-card-group.html b/tailadmin/src/partials/top-card-group.html new file mode 100644 index 0000000..84d0886 --- /dev/null +++ b/tailadmin/src/partials/top-card-group.html @@ -0,0 +1,251 @@ +
+ +
+
+

+ Top Channels +

+ +
+ +
+ + +
+
+
+ +
+
+ Source + Visitors +
+ +
+ + Google + + + 4.7K + +
+ +
+ + Facebook + + + 3.4K + +
+ +
+ + Threads + + + 2.9K + +
+ +
+ + Google + + + 1.5K + +
+
+ + + Channels Report + + + + +
+ + +
+
+

+ Top Pages +

+ +
+ +
+ + +
+
+
+ +
+
+ Source + Pageview +
+ +
+ + tailadmin.com + + + 4.7K + +
+ +
+ + preview.tailadmin.com + + + 3.4K + +
+ +
+ + docs.tailadmin.com + + + 2.9K + +
+ +
+ + tailadmin.com/componetns + + + 1.5K + +
+
+ + + Channels Report + + + + +
+
diff --git a/tailadmin/src/partials/upcoming-schedule.html b/tailadmin/src/partials/upcoming-schedule.html new file mode 100644 index 0000000..e54c8e3 --- /dev/null +++ b/tailadmin/src/partials/upcoming-schedule.html @@ -0,0 +1,210 @@ +
+
+

+ Upcoming Schedule +

+ +
+ +
+ + +
+
+
+ +
+
+
+
+
+
+ + + +
+
+ + Wed, 11 jan + + + 09:20 AM + +
+
+
+ + Business Analytics Press + + + Exploring the Future of Data-Driven +6 more + +
+
+ +
+
+
+ + + +
+
+ + Fri, 15 feb + + + 10:35 AM + +
+
+
+ + Business Sprint + + + Techniques from Business Sprint +2 more + +
+
+ +
+
+
+ + + +
+
+ + Thu, 18 mar + + + 1:15 AM + +
+
+
+ + Customer Review Meeting + + + Insights from the Customer Review Meeting +8 more + +
+
+
+
+
+
diff --git a/tailadmin/src/partials/video/video-01.html b/tailadmin/src/partials/video/video-01.html new file mode 100644 index 0000000..9a833bb --- /dev/null +++ b/tailadmin/src/partials/video/video-01.html @@ -0,0 +1,11 @@ +
+ +
diff --git a/tailadmin/src/partials/video/video-02.html b/tailadmin/src/partials/video/video-02.html new file mode 100644 index 0000000..e3ae147 --- /dev/null +++ b/tailadmin/src/partials/video/video-02.html @@ -0,0 +1,11 @@ +
+ +
diff --git a/tailadmin/src/partials/video/video-03.html b/tailadmin/src/partials/video/video-03.html new file mode 100644 index 0000000..90aa837 --- /dev/null +++ b/tailadmin/src/partials/video/video-03.html @@ -0,0 +1,11 @@ +
+ +
diff --git a/tailadmin/src/partials/video/video-04.html b/tailadmin/src/partials/video/video-04.html new file mode 100644 index 0000000..08009c7 --- /dev/null +++ b/tailadmin/src/partials/video/video-04.html @@ -0,0 +1,11 @@ +
+ +
diff --git a/tailadmin/src/partials/watchlist.html b/tailadmin/src/partials/watchlist.html new file mode 100644 index 0000000..437acf9 --- /dev/null +++ b/tailadmin/src/partials/watchlist.html @@ -0,0 +1,592 @@ +
+
+

+ My Watchlist +

+ +
+ +
+ + +
+
+
+ +
+
+ +
+
+
+ brand +
+ +
+

+ AAPL +

+ + Apple, Inc + +
+
+ +
+
+

+ $4,008.65 +

+
+ + + + + + + 11.01% + +
+
+ + +
+
+
+ brand +
+ +
+

+ SPOT +

+ + Spotify.com + +
+
+ +
+
+

+ $11,689.00 +

+
+ + + + + + + 9.48% + +
+
+ + +
+
+
+ brand +
+ +
+

+ ABNB +

+ + Airbnb, Inc + +
+
+ +
+
+

+ $32,227.00 +

+
+ + + + + + + 0.29% + +
+
+ + +
+
+
+ brand +
+ +
+

+ ENVT +

+ + Envato, Inc + +
+
+ +
+
+

+ $13,895.00 +

+
+ + + + + + + 3.79% + +
+
+ + +
+
+
+ brand +
+ +
+

+ QIWI +

+ + qiwi.com, Inc + +
+
+ +
+
+

+ $4,008.65 +

+
+ + + + + + + 4.52% + +
+
+ + +
+
+
+ brand +
+ +
+

+ AAPL +

+ + Apple, Inc + +
+
+ +
+
+

+ $4,008.65 +

+
+ + + + + + + 11.01% + +
+
+ + +
+
+
+ brand +
+ +
+

+ SPOT +

+ + Spotify.com + +
+
+ +
+
+

+ $11,689.00 +

+
+ + + + + + + 9.48% + +
+
+ + +
+
+
+ brand +
+ +
+

+ ABNB +

+ + Airbnb, Inc + +
+
+ +
+
+

+ $32,227.00 +

+
+ + + + + + + 0.29% + +
+
+ + +
+
+
+ brand +
+ +
+

+ ENVT +

+ + Envato, Inc + +
+
+ +
+
+

+ $13,895.00 +

+
+ + + + + + + 3.79% + +
+
+ + +
+
+
+ brand +
+ +
+

+ QIWI +

+ + qiwi.com, Inc + +
+
+ +
+
+

+ $4,008.65 +

+
+ + + + + + + 4.52% + +
+
+
+
+
diff --git a/tailadmin/src/profile.html b/tailadmin/src/profile.html new file mode 100644 index 0000000..d7bbf00 --- /dev/null +++ b/tailadmin/src/profile.html @@ -0,0 +1,407 @@ + + + + + + + Profile | TailAdmin - Tailwind CSS Admin Dashboard Template + + + + + + + +
+ + + + + +
+ + + + + + + + + +
+
+ +
+ +
+ + +
+

+ Profile +

+ +
+
+
+
+ user +
+
+

+ Musharof Chowdhury +

+
+

+ Team Manager +

+ +

+ Arizona, United States +

+
+
+
+ + + + + + + +
+
+ + +
+
+ +
+
+
+

+ Personal Information +

+ +
+
+

+ First Name +

+

+ Musharof +

+
+ +
+

+ Last Name +

+

+ Chowdhury +

+
+ +
+

+ Email address +

+

+ randomuser@pimjo.com +

+
+ +
+

+ Phone +

+

+ +09 363 398 46 +

+
+ +
+

+ Bio +

+

+ Team Manager +

+
+
+
+ + +
+
+
+
+
+

+ Address +

+ +
+
+

+ Country +

+

+ United States +

+
+ +
+

+ City/State +

+

+ Arizona, United States +

+
+ +
+

+ Postal Code +

+

+ ERT 2489 +

+
+ +
+

+ TAX ID +

+

+ AS4568384 +

+
+
+
+ + +
+
+
+
+
+ +
+ +
+ + + + + + + + diff --git a/tailadmin/src/script.html b/tailadmin/src/script.html new file mode 100644 index 0000000..1b907c1 --- /dev/null +++ b/tailadmin/src/script.html @@ -0,0 +1,51 @@ + \ No newline at end of file diff --git a/tailadmin/src/sidebar.html b/tailadmin/src/sidebar.html new file mode 100644 index 0000000..e2e6bc8 --- /dev/null +++ b/tailadmin/src/sidebar.html @@ -0,0 +1,1394 @@ + diff --git a/tailadmin/src/signin.html b/tailadmin/src/signin.html new file mode 100644 index 0000000..947c8fd --- /dev/null +++ b/tailadmin/src/signin.html @@ -0,0 +1,329 @@ + + + + + + + Sign In| TailAdmin - Tailwind CSS Admin Dashboard Template + + + + + + + +
+
+ +
+ +
+
+
+

+ Sign In +

+

+ Enter your email and password to sign in! +

+
+
+
+ + +
+
+
+
+
+
+ Or +
+
+
+
+ +
+ + +
+ +
+ +
+ + + + + + + + + +
+
+ +
+
+ +
+ Forgot password? +
+ +
+ +
+
+
+
+

+ Don't have an account? + Sign Up +

+
+
+
+
+
+ + + + +
+
+ + + diff --git a/tailadmin/src/signup.html b/tailadmin/src/signup.html new file mode 100644 index 0000000..a842680 --- /dev/null +++ b/tailadmin/src/signup.html @@ -0,0 +1,364 @@ + + + + + + + Sign Up| TailAdmin - Tailwind CSS Admin Dashboard Template + + + + + + + +
+
+ +
+ +
+
+

+ Sign Up +

+

+ Enter your email and password to sign up! +

+
+
+
+ + +
+
+
+
+
+
+ Or +
+
+
+
+
+ +
+ + +
+ +
+ + +
+
+ +
+ + +
+ +
+ +
+ + + + + + + + + +
+
+ +
+
+ +
+
+ +
+ +
+
+
+
+

+ Already have an account? + Sign In +

+
+
+
+
+ + + +
+
+ + + diff --git a/tailadmin/src/videos.html b/tailadmin/src/videos.html new file mode 100644 index 0000000..79b01c2 --- /dev/null +++ b/tailadmin/src/videos.html @@ -0,0 +1,127 @@ + + + + + + + Videos | TailAdmin - Tailwind CSS Admin Dashboard Template + + + + + + + +
+ + + + + +
+ + + + + + + + + +
+
+ +
+ +
+ +
+
+
+
+

+ Video Ratio 16:9 +

+
+
+ +
+
+
+
+

+ Video Ratio 4:3 +

+
+
+ +
+
+
+
+
+
+

+ Video Ratio 4:3 +

+
+
+ +
+
+
+
+

+ Video Ratio 1:1 +

+
+
+ +
+
+
+
+
+
+ +
+ +
+ + + diff --git a/tailadmin/webpack.config.js b/tailadmin/webpack.config.js new file mode 100755 index 0000000..b69eeb7 --- /dev/null +++ b/tailadmin/webpack.config.js @@ -0,0 +1,114 @@ +const path = require("path"); +const glob = require("glob"); +const HtmlWebpackPlugin = require("html-webpack-plugin"); +const MiniCssExtractPlugin = require("mini-css-extract-plugin"); + +const INCLUDE_PATTERN = + /\s*(?:<\/include>)?/gis; + +const processNestedHtml = (content, loaderContext, dir = null) => + !INCLUDE_PATTERN.test(content) + ? content + : content.replace(INCLUDE_PATTERN, (m, src) => { + const filePath = path.resolve(dir || loaderContext.context, src); + loaderContext.dependency(filePath); + return processNestedHtml( + loaderContext.fs.readFileSync(filePath, "utf8"), + loaderContext, + path.dirname(filePath), + ); + }); + +// HTML generation +const paths = []; +const generateHTMLPlugins = () => + glob.sync("./src/*.html").map((dir) => { + const filename = path.basename(dir); + + if (filename !== "404.html") { + paths.push(filename); + } + + return new HtmlWebpackPlugin({ + filename, + template: `./src/${filename}`, + favicon: `./src/images/favicon.ico`, + inject: "body", + }); + }); + +module.exports = { + mode: "development", + entry: "./src/js/index.js", + devServer: { + static: { + directory: path.join(__dirname, "./build"), + }, + compress: true, + port: 3000, + hot: true, + }, + module: { + rules: [ + { + test: /\.m?js$/, + exclude: /node_modules/, + use: { + loader: "babel-loader", + options: { + presets: ["@babel/preset-env"], + }, + }, + }, + { + test: /\.css$/i, + use: [ + MiniCssExtractPlugin.loader, + "css-loader", + { + loader: "postcss-loader", + options: { + postcssOptions: { + plugins: [ + require("autoprefixer")({ + overrideBrowserslist: ["last 2 versions"], + }), + ], + }, + }, + }, + ], + }, + { + test: /\.(png|svg|jpg|jpeg|gif)$/i, + type: "asset/resource", + }, + { + test: /\.(woff|woff2|eot|ttf|otf)$/i, + type: "asset/resource", + }, + { + test: /\.html$/, + loader: "html-loader", + options: { + preprocessor: processNestedHtml, + }, + }, + ], + }, + plugins: [ + ...generateHTMLPlugins(), + new MiniCssExtractPlugin({ + filename: "style.css", + chunkFilename: "style.css", + }), + ], + output: { + filename: "bundle.js", + path: path.resolve(__dirname, "build"), + clean: true, + assetModuleFilename: "[path][name][ext]", + }, + target: "web", // fix for "browserslist" error message + stats: "errors-only", // suppress irrelevant log messages +};