├── CNAME ├── src ├── assets │ ├── css │ │ ├── Contact.css │ │ ├── App.css │ │ └── MiniCalendar.css │ ├── img │ │ ├── auth │ │ │ └── auth.png │ │ ├── nfts │ │ │ ├── Nft1.png │ │ │ ├── Nft2.png │ │ │ ├── Nft3.png │ │ │ ├── Nft4.png │ │ │ ├── Nft5.png │ │ │ ├── Nft6.png │ │ │ └── NftBanner1.png │ │ ├── layout │ │ │ ├── Navbar.png │ │ │ └── logoWhite.png │ │ ├── services │ │ │ ├── 3d.jpg │ │ │ ├── chat.jpg │ │ │ ├── comics.jpg │ │ │ ├── gaming.jpg │ │ │ ├── image.jpg │ │ │ ├── music.jpg │ │ │ ├── animation.jpg │ │ │ └── narrative.jpg │ │ ├── avatars │ │ │ ├── avatar1.png │ │ │ ├── avatar2.png │ │ │ ├── avatar3.png │ │ │ ├── avatar4.png │ │ │ ├── avatar5.png │ │ │ ├── avatar6.png │ │ │ ├── avatar7.png │ │ │ ├── avatar8.png │ │ │ ├── avatar9.png │ │ │ ├── avatar10.png │ │ │ ├── avatar11.png │ │ │ └── avatarSimmmple.png │ │ ├── dashboards │ │ │ ├── usa.png │ │ │ ├── Debit.png │ │ │ ├── fakeGraph.png │ │ │ ├── starbucks.jpg │ │ │ ├── balanceImg.png │ │ │ └── elipse-light.png │ │ └── profile │ │ │ ├── banner.png │ │ │ ├── image1.png │ │ │ ├── image2.png │ │ │ └── image3.png │ └── svg │ │ └── checked.svg ├── types │ ├── stylis.d.ts │ ├── images.d.ts │ ├── hui-types.d.ts │ └── react-table-config.d.ts ├── components │ ├── icons │ │ ├── CloseIcon.tsx │ │ ├── SearchIcon.tsx │ │ ├── ProfileIcon.tsx │ │ ├── ClockIcon.tsx │ │ ├── DotIcon.tsx │ │ ├── SignIn.tsx │ │ ├── DashIcon.tsx │ │ ├── MarketIcon.tsx │ │ ├── KanbanIcon.tsx │ │ ├── DarkmodeIcon.tsx │ │ ├── NotificationIcon.tsx │ │ ├── ClockIcon1.tsx │ │ ├── ThemsIcon.tsx │ │ ├── TablesIcon.tsx │ │ ├── WidgetIcon │ │ │ ├── ChartIcon.tsx │ │ │ ├── PDFIcon.tsx │ │ │ └── DollarIcon.tsx │ │ └── VideoIcon.tsx │ ├── card │ │ ├── card.css │ │ ├── index.tsx │ │ ├── CardMenu.tsx │ │ └── ServiceCard.tsx │ ├── tooltip │ │ └── index.tsx │ ├── popover │ │ └── index.tsx │ ├── fields │ │ ├── SwitchField.tsx │ │ └── InputField.tsx │ ├── calendar │ │ └── MiniCalendar.tsx │ ├── charts │ │ ├── LineAreaChart.tsx │ │ ├── BarChart.tsx │ │ ├── PieChart.tsx │ │ └── LineChart.tsx │ ├── widget │ │ └── Widget.tsx │ ├── fixedPlugin │ │ └── FixedPlugin.tsx │ ├── sidebar │ │ ├── RTL.tsx │ │ ├── index.tsx │ │ ├── componentsrtl │ │ │ ├── Links.tsx │ │ │ └── SidebarCard.tsx │ │ └── components │ │ │ ├── Links.tsx │ │ │ └── SidebarCard.tsx │ ├── dropdown │ │ └── index.tsx │ ├── footer │ │ ├── Footer.tsx │ │ └── FooterAuthDefault.tsx │ ├── progress │ │ └── index.tsx │ ├── switch │ │ └── index.tsx │ ├── checkbox │ │ └── index.tsx │ └── radio │ │ └── index.tsx ├── index.tsx ├── App.tsx ├── views │ ├── admin │ │ ├── default │ │ │ ├── variables │ │ │ │ ├── tableDataComplex.ts │ │ │ │ └── tableDataCheck.ts │ │ │ ├── components │ │ │ │ ├── WeeklyRevenue.tsx │ │ │ │ ├── DailyTraffic.tsx │ │ │ │ ├── TotalSpent.tsx │ │ │ │ ├── PieChartCard.tsx │ │ │ │ ├── TaskCard.tsx │ │ │ │ └── CheckTable.tsx │ │ │ └── index.tsx │ │ ├── tables │ │ │ ├── variables │ │ │ │ ├── tableDataComplex.ts │ │ │ │ ├── tableDataColumns.ts │ │ │ │ ├── tableDataCheck.ts │ │ │ │ └── tableDataDevelopment.ts │ │ │ ├── index.tsx │ │ │ └── components │ │ │ │ ├── ColumnsTable.tsx │ │ │ │ └── CheckTable.tsx │ │ ├── profile │ │ │ ├── index.tsx │ │ │ └── components │ │ │ │ ├── Storage.tsx │ │ │ │ ├── Upload.tsx │ │ │ │ ├── Banner.tsx │ │ │ │ ├── General.tsx │ │ │ │ ├── Notification.tsx │ │ │ │ └── Project.tsx │ │ └── marketplace │ │ │ ├── components │ │ │ ├── Banner.tsx │ │ │ ├── HistoryCard.tsx │ │ │ └── TableTopCreators.tsx │ │ │ ├── variables │ │ │ └── tableDataTopCreators.ts │ │ │ └── index.tsx │ ├── rtl │ │ └── default │ │ │ ├── variables │ │ │ ├── tableDataComplex.ts │ │ │ └── tableDataCheck.ts │ │ │ ├── components │ │ │ ├── Widget.tsx │ │ │ ├── WeeklyRevenue.tsx │ │ │ ├── DailyTraffic.tsx │ │ │ ├── TotalSpent.tsx │ │ │ ├── PieChartCard.tsx │ │ │ ├── TaskCard.tsx │ │ │ ├── CheckTable.tsx │ │ │ └── ComplexTable.tsx │ │ │ └── index.tsx │ └── auth │ │ └── SignIn.tsx ├── index.css ├── routes.tsx └── layouts │ ├── rtl │ └── index.tsx │ ├── auth │ └── index.tsx │ └── admin │ └── index.tsx ├── public ├── robots.txt ├── favicon.ico ├── manifest.json └── index.html ├── postcss.config.js ├── prettier.config.js ├── CHANGELOG.md ├── .gitignore ├── LICENSE.md ├── tsconfig.json ├── package.json └── README.md /CNAME: -------------------------------------------------------------------------------- 1 | igorlazict.github.chatgpt -------------------------------------------------------------------------------- /src/assets/css/Contact.css: -------------------------------------------------------------------------------- 1 | form { 2 | width: 100%; 3 | } 4 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # https://www.robotstxt.org/robotstxt.html 2 | User-agent: * 3 | Disallow: 4 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /src/assets/img/auth/auth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/auth/auth.png -------------------------------------------------------------------------------- /src/assets/img/nfts/Nft1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/nfts/Nft1.png -------------------------------------------------------------------------------- /src/assets/img/nfts/Nft2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/nfts/Nft2.png -------------------------------------------------------------------------------- /src/assets/img/nfts/Nft3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/nfts/Nft3.png -------------------------------------------------------------------------------- /src/assets/img/nfts/Nft4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/nfts/Nft4.png -------------------------------------------------------------------------------- /src/assets/img/nfts/Nft5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/nfts/Nft5.png -------------------------------------------------------------------------------- /src/assets/img/nfts/Nft6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/nfts/Nft6.png -------------------------------------------------------------------------------- /src/types/stylis.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'stylis-plugin-rtl' { 2 | const noTypesYet: any; 3 | export default noTypesYet; 4 | } 5 | -------------------------------------------------------------------------------- /src/assets/img/layout/Navbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/layout/Navbar.png -------------------------------------------------------------------------------- /src/assets/img/services/3d.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/services/3d.jpg -------------------------------------------------------------------------------- /src/assets/img/services/chat.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/services/chat.jpg -------------------------------------------------------------------------------- /src/assets/img/avatars/avatar1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/avatars/avatar1.png -------------------------------------------------------------------------------- /src/assets/img/avatars/avatar2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/avatars/avatar2.png -------------------------------------------------------------------------------- /src/assets/img/avatars/avatar3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/avatars/avatar3.png -------------------------------------------------------------------------------- /src/assets/img/avatars/avatar4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/avatars/avatar4.png -------------------------------------------------------------------------------- /src/assets/img/avatars/avatar5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/avatars/avatar5.png -------------------------------------------------------------------------------- /src/assets/img/avatars/avatar6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/avatars/avatar6.png -------------------------------------------------------------------------------- /src/assets/img/avatars/avatar7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/avatars/avatar7.png -------------------------------------------------------------------------------- /src/assets/img/avatars/avatar8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/avatars/avatar8.png -------------------------------------------------------------------------------- /src/assets/img/avatars/avatar9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/avatars/avatar9.png -------------------------------------------------------------------------------- /src/assets/img/dashboards/usa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/dashboards/usa.png -------------------------------------------------------------------------------- /src/assets/img/nfts/NftBanner1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/nfts/NftBanner1.png -------------------------------------------------------------------------------- /src/assets/img/profile/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/profile/banner.png -------------------------------------------------------------------------------- /src/assets/img/profile/image1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/profile/image1.png -------------------------------------------------------------------------------- /src/assets/img/profile/image2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/profile/image2.png -------------------------------------------------------------------------------- /src/assets/img/profile/image3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/profile/image3.png -------------------------------------------------------------------------------- /src/assets/img/services/comics.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/services/comics.jpg -------------------------------------------------------------------------------- /src/assets/img/services/gaming.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/services/gaming.jpg -------------------------------------------------------------------------------- /src/assets/img/services/image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/services/image.jpg -------------------------------------------------------------------------------- /src/assets/img/services/music.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/services/music.jpg -------------------------------------------------------------------------------- /src/components/icons/CloseIcon.tsx: -------------------------------------------------------------------------------- 1 | const CloseIcon = () => { 2 | return
hello
; 3 | }; 4 | 5 | export default CloseIcon; 6 | -------------------------------------------------------------------------------- /src/types/images.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.svg'; 2 | declare module '*.png'; 3 | declare module '*.jpg'; 4 | declare module '*.jpeg'; 5 | -------------------------------------------------------------------------------- /src/assets/img/avatars/avatar10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/avatars/avatar10.png -------------------------------------------------------------------------------- /src/assets/img/avatars/avatar11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/avatars/avatar11.png -------------------------------------------------------------------------------- /src/assets/img/dashboards/Debit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/dashboards/Debit.png -------------------------------------------------------------------------------- /src/assets/img/layout/logoWhite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/layout/logoWhite.png -------------------------------------------------------------------------------- /src/assets/img/services/animation.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/services/animation.jpg -------------------------------------------------------------------------------- /src/assets/img/services/narrative.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/services/narrative.jpg -------------------------------------------------------------------------------- /src/components/card/card.css: -------------------------------------------------------------------------------- 1 | li { 2 | color: white; 3 | } 4 | li::marker { 5 | color: white !important; 6 | font-size: 20px; 7 | } 8 | -------------------------------------------------------------------------------- /src/assets/img/dashboards/fakeGraph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/dashboards/fakeGraph.png -------------------------------------------------------------------------------- /src/assets/img/dashboards/starbucks.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/dashboards/starbucks.jpg -------------------------------------------------------------------------------- /prettier.config.js: -------------------------------------------------------------------------------- 1 | // prettier.config.js or .prettierrc.js 2 | module.exports = { 3 | plugins: [require("prettier-plugin-tailwindcss")], 4 | }; 5 | -------------------------------------------------------------------------------- /src/assets/img/avatars/avatarSimmmple.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/avatars/avatarSimmmple.png -------------------------------------------------------------------------------- /src/assets/img/dashboards/balanceImg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/dashboards/balanceImg.png -------------------------------------------------------------------------------- /src/assets/img/dashboards/elipse-light.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bullTo/chatgpt-dashboard-tailwind/HEAD/src/assets/img/dashboards/elipse-light.png -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## [2.0.0] 2025-13-01 4 | 5 | ### Upgraded to React 19 ⚡️ 6 | 7 | ## [1.0.0] 2023-03-23 8 | 9 | ### Original Release 10 | 11 | - Added Tailwind CSS as base framework 12 | -------------------------------------------------------------------------------- /src/assets/css/App.css: -------------------------------------------------------------------------------- 1 | @import url("https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&display=swap"); 2 | body { 3 | font-family: "DM Sans", sans-serif; 4 | } 5 | 6 | option { 7 | color: black; 8 | } 9 | -------------------------------------------------------------------------------- /src/assets/svg/checked.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/index.tsx: -------------------------------------------------------------------------------- 1 | import ReactDOM from "react-dom/client"; 2 | import { BrowserRouter } from "react-router-dom"; 3 | import "./index.css"; 4 | 5 | import App from "./App"; 6 | 7 | const root = ReactDOM.createRoot(document.getElementById("root")); 8 | 9 | root.render( 10 | 11 | 12 | 13 | ); 14 | -------------------------------------------------------------------------------- /public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "React App", 3 | "name": "Create React App Sample", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 32x32 24x24 16x16", 8 | "type": "image/x-icon" 9 | } 10 | ], 11 | "start_url": ".", 12 | "display": "standalone", 13 | "theme_color": "#000000", 14 | "background_color": "#ffffff" 15 | } 16 | -------------------------------------------------------------------------------- /src/types/hui-types.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | 3 | declare global { 4 | /** 5 | * Now declare things that go in the global namespace, 6 | * or augment existing declarations in the global namespace. 7 | */ 8 | interface RoutesType { 9 | name: string; 10 | layout: string; 11 | component: JSX.Element; 12 | icon: JSX.Element | string; 13 | path: string; 14 | secondary?: boolean; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | package-lock.json 8 | 9 | # testing 10 | /coverage 11 | 12 | # production 13 | /build 14 | 15 | # misc 16 | .DS_Store 17 | .env.local 18 | .env.development.local 19 | .env.test.local 20 | .env.production.local 21 | 22 | npm-debug.log* 23 | yarn-debug.log* 24 | yarn-error.log* 25 | -------------------------------------------------------------------------------- /src/components/icons/SearchIcon.tsx: -------------------------------------------------------------------------------- 1 | const SearchIcon = () => { 2 | return ( 3 | 10 | 16 | 17 | ); 18 | }; 19 | 20 | export default SearchIcon; 21 | -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- 1 | import { Routes, Route, Navigate } from "react-router-dom"; 2 | 3 | import RtlLayout from "layouts/rtl"; 4 | import AdminLayout from "layouts/admin"; 5 | import AuthLayout from "layouts/auth"; 6 | const App = () => { 7 | return ( 8 | 9 | } /> 10 | } /> 11 | } /> 12 | } /> 13 | 14 | ); 15 | }; 16 | 17 | export default App; 18 | -------------------------------------------------------------------------------- /src/components/icons/ProfileIcon.tsx: -------------------------------------------------------------------------------- 1 | const ProfileIcon = () => { 2 | return ( 3 | 10 | 14 | 15 | ); 16 | }; 17 | 18 | export default ProfileIcon; 19 | -------------------------------------------------------------------------------- /src/components/card/index.tsx: -------------------------------------------------------------------------------- 1 | function Card(props: { 2 | variant?: string; 3 | extra?: string; 4 | children?: JSX.Element | any[]; 5 | [x: string]: any; 6 | }) { 7 | const { variant, extra, children, ...rest } = props; 8 | return ( 9 |
13 | {children} 14 |
15 | ); 16 | } 17 | 18 | export default Card; 19 | -------------------------------------------------------------------------------- /src/components/icons/ClockIcon.tsx: -------------------------------------------------------------------------------- 1 | const ClockIcon = () => { 2 | return ( 3 | 10 | 14 | 15 | ); 16 | }; 17 | 18 | export default ClockIcon; 19 | -------------------------------------------------------------------------------- /src/components/icons/DotIcon.tsx: -------------------------------------------------------------------------------- 1 | const DotIcon = () => { 2 | return ( 3 | 10 | 14 | 15 | ); 16 | }; 17 | 18 | export default DotIcon; 19 | -------------------------------------------------------------------------------- /src/components/icons/SignIn.tsx: -------------------------------------------------------------------------------- 1 | const SignIn = () => { 2 | return ( 3 | 10 | 14 | 15 | ); 16 | }; 17 | 18 | export default SignIn; 19 | -------------------------------------------------------------------------------- /src/components/tooltip/index.tsx: -------------------------------------------------------------------------------- 1 | import { Tooltip } from "@chakra-ui/tooltip"; 2 | const TooltipHorizon = (props: { 3 | extra: string; 4 | trigger: JSX.Element; 5 | content: JSX.Element; 6 | placement: "left" | "right" | "top" | "bottom"; 7 | }) => { 8 | const { extra, trigger, content, placement } = props; 9 | return ( 10 | 15 | {trigger} 16 | 17 | ); 18 | }; 19 | 20 | export default TooltipHorizon; 21 | -------------------------------------------------------------------------------- /src/components/popover/index.tsx: -------------------------------------------------------------------------------- 1 | import { Popover, PopoverTrigger, PopoverContent } from "@chakra-ui/popover"; 2 | const PopoverHorizon = (props: { 3 | trigger: JSX.Element; 4 | extra?: string; 5 | content: JSX.Element; 6 | }) => { 7 | const { extra, trigger, content } = props; 8 | return ( 9 | 10 | {trigger} 11 | 14 | {content} 15 | 16 | 17 | ); 18 | }; 19 | 20 | export default PopoverHorizon; 21 | -------------------------------------------------------------------------------- /src/views/admin/default/variables/tableDataComplex.ts: -------------------------------------------------------------------------------- 1 | type RowObj = { 2 | name: string; 3 | status: string; 4 | date: string; 5 | progress: number; 6 | }; 7 | 8 | const tableDataComplex: RowObj[] = [ 9 | { 10 | name: 'Horizon UI PRO', 11 | progress: 75.5, 12 | status: 'Approved', 13 | date: '12 Jan 2021' 14 | }, 15 | { 16 | name: 'Horizon UI Free', 17 | progress: 25.5, 18 | status: 'Disable', 19 | date: '21 Feb 2021' 20 | }, 21 | { 22 | name: 'Weekly Update', 23 | progress: 90, 24 | status: 'Error', 25 | date: '13 Mar 2021' 26 | }, 27 | { 28 | name: 'Marketplace', 29 | progress: 50.5, 30 | status: 'Approved', 31 | date: '24 Oct 2022' 32 | } 33 | ]; 34 | export default tableDataComplex; 35 | -------------------------------------------------------------------------------- /src/views/admin/tables/variables/tableDataComplex.ts: -------------------------------------------------------------------------------- 1 | type RowObj = { 2 | name: string; 3 | status: string; 4 | date: string; 5 | progress: number; 6 | }; 7 | 8 | const tableDataComplex: RowObj[] = [ 9 | { 10 | name: 'Horizon UI PRO', 11 | progress: 75.5, 12 | status: 'Approved', 13 | date: '12 Jan 2021' 14 | }, 15 | { 16 | name: 'Horizon UI Free', 17 | progress: 25.5, 18 | status: 'Disable', 19 | date: '21 Feb 2021' 20 | }, 21 | { 22 | name: 'Weekly Update', 23 | progress: 90, 24 | status: 'Error', 25 | date: '13 Mar 2021' 26 | }, 27 | { 28 | name: 'Marketplace', 29 | progress: 50.5, 30 | status: 'Approved', 31 | date: '24 Oct 2022' 32 | } 33 | ]; 34 | export default tableDataComplex; 35 | -------------------------------------------------------------------------------- /src/views/rtl/default/variables/tableDataComplex.ts: -------------------------------------------------------------------------------- 1 | type RowObj = { 2 | name: string; 3 | status: string; 4 | date: string; 5 | progress: number; 6 | }; 7 | 8 | const tableDataComplex: RowObj[] = [ 9 | { 10 | name: 'Horizon UI PRO', 11 | progress: 75.5, 12 | status: 'Approved', 13 | date: '12 Jan 2021' 14 | }, 15 | { 16 | name: 'Horizon UI Free', 17 | progress: 25.5, 18 | status: 'Disable', 19 | date: '21 Feb 2021' 20 | }, 21 | { 22 | name: 'Weekly Update', 23 | progress: 90, 24 | status: 'Error', 25 | date: '13 Mar 2021' 26 | }, 27 | { 28 | name: 'Marketplace', 29 | progress: 50.5, 30 | status: 'Approved', 31 | date: '24 Oct 2022' 32 | } 33 | ]; 34 | export default tableDataComplex; 35 | -------------------------------------------------------------------------------- /src/views/admin/tables/variables/tableDataColumns.ts: -------------------------------------------------------------------------------- 1 | type RowObj = { 2 | name: string; 3 | progress: string; 4 | quantity: number; 5 | date: string; 6 | }; 7 | 8 | const tableDataColumns: RowObj[] = [ 9 | { 10 | name: 'Horizon UI PRO', 11 | quantity: 2458, 12 | progress: '17.5%', 13 | date: '12 Jan 2021', 14 | }, 15 | { 16 | name:'Horizon UI Free', 17 | quantity: 1485, 18 | progress: '10.8%', 19 | date: '21 Feb 2021', 20 | }, 21 | { 22 | name: 'Weekly Update', 23 | quantity: 1024, 24 | progress: '21.3%', 25 | date: '13 Mar 2021', 26 | }, 27 | { 28 | name: 'Venus 3D Asset', 29 | quantity: 858, 30 | progress: '31.5%', 31 | date: '24 Jan 2021', 32 | }, 33 | ]; 34 | 35 | export default tableDataColumns; 36 | -------------------------------------------------------------------------------- /src/components/icons/DashIcon.tsx: -------------------------------------------------------------------------------- 1 | const DashIcon = () => { 2 | return ( 3 | 10 | 14 | 15 | ); 16 | }; 17 | 18 | export default DashIcon; 19 | -------------------------------------------------------------------------------- /src/components/icons/MarketIcon.tsx: -------------------------------------------------------------------------------- 1 | const MarketIcon = () => { 2 | return ( 3 | 10 | 14 | 15 | ); 16 | }; 17 | 18 | export default MarketIcon; 19 | -------------------------------------------------------------------------------- /src/components/icons/KanbanIcon.tsx: -------------------------------------------------------------------------------- 1 | const KanbanIcon = () => { 2 | return ( 3 | 10 | 14 | 15 | ); 16 | }; 17 | 18 | export default KanbanIcon; 19 | -------------------------------------------------------------------------------- /src/components/icons/DarkmodeIcon.tsx: -------------------------------------------------------------------------------- 1 | const DarkmodeIcon = () => { 2 | return ( 3 | 4 | 11 | 15 | 16 | 17 | ); 18 | }; 19 | 20 | export default DarkmodeIcon; 21 | -------------------------------------------------------------------------------- /src/components/fields/SwitchField.tsx: -------------------------------------------------------------------------------- 1 | import Switch from "components/switch"; 2 | 3 | const SwitchField = (props: { 4 | id: string; 5 | label: string; 6 | desc: string; 7 | placeholder: string; 8 | mt: any; 9 | mb: any; 10 | }) => { 11 | const { id, label, desc, mt, mb } = props; 12 | return ( 13 |
14 | 23 |
24 | 25 |
26 |
27 | ); 28 | }; 29 | 30 | export default SwitchField; 31 | -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css2?family=Poppins:wght@100;200;300;400;500;600;700;800&display=swap'); 2 | @import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;700&display=swap'); 3 | @tailwind base; 4 | @tailwind components; 5 | @tailwind utilities; 6 | 7 | @layer base { 8 | html { 9 | font-family: 'DM Sans', sans-serif !important; 10 | font-feature-settings: 'kern' !important; 11 | -webkit-font-smoothing: antialiased; 12 | letter-spacing: -0.5px; 13 | } 14 | } 15 | 16 | input.defaultCheckbox::before { 17 | content: url(../src/assets/svg/checked.svg); 18 | color: white; 19 | opacity: 0; 20 | height: 16px; 21 | width: 16px; 22 | position: absolute; 23 | left: 50%; 24 | transform: translate(-50%, 0px); 25 | } 26 | 27 | input:checked.defaultCheckbox::before { 28 | opacity: 1; 29 | } -------------------------------------------------------------------------------- /src/components/calendar/MiniCalendar.tsx: -------------------------------------------------------------------------------- 1 | import { useState } from "react"; 2 | import Calendar from "react-calendar"; 3 | import Card from "components/card"; 4 | import "react-calendar/dist/Calendar.css"; 5 | import { MdChevronLeft, MdChevronRight } from "react-icons/md"; 6 | import "assets/css/MiniCalendar.css"; 7 | 8 | const MiniCalendar = () => { 9 | const [value, onChange] = useState(new Date()); 10 | 11 | return ( 12 |
13 | 14 | } 18 | nextLabel={} 19 | view={"month"} 20 | /> 21 | 22 |
23 | ); 24 | }; 25 | 26 | export default MiniCalendar; 27 | -------------------------------------------------------------------------------- /src/views/admin/default/variables/tableDataCheck.ts: -------------------------------------------------------------------------------- 1 | type RowObj = { 2 | name: [string, boolean]; 3 | progress: string; 4 | quantity: number; 5 | date: string; 6 | }; 7 | 8 | const tableDataCheck: RowObj[] = [ 9 | { 10 | name: [ 'Horizon UI PRO', true ], 11 | quantity: 2458, 12 | progress: '17.5%', 13 | date: '12 Jan 2021', 14 | }, 15 | { 16 | name: [ 'Horizon UI Free', true ], 17 | quantity: 1485, 18 | progress: '10.8%', 19 | date: '21 Feb 2021', 20 | }, 21 | { 22 | name: [ 'Weekly Update', true ], 23 | quantity: 1024, 24 | progress: '21.3%', 25 | date: '13 Mar 2021', 26 | }, 27 | { 28 | name: [ 'Venus 3D Asset', true ], 29 | quantity: 858, 30 | progress: '31.5%', 31 | date: '24 Jan 2021', 32 | }, 33 | { 34 | name: [ 'Marketplace', true ], 35 | quantity: 258, 36 | progress: '12.2%', 37 | date: '24 Oct 2022', 38 | } 39 | ]; 40 | 41 | export default tableDataCheck; 42 | -------------------------------------------------------------------------------- /src/views/admin/tables/variables/tableDataCheck.ts: -------------------------------------------------------------------------------- 1 | type RowObj = { 2 | name: [string, boolean]; 3 | progress: string; 4 | quantity: number; 5 | date: string; 6 | }; 7 | 8 | const tableDataCheck: RowObj[] = [ 9 | { 10 | name: [ 'Horizon UI PRO', true ], 11 | quantity: 2458, 12 | progress: '17.5%', 13 | date: '12 Jan 2021', 14 | }, 15 | { 16 | name: [ 'Horizon UI Free', true ], 17 | quantity: 1485, 18 | progress: '10.8%', 19 | date: '21 Feb 2021', 20 | }, 21 | { 22 | name: [ 'Weekly Update', true ], 23 | quantity: 1024, 24 | progress: '21.3%', 25 | date: '13 Mar 2021', 26 | }, 27 | { 28 | name: [ 'Venus 3D Asset', true ], 29 | quantity: 858, 30 | progress: '31.5%', 31 | date: '24 Jan 2021', 32 | }, 33 | { 34 | name: [ 'Marketplace', true ], 35 | quantity: 258, 36 | progress: '12.2%', 37 | date: '24 Oct 2022', 38 | } 39 | ]; 40 | 41 | export default tableDataCheck; 42 | -------------------------------------------------------------------------------- /src/views/rtl/default/variables/tableDataCheck.ts: -------------------------------------------------------------------------------- 1 | type RowObj = { 2 | name: [string, boolean]; 3 | progress: string; 4 | quantity: number; 5 | date: string; 6 | }; 7 | 8 | const tableDataCheck: RowObj[] = [ 9 | { 10 | name: [ 'Horizon UI PRO', true ], 11 | quantity: 2458, 12 | progress: '17.5%', 13 | date: '12 Jan 2021', 14 | }, 15 | { 16 | name: [ 'Horizon UI Free', true ], 17 | quantity: 1485, 18 | progress: '10.8%', 19 | date: '21 Feb 2021', 20 | }, 21 | { 22 | name: [ 'Weekly Update', true ], 23 | quantity: 1024, 24 | progress: '21.3%', 25 | date: '13 Mar 2021', 26 | }, 27 | { 28 | name: [ 'Venus 3D Asset', true ], 29 | quantity: 858, 30 | progress: '31.5%', 31 | date: '24 Jan 2021', 32 | }, 33 | { 34 | name: [ 'Marketplace', true ], 35 | quantity: 258, 36 | progress: '12.2%', 37 | date: '24 Oct 2022', 38 | } 39 | ]; 40 | 41 | export default tableDataCheck; 42 | -------------------------------------------------------------------------------- /src/components/icons/NotificationIcon.tsx: -------------------------------------------------------------------------------- 1 | const NotificationIcon = () => { 2 | return ( 3 | 4 | 11 | 15 | 16 | 17 | ); 18 | }; 19 | 20 | export default NotificationIcon; 21 | -------------------------------------------------------------------------------- /src/components/icons/ClockIcon1.tsx: -------------------------------------------------------------------------------- 1 | const ClockIcon1 = () => { 2 | return ( 3 | 10 | 14 | 15 | ); 16 | }; 17 | 18 | export default ClockIcon1; 19 | -------------------------------------------------------------------------------- /src/components/charts/LineAreaChart.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactApexChart from 'react-apexcharts'; 3 | 4 | type ChartProps = { 5 | // using `interface` is also ok 6 | [x: string]: any; 7 | }; 8 | type ChartState = { 9 | chartData: any[]; 10 | chartOptions: any; 11 | }; 12 | 13 | class LineChart extends React.Component { 14 | constructor(props: { chartData: any[]; chartOptions: any }) { 15 | super(props); 16 | 17 | this.state = { 18 | chartData: [], 19 | chartOptions: {} 20 | }; 21 | } 22 | 23 | componentDidMount() { 24 | this.setState({ 25 | chartData: this.props.chartData, 26 | chartOptions: this.props.chartOptions 27 | }); 28 | } 29 | 30 | render() { 31 | return ( 32 | 39 | ); 40 | } 41 | } 42 | 43 | export default LineChart; 44 | -------------------------------------------------------------------------------- /src/components/widget/Widget.tsx: -------------------------------------------------------------------------------- 1 | import Card from "components/card"; 2 | 3 | const Widget = (props: { 4 | icon: JSX.Element; 5 | title: string; 6 | subtitle: string; 7 | }) => { 8 | const { icon, title, subtitle } = props; 9 | return ( 10 | 11 |
12 |
13 | 14 | {icon} 15 | 16 |
17 |
18 | 19 |
20 |

{title}

21 |

22 | {subtitle} 23 |

24 |
25 |
26 | ); 27 | }; 28 | 29 | export default Widget; 30 | -------------------------------------------------------------------------------- /src/views/rtl/default/components/Widget.tsx: -------------------------------------------------------------------------------- 1 | import Card from "components/card"; 2 | 3 | const Widget = (props: { 4 | icon: JSX.Element; 5 | title: string; 6 | subtitle: string; 7 | }) => { 8 | const { icon, title, subtitle } = props; 9 | return ( 10 | 11 |
12 |
13 | 14 | {icon} 15 | 16 |
17 |
18 | 19 |
20 |

{title}

21 |

22 | {subtitle} 23 |

24 |
25 |
26 | ); 27 | }; 28 | 29 | export default Widget; 30 | -------------------------------------------------------------------------------- /src/components/icons/ThemsIcon.tsx: -------------------------------------------------------------------------------- 1 | const ThemsIcon = () => { 2 | return ( 3 | 4 | 11 | 12 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | ); 25 | }; 26 | 27 | export default ThemsIcon; 28 | -------------------------------------------------------------------------------- /src/components/charts/BarChart.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Chart from "react-apexcharts"; 3 | 4 | type ChartProps = { 5 | // using `interface` is also ok 6 | [x: string]: any; 7 | }; 8 | type ChartState = { 9 | chartData: any[]; 10 | chartOptions: any; 11 | }; 12 | 13 | class ColumnChart extends React.Component { 14 | constructor(props: { chartData: any[]; chartOptions: any }) { 15 | super(props); 16 | this.state = { 17 | chartData: [], 18 | chartOptions: {}, 19 | }; 20 | } 21 | 22 | componentDidMount() { 23 | this.setState({ 24 | chartData: this.props.chartData, 25 | chartOptions: this.props.chartOptions, 26 | }); 27 | } 28 | 29 | render() { 30 | return ( 31 | 38 | ); 39 | } 40 | } 41 | 42 | export default ColumnChart; 43 | -------------------------------------------------------------------------------- /src/components/charts/PieChart.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactApexChart from "react-apexcharts"; 3 | 4 | type ChartProps = { 5 | // using `interface` is also ok 6 | [x: string]: any; 7 | }; 8 | type ChartState = { 9 | chartData: any[]; 10 | chartOptions: any; 11 | }; 12 | 13 | class PieChart extends React.Component { 14 | constructor(props: { chartData: any[]; chartOptions: any }) { 15 | super(props); 16 | 17 | this.state = { 18 | chartData: [], 19 | chartOptions: {}, 20 | }; 21 | } 22 | 23 | componentDidMount() { 24 | this.setState({ 25 | chartData: this.props.chartData, 26 | chartOptions: this.props.chartOptions, 27 | }); 28 | } 29 | 30 | render() { 31 | return ( 32 | 39 | ); 40 | } 41 | } 42 | 43 | export default PieChart; 44 | -------------------------------------------------------------------------------- /src/components/charts/LineChart.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import ReactApexChart from "react-apexcharts"; 3 | 4 | type ChartProps = { 5 | // using `interface` is also ok 6 | [x: string]: any; 7 | }; 8 | type ChartState = { 9 | chartData: any[]; 10 | chartOptions: any; 11 | }; 12 | 13 | class LineChart extends React.Component { 14 | constructor(props: { chartData: any[]; chartOptions: any }) { 15 | super(props); 16 | 17 | this.state = { 18 | chartData: [], 19 | chartOptions: {}, 20 | }; 21 | } 22 | 23 | componentDidMount() { 24 | this.setState({ 25 | chartData: this.props.chartData, 26 | chartOptions: this.props.chartOptions, 27 | }); 28 | } 29 | 30 | render() { 31 | return ( 32 | 39 | ); 40 | } 41 | } 42 | 43 | export default LineChart; 44 | -------------------------------------------------------------------------------- /src/components/icons/TablesIcon.tsx: -------------------------------------------------------------------------------- 1 | const TablesIcon = () => { 2 | return ( 3 | 10 | 14 | 15 | ); 16 | }; 17 | 18 | export default TablesIcon; 19 | -------------------------------------------------------------------------------- /src/components/icons/WidgetIcon/ChartIcon.tsx: -------------------------------------------------------------------------------- 1 | const ChartIcon = () => { 2 | return ( 3 | 10 | 14 | 15 | ); 16 | }; 17 | 18 | export default ChartIcon; 19 | -------------------------------------------------------------------------------- /src/views/admin/tables/index.tsx: -------------------------------------------------------------------------------- 1 | import tableDataDevelopment from "./variables/tableDataDevelopment"; 2 | import tableDataCheck from "./variables/tableDataCheck"; 3 | import CheckTable from "./components/CheckTable"; 4 | import tableDataColumns from "./variables/tableDataColumns"; 5 | import tableDataComplex from "./variables/tableDataComplex"; 6 | import DevelopmentTable from "./components/DevelopmentTable"; 7 | import ColumnsTable from "./components/ColumnsTable"; 8 | import ComplexTable from "./components/ComplexTable"; 9 | 10 | const Tables = () => { 11 | return ( 12 |
13 |
14 | 15 | 16 |
17 | 18 |
19 | 20 | 21 | 22 |
23 |
24 | ); 25 | }; 26 | 27 | export default Tables; 28 | -------------------------------------------------------------------------------- /src/components/icons/WidgetIcon/PDFIcon.tsx: -------------------------------------------------------------------------------- 1 | const PDFIcon = () => { 2 | return ( 3 | 10 | 14 | 15 | ); 16 | }; 17 | 18 | export default PDFIcon; 19 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Horizon UI 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/components/icons/VideoIcon.tsx: -------------------------------------------------------------------------------- 1 | const VideoIcon = () => { 2 | return ( 3 | 10 | 14 | 15 | ); 16 | }; 17 | 18 | export default VideoIcon; 19 | -------------------------------------------------------------------------------- /src/views/admin/default/components/WeeklyRevenue.tsx: -------------------------------------------------------------------------------- 1 | import Card from "components/card"; 2 | import BarChart from "components/charts/BarChart"; 3 | import { 4 | barChartDataWeeklyRevenue, 5 | barChartOptionsWeeklyRevenue, 6 | } from "variables/charts"; 7 | import { MdBarChart } from "react-icons/md"; 8 | 9 | const WeeklyRevenue = () => { 10 | return ( 11 | 12 |
13 |

14 | Weekly Revenue 15 |

16 | 19 |
20 | 21 |
22 |
23 | 27 |
28 |
29 |
30 | ); 31 | }; 32 | 33 | export default WeeklyRevenue; 34 | -------------------------------------------------------------------------------- /src/views/rtl/default/components/WeeklyRevenue.tsx: -------------------------------------------------------------------------------- 1 | import Card from "components/card"; 2 | import BarChart from "components/charts/BarChart"; 3 | import { 4 | barChartDataWeeklyRevenue, 5 | barChartOptionsWeeklyRevenue, 6 | } from "variables/charts"; 7 | import { MdBarChart } from "react-icons/md"; 8 | 9 | const WeeklyRevenue = () => { 10 | return ( 11 | 12 |
13 |

14 | Weekly Revenue 15 |

16 | 19 |
20 | 21 |
22 |
23 | 27 |
28 |
29 |
30 | ); 31 | }; 32 | 33 | export default WeeklyRevenue; 34 | -------------------------------------------------------------------------------- /src/components/fixedPlugin/FixedPlugin.tsx: -------------------------------------------------------------------------------- 1 | // Chakra Imports 2 | // Custom Icons 3 | import React from "react"; 4 | 5 | import { RiMoonFill, RiSunFill } from "react-icons/ri"; 6 | export default function FixedPlugin(props: { [s: string]: any }) { 7 | const { ...rest } = props; 8 | const [darkmode, setDarkmode] = React.useState( 9 | document.body.classList.contains("dark") 10 | ); 11 | 12 | return ( 13 | 36 | ); 37 | } 38 | -------------------------------------------------------------------------------- /src/components/icons/WidgetIcon/DollarIcon.tsx: -------------------------------------------------------------------------------- 1 | const DollarIcon = () => { 2 | return ( 3 | 10 | 14 | 15 | ); 16 | }; 17 | 18 | export default DollarIcon; 19 | -------------------------------------------------------------------------------- /src/views/admin/profile/index.tsx: -------------------------------------------------------------------------------- 1 | import Banner from "./components/Banner"; 2 | import General from "./components/General"; 3 | import Notification from "./components/Notification"; 4 | import Project from "./components/Project"; 5 | import Storage from "./components/Storage"; 6 | import Upload from "./components/Upload"; 7 | 8 | const ProfileOverview = () => { 9 | return ( 10 |
11 |
12 |
13 | 14 |
15 | 16 |
17 | 18 |
19 | 20 |
21 | 22 |
23 |
24 | {/* all project & ... */} 25 | 26 |
27 |
28 | 29 |
30 |
31 | 32 |
33 | 34 |
35 | 36 |
37 |
38 |
39 | ); 40 | }; 41 | 42 | export default ProfileOverview; 43 | -------------------------------------------------------------------------------- /src/views/admin/marketplace/components/Banner.tsx: -------------------------------------------------------------------------------- 1 | import nft1 from "assets/img/nfts/NftBanner1.png"; 2 | 3 | const Banner1 = () => { 4 | return ( 5 |
9 |
10 |

11 | Get 1 month of Pixiv Premium FREE 12 |

13 |

14 | Enjoy Pixiv even more with convenient features like Search by 15 | Popularity and Hide Ads. 16 |

17 | 18 |
19 | 22 | 25 |
26 |
27 |
28 | ); 29 | }; 30 | 31 | export default Banner1; 32 | -------------------------------------------------------------------------------- /src/views/admin/default/components/DailyTraffic.tsx: -------------------------------------------------------------------------------- 1 | import BarChart from "components/charts/BarChart"; 2 | import { barChartDataDailyTraffic } from "variables/charts"; 3 | import { barChartOptionsDailyTraffic } from "variables/charts"; 4 | import { MdArrowDropUp } from "react-icons/md"; 5 | import Card from "components/card"; 6 | const DailyTraffic = () => { 7 | return ( 8 | 9 |
10 |
11 |

12 | Daily Traffic 13 |

14 |

15 | 2.579{" "} 16 | 17 | Visitors 18 | 19 |

20 |
21 |
22 |
23 | 24 |

+2.45%

25 |
26 |
27 |
28 | 29 |
30 | 34 |
35 |
36 | ); 37 | }; 38 | 39 | export default DailyTraffic; 40 | -------------------------------------------------------------------------------- /src/views/rtl/default/components/DailyTraffic.tsx: -------------------------------------------------------------------------------- 1 | import BarChart from "components/charts/BarChart"; 2 | import { barChartDataDailyTraffic } from "variables/charts"; 3 | import { barChartOptionsDailyTraffic } from "variables/charts"; 4 | import { MdArrowDropUp } from "react-icons/md"; 5 | import Card from "components/card"; 6 | const DailyTraffic = () => { 7 | return ( 8 | 9 |
10 |
11 |

12 | Daily Traffic 13 |

14 |

15 | 2.579{" "} 16 | 17 | Visitors 18 | 19 |

20 |
21 |
22 |
23 | 24 |

+2.45%

25 |
26 |
27 |
28 | 29 |
30 | 34 |
35 |
36 | ); 37 | }; 38 | 39 | export default DailyTraffic; 40 | -------------------------------------------------------------------------------- /src/views/admin/profile/components/Storage.tsx: -------------------------------------------------------------------------------- 1 | import Card from "components/card"; 2 | import CardMenu from "components/card/CardMenu"; 3 | import { BsCloudCheck } from "react-icons/bs"; 4 | const Storage = () => { 5 | return ( 6 | 7 |
8 | 9 |
10 | {/* Your storage */} 11 |
12 |
13 | 14 |
15 |

16 | Your storage 17 |

18 |

19 | Supervise your drive space in the easiest way 20 |

21 |
22 | 23 | {/* Progress bar */} 24 | 25 |
26 |
27 |

25.6 GB

28 |

50 GB

29 |
30 |
31 | 32 |
33 |
34 |
35 | ); 36 | }; 37 | 38 | export default Storage; 39 | -------------------------------------------------------------------------------- /src/components/sidebar/RTL.tsx: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | 3 | import { HiX } from "react-icons/hi"; 4 | import Links from "./components/Links"; 5 | 6 | import SidebarCard from "components/sidebar/components/SidebarCard"; 7 | import routes from "routes"; 8 | 9 | const Sidebar = (props: { 10 | open: boolean; 11 | onClose: React.MouseEventHandler; 12 | }) => { 13 | const { open, onClose } = props; 14 | return ( 15 |
20 | 24 | 25 | 26 | 27 |
28 |
29 | Horizon FREE 30 |
31 |
32 |
33 | {/* Nav item */} 34 | 35 |
    36 | 37 |
38 | 39 | {/* Free Horizon Card */} 40 | {/*
41 | 42 |
*/} 43 | 44 | {/* Nav item end */} 45 |
46 | ); 47 | }; 48 | 49 | export default Sidebar; 50 | -------------------------------------------------------------------------------- /src/components/sidebar/index.tsx: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | 3 | import { HiX } from "react-icons/hi"; 4 | import Links from "./components/Links"; 5 | 6 | import SidebarCard from "components/sidebar/componentsrtl/SidebarCard"; 7 | import routes from "routes"; 8 | 9 | const Sidebar = (props: { 10 | open: boolean; 11 | onClose: React.MouseEventHandler; 12 | }) => { 13 | const { open, onClose } = props; 14 | return ( 15 |
20 | 24 | 25 | 26 | 27 |
28 |
29 | Aoi Kei AI 30 |
31 |
32 |
33 | {/* Nav item */} 34 | 35 |
    36 | 37 |
38 | 39 | {/* Free Horizon Card */} 40 | {/*
41 | 42 |
*/} 43 | 44 | {/* Nav item end */} 45 |
46 | ); 47 | }; 48 | 49 | export default Sidebar; 50 | -------------------------------------------------------------------------------- /src/components/fields/InputField.tsx: -------------------------------------------------------------------------------- 1 | // Custom components 2 | import React from "react"; 3 | 4 | function InputField(props: { 5 | id: string; 6 | label: string; 7 | extra: string; 8 | placeholder: string; 9 | variant: string; 10 | state?: string; 11 | disabled?: boolean; 12 | type?: string; 13 | }) { 14 | const { label, id, extra, type, placeholder, variant, state, disabled } = 15 | props; 16 | 17 | return ( 18 |
19 | 27 | 42 |
43 | ); 44 | } 45 | 46 | export default InputField; 47 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | // "compilerOptions": { 3 | // "target": "es2016", 4 | // "lib": [ 5 | // "dom", 6 | // "dom.iterable", 7 | // "esnext" 8 | // ], 9 | // "baseUrl": "./", 10 | // "paths": { 11 | // "*": ["src/*"] 12 | // }, 13 | // "allowJs": true, 14 | // "skipLibCheck": true, 15 | // "esModuleInterop": true, 16 | // "allowSyntheticDefaultImports": true, 17 | // "strict": true, 18 | // "forceConsistentCasingInFileNames": true, 19 | // "noFallthroughCasesInSwitch": true, 20 | // "module": "esnext", 21 | // "moduleResolution": "node", 22 | // "resolveJsonModule": true, 23 | // "isolatedModules": true, 24 | // "noEmit": true, 25 | // "jsx": "react-jsx", 26 | // }, 27 | "compilerOptions": { 28 | "typeRoots": ["node_modules/@types", "src/types"], 29 | "target": "es2016", 30 | "lib": ["dom", "dom.iterable", "esnext", "es2015.iterable"], 31 | "allowJs": true, 32 | "skipLibCheck": true, 33 | "esModuleInterop": true, 34 | "allowSyntheticDefaultImports": true, 35 | "strict": true, 36 | "forceConsistentCasingInFileNames": true, 37 | "noFallthroughCasesInSwitch": true, 38 | "module": "esnext", 39 | "moduleResolution": "node", 40 | "resolveJsonModule": true, 41 | "isolatedModules": true, 42 | "noEmit": true, 43 | "jsx": "react-jsx", 44 | "noImplicitAny": true, 45 | "noImplicitThis": true, 46 | "strictNullChecks": false, 47 | "downlevelIteration": true, 48 | "baseUrl": "src", 49 | "paths": { 50 | "@assets/*": ["./src/assetsassets/*"] 51 | }, 52 | }, 53 | "include": [ 54 | "./src" 55 | ], 56 | } 57 | -------------------------------------------------------------------------------- /src/views/admin/tables/variables/tableDataDevelopment.ts: -------------------------------------------------------------------------------- 1 | type RowObj = { 2 | name: string; 3 | tech: string[]; 4 | date: string; 5 | progress: number; 6 | }; 7 | 8 | const tableDataComplex: RowObj[] = [ 9 | { 10 | name: 'Marketplace', 11 | tech: [ 'apple', 'android', 'windows' ], 12 | date: '12.Jan.2021', 13 | progress: 75.5 14 | }, 15 | { 16 | name: 'Venus DB PRO', 17 | tech: [ 'apple' ], 18 | date: '21.Feb.2021', 19 | progress: 35.4 20 | }, 21 | { 22 | name: 'Venus DS', 23 | tech: [ 'apple', 'windows' ], 24 | date: '13.Mar.2021', 25 | progress: 25 26 | }, 27 | { 28 | name: 'Venus 3D Asset', 29 | tech: [ 'apple', 'android', 'windows' ], 30 | date: '24.Jan.2021', 31 | progress: 100 32 | }, 33 | { 34 | name: 'Marketplace', 35 | tech: [ 'apple', 'windows' ], 36 | date: 'Oct 24, 2022', 37 | progress: 75.5 38 | }, 39 | { 40 | name: 'Marketplace', 41 | tech: [ 'apple', 'android', 'windows' ], 42 | date: 'Oct 24, 2022', 43 | progress: 75.5 44 | }, 45 | { 46 | name: 'Marketplace', 47 | tech: [ 'apple', 'android', 'windows' ], 48 | date: '12.Jan.2021', 49 | progress: 75.5 50 | }, 51 | { 52 | name: 'Venus DB PRO', 53 | tech: [ 'apple' ], 54 | date: '21.Feb.2021', 55 | progress: 35.4 56 | }, 57 | { 58 | name: 'Venus DS', 59 | tech: [ 'apple', 'windows' ], 60 | date: '13.Mar.2021', 61 | progress: 25 62 | }, 63 | { 64 | name: 'Venus 3D Asset', 65 | tech: [ 'apple', 'android', 'windows' ], 66 | date: '24.Jan.2021', 67 | progress: 100 68 | }, 69 | { 70 | name: 'Marketplace', 71 | tech: [ 'apple', 'windows' ], 72 | date: 'Oct 24, 2022', 73 | progress: 75.5 74 | } 75 | ]; 76 | export default tableDataComplex; 77 | -------------------------------------------------------------------------------- /src/components/dropdown/index.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | function useOutsideAlerter(ref: any, setX: any): void { 4 | React.useEffect(() => { 5 | /** 6 | * Alert if clicked on outside of element 7 | */ 8 | // function handleClickOutside(event: React.MouseEvent) { 9 | function handleClickOutside(event: any) { 10 | if (ref.current && !ref.current.contains(event.target)) { 11 | setX(false); 12 | } 13 | } 14 | // Bind the event listener 15 | document.addEventListener("mousedown", handleClickOutside); 16 | return () => { 17 | // Unbind the event listener on clean up 18 | document.removeEventListener("mousedown", handleClickOutside); 19 | }; 20 | }, [ref, setX]); 21 | } 22 | 23 | const Dropdown = (props: { 24 | button: JSX.Element; 25 | children: JSX.Element; 26 | classNames: string; 27 | animation?: string; 28 | }) => { 29 | const { button, children, classNames, animation } = props; 30 | const wrapperRef = React.useRef(null); 31 | const [openWrapper, setOpenWrapper] = React.useState(false); 32 | useOutsideAlerter(wrapperRef, setOpenWrapper); 33 | 34 | return ( 35 |
36 |
setOpenWrapper(!openWrapper)}> 37 | {button} 38 |
39 |
46 | {children} 47 |
48 |
49 | ); 50 | }; 51 | 52 | export default Dropdown; 53 | -------------------------------------------------------------------------------- /src/components/footer/Footer.tsx: -------------------------------------------------------------------------------- 1 | const Footer = () => { 2 | return ( 3 |
4 |
5 |

6 | ©{new Date().getFullYear()} Aoi Kei. All Rights Reserved. 7 |

8 |
9 |
10 | 48 |
49 |
50 | ); 51 | }; 52 | 53 | export default Footer; 54 | -------------------------------------------------------------------------------- /src/views/admin/marketplace/variables/tableDataTopCreators.ts: -------------------------------------------------------------------------------- 1 | type RowObj = { 2 | name: string[]; 3 | artworks: number; 4 | rating: number; 5 | }; 6 | 7 | const tableColumnsTopCreators: RowObj[] = [ 8 | { 9 | name: ["@maddison_c21","https://images.unsplash.com/photo-1506863530036-1efeddceb993?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=2244&q=80"], 10 | artworks : 9821, 11 | rating:97 12 | }, 13 | { 14 | name: ["@karl.will02","https://images.unsplash.com/photo-1535713875002-d1d0cf377fde?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1780&q=80"], 15 | artworks : 7032, 16 | rating:87 17 | }, 18 | { 19 | name: ["@andreea.1z","https://images.unsplash.com/photo-1573766064535-6d5d4e62bf9d?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1315&q=80"], 20 | artworks : 5204, 21 | rating:82 22 | }, 23 | { 24 | name: ["@abraham47.y","https://images.unsplash.com/photo-1628157588553-5eeea00af15c?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1780&q=80"], 25 | artworks : 4309, 26 | rating:68 27 | }, 28 | { 29 | name: ["@simmmple.web","https://i.ibb.co/7p0d1Cd/Frame-24.png"], 30 | artworks : 3871, 31 | rating:55 32 | }, 33 | { 34 | name: ["@horizon.ui","https://i.ibb.co/NSJYQYD/Horizon-UI-Avatar.png"], 35 | artworks : 3152, 36 | rating:46 37 | }, 38 | { 39 | name: ["@venus.sys","https://scontent.fotp8-1.fna.fbcdn.net/v/t1.6435-9/202074221_101421322193072_8201469573182417214_n.png?_nc_cat=108&ccb=1-5&_nc_sid=09cbfe&_nc_ohc=78fLje1ri2sAX-9M9k1&_nc_ht=scontent.fotp8-1.fna&oh=00_AT-yCcI9whoAZcSaGmJQK53xRa1CldCaj2q5qJlPvDvHRA&oe=626E41FF"], 40 | artworks : 2907, 41 | rating:38 42 | } 43 | ]; 44 | 45 | export default tableColumnsTopCreators; 46 | -------------------------------------------------------------------------------- /src/components/footer/FooterAuthDefault.tsx: -------------------------------------------------------------------------------- 1 | /*eslint-disable*/ 2 | import React from "react"; 3 | export default function Footer() { 4 | return ( 5 |
6 |

7 | ©{1900 + new Date().getFullYear()} Horizon UI. All Rights Reserved. 8 |

9 | 47 |
48 | ); 49 | } 50 | -------------------------------------------------------------------------------- /src/views/admin/profile/components/Upload.tsx: -------------------------------------------------------------------------------- 1 | import { MdFileUpload } from "react-icons/md"; 2 | import Card from "components/card"; 3 | 4 | const Upload = () => { 5 | return ( 6 | 7 |
8 | 17 |
18 | 19 |
20 |
21 | Complete Your Profile 22 |
23 |

24 | Stay on the pulse of distributed projects with an anline whiteboard to 25 | plan, coordinate and discuss 26 |

27 | 30 |
31 |
32 | ); 33 | }; 34 | 35 | export default Upload; 36 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 34 | 35 | Aoi Kei 36 | 37 | 38 | 39 |
40 | 41 | 42 | 43 | 49 | -------------------------------------------------------------------------------- /src/components/progress/index.tsx: -------------------------------------------------------------------------------- 1 | const Progress = (props: { 2 | value: number; 3 | color?: 4 | | "red" 5 | | "blue" 6 | | "green" 7 | | "yellow" 8 | | "orange" 9 | | "teal" 10 | | "navy" 11 | | "lime" 12 | | "cyan" 13 | | "pink" 14 | | "purple" 15 | | "amber" 16 | | "indigo" 17 | | "gray"; 18 | width?: string; 19 | }) => { 20 | const { value, color, width } = props; 21 | return ( 22 |
27 |
61 |
62 | ); 63 | }; 64 | 65 | export default Progress; 66 | -------------------------------------------------------------------------------- /src/views/admin/profile/components/Banner.tsx: -------------------------------------------------------------------------------- 1 | import avatar from "assets/img/avatars/avatar11.png"; 2 | import banner from "assets/img/profile/banner.png"; 3 | import Card from "components/card"; 4 | 5 | const Banner = () => { 6 | return ( 7 | 8 | {/* Background and profile */} 9 |
13 |
14 | 15 |
16 |
17 | 18 | {/* Name and position */} 19 |
20 |

21 | Adela Parkson 22 |

23 |

Product Manager

24 |
25 | 26 | {/* Post followers */} 27 |
28 |
29 |

17

30 |

Posts

31 |
32 |
33 |

34 | 9.7K 35 |

36 |

Followers

37 |
38 |
39 |

40 | 434 41 |

42 |

Following

43 |
44 |
45 |
46 | ); 47 | }; 48 | 49 | export default Banner; 50 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "horizon-ui-tailwind-react-ts", 3 | "version": "2.0.0", 4 | "private": true, 5 | "dependencies": { 6 | "@chakra-ui/hooks": "^2.1.4", 7 | "@chakra-ui/modal": "^2.2.9", 8 | "@chakra-ui/popover": "^2.1.8", 9 | "@chakra-ui/portal": "^2.0.15", 10 | "@chakra-ui/system": "^2.3.5", 11 | "@chakra-ui/tooltip": "^2.2.6", 12 | "@emotion/react": "^11.10.5", 13 | "@emotion/styled": "^11.10.5", 14 | "@tanstack/react-table": "^8.7.9", 15 | "@testing-library/jest-dom": "^6.4.6", 16 | "@testing-library/react": "^16.0.0", 17 | "@testing-library/user-event": "^14.5.2", 18 | "@types/jest": "^25.2.3", 19 | "@types/node": "^12.20.55", 20 | "@types/react": "^18.0.15", 21 | "@types/react-dom": "^18.0.6", 22 | "apexcharts": "^3.35.5", 23 | "clsx": "^2.1.1", 24 | "react": "19.0.0", 25 | "react-apexcharts": "1.4.0", 26 | "react-calendar": "^5.0.0", 27 | "react-dom": "19.0.0", 28 | "react-icons": "^4.4.0", 29 | "react-router-dom": "^6.4.0", 30 | "react-scripts": "5.0.1", 31 | "tailwindcss-rtl": "^0.9.0", 32 | "typescript": "^4.7.4", 33 | "web-vitals": "^2.1.4" 34 | }, 35 | "scripts": { 36 | "start": "react-scripts start", 37 | "build": "react-scripts build", 38 | "test": "react-scripts test", 39 | "eject": "react-scripts eject", 40 | "pretty": "prettier --write \"./**/*.{js,jsx,json}\"" 41 | }, 42 | "eslintConfig": { 43 | "extends": [ 44 | "react-app", 45 | "react-app/jest" 46 | ] 47 | }, 48 | "browserslist": { 49 | "production": [ 50 | ">0.2%", 51 | "not dead", 52 | "not op_mini all" 53 | ], 54 | "development": [ 55 | "last 1 chrome version", 56 | "last 1 firefox version", 57 | "last 1 safari version" 58 | ] 59 | }, 60 | "devDependencies": { 61 | "@types/react-calendar": "^3.5.2", 62 | "@types/react-router-dom": "^5.3.3", 63 | "@types/react-table": "^7.7.12", 64 | "autoprefixer": "^10.4.8", 65 | "postcss": "^8.4.16", 66 | "prettier": "^2.8.3", 67 | "prettier-plugin-tailwindcss": "^0.2.1", 68 | "tailwindcss": "^3.1.8" 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /src/views/rtl/default/components/TotalSpent.tsx: -------------------------------------------------------------------------------- 1 | import { 2 | MdArrowDropUp, 3 | MdOutlineCalendarToday, 4 | MdBarChart, 5 | } from "react-icons/md"; 6 | import Card from "components/card"; 7 | import { 8 | lineChartDataTotalSpent, 9 | lineChartOptionsTotalSpent, 10 | } from "variables/charts"; 11 | import LineChart from "components/charts/LineChart"; 12 | 13 | const TotalSpent = () => { 14 | return ( 15 | 16 |
17 | 21 | 24 |
25 | 26 |
27 |
28 |

29 | $37.5K 30 |

31 |
32 |

Total Spent

33 |
34 | 35 |

+2.45%

36 |
37 |
38 |
39 |
40 | 44 |
45 |
46 |
47 | ); 48 | }; 49 | 50 | export default TotalSpent; 51 | -------------------------------------------------------------------------------- /src/views/admin/default/components/TotalSpent.tsx: -------------------------------------------------------------------------------- 1 | import { 2 | MdArrowDropUp, 3 | MdOutlineCalendarToday, 4 | MdBarChart, 5 | } from "react-icons/md"; 6 | import Card from "components/card"; 7 | import { 8 | lineChartDataTotalSpent, 9 | lineChartOptionsTotalSpent, 10 | } from "variables/charts"; 11 | import LineChart from "components/charts/LineChart"; 12 | 13 | const TotalSpent = () => { 14 | return ( 15 | 16 |
17 | 21 | 24 |
25 | 26 |
27 |
28 |

29 | $37.5K 30 |

31 |
32 |

Total Spent

33 |
34 | 35 |

+2.45%

36 |
37 |
38 |
39 |
40 | 44 |
45 |
46 |
47 | ); 48 | }; 49 | 50 | export default TotalSpent; 51 | -------------------------------------------------------------------------------- /src/components/sidebar/componentsrtl/Links.tsx: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | import React from "react"; 3 | import { Link, useLocation } from "react-router-dom"; 4 | import DashIcon from "components/icons/DashIcon"; 5 | // chakra imports 6 | 7 | export function SidebarLinks(props: { routes: RoutesType[] }) { 8 | // Chakra color mode 9 | let location = useLocation(); 10 | 11 | const { routes } = props; 12 | 13 | // verifies if routeName is the one active (in browser input) 14 | const activeRoute = (routeName: string) => { 15 | return location.pathname.includes(routeName); 16 | }; 17 | 18 | const createLinks = (routes: RoutesType[]) => { 19 | return routes.map((route, index) => { 20 | if ( 21 | route.layout === "/admin" || 22 | route.layout === "/auth" || 23 | route.layout === "/rtl" 24 | ) { 25 | return ( 26 | 27 |
28 |
  • 32 | 39 | {route.icon ? route.icon : }{" "} 40 | 41 |

    48 | {route.name} 49 |

    50 |
  • 51 | {activeRoute(route.path) ? ( 52 |
    53 | ) : null} 54 |
    55 | 56 | ); 57 | } 58 | }); 59 | }; 60 | // BRAND 61 | return <>{createLinks(routes)}; 62 | } 63 | 64 | export default SidebarLinks; 65 | -------------------------------------------------------------------------------- /src/components/sidebar/components/Links.tsx: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | import React from "react"; 3 | import { Link, useLocation } from "react-router-dom"; 4 | import DashIcon from "components/icons/DashIcon"; 5 | // chakra imports 6 | 7 | export const SidebarLinks = (props: { routes: RoutesType[] }): JSX.Element => { 8 | // Chakra color mode 9 | let location = useLocation(); 10 | 11 | const { routes } = props; 12 | 13 | // verifies if routeName is the one active (in browser input) 14 | const activeRoute = (routeName: string) => { 15 | return location.pathname.includes(routeName); 16 | }; 17 | 18 | const createLinks = (routes: RoutesType[]) => { 19 | return routes.map((route, index) => { 20 | if ( 21 | route.layout === "/admin" || 22 | route.layout === "/auth" || 23 | route.layout === "/rtl" 24 | ) { 25 | return ( 26 | 27 |
    28 |
  • 32 | 39 | {route.icon ? route.icon : }{" "} 40 | 41 |

    48 | {route.name} 49 |

    50 |
  • 51 | {activeRoute(route.path) ? ( 52 |
    53 | ) : null} 54 |
    55 | 56 | ); 57 | } 58 | }); 59 | }; 60 | // BRAND 61 | return <>{createLinks(routes)}; 62 | }; 63 | 64 | export default SidebarLinks; 65 | -------------------------------------------------------------------------------- /src/components/sidebar/components/SidebarCard.tsx: -------------------------------------------------------------------------------- 1 | const FreeCard = () => { 2 | return ( 3 |
    4 |
    5 | 12 | 16 | 20 | 26 | 27 |
    28 | 29 |
    30 |

    Upgrade to PRO

    31 |

    32 | Improve your development process and start doing more with Horizon UI 33 | PRO! 34 |

    35 | 36 | 41 | Upgrade to PRO 42 | 43 |
    44 |
    45 | ); 46 | }; 47 | 48 | export default FreeCard; 49 | -------------------------------------------------------------------------------- /src/components/sidebar/componentsrtl/SidebarCard.tsx: -------------------------------------------------------------------------------- 1 | const FreeCard = () => { 2 | return ( 3 |
    4 |
    5 | 12 | 16 | 20 | 26 | 27 |
    28 | 29 |
    30 |

    Upgrade to PRO

    31 |

    32 | Improve your development process and start doing more with Horizon UI 33 | PRO! 34 |

    35 | 36 | 41 | Upgrade to PRO 42 | 43 |
    44 |
    45 | ); 46 | }; 47 | 48 | export default FreeCard; 49 | -------------------------------------------------------------------------------- /src/views/rtl/default/components/PieChartCard.tsx: -------------------------------------------------------------------------------- 1 | import PieChart from "components/charts/PieChart"; 2 | import { pieChartData, pieChartOptions } from "variables/charts"; 3 | import Card from "components/card"; 4 | 5 | const PieChartCard = () => { 6 | return ( 7 | 8 |
    9 |
    10 |

    11 | Your Pie Chart 12 |

    13 |
    14 | 15 |
    16 | 21 |
    22 |
    23 | 24 |
    25 | 26 |
    27 |
    28 |
    29 |
    30 |
    31 |

    Your Files

    32 |
    33 |

    34 | 63% 35 |

    36 |
    37 | 38 |
    39 | 40 |
    41 |
    42 |
    43 |

    System

    44 |
    45 |

    46 | 25% 47 |

    48 |
    49 |
    50 | 51 | ); 52 | }; 53 | 54 | export default PieChartCard; 55 | -------------------------------------------------------------------------------- /src/views/admin/default/components/PieChartCard.tsx: -------------------------------------------------------------------------------- 1 | import PieChart from "components/charts/PieChart"; 2 | import { pieChartData, pieChartOptions } from "variables/charts"; 3 | import Card from "components/card"; 4 | 5 | const PieChartCard = () => { 6 | return ( 7 | 8 |
    9 |
    10 |

    11 | Your Pie Chart 12 |

    13 |
    14 | 15 |
    16 | 21 |
    22 |
    23 | 24 |
    25 | 26 |
    27 |
    28 |
    29 |
    30 |
    31 |

    Your Files

    32 |
    33 |

    34 | 63% 35 |

    36 |
    37 | 38 |
    39 | 40 |
    41 |
    42 |
    43 |

    System

    44 |
    45 |

    46 | 25% 47 |

    48 |
    49 |
    50 | 51 | ); 52 | }; 53 | 54 | export default PieChartCard; 55 | -------------------------------------------------------------------------------- /src/components/switch/index.tsx: -------------------------------------------------------------------------------- 1 | const Switch = (props: { 2 | extra?: string; 3 | color?: 4 | | "red" 5 | | "blue" 6 | | "green" 7 | | "yellow" 8 | | "orange" 9 | | "teal" 10 | | "navy" 11 | | "lime" 12 | | "cyan" 13 | | "pink" 14 | | "purple" 15 | | "amber" 16 | | "indigo" 17 | | "gray"; 18 | [x: string]: any; 19 | }) => { 20 | const { extra, color, ...rest } = props; 21 | return ( 22 | 62 | ); 63 | }; 64 | 65 | export default Switch; 66 | -------------------------------------------------------------------------------- /src/components/card/CardMenu.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Dropdown from "components/dropdown"; 3 | import { AiOutlineUser } from "react-icons/ai"; 4 | import { BsThreeDots } from "react-icons/bs"; 5 | import { FiSettings } from "react-icons/fi"; 6 | import { AiOutlineShop } from "react-icons/ai"; 7 | import { TiLightbulb } from "react-icons/ti"; 8 | 9 | function CardMenu(props: { transparent?: boolean }) { 10 | const { transparent } = props; 11 | const [open, setOpen] = React.useState(false); 12 | return ( 13 | setOpen(!open)} 17 | className={`flex items-center text-xl hover:cursor-pointer ${ 18 | transparent 19 | ? "bg-none text-white hover:bg-none active:bg-none" 20 | : "bg-lightPrimary p-2 text-brand-500 hover:bg-gray-100 dark:bg-navy-700 dark:text-white dark:hover:bg-white/20 dark:active:bg-white/10" 21 | } linear justify-center rounded-lg font-bold transition duration-200`} 22 | > 23 | 24 | 25 | } 26 | animation={"origin-top-right transition-all duration-300 ease-in-out"} 27 | classNames={`${transparent ? "top-8" : "top-11"} right-0 w-max`} 28 | children={ 29 |
    30 |

    31 | 32 | 33 | 34 | Panel 1 35 |

    36 |

    37 | 38 | 39 | 40 | Panel 2 41 |

    42 |

    43 | 44 | 45 | 46 | Panel 3 47 |

    48 |

    49 | 50 | 51 | 52 | Panel 4 53 |

    54 |
    55 | } 56 | /> 57 | ); 58 | } 59 | 60 | export default CardMenu; 61 | -------------------------------------------------------------------------------- /src/components/checkbox/index.tsx: -------------------------------------------------------------------------------- 1 | const Checkbox = (props: { 2 | extra?: string; 3 | color?: 4 | | "red" 5 | | "blue" 6 | | "green" 7 | | "yellow" 8 | | "orange" 9 | | "teal" 10 | | "navy" 11 | | "lime" 12 | | "cyan" 13 | | "pink" 14 | | "purple" 15 | | "amber" 16 | | "indigo" 17 | | "gray"; 18 | [x: string]: any; 19 | }) => { 20 | const { extra, color, ...rest } = props; 21 | return ( 22 | 60 | ); 61 | }; 62 | 63 | export default Checkbox; 64 | -------------------------------------------------------------------------------- /src/routes.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | 3 | // Admin Imports 4 | import MainDashboard from "views/admin/default"; 5 | import NFTMarketplace from "views/admin/marketplace"; 6 | import Profile from "views/admin/profile"; 7 | import DataTables from "views/admin/tables"; 8 | import RTLDefault from "views/rtl/default"; 9 | 10 | // Auth Imports 11 | import SignIn from "views/auth/SignIn"; 12 | 13 | // Icon Imports 14 | import { 15 | MdHome, 16 | MdMovie, 17 | MdBook, 18 | MdBarChart, 19 | MdPerson, 20 | MdImage, 21 | MdBookmark, 22 | MdMusicNote, 23 | MdGamepad, 24 | Md3DRotation, 25 | MdChat, 26 | } from "react-icons/md"; 27 | 28 | const routes = [ 29 | { 30 | name: "Main Dashboard", 31 | layout: "/admin", 32 | path: "default", 33 | icon: , 34 | component: , 35 | }, 36 | { 37 | name: "Image Generation", 38 | layout: "/admin", 39 | path: "/image", 40 | icon: , 41 | component: <>, 42 | }, 43 | { 44 | name: "Narrative", 45 | layout: "/admin", 46 | path: "/narrative", 47 | icon: , 48 | component: <>, 49 | }, 50 | { 51 | name: "Comics and Manga", 52 | layout: "/admin", 53 | path: "/comics", 54 | icon: , 55 | component: <>, 56 | }, 57 | { 58 | name: "Animation", 59 | layout: "/admin", 60 | path: "/animation", 61 | icon: , 62 | component: <>, 63 | }, 64 | { 65 | name: "Audio and Voice", 66 | layout: "/admin", 67 | path: "/audio", 68 | icon: , 69 | component: <>, 70 | }, 71 | { 72 | name: "Game Creation", 73 | layout: "/admin", 74 | path: "/game", 75 | icon: , 76 | component: <>, 77 | }, 78 | { 79 | name: "3D Creation", 80 | layout: "/admin", 81 | path: "/3d", 82 | icon: , 83 | component: <>, 84 | }, 85 | { 86 | name: "Chat", 87 | layout: "/admin", 88 | path: "/chat", 89 | icon: , 90 | component: <>, 91 | }, 92 | { 93 | name: "Statistics", 94 | layout: "/admin", 95 | icon: , 96 | path: "data-tables", 97 | component: , 98 | }, 99 | { 100 | name: "Profile", 101 | layout: "/admin", 102 | path: "profile", 103 | icon: , 104 | component: , 105 | }, 106 | // { 107 | // name: "Sign In", 108 | // layout: "/auth", 109 | // path: "sign-in", 110 | // icon: , 111 | // component: , 112 | // }, 113 | // { 114 | // name: "RTL Admin", 115 | // layout: "/rtl", 116 | // path: "rtl", 117 | // icon: , 118 | // component: , 119 | // }, 120 | ]; 121 | export default routes; 122 | -------------------------------------------------------------------------------- /src/layouts/rtl/index.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Routes, Route, Navigate, useLocation } from "react-router-dom"; 3 | import Navbar from "components/navbar/RTL"; 4 | import Sidebar from "components/sidebar/RTL"; 5 | import Footer from "components/footer/Footer"; 6 | import routes from "routes"; 7 | 8 | export default function RTL() { 9 | const location = useLocation(); 10 | const [open, setOpen] = React.useState(true); 11 | const [currentRoute, setCurrentRoute] = React.useState("Main Dashboard"); 12 | 13 | React.useEffect(() => { 14 | window.addEventListener("resize", () => 15 | window.innerWidth < 1200 ? setOpen(false) : setOpen(true) 16 | ); 17 | }, []); 18 | React.useEffect(() => { 19 | getActiveRoute(routes); 20 | }, [location.pathname]); 21 | 22 | const getActiveRoute = (routes: RoutesType[]): string | boolean => { 23 | let activeRoute = "RTL"; 24 | for (let i = 0; i < routes.length; i++) { 25 | if ( 26 | window.location.href.indexOf( 27 | routes[i].layout + "/" + routes[i].path 28 | ) !== -1 29 | ) { 30 | setCurrentRoute(routes[i].name); 31 | } 32 | } 33 | return activeRoute; 34 | }; 35 | const getActiveNavbar = (routes: RoutesType[]): string | boolean => { 36 | let activeNavbar = false; 37 | for (let i = 0; i < routes.length; i++) { 38 | if ( 39 | window.location.href.indexOf(routes[i].layout + routes[i].path) !== -1 40 | ) { 41 | return routes[i].secondary; 42 | } 43 | } 44 | return activeNavbar; 45 | }; 46 | const getRoutes = (routes: RoutesType[]): any => { 47 | return routes.map((prop, key) => { 48 | if (prop.layout === "/rtl") { 49 | return ( 50 | 51 | ); 52 | } else { 53 | return null; 54 | } 55 | }); 56 | }; 57 | 58 | document.documentElement.dir = "rtl"; 59 | return ( 60 |
    61 | setOpen(false)} /> 62 | {/* Navbar & Main Content */} 63 |
    64 | {/* Main Content */} 65 |
    68 | {/* Routes */} 69 |
    70 | setOpen(true)} 72 | brandText={currentRoute} 73 | secondary={getActiveNavbar(routes)} 74 | /> 75 |
    76 | 77 | {getRoutes(routes)} 78 | 79 | } 82 | /> 83 | 84 |
    85 |
    86 |
    87 |
    88 |
    89 |
    90 |
    91 |
    92 | ); 93 | } 94 | -------------------------------------------------------------------------------- /src/layouts/auth/index.tsx: -------------------------------------------------------------------------------- 1 | import Footer from "components/footer/FooterAuthDefault"; 2 | import authImg from "assets/img/auth/auth.png"; 3 | import { Link, Routes, Route, Navigate } from "react-router-dom"; 4 | import routes from "routes"; 5 | import FixedPlugin from "components/fixedPlugin/FixedPlugin"; 6 | 7 | export default function Auth() { 8 | const getRoutes = (routes: RoutesType[]): any => { 9 | return routes.map((prop, key) => { 10 | if (prop.layout === "/auth") { 11 | return ( 12 | 13 | ); 14 | } else { 15 | return null; 16 | } 17 | }); 18 | }; 19 | document.documentElement.dir = "ltr"; 20 | return ( 21 |
    22 |
    23 | 24 |
    25 |
    26 |
    27 |
    28 | 29 |
    30 | 37 | 41 | 42 |

    43 | Back to Dashboard 44 |

    45 |
    46 | 47 | 48 | {getRoutes(routes)} 49 | } 52 | /> 53 | 54 |
    55 |
    59 |
    60 |
    61 |
    62 |
    63 |
    64 |
    65 |
    66 |
    67 | ); 68 | } 69 | -------------------------------------------------------------------------------- /src/layouts/admin/index.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { Routes, Route, Navigate, useLocation } from "react-router-dom"; 3 | import Navbar from "components/navbar"; 4 | import Sidebar from "components/sidebar"; 5 | import Footer from "components/footer/Footer"; 6 | import routes from "routes"; 7 | 8 | export default function Admin(props: { [x: string]: any }) { 9 | const { ...rest } = props; 10 | const location = useLocation(); 11 | const [open, setOpen] = React.useState(true); 12 | const [currentRoute, setCurrentRoute] = React.useState("Main Dashboard"); 13 | 14 | React.useEffect(() => { 15 | window.addEventListener("resize", () => 16 | window.innerWidth < 1200 ? setOpen(false) : setOpen(true) 17 | ); 18 | }, []); 19 | React.useEffect(() => { 20 | getActiveRoute(routes); 21 | }, [location.pathname]); 22 | 23 | const getActiveRoute = (routes: RoutesType[]): string | boolean => { 24 | let activeRoute = "Main Dashboard"; 25 | for (let i = 0; i < routes.length; i++) { 26 | if ( 27 | window.location.href.indexOf( 28 | routes[i].layout + "/" + routes[i].path 29 | ) !== -1 30 | ) { 31 | setCurrentRoute(routes[i].name); 32 | } 33 | } 34 | return activeRoute; 35 | }; 36 | const getActiveNavbar = (routes: RoutesType[]): string | boolean => { 37 | let activeNavbar = false; 38 | for (let i = 0; i < routes.length; i++) { 39 | if ( 40 | window.location.href.indexOf(routes[i].layout + routes[i].path) !== -1 41 | ) { 42 | return routes[i].secondary; 43 | } 44 | } 45 | return activeNavbar; 46 | }; 47 | const getRoutes = (routes: RoutesType[]): any => { 48 | return routes.map((prop, key) => { 49 | if (prop.layout === "/admin") { 50 | return ( 51 | 52 | ); 53 | } else { 54 | return null; 55 | } 56 | }); 57 | }; 58 | 59 | document.documentElement.dir = "ltr"; 60 | return ( 61 |
    62 | setOpen(false)} /> 63 | {/* Navbar & Main Content */} 64 |
    65 | {/* Main Content */} 66 |
    69 | {/* Routes */} 70 |
    71 | setOpen(true)} 73 | brandText={currentRoute} 74 | secondary={getActiveNavbar(routes)} 75 | {...rest} 76 | /> 77 |
    78 | 79 | {getRoutes(routes)} 80 | 81 | } 84 | /> 85 | 86 |
    87 |
    88 |
    89 |
    90 |
    91 |
    92 |
    93 |
    94 | ); 95 | } 96 | -------------------------------------------------------------------------------- /src/views/admin/default/index.tsx: -------------------------------------------------------------------------------- 1 | import MiniCalendar from "components/calendar/MiniCalendar"; 2 | import WeeklyRevenue from "views/admin/default/components/WeeklyRevenue"; 3 | import TotalSpent from "views/admin/default/components/TotalSpent"; 4 | import PieChartCard from "views/admin/default/components/PieChartCard"; 5 | import { IoMdHome } from "react-icons/io"; 6 | import { IoDocuments } from "react-icons/io5"; 7 | import { MdBarChart, MdDashboard } from "react-icons/md"; 8 | 9 | import Widget from "components/widget/Widget"; 10 | import CheckTable from "views/admin/default/components/CheckTable"; 11 | import ComplexTable from "views/admin/default/components/ComplexTable"; 12 | import DailyTraffic from "views/admin/default/components/DailyTraffic"; 13 | import TaskCard from "views/admin/default/components/TaskCard"; 14 | import tableDataCheck from "./variables/tableDataCheck"; 15 | import tableDataComplex from "./variables/tableDataComplex"; 16 | 17 | const Dashboard = () => { 18 | return ( 19 |
    20 | {/* Card widget */} 21 | 22 |
    23 | } 25 | title={"Earnings"} 26 | subtitle={"$340.5"} 27 | /> 28 | } 30 | title={"Spend this month"} 31 | subtitle={"$642.39"} 32 | /> 33 | } 35 | title={"Sales"} 36 | subtitle={"$574.34"} 37 | /> 38 | } 40 | title={"Your Balance"} 41 | subtitle={"$1,000"} 42 | /> 43 | } 45 | title={"New Tasks"} 46 | subtitle={"145"} 47 | /> 48 | } 50 | title={"Total Projects"} 51 | subtitle={"$2433"} 52 | /> 53 |
    54 | 55 | {/* Charts */} 56 | 57 |
    58 | 59 | 60 |
    61 | 62 | {/* Tables & Charts */} 63 | 64 |
    65 | {/* Check Table */} 66 |
    67 | 68 |
    69 | 70 | {/* Traffic chart & Pie Chart */} 71 | 72 |
    73 | 74 | 75 |
    76 | 77 | {/* Complex Table , Task & Calendar */} 78 | 79 | 80 | 81 | {/* Task chart & Calendar */} 82 | 83 |
    84 | 85 |
    86 | 87 |
    88 |
    89 |
    90 |
    91 | ); 92 | }; 93 | 94 | export default Dashboard; 95 | -------------------------------------------------------------------------------- /src/views/rtl/default/index.tsx: -------------------------------------------------------------------------------- 1 | import MiniCalendar from "components/calendar/MiniCalendar"; 2 | import WeeklyRevenue from "views/admin/default/components/WeeklyRevenue"; 3 | import TotalSpent from "views/admin/default/components/TotalSpent"; 4 | import PieChartCard from "views/admin/default/components/PieChartCard"; 5 | import { IoMdHome } from "react-icons/io"; 6 | import { IoDocuments } from "react-icons/io5"; 7 | import { MdBarChart, MdDashboard } from "react-icons/md"; 8 | 9 | import Widget from "views/rtl/default/components/Widget"; 10 | import CheckTable from "views/rtl/default/components/CheckTable"; 11 | import ComplexTable from "views/rtl/default/components/ComplexTable"; 12 | import DailyTraffic from "views/rtl/default/components/DailyTraffic"; 13 | import TaskCard from "views/rtl/default/components/TaskCard"; 14 | import tableDataCheck from "./variables/tableDataCheck"; 15 | import tableDataComplex from "./variables/tableDataComplex"; 16 | 17 | const Dashboard = () => { 18 | return ( 19 |
    20 | {/* Card widget */} 21 | 22 |
    23 | } 25 | title={"Earnings"} 26 | subtitle={"$340.5"} 27 | /> 28 | } 30 | title={"Spend this month"} 31 | subtitle={"$642.39"} 32 | /> 33 | } 35 | title={"Sales"} 36 | subtitle={"$574.34"} 37 | /> 38 | } 40 | title={"Your Balance"} 41 | subtitle={"$1,000"} 42 | /> 43 | } 45 | title={"New Tasks"} 46 | subtitle={"145"} 47 | /> 48 | } 50 | title={"Total Projects"} 51 | subtitle={"$2433"} 52 | /> 53 |
    54 | 55 | {/* Charts */} 56 | 57 |
    58 | 59 | 60 |
    61 | 62 | {/* Tables & Charts */} 63 | 64 |
    65 | {/* Check Table */} 66 |
    67 | 68 |
    69 | 70 | {/* Traffic chart & Pie Chart */} 71 | 72 |
    73 | 74 | 75 |
    76 | 77 | {/* Complex Table , Task & Calendar */} 78 | 79 | 80 | 81 | {/* Task chart & Calendar */} 82 | 83 |
    84 | 85 |
    86 | 87 |
    88 |
    89 |
    90 |
    91 | ); 92 | }; 93 | 94 | export default Dashboard; 95 | -------------------------------------------------------------------------------- /src/views/auth/SignIn.tsx: -------------------------------------------------------------------------------- 1 | import InputField from "components/fields/InputField"; 2 | import { FcGoogle } from "react-icons/fc"; 3 | import Checkbox from "components/checkbox"; 4 | 5 | export default function SignIn() { 6 | return ( 7 |
    8 | {/* Sign in section */} 9 |
    10 |

    11 | Sign In 12 |

    13 |

    14 | Enter your email and password to sign in! 15 |

    16 |
    17 |
    18 | 19 |
    20 |
    21 | Sign In with Google 22 |
    23 |
    24 |
    25 |
    26 |

    or

    27 |
    28 |
    29 | {/* Email */} 30 | 38 | 39 | {/* Password */} 40 | 48 | {/* Checkbox */} 49 |
    50 |
    51 | 52 |

    53 | Keep me logged In 54 |

    55 |
    56 | 60 | Forgot Password? 61 | 62 |
    63 | 66 |
    67 | 68 | Not registered yet? 69 | 70 | 74 | Create an account 75 | 76 |
    77 |
    78 |
    79 | ); 80 | } 81 | -------------------------------------------------------------------------------- /src/views/admin/profile/components/General.tsx: -------------------------------------------------------------------------------- 1 | import Card from "components/card"; 2 | const General = () => { 3 | return ( 4 | 5 | {/* Header */} 6 |
    7 |

    8 | General Information 9 |

    10 |

    11 | As we live, our hearts turn colder. Cause pain is what we go through 12 | as we become older. We get insulted by others, lose trust for those 13 | others. We get back stabbed by friends. It becomes harder for us to 14 | give others a hand. We get our heart broken by people we love, even 15 | that we give them all... 16 |

    17 |
    18 | {/* Cards */} 19 |
    20 |
    21 |

    Education

    22 |

    23 | Stanford University 24 |

    25 |
    26 | 27 |
    28 |

    Languages

    29 |

    30 | English, Spanish, Italian 31 |

    32 |
    33 | 34 |
    35 |

    Department

    36 |

    37 | Product Design 38 |

    39 |
    40 | 41 |
    42 |

    Work History

    43 |

    44 | English, Spanish, Italian 45 |

    46 |
    47 | 48 |
    49 |

    Organization

    50 |

    51 | Simmmple Web LLC 52 |

    53 |
    54 | 55 |
    56 |

    Birthday

    57 |

    58 | 20 July 1986 59 |

    60 |
    61 |
    62 |
    63 | ); 64 | }; 65 | 66 | export default General; 67 | -------------------------------------------------------------------------------- /src/views/admin/default/components/TaskCard.tsx: -------------------------------------------------------------------------------- 1 | import CardMenu from "components/card/CardMenu"; 2 | import Checkbox from "components/checkbox"; 3 | import { MdDragIndicator, MdCheckCircle } from "react-icons/md"; 4 | import Card from "components/card"; 5 | 6 | const TaskCard = () => { 7 | return ( 8 | 9 | {/* task header */} 10 |
    11 |
    12 |
    13 | 14 |
    15 |

    16 | Tasks 17 |

    18 |
    19 | 20 |
    21 | 22 | {/* task content */} 23 | 24 |
    25 |
    26 |
    27 | 28 |

    29 | Landing Page Design 30 |

    31 |
    32 |
    33 | 34 |
    35 |
    36 | 37 |
    38 |
    39 | 40 |

    41 | Mobile App Design 42 |

    43 |
    44 |
    45 | 46 |
    47 |
    48 | 49 |
    50 |
    51 | 52 |

    53 | Dashboard Builder 54 |

    55 |
    56 |
    57 | 58 |
    59 |
    60 | 61 |
    62 |
    63 | 64 |

    65 | Landing Page Design 66 |

    67 |
    68 |
    69 | 70 |
    71 |
    72 | 73 |
    74 |
    75 | 76 |

    77 | Dashboard Builder 78 |

    79 |
    80 |
    81 | 82 |
    83 |
    84 |
    85 |
    86 | ); 87 | }; 88 | 89 | export default TaskCard; 90 | -------------------------------------------------------------------------------- /src/views/rtl/default/components/TaskCard.tsx: -------------------------------------------------------------------------------- 1 | import CardMenu from "components/card/CardMenu"; 2 | import Checkbox from "components/checkbox"; 3 | import { MdDragIndicator, MdCheckCircle } from "react-icons/md"; 4 | import Card from "components/card"; 5 | 6 | const TaskCard = () => { 7 | return ( 8 | 9 | {/* task header */} 10 |
    11 |
    12 |
    13 | 14 |
    15 |

    16 | Tasks 17 |

    18 |
    19 | 20 |
    21 | 22 | {/* task content */} 23 | 24 |
    25 |
    26 |
    27 | 28 |

    29 | Landing Page Design 30 |

    31 |
    32 |
    33 | 34 |
    35 |
    36 | 37 |
    38 |
    39 | 40 |

    41 | Mobile App Design 42 |

    43 |
    44 |
    45 | 46 |
    47 |
    48 | 49 |
    50 |
    51 | 52 |

    53 | Dashboard Builder 54 |

    55 |
    56 |
    57 | 58 |
    59 |
    60 | 61 |
    62 |
    63 | 64 |

    65 | Landing Page Design 66 |

    67 |
    68 |
    69 | 70 |
    71 |
    72 | 73 |
    74 |
    75 | 76 |

    77 | Dashboard Builder 78 |

    79 |
    80 |
    81 | 82 |
    83 |
    84 |
    85 |
    86 | ); 87 | }; 88 | 89 | export default TaskCard; 90 | -------------------------------------------------------------------------------- /src/components/radio/index.tsx: -------------------------------------------------------------------------------- 1 | const Radio = (props: { 2 | extra?: string; 3 | color?: 4 | | "red" 5 | | "blue" 6 | | "green" 7 | | "yellow" 8 | | "orange" 9 | | "teal" 10 | | "navy" 11 | | "lime" 12 | | "cyan" 13 | | "pink" 14 | | "purple" 15 | | "amber" 16 | | "indigo" 17 | | "gray"; 18 | id: string; 19 | [x: string]: any; 20 | }) => { 21 | const { color, id, name, ...rest } = props; 22 | return ( 23 | 63 | ); 64 | }; 65 | 66 | export default Radio; 67 | -------------------------------------------------------------------------------- /src/components/card/ServiceCard.tsx: -------------------------------------------------------------------------------- 1 | import { IoHeart, IoHeartOutline } from "react-icons/io5"; 2 | import { useState } from "react"; 3 | import clsx from "clsx"; 4 | import Card from "components/card"; 5 | import { MdHome } from "react-icons/md"; 6 | import "./card.css"; 7 | 8 | const ServiceCard = (props: { 9 | image: string; 10 | title: string; 11 | author: string; 12 | list: string[]; 13 | download?: string; 14 | extra?: string; 15 | bgColor: string; 16 | icon: JSX.Element; 17 | }) => { 18 | const { title, author, image, list, extra, bgColor, icon } = props; 19 | const [heart, setHeart] = useState(true); 20 | return ( 21 | 22 |
    23 |
    24 | 29 | 41 |
    42 | 43 |
    44 |
    {icon}
    45 |
    46 |

    47 | {title} 48 |

    49 |

    50 | By {author} 51 |

    52 |
    53 | 54 | {/*
    55 | 56 | +5 57 | 58 | {bidders.map((avt, key) => ( 59 | 63 | 68 | 69 | ))} 70 |
    */} 71 |
    72 |
    73 |
      74 | {list.map((item, key) => ( 75 |
    • {item}
    • 76 | ))} 77 |
    78 |
    79 | 80 |
    81 | {/*
    82 |

    83 | Current Bid: {price} ETH 84 |

    85 |
    */} 86 | 89 |
    90 |
    91 |
    92 | ); 93 | }; 94 | 95 | export default ServiceCard; 96 | -------------------------------------------------------------------------------- /src/views/admin/profile/components/Notification.tsx: -------------------------------------------------------------------------------- 1 | import Card from "components/card"; 2 | import CardMenu from "components/card/CardMenu"; 3 | import Switch from "components/switch"; 4 | 5 | function Notification() { 6 | return ( 7 | 8 |
    9 |

    10 | Notifications 11 |

    12 | 13 |
    14 |
    15 | {/* the custom checkbox desing added in src/index.js */} 16 |
    17 | 18 | 24 |
    25 | 26 |
    27 | 28 | 34 |
    35 | 36 |
    37 | 38 | 44 |
    45 | 46 |
    47 | 48 | 54 |
    55 | 56 |
    57 | 58 | 64 |
    65 | 66 |
    67 | 68 | 74 |
    75 |
    76 | 77 | 83 |
    84 |
    85 | 86 | 92 |
    93 |
    94 | 95 | 101 |
    102 |
    103 |
    104 | ); 105 | } 106 | 107 | export default Notification; 108 | -------------------------------------------------------------------------------- /src/views/admin/marketplace/components/HistoryCard.tsx: -------------------------------------------------------------------------------- 1 | import Nft2 from "assets/img/nfts/Nft2.png"; 2 | import Nft1 from "assets/img/nfts/Nft1.png"; 3 | import Nft3 from "assets/img/nfts/Nft3.png"; 4 | import Nft4 from "assets/img/nfts/Nft4.png"; 5 | import Nft5 from "assets/img/nfts/Nft5.png"; 6 | import Nft6 from "assets/img/nfts/Nft6.png"; 7 | 8 | import { FaEthereum } from "react-icons/fa"; 9 | import Card from "components/card"; 10 | 11 | const HistoryCard = () => { 12 | const HistoryData = [ 13 | { 14 | image: Nft1, 15 | title: "Colorful Heaven", 16 | owner: "Mark Benjamin", 17 | price: 0.4, 18 | time: "30s", 19 | }, 20 | { 21 | image: Nft2, 22 | title: "Abstract Colors", 23 | owner: "Esthera Jackson", 24 | price: 2.4, 25 | time: "50m", 26 | }, 27 | { 28 | image: Nft3, 29 | title: "ETH AI Brain", 30 | owner: "Nick Wilson", 31 | price: 0.3, 32 | time: "20s", 33 | }, 34 | { 35 | image: Nft4, 36 | title: "Swipe Circles", 37 | owner: " Peter Will", 38 | price: 0.4, 39 | time: "4h", 40 | }, 41 | { 42 | image: Nft5, 43 | title: "Mesh Gradients", 44 | owner: "Will Smith", 45 | price: 0.4, 46 | time: "30s", 47 | }, 48 | { 49 | image: Nft6, 50 | title: "3D Cubes Art", 51 | owner: " Manny Gates", 52 | price: 0.4, 53 | time: "2m", 54 | }, 55 | ]; 56 | 57 | return ( 58 | 59 | {/* HistoryCard Header */} 60 |
    61 |
    62 | History 63 |
    64 | 67 |
    68 | 69 | {/* History CardData */} 70 | 71 | {HistoryData.map((data, index) => ( 72 |
    73 |
    74 |
    75 | 80 |
    81 |
    82 |
    83 | {" "} 84 | {data.title} 85 |
    86 |

    87 | {" "} 88 | {data.owner}{" "} 89 |

    90 |
    91 |
    92 | 93 |
    94 |
    95 | 96 |
    97 |
    98 |

    {}

    99 | {data.price}

    ETH

    100 |
    101 |
    102 |

    {data.time}

    103 |

    ago

    104 |
    105 |
    106 |
    107 | ))} 108 |
    109 | ); 110 | }; 111 | 112 | export default HistoryCard; 113 | -------------------------------------------------------------------------------- /src/types/react-table-config.d.ts: -------------------------------------------------------------------------------- 1 | import { 2 | UseColumnOrderInstanceProps, 3 | UseColumnOrderState, 4 | UseExpandedHooks, 5 | UseExpandedInstanceProps, 6 | UseExpandedOptions, 7 | UseExpandedRowProps, 8 | UseExpandedState, 9 | UseFiltersColumnOptions, 10 | UseFiltersColumnProps, 11 | UseFiltersInstanceProps, 12 | UseFiltersOptions, 13 | UseFiltersState, 14 | UseGlobalFiltersColumnOptions, 15 | UseGlobalFiltersInstanceProps, 16 | UseGlobalFiltersOptions, 17 | UseGlobalFiltersState, 18 | UseGroupByCellProps, 19 | UseGroupByColumnOptions, 20 | UseGroupByColumnProps, 21 | UseGroupByHooks, 22 | UseGroupByInstanceProps, 23 | UseGroupByOptions, 24 | UseGroupByRowProps, 25 | UseGroupByState, 26 | UsePaginationInstanceProps, 27 | UsePaginationOptions, 28 | UsePaginationState, 29 | UseResizeColumnsColumnOptions, 30 | UseResizeColumnsColumnProps, 31 | UseResizeColumnsOptions, 32 | UseResizeColumnsState, 33 | UseRowSelectHooks, 34 | UseRowSelectInstanceProps, 35 | UseRowSelectOptions, 36 | UseRowSelectRowProps, 37 | UseRowSelectState, 38 | UseRowStateCellProps, 39 | UseRowStateInstanceProps, 40 | UseRowStateOptions, 41 | UseRowStateRowProps, 42 | UseRowStateState, 43 | UseSortByColumnOptions, 44 | UseSortByColumnProps, 45 | UseSortByHooks, 46 | UseSortByInstanceProps, 47 | UseSortByOptions, 48 | UseSortByState 49 | } from 'react-table'; 50 | 51 | declare module 'react-table' { 52 | // take this file as-is, or comment out the sections that don't apply to your plugin configuration 53 | 54 | export interface TableOptions> 55 | extends UseExpandedOptions, 56 | UseFiltersOptions, 57 | UseGlobalFiltersOptions, 58 | UseGroupByOptions, 59 | UsePaginationOptions, 60 | UseResizeColumnsOptions, 61 | UseRowSelectOptions, 62 | UseRowStateOptions, 63 | UseSortByOptions, 64 | // note that having Record here allows you to add anything to the options, this matches the spirit of the 65 | // underlying js library, but might be cleaner if it's replaced by a more specific type that matches your 66 | // feature set, this is a safe default. 67 | Record {} 68 | 69 | export interface Hooks = Record> 70 | extends UseExpandedHooks, 71 | UseGroupByHooks, 72 | UseRowSelectHooks, 73 | UseSortByHooks {} 74 | 75 | export interface TableInstance = Record> 76 | extends UseColumnOrderInstanceProps, 77 | UseExpandedInstanceProps, 78 | UseFiltersInstanceProps, 79 | UseGlobalFiltersInstanceProps, 80 | UseGroupByInstanceProps, 81 | UsePaginationInstanceProps, 82 | UseRowSelectInstanceProps, 83 | UseRowStateInstanceProps, 84 | UseSortByInstanceProps {} 85 | 86 | export interface TableState = Record> 87 | extends UseColumnOrderState, 88 | UseExpandedState, 89 | UseFiltersState, 90 | UseGlobalFiltersState, 91 | UseGroupByState, 92 | UsePaginationState, 93 | UseResizeColumnsState, 94 | UseRowSelectState, 95 | UseRowStateState, 96 | UseSortByState {} 97 | 98 | export interface ColumnInterface = Record> 99 | extends UseFiltersColumnOptions, 100 | UseGlobalFiltersColumnOptions, 101 | UseGroupByColumnOptions, 102 | UseResizeColumnsColumnOptions, 103 | UseSortByColumnOptions {} 104 | 105 | export interface ColumnInstance = Record> 106 | extends UseFiltersColumnProps, 107 | UseGroupByColumnProps, 108 | UseResizeColumnsColumnProps, 109 | UseSortByColumnProps {} 110 | 111 | export interface Cell = Record, V = any> 112 | extends UseGroupByCellProps, 113 | UseRowStateCellProps {} 114 | 115 | export interface Row = Record> 116 | extends UseExpandedRowProps, 117 | UseGroupByRowProps, 118 | UseRowSelectRowProps, 119 | UseRowStateRowProps {} 120 | } 121 | -------------------------------------------------------------------------------- /src/views/admin/profile/components/Project.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import { MdModeEditOutline } from "react-icons/md"; 3 | import image1 from "assets/img/profile/image1.png"; 4 | import image2 from "assets/img/profile/image2.png"; 5 | import image3 from "assets/img/profile/image3.png"; 6 | import Card from "components/card"; 7 | 8 | const Project = () => { 9 | return ( 10 | 11 |
    12 |

    13 | All projects 14 |

    15 |

    16 | Here you can find more details about your projects. Keep you user 17 | engaged by providing meaningful information. 18 |

    19 |
    20 | {/* Project 1 */} 21 |
    22 |
    23 |
    24 | 25 |
    26 |
    27 |

    28 | Technology behind the Blockchain 29 |

    30 |

    31 | Project #1 . 32 | 36 | See product details 37 | 38 |

    39 |
    40 |
    41 |
    42 | 43 |
    44 |
    45 | {/* Project 1 */} 46 |
    47 |
    48 |
    49 | 50 |
    51 |
    52 |

    53 | Technology behind the Blockchain 54 |

    55 |

    56 | Project #1 . 57 | 61 | See product details 62 | 63 |

    64 |
    65 |
    66 |
    67 | 68 |
    69 |
    70 | {/* Project 1 */} 71 |
    72 |
    73 |
    74 | 75 |
    76 |
    77 |

    78 | Technology behind the Blockchain 79 |

    80 |

    81 | Project #1 . 82 | 86 | See product details 87 | 88 |

    89 |
    90 |
    91 |
    92 | 93 |
    94 |
    95 |
    96 | ); 97 | }; 98 | 99 | export default Project; 100 | -------------------------------------------------------------------------------- /src/assets/css/MiniCalendar.css: -------------------------------------------------------------------------------- 1 | @import url("https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&display=swap"); 2 | /* LIGHT MODE + GENERAL */ 3 | 4 | .react-calendar { 5 | border: unset; 6 | background-color: transparent; 7 | font-family: "DM Sans", sans-serif; 8 | } 9 | .react-calendar__navigation__prev2-button { 10 | display: none; 11 | } 12 | .react-calendar__navigation__next2-button { 13 | display: none; 14 | } 15 | .react-calendar__navigation { 16 | align-items: center; 17 | } 18 | abbr[title] { 19 | border-bottom: none; 20 | -webkit-text-decoration: unset; 21 | text-decoration: unset; 22 | -webkit-text-decoration: unset; 23 | -webkit-text-decoration: unset; 24 | text-decoration: unset !important; 25 | } 26 | .react-calendar__navigation__prev-button { 27 | background-color: #4318ff !important; 28 | border-radius: 10px; 29 | min-width: 34px !important; 30 | height: 34px !important; 31 | color: white; 32 | } 33 | .react-calendar__navigation__next-button { 34 | background-color: #4318ff !important; 35 | border-radius: 10px; 36 | min-width: 34px !important; 37 | width: 34px !important; 38 | height: 34px !important; 39 | color: white; 40 | } 41 | .react-calendar__navigation__label { 42 | font-weight: 700 !important; 43 | font-size: 18px; 44 | } 45 | .react-calendar__navigation__label:hover, 46 | .react-calendar__navigation__label:focus { 47 | background-color: unset !important; 48 | border-radius: 10px; 49 | } 50 | .react-calendar__tile { 51 | font-size: 12px; 52 | display: flex; 53 | align-items: center; 54 | justify-content: center; 55 | padding: 0px !important; 56 | height: 34px !important; 57 | color: #1b2559; 58 | } 59 | .react-calendar__month-view__weekdays { 60 | background-color: #f4f7fe; 61 | border-radius: 10px; 62 | margin-bottom: 6px; 63 | } 64 | .react-calendar__tile--now, 65 | .react-calendar__tile--now:enabled:hover, 66 | .react-calendar__tile--now:enabled:focus { 67 | background-color: #f4f7fe; 68 | border-radius: 10px; 69 | } 70 | .react-calendar__month-view__days__day--neighboringMonth { 71 | color: #b0bbd5; 72 | } 73 | .react-calendar__tile--active, 74 | .react-calendar__tile--active:enabled:hover, 75 | .react-calendar__tile--active:enabled:focus { 76 | background: #4318ff; 77 | border-radius: 10px; 78 | color: white; 79 | } 80 | .react-calendar__tile--range, 81 | .react-calendar__tile--range:enabled:hover, 82 | .react-calendar__tile--range:enabled:focus { 83 | background: #f4f7fe; 84 | color: #4318ff; 85 | border-radius: 0px; 86 | } 87 | .react-calendar__tile--rangeStart, 88 | .react-calendar__tile--rangeStart:enabled:hover, 89 | .react-calendar__tile--rangeStart:enabled:focus { 90 | background: #4318ff; 91 | border-top-left-radius: 10px; 92 | border-bottom-left-radius: 10px; 93 | color: white; 94 | } 95 | .react-calendar__tile--rangeEnd, 96 | .react-calendar__tile--rangeEnd:enabled:hover, 97 | .react-calendar__tile--rangeEnd:enabled:focus { 98 | background: #4318ff; 99 | border-top-right-radius: 10px; 100 | border-bottom-right-radius: 10px; 101 | color: white; 102 | } 103 | 104 | /* DARK MODE */ 105 | 106 | body.dark .react-calendar { 107 | border-radius: 30px; 108 | } 109 | body.dark .react-calendar__navigation__prev-button { 110 | background-color: #7551ff !important; 111 | } 112 | body.dark .react-calendar__navigation__next-button { 113 | background-color: #7551ff !important; 114 | color: white; 115 | } 116 | body.dark .react-calendar__tile { 117 | color: white; 118 | } 119 | body.dark .react-calendar__tile:enabled:hover, 120 | body.dark .react-calendar__tile:enabled:focus { 121 | background-color: rgba(255, 255, 255, 0.1); 122 | } 123 | body.dark .react-calendar__month-view__weekdays { 124 | background-color: rgba(255, 255, 255, 0.1); 125 | } 126 | body.dark .react-calendar__tile--now, 127 | body.dark .react-calendar__tile--now:enabled:hover, 128 | body.dark .react-calendar__tile--now:enabled:focus { 129 | background-color: rgba(255, 255, 255, 0.1); 130 | } 131 | body.dark .react-calendar__month-view__days__day--neighboringMonth { 132 | color: #b0bbd5; 133 | } 134 | body.dark .react-calendar__tile--active, 135 | body.dark .react-calendar__tile--active:enabled:hover, 136 | body.dark .react-calendar__tile--active:enabled:focus { 137 | background: #7551ff; 138 | color: white; 139 | } 140 | body.dark .react-calendar__tile--range, 141 | body.dark .react-calendar__tile--range:enabled:hover, 142 | body.dark .react-calendar__tile--range:enabled:focus { 143 | background: rgba(255, 255, 255, 0.1); 144 | color: #7551ff; 145 | } 146 | body.dark .react-calendar__tile--rangeStart, 147 | body.dark .react-calendar__tile--rangeStart:enabled:hover, 148 | body.dark .react-calendar__tile--rangeStart:enabled:focus { 149 | background: #7551ff; 150 | color: white; 151 | } 152 | body.dark .react-calendar__tile--rangeEnd, 153 | body.dark .react-calendar__tile--rangeEnd:enabled:hover, 154 | body.dark .react-calendar__tile--rangeEnd:enabled:focus { 155 | background: #7551ff; 156 | color: white; 157 | } -------------------------------------------------------------------------------- /src/views/admin/tables/components/ColumnsTable.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import CardMenu from "components/card/CardMenu"; 3 | import Card from "components/card"; 4 | 5 | import { 6 | createColumnHelper, 7 | flexRender, 8 | getCoreRowModel, 9 | getSortedRowModel, 10 | SortingState, 11 | useReactTable, 12 | } from "@tanstack/react-table"; 13 | 14 | type RowObj = { 15 | name: [string, boolean]; 16 | progress: string; 17 | quantity: number; 18 | date: string; 19 | }; 20 | 21 | function ColumnsTable(props: { tableData: any }) { 22 | const { tableData } = props; 23 | const [sorting, setSorting] = React.useState([]); 24 | let defaultData = tableData; 25 | const columns = [ 26 | columnHelper.accessor("name", { 27 | id: "name", 28 | header: () => ( 29 |

    NAME

    30 | ), 31 | cell: (info: any) => ( 32 |

    33 | {info.getValue()} 34 |

    35 | ), 36 | }), 37 | columnHelper.accessor("progress", { 38 | id: "progress", 39 | header: () => ( 40 |

    41 | PROGRESS 42 |

    43 | ), 44 | cell: (info) => ( 45 |

    46 | {info.getValue()} 47 |

    48 | ), 49 | }), 50 | columnHelper.accessor("quantity", { 51 | id: "quantity", 52 | header: () => ( 53 |

    54 | QUANTITY 55 |

    56 | ), 57 | cell: (info) => ( 58 |

    59 | {info.getValue()} 60 |

    61 | ), 62 | }), 63 | columnHelper.accessor("date", { 64 | id: "date", 65 | header: () => ( 66 |

    DATE

    67 | ), 68 | cell: (info) => ( 69 |

    70 | {info.getValue()} 71 |

    72 | ), 73 | }), 74 | ]; // eslint-disable-next-line 75 | const [data, setData] = React.useState(() => [...defaultData]); 76 | const table = useReactTable({ 77 | data, 78 | columns, 79 | state: { 80 | sorting, 81 | }, 82 | onSortingChange: setSorting, 83 | getCoreRowModel: getCoreRowModel(), 84 | getSortedRowModel: getSortedRowModel(), 85 | debugTable: true, 86 | }); 87 | return ( 88 | 89 |
    90 |
    91 | 4-Columns Table 92 |
    93 | 94 |
    95 | 96 |
    97 | 98 | 99 | {table.getHeaderGroups().map((headerGroup) => ( 100 | 101 | {headerGroup.headers.map((header) => { 102 | return ( 103 | 120 | ); 121 | })} 122 | 123 | ))} 124 | 125 | 126 | {table 127 | .getRowModel() 128 | .rows.slice(0, 5) 129 | .map((row) => { 130 | return ( 131 | 132 | {row.getVisibleCells().map((cell) => { 133 | return ( 134 | 143 | ); 144 | })} 145 | 146 | ); 147 | })} 148 | 149 |
    109 |
    110 | {flexRender( 111 | header.column.columnDef.header, 112 | header.getContext() 113 | )} 114 | {{ 115 | asc: "", 116 | desc: "", 117 | }[header.column.getIsSorted() as string] ?? null} 118 |
    119 |
    138 | {flexRender( 139 | cell.column.columnDef.cell, 140 | cell.getContext() 141 | )} 142 |
    150 |
    151 |
    152 | ); 153 | } 154 | 155 | export default ColumnsTable; 156 | const columnHelper = createColumnHelper(); 157 | -------------------------------------------------------------------------------- /src/views/admin/marketplace/components/TableTopCreators.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import Progress from "components/progress"; 3 | import Card from "components/card"; 4 | 5 | import { 6 | createColumnHelper, 7 | flexRender, 8 | getCoreRowModel, 9 | getSortedRowModel, 10 | SortingState, 11 | useReactTable, 12 | } from "@tanstack/react-table"; 13 | type RowObj = { 14 | name: string[]; 15 | artworks: number; 16 | rating: number; 17 | }; 18 | 19 | function CheckTable(props: { tableData: any }) { 20 | const { tableData } = props; 21 | const [sorting, setSorting] = React.useState([]); 22 | let defaultData = tableData; 23 | const columns = [ 24 | columnHelper.accessor("name", { 25 | id: "name", 26 | header: () => ( 27 |

    NAME

    28 | ), 29 | cell: (info: any) => ( 30 |
    31 |
    32 | 37 |
    38 |

    39 | {info.getValue()[0]} 40 |

    41 |
    42 | ), 43 | }), 44 | columnHelper.accessor("artworks", { 45 | id: "artworks", 46 | header: () => ( 47 |

    48 | ARTWORKS 49 |

    50 | ), 51 | cell: (info) => ( 52 |

    53 | {info.getValue()} 54 |

    55 | ), 56 | }), 57 | columnHelper.accessor("rating", { 58 | id: "rating", 59 | header: () => ( 60 |

    61 | RATING 62 |

    63 | ), 64 | cell: (info) => ( 65 |
    66 | 67 |
    68 | ), 69 | }), 70 | ]; // eslint-disable-next-line 71 | const [data, setData] = React.useState(() => [...defaultData]); 72 | const table = useReactTable({ 73 | data, 74 | columns, 75 | state: { 76 | sorting, 77 | }, 78 | onSortingChange: setSorting, 79 | getCoreRowModel: getCoreRowModel(), 80 | getSortedRowModel: getSortedRowModel(), 81 | debugTable: true, 82 | }); 83 | return ( 84 | 85 |
    86 |
    87 | Check Table 88 |
    89 | 90 | 93 |
    94 | 95 |
    96 | 97 | 98 | {table.getHeaderGroups().map((headerGroup) => ( 99 | 100 | {headerGroup.headers.map((header) => { 101 | return ( 102 | 119 | ); 120 | })} 121 | 122 | ))} 123 | 124 | 125 | {table 126 | .getRowModel() 127 | .rows.slice(0, 5) 128 | .map((row) => { 129 | return ( 130 | 131 | {row.getVisibleCells().map((cell) => { 132 | return ( 133 | 142 | ); 143 | })} 144 | 145 | ); 146 | })} 147 | 148 |
    108 |
    109 | {flexRender( 110 | header.column.columnDef.header, 111 | header.getContext() 112 | )} 113 | {{ 114 | asc: "", 115 | desc: "", 116 | }[header.column.getIsSorted() as string] ?? null} 117 |
    118 |
    137 | {flexRender( 138 | cell.column.columnDef.cell, 139 | cell.getContext() 140 | )} 141 |
    149 |
    150 |
    151 | ); 152 | } 153 | 154 | export default CheckTable; 155 | const columnHelper = createColumnHelper(); 156 | -------------------------------------------------------------------------------- /src/views/admin/default/components/CheckTable.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import CardMenu from "components/card/CardMenu"; 3 | import Checkbox from "components/checkbox"; 4 | import Card from "components/card"; 5 | 6 | import { 7 | createColumnHelper, 8 | flexRender, 9 | getCoreRowModel, 10 | getSortedRowModel, 11 | SortingState, 12 | useReactTable, 13 | } from "@tanstack/react-table"; 14 | 15 | type RowObj = { 16 | name: [string, boolean]; 17 | progress: string; 18 | quantity: number; 19 | date: string; 20 | }; 21 | 22 | function CheckTable(props: { tableData: any }) { 23 | const { tableData } = props; 24 | const [sorting, setSorting] = React.useState([]); 25 | let defaultData = tableData; 26 | const columns = [ 27 | columnHelper.accessor("name", { 28 | id: "name", 29 | header: () => ( 30 |

    NAME

    31 | ), 32 | cell: (info: any) => ( 33 |
    34 | 39 |

    40 | {info.getValue()[0]} 41 |

    42 |
    43 | ), 44 | }), 45 | columnHelper.accessor("progress", { 46 | id: "progress", 47 | header: () => ( 48 |

    49 | PROGRESS 50 |

    51 | ), 52 | cell: (info) => ( 53 |

    54 | {info.getValue()} 55 |

    56 | ), 57 | }), 58 | columnHelper.accessor("quantity", { 59 | id: "quantity", 60 | header: () => ( 61 |

    62 | QUANTITY 63 |

    64 | ), 65 | cell: (info) => ( 66 |

    67 | {info.getValue()} 68 |

    69 | ), 70 | }), 71 | columnHelper.accessor("date", { 72 | id: "date", 73 | header: () => ( 74 |

    DATE

    75 | ), 76 | cell: (info) => ( 77 |

    78 | {info.getValue()} 79 |

    80 | ), 81 | }), 82 | ]; // eslint-disable-next-line 83 | const [data, setData] = React.useState(() => [...defaultData]); 84 | const table = useReactTable({ 85 | data, 86 | columns, 87 | state: { 88 | sorting, 89 | }, 90 | onSortingChange: setSorting, 91 | getCoreRowModel: getCoreRowModel(), 92 | getSortedRowModel: getSortedRowModel(), 93 | debugTable: true, 94 | }); 95 | return ( 96 | 97 |
    98 |
    99 | Check Table 100 |
    101 | 102 | 103 |
    104 | 105 |
    106 | 107 | 108 | {table.getHeaderGroups().map((headerGroup) => ( 109 | 110 | {headerGroup.headers.map((header) => { 111 | return ( 112 | 129 | ); 130 | })} 131 | 132 | ))} 133 | 134 | 135 | {table 136 | .getRowModel() 137 | .rows.slice(0, 5) 138 | .map((row) => { 139 | return ( 140 | 141 | {row.getVisibleCells().map((cell) => { 142 | return ( 143 | 152 | ); 153 | })} 154 | 155 | ); 156 | })} 157 | 158 |
    118 |
    119 | {flexRender( 120 | header.column.columnDef.header, 121 | header.getContext() 122 | )} 123 | {{ 124 | asc: "", 125 | desc: "", 126 | }[header.column.getIsSorted() as string] ?? null} 127 |
    128 |
    147 | {flexRender( 148 | cell.column.columnDef.cell, 149 | cell.getContext() 150 | )} 151 |
    159 |
    160 |
    161 | ); 162 | } 163 | 164 | export default CheckTable; 165 | const columnHelper = createColumnHelper(); 166 | -------------------------------------------------------------------------------- /src/views/admin/tables/components/CheckTable.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import CardMenu from "components/card/CardMenu"; 3 | import Checkbox from "components/checkbox"; 4 | import Card from "components/card"; 5 | 6 | import { 7 | createColumnHelper, 8 | flexRender, 9 | getCoreRowModel, 10 | getSortedRowModel, 11 | SortingState, 12 | useReactTable, 13 | } from "@tanstack/react-table"; 14 | 15 | type RowObj = { 16 | name: [string, boolean]; 17 | progress: string; 18 | quantity: number; 19 | date: string; 20 | }; 21 | 22 | function CheckTable(props: { tableData: any }) { 23 | const { tableData } = props; 24 | const [sorting, setSorting] = React.useState([]); 25 | let defaultData = tableData; 26 | const columns = [ 27 | columnHelper.accessor("name", { 28 | id: "name", 29 | header: () => ( 30 |

    NAME

    31 | ), 32 | cell: (info: any) => ( 33 |
    34 | 39 |

    40 | {info.getValue()[0]} 41 |

    42 |
    43 | ), 44 | }), 45 | columnHelper.accessor("progress", { 46 | id: "progress", 47 | header: () => ( 48 |

    49 | PROGRESS 50 |

    51 | ), 52 | cell: (info) => ( 53 |

    54 | {info.getValue()} 55 |

    56 | ), 57 | }), 58 | columnHelper.accessor("quantity", { 59 | id: "quantity", 60 | header: () => ( 61 |

    62 | QUANTITY 63 |

    64 | ), 65 | cell: (info) => ( 66 |

    67 | {info.getValue()} 68 |

    69 | ), 70 | }), 71 | columnHelper.accessor("date", { 72 | id: "date", 73 | header: () => ( 74 |

    DATE

    75 | ), 76 | cell: (info) => ( 77 |

    78 | {info.getValue()} 79 |

    80 | ), 81 | }), 82 | ]; // eslint-disable-next-line 83 | const [data, setData] = React.useState(() => [...defaultData]); 84 | const table = useReactTable({ 85 | data, 86 | columns, 87 | state: { 88 | sorting, 89 | }, 90 | onSortingChange: setSorting, 91 | getCoreRowModel: getCoreRowModel(), 92 | getSortedRowModel: getSortedRowModel(), 93 | debugTable: true, 94 | }); 95 | return ( 96 | 97 |
    98 |
    99 | Check Table 100 |
    101 | 102 | 103 |
    104 | 105 |
    106 | 107 | 108 | {table.getHeaderGroups().map((headerGroup) => ( 109 | 110 | {headerGroup.headers.map((header) => { 111 | return ( 112 | 129 | ); 130 | })} 131 | 132 | ))} 133 | 134 | 135 | {table 136 | .getRowModel() 137 | .rows.slice(0, 5) 138 | .map((row) => { 139 | return ( 140 | 141 | {row.getVisibleCells().map((cell) => { 142 | return ( 143 | 152 | ); 153 | })} 154 | 155 | ); 156 | })} 157 | 158 |
    118 |
    119 | {flexRender( 120 | header.column.columnDef.header, 121 | header.getContext() 122 | )} 123 | {{ 124 | asc: "", 125 | desc: "", 126 | }[header.column.getIsSorted() as string] ?? null} 127 |
    128 |
    147 | {flexRender( 148 | cell.column.columnDef.cell, 149 | cell.getContext() 150 | )} 151 |
    159 |
    160 |
    161 | ); 162 | } 163 | 164 | export default CheckTable; 165 | const columnHelper = createColumnHelper(); 166 | -------------------------------------------------------------------------------- /src/views/rtl/default/components/CheckTable.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import CardMenu from "components/card/CardMenu"; 3 | import Checkbox from "components/checkbox"; 4 | import Card from "components/card"; 5 | 6 | import { 7 | createColumnHelper, 8 | flexRender, 9 | getCoreRowModel, 10 | getSortedRowModel, 11 | SortingState, 12 | useReactTable, 13 | } from "@tanstack/react-table"; 14 | 15 | type RowObj = { 16 | name: [string, boolean]; 17 | progress: string; 18 | quantity: number; 19 | date: string; 20 | }; 21 | 22 | function CheckTable(props: { tableData: any }) { 23 | const { tableData } = props; 24 | const [sorting, setSorting] = React.useState([]); 25 | let defaultData = tableData; 26 | const columns = [ 27 | columnHelper.accessor("name", { 28 | id: "name", 29 | header: () => ( 30 |

    NAME

    31 | ), 32 | cell: (info: any) => ( 33 |
    34 | 39 |

    40 | {info.getValue()[0]} 41 |

    42 |
    43 | ), 44 | }), 45 | columnHelper.accessor("progress", { 46 | id: "progress", 47 | header: () => ( 48 |

    49 | PROGRESS 50 |

    51 | ), 52 | cell: (info) => ( 53 |

    54 | {info.getValue()} 55 |

    56 | ), 57 | }), 58 | columnHelper.accessor("quantity", { 59 | id: "quantity", 60 | header: () => ( 61 |

    62 | QUANTITY 63 |

    64 | ), 65 | cell: (info) => ( 66 |

    67 | {info.getValue()} 68 |

    69 | ), 70 | }), 71 | columnHelper.accessor("date", { 72 | id: "date", 73 | header: () => ( 74 |

    DATE

    75 | ), 76 | cell: (info) => ( 77 |

    78 | {info.getValue()} 79 |

    80 | ), 81 | }), 82 | ]; // eslint-disable-next-line 83 | const [data, setData] = React.useState(() => [...defaultData]); 84 | const table = useReactTable({ 85 | data, 86 | columns, 87 | state: { 88 | sorting, 89 | }, 90 | onSortingChange: setSorting, 91 | getCoreRowModel: getCoreRowModel(), 92 | getSortedRowModel: getSortedRowModel(), 93 | debugTable: true, 94 | }); 95 | return ( 96 | 97 |
    98 |
    99 | Check Table 100 |
    101 | 102 | 103 |
    104 | 105 |
    106 | 107 | 108 | {table.getHeaderGroups().map((headerGroup) => ( 109 | 110 | {headerGroup.headers.map((header) => { 111 | return ( 112 | 129 | ); 130 | })} 131 | 132 | ))} 133 | 134 | 135 | {table 136 | .getRowModel() 137 | .rows.slice(0, 5) 138 | .map((row) => { 139 | return ( 140 | 141 | {row.getVisibleCells().map((cell) => { 142 | return ( 143 | 152 | ); 153 | })} 154 | 155 | ); 156 | })} 157 | 158 |
    118 |
    119 | {flexRender( 120 | header.column.columnDef.header, 121 | header.getContext() 122 | )} 123 | {{ 124 | asc: "", 125 | desc: "", 126 | }[header.column.getIsSorted() as string] ?? null} 127 |
    128 |
    147 | {flexRender( 148 | cell.column.columnDef.cell, 149 | cell.getContext() 150 | )} 151 |
    159 |
    160 |
    161 | ); 162 | } 163 | 164 | export default CheckTable; 165 | const columnHelper = createColumnHelper(); 166 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # [Horizon UI TailwindCSS React Typescript ⚡️](https://horizon-ui.com/horizon-tailwind-react-ts) [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social&logo=twitter)](https://twitter.com/intent/tweet?text=Check%20Horizon%20UI,%20the%20trendiest%20open-source%20admin%20template%20for%20%23tailwindcss%20and%20%23react!%0A%0Ahorizon-ui.com%20) 2 | 3 | ![version](https://img.shields.io/badge/version-2.0.0-brightgreen.svg) 4 | ![license](https://img.shields.io/badge/license-MIT-blue.svg) 5 | [![GitHub issues open](https://img.shields.io/github/issues/horizon-ui/horizon-tailwind-react-ts.svg?maxAge=2592000)](https://github.com/horizon-ui/horizon-tailwind-react-ts/issues?q=is%3Aopen+is%3Aissue) 6 | 7 |

     

    8 | 9 | [Horizon UI - Tailwind CSS React Admin dashboard template](https://github.com/horizon-ui/horizon-tailwind-react-ts) 10 | 11 |

     

    12 | 13 | Get started and build your dream web app with Horizon UI, the trendiest & innovative Open Source Admin Template for Tailwind CSS & React! 14 | 15 | --- 16 | 17 | ### Introduction 18 | 19 | Designed for those who like modern UI elements and beautiful websites. Made of hundred of elements, designed blocks and fully coded pages, Horizon UI is ready to help you create stunning websites and webapps. 20 | 21 | Save hundreds of hours trying to create and develop a dashboard from scratch. 22 | The fastest, most responsive & trendiest dashboard for Tailwind CSS is here. Seriously. 23 | 24 | With Horizon UI you will find many examples for pages like NFTs Pages, 25 | Authentication Pages, Profile and so on. Just choose between a Basic Design or a cover and you are good to go! 26 | 27 | ### 🎉 [NEW] Horizon UI Components 28 | 29 | All the main components from both versions, this will help you to see and interact with all & the latest added components of Horizon (also, new components are on the way, stay tuned)! ⚡️ 30 | See all components 31 | 32 | ### Documentation 33 | 34 | Each element is well presented in a very complex documentation. You can read more about the documentation here. 35 | 36 | ### Quick Start 37 | 38 | Install Horizon UI by running either of the following: 39 | 40 | - Install NodeJS LTS from [NodeJs Official Page](https://nodejs.org/en/?ref=horizon-documentation) (NOTE: Product only works with LTS version). 41 | 42 | Clone the repository with the following command: 43 | 44 | ```bash 45 | git clone https://github.com/horizon-ui/horizon-tailwind-react-ts.git 46 | ``` 47 | 48 | Run in terminal this command: 49 | 50 | ```bash 51 | npm install 52 | ``` 53 | 54 | Then run this command to start your local server 55 | 56 | ```bash 57 | npm start 58 | ``` 59 | 60 | ### Example Pages 61 | 62 | If you want to get inspiration or just show something directly to your clients, you can jump start your development with our pre-built example pages. You will be able to quickly set up the basic structure for your web project. 63 | 64 | View example pages here. 65 | 66 | ### Versions 67 | 68 | | Free Version | PRO Version | 69 | | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | 70 | | [![Horizon UI Tailwind CSS React](https://i.ibb.co/1zhBQ2J/horizon-ui-tailwind-2.png)](https://www.horizon-ui.com/?ref=readme-horizon-tailwind-react-ts) | [![Horizon UI Tailwind CSS React PRO](https://i.ibb.co/d0cVzKB/horizon-ui-pro-tailwind.png)](https://www.horizon-ui.com/pro?ref=readme-horizon-tailwind-react-ts) | 71 | 72 | ### Figma Version 73 | 74 | Horizon UI is available in Figma format as well! Check it out on Figma 75 | Community! 🎨 76 | [See the Horizon UI Figma design files](https://bit.ly/horizon-figma) 77 | 78 | ### Reporting Issues 79 | 80 | We use GitHub Issues as the official bug tracker for the Horizon UI. Here are 81 | some advices for our users that want to report an issue: 82 | 83 | 1. Make sure that you are using the latest version of the Horizon UI Dashbaord. 84 | Check the CHANGELOG from your dashboard on our 85 | [CHANGE LOG File](https://github.com/horizon-ui/horizon-tailwind-react-ts/blob/main/CHANGELOG.md?ref=readme-horizon-tailwind-react-ts). 86 | 2. Providing us reproducible steps for the issue will shorten the time it takes 87 | for it to be fixed. 88 | 3. Some issues may be browser specific, so specifying in what browser you 89 | encountered the issue might help. 90 | 91 | --- 92 | 93 | ### Community 94 | 95 | Connect with the community! Feel free to ask questions, report issues, and meet new people that already use Horizon UI! 96 | 97 | 💬 [Join the #HorizonUI Discord Community!](https://discord.gg/f6tEKFBd4m) 98 | 99 | ### Copyright and license 100 | 101 | ⭐️ [Copyright 2023 Horizon UI ](https://www.horizon-ui.com/?ref=readme-horizon-tailwind-react-ts) 102 | 103 | 📄 [Horizon UI License](https://www.simmmple.com/licenses?ref=readme-horizon-tailwind-react-ts) 104 | -------------------------------------------------------------------------------- /src/views/admin/marketplace/index.tsx: -------------------------------------------------------------------------------- 1 | import Banner from "./components/Banner"; 2 | 3 | import ThreeDImg from "assets/img/services/3d.jpg"; 4 | import AnimationImg from "assets/img/services/animation.jpg"; 5 | import ChatImg from "assets/img/services/chat.jpg"; 6 | import ComicImg from "assets/img/services/comics.jpg"; 7 | import GamingImg from "assets/img/services/gaming.jpg"; 8 | import ImageImg from "assets/img/services/image.jpg"; 9 | import MusicImg from "assets/img/services/music.jpg"; 10 | import NarrativeImg from "assets/img/services/narrative.jpg"; 11 | 12 | import ServiceCard from "components/card/ServiceCard"; 13 | import { 14 | MdMovie, 15 | MdBook, 16 | MdImage, 17 | MdBookmark, 18 | MdMusicNote, 19 | MdGamepad, 20 | Md3DRotation, 21 | MdChat, 22 | } from "react-icons/md"; 23 | 24 | interface ServiceList { 25 | title: string; 26 | subTitle: string; 27 | icon: JSX.Element; 28 | list: string[]; 29 | image: string; 30 | bgColor: string; 31 | } 32 | const Marketplace = () => { 33 | const serviceList: ServiceList[] = [ 34 | { 35 | title: "Image Generation", 36 | subTitle: "Create images with Stable Diffusion", 37 | icon: , 38 | list: ["High quality generation", "Style control", "Advanced edition"], 39 | image: ImageImg, 40 | bgColor: "bg-purple-500", 41 | }, 42 | { 43 | title: "Narrative", 44 | subTitle: "Create stories, scenes and characters", 45 | icon: , 46 | list: ["Frame generation", "Character development", "NovelAI style"], 47 | image: NarrativeImg, 48 | bgColor: "bg-blue-500", 49 | }, 50 | { 51 | title: "Comics and Manga", 52 | subTitle: "Design and create comics", 53 | icon: , 54 | list: ["Automatic panels", "Manga styles", "Dynamic dialogues"], 55 | image: ComicImg, 56 | bgColor: "bg-yellow-500", 57 | }, 58 | { 59 | title: "Animation", 60 | subTitle: "Create animations and motion graphics", 61 | icon: , 62 | list: ["2D/3D Animation", "Motion capture", "Special effects"], 63 | image: AnimationImg, 64 | bgColor: "bg-green-500", 65 | }, 66 | { 67 | title: "Audio and Voice", 68 | subTitle: "Generate synthetic music and voices", 69 | icon: , 70 | list: ["Voice synthesis", "Musical composition", "Sound effects"], 71 | image: MusicImg, 72 | bgColor: "bg-red-500", 73 | }, 74 | { 75 | title: "Game Creation", 76 | subTitle: "Develop games with AI", 77 | icon: , 78 | list: ["Level Generation", "Smart NPCs", "Game systems"], 79 | image: GamingImg, 80 | bgColor: "bg-blue-500", 81 | }, 82 | { 83 | title: "3D Creation", 84 | subTitle: "Design 3D characters and scenarios", 85 | icon: , 86 | list: ["3D modeling", "Texturing", "Automatic rigging"], 87 | image: ThreeDImg, 88 | bgColor: "bg-cyan-500", 89 | }, 90 | { 91 | title: "Chat with Characters", 92 | subTitle: "Interact with AI characters", 93 | icon: , 94 | list: ["Unique characters", "Contextual memory", "Character.ai style"], 95 | image: ChatImg, 96 | bgColor: "bg-pink-300", 97 | }, 98 | ]; 99 | return ( 100 |
    101 |
    102 | 103 | 104 |
    105 |

    106 | AI Creation Tools 107 |

    108 | 142 |
    143 | 144 |
    145 | {serviceList.map((service, key) => ( 146 | 155 | ))} 156 |
    157 |
    158 |
    159 | ); 160 | }; 161 | 162 | export default Marketplace; 163 | -------------------------------------------------------------------------------- /src/views/rtl/default/components/ComplexTable.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import CardMenu from "components/card/CardMenu"; 3 | import Card from "components/card"; 4 | import Progress from "components/progress"; 5 | import { MdCancel, MdCheckCircle, MdOutlineError } from "react-icons/md"; 6 | 7 | import { 8 | createColumnHelper, 9 | flexRender, 10 | getCoreRowModel, 11 | getSortedRowModel, 12 | SortingState, 13 | useReactTable, 14 | } from "@tanstack/react-table"; 15 | 16 | type RowObj = { 17 | name: string; 18 | status: string; 19 | date: string; 20 | progress: number; 21 | }; 22 | 23 | const columnHelper = createColumnHelper(); 24 | 25 | // const columns = columnsDataCheck; 26 | export default function ComplexTable(props: { tableData: any }) { 27 | const { tableData } = props; 28 | const [sorting, setSorting] = React.useState([]); 29 | let defaultData = tableData; 30 | const columns = [ 31 | columnHelper.accessor("name", { 32 | id: "name", 33 | header: () => ( 34 |

    NAME

    35 | ), 36 | cell: (info) => ( 37 |

    38 | {info.getValue()} 39 |

    40 | ), 41 | }), 42 | columnHelper.accessor("status", { 43 | id: "status", 44 | header: () => ( 45 |

    46 | STATUS 47 |

    48 | ), 49 | cell: (info) => ( 50 |
    51 | {info.getValue() === "Approved" ? ( 52 | 53 | ) : info.getValue() === "Disable" ? ( 54 | 55 | ) : info.getValue() === "Error" ? ( 56 | 57 | ) : null} 58 |

    59 | {info.getValue()} 60 |

    61 |
    62 | ), 63 | }), 64 | columnHelper.accessor("date", { 65 | id: "date", 66 | header: () => ( 67 |

    DATE

    68 | ), 69 | cell: (info) => ( 70 |

    71 | {info.getValue()} 72 |

    73 | ), 74 | }), 75 | columnHelper.accessor("progress", { 76 | id: "progress", 77 | header: () => ( 78 |

    79 | PROGRESS 80 |

    81 | ), 82 | cell: (info) => ( 83 |
    84 | 85 |
    86 | ), 87 | }), 88 | ]; // eslint-disable-next-line 89 | const [data, setData] = React.useState(() => [...defaultData]); 90 | const table = useReactTable({ 91 | data, 92 | columns, 93 | state: { 94 | sorting, 95 | }, 96 | onSortingChange: setSorting, 97 | getCoreRowModel: getCoreRowModel(), 98 | getSortedRowModel: getSortedRowModel(), 99 | debugTable: true, 100 | }); 101 | return ( 102 | 103 |
    104 |
    105 | Complex Table 106 |
    107 | 108 |
    109 | 110 |
    111 | 112 | 113 | {table.getHeaderGroups().map((headerGroup) => ( 114 | 115 | {headerGroup.headers.map((header) => { 116 | return ( 117 | 134 | ); 135 | })} 136 | 137 | ))} 138 | 139 | 140 | {table 141 | .getRowModel() 142 | .rows.slice(0, 5) 143 | .map((row) => { 144 | return ( 145 | 146 | {row.getVisibleCells().map((cell) => { 147 | return ( 148 | 157 | ); 158 | })} 159 | 160 | ); 161 | })} 162 | 163 |
    123 |
    124 | {flexRender( 125 | header.column.columnDef.header, 126 | header.getContext() 127 | )} 128 | {{ 129 | asc: "", 130 | desc: "", 131 | }[header.column.getIsSorted() as string] ?? null} 132 |
    133 |
    152 | {flexRender( 153 | cell.column.columnDef.cell, 154 | cell.getContext() 155 | )} 156 |
    164 |
    165 |
    166 | ); 167 | } 168 | --------------------------------------------------------------------------------