Repository: codescandy/dashui-free-nextjs-admin-template Branch: main Commit: f990e659ab67 Files: 147 Total size: 684.9 KB Directory structure: gitextract_7a2pmtz8/ ├── .eslintrc.json ├── .gitignore ├── LICENSE ├── README.md ├── app/ │ ├── (auth)/ │ │ └── authentication/ │ │ ├── forget-password/ │ │ │ ├── loading.js │ │ │ └── page.js │ │ ├── layout.js │ │ ├── sign-in/ │ │ │ └── page.js │ │ └── sign-up/ │ │ └── page.js │ ├── (dashboard)/ │ │ ├── changelog/ │ │ │ └── page.js │ │ ├── components/ │ │ │ ├── accordions/ │ │ │ │ └── page.js │ │ │ ├── alerts/ │ │ │ │ └── page.js │ │ │ ├── badges/ │ │ │ │ └── page.js │ │ │ ├── breadcrumbs/ │ │ │ │ └── page.js │ │ │ ├── button-group/ │ │ │ │ └── page.js │ │ │ ├── buttons/ │ │ │ │ └── page.js │ │ │ ├── cards/ │ │ │ │ └── page.js │ │ │ ├── carousels/ │ │ │ │ └── page.js │ │ │ ├── close-button/ │ │ │ │ └── page.js │ │ │ ├── collapse/ │ │ │ │ └── page.js │ │ │ ├── dropdowns/ │ │ │ │ └── page.js │ │ │ ├── list-group/ │ │ │ │ └── page.js │ │ │ ├── modal/ │ │ │ │ └── page.js │ │ │ ├── navbar/ │ │ │ │ └── page.js │ │ │ ├── navs/ │ │ │ │ └── page.js │ │ │ ├── offcanvas/ │ │ │ │ └── page.js │ │ │ ├── overlays/ │ │ │ │ └── page.js │ │ │ ├── pagination/ │ │ │ │ └── page.js │ │ │ ├── popovers/ │ │ │ │ └── page.js │ │ │ ├── progress/ │ │ │ │ └── page.js │ │ │ ├── spinners/ │ │ │ │ └── page.js │ │ │ ├── tables/ │ │ │ │ └── page.js │ │ │ ├── toasts/ │ │ │ │ └── page.js │ │ │ └── tooltips/ │ │ │ └── page.js │ │ ├── documentation/ │ │ │ └── page.js │ │ ├── layout-vertical/ │ │ │ └── page.js │ │ ├── layout.js │ │ ├── page.js │ │ └── pages/ │ │ ├── api-demo/ │ │ │ ├── ServerSideData.js │ │ │ └── page.js │ │ ├── billing/ │ │ │ └── page.js │ │ ├── pricing/ │ │ │ └── page.js │ │ ├── profile/ │ │ │ └── page.js │ │ └── settings/ │ │ └── page.js │ ├── layout.js │ └── not-found.js ├── components/ │ ├── CopyToClipboardButton.js │ └── bootstrap/ │ └── DotBadge.js ├── data/ │ ├── Notification.js │ ├── code/ │ │ ├── AccordionCode.js │ │ ├── AlertsCode.js │ │ ├── BadgesCode.js │ │ ├── BreadcrumbCode.js │ │ ├── ButtonGroupCode.js │ │ ├── ButtonsCode.js │ │ ├── CardsCode.js │ │ ├── CarouselsCode.js │ │ ├── CloseCode.js │ │ ├── CollapsesCode.js │ │ ├── DropdownsCode.js │ │ ├── ListgroupsCode.js │ │ ├── ModalsCode.js │ │ ├── NavbarsCode.js │ │ ├── NavsCode.js │ │ ├── OffcanvasCode.js │ │ ├── OverlaysCode.js │ │ ├── PaginationsCode.js │ │ ├── PopoversCode.js │ │ ├── ProgressCode.js │ │ ├── SpinnersCode.js │ │ ├── TablesCode.js │ │ ├── ToastsCode.js │ │ └── TooltipsCode.js │ ├── dashboard/ │ │ ├── ActiveProjectsData.js │ │ ├── ProjectsStatsData.js │ │ └── TeamsData.js │ ├── pricing/ │ │ ├── FAQsData.js │ │ ├── FeaturesData.js │ │ └── PricingPlansData.js │ └── profile/ │ └── ProjectsContributionsData.js ├── hooks/ │ └── useMounted.js ├── jsconfig.json ├── layouts/ │ ├── QuickMenu.js │ └── navbars/ │ ├── NavbarTop.js │ └── NavbarVertical.js ├── next.config.js ├── package.json ├── public/ │ └── fonts/ │ └── feather-icons/ │ └── feather.css ├── routes/ │ └── DashboardRoutes.js ├── styles/ │ ├── _user-variables.scss │ ├── _user.scss │ ├── theme/ │ │ ├── _theme.scss │ │ ├── _utilities.scss │ │ ├── _variables.scss │ │ ├── components/ │ │ │ ├── _avatar.scss │ │ │ ├── _badge.scss │ │ │ ├── _button.scss │ │ │ ├── _card.scss │ │ │ ├── _docs.scss │ │ │ ├── _dropdown.scss │ │ │ ├── _forms.scss │ │ │ ├── _layout.scss │ │ │ ├── _nav.scss │ │ │ ├── _navbar-vertical.scss │ │ │ ├── _navbar.scss │ │ │ ├── _reboot.scss │ │ │ ├── _scrollspy.scss │ │ │ ├── _sidenav.scss │ │ │ ├── _social-button.scss │ │ │ └── _table.scss │ │ ├── utilities/ │ │ │ ├── _background.scss │ │ │ ├── _border.scss │ │ │ ├── _icon-shape.scss │ │ │ ├── _position.scss │ │ │ ├── _shadows.scss │ │ │ └── _text.scss │ │ └── vendor/ │ │ ├── apexChart/ │ │ │ └── _apexchart.scss │ │ └── prismJs/ │ │ └── _prism.scss │ └── theme.scss ├── sub-components/ │ ├── billing/ │ │ ├── BillingAddress.js │ │ └── CurrentPlan.js │ ├── changelog/ │ │ ├── Version_01_00_00.js │ │ ├── Version_01_01_00.js │ │ └── Version_01_01_01.js │ ├── dashboard/ │ │ ├── ActiveProjects.js │ │ ├── TasksPerformance.js │ │ └── Teams.js │ ├── index.js │ ├── profile/ │ │ ├── AboutMe.js │ │ ├── ActivityFeed.js │ │ ├── MyTeam.js │ │ ├── ProfileHeader.js │ │ ├── ProjectsContributions.js │ │ └── RecentFromBlog.js │ └── settings/ │ ├── DeleteAccount.js │ ├── EmailSetting.js │ ├── GeneralSetting.js │ ├── Notifications.js │ └── Preferences.js └── widgets/ ├── PageHeading.js ├── cards/ │ └── PricingCard.js ├── dropfiles/ │ └── DropFiles.js ├── features/ │ └── FeatureLeftTopIcon.js ├── form-select/ │ └── FormSelect.js ├── highlight-code/ │ └── HighlightCode.js ├── index.js └── stats/ └── StatRightTopIcon.js ================================================ FILE CONTENTS ================================================ ================================================ FILE: .eslintrc.json ================================================ { "extends": "next/core-web-vitals" } ================================================ FILE: .gitignore ================================================ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. # dependencies /node_modules /.pnp .pnp.js # testing /coverage # next.js /.next/ /out/ # production /build # misc .DS_Store *.pem # debug npm-debug.log* yarn-debug.log* yarn-error.log* .pnpm-debug.log* # local env files .env*.local # vercel .vercel ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2023 Codescandy Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================ # DashUI Next.js Free Admin Template 🚀 A **modern, responsive, and free Next.js Admin Dashboard Template** built by [Codescandy](https://codescandy.com/). Perfect for building dashboards, admin panels, and web applications. ![DashUI Next.js Free Admin Template]([Screenshot-2025-08-31-002120.png](https://postimg.cc/gLYbhSDf)) --- ## 📋 Features - ⚡ Built with **Next.js 13** - 🎨 Modern UI with Tailwind CSS - 📱 Fully responsive (mobile-first design) - 📊 Pre-built dashboard pages - 🛠 Developer-friendly structure - 🆓 100% Free & Open Source --- ## 📂 Getting Started ### 1️⃣ Clone the Repository ```bash git clone https://github.com/codescandy/dashui-free-nextjs-admin-template.git cd dashui-free-nextjs-admin-template ``` ### 2️⃣ Install Dependencies ```bash npm install ``` ### 3️⃣ Start Development Server ```bash npm run dev ``` Now, open [http://localhost:3000](http://localhost:3000) in your browser. ### 4️⃣ Build for Production ```bash npm run build ``` --- ## 🌍 Deploy on Vercel One-click deployment to Vercel: [![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fcodescandy%2Fdashui-free-nextjs-admin-template.git&project-name=dashui-nextjs-admin-dashboard&repository-name=dashui-free-nextjs-admin-template&skippable-integrations=1) --- ## 🤝 Contributing Want to contribute? Follow these steps: 1. **Fork** the repository 2. Create a new branch: `git checkout -b feature-name` 3. Make your changes & commit: `git commit -m "Added new feature"` 4. Push your branch: `git push origin feature-name` 5. Open a **Pull Request** 🎉 We welcome all contributions to improve DashUI. --- ## 🔗 Useful Links - [Bootstrap Template](https://dashui.codescandy.com/free-bootstrap-5-admin-dashboard-template.html) - [React Template](https://dashui.codescandy.com/free-reactjs-admin-dashboard-template.html) - [Next.js Template](https://dashui.codescandy.com/free-next-js-admin-dashboard-template.html) - [Nuxt.js Template](https://dashui.codescandy.com/free-nuxt-js-admin-dashboard-template.html) - [Tailwind Template](https://dashui.codescandy.com/free-tailwindcss-admin-dashboard-html-template.html) --- ## 🎨 Figma Design File Get the ready-to-use [Figma File](https://www.figma.com/community/file/1259105309122518026/dash-ui-admin-dashboard-template). --- ## 💎 Upgrade to PRO Get **Dash UI Pro** for advanced features: | Free Version | DashUI PRO | |--------------|------------| | ✔️ 1 Dashboard | ✔️ 6 Dashboards | | ✔️ 11 Pages | ✔️ 60+ Pages | | ✔️ Basic Docs | ✔️ Full Documentation | | ✔️ 4 Plugins | ✔️ 10+ Plugins | | ✔️ Source Files | ✔️ Source Files | | ❌ Dark Mode | ✔️ Dark Mode | | ❌ Layout Options | ✔️ Layout Variations | | ❌ Priority Support | ✔️ Priority Support | | - | ✔️ Free Updates | 👉 [Free Download](https://dashui.codescandy.com/free-next-js-admin-dashboard-template.html) | [Get PRO](https://dashui.codescandy.com/next-js-admin-dashboard-template.html) --- ## 📞 Support - [Open a Discussion](https://github.com/codescandy/Dash-UI/discussions) - [Contact Us](https://codescandy.com/contact-us/) --- ### 💡 Quick Note If you like this project, don’t forget to ⭐ **star the repository** on GitHub! ================================================ FILE: app/(auth)/authentication/forget-password/loading.js ================================================ export default function Loading() { // You can add any UI inside Loading, including a Skeleton. return Loading } ================================================ FILE: app/(auth)/authentication/forget-password/page.js ================================================ 'use client' // import node module libraries import { Row, Col, Card, Form, Button, Image } from 'react-bootstrap'; import Link from 'next/link'; // import hooks import useMounted from 'hooks/useMounted'; const ForgetPassword = () => { const hasMounted = useMounted(); return ( {/* Card */} {/* Card body */}

Don't worry, we'll send you an email to reset your password.

{/* Form */} {hasMounted &&
{/* Email */} Email {/* Button */}
Don't have an account? Sign In
}
) } export default ForgetPassword ================================================ FILE: app/(auth)/authentication/layout.js ================================================ 'use client' // import node module libraries import { Container } from 'react-bootstrap'; export default function AuthLayout({ children }) { return ( {children} ) } ================================================ FILE: app/(auth)/authentication/sign-in/page.js ================================================ 'use client' // import node module libraries import { Row, Col, Card, Form, Button, Image } from 'react-bootstrap'; import Link from 'next/link'; // import hooks import useMounted from 'hooks/useMounted'; const SignIn = () => { const hasMounted = useMounted(); return ( {/* Card */} {/* Card body */}

Please enter your user information.

{/* Form */} {hasMounted &&
{/* Username */} Username or email {/* Password */} Password {/* Checkbox */}
Remember me
{/* Button */}
Create An Account
Forgot your password?
}
) } export default SignIn ================================================ FILE: app/(auth)/authentication/sign-up/page.js ================================================ 'use client' // import node module libraries import { Row, Col, Card, Form, Button, Image } from 'react-bootstrap'; import Link from 'next/link'; // import hooks import useMounted from 'hooks/useMounted'; const SignUp = () => { const hasMounted = useMounted(); return ( {/* Card */} {/* Card body */}

Please enter your user information.

{/* Form */} {hasMounted &&
{/* Username */} Username or email {/* Email */} Email {/* Password */} Password {/* Confirm Password */} Confirm Password {/* Checkbox */}
I agree to the Terms of Service and Privacy Policy.
{/* Button */}
Already member? Login
Forgot your password?
}
) } export default SignUp ================================================ FILE: app/(dashboard)/changelog/page.js ================================================ 'use client' // import node module libraries import { Col, Row, Container } from 'react-bootstrap'; // import sub components import Version_01_00_00 from 'sub-components/changelog/Version_01_00_00'; import Version_01_01_00 from 'sub-components/changelog/Version_01_01_00'; import Version_01_01_01 from 'sub-components/changelog/Version_01_01_01'; const ChangeLog = () => { return (

Changelog

We’re constantly improving & updating Dashui. See the latest features and improvements.



); }; export default ChangeLog; ================================================ FILE: app/(dashboard)/components/accordions/page.js ================================================ 'use client' // import node module libraries import { Col, Row, Card, Accordion, Nav, Tab, Tabs, Container } from 'react-bootstrap'; // import widget/custom components import { HighlightCode } from 'widgets'; // import react code data file import { AccordionBasicCode, AccordionFlushCode } from 'data/code/AccordionCode'; const Accordions = () => { return (

Accordions

Build vertically collapsing accordions in combination with the Collapse component.

{/* basic */}

Example

Click the accordions below to expand/collapse the accordion content.

{/* accordion started */} Accordion Item #1 This is the accordion body of item 1.{' '} It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the{' '} <Accordion.Item> →{' '} <Accordion.Body> though the transition does limit overflow. Accordion Item #2 This is the accordion body of item 2.{' '} It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the{' '} <Accordion.Item> →{' '} <Accordion.Body> though the transition does limit overflow. Accordion Item #3 This is the accordion body of item 3.{' '} It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the{' '} <Accordion.Item> →{' '} <Accordion.Body> though the transition does limit overflow. {/* end of accordion started */}
{/* end of basic */}
{/* basic */}

Flush

Add flush to remove the default background-color, some borders, and some rounded corners to render accordions edge-to-edge with their parent container.

{/* accordion started */} Accordion Item #1 This is the accordion body of item 1.{' '} It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the{' '} <Accordion.Item> →{' '} <Accordion.Body> though the transition does limit overflow. Accordion Item #2 This is the accordion body of item 2.{' '} It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the{' '} <Accordion.Item> →{' '} <Accordion.Body> though the transition does limit overflow. Accordion Item #3 This is the accordion body of item 3.{' '} It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the{' '} <Accordion.Item> →{' '} <Accordion.Body> though the transition does limit overflow. {/* end of accordion started */}
{/* end of basic */}
); }; export default Accordions; ================================================ FILE: app/(dashboard)/components/alerts/page.js ================================================ 'use client' // import node module libraries import { Fragment, useState } from 'react'; import { Col, Row, Card, Alert, Button, Nav, Tab, Container } from 'react-bootstrap'; import { ExclamationCircleFill, CheckCircleFill, ExclamationTriangleFill } from 'react-bootstrap-icons'; // import widget/custom components import { HighlightCode } from 'widgets'; // import react code data file import { SimpleAlert, LinkAlert, AdditionalAlert, AlertWithIcon, DismissingAlert } from 'data/code/AlertsCode'; const Alerts = () => { const AlertDismissible = () => { const [show, setShow] = useState(true); if (show) { return ( setShow(false)} dismissible> Holy guacamole!You should check in on some of those fields below. ); } return ; }; return (

Alerts

Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages.

{/* simple alert */}

Simple Alert

Alerts are available for any length of text, as well as an optional dismiss button. For proper styling, use one of the eight{' '} variants.

This is a primary alert—check it out! This is a secondary alert—check it out! This is a success alert—check it out! This is a danger alert—check it out! This is a warning alert—check it out! This is a info alert—check it out! This is a light alert—check it out! This is a dark alert—check it out!
{/* end of simple alert */}
{/* link alert */}

Link Alert

For links, use the </Alert.Link> component to provide matching colored links within any alert.

This is a primary alert with{' '} an example link. Give it a click if you like. This is a secondary alert with{' '} an example link. Give it a click if you like. This is a success alert with{' '} an example link. Give it a click if you like. This is a danger alert with{' '} an example link. Give it a click if you like. This is a warning alert with{' '} an example link. Give it a click if you like. This is a info alert with{' '} an example link. Give it a click if you like. This is a light alert with{' '} an example link. Give it a click if you like. This is a dark alert with{' '} an example link. Give it a click if you like.
{/* end of link alert */}
{/* additional content */}

Additional content

Alerts can also contain additional HTML elements like headings, paragraphs and dividers.

Well done!

Aww yeah, you successfully read this important alert message. This example text is going to run a bit longer so that you can see how spacing within an alert works with this kind of content.


Whenever you need to, be sure to use margin utilities to keep things nice and tidy.

{/* end of additional content */}
{/* icons */}

Icons

Similarly, you can use{' '} (React) Bootstrap Icons {' '} to create alerts with icons. Depending on your icons and content, you may want to add more utilities or custom styles.

An example alert with an icon An example success alert with an icon An example warning alert with an icon An example danger alert with an icon
{/* end of icons */}
{/* icons */}

Dismissing

Add the dismissible prop to add a functioning dismiss button to the Alert.

{/* end of icons */}
); }; export default Alerts; ================================================ FILE: app/(dashboard)/components/badges/page.js ================================================ 'use client' // import node module libraries import { Col, Row, Card, Button, Badge, Tab, Nav, Container } from 'react-bootstrap'; // import widget/custom components import { HighlightCode } from 'widgets'; // import react code data file import { SimpleBadgeCode, BadgeWithButtonCode, PillBadgesCode } from 'data/code/BadgesCode'; const Badges = () => { return (

Badges

Documentation and examples for badges, our small count and labeling component.

{/* Contextual badges */}

Contextual badges

Add any of the below mentioned modifier classes to change the appearance of a badge.

primary secondary success danger warning info light dark
{/* end of Contextual badges */}
{/* Pill badges */}

Pill badges

Use the pill modifier to make badges more rounded (with a larger border-radius and additional horizontal padding).

primary secondary success danger warning info light dark
{/* end of Pill badges */}
{/* simple badge */}

Simple Badge

Badges scale to match the size of the immediate parent element by using relative font sizing and em units.

{' '} Example heading New

{' '} Example heading New

{' '} Example heading New{' '}

{' '} Example heading New

{' '} Example heading New{' '}
{' '} Example heading New
{/* end of simple badge */}
{/* badge with button */}

Badge with Button

Badges can be used as part of links or buttons to provide a counter.

{/* end of badge with button */}
); }; export default Badges; ================================================ FILE: app/(dashboard)/components/breadcrumbs/page.js ================================================ 'use client' // import node module libraries import { Col, Row, Card, Breadcrumb, Nav, Tab, Container } from 'react-bootstrap'; // import widget/custom components import { HighlightCode } from 'widgets'; // import react code data file import { BasicBreadcrumb } from 'data/code/BreadcrumbCode'; const Breadcrumbs = () => { return (

Breadcrumb

Indicate the current page’s location within a navigational hierarchy that automatically adds separators via CSS.

Basic example

Add active prop to active{' '} Breadcrumb.Item . Do not set both active{' '} and href attributes. active overrides{' '} href and span element is rendered instead of a.

Home Home Library Home Library Data
); }; export default Breadcrumbs; ================================================ FILE: app/(dashboard)/components/button-group/page.js ================================================ 'use client' // import node module libraries import { Col, Row, Card, ButtonGroup, Button, ButtonToolbar, DropdownButton, Dropdown, ToggleButton, ToggleButtonGroup, Nav, Tab, Container } from 'react-bootstrap'; // import widget/custom components import { HighlightCode } from 'widgets'; // import react code data file import { BasicButtonGroupCode, GroupLinksCode, MixedStylesCode, OutlineStylesCode, CheckboxStyleCode, RadioStyleCode, ToolbarStyleCode, ButtonSizingCode, ButtonNestingCode, VerticalButtonCode } from 'data/code/ButtonGroupCode'; const ButtonGroups = () => { return (

Button Group

Group a series of buttons together on a single line with the button group.

{/* basic example */}

Basic example

Wrap a series of <Button>s in a{' '} <ButtonGroup>.

{/* end of basic example */} {/* groups of links */}

These classes can also be added to groups of links with{' '} href, as an alternative to the navigation components.

{/* end of groups of links */}
{/* mixed styles */}

Mixed Styles

{/* end of mixed styles */}
{/* mixed outline styles */}

Outline Styles

{/* end of mixed outline styles */}
{/* checkbox and radio button groups */}

Checkbox and radio button groups

Combine button-like checkbox and radio toggle buttons into a seamless looking button group.

Checkbox 1 Checkbox 2 Checkbox 3 Radio 1 Radio 2 Radio 3
{/* end of checkbox and radio button groups */}
{/* button toolbar */}

Button toolbar

Combine sets of <ButtonGroup>s into a{' '} <ButtonToolbar> for more complex components. Use utility classes as needed to space out groups, buttons, and more.

{' '}
{/* end of button toolbar */}
{/* button sizing */}

Sizing

Instead of applying button sizing props to every button in a group, just add size prop to the{' '} <ButtonGroup>.



{/* end of button sizing */}
{/* button nesting */}

Button Nesting

You can place other button types within the{' '} <ButtonGroup> like{' '} <DropdownButton>s.

Dropdown link Dropdown link
{/* end of button nesting */}
{/* button vertical variation */}

Vertical variation

Make a set of buttons appear vertically stacked rather than horizontally, by adding vertical to the{' '} <ButtonGroup>.{' '} Split button dropdowns are not supported here.

Dropdown link Dropdown link Dropdown link Dropdown link Dropdown link Dropdown link
{/* end of button vertical variation */}
); }; export default ButtonGroups; ================================================ FILE: app/(dashboard)/components/buttons/page.js ================================================ 'use client' // import node module libraries import { Fragment } from 'react'; import { Col, Row, Button, Card, Spinner, ToggleButton, ToggleButtonGroup, Nav, Tab, Container } from 'react-bootstrap'; import { ShoppingBag } from 'react-feather'; // import widget/custom components import { HighlightCode } from 'widgets'; // import react code data file import { RegularButtonCode, ButtonTagsCode, OutlineButtonsCode, ButtonSizesCode, BlockButtonCode, ResponsiveButtonCode, BlockButtonWidthCode, ButtonAlignmentCode, ButtonIconsCode, ButtonIcons2Code, ButtonIconsSizeCode, ActiveStateCode, DisabledStateCode, ToggleStatesCode } from 'data/code/ButtonsCode'; const Buttons = () => { return (

Buttons

Custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.

{/* regular button */}

Regular Button

Use any of the available button style types to quickly create a styled button. Just modify the variant prop.

{/* end of regular button */}
{/* button tags */}

Button tags

Normally <Button> components will render a HTML{' '} <button> element. However you can render whatever you'd like, adding a href prop will automatically render an <a/> element. You can use the as prop to render whatever your heart desires. React Bootstrap will take care of the proper ARIA roles for you.

{/* end of outline buttons */}
{/* sizes */}

Sizes

Fancy larger or smaller buttons? Add size="lg" or size="sm" for additional sizes.

{/* end of sizes */} {/* block buttons */}

Block buttons

Create responsive stacks of full-width, “block buttons” like those in Bootstrap 4 with a mix of our display and gap utilities.

{/* end of block buttons */} {/* block buttons responsive variation */}

Here we create a responsive variation, starting with vertically stacked buttons until the md breakpoint, where{' '} .d-md-block replaces the .d-grid class, thus nullifying the gap-2 utility. Resize your browser to see that change.

{/* end of block buttons responsive variation*/} {/* adjust the width of your block buttons */}

You can adjust the width of your block buttons with grid column width classes. For example, for a half-width “block button”, use{' '} md={6}. Center it horizontally with{' '} .mx-auto, too.

{/* end of adjust the width of your block buttons */} {/* alignment of buttons when horizontal */}

Additional utilities can be used to adjust the alignment of buttons when horizontal. Here we’ve taken our previous responsive example and added some flex utilities and a margin utility on the button to right align the buttons when they’re no longer stacked.

{/* end of alignment of buttons when horizontal */}
{/* button icons */}

Button icons

A contained button with an icon.

{/* end of button icons */} {/* button icons */}
With fixed width and height.
{' '}
{/* end of button icons */} {/* button icons sizes*/}
Also available in all button sizes.
{/* end of button icons sizes */}
{/* active state */}

Active state

To set a button's active state simply set the component's active prop.

{/* end of active state */}
{/* disabled state */}

Disabled state

Make buttons look inactive by adding the disabled{' '} prop to.

{/* end of disabled state */}
{/* toggle state */}

Toggle states

Buttons can also be used to style checkbox and{' '} radio form elements. This is helpful when you want a toggle button that works neatly inside an HTML form.

Toggle button Active toggle button Disabled toggle button
{/* end of toggle state */}
); }; export default Buttons; ================================================ FILE: app/(dashboard)/components/cards/page.js ================================================ 'use client' // import node module libraries import { Fragment } from 'react'; import { Col, Row, Card, Button, ListGroup, ListGroupItem, Nav, Tab, Container } from 'react-bootstrap'; // import widget/custom components import { HighlightCode } from 'widgets'; // import react code data file import { BasicCardCode, CardBodyCode, TitlesTextLinksCode, ListGroups1Code, ListGroups2Code, CardImagesCode, KitchenSinkCode, HeaderFooterCode, HeaderFooterCode2, TextAlignmentCode, ImagesTopBottomCode, ImageOverlaysCode } from 'data/code/CardsCode'; const Cards = () => { return (

Cards

Geek's cards provide a flexible and extensible content container with multiple variants and options.

{/* card */}

Basic Example

Below is an example of a basic card with mixed content and a fixed width.

Card Title Some quick example text to build on the card title and make up the bulk of the card's content.
{/* end of card */}
{/* content-types */}

Card Body

Use <Card.Body> to pad content inside a{' '} <Card>.

This is some text within a card body.
{/* end of content-types */}
{/* Titles, text, and links */} {/* Code started */} Card Title Card Subtitle Some quick example text to build on the card title and make up the bulk of the card's content. Card Link Another Link {/* end of code */} {/* end of Titles, text, and links */}
{/* List Groups */}

List Groups

Create lists of content in a card with a flush list group.

{/* Code started */} Cras justo odio Dapibus ac facilisis in Vestibulum at eros {/* end of code */}
Featured Cras justo odio Dapibus ac facilisis in Vestibulum at eros
{/* end of List Groups */}
{/* image */}

Images

<Card.Img> with variant="top"{' '} places an image to the top of the card. With{' '} <Card.Text>, text can be added to the card. Text within <Card.Text> can also be styled with the standard HTML tags.

Some quick example text to build on the card title and make up the bulk of the card's content.
{/* end of image */}
{/* kitchen-sink */}

Kitchen sink

Mix and match multiple content types to create the card you need, or throw everything in there. Shown below are image styles, blocks, text styles, and a list group—all wrapped in a fixed-width card.

Card Title Some quick example text to build on the card title and make up the bulk of the card's content. Cras justo odio Dapibus ac facilisis in Vestibulum at eros Card Link Another Link
{/* end of kitchen-sink */}
{/* header-footer */} Featured Special title treatment With supporting text below as a natural lead-in to additional content.
Featured Special title treatment With supporting text below as a natural lead-in to additional content. 2 days ago
{/* end of header-footer */}
{/* text-alignment */}

Text alignment

You can quickly change the text alignment of any card—in its entirety or specific parts—with our text align classes.

{/* code started */} Special title treatment With supporting text below as a natural lead-in to additional content. Special title treatment With supporting text below as a natural lead-in to additional content. Special title treatment With supporting text below as a natural lead-in to additional content. {/* end of code */}
{/* end of text-alignment */}
{/* images */}

Images

Cards include a few options for working with images. Choose from appending “image caps” at either end of a card, overlaying images with card content, or simply embedding the image in a card.

Image caps

Similar to headers and footers, cards can include top and bottom “image caps”—images at the top or bottom of a card.

{/* Code started */} Card title This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer. Last updated 3 mins ago
Card title This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer. Last updated 3 mins ago {/* end of code */}
{/* end of images */}
{/* image-overlays */}

Image overlays

Turn an image into a card background and overlay your card’s text. Depending on the image, you may or may not need additional styles or utilities.

{/* Code start */} Card title This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer. Last updated 3 mins ago {/* end of code */}
{/* end of image-overlays */}
); }; export default Cards; ================================================ FILE: app/(dashboard)/components/carousels/page.js ================================================ 'use client' // import node module libraries import { Fragment, useState } from 'react'; import { Col, Row, Card, Carousel, Image, Nav, Tab, Container } from 'react-bootstrap'; // import widget/custom components import { HighlightCode } from 'widgets'; // import react code data file import { SlidesOnlyCode, WithControlCode, WithIndicatorsCode, WithCaptionCode, CrossfadeCode, IndividualCode, DarkVariantCode } from 'data/code/CarouselsCode'; const Carousels = () => { const [index, setIndex] = useState(0); const handleSelect = (selectedIndex, e) => { setIndex(selectedIndex); }; return (

Carousel

A slideshow component for cycling through elements—images or slides of text—like a carousel.

{/* slide only */}

Slides only

Here’s a carousel with slides only. Note the presence of the{' '} .d-block and{' '} .w-100 on carousel images to prevent browser default image alignment.

{/* code started */} First slide Second slide Third slide {/* end of code */}
{/* end of slide only */}
{/* with controls */}

With Control

Adding in the previous and next controls:

{/* code started */} First slide Second slide Third slide {/* end of code */}
{/* end of with controls */}
{/* with indicators */}

With indicators

You can also add the indicators to the carousel, alongside the controls, too.

{/* code started */} First slide Second slide Third slide {/* end of code */}
{/* end of with indicators */}
{/* with caption */}

With caption

Add captions to your slides easily with the{' '} <Carousel.Caption> within any{' '} <Carousel.Item>.

{/* code started */} First slide

First slide label

Nulla vitae elit libero, a pharetra augue mollis interdum.

Second slide

Second slide label

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Third slide

Third slide label

Praesent commodo cursus magna, vel scelerisque nisl consectetur.

{/* end of code */}
{/* end of with caption */}
{/* crossfade */}

Crossfade

Add the fade prop to your carousel to animate slides with a fade transition instead of a slide.

{/* code started */} First slide Second slide Third slide {/* end of code */}
{/* end of crossfade */}
{/* individual */}

Individual

You can specify individual intervals for each carousel item via the interval prop.

{/* code started */} First slide Second slide Third slide {/* end of code */}
{/* end of individual */}
{/* dark variant */}

Dark Variant

Add variant="dark" to the Carousel for darker controls, indicators, and captions.

{/* code started */} First slide
First slide label

Nulla vitae elit libero, a pharetra augue mollis interdum.

Second slide
Second slide label

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Third slide
Third slide label

Praesent commodo cursus magna, vel scelerisque nisl consectetur.

{/* end of code */}
{/* end of dark variant */}
); }; export default Carousels; ================================================ FILE: app/(dashboard)/components/close-button/page.js ================================================ 'use client' // import node module libraries import { Fragment } from 'react'; import { Col, Row, Card, CloseButton, Nav, Tab, Container } from 'react-bootstrap'; // import widget/custom components import { HighlightCode } from 'widgets'; // import react code data file import { GenericCloseButtonCode, DisabledStateCode, WhiteVariantCode } from 'data/code/CloseCode'; const CloseButtons = () => { return (

Close Buttons

A generic close button for dismissing content like modals and alerts.

{/* generic close button */}

Examples

Provide an option to dismiss or close a component with{' '} <CloseButton>.

{/* end of generic close button */}
{/* Disabled state */}

Disabled state

Bootstrap adds relevant styling to a disabled close button to prevent user interactions.

{/* end of Disabled state*/}
{/* White variant */}

White variant

Change the default dark color to white using{' '} variant="white".

{/* end of White variant */}
); }; export default CloseButtons; ================================================ FILE: app/(dashboard)/components/collapse/page.js ================================================ 'use client' // import node module libraries import { Fragment, useState } from 'react'; import { Col, Row, Card, Button, Collapse, Fade, Tab, Nav, Container } from 'react-bootstrap'; // import widget/custom components import { HighlightCode } from 'widgets'; // import react code data file import { FadeCollapses, BasicCollapsesCode } from 'data/code/CollapsesCode'; const Collapses = () => { const [open, setOpen] = useState(false); const [openFade, setOpenFade] = useState(false); return (

Collapse

Add a collapse toggle animation to an element or component.

{/* Collapses */}
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident.
{/* end of Collapses */}
{/* Fade Collapses */}

Fade

Add a fade animation to a child element or component.

Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident.
{/* end of Fade Collapses */}
); }; export default Collapses; ================================================ FILE: app/(dashboard)/components/dropdowns/page.js ================================================ 'use client' // import node module libraries import { Col, Row, Card, Dropdown, ButtonGroup, DropdownButton, SplitButton, Form, Button, Nav, Tab, Container } from 'react-bootstrap'; // import widget/custom components import { HighlightCode } from 'widgets'; // import hooks import useMounted from 'hooks/useMounted'; // import react code data file import { BasicDropdownCode, SplitDropdownCode, DropdownVariantCode, DropdownSizingCode, DirectionsCode, MenuAlignmentCode, ResponsiveMenuAlignmentCode1, ResponsiveMenuAlignmentCode2, MenuContentCode, DividersCode, FormsCode1, FormsCode2 } from 'data/code/DropdownsCode'; const Dropdowns = () => { const hasMounted = useMounted(); return (

Dropdowns

Toggle contextual overlays for displaying lists of links and more with the Bootstrap dropdown plugin.

{/* basic */}

Basic

The basic Dropdown is composed of a wrapping Dropdown{' '} and inner <DropdownMenu>, and{' '} <DropdownToggle>. By default the{' '} <DropdownToggle> will render a Button component and accepts all the same props.

{/* code started */} Dropdown Button Action Another action Something else {/* end of code */}
{/* end of basic */}
{/* split button */}

Split Button

Similarly, You create a split dropdown by combining the Dropdown components with another Button and a ButtonGroup.

{/* code started */} Action Another action Something else {/* end of code */}
{/* end of split button */}
{/* options */}

Options

The best part is you can do this with any button variant, too:

{/* code started */} {[ 'Primary', 'Secondary', 'Success', 'Info', 'Warning', 'Danger' ].map((variant) => ( Action Another action {' '} Something else Separated link ))} {/* end of code */}
{/* end of options */}
{/* sizing */}

Sizing

Button dropdowns work with buttons of all sizes, including default and split dropdown buttons.

{/* code started */} {[DropdownButton, SplitButton].map((DropdownType, idx) => ( Action Another action Something else here Separated link ))} {[DropdownButton, SplitButton].map((DropdownType, idx) => ( Action Another action Something else here Separated link ))} {/* end of code */}
{/* end of sizing */}
{/* directions */}

Directions

Trigger dropdown menus above, below, left, or to the right of their toggle elements, with the drop prop.

{/* code started */}
{['up', 'down', 'start', 'end'].map((direction) => ( Action Another action Something else here Separated link ))}
{['up', 'down', 'start', 'end'].map((direction) => ( Action Another action Something else here Separated link ))}
{/* end of code */}
{/* end of directions */}
{/* alignment */}

Menu Alignment

By default, a dropdown menu is aligned to the left, but you can switch it by passing align="end" to a{' '} <Dropdown>, <DropdownButton> , or <SplitButton>.

{/* code started */} Action Another action Something else here Separated link Action Another action Something else here Separated link {/* end of code */}
{/* end of alignment */}
{/* responsive men alignment */}

Responsive Menu Alignment

If you want to use responsive menu alignment, pass an object containing a breakpoint to the align prop on the{' '} <DropdownMenu>,{' '} <DropdownButton>, or{' '} <SplitButton>. You can specify start or end for the various breakpoints.

{/* code started */} Action Another action Something else here Separated link {/* end of code */} {/* responsive men alignment */} {/* code started */} Action Another action Something else here Separated link {/* end of code */}
{/* end of responsive men alignment */}
{/* menu-content */} {/* code started */} Dropdown header Another action Something else here {/* end of code */} {/* end of menu-content */}
{/* dividers */}

Dividers

Separate groups of related menu items with a divider.

{/* code started */} Action Another action Something else here Separated link {/* end of code */}
{/* end of dividers */}
{/* forms */}

Forms

Put a form within a dropdown menu, or make it into a dropdown menu, and use margin or padding utilities to give it the negative space you require.

{/* code started */} {hasMounted &&
Email address We'll never share your email with anyone else. Password
} New around here? Sign up Forgot password?
{/* end of code */}
{/* end of forms */}
{/* */} {/* code started */} {hasMounted &&
Email address We'll never share your email with anyone else.{' '} Password
}
{/* end of code */}
{/* end of */}
); }; export default Dropdowns; ================================================ FILE: app/(dashboard)/components/list-group/page.js ================================================ 'use client' // import node module libraries import { Fragment } from 'react'; import { Col, Row, Card, ListGroup, Badge, Image, Tab, Nav, Container } from 'react-bootstrap'; import { PlayCircle, Award, Calendar, Video, Clock } from 'react-feather'; // import sub custom components import DotBadge from 'components/bootstrap/DotBadge'; // import widget/custom components import { HighlightCode } from 'widgets'; // import react code data file import { BasicListgroupCode, ActiveItemCode, DisabledItemsCode, LinksButtonsCode, ListButtonCode, FlushListgroupCode, HorizontalListgroupCode, HorizontalListgroupCode2, ContextualClassesCode, WithBadgesCode, CustomContentCode, WithIconCode, GroupWithIconCode } from 'data/code/ListgroupsCode'; const Listgroups = () => { function alertClicked() { alert('You clicked a ListGroupItem'); } return (

Listgroup

List groups are a flexible and powerful component for displaying a series of content. Modify and extend them to support just about any content within.

{/* basic example */}

Basic list

The most basic list group is an unordered list with list items and the proper classes. Build upon it with the options that follow, or with your own CSS as needed.

{/* code started */} Cras justo odio Dapibus ac facilisis in Morbi leo risus Porta ac consectetur ac Vestibulum at eros {/* end of code */}
{/* end of basic example */}
{/* active items */}

Active Item

Set the active prop to indicate the list groups current active selection.

{/* code started */} Cras justo odio Dapibus ac facilisis in Morbi leo risus Porta ac consectetur ac Vestibulum at eros {/* end of code */}
{/* end of active items */}
{/* disabled items */}

Disabled Items

Set the disabled prop to prevent actions on a{' '} <ListGroup.Item>. For elements that aren't naturally disable-able (like anchors) onClick{' '} handlers are added that call preventDefault to mimick disabled behavior.

{/* code started */} Cras justo odio Dapibus ac facilisis in Morbi leo risus Porta ac consectetur ac Vestibulum at eros {/* end of code */}
{/* end of disabled items */}
{/* links-and-buttons */} {/* code started */} Cras justo odio Dapibus ac facilisis in Morbi leo risus Porta ac consectetur ac Vestibulum at eros {/* end of code */} {/* end of links-and-buttons */}
{/* List button */}

With onClick function parameter, list group will create <button>s, you can also make use of the{' '} disabled and active attributes.

{/* code started */} Cras justo odio Dapibus ac facilisis in Morbi leo risus Porta ac consectetur ac Vestibulum at eros {/* end of code */}
{/* end of List button */}
{/* flush */}

Flush

Add the flush variant to remove outer borders and rounded corners to render list group items edge-to-edge in a parent container such as a Card.

{/* code started */} Cras justo odio Dapibus ac facilisis in Morbi leo risus Porta ac consectetur ac Vestibulum at eros {/* end of code */}
{/* end of flush */}
{/* horizontal */}

Horizontal

Use the horizontal prop to make the ListGroup render horizontally. Currently{' '} horizontal list groups cannot be combined with flush list groups.

{/* code started */} Cras justo odio Dapibus ac facilisis in Morbi leo risus {/* end of code */}
{/* end of horizontal */} {/* horizontal */}

ProTip: Want equal-width list group items when horizontal? Add .flex-fill to each list group item.

{/* code started */} Cras justo odio Dapibus ac facilisis in Morbi leo risus {/* end of code */}
{/* end of horizontal */}
{/* contextual-classes */}

Contextual classes

Use contextual variants on{' '} <ListGroup.Item>s to style them with a stateful background and color.

{/* code started */} Dapibus ac facilisis in This is a Primary list group item This is a Secondary list group item This is a Success list group item This is a Danger list group item This is a Warning list group item This is a Info list group item This is a Light list group item This is a Dark list group item {/* end of code */}
{/* end of contextual-classes */}
{/* with-badges */}

With badges

Add <Badge> to any list group item to show unread counts, activity, and more with the help of some utilities.

{/* code started */} Cras justo odio 14{' '} Dapibus ac facilisis in 2 Morbi leo risus 1 {/* end of code */}
{/* end of with-badges */}
{/* custom-content */}

Custom content

Add nearly any HTML within, even for linked list groups like the one below, with the help of flexbox utilities.

{/* code started */}
List group item heading
3 days ago

Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.

Donec id elit non mi porta.
List group item heading
3 days ago

Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.

Donec id elit non mi porta.
List group item heading
3 days ago

Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.

Donec id elit non mi porta.
{/* end of code */}
{/* end of custom-content */}
{/* with icon */}

List Group with Icon

{/* code started */} 12 hours video Certificate 12 Article Lifetime access {/* end of code */}
{/* end of with icon */}
{/* List group with icon */}

List with Data

{/* code started */} Post ID
8693637308
Status
Published (unsaved changes)
Created by
Geeks Courses
Admin
Created at
Jul 30, 2:21 PM
First published at
Jul 30, 2:21 PM
Last update
Aug 31, 12:21 PM
Last Published
Aug 31, 12:21 PM
{/* end of code */}
{/* end of List group with icon */}
); }; export default Listgroups; ================================================ FILE: app/(dashboard)/components/modal/page.js ================================================ 'use client' // import node module libraries import { Fragment, useState } from 'react'; import Link from 'next/link'; import { Col, Row, Card, Modal, Button, OverlayTrigger, Popover, Tooltip, Nav, Tab, Container } from 'react-bootstrap'; // import widget/custom components import { HighlightCode } from 'widgets'; // import react code data file import { SampleExamplesCode, LiveDemoCode, LongContentCode, ScrollableModalCode, VerticallyCenteredCode, TooltipsPopoversCode, OptionalSizesCode } from 'data/code/ModalsCode'; const Modals = () => { const [show, setShow] = useState(false); const [scrollShow, setScrollShow] = useState(false); const [scrollShow2, setScrollShow2] = useState(false); const [popoverTipShow, setpopoverTipShow] = useState(false); const [smShow, setSmShow] = useState(false); const [mdShow, setMdShow] = useState(false); const [lgShow, setLgShow] = useState(false); const handleClose = () => setShow(false); const handleShow = () => setShow(true); const longContent = `

Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.

Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.

Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.

Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.

Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.

Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.

`; function MyVerticallyCenteredModal(props) { return ( Modal title Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. ); } const [modalShow, setModalShow] = useState(false); return (

Modal

Add dialogs to your site for lightboxes, user notifications, or completely custom content.

{/* modal-example */}
{/* code started */}
Modal title

Modal body text goes here.

{/* end of code */}
{/* end of modal-example */}
{/* live-demo */}

Live Demo

A modal with header, body, and set of actions in the footer. Use{' '} <Modal> in combination with other components to show or hide your Modal. The <Modal> Component comes with a few convenient "sub components": <Modal.Header>, <Modal.Title>, <Modal.Body>, and <Modal.Footer>, which you can use to build the Modal content.

Toggle a working modal demo by clicking the button below. It will slide down and fade in from the top of the page.

{/* code started */} Modal title Woohoo, you're reading this text in a modal! {/* end of code */}
{/* end of live-demo */}
{/* scrolling-long-content */}

Scrolling long content

When modals become too long for the user’s viewport or device, they scroll independent of the page itself. Try the demo below to see what we mean.

{/* code started */} setScrollShow(false)} > Modal title {/* end of code */}
{/* end of scrolling-long-content */} {/* scrolling-long-content */}

You can also create a scrollable modal that allows scroll the modal body by adding .modal-dialog-scrollable to .modal-dialog and style in{' '} <Model.Body>.

{/* code started */} setScrollShow2(false)} > Modal title {/* end of code */}
{/* end of scrolling-long-content */}
{/* vertically-centered */}

Vertically centered

You can vertically center a modal by passing the{' '} "centered" prop.

{/* code started */} setModalShow(false)} /> {/* end of code */}
{/* end of vertically-centered */}
{/* optional-sizes */}

Optional sizes

You can specify a bootstrap large or small modal by using the{' '} "size" prop.{' '}

{/* code started */} {' '} {' '} setSmShow(false)} aria-labelledby="example-modal-sizes-title-sm" > Small modal ... setLgShow(false)} aria-labelledby="example-modal-sizes-title-lg" > Extra large modal ... setMdShow(false)} aria-labelledby="example-modal-sizes-title-lg" > Large modal ... {/* end of code */}
{/* end of optional-sizes */}
); }; export default Modals; ================================================ FILE: app/(dashboard)/components/navbar/page.js ================================================ 'use client' // import node module libraries import { Fragment } from 'react'; import { Col, Row, Card, Navbar, NavDropdown, Nav, Image, Tab, Container } from 'react-bootstrap'; // import widget/custom components import { HighlightCode } from 'widgets'; // import data files import { DefaultNavbar, BrandNavbar, ColorSchemesCode } from 'data/code/NavbarsCode'; const Navbars = () => { return (

Navbar

A powerful, responsive navigation header, the navbar. Includes support for branding, navigation, and more.

{/* default-navbar */}

Default Navbar

{/* end of default-navbar */} {/* brand-navbar */}

A simple flexible branding component. Images are supported but will likely require custom styling to work well.

{/* end of brand-navbar */}
{/* Color schemes */}

Color schemes

Theming the navbar has never been easier thanks to the combination of theming classes and background-color utilities. Choose from{' '} variant="light" for use with light background colors, or variant="dark" for dark background colors. Then, customize with the bg prop or any custom css!

{' '}
{' '}
{/* end of Color schemes */}
); }; export default Navbars; ================================================ FILE: app/(dashboard)/components/navs/page.js ================================================ 'use client' // import node module libraries import { Fragment } from 'react'; import { Col, Row, Card, Nav, Tabs, Tab, Container } from 'react-bootstrap'; // import widget/custom components import { HighlightCode } from 'widgets'; // import react code data file import { MenuNavCode, MenuNavFlexCode, AlignmentCenterCode, AlignmentRightCode, VerticalFlexCode, VerticalULLICode, TabsNavCode, PillsNavsCode, FillPillsULLICode, FillPillsLinkCode, FillPillsJustifyCode, NavsFlexUtilitiesCode, NavsTabsCode, NavsTabsPillsCode, VerticalPillsCode } from 'data/code/NavsCode'; const Navs = () => { return (

Navs

Documentation and examples for how to use Bootstrap’s included navigation components.

{/* base-nav */}

Menu nav

Navigation bits in Bootstrap all share a general Nav{' '} component and styles. Swap variants to switch between each style.

The base Nav component is built with flexbox and provide a strong foundation for building all types of navigation components.

{/* code started */} {/* end of code */}
{/* end of base-nav */} {/* base-nav */}

<Nav> markup is very flexible and styling is controlled via classes so you can use whatever elements you like to build your navs. By default <Nav> and <Nav.Item> both render <div>s instead of <ul> and <li> elements respectively. This because it's possible (and common) to leave off the <Nav.Item>'s and render a{' '} <Nav.Link> directly, which would create invalid markup by default (ul < a).

{/* code started */} {/* end of code */}
{/* end of base-nav */}
{/* available-styles */}

Available styles

Change the style of <Nav>s component with modifiers and utilities. Mix and match as needed, or build your own.

Horizontal alignment

You can control the the direction and orientation of the Nav by making use of the{' '} flexbox layout {' '} utility classes. By default, navs are left-aligned, but that is easily changed to center or right-aligned.

Centered with .justify-content-center:

{/* code started */} {/* end of code */}
{/* end of available-styles */} {/* right-aligned */}

Right-aligned with .justify-content-end:

{/* code started */} {/* end of code */}
{/* end of right-aligned */}
{/* vertical */}

Vertical

Create stacked navs by changing the flex item direction with the{' '} .flex-column class, or your own css. You can even use the responsive versions to stack in some viewports but not others ( e.g. .flex-sm-column ).

{/* code started */} {/* end of code */}
{/* end of vertical */} {/* vertical-nav-second */}

As always, vertical navigation is possible without{' '} <ul>s, too.

{/* code started */} {/* end of code */}
{/* end of vertical-nav-second */}
{/* tabs */}

Tabs

Visually represent nav items as "tabs". This style pairs nicely with tabbable regions created by our Tab components.

Note: creating a vertical nav ( .flex-column) with tabs styling is unsupported by Bootstrap's default stylesheet.

{/* code started */} {/* end of code */}
{/* end of tabs */}
{/* pills */}

Pills

An alternative visual with variant="pills" prop

{/* code started */} {/* end of code */}
{/* end of pills */}
{/* fill-and-justify */}

Fill and justify

Force the contents of your nav to extend the full available width. To proportionately fill the space use fill. Notice that the nav is the entire width but each nav item is a different size.

{/* code started */} {/* end of code */}
{/* end of fill-and-justify */} {/* Nav justify second */}

When using a <Nav> based navigation without{' '} as prop, it will generate anchors in{' '} <div>.

{/* code started */} {/* end of code */}
{/* end of Nav justify second */} {/* Nav justify third */}

If you want each NavItem to be the same size use{' '} justify.

{/* code started */} {/* end of code */}
{/* end of Nav justify third */}
{/* working-with-flex-utilities */}

Working with flex utilities

If you need responsive nav variations, consider using a series of flexbox utilities. While more verbose, these utilities offer greater customization across responsive breakpoints. In the example below, our nav will be stacked on the lowest breakpoint, then adapt to a horizontal layout that fills the available width starting from the small breakpoint.

{/* code started */} {/* end of code */}
{/* end of working-with-flex-utilities */}
{/* JavaScript behavior */}

JavaScript behavior ( Tabs )

Create dynamic tabbed interfaces, as described in the{' '} WAI ARIA Authoring Practices . Tabs is a higher-level component for quickly creating a Nav matched with a set of{' '} TabPanes.

{/* code started */} Home Tab - Consequat occaecat ullamco amet non eiusmod nostrud dolore irure incididunt est duis anim sunt officia. Fugiat velit proident aliquip nisi incididunt nostrud exercitation proident est nisi. Irure magna elit commodo anim ex veniam culpa eiusmod id nostrud sit cupidatat in veniam ad. Eiusmod consequat eu adipisicing minim anim aliquip cupidatat culpa excepteur quis. Occaecat sit eu exercitation irure Lorem incididunt nostrud. Profile Tab - Consequat occaecat ullamco amet non eiusmod nostrud dolore irure incididunt est duis anim sunt officia. Fugiat velit proident aliquip nisi incididunt nostrud exercitation proident est nisi. Irure magna elit commodo anim ex veniam culpa eiusmod id nostrud sit cupidatat in veniam ad. Eiusmod consequat eu adipisicing minim anim aliquip cupidatat culpa excepteur quis. Occaecat sit eu exercitation irure Lorem incididunt nostrud. Contact Tab - Consequat occaecat ullamco amet non eiusmod nostrud dolore irure incididunt est duis anim sunt officia. Fugiat velit proident aliquip nisi incididunt nostrud exercitation proident est nisi. Irure magna elit commodo anim ex veniam culpa eiusmod id nostrud sit cupidatat in veniam ad. Eiusmod consequat eu adipisicing minim anim aliquip cupidatat culpa excepteur quis. Occaecat sit eu exercitation irure Lorem incididunt nostrud. {/* end of code */}
{/* end of JavaScript behavior */} {/* javascript behavior pills */}

The tabs plugin also works with pills.

{/* code started */} Home Tab - Consequat occaecat ullamco amet non eiusmod nostrud dolore irure incididunt est duis anim sunt officia. Fugiat velit proident aliquip nisi incididunt nostrud exercitation proident est nisi. Irure magna elit commodo anim ex veniam culpa eiusmod id nostrud sit cupidatat in veniam ad. Eiusmod consequat eu adipisicing minim anim aliquip cupidatat culpa excepteur quis. Occaecat sit eu exercitation irure Lorem incididunt nostrud. Profile Tab - Consequat occaecat ullamco amet non eiusmod nostrud dolore irure incididunt est duis anim sunt officia. Fugiat velit proident aliquip nisi incididunt nostrud exercitation proident est nisi. Irure magna elit commodo anim ex veniam culpa eiusmod id nostrud sit cupidatat in veniam ad. Eiusmod consequat eu adipisicing minim anim aliquip cupidatat culpa excepteur quis. Occaecat sit eu exercitation irure Lorem incididunt nostrud. Contact Tab - Consequat occaecat ullamco amet non eiusmod nostrud dolore irure incididunt est duis anim sunt officia. Fugiat velit proident aliquip nisi incididunt nostrud exercitation proident est nisi. Irure magna elit commodo anim ex veniam culpa eiusmod id nostrud sit cupidatat in veniam ad. Eiusmod consequat eu adipisicing minim anim aliquip cupidatat culpa excepteur quis. Occaecat sit eu exercitation irure Lorem incididunt nostrud. {/* end of code */}
{/* end of javascript behavior pills */} {/* vertical pills */}

And with vertical pills.

{/* code started */} Home Tab - Consequat occaecat ullamco amet non eiusmod nostrud dolore irure incididunt est duis anim sunt officia. Fugiat velit proident aliquip nisi incididunt nostrud exercitation proident est nisi. Irure magna elit commodo anim ex veniam culpa eiusmod id nostrud sit cupidatat in veniam ad. Eiusmod consequat eu adipisicing minim anim aliquip cupidatat culpa excepteur quis. Occaecat sit eu exercitation irure Lorem incididunt nostrud. Profile Tab - Consequat occaecat ullamco amet non eiusmod nostrud dolore irure incididunt est duis anim sunt officia. Fugiat velit proident aliquip nisi incididunt nostrud exercitation proident est nisi. Irure magna elit commodo anim ex veniam culpa eiusmod id nostrud sit cupidatat in veniam ad. Eiusmod consequat eu adipisicing minim anim aliquip cupidatat culpa excepteur quis. Occaecat sit eu exercitation irure Lorem incididunt nostrud. Messages Tab - Consequat occaecat ullamco amet non eiusmod nostrud dolore irure incididunt est duis anim sunt officia. Fugiat velit proident aliquip nisi incididunt nostrud exercitation proident est nisi. Irure magna elit commodo anim ex veniam culpa eiusmod id nostrud sit cupidatat in veniam ad. Eiusmod consequat eu adipisicing minim anim aliquip cupidatat culpa excepteur quis. Occaecat sit eu exercitation irure Lorem incididunt nostrud. Settings Tab - Consequat occaecat ullamco amet non eiusmod nostrud dolore irure incididunt est duis anim sunt officia. Fugiat velit proident aliquip nisi incididunt nostrud exercitation proident est nisi. Irure magna elit commodo anim ex veniam culpa eiusmod id nostrud sit cupidatat in veniam ad. Eiusmod consequat eu adipisicing minim anim aliquip cupidatat culpa excepteur quis. Occaecat sit eu exercitation irure Lorem incididunt nostrud. {/* end of code */}
{/* end of vertical pills */}
); }; export default Navs; ================================================ FILE: app/(dashboard)/components/offcanvas/page.js ================================================ 'use client' // import node module libraries import { Fragment, useState } from 'react'; import { Col, Row, Card, Button, Nav, Tab, Offcanvas, ListGroup, Container } from 'react-bootstrap'; // import widget/custom components import { HighlightCode } from 'widgets'; // import react code data file import { OffcanvasBasicCode, OffCanvasPlacementCode, OffCanvasBackdropCode } from 'data/code/OffcanvasCode'; const BSOffcanvas = () => { const [show, setShow] = useState(false); const handleClose = () => setShow(false); const handleShow = () => setShow(true); const options = [ { name: 'Enable backdrop (default)', scroll: false, backdrop: true }, { name: 'Disable backdrop', scroll: false, backdrop: false }, { name: 'Enable body scrolling', scroll: true, backdrop: false }, { name: 'Enable both scrolling & backdrop', scroll: true, backdrop: true } ]; function OffCanvasPlacement({ name, ...props }) { const [show, setShow] = useState(false); const handleClose = () => setShow(false); const handleShow = () => setShow(true); return ( Offcanvas Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc. ); } function OffCanvasBackdrop({ name, ...props }) { const [show, setShow] = useState(false); const handleClose = () => setShow(false); const toggleShow = () => setShow((s) => !s); return ( Offcanvas Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc. ); } return (

Offcanvas

Build hidden sidebars into your project for navigation, shopping carts, and more.

{/* basic */}

Basic

Offcanvas includes support for a header with a close button and an optional body class for some initial padding.

{/* basic offcanvas code started */} Offcanvas Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc. {/* end of basic offcanvas code */}
{/* end of basic */}
{/* placement */}

Placement

Offcanvas supports a few different placements:

start places offcanvas on the left of the viewport end places offcanvas on the right of the viewport top places offcanvas on the top of the viewport bottom places offcanvas on the bottom of the viewport
{/* placement code started */} {['start', 'end', 'top', 'bottom'].map((placement, idx) => ( ))} {/* end of placement code */}
{/* end of placement */}
{/* backdrop */}

Backdrop

Scrolling the <body> element is disabled when an offcanvas and its backdrop are visible. Use the{' '} scroll prop to toggle <body>{' '} scrolling and the backdrop prop to toggle the backdrop.

{/* backdrop code started */} {options.map((props, idx) => ( ))} {/* end of backdrop code */}
{/* end of backdrop */}
); }; export default BSOffcanvas; ================================================ FILE: app/(dashboard)/components/overlays/page.js ================================================ 'use client' // import node module libraries import { Fragment, useState, useRef } from 'react'; import { Col, Row, Card, Overlay, OverlayTrigger, Button, Tooltip, Nav, Tab, Image, Container } from 'react-bootstrap'; // import widget/custom components import { HighlightCode } from 'widgets'; // import react code data file import { OverlayBasicCode, OverlayTriggerCode, TriggerBehaviorCode } from 'data/code/OverlaysCode'; const Overlays = () => { const [show, setShow] = useState(false); const target = useRef(null); const renderTooltip = (props) => ( Simple tooltip ); return (

Overlays

Overlay is the fundamental component for positioning and controlling tooltip visibility. It's a wrapper around Popper.js, that adds support for transitions, and visibility toggling.

{/* basic */}

Basic

Overlays consist of at least two elements, the "overlay", the element to be positioned, as well as a "target", the element the overlay is positioned in relation to. You can also also have an "arrow" element, like the tooltips and popovers, but that is optional.

{/* basic offcanvas code started */} {({ placement: _placement, arrowProps: _arrowProps, show: _show, popper: _popper, hasDoneInitialMeasure: _hasDoneInitialMeasure, ...props }) => (
Simple tooltip
)}
{/* end of basic offcanvas code */}
{/* end of basic */}
{/* overlay-trigger */}

OverlayTrigger

Since the above pattern is pretty common, but verbose, we've included <OverlayTrigger> component to help with common use-cases. It even has functionality to delayed show or hides, and a few different "trigger" events you can mix and match.

{/* basic offcanvas code started */} {/* end of basic offcanvas code */}
{/* end of overlay-trigger */}
{/* trigger behavior */}

Customizing trigger behavior

For more advanced behaviors <OverlayTrigger>{' '} accepts a function child that passes in the injected{' '} ref and event handlers that correspond to the configured trigger prop.

{/* trigger behavior code started */} Check out this avatar } > {({ ref, ...triggerHandler }) => ( )} {/* end of trigger behavior code */}
{/* end of trigger behavior */}
); }; export default Overlays; ================================================ FILE: app/(dashboard)/components/pagination/page.js ================================================ 'use client' // import node module libraries import { Fragment } from 'react'; import Link from 'next/link'; import { Col, Row, Card, Pagination, Nav, Tab, Container } from 'react-bootstrap'; import { ChevronsLeft, ChevronLeft, ChevronRight, ChevronsRight } from 'react-feather'; // import widget/custom components import { HighlightCode } from 'widgets'; // import react code data file import { DefaultPaginationCode, PaginationWithIconsCode, DisabledActiveCode, PaginationSizingCode, PaginationSizingSmallCode, AlignmentCode, JustifyContentEndCode } from 'data/code/PaginationsCode'; const Paginations = () => { return (

Pagination

Documentation and examples for showing pagination to indicate a series of related content exists across multiple pages.

{/* default-pagination */}

Default Pagination

We use a large block of connected links for our pagination, making links hard to miss and easily scalable—all while providing large hit areas. Pagination is built with list HTML elements so screen readers can announce the number of available links. Use a wrapping{' '} <Pagination> component to identify it as a navigation section to screen readers and other assistive technologies.

Previous {1} {2} {3} Next
{/* end of default-pagination */}
{/* working-with-icons */}

Working with icons

Looking to use an icon or symbol in place of text for some pagination links? Use <Pagination.First>,{' '} <Pagination.Prev> ,{' '} <Pagination.Next> and{' '} <Pagination.Last> tags .

{1} {2} {3}
{/* end of working-with-icons */}
{/* disabled-and-active-states */}

Disabled and active states

Pagination links are customizable for different circumstances. Use{' '} disabled prop for links that appear un-clickable and{' '} active prop to indicate the current page.

Previous {1} {2} {3} Next
{/* end of disabled-and-active-states */}
{/* sizing */}

Sizing

Fancy larger or smaller pagination? Add size="lg" or{' '} size="sm" for additional sizes.

{1} {2} {3}
{/* end of sizing */} {/* sizing-small */} {1} {2} {3} {/* end of sizing-small */}
{/* alignment */}

Alignment

Change the alignment of pagination components with{' '} flexbox utilities .

Centered-aligned with .justify-content-center:

Previous {1} {2} {3} Next
{/* end of alignment */} {/* justify-content-end */}

Right-aligned with .justify-content-end:

Previous {1} {2} {3} Next
{/* end of justify-content-end */}
); }; export default Paginations; ================================================ FILE: app/(dashboard)/components/popovers/page.js ================================================ 'use client' // import node module libraries import { Fragment } from 'react'; import { Col, Row, Card, OverlayTrigger, Popover, Button, Nav, Tab, Container } from 'react-bootstrap'; // import widget/custom components import { HighlightCode } from 'widgets'; // import react code data file import { DefaultPopoverCode, FourDirectionsCode, DismissableCode } from 'data/code/PopoversCode'; const Popovers = () => { return (

Popover

Documentation and examples for adding Bootstrap popovers, like those found in iOS, to any element on your site.

{/* default-popover */}

Default Popovers

Popover title And here's some amazing content. It's very engaging. Right? } >
{/* end of default-popover */}
{/* four-direction */}

Four directions

Four options are available: top, right, bottom, and left aligned.

{['top', 'right', 'bottom', 'left'].map((placement) => ( {`Popover ${placement}`} Holy guacamole! Check this info. } > ))}
{/* end of four-direction */}
{/* dismiss on next click */}

Dismiss on next click

Use the trigger="focus" trigger to dismiss popovers on the user’s next click of a different element than the toggle element.

Popover title And here's some amazing content. It's very engaging. Right? } >
{/* end of dismiss on next click */}
); }; export default Popovers; ================================================ FILE: app/(dashboard)/components/progress/page.js ================================================ 'use client' // import node module libraries import { Fragment } from 'react'; import { Card, Col, Row, ProgressBar, Tab, Nav, Container } from 'react-bootstrap'; // import widget/custom components import { HighlightCode } from 'widgets'; // import react code data file import { DefaultProgressCode, ProgressLabelsCode, ProgressHeightCode, ProgressBackgroundsCode, MultipleBarsCode, StripedCode, AnimatedCode } from 'data/code/ProgressCode'; const Progress = () => { return (

Progress

Documentation and examples for using Bootstrap custom progress bars featuring support for stacked bars, animated backgrounds, and text labels.

{/* default-progress */}

How it works

Default progress bar.

{/* code started */} {/* end of code */}
{/* end of default-progress */}
{/* highlighter-rouge */}

Labels

Add a label prop to show a visible percentage. For low percentages, consider adding a min-width to ensure the label's text is fully visible.

{/* code started */} {/* end of code */}
{/* end of highlighter-rouge */}
{/* height */}

Height

We only set a height value on the{' '} <ProgressBar>, so if you change that value the inner progress-bar will automatically resize accordingly.

{/* code started */} {/* end of code */}
{/* end of height */}
{/* backgrounds */}

Backgrounds

Progress bars use some of the same button and alert classes like{' '} variant for consistent styles.

{/* code started */} {/* end of code */}
{/* end of backgrounds */}
{/* multiple-bars */}

Multiple bars

Nest <ProgressBar>s to stack them.

{/* code started */} {/* end of code */}
{/* end of multiple-bars */}
{/* striped */}

Striped

Uses a gradient to create a striped effect. Not available in IE8. You can apply using striped prop.{' '}

{/* code started */} {/* end of code */}
{/* end of striped */}
{/* animated-stripes */}

Animated stripes

Add animated prop to animate the stripes right to left. Not available in IE9 and below.

{/* code started */} {/* end of code */}
{/* end of animated-stripes */}
); }; export default Progress; ================================================ FILE: app/(dashboard)/components/spinners/page.js ================================================ 'use client' // import node module libraries import { Fragment } from 'react'; import { Col, Row, Card, Spinner, Button, Nav, Tab, Container } from 'react-bootstrap'; // import widget/custom components import { HighlightCode } from 'widgets'; // import react code data file import { BorderSpinnerCode, SpinnersColorsCode, GrowingSpinnerCode, GrowColorsCode, AlignmentCode, PlacementCenterCode, PlacementLoadingCode, FloatsCode, TextAlignCode, SizeSpinnersCode, StyleCSSCode, ButtonsCode, Buttons2Code } from 'data/code/SpinnersCode'; const Spinners = () => { return (

Spinners

Indicate the loading state of a component or page with Bootstrap spinners, built entirely with HTML, CSS, and no JavaScript.

{/* border-spinner */}

Border spinner

Use the border spinners for a lightweight loading indicator. Set{' '} animation="border" to use it.

{/* code started */} Loading... {/* end of code */}
{/* end of border-spinner */}
{/* colors */}

Colors

All standard visual variants are available for border spinner animation styles by setting the variant property. Alternatively spinners can be custom sized with the{' '} style property, or custom CSS classes.

{/* code started */} {/* end of code */}
{/* end of colors */}
{/* growing-spinner */}

Growing spinner

Set animation="grow" to use it.

{/* code started */} {/* end of code */}
{/* end of growing-spinner */} {/* text color utilities */}

All standard visual variants are available for growing spinner animation styles by setting the variant property. Alternatively spinners can be custom sized with the{' '} style property, or custom CSS classes.

{/* code started */} {/* end of code */}
{/* end of text color utilities */}
{/* alignment */}

Alignment

Spinners in Bootstrap are built with rems,{' '} variant prop etc... This means they can easily be resized, recolored, and quickly aligned.

Margin

Use margin utilities like .m-5 for easy spacing.

{/* code started */} Loading... {/* end of code */}
{/* end of alignment */}
{/* placement */}

Placement

Use flexbox utilities, float utilities, or text alignment utilities to place spinners exactly where you need them in any situation.

Flex

{/* code started */}
Loading...
{/* end of code */}
{/* end of placement */} {/* placement 2 */} {/* code started */}
Loading... Loading...
{/* end of code */}
{/* end of placement 2 */}
{/* floats */}

Floats

{/* code started */} Loading... {/* end of code */}
{/* end of floats */}
{/* text-align */}

Text align

{/* code started */}
Loading...
{/* end of code */}
{/* end of text-align */}
{/* size */}

Size

Add size="sm" to make a smaller spinner that can quickly be used within other components.

{/* code started */} {/* end of code */}
{/* end of size */} {/* use custom CSS or inline styles */}

Or, use custom CSS or inline styles to change the dimensions as needed.

{/* code started */} {/* end of code */}
{/* end of use custom CSS or inline styles */}
{/* buttons */}

Buttons

Like the original Bootstrap spinners, these can also be used with buttons. To use this component out-of-the-box it is recommended you change the element type to span by configuring the as property when using spinners inside buttons.

{/* code started */} {/* end of code */}
{/* end of buttons */} {/* buttons 2 */} {/* code started */} {/* end of code */} {/* end of buttons 2 */}
); }; export default Spinners; ================================================ FILE: app/(dashboard)/components/tables/page.js ================================================ 'use client' // import node module libraries import { Fragment } from 'react'; import { Col, Row, Card, Table, Nav, Tab, Container } from 'react-bootstrap'; // import widget/custom components import { HighlightCode } from 'widgets'; // import react code data file import { BasicTableCode, DarkTableCode, TableHeadCode, StripedTableCode, TableVariantCode, BorderedTableCode, BorderlessTableCode, HoverableRowsCode, SmallTableCode, ContextualClassesCode, ResponsiveTableCode } from 'data/code/TablesCode'; const Tables = () => { return (

Tables

Documentation and examples for opt-in styling of tables (given their prevalent use in JavaScript plugins) with Bootstrap.

{/* */}

Examples

{/* code started */}
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
{/* end of code */}
{/* end of */} {/* dark table */}

Use variant="dark" to invert the colors of the table and get light text on a dark background.

{/* code started */}
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
{/* end of code */}
{/* end of dark table */}
{/* */}

Table head options

Similar to tables and dark tables, use the modifier classes{' '} .table-light or .table-dark to make{' '} <thead>s appear light or dark gray.

{/* code started */}
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
{/* end of code */}
{/* end of */}
{/* striped-rows */}

Striped rows

Use the striped prop to customise the table.

{/* code started */}
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
{/* end of code */}
{/* end of striped-rows */}
{/* striped-rows bg */}

Use variant prop to table variants:

{/* code started */}
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
{/* end of code */}
{/* end of striped-rows bg */}
{/* bordered-table */}

Bordered table

Add bordered prop for borders on all sides of the table and cells.

{/* code started */}
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
{/* end of code */}
{/* end of bordered-table */}
{/* borderless-table */}

Borderless table

{/* code started */}
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
{/* end of code */}
{/* end of borderless-table */}
{/* hoverable-rows */}

Hoverable rows

Add hover prop to enable a hover state on table rows within a <tbody>.

{/* code started */}
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
{/* end of code */}
{/* end of hoverable-rows */}
{/* small-table */}

Small table

Add .table-sm to make tables more compact by cutting cell padding in half.

{/* code started */}
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
{/* end of code */}
{/* end of small-table */}
{/* contextual-classes */}

Variants

Use contextual classes to color table rows or individual cells.

{/* code started */}
Class Heading Heading
Active Cell Cell
Default Cell Cell
Primary Cell Cell
Secondary Cell Cell
Success Cell Cell
Danger Cell Cell
Warning Cell Cell
Info Cell Cell
Light Cell Cell
Dark Cell Cell
{/* end of code */}
{/* end of contextual-classes */}
{/* responsive-tables */}

Responsive tables

Responsive tables allow tables to be scrolled horizontally with ease.

Across every breakpoint, use responsive for horizontally scrolling tables. Responsive tables are wrapped automatically in a{' '} div.

Use responsive="sm", responsive="md",{' '} responsive="lg", or responsive="xl" as needed to create responsive tables up to a particular breakpoint. From that breakpoint and up, the table will behave normally and not scroll horizontally.

{/* code started */}
# Heading Heading Heading Heading Heading Heading Heading Heading Heading
1 Cell Cell Cell Cell Cell Cell Cell Cell Cell
2 Cell Cell Cell Cell Cell Cell Cell Cell Cell
3 Cell Cell Cell Cell Cell Cell Cell Cell Cell
{/* end of code */}
{/* end of responsive-tables */}
); }; export default Tables; ================================================ FILE: app/(dashboard)/components/toasts/page.js ================================================ 'use client' // import node module libraries import { Fragment, useState } from 'react'; import { Col, Row, Card, Toast, ToastContainer, Button, Image, Tab, Nav, Form, Container } from 'react-bootstrap'; // import widget/custom components import { HighlightCode } from 'widgets'; // import react code data file import { BasicExampleCode, TranslucentToastsCode, StackingCode, PlacementCode1, PlacementCode2, PlacementCode3, DismissibleCode } from 'data/code/ToastsCode'; const Toasts = () => { const [showA, setShowA] = useState(true); const [showB, setShowB] = useState(true); const toggleShowA = () => setShowA(!showA); const toggleShowB = () => setShowB(!showB); const [position, setPosition] = useState('top-start'); const iconSVG = ` `; return (

Toast

Push notifications to your visitors with a toast, a lightweight and easily customizable alert message.

{/* basic */}

Basic

To encourage extensible and predictable toasts, we recommend a header and body. Toast headers use display: flex, allowing easy alignment of content thanks to our margin and flexbox utilities.

Toasts are as flexible as you need and have very little required markup. At a minimum, we require a single element to contain your “toasted” content and strongly encourage a dismiss button.

{/* code started */} Bootstrap 11 mins ago Hello, world! This is a toast message. {/* end of code */}
{/* end of basic */}
{/* translucent */}

Translucent

{/* code started */} Bootstrap just now See? Just like this. {/* end of code */}
{/* end of translucent */}
{/* stacking */}

Stacking

When you have multiple toasts, we default to vertically stacking them in a readable manner.

{/* code started */} Bootstrap just now See? Just like this. Bootstrap 2 seconds ago Heads up, toasts will stack automatically {/* end of code */}
{/* end of stacking */}
{/* placement */}

Placement

Place toasts with custom CSS as you need them. The top right is often used for notifications, as is the top middle.

{/* code started */}
setPosition(e.currentTarget.value)} > {[ 'top-start', 'top-center', 'top-end', 'middle-start', 'middle-center', 'middle-end', 'bottom-start', 'bottom-center', 'bottom-end' ].map((p) => ( ))}
... Bootstrap 11 mins ago Hello, world! This is a toast message.
{/* end of code */}
{/* end of placement */} {/* placement */}

For systems that generate more notifications, consider using a wrapping element so they can easily stack.

{/* code started */}
Bootstrap just now See? Just like this. Bootstrap 2 seconds ago Heads up, toasts will stack automatically
{/* end of code */}
{/* end of placement */} {/* placement */}

You can also get fancy with flexbox utilities to align toasts horizontally and/or vertically.

{/* code started */}
Bootstrap 11 mins ago Hello, world! This is a toast message.
{/* end of code */}
{/* end of placement */}
{/* dismissible */}

Dismissible

{/* code started */} Bootstrap just now See? Just like this. Bootstrap 2 seconds ago Heads up, toasts will stack automatically {/* end of code */}
{/* end of dismissible */}
); }; export default Toasts; ================================================ FILE: app/(dashboard)/components/tooltips/page.js ================================================ 'use client' // import node module libraries import { Fragment } from 'react'; import { Col, Row, Card, OverlayTrigger, Tooltip, Button, Nav, Tab, Container } from 'react-bootstrap'; // import widget/custom components import { HighlightCode } from 'widgets'; // import react code data file import { BasicTooltip } from 'data/code/TooltipsCode'; const Tooltips = () => { return (

Tooltips

Documentation and examples for adding custom Bootstrap tooltips. A tooltip component for a more stylish alternative to that anchor tag title attribute.

{/* tooltips */}

Examples

Hover over the buttons below to see the four tooltips directions: top, right, bottom, and left. You can pass the{' '} Overlay injected props directly to the Tooltip component.

{['top', 'right', 'bottom', 'left'].map((placement) => ( Tooltip on {placement}. } > ))}
{/* end of tooltips */}
); }; export default Tooltips; ================================================ FILE: app/(dashboard)/documentation/page.js ================================================ 'use client' import Link from 'next/link'; // import node module libraries import { Card, Col, Row, Container } from 'react-bootstrap'; const Documentation = () => { return (

Dash UI NextJS

Welcome to the Dash UI NextJS version of the original Dash UI theme.

Getting Started

A professional Dash UI NextJS Kit that comes with plenty of ready-to-use components that will help you to build more beautiful application (web app).

Dash UI Kit is built with the most popular front-end framework{' '} ReactJS Bootstrap {' '} with react-scripts.

This doc will guide you to understand how Dash UI-NextJS theme is organized, basics of how to customize, and how to compile from the source code if you want.


Running in Local environment

This project is scaffolded using npx create-next-app@latest.

  1. Requirements Node.js

    Before proceeding you'll need to have the latest stable{' '} {' '} nodejs. {' '} Install Node.js or already have it installed on your machine move to next step.

  2. {' '}

    Install Dash UI NextJS

    Open the dashui-free-nextjs-admin-template directory with your cmd or terminal. Open the project folder and install its dependencies.{' '}

                        cd dashui-free-nextjs-admin-template{' '}
                      
                        npm install{' '}
                      

    This command will download all the necessary dependencies for dash UI in the node_modules directory.

  3. Start

    Run npm run dev or yarn dev or pnpm dev to start the development server on http://localhost:3000

    Visit http://localhost:3000{' '} to view your application

    Edit pages/index.js and see the updated result in your browser

                        npm run dev
                      

Creating a Production Build.

Production build of your app.

  1. Run npm run build command in your project directory to make the Production build app.

                          npm run build
                        
  2. This output is generated inside the .next folder:

                          npm run start
                        

    Once you execute above command, the production build run locally at http://localhost:3000.


API Demo:

Here is an API demo using fetch , click here


File Structure:

Inside the zip-file you'll find the following directories and files. Both compiled and minified distrubution files, as well as the source files are included in the package.

                  {`
theme/
├── .eslintrc.json
├── .gitignore
├── jsconfig.json
├── next.config.js
├── package.json
├── package-lock.json
├── README.md
├── components/
├── data/
├── hooks/
├── layouts/
├── app/
├── public/
│   ├── fonts
│   ├── images
│   └── favicon.ico
├── routes/
├── styles/
├── sub-components/
└── widgets/
`}
                
); }; export default Documentation; ================================================ FILE: app/(dashboard)/layout-vertical/page.js ================================================ 'use client' // import node module libraries import Link from 'next/link'; import { Col, Row, Container, Image } from 'react-bootstrap'; const Layout = () => { return (

Layouts

Customize your overview page layout. Choose the one that best fits your needs.

Demo layouts
Image Description
Classic
) } export default Layout ================================================ FILE: app/(dashboard)/layout.js ================================================ 'use client' // import node module libraries import { useState } from 'react'; // import theme style scss file import 'styles/theme.scss'; // import sub components import NavbarVertical from '/layouts/navbars/NavbarVertical'; import NavbarTop from '/layouts/navbars/NavbarTop'; export default function DashboardLayout({ children }) { const [showMenu, setShowMenu] = useState(true); const ToggleMenu = () => { return setShowMenu(!showMenu); }; return (
setShowMenu(value)} />
{children}
) } ================================================ FILE: app/(dashboard)/page.js ================================================ 'use client' // import node module libraries import { Fragment } from "react"; import Link from 'next/link'; import { Container, Col, Row } from 'react-bootstrap'; // import widget/custom components import { StatRightTopIcon } from "widgets"; // import sub components import { ActiveProjects, Teams, TasksPerformance } from "sub-components"; // import required data files import ProjectsStatsData from "data/dashboard/ProjectsStatsData"; const Home = () => { return (
{/* Page header */}

Projects

Create New Project
{ProjectsStatsData.map((item, index) => { return ( ) })}
{/* Active Projects */} {/* Tasks Performance */} {/* card */} {/* Teams */}
) } export default Home; ================================================ FILE: app/(dashboard)/pages/api-demo/ServerSideData.js ================================================ 'use client'; // import node module libraries import { Fragment } from "react"; import { Card } from "react-bootstrap"; // import hooks import useMounted from 'hooks/useMounted'; const ServerSideData = ({ data }) => { const hasMounted = useMounted(); return ( {hasMounted &&
{JSON.stringify(data, null, 2)}
}
) } export default ServerSideData ================================================ FILE: app/(dashboard)/pages/api-demo/page.js ================================================ import ServerSideData from './ServerSideData' async function getServerData() { let data = await fetch('https://dummyjson.com/products/1', { cache: 'no-store' }) data = await data.json(); return data; } export default async function Page() { const data = await getServerData(); return ( ) } ================================================ FILE: app/(dashboard)/pages/billing/page.js ================================================ 'use client' // import node module libraries import { Row, Col, Container } from 'react-bootstrap'; // import widget as custom components import { PageHeading } from 'widgets' // import sub components import { BillingAddress, CurrentPlan } from 'sub-components' const Billing = () => { return ( {/* Page Heading */} {/* Current Plan Overview */} {/* Billing Address */} ) } export default Billing ================================================ FILE: app/(dashboard)/pages/pricing/page.js ================================================ 'use client' // import node module libraries import Link from 'next/link'; import { Col, Row, Container } from 'react-bootstrap'; // import sub components import { PricingCard, PageHeading, FeatureLeftTopIcon } from 'widgets' // import data files import { standard, multisite, extended } from 'data/pricing/PricingPlansData'; import FAQsData from 'data/pricing/FAQsData'; import FeaturesData from 'data/pricing/FeaturesData'; const Pricing = () => { return ( {/* Page Heading */}

Find a plan that s right for you

Or simply leverage the expertise of our consultation team.

Talk to us
{/* Standard Pricing Card */} {/* Multisite Pricing Card */} {/* Extended Pricing Card */}

Everything you need to build efficiently

Start building your app using our tools, be efficient, spend less time with details more time with your business.

{/* Features */} {FeaturesData.map((item, index) => { return ( ) })}
{/* FAQs Heading */}

Frequently Asked Questions

{/* FAQs List */} {FAQsData.map((item, index) => { return (

{item.question}

{item.answer}

); })}
) } export default Pricing ================================================ FILE: app/(dashboard)/pages/profile/page.js ================================================ 'use client' // import node module libraries import { Col, Row, Container } from 'react-bootstrap'; // import widget as custom components import { PageHeading } from 'widgets' // import sub components import { AboutMe, ActivityFeed, MyTeam, ProfileHeader, ProjectsContributions, RecentFromBlog } from 'sub-components' const Profile = () => { return ( {/* Page Heading */} {/* Profile Header */} {/* content */}
{/* About Me */} {/* Projects Contributions */} {/* Recent From Blog */} {/* My Team */} {/* Activity Feed */}
) } export default Profile ================================================ FILE: app/(dashboard)/pages/settings/page.js ================================================ 'use client' // import node module libraries import { Container } from 'react-bootstrap'; // import widget as custom components import { PageHeading } from 'widgets' // import sub components import { Notifications, DeleteAccount, GeneralSetting, EmailSetting, Preferences } from 'sub-components' const Settings = () => { return ( {/* Page Heading */} {/* General Settings */} {/* Email Settings */} {/* // DONE ... */} {/* Settings for Preferences */} {/* // DONE ... */} {/* Settings for Notifications */} {/* */} {/* Delete Your Account */} ) } export default Settings ================================================ FILE: app/layout.js ================================================ // import theme style scss file import Link from 'next/link'; import 'styles/theme.scss'; export const metadata = { title: 'Dash UI - Next.Js Admin Dashboard Template', description: 'Dash UI - Next JS admin dashboard template is free and available on GitHub. Create your stunning web apps with our Free Next js template. An open-source admin dashboard built using the new router, server components, and everything new in Next.js 13.', keywords: 'Dash UI, Next.js 13, Admin dashboard, admin template, web apps, bootstrap 5, admin theme' } export default function RootLayout({ children }) { return ( {children} {' '} Buy Now ) } ================================================ FILE: app/not-found.js ================================================ 'use client' // import node module libraries import { Col, Row, Image, Container } from 'react-bootstrap'; import Link from 'next/link'; // import hooks import useMounted from 'hooks/useMounted'; import { Fragment } from 'react'; const NotFound = () => { const hasMounted = useMounted(); return ( {hasMounted &&

Oops! the page not found.

Or simply leverage the expertise of our consultation team.

Go Home
}
); }; export default NotFound; ================================================ FILE: components/CopyToClipboardButton.js ================================================ import React, { useState } from 'react'; const CopyToClipboardButton = ({ textToCopy }) => { const [copied, setCopied] = useState(false); const handleCopy = async () => { try { await navigator.clipboard.writeText(textToCopy); setCopied(true); setTimeout(() => setCopied(false), 2000); // Reset 'copied' state after 2 seconds } catch (err) { console.error('Failed to copy text: ', err); // Handle error, e.g., show an error message to the user } }; return ( ); }; export default CopyToClipboardButton; ================================================ FILE: components/bootstrap/DotBadge.js ================================================ 'use client' /*************************** Component : DotBadge **************************** Availalble Parameters bg : Optional ( default = primary ), possible bg options are, primary, light-primary, secondary, light-secondary etc... */ // import node module libraries import React from 'react'; import PropTypes from 'prop-types'; import { Badge } from 'react-bootstrap'; const DotBadge = (props = { bg: 'light-primary', className:'me-2' }) => { return ( {props.children} ); }; DotBadge.propTypes = { bg: PropTypes.string, className: PropTypes.string }; export default DotBadge; ================================================ FILE: data/Notification.js ================================================ const Notification = [ { id: 1, sender: 'Rishi Chopra', message: `Mauris blandit erat id nunc blandit, ac eleifend dolor pretium.` }, { id: 2, sender: 'Neha Kannned', message: `Proin at elit vel est condimentum elementum id in ante. Maecenas et sapien metus.` }, { id: 3, sender: 'Nirmala Chauhan', message: `Morbi maximus urna lobortis elit sollicitudin sollicitudieget elit vel pretium.` }, { id: 4, sender: 'Sina Ray', message: `Sed aliquam augue sit amet mauris volutpat hendrerit sed nunc eu diam.` } ]; export default Notification; ================================================ FILE: data/code/AccordionCode.js ================================================ export const AccordionBasicCode = ` Accordion Item #1 This is the accordion body of item 1. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the <Accordion.Item><Accordion.Body> though the transition does limit overflow. Accordion Item #2 This is the accordion body of item 2. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the <Accordion.Item><Accordion.Body> though the transition does limit overflow. Accordion Item #3 This is the accordion body of item 3. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the <Accordion.Item><Accordion.Body> though the transition does limit overflow. `.trim(); export const AccordionFlushCode = ` Accordion Item #1 This is the accordion body of item 1. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the <Accordion.Item><Accordion.Body> though the transition does limit overflow. Accordion Item #2 This is the accordion body of item 2. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the <Accordion.Item><Accordion.Body> though the transition does limit overflow. Accordion Item #3 This is the accordion body of item 3. It is hidden by default, until the collapse plugin adds the appropriate classes that we use to style each element. These classes control the overall appearance, as well as the showing and hiding via CSS transitions. You can modify any of this with custom CSS or overriding our default variables. It's also worth noting that just about any HTML can go within the <Accordion.Item><Accordion.Body> though the transition does limit overflow. `.trim(); export const AccordionCode = [AccordionBasicCode, AccordionFlushCode]; export default AccordionCode; ================================================ FILE: data/code/AlertsCode.js ================================================ export const SimpleAlert = ` This is a primary alert—check it out! This is a secondary alert—check it out! This is a success alert—check it out! This is a danger alert—check it out! This is a warning alert—check it out! This is a info alert—check it out! This is a light alert—check it out! This is a dark alert—check it out! `.trim(); export const LinkAlert = ` This is a primary alert with an example link. Give it a click if you like. This is a secondary alert with an example link. Give it a click if you like. This is a success alert with an example link. Give it a click if you like. This is a danger alert with an example link. Give it a click if you like. This is a warning alert with an example link. Give it a click if you like. This is a info alert with an example link. Give it a click if you like. This is a light alert with an example link. Give it a click if you like. This is a dark alert with an example link. Give it a click if you like. `.trim(); export const AdditionalAlert = ` Well done!

Aww yeah, you successfully read this important alert message. This example text is going to run a bit longer so that you can see how spacing within an alert works with this kind of content.


Whenever you need to, be sure to use margin utilities to keep things nice and tidy.

`.trim(); export const AlertWithIcon = ` // import below bootstrap icons from react-bootstrap-icons library before using those import { ExclamationCircleFill, CheckCircleFill, ExclamationTriangleFill } from 'react-bootstrap-icons'; An example alert with an icon An example success alert with an icon An example warning alert with an icon An example danger alert with an icon `.trim(); export const DismissingAlert = ` const AlertDismissible = () => { const [show, setShow] = useState(true); if (show) { return ( setShow(false)} dismissible> Holy guacamole!You should check in on some of those fields below. ); } return ; } render(); `.trim(); export const AlertsCode = [ SimpleAlert, LinkAlert, AdditionalAlert, AlertWithIcon, DismissingAlert ]; export default AlertsCode; ================================================ FILE: data/code/BadgesCode.js ================================================ export const SimpleBadgeCode = `

Example heading New

Example heading New

Example heading New

Example heading New

Example heading New
Example heading New
`.trim(); export const BadgeWithButtonCode = ` `.trim(); export const PillBadgesCode = ` primary secondary success danger warning info light dark `.trim(); export const PaginationsCode = [ SimpleBadgeCode, BadgeWithButtonCode, PillBadgesCode ]; export default PaginationsCode; ================================================ FILE: data/code/BreadcrumbCode.js ================================================ export const BasicBreadcrumb = ` Home Home Library Home Library Data `.trim(); export default BasicBreadcrumb; ================================================ FILE: data/code/ButtonGroupCode.js ================================================ export const BasicButtonGroupCode = ` `.trim(); export const GroupLinksCode = ` `.trim(); export const MixedStylesCode = ` `.trim(); export const OutlineStylesCode = ` `.trim(); export const CheckboxStyleCode = ` Checkbox 1 Checkbox 2 Checkbox 3 `.trim(); export const RadioStyleCode = ` Radio 1 Radio 2 Radio 3 `.trim(); export const ToolbarStyleCode = ` `.trim(); export const ButtonSizingCode = `

`.trim(); export const ButtonNestingCode = ` Dropdown link Dropdown link `.trim(); export const VerticalButtonCode = ` Dropdown link Dropdown link Dropdown link Dropdown link Dropdown link Dropdown link `.trim(); export const PaginationsCode = [ BasicButtonGroupCode, GroupLinksCode, MixedStylesCode, OutlineStylesCode, CheckboxStyleCode, RadioStyleCode, ToolbarStyleCode, ButtonSizingCode, ButtonNestingCode, VerticalButtonCode ]; export default PaginationsCode; ================================================ FILE: data/code/ButtonsCode.js ================================================ export const RegularButtonCode = ` `.trim(); export const ButtonTagsCode = ` `.trim(); export const ButtonSizesCode = ` `.trim(); export const BlockButtonCode = `
`.trim(); export const ResponsiveButtonCode = `
`.trim(); export const BlockButtonWidthCode = ` `.trim(); export const ButtonAlignmentCode = `
`.trim(); export const ButtonIconsCode = ` `.trim(); export const ButtonIcons2Code = ` `.trim(); export const ButtonIconsSizeCode = ` `.trim(); export const ActiveStateCode = ` `.trim(); export const DisabledStateCode = ` `.trim(); export const ToggleStatesCode = ` Toggle button Active toggle button Disabled toggle button `.trim(); export const ButtonsCode = [ RegularButtonCode, ButtonTagsCode, OutlineButtonsCode, ButtonSizesCode, BlockButtonCode, ResponsiveButtonCode, BlockButtonWidthCode, ButtonAlignmentCode, ButtonIconsCode, ButtonIcons2Code, ButtonIconsSizeCode, ActiveStateCode, DisabledStateCode, ToggleStatesCode ]; export default ButtonsCode; ================================================ FILE: data/code/CardsCode.js ================================================ export const BasicCardCode = ` Card Title Some quick example text to build on the card title and make up the bulk of the card's content. `.trim(); export const CardBodyCode = ` This is some text within a card body. `.trim(); export const TitlesTextLinksCode = ` Card Title Card Subtitle Some quick example text to build on the card title and make up the bulk of the card's content. Card Link Another Link `.trim(); export const ListGroups1Code = ` Cras justo odio Dapibus ac facilisis in Vestibulum at eros `.trim(); export const ListGroups2Code = ` Featured Cras justo odio Dapibus ac facilisis in Vestibulum at eros `.trim(); export const CardImagesCode = ` Some quick example text to build on the card title and make up the bulk of the card's content. `.trim(); export const KitchenSinkCode = ` Card Title Some quick example text to build on the card title and make up the bulk of the card's content. Cras justo odio Dapibus ac facilisis in Vestibulum at eros Card Link Another Link `.trim(); export const HeaderFooterCode = ` Featured Special title treatment With supporting text below as a natural lead-in to additional content. `.trim(); export const HeaderFooterCode2 = ` Featured Special title treatment With supporting text below as a natural lead-in to additional content. 2 days ago `.trim(); export const TextAlignmentCode = ` Special title treatment With supporting text below as a natural lead-in to additional content. Special title treatment With supporting text below as a natural lead-in to additional content. Special title treatment With supporting text below as a natural lead-in to additional content. `.trim(); export const ImagesTopBottomCode = ` Card title This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer. Last updated 3 mins ago
Card title This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer. Last updated 3 mins ago `.trim(); export const ImageOverlaysCode = ` Card title This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer. Last updated 3 mins ago `.trim(); export const CardsCode = [ BasicCardCode, CardBodyCode, TitlesTextLinksCode, ListGroups1Code, ListGroups2Code, CardImagesCode, KitchenSinkCode, HeaderFooterCode, HeaderFooterCode2, TextAlignmentCode, ImagesTopBottomCode, ImageOverlaysCode ]; export default CardsCode; ================================================ FILE: data/code/CarouselsCode.js ================================================ export const SlidesOnlyCode = ` First slide Second slide Third slide `.trim(); export const WithControlCode = ` First slide Second slide Third slide `.trim(); export const WithIndicatorsCode = ` First slide Second slide Third slide `.trim(); export const WithCaptionCode = ` function ControlledCarousel() { const [index, setIndex] = useState(0); const handleSelect = (selectedIndex, e) => { setIndex(selectedIndex); }; return ( First slide

First slide label

Nulla vitae elit libero, a pharetra augue mollis interdum.

Second slide

Second slide label

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Third slide

Third slide label

Praesent commodo cursus magna, vel scelerisque nisl consectetur.

) } render(); `.trim(); export const CrossfadeCode = ` First slide Second slide Third slide `.trim(); export const IndividualCode = ` First slide Second slide Third slide `.trim(); export const DarkVariantCode = ` First slide
First slide label

Nulla vitae elit libero, a pharetra augue mollis interdum.

Second slide
Second slide label

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Third slide
Third slide label

Praesent commodo cursus magna, vel scelerisque nisl consectetur.

`.trim(); export const CarouselsCode = [ SlidesOnlyCode, WithControlCode, WithIndicatorsCode, WithCaptionCode, CrossfadeCode, IndividualCode, DarkVariantCode ]; export default CarouselsCode; ================================================ FILE: data/code/CloseCode.js ================================================ export const GenericCloseButtonCode = ` `.trim(); export const DisabledStateCode = ` `.trim(); export const WhiteVariantCode = `
`.trim(); export const CollapsesCode = [ GenericCloseButtonCode, DisabledStateCode, WhiteVariantCode ]; export default CollapsesCode; ================================================ FILE: data/code/CollapsesCode.js ================================================ export const BasicCollapsesCode = ` const Collapses = () => { const [open, setOpen] = useState(false); return (
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident.
) } `.trim(); export const FadeCollapses = ` const Collapses = () => { const [openFade, setOpenFade] = useState(false); return (
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident.
) } `.trim(); export const CollapsesCode = [BasicCollapsesCode, FadeCollapses]; export default CollapsesCode; ================================================ FILE: data/code/DropdownsCode.js ================================================ export const BasicDropdownCode = ` Dropdown Button Action Another action Something else `.trim(); export const SplitDropdownCode = ` Action Another action Something else `.trim(); export const DropdownVariantCode = ` {['Primary', 'Secondary', 'Success', 'Info', 'Warning', 'Danger'].map( (variant) => ( Action Another action Something else Separated link ), )} `.trim(); export const DropdownSizingCode = ` {[DropdownButton, SplitButton].map((DropdownType, idx) => ( Action Another action Something else here Separated link ))} {[DropdownButton, SplitButton].map((DropdownType, idx) => ( Action Another action Something else here Separated link ))} `.trim(); export const DirectionsCode = `
{['up', 'down', 'left', 'right'].map((direction) => ( Action Another action Something else here Separated link ))}
{['up', 'down', 'left', 'right'].map((direction) => ( Action Another action Something else here Separated link ))}
`.trim(); export const MenuAlignmentCode = ` Action Another action Something else here Separated link Action Another action Something else here Separated link `.trim(); export const ResponsiveMenuAlignmentCode1 = ` Action Another action Something else here Separated link `.trim(); export const ResponsiveMenuAlignmentCode2 = ` Action Another action Something else here Separated link `.trim(); export const MenuContentCode = ` Dropdown header Another action Something else here `.trim(); export const DividersCode = ` Action Another action Something else here Separated link `.trim(); export const FormsCode1 = `
Email address We'll never share your email with anyone else. Password
New around here? Sign up Forgot password?
`.trim(); export const FormsCode2 = `
Email address We'll never share your email with anyone else. Password
`.trim(); export const DropdownsCode = [ BasicDropdownCode, SplitDropdownCode, DropdownVariantCode, DropdownSizingCode, DirectionsCode, MenuAlignmentCode, ResponsiveMenuAlignmentCode1, ResponsiveMenuAlignmentCode2, MenuContentCode, DividersCode, FormsCode1, FormsCode2 ]; export default DropdownsCode; ================================================ FILE: data/code/ListgroupsCode.js ================================================ export const BasicListgroupCode = ` Cras justo odio Dapibus ac facilisis in Morbi leo risus Porta ac consectetur ac Vestibulum at eros `.trim(); export const ActiveItemCode = ` Cras justo odio Dapibus ac facilisis in Morbi leo risus Porta ac consectetur ac Vestibulum at eros `.trim(); export const DisabledItemsCode = ` Cras justo odio Dapibus ac facilisis in Morbi leo risus Porta ac consectetur ac Vestibulum at eros `.trim(); export const LinksButtonsCode = ` Cras justo odio Dapibus ac facilisis in Morbi leo risus Porta ac consectetur ac Vestibulum at eros `.trim(); export const ListButtonCode = ` Cras justo odio Dapibus ac facilisis in Morbi leo risus Porta ac consectetur ac Vestibulum at eros `.trim(); export const FlushListgroupCode = ` Cras justo odio Dapibus ac facilisis in Morbi leo risus Porta ac consectetur ac Vestibulum at eros `.trim(); export const HorizontalListgroupCode = ` Cras justo odio Dapibus ac facilisis in Morbi leo risus `.trim(); export const HorizontalListgroupCode2 = ` Cras justo odio Dapibus ac facilisis in Morbi leo risus `.trim(); export const ContextualClassesCode = ` Dapibus ac facilisis in This is a Primary list group item This is a Secondary list group item This is a Success list group item This is a Danger list group item This is a Warning list group item This is a Info list group item This is a Light list group item This is a Dark list group item `.trim(); export const WithBadgesCode = ` Cras justo odio 14 Dapibus ac facilisis in 2 Morbi leo risus 1 `.trim(); export const CustomContentCode = `
List group item heading
3 days ago

Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.

Donec id elit non mi porta.
List group item heading
3 days ago

Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.

Donec id elit non mi porta.
List group item heading
3 days ago

Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.

Donec id elit non mi porta.
`.trim(); export const WithIconCode = ` 12 hours video Certificate 12 Article Lifetime access `.trim(); export const GroupWithIconCode = ` // Below import is required to use DotBadge custom component // import DotBadge from './DotBadge'; Post ID
8693637308
Status
Published (unsaved changes)
Created by
Geeks Courses
Admin
Created at
Jul 30, 2:21 PM
First published at
Jul 30, 2:21 PM
Last update
Aug 31, 12:21 PM
Last Published
Aug 31, 12:21 PM
`.trim(); export const ListgroupsCode = [ BasicListgroupCode, ActiveItemCode, DisabledItemsCode, LinksButtonsCode, ListButtonCode, FlushListgroupCode, HorizontalListgroupCode, HorizontalListgroupCode2, ContextualClassesCode, WithBadgesCode, CustomContentCode, WithIconCode, GroupWithIconCode ]; export default ListgroupsCode; ================================================ FILE: data/code/ModalsCode.js ================================================ export const SampleExamplesCode = `
Modal title

Modal body text goes here.

`.trim(); export const LiveDemoCode = ` const Modals = () => { const handleClose = () => setShow(false); const handleShow = () => setShow(true); return ( Modal title Woohoo, you're reading this text in a modal! ) } `.trim(); export const LongContentCode = ` const Modals = () => { const handleClose = () => setShow(false); const handleShow = () => setShow(true); const longContent =\`

Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.

Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.

Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.

Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.

Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.

Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.

\` return ( setScrollShow(false)}> Modal title ) } `.trim(); export const ScrollableModalCode = ` const Modals = () => { const [scrollShow, setScrollShow] = useState(false); const longContent =\`

Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.

Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.

Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.

Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.

Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.

Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.

Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.

Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.

\` return ( setScrollShow(false)} > Modal title ) } `.trim(); export const VerticallyCenteredCode = ` const Modals = () => { function MyVerticallyCenteredModal(props) { return ( Modal title Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. ); } const [modalShow, setModalShow] = React.useState(false); return ( setModalShow(false)} /> ) } `.trim(); export const TooltipsPopoversCode = ` const Modals = () => { const [popoverTipShow , setpopoverTipShow] = useState(false); return ( setpopoverTipShow(false)}> Modal title
Popover in a modal

This{' '} Popover title Popover body content is set in this attribute. )}> triggers a popover on click.


Tooltips in a modal
Tooltip }> This Link and Tooltip }> That Link have tooltips on hover.
) } `.trim(); export const OptionalSizesCode = ` const Modals = () => { const [smShow, setSmShow] = useState(false); const [mdShow, setMdShow] = useState(false); const [lgShow, setLgShow] = useState(false); return ( {' '} {' '} setSmShow(false)} aria-labelledby="example-modal-sizes-title-sm" > Small modal ... setLgShow(false)} aria-labelledby="example-modal-sizes-title-lg" > Extra large modal ... setMdShow(false)} aria-labelledby="example-modal-sizes-title-lg" > Large modal ... ) } `.trim(); export const ModalsCode = [ SampleExamplesCode, LiveDemoCode, LongContentCode, ScrollableModalCode, VerticallyCenteredCode, TooltipsPopoversCode, OptionalSizesCode ]; export default ModalsCode; ================================================ FILE: data/code/NavbarsCode.js ================================================ export const DefaultNavbar = ` `.trim(); export const BrandNavbar = ` `.trim(); export const ColorSchemesCode = `

`.trim(); export const NavbarsCode = [DefaultNavbar, BrandNavbar, ColorSchemesCode]; export default NavbarsCode; ================================================ FILE: data/code/NavsCode.js ================================================ export const MenuNavCode = ` `.trim(); export const MenuNavFlexCode = ` `.trim(); export const AlignmentCenterCode = ` `.trim(); export const AlignmentRightCode = ` `.trim(); export const VerticalFlexCode = ` `.trim(); export const VerticalULLICode = ` `.trim(); export const TabsNavCode = ` `.trim(); export const PillsNavsCode = ` `.trim(); export const FillPillsULLICode = ` `.trim(); export const FillPillsLinkCode = ` `.trim(); export const FillPillsJustifyCode = ` `.trim(); export const NavsFlexUtilitiesCode = ` `.trim(); export const NavsTabsCode = ` Home Tab - Consequat occaecat ullamco amet non eiusmod nostrud dolore irure incididunt est duis anim sunt officia. Fugiat velit proident aliquip nisi incididunt nostrud exercitation proident est nisi. Irure magna elit commodo anim ex veniam culpa eiusmod id nostrud sit cupidatat in veniam ad. Eiusmod consequat eu adipisicing minim anim aliquip cupidatat culpa excepteur quis. Occaecat sit eu exercitation irure Lorem incididunt nostrud. Profile Tab - Consequat occaecat ullamco amet non eiusmod nostrud dolore irure incididunt est duis anim sunt officia. Fugiat velit proident aliquip nisi incididunt nostrud exercitation proident est nisi. Irure magna elit commodo anim ex veniam culpa eiusmod id nostrud sit cupidatat in veniam ad. Eiusmod consequat eu adipisicing minim anim aliquip cupidatat culpa excepteur quis. Occaecat sit eu exercitation irure Lorem incididunt nostrud. Contact Tab - Consequat occaecat ullamco amet non eiusmod nostrud dolore irure incididunt est duis anim sunt officia. Fugiat velit proident aliquip nisi incididunt nostrud exercitation proident est nisi. Irure magna elit commodo anim ex veniam culpa eiusmod id nostrud sit cupidatat in veniam ad. Eiusmod consequat eu adipisicing minim anim aliquip cupidatat culpa excepteur quis. Occaecat sit eu exercitation irure Lorem incididunt nostrud. `.trim(); export const NavsTabsPillsCode = ` Home Tab - Consequat occaecat ullamco amet non eiusmod nostrud dolore irure incididunt est duis anim sunt officia. Fugiat velit proident aliquip nisi incididunt nostrud exercitation proident est nisi. Irure magna elit commodo anim ex veniam culpa eiusmod id nostrud sit cupidatat in veniam ad. Eiusmod consequat eu adipisicing minim anim aliquip cupidatat culpa excepteur quis. Occaecat sit eu exercitation irure Lorem incididunt nostrud. Profile Tab - Consequat occaecat ullamco amet non eiusmod nostrud dolore irure incididunt est duis anim sunt officia. Fugiat velit proident aliquip nisi incididunt nostrud exercitation proident est nisi. Irure magna elit commodo anim ex veniam culpa eiusmod id nostrud sit cupidatat in veniam ad. Eiusmod consequat eu adipisicing minim anim aliquip cupidatat culpa excepteur quis. Occaecat sit eu exercitation irure Lorem incididunt nostrud. Contact Tab - Consequat occaecat ullamco amet non eiusmod nostrud dolore irure incididunt est duis anim sunt officia. Fugiat velit proident aliquip nisi incididunt nostrud exercitation proident est nisi. Irure magna elit commodo anim ex veniam culpa eiusmod id nostrud sit cupidatat in veniam ad. Eiusmod consequat eu adipisicing minim anim aliquip cupidatat culpa excepteur quis. Occaecat sit eu exercitation irure Lorem incididunt nostrud. `.trim(); export const VerticalPillsCode = ` Home Tab - Consequat occaecat ullamco amet non eiusmod nostrud dolore irure incididunt est duis anim sunt officia. Fugiat velit proident aliquip nisi incididunt nostrud exercitation proident est nisi. Irure magna elit commodo anim ex veniam culpa eiusmod id nostrud sit cupidatat in veniam ad. Eiusmod consequat eu adipisicing minim anim aliquip cupidatat culpa excepteur quis. Occaecat sit eu exercitation irure Lorem incididunt nostrud. Profile Tab - Consequat occaecat ullamco amet non eiusmod nostrud dolore irure incididunt est duis anim sunt officia. Fugiat velit proident aliquip nisi incididunt nostrud exercitation proident est nisi. Irure magna elit commodo anim ex veniam culpa eiusmod id nostrud sit cupidatat in veniam ad. Eiusmod consequat eu adipisicing minim anim aliquip cupidatat culpa excepteur quis. Occaecat sit eu exercitation irure Lorem incididunt nostrud. Messages Tab - Consequat occaecat ullamco amet non eiusmod nostrud dolore irure incididunt est duis anim sunt officia. Fugiat velit proident aliquip nisi incididunt nostrud exercitation proident est nisi. Irure magna elit commodo anim ex veniam culpa eiusmod id nostrud sit cupidatat in veniam ad. Eiusmod consequat eu adipisicing minim anim aliquip cupidatat culpa excepteur quis. Occaecat sit eu exercitation irure Lorem incididunt nostrud. Settings Tab - Consequat occaecat ullamco amet non eiusmod nostrud dolore irure incididunt est duis anim sunt officia. Fugiat velit proident aliquip nisi incididunt nostrud exercitation proident est nisi. Irure magna elit commodo anim ex veniam culpa eiusmod id nostrud sit cupidatat in veniam ad. Eiusmod consequat eu adipisicing minim anim aliquip cupidatat culpa excepteur quis. Occaecat sit eu exercitation irure Lorem incididunt nostrud. `.trim(); export const NavsCode = [ MenuNavCode, MenuNavFlexCode, AlignmentCenterCode, AlignmentRightCode, VerticalFlexCode, VerticalULLICode, TabsNavCode, PillsNavsCode, FillPillsULLICode, FillPillsLinkCode, FillPillsJustifyCode, NavsFlexUtilitiesCode, NavsTabsCode, NavsTabsPillsCode, VerticalPillsCode ]; export default NavsCode; ================================================ FILE: data/code/OffcanvasCode.js ================================================ export const OffcanvasBasicCode = ` const BSOffCanvas = () => { const [show, setShow] = useState(false); const handleClose = () => setShow(false); const handleShow = () => setShow(true); return ( Offcanvas Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc. ); } export default BSOffCanvas; `.trim(); export const OffCanvasPlacementCode = ` const BSOffCanvas = () => { function OffCanvasPlacement({ name, ...props }) { const [show, setShow] = useState(false); const handleClose = () => setShow(false); const handleShow = () => setShow(true); return ( <> Offcanvas Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc. ); } return ( {['start', 'end', 'top', 'bottom'].map((placement, idx) => ( ))} ); } export default BSOffCanvas; `.trim(); export const OffCanvasBackdropCode = ` const BSOffCanvas = () => { const options = [ { name: 'Enable backdrop (default)', scroll: false, backdrop: true, }, { name: 'Disable backdrop', scroll: false, backdrop: false, }, { name: 'Enable body scrolling', scroll: true, backdrop: false, }, { name: 'Enable both scrolling & backdrop', scroll: true, backdrop: true, }, ]; function OffCanvasBackdrop({ name, ...props }) { const [show, setShow] = useState(false); const handleClose = () => setShow(false); const toggleShow = () => setShow((s) => !s); return ( <> Offcanvas Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc. ); } return ( {options.map((props, idx) => ( ))} ); } export default BSOffCanvas; `.trim(); export const OffcanvasCode = [ OffcanvasBasicCode, OffCanvasPlacementCode, OffCanvasBackdropCode ]; export default OffcanvasCode; ================================================ FILE: data/code/OverlaysCode.js ================================================ export const OverlayBasicCode = ` const Overlays = () => { const [show, setShow] = useState(false); const target = useRef(null); return ( {({ placement, arrowProps, show: _show, popper, ...props }) => (
Simple tooltip
)}
); } export default Overlays; `.trim(); export const OverlayTriggerCode = ` Simple tooltip )} > `.trim(); export const TriggerBehaviorCode = ` const Overlays = () => { return ( Check out this avatar} > {({ ref, ...triggerHandler }) => ( )} ); } export default Overlays; `.trim(); export const OffcanvasCode = [ OverlayBasicCode, OverlayTriggerCode, TriggerBehaviorCode ]; export default OffcanvasCode; ================================================ FILE: data/code/PaginationsCode.js ================================================ export const DefaultPaginationCode = ` Previous {1} {2} {3} Next `.trim(); export const PaginationWithIconsCode = ` {1} {2} {3} `.trim(); export const DisabledActiveCode = ` Previous {1} {2} {3} Next `.trim(); export const PaginationSizingCode = ` {1} {2} {3} `.trim(); export const PaginationSizingSmallCode = ` {1} {2} {3} `.trim(); export const AlignmentCode = ` Previous {1} {2} {3} Next `.trim(); export const JustifyContentEndCode = ` Previous {1} {2} {3} Next `.trim(); export const PaginationsCode = [ DefaultPaginationCode, PaginationWithIconsCode, DisabledActiveCode, PaginationSizingCode, PaginationSizingSmallCode, AlignmentCode, JustifyContentEndCode ]; export default PaginationsCode; ================================================ FILE: data/code/PopoversCode.js ================================================ export const copyAction = (event) => { event.target.innerHTML = 'Copied'; setTimeout(() => { event.target.innerHTML = 'Copy'; }, 3000); }; export const DefaultPopoverCode = ` Popover title And here's some amazing content. It's very engaging. Right? }> `.trim(); export const FourDirectionsCode = ` {['top', 'right', 'bottom', 'left'].map((placement) => ( {\`Popover \${placement}\`} Holy guacamole! Check this info. } > ))} `.trim(); export const DismissableCode = ` Popover title And here's some amazing content. It's very engaging. Right? }> `.trim(); export const PopoversCode = [ DefaultPopoverCode, FourDirectionsCode, DismissableCode ]; export default PopoversCode; ================================================ FILE: data/code/ProgressCode.js ================================================ export const DefaultProgressCode = ` `.trim(); export const ProgressLabelsCode = ` `.trim(); export const ProgressHeightCode = ` `.trim(); export const ProgressBackgroundsCode = ` `.trim(); export const MultipleBarsCode = ` `.trim(); export const StripedCode = ` `.trim(); export const AnimatedCode = ` `.trim(); export const ProgressCode = [ DefaultProgressCode, ProgressLabelsCode, ProgressHeightCode, ProgressBackgroundsCode, MultipleBarsCode, StripedCode, AnimatedCode ]; export default ProgressCode; ================================================ FILE: data/code/SpinnersCode.js ================================================ export const BorderSpinnerCode = ` Loading... `.trim(); export const SpinnersColorsCode = ` `.trim(); export const GrowingSpinnerCode = ` `.trim(); export const GrowColorsCode = ` `.trim(); export const AlignmentCode = ` Loading... `.trim(); export const PlacementCenterCode = `
Loading...
`.trim(); export const PlacementLoadingCode = `
Loading... Loading...
`.trim(); export const FloatsCode = ` Loading... `.trim(); export const TextAlignCode = `
Loading...
`.trim(); export const SizeSpinnersCode = ` `.trim(); export const StyleCSSCode = ` `.trim(); export const ButtonsCode = ` `.trim(); export const Buttons2Code = ` `.trim(); export const SpinnersCode = [ BorderSpinnerCode, SpinnersColorsCode, GrowingSpinnerCode, GrowColorsCode, AlignmentCode, PlacementCenterCode, PlacementLoadingCode, FloatsCode, TextAlignCode, SizeSpinnersCode, StyleCSSCode, ButtonsCode, Buttons2Code ]; export default SpinnersCode; ================================================ FILE: data/code/TablesCode.js ================================================ export const BasicTableCode = `
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
`.trim(); export const DarkTableCode = `
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
`.trim(); export const TableHeadCode = `
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
`.trim(); export const StripedTableCode = `
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
`.trim(); export const TableVariantCode = `
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
`.trim(); export const BorderedTableCode = `
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
`.trim(); export const BorderlessTableCode = `
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
`.trim(); export const HoverableRowsCode = `
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
`.trim(); export const SmallTableCode = `
# First Last Handle
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
`.trim(); export const ContextualClassesCode = `
Class Heading Heading
Active Cell Cell
Default Cell Cell
Primary Cell Cell
Secondary Cell Cell
Success Cell Cell
Danger Cell Cell
Warning Cell Cell
Info Cell Cell
Light Cell Cell
Dark Cell Cell
`.trim(); export const ResponsiveTableCode = `
# Heading Heading Heading Heading Heading Heading Heading Heading Heading
1 Cell Cell Cell Cell Cell Cell Cell Cell Cell
2 Cell Cell Cell Cell Cell Cell Cell Cell Cell
3 Cell Cell Cell Cell Cell Cell Cell Cell Cell
`.trim(); export const TablesCode = [ BasicTableCode, DarkTableCode, TableHeadCode, StripedTableCode, TableVariantCode, BorderedTableCode, BorderlessTableCode, HoverableRowsCode, SmallTableCode, ContextualClassesCode, ResponsiveTableCode ]; export default TablesCode; ================================================ FILE: data/code/ToastsCode.js ================================================ export const BasicExampleCode = ` Bootstrap 11 mins ago Hello, world! This is a toast message. `.trim(); export const TranslucentToastsCode = ` Bootstrap just now See? Just like this. `.trim(); export const StackingCode = ` Bootstrap just now See? Just like this. Bootstrap 2 seconds ago Heads up, toasts will stack automatically `.trim(); export const PlacementCode1 = `
setPosition(e.currentTarget.value)} > {[ 'top-start', 'top-center', 'top-end', 'middle-start', 'middle-center', 'middle-end', 'bottom-start', 'bottom-center', 'bottom-end', ].map((p) => ( ))}
... Bootstrap 11 mins ago Hello, world! This is a toast message.
`.trim(); export const PlacementCode2 = `
Bootstrap just now See? Just like this. Bootstrap 2 seconds ago Heads up, toasts will stack automatically
`.trim(); export const PlacementCode3 = `
Bootstrap 11 mins ago Hello, world! This is a toast message.
`.trim(); export const DismissibleCode = ` const Toasts = () => { const [showA, setShowA] = useState(true); const [showB, setShowB] = useState(true); const toggleShowA = () => setShowA(!showA); const toggleShowB = () => setShowB(!showB); return ( Bootstrap just now See? Just like this. Bootstrap 2 seconds ago Heads up, toasts will stack automatically ) } `.trim(); export const ToastsCode = [ BasicExampleCode, TranslucentToastsCode, StackingCode, PlacementCode1, PlacementCode2, PlacementCode3, DismissibleCode ]; export default ToastsCode; ================================================ FILE: data/code/TooltipsCode.js ================================================ export const BasicTooltip = ` {['top', 'right', 'bottom', 'left'].map((placement) => ( Tooltip on {placement}. } > ))} `.trim(); export default BasicTooltip; ================================================ FILE: data/dashboard/ActiveProjectsData.js ================================================ export const ActiveProjectsData = [ { id:1, projectName : "Dropbox Design System", priority : "Medium", priorityBadgeBg : 'warning', hours: 34, progress: 15, brandLogo:'/images/brand/dropbox-logo.svg', brandLogoBg : 'bg-white', members:[ {image:'images/avatar/avatar-1.jpg'}, {image:'images/avatar/avatar-2.jpg'}, {image:'images/avatar/avatar-3.jpg'} ] }, { id:2, projectName : "Slack Team UI Design", priority : "High", priorityBadgeBg : 'danger', hours: 47, progress: 35, brandLogo:'/images/brand/slack-logo.svg', brandLogoBg : 'bg-white', members:[ {image:'images/avatar/avatar-4.jpg'}, {image:'images/avatar/avatar-5.jpg'}, {image:'images/avatar/avatar-6.jpg'} ] }, { id:3, projectName : "GitHub Satellite", priority : "Low", priorityBadgeBg : 'info', hours: 120, progress: 75, brandLogo:'/images/brand/github-logo.svg', brandLogoBg : 'bg-white', members:[ {image:'images/avatar/avatar-7.jpg'}, {image:'images/avatar/avatar-8.jpg'}, {image:'images/avatar/avatar-9.jpg'} ] }, { id:4, projectName : "3D Character Modelling", priority : "Medium", priorityBadgeBg : 'warning', hours: 89, progress: 63, brandLogo:'/images/brand/3dsmax-logo.svg', brandLogoBg : 'bg-white', members:[ {image:'images/avatar/avatar-10.jpg'}, {image:'images/avatar/avatar-11.jpg'}, {image:'images/avatar/avatar-12.jpg'} ] }, { id:3, projectName : "Webapp Design System", priority : "Track", priorityBadgeBg : 'success', hours: 108, progress: 100, brandLogo:'/images/brand/layers-logo.svg', brandLogoBg : 'bg-primary', members:[ {image:'images/avatar/avatar-13.jpg'}, {image:'images/avatar/avatar-14.jpg'}, {image:'images/avatar/avatar-15.jpg'} ] }, { id:4, projectName : "Github Event Design", priority : "Low", priorityBadgeBg : 'info', hours: 120, progress: 75, brandLogo:'/images/brand/github-logo.svg', brandLogoBg : 'bg-white', members:[ {image:'images/avatar/avatar-16.jpg'}, {image:'images/avatar/avatar-17.jpg'}, {image:'images/avatar/avatar-18.jpg'} ] } ]; export default ActiveProjectsData; ================================================ FILE: data/dashboard/ProjectsStatsData.js ================================================ import { Briefcase, ListTask, People, Bullseye } from 'react-bootstrap-icons'; export const ProjectsStats = [ { id:1, title : "Projects", value : 18, icon: , statInfo: '2 Completed' }, { id:2, title : "Active Task", value : 132, icon: , statInfo: '28 Completed' }, { id:3, title : "Teams", value : 12, icon: , statInfo: '1 Completed' }, { id:4, title : "Productivity", value : '76%', icon: , statInfo: '5% Completed' } ]; export default ProjectsStats; ================================================ FILE: data/dashboard/TeamsData.js ================================================ export const TeamsData = [ { id:1, name : "Anita Parmar", email : "anita@example.com", role: "Front End Developer", lastActivity: '3 May, 2023', image:'/images/avatar/avatar-2.jpg' }, { id:2, name : "Jitu Chauhan", email : "jituchauhan@example.com", role: "Project Director", lastActivity: 'Today', image:'/images/avatar/avatar-1.jpg' }, { id:3, name : "Sandeep Chauhan", email : "sandeepchauhan@example.com", role: "Full- Stack Developer", lastActivity: 'Yesterday', image:'/images/avatar/avatar-3.jpg' }, { id:4, name : "Amanda Darnell", email : "amandadarnell@example.com", role: "Account Manager", lastActivity: '3 May, 2023', image:'/images/avatar/avatar-4.jpg' }, { id:3, name : "Patricia Murrill", email : "patriciamurrill@example.com", role: "Digital Marketer", lastActivity: '3 May, 2023', image:'/images/avatar/avatar-5.jpg' }, { id:4, name : "Darshini Nair", email : "darshininair@example.com", role: "Front End Developer", lastActivity: '3 May, 2023', image:'/images/avatar/avatar-6.jpg' } ]; export default TeamsData; ================================================ FILE: data/pricing/FAQsData.js ================================================ export const FAQsData = [ { id: 1, question: 'Will I be charged now for?', answer: 'Vestibulum pulvinar est at erat laoreet fringilla. Nullam imperdiet, augue non vestibulum triuam quam, at maximus ex mauris a felis.' }, { id: 2, question: 'How does a subscription work?', answer: 'Donec tempus imperdiet libero quis ultricies. Donec nunc nisi, imperdiet nec porta ultrices, accumsan a nibh.' }, { id: 3, question: 'Can I cancel anytime?', answer: 'Yes, Pellentesque habitant morbi tristique senectus et netus fficitur eget lacus eu, gravida blandit sem. Duis aliquam convallis tempor.' }, { id: 4, question: 'How long is my personal?', answer: 'Aliquam vel sodales est. Mauris eu dignissim dolor. Praesent scelerisque dolor risus, quis viverra interdum turpis tincidunt interdum.' }, { id: 5, question: 'What are Multisite plan?', answer: 'Quisque accumsan odio sed congue u eleifend est porttitor nisi lobortis, sit aget dolor rhoncus tincidunt vel a mauris.' }, { id: 6, question: 'Are the files downloadable?', answer: 'Pellentesque habitant morbi tristique senectus et netus et malesuada fitur eget lacus eu, gravida blandit sem.' } ]; export default FAQsData; ================================================ FILE: data/pricing/FeaturesData.js ================================================ export const FeaturesData = [ { id: 1, icon:'edit', title: 'Create and Edit Projects', description:'Donec posuere felis sit amet felis max imus roin consectetur quis leo id eleifuet, sapien quis fringilla finibus.' }, { id: 2, icon:'filter', title: 'Search and Filter', description:'Vestibulum in neque augue. Vivamus sed tempor mi. Integer dolor urna, dictum a arcu vitae, efficitur semper lorem.' } , { id: 3, icon:'rotate-ccw', title: 'Real Time Updates', description:'Maecenas nec mauris dui. Sed ut mi a nibh rhoncus blandit. Cras accumsan, eros in malesuada convallis.' }, { id: 4, icon:'tag', title: 'Meta Information', description:'Aenean justo lorem, semper non lectus quis, porta semper enim. Integer posuere lorem eu neque pellentesque.' }, { id: 5, icon:'file-text', title: 'Pre rendered Results', description:'Donec cursus libero non nibh consectetur sodales tincidunt vitae turpis. Duis feugiat at lorem id iaculis.' }, { id: 6, icon:'trending-up', title: 'Simple Analytics', description:'Nulla imperdiet sem quis ipsum condi mentum po ris sit amet libero et turpis vestibulum faucibus at nec lacus.' } ]; export default FeaturesData; ================================================ FILE: data/pricing/PricingPlansData.js ================================================ export const standard = [ { plantitle: 'Standard', description: `For early-stage startups that want to spend more time developing and less on manual operations.`, monthly: 49, buttonText: 'Buy Standard', buttonClass: 'outline-primary', featureHeading: 'All core features, including', features: [ { feature: 'Only Basic Components' }, { feature: `12+ Adv. Components` }, { feature: `5 - Landing page` }, { feature: `3 Dashboard Layouts` }, { feature: 'Documentation' }, { feature: 'Access to support forums' } ] } ]; export const multisite = [ { plantitle: 'Multisite', description: `For agile startups that want to grow their revenue with quick experiments and data-driven decision making.`, monthly: 149, buttonText: 'Buy Multisite', buttonClass: 'primary', featureHeading: 'Everything in Standard +:', features: [ { feature: 'Offline viewing' }, { feature: `Unlimited projects` }, { feature: `Unlimited storage` }, { feature: 'Custom domain support' }, { feature: 'Bulk editing' }, { feature: '12 / 5 support' } ] } ]; export const extended = [ { plantitle: 'Extended', description: `For fast-growth scaleups that want to grow by maximizing efficiencies in their revenue operations.`, monthly: 490, buttonText: 'Buy Extended', buttonClass: 'outline-primary', featureHeading: 'Everything in Multisite +', features: [ { feature: 'Workshop' }, { feature: `Dedicated hardware` }, { feature: `99.9% uptime guarantee` }, { feature: 'Advanced analytics' }, { feature: '3rd party integrations' }, { feature: '24 / 7 support' } ] } ]; export const PricingPlansData = [standard, multisite, extended]; export default PricingPlansData; ================================================ FILE: data/profile/ProjectsContributionsData.js ================================================ export const ProjectsContributionsData = [ { id: 1, projectName: "Slack Figma Design UI", description: "Project description and details about...", brandLogo: '/images/brand/slack-logo.svg', brandLogoBg: 'bg-white', members: [ { image: '/images/avatar/avatar-4.jpg' }, { image: '/images/avatar/avatar-5.jpg' }, { image: '/images/avatar/avatar-6.jpg' } ] }, { id: 2, projectName: "Design 3d Character", description: "Project description and details about...", brandLogo: '/images/brand/3dsmax-logo.svg', brandLogoBg: 'bg-white', members: [ { image: '/images/avatar/avatar-10.jpg' }, { image: '/images/avatar/avatar-11.jpg' }, { image: '/images/avatar/avatar-12.jpg' } ] }, { id: 3, projectName: "Github Development", description: "Project description and details about...", brandLogo: '/images/brand/github-logo.svg', brandLogoBg: 'bg-white', members: [ { image: '/images/avatar/avatar-7.jpg' }, { image: '/images/avatar/avatar-8.jpg' }, { image: '/images/avatar/avatar-9.jpg' } ] }, { id: 4, projectName: "Dropbox Design System", description: "Project description and details about...", brandLogo: '/images/brand/dropbox-logo.svg', brandLogoBg: 'bg-white', members: [ { image: '/images/avatar/avatar-1.jpg' }, { image: '/images/avatar/avatar-2.jpg' }, { image: '/images/avatar/avatar-3.jpg' } ] }, { id: 5, projectName: "Project Management", description: "Project description and details about...", brandLogo: '/images/brand/layers-logo.svg', brandLogoBg: 'bg-primary', members: [ { image: '/images/avatar/avatar-13.jpg' }, { image: '/images/avatar/avatar-14.jpg' }, { image: '/images/avatar/avatar-15.jpg' } ] } ]; export default ProjectsContributionsData; ================================================ FILE: hooks/useMounted.js ================================================ // This hook is used to fix React Hydration Error on any page // import node module libraries import { useState, useEffect } from 'react'; const useMounted = () => { const [hasMounted, setHasMounted] = useState(false); useEffect(() => { setHasMounted(true); }, []); return hasMounted; }; export default useMounted; ================================================ FILE: jsconfig.json ================================================ { "compilerOptions": { "paths": { "*": ["./*"] } } } ================================================ FILE: layouts/QuickMenu.js ================================================ // import node module libraries import Link from 'next/link'; import { Fragment } from 'react'; import { useMediaQuery } from 'react-responsive'; import { Row, Col, Image, Dropdown, ListGroup, } from 'react-bootstrap'; // simple bar scrolling used for notification item scrolling import SimpleBar from 'simplebar-react'; import 'simplebar/dist/simplebar.min.css'; // import data files import NotificationList from 'data/Notification'; // import hooks import useMounted from 'hooks/useMounted'; const QuickMenu = () => { const hasMounted = useMounted(); const isDesktop = useMediaQuery({ query: '(min-width: 1224px)' }) const Notifications = () => { return ( {NotificationList.map(function (item, index) { return (
{item.sender}

{item.message}

); })}
); } const QuickMenuDesktop = () => { return (
Notifications
See all Notifications
avatar
John E. Grainger
View my profile
Edit Profile Activity Log Go Pro Account Settings Sign Out
)} const QuickMenuMobile = () => { return (
Notifications
See all Notifications
avatar
John E. Grainger
View my profile
Edit Profile Activity Log Go Pro Account Settings Sign Out
)} return ( { hasMounted && isDesktop ? : } ) } export default QuickMenu; ================================================ FILE: layouts/navbars/NavbarTop.js ================================================ // import node module libraries import { Menu } from 'react-feather'; import Link from 'next/link'; import { Nav, Navbar, Form } from 'react-bootstrap'; // import sub components import QuickMenu from 'layouts/QuickMenu'; const NavbarTop = (props) => { return (
props.data.SidebarToggleMenu(!props.data.showMenu)}>
{/* Search Form */}
{/* Quick Menu */}
); }; export default NavbarTop; ================================================ FILE: layouts/navbars/NavbarVertical.js ================================================ 'use client' // import node module libraries import { Fragment, useContext } from 'react'; import Link from 'next/link'; import { usePathname } from 'next/navigation' import { useMediaQuery } from 'react-responsive'; import { ListGroup, Card, Image, Badge, } from 'react-bootstrap'; import Accordion from 'react-bootstrap/Accordion'; import AccordionContext from 'react-bootstrap/AccordionContext'; import { useAccordionButton } from 'react-bootstrap/AccordionButton'; // import simple bar scrolling used for notification item scrolling import SimpleBar from 'simplebar-react'; import 'simplebar/dist/simplebar.min.css'; // import routes file import { DashboardMenu } from 'routes/DashboardRoutes'; const NavbarVertical = (props) => { const location = usePathname () const CustomToggle = ({ children, eventKey, icon }) => { const { activeEventKey } = useContext(AccordionContext); const decoratedOnClick = useAccordionButton(eventKey, () => console.log('totally custom!') ); const isCurrentEventKey = activeEventKey === eventKey; return (
  • {icon ? : ''}{' '} {children}
  • ); }; const CustomToggleLevel2 = ({ children, eventKey, icon }) => { const { activeEventKey } = useContext(AccordionContext); const decoratedOnClick = useAccordionButton(eventKey, () => console.log('totally custom!') ); const isCurrentEventKey = activeEventKey === eventKey; return ( ( {children} ) ); }; const generateLink = (item) => { return ( ( isMobile ? props.onClick(!props.showMenu) : props.showMenu }> {item.name} {''} {item.badge ? ( {item.badge} ) : ( '' )} ) ); }; const isMobile = useMediaQuery({ maxWidth: 767 }); return (
    {/* Dashboard Menu */} {DashboardMenu.map(function (menu, index) { if (menu.grouptitle) { return ( {/* group title item */}
    {menu.title}
    {/* end of group title item */}
    ); } else { if (menu.children) { return ( {/* main menu / root menu level / root items */} {menu.title} {menu.badge ? ( {menu.badge} ) : ('')} {menu.children.map(function (menuLevel1Item, menuLevel1Index) { if (menuLevel1Item.children) { return ( {/* first level menu started */} {menuLevel1Item.title} {menuLevel1Item.badge ? ( {menuLevel1Item.badge} ) : ('')} {/* second level menu started */} {menuLevel1Item.children.map(function (menuLevel2Item,menuLevel2Index) { if (menuLevel2Item.children) { return ( {/* second level accordion menu started */} {menuLevel2Item.title} {menuLevel2Item.badge ? ( {menuLevel2Item.badge} ) : ('')} {/* third level menu started */} {menuLevel2Item.children.map(function (menuLevel3Item,menuLevel3Index) { return ( {generateLink(menuLevel3Item)} ); })} {/* end of third level menu */} {/* end of second level accordion */} ); } else { return ( {generateLink(menuLevel2Item)} ); } })} {/* end of second level menu */} {/* end of first level menu */} ); } else { return ( {/* first level menu items */} {generateLink(menuLevel1Item)} {/* end of first level menu items */} ); } })} {/* end of main menu / menu level 1 / root items */} ); } else { return ( {/* menu item without any childern items like Documentation and Changelog items*/} {typeof menu.icon === 'string' ? ( ) : (menu.icon)} {menu.title} {menu.badge ? ( {menu.badge} ) : ('')} {/* end of menu item without any childern items */} ); } } })}
    {/* end of Dashboard Menu */}
    ); }; export default NavbarVertical; ================================================ FILE: next.config.js ================================================ /** @type {import('next').NextConfig} */ const nextConfig = { reactStrictMode: true, } module.exports = nextConfig ================================================ FILE: package.json ================================================ { "name": "dashui-free-nextjs-admin-template", "version": "1.1.1", "private": true, "author": { "name": "codescandy", "url": "https://codescandy.com" }, "keywords": [ "react", "javascript", "admin", "dashboard", "nextjs", "nextjs13", "admin-dashboard", "free", "admin-template", "admin-panel", "freebies", "nextjs-template", "react-dashboard", "bootstrap 5" ], "scripts": { "dev": "next dev", "build": "next build", "start": "next start", "lint": "next lint" }, "dependencies": { "@vercel/analytics": "^1.6.1", "apexcharts": "^5.3.6", "bootstrap": "^5.3.8", "eslint": "9.39.1", "eslint-config-next": "16.0.8", "next": "16.0.8", "node-sass": "^9.0.0", "prism-react-renderer": "^2.4.1", "react": "19.2.1", "react-apexcharts": "^1.9.0", "react-bootstrap": "^2.10.10", "react-bootstrap-icons": "^1.11.6", "react-dom": "19.2.1", "react-dropzone": "^14.3.8", "react-feather": "^2.0.10", "react-responsive": "^10.0.1", "react-syntax-highlighter": "^16.1.0", "sass": "^1.77.6", "sass-loader": "^16.0.6", "simplebar": "^6.3.3", "simplebar-react": "^3.3.2", "uuid": "^13.0.0" } } ================================================ FILE: public/fonts/feather-icons/feather.css ================================================ @font-face { font-family: 'Feather'; src: url('fonts/feather.ttf?sdxovp') format('truetype'), url('fonts/feather.woff?sdxovp') format('woff'), url('fonts/feather.svg?sdxovp#Feather') format('svg'); font-weight: normal; font-style: normal; } .fe { /* use !important to prevent issues with browser extensions that change fonts */ font-family: 'Feather' !important; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; line-height: 1; /* Better Font Rendering =========== */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .fe-activity:before { content: "\e900"; } .fe-airplay:before { content: "\e901"; } .fe-alert-circle:before { content: "\e902"; } .fe-alert-octagon:before { content: "\e903"; } .fe-alert-triangle:before { content: "\e904"; } .fe-align-center:before { content: "\e905"; } .fe-align-justify:before { content: "\e906"; } .fe-align-left:before { content: "\e907"; } .fe-align-right:before { content: "\e908"; } .fe-anchor:before { content: "\e909"; } .fe-aperture:before { content: "\e90a"; } .fe-archive:before { content: "\e90b"; } .fe-arrow-down:before { content: "\e90c"; } .fe-arrow-down-circle:before { content: "\e90d"; } .fe-arrow-down-left:before { content: "\e90e"; } .fe-arrow-down-right:before { content: "\e90f"; } .fe-arrow-left:before { content: "\e910"; } .fe-arrow-left-circle:before { content: "\e911"; } .fe-arrow-right:before { content: "\e912"; } .fe-arrow-right-circle:before { content: "\e913"; } .fe-arrow-up:before { content: "\e914"; } .fe-arrow-up-circle:before { content: "\e915"; } .fe-arrow-up-left:before { content: "\e916"; } .fe-arrow-up-right:before { content: "\e917"; } .fe-at-sign:before { content: "\e918"; } .fe-award:before { content: "\e919"; } .fe-bar-chart:before { content: "\e91a"; } .fe-bar-chart-2:before { content: "\e91b"; } .fe-battery:before { content: "\e91c"; } .fe-battery-charging:before { content: "\e91d"; } .fe-bell:before { content: "\e91e"; } .fe-bell-off:before { content: "\e91f"; } .fe-bluetooth:before { content: "\e920"; } .fe-bold:before { content: "\e921"; } .fe-book:before { content: "\e922"; } .fe-book-open:before { content: "\e923"; } .fe-bookmark:before { content: "\e924"; } .fe-box:before { content: "\e925"; } .fe-briefcase:before { content: "\e926"; } .fe-calendar:before { content: "\e927"; } .fe-camera:before { content: "\e928"; } .fe-camera-off:before { content: "\e929"; } .fe-cast:before { content: "\e92a"; } .fe-check:before { content: "\e92b"; } .fe-check-circle:before { content: "\e92c"; } .fe-check-square:before { content: "\e92d"; } .fe-chevron-down:before { content: "\e92e"; } .fe-chevron-left:before { content: "\e92f"; } .fe-chevron-right:before { content: "\e930"; } .fe-chevron-up:before { content: "\e931"; } .fe-chevrons-down:before { content: "\e932"; } .fe-chevrons-left:before { content: "\e933"; } .fe-chevrons-right:before { content: "\e934"; } .fe-chevrons-up:before { content: "\e935"; } .fe-chrome:before { content: "\e936"; } .fe-circle:before { content: "\e937"; } .fe-clipboard:before { content: "\e938"; } .fe-clock:before { content: "\e939"; } .fe-cloud:before { content: "\e93a"; } .fe-cloud-drizzle:before { content: "\e93b"; } .fe-cloud-lightning:before { content: "\e93c"; } .fe-cloud-off:before { content: "\e93d"; } .fe-cloud-rain:before { content: "\e93e"; } .fe-cloud-snow:before { content: "\e93f"; } .fe-code:before { content: "\e940"; } .fe-codepen:before { content: "\e941"; } .fe-command:before { content: "\e942"; } .fe-compass:before { content: "\e943"; } .fe-copy:before { content: "\e944"; } .fe-corner-down-left:before { content: "\e945"; } .fe-corner-down-right:before { content: "\e946"; } .fe-corner-left-down:before { content: "\e947"; } .fe-corner-left-up:before { content: "\e948"; } .fe-corner-right-down:before { content: "\e949"; } .fe-corner-right-up:before { content: "\e94a"; } .fe-corner-up-left:before { content: "\e94b"; } .fe-corner-up-right:before { content: "\e94c"; } .fe-cpu:before { content: "\e94d"; } .fe-credit-card:before { content: "\e94e"; } .fe-crop:before { content: "\e94f"; } .fe-crosshair:before { content: "\e950"; } .fe-database:before { content: "\e951"; } .fe-delete:before { content: "\e952"; } .fe-disc:before { content: "\e953"; } .fe-dollar-sign:before { content: "\e954"; } .fe-download:before { content: "\e955"; } .fe-download-cloud:before { content: "\e956"; } .fe-droplet:before { content: "\e957"; } .fe-edit:before { content: "\e958"; } .fe-edit-2:before { content: "\e959"; } .fe-edit-3:before { content: "\e95a"; } .fe-external-link:before { content: "\e95b"; } .fe-eye:before { content: "\e95c"; } .fe-eye-off:before { content: "\e95d"; } .fe-facebook:before { content: "\e95e"; } .fe-fast-forward:before { content: "\e95f"; } .fe-feather:before { content: "\e960"; } .fe-file:before { content: "\e961"; } .fe-file-minus:before { content: "\e962"; } .fe-file-plus:before { content: "\e963"; } .fe-file-text:before { content: "\e964"; } .fe-film:before { content: "\e965"; } .fe-filter:before { content: "\e966"; } .fe-flag:before { content: "\e967"; } .fe-folder:before { content: "\e968"; } .fe-folder-minus:before { content: "\e969"; } .fe-folder-plus:before { content: "\e96a"; } .fe-gift:before { content: "\e96b"; } .fe-git-branch:before { content: "\e96c"; } .fe-git-commit:before { content: "\e96d"; } .fe-git-merge:before { content: "\e96e"; } .fe-git-pull-request:before { content: "\e96f"; } .fe-github:before { content: "\e970"; } .fe-gitlab:before { content: "\e971"; } .fe-globe:before { content: "\e972"; } .fe-grid:before { content: "\e973"; } .fe-hard-drive:before { content: "\e974"; } .fe-hash:before { content: "\e975"; } .fe-headphones:before { content: "\e976"; } .fe-heart:before { content: "\e977"; } .fe-help-circle:before { content: "\e978"; } .fe-home:before { content: "\e979"; } .fe-image:before { content: "\e97a"; } .fe-inbox:before { content: "\e97b"; } .fe-info:before { content: "\e97c"; } .fe-instagram:before { content: "\e97d"; } .fe-italic:before { content: "\e97e"; } .fe-layers:before { content: "\e97f"; } .fe-layout:before { content: "\e980"; } .fe-life-buoy:before { content: "\e981"; } .fe-link:before { content: "\e982"; } .fe-link-2:before { content: "\e983"; } .fe-linkedin:before { content: "\e984"; } .fe-list:before { content: "\e985"; } .fe-loader:before { content: "\e986"; } .fe-lock:before { content: "\e987"; } .fe-log-in:before { content: "\e988"; } .fe-log-out:before { content: "\e989"; } .fe-mail:before { content: "\e98a"; } .fe-map:before { content: "\e98b"; } .fe-map-pin:before { content: "\e98c"; } .fe-maximize:before { content: "\e98d"; } .fe-maximize-2:before { content: "\e98e"; } .fe-menu:before { content: "\e98f"; } .fe-message-circle:before { content: "\e990"; } .fe-message-square:before { content: "\e991"; } .fe-mic:before { content: "\e992"; } .fe-mic-off:before { content: "\e993"; } .fe-minimize:before { content: "\e994"; } .fe-minimize-2:before { content: "\e995"; } .fe-minus:before { content: "\e996"; } .fe-minus-circle:before { content: "\e997"; } .fe-minus-square:before { content: "\e998"; } .fe-monitor:before { content: "\e999"; } .fe-moon:before { content: "\e99a"; } .fe-more-horizontal:before { content: "\e99b"; } .fe-more-vertical:before { content: "\e99c"; } .fe-move:before { content: "\e99d"; } .fe-music:before { content: "\e99e"; } .fe-navigation:before { content: "\e99f"; } .fe-navigation-2:before { content: "\e9a0"; } .fe-octagon:before { content: "\e9a1"; } .fe-package:before { content: "\e9a2"; } .fe-paperclip:before { content: "\e9a3"; } .fe-pause:before { content: "\e9a4"; } .fe-pause-circle:before { content: "\e9a5"; } .fe-percent:before { content: "\e9a6"; } .fe-phone:before { content: "\e9a7"; } .fe-phone-call:before { content: "\e9a8"; } .fe-phone-forwarded:before { content: "\e9a9"; } .fe-phone-incoming:before { content: "\e9aa"; } .fe-phone-missed:before { content: "\e9ab"; } .fe-phone-off:before { content: "\e9ac"; } .fe-phone-outgoing:before { content: "\e9ad"; } .fe-pie-chart:before { content: "\e9ae"; } .fe-play:before { content: "\e9af"; } .fe-play-circle:before { content: "\e9b0"; } .fe-plus:before { content: "\e9b1"; } .fe-plus-circle:before { content: "\e9b2"; } .fe-plus-square:before { content: "\e9b3"; } .fe-pocket:before { content: "\e9b4"; } .fe-power:before { content: "\e9b5"; } .fe-printer:before { content: "\e9b6"; } .fe-radio:before { content: "\e9b7"; } .fe-refresh-ccw:before { content: "\e9b8"; } .fe-refresh-cw:before { content: "\e9b9"; } .fe-repeat:before { content: "\e9ba"; } .fe-rewind:before { content: "\e9bb"; } .fe-rotate-ccw:before { content: "\e9bc"; } .fe-rotate-cw:before { content: "\e9bd"; } .fe-rss:before { content: "\e9be"; } .fe-save:before { content: "\e9bf"; } .fe-scissors:before { content: "\e9c0"; } .fe-search:before { content: "\e9c1"; } .fe-send:before { content: "\e9c2"; } .fe-server:before { content: "\e9c3"; } .fe-settings:before { content: "\e9c4"; } .fe-share:before { content: "\e9c5"; } .fe-share-2:before { content: "\e9c6"; } .fe-shield:before { content: "\e9c7"; } .fe-shield-off:before { content: "\e9c8"; } .fe-shopping-bag:before { content: "\e9c9"; } .fe-shopping-cart:before { content: "\e9ca"; } .fe-shuffle:before { content: "\e9cb"; } .fe-sidebar:before { content: "\e9cc"; } .fe-skip-back:before { content: "\e9cd"; } .fe-skip-forward:before { content: "\e9ce"; } .fe-slack:before { content: "\e9cf"; } .fe-slash:before { content: "\e9d0"; } .fe-sliders:before { content: "\e9d1"; } .fe-smartphone:before { content: "\e9d2"; } .fe-speaker:before { content: "\e9d3"; } .fe-square:before { content: "\e9d4"; } .fe-star:before { content: "\e9d5"; } .fe-stop-circle:before { content: "\e9d6"; } .fe-sun:before { content: "\e9d7"; } .fe-sunrise:before { content: "\e9d8"; } .fe-sunset:before { content: "\e9d9"; } .fe-tablet:before { content: "\e9da"; } .fe-tag:before { content: "\e9db"; } .fe-target:before { content: "\e9dc"; } .fe-terminal:before { content: "\e9dd"; } .fe-thermometer:before { content: "\e9de"; } .fe-thumbs-down:before { content: "\e9df"; } .fe-thumbs-up:before { content: "\e9e0"; } .fe-toggle-left:before { content: "\e9e1"; } .fe-toggle-right:before { content: "\e9e2"; } .fe-trash:before { content: "\e9e3"; } .fe-trash-2:before { content: "\e9e4"; } .fe-trending-down:before { content: "\e9e5"; } .fe-trending-up:before { content: "\e9e6"; } .fe-triangle:before { content: "\e9e7"; } .fe-truck:before { content: "\e9e8"; } .fe-tv:before { content: "\e9e9"; } .fe-twitter:before { content: "\e9ea"; } .fe-type:before { content: "\e9eb"; } .fe-umbrella:before { content: "\e9ec"; } .fe-underline:before { content: "\e9ed"; } .fe-unlock:before { content: "\e9ee"; } .fe-upload:before { content: "\e9ef"; } .fe-upload-cloud:before { content: "\e9f0"; } .fe-user:before { content: "\e9f1"; } .fe-user-check:before { content: "\e9f2"; } .fe-user-minus:before { content: "\e9f3"; } .fe-user-plus:before { content: "\e9f4"; } .fe-user-x:before { content: "\e9f5"; } .fe-users:before { content: "\e9f6"; } .fe-video:before { content: "\e9f7"; } .fe-video-off:before { content: "\e9f8"; } .fe-voicemail:before { content: "\e9f9"; } .fe-volume:before { content: "\e9fa"; } .fe-volume-1:before { content: "\e9fb"; } .fe-volume-2:before { content: "\e9fc"; } .fe-volume-x:before { content: "\e9fd"; } .fe-watch:before { content: "\e9fe"; } .fe-wifi:before { content: "\e9ff"; } .fe-wifi-off:before { content: "\ea00"; } .fe-wind:before { content: "\ea01"; } .fe-x:before { content: "\ea02"; } .fe-x-circle:before { content: "\ea03"; } .fe-x-square:before { content: "\ea04"; } .fe-youtube:before { content: "\ea05"; } .fe-zap:before { content: "\ea06"; } .fe-zap-off:before { content: "\ea07"; } .fe-zoom-in:before { content: "\ea08"; } .fe-zoom-out:before { content: "\ea09"; } ================================================ FILE: routes/DashboardRoutes.js ================================================ import { v4 as uuid } from 'uuid'; /** * All Dashboard Routes * * Understanding name/value pairs for Dashboard routes * * Applicable for main/root/level 1 routes * icon : String - It's only for main menu or you can consider 1st level menu item to specify icon name. * * Applicable for main/root/level 1 and subitems routes * id : Number - You can use uuid() as value to generate unique ID using uuid library, you can also assign constant unique ID for react dynamic objects. * title : String - If menu contains childern use title to provide main menu name. * badge : String - (Optional - Default - '') If you specify badge value it will be displayed beside the menu title or menu item. * badgecolor : String - (Optional - Default - 'primary' ) - Used to specify badge background color. * * Applicable for subitems / children items routes * name : String - If it's menu item in which you are specifiying link, use name ( don't use title for that ) * children : Array - Use to specify submenu items * * Used to segrigate menu groups * grouptitle : Boolean - (Optional - Default - false ) If you want to group menu items you can use grouptitle = true, * ( Use title : value to specify group title e.g. COMPONENTS , DOCUMENTATION that we did here. ) * */ export const DashboardMenu = [ { id: uuid(), title: 'Dashboard', icon: 'home', link: '/' }, { id: uuid(), title: 'LAYOUTS & PAGES', grouptitle: true }, { id: uuid(), title: 'Pages', icon: 'layers', children: [ { id: uuid(), link: '/pages/profile', name: 'Profile' }, { id: uuid(), link: '/pages/settings', name: 'Settings'}, { id: uuid(), link: '/pages/billing', name: 'Billing' }, { id: uuid(), link: '/pages/pricing', name: 'Pricing'}, { id: uuid(), link: '/not-found', name: '404 Error' } ] }, { id: uuid(), title: 'Authentication', icon: 'lock', children: [ { id: uuid(), link: '/authentication/sign-in', name: 'Sign In' }, { id: uuid(), link: '/authentication/sign-up', name: 'Sign Up' }, { id: uuid(), link: '/authentication/forget-password', name: 'Forget Password'} ] }, { id: uuid(), title: 'Layouts', icon: 'layout', link: '/layout-vertical' }, { id: uuid(), title: 'UI COMPONENTS', grouptitle: true }, { id: uuid(), title: 'Components', icon: 'monitor', children: [ { id: uuid(), link: '/components/accordions', name: 'Accordions' }, { id: uuid(), link: '/components/alerts', name: 'Alerts' }, { id: uuid(), link: '/components/badges', name: 'Badges' }, { id: uuid(), link: '/components/breadcrumbs', name: 'Breadcrumbs' }, { id: uuid(), link: '/components/buttons', name: 'Buttons' }, { id: uuid(), link: '/components/button-group', name: 'ButtonGroup' }, { id: uuid(), link: '/components/cards', name: 'Cards' }, { id: uuid(), link: '/components/carousels', name: 'Carousel' }, { id: uuid(), link: '/components/close-button', name: 'Close Button' }, { id: uuid(), link: '/components/collapse', name: 'Collapse' }, { id: uuid(), link: '/components/dropdowns', name: 'Dropdowns' }, { id: uuid(), link: '/components/list-group', name: 'Listgroup' }, { id: uuid(), link: '/components/modal', name: 'Modal' }, { id: uuid(), link: '/components/navs', name: 'Navs' }, { id: uuid(), link: '/components/navbar', name: 'Navbar' }, { id: uuid(), link: '/components/offcanvas', name: 'Offcanvas' }, { id: uuid(), link: '/components/overlays', name: 'Overlays' }, { id: uuid(), link: '/components/pagination', name: 'Pagination' }, { id: uuid(), link: '/components/popovers', name: 'Popovers' }, { id: uuid(), link: '/components/progress', name: 'Progress' }, { id: uuid(), link: '/components/spinners', name: 'Spinners' }, { id: uuid(), link: '/components/tables', name: 'Tables' }, { id: uuid(), link: '/components/toasts', name: 'Toasts' }, { id: uuid(), link: '/components/tooltips', name: 'Tooltips' } ] }, { id: uuid(), title: 'Menu Level', icon: 'corner-left-down', children: [ { id: uuid(), link: '#', title: 'Two Level', children: [ { id: uuid(), link: '#', name: 'NavItem 1'}, { id: uuid(), link: '#', name: 'NavItem 2' } ] }, { id: uuid(), link: '#', title: 'Three Level', children: [ { id: uuid(), link: '#', title: 'NavItem 1', children: [ { id: uuid(), link: '#', name: 'NavChildItem 1'}, { id: uuid(), link: '#', name: 'NavChildItem 2'} ] }, { id: uuid(), link: '#', name: 'NavItem 2' } ] } ] }, { id: uuid(), title: 'Documentation', grouptitle: true }, { id: uuid(), title: 'Docs', icon: 'clipboard', link: '/documentation' }, { id: uuid(), title: 'Changelog', icon: 'git-pull-request', link: '/changelog' }, { id: uuid(), title: 'Download', icon: 'download', link: 'https://codescandy.gumroad.com/l/dashui-nextjs' } ]; export default DashboardMenu; ================================================ FILE: styles/_user-variables.scss ================================================ // // user-variables.scss // Use this to overwrite Bootstrap and Dashui variables // // Example of a variable override to change Dashui primary color // Remove the "//" to comment it in and see it in action! // $primary: #000; ================================================ FILE: styles/_user.scss ================================================ // // user.scss // Use this to write your custom SCSS // ================================================ FILE: styles/theme/_theme.scss ================================================ // Components @import "components/_navbar-vertical.scss"; @import "components/_navbar.scss"; @import "components/_layout.scss"; @import "components/_nav.scss"; @import "components/_scrollspy.scss"; @import "components/_reboot.scss"; @import "components/_docs.scss"; @import "components/_card.scss"; @import "components/_avatar.scss"; @import "components/_button.scss"; @import "components/_social-button.scss"; @import "components/_dropdown.scss"; @import "components/_forms.scss"; @import "components/_badge.scss"; @import "components/_table.scss"; @import "components/_sidenav.scss"; // Vendors @import "vendor/apexChart/_apexchart.scss"; @import "vendor/prismJs/_prism.scss"; ================================================ FILE: styles/theme/_utilities.scss ================================================ // // utilities.scss // Extended from Bootstrap // @import "~bootstrap/scss/functions"; @import "~bootstrap/scss/variables"; @import "~bootstrap/scss/variables-dark"; @import "~bootstrap/scss/maps"; @import "~bootstrap/scss/mixins"; @import "~bootstrap/scss/utilities"; $utilities: () !default; $utilities: map-merge( $utilities, ( "font-weight": ( property: font-weight, class: fw, values: ( light: $font-weight-light, lighter: $font-weight-lighter, normal: $font-weight-normal, semi-bold: $font-weight-semi-bold, medium: $font-weight-medium, bold: $font-weight-bold, bolder: $font-weight-bolder, ), ), "line-height": ( property: line-height, class: lh, values: ( 1: 1, 2: 1.5, 3: 1.8, sm: $line-height-sm, base: $line-height-base, md: $line-height-md, lg: $line-height-lg, ), ), "letter-spacing": ( property: letter-spacing, class: ls, values: ( xs: $letter-spacing-xs, sm: $letter-spacing-sm, base: $letter-spacing-base, md: $letter-spacing-md, lg: $letter-spacing-lg, xl: $letter-spacing-xl, xxl: $letter-spacing-xxl, ), ), "width": ( property: width, responsive: true, class: w, values: ( 15: 15%, 25: 25%, 30: 30%, 40: 40%, 50: 50%, 65: 65%, 75: 75%, 100: 100%, auto: auto, ), ), "max-width": ( property: max-width, responsive: true, class: mw, values: ( 25: 25%, 30: 30%, 40: 40%, 50: 50%, 65: 65%, 75: 75%, 100: 100%, auto: auto, ), ), "viewport-width": ( property: width, responsive: true, class: vw, values: ( 100: 100vw, ), ), "min-viewport-width": ( property: min-width, responsive: true, class: min-vw, values: ( 100: 100vw, ), ), "height": ( property: height, responsive: true, class: h, values: ( 25: 25%, 30: 30%, 40: 40%, 50: 50%, 65: 65%, 75: 75%, 100: 100%, auto: auto, ), ), "max-height": ( property: max-height, responsive: true, class: mh, values: ( 25: 25%, 30: 30%, 40: 40%, 50: 50%, 65: 65%, 75: 75%, 100: 100%, auto: auto, ), ), "viewport-height": ( property: height, responsive: true, class: vh, values: ( 100: 100vh, ), ), "min-viewport-height": ( property: min-height, responsive: true, class: min-vh, values: ( 100: 100vh, ), ), "z-index": ( property: z-index, class: z, values: ( 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, ), ), "color": ( property: color, class: text, values: map-merge( $theme-colors, ( "gray-100": $gray-100, "gray-200": $gray-200, "gray-300": $gray-300, "gray-400": $gray-400, "gray-500": $gray-500, "gray-600": $gray-600, "gray-700": $gray-700, "gray-800": $gray-800, "gray-900": $gray-900, "white": $white, "body": $body-color, "muted": $text-muted, "black-50": rgba($black, 0.5), "white-50": rgba($white, 0.5), "reset": inherit, ) ), ), // scss-docs-end utils-color // scss-docs-start utils-bg-color "background-color": ( property: background-color, class: bg, values: map-merge( $theme-colors, ( "gray-100": $gray-100, "gray-200": $gray-200, "gray-300": $gray-300, "gray-400": $gray-400, "gray-500": $gray-500, "gray-600": $gray-600, "gray-700": $gray-700, "gray-800": $gray-800, "gray-900": $gray-900, "body": $body-bg, "white": $white, "transparent": transparent, ) ), ), ) ); @import "~bootstrap/scss/utilities/api"; // Utilities @import "utilities/_background.scss"; @import "utilities/_shadows.scss"; @import "utilities/_position.scss"; @import "utilities/_border.scss"; @import "utilities/_icon-shape.scss"; @import "utilities/_text.scss"; ================================================ FILE: styles/theme/_variables.scss ================================================ $white: #fff !default; $gray-100: #f1f5f9 !default; $gray-200: #f4f6f8 !default; $gray-300: #dfe3e8 !default; $gray-400: #c4cdd5 !default; $gray-500: #919eab !default; $gray-600: #637381 !default; $gray-700: #454f5b !default; $gray-800: #212b36 !default; $gray-900: #161c24 !default; $black: #000 !default; $red: #dc3545 !default; $orange: #fd7e14 !default; $yellow: #f59e0b !default; $green: #198754 !default; $teal: #20c997 !default; $cyan: #0ea5e9 !default; $primary: #624bff !default; $secondary: $gray-600 !default; $success: $green !default; $info: $cyan !default; $warning: $yellow !default; $danger: $red !default; $light: $gray-100 !default; $dark: $gray-800 !default; // Light color $light-primary: #e0dcfe !default; // NEW $light-secondary: #e9ecef !default; // NEW $light-success: #eaf6ec !default; // NEW $light-danger: #fbebec !default; // NEW $light-warning: #fff3cd !default; // NEW $light-info: #e7fafe !default; // NEW $light-dark: #d1cfd8 !default; // NEW // Dark color $dark-primary: #593cc1 !default; // NEW $dark-secondary: #5c596d !default; // NEW $dark-success: #139a74 !default; // NEW $dark-danger: #ae302e !default; // NEW $dark-warning: #c28135 !default; // NEW $dark-info: #51a0c2 !default; // NEW $theme-colors: () !default; $theme-colors: ( "primary": $primary, "secondary": $secondary, "success": $success, "info": $info, "warning": $warning, "danger": $danger, "light": $light, "dark": $dark, "white": $white, "light-primary": $light-primary, "light-danger": $light-danger, "light-info": $light-info, "light-warning": $light-warning, "light-secondary": $light-secondary, "light-success": $light-success, "light-dark": $light-dark, "dark-primary": $dark-primary, "dark-warning": $dark-warning, "dark-info": $dark-info, "dark-danger": $dark-danger, "dark-success": $dark-success, "dark-secondary": $dark-secondary, ); // Body // // Settings for the `` element. $body-color: $gray-600 !default; // Typography // Font, line-height, and color for body text, headings, and more. // stylelint-disable value-keyword-case $font-family-sans-serif: "Inter", "sans-serif" !default; $font-family-base: $font-family-sans-serif !default; $font-family-heading: $font-family-sans-serif; // stylelint-enable value-keyword-case $font-size-base: 0.9375rem !default; // Assumes the browser default, typically `15px` $font-size-lg: $font-size-base * 1.25 !default; $font-size-sm: $font-size-base * 0.875 !default; $font-weight-lighter: lighter !default; $font-weight-light: 300 !default; $font-weight-normal: 400 !default; $font-weight-medium: 500 !default; $font-weight-semi-bold: 500 !default; $font-weight-bold: 700 !default; $font-weight-bolder: bolder !default; $font-weight-base: $font-weight-normal !default; $line-height-base: 1.5 !default; $link-hover-decoration: none !default; $h1-font-size: 2.25rem !default; $h2-font-size: 1.875rem !default; $h3-font-size: 1.5rem !default; $h4-font-size: 1.125rem !default; $h5-font-size: 0.938rem !default; $h6-font-size: 0.75rem !default; $headings-color: $gray-800 !default; // Line height $line-height-base: 1.6 !default; $line-height-1: 1 !default; $line-height-2: 2 !default; $line-height-sm: 1.2 !default; $line-height-md: 1.6 !default; $line-height-lg: 1.8 !default; // Spacing // // Control the default styling of most Bootstrap elements by modifying these // variables. Mostly focused on spacing. // You can add more entries to the $spacers map, should you need more variation. $spacer: 1rem !default; $spacers: () !default; // stylelint-disable-next-line scss/dollar-variable-default $spacers: map-merge( ( 0: 0, 1: ( $spacer * 0.25, ), // 4px 2: ( $spacer * 0.5, ), // 8px 3: ( $spacer * 1, ), // 16px 4: ( $spacer * 1.25, ), // 20px 5: ( $spacer * 1.5, ), // 24px 6: ( $spacer * 2, ), // 32px 7: ( $spacer * 2.5, ), // 40px 8: ( $spacer * 3, ), // 48px 9: ( $spacer * 3.5, ), // 56px 10: ( $spacer * 4, ), // 64px 11: ( $spacer * 4.5, ), // 72px 12: ( $spacer * 5, ), // 80px 13: ( $spacer * 5.5, ), // 88px 14: ( $spacer * 6, ), // 96px 15: ( $spacer * 6.5, ), // 104px 16: ( $spacer * 7, ), // 112px 17: ( $spacer * 7.5, ), // 120px 18: ( $spacer * 8, ), // 128px 19: ( $spacer * 8.5, ), // 136px 20: ( $spacer * 9, ), // 144px 21: ( $spacer * 9.5, ), // 152px 22: ( $spacer * 10, ), // 160px 23: ( $spacer * 12, ), // 288px ), $spacers ); $border-radius: 0.375rem !default; $border-radius-lg: 0.5rem !default; $border-radius-sm: 0.2rem !default; $smooth-shadow-sm: 0px 2px 4px rgba(0, 0, 20, 0.08), 0px 1px 2px rgba(0, 0, 20, 0.08) !default; $smooth-shadow-md: 0 1px 2px rgba(21, 30, 40, 0.07), 0 2px 4px rgba(21, 30, 40, 0.07), 0 4px 8px rgba(21, 30, 40, 0.07), 0 8px 16px rgba(21, 30, 40, 0.07), 0 16px 32px rgba(21, 30, 40, 0.07), 0 32px 64px rgba(21, 30, 40, 0.07) !default; $smooth-shadow-lg: 0 1px 1px rgba(21, 30, 40, 0.11), 0 2px 2px rgba(21, 30, 40, 0.11), 0 4px 4px rgba(21, 30, 40, 0.11), 0 8px 8px rgba(21, 30, 40, 0.11), 0 16px 16px rgba(21, 30, 40, 0.11), 0 32px 32px rgba(21, 30, 40, 0.11) !default; // Buttons + Forms // // Shared variables that are reassigned to `$input-` and `$btn-` specific variables. $input-btn-padding-y: 0.5rem !default; $input-btn-padding-x: 1rem !default; $input-btn-font-family: null !default; $btn-font-weight: $font-weight-medium !default; $form-label-color: $gray-800 !default; // Avatar $avatar-size-xs: 1.5rem !default; $avatar-size-sm: 2rem !default; $avatar-size-md: 2.5rem !default; $avatar-size-lg: 3.5rem !default; $avatar-size-xl: 5rem !default; $avatar-size-xxl: 7.5rem !default; // Icon $icon-size-xxs: 0.875rem !default; $icon-size-xs: 1rem !default; $icon-size-sm: 1.5rem !default; $icon-size-md: 2.5rem !default; $icon-size-lg: 3rem !default; $icon-size-xl: 3.5rem !default; $icon-size-xxl: 4rem !default; $enable-responsive-font-sizes: false !default; // Position // Define the edge positioning anchors of the position utilities. $position-values: ( 0: 0, 1: 1, 2: 2, 50: 50%, 100: 100%, ) !default; // Negative margins $enable-negative-margins: true !default; // Link Decoration $link-decoration: none !default; // grid gutter space $grid-gutter-width: 1.5rem !default; // Cards $card-spacer-y: 1.25rem !default; $card-spacer-x: 1.25rem !default; $card-inner-border-radius: 0.5rem !default; $card-title-spacer-y: $spacer * 1.5 !default; // Letter Spacing $letter-spacing-sm: -0.04em; $letter-spacing-xs: -0.08em; $letter-spacing-base: 0em; $letter-spacing-md: 0.1em; $letter-spacing-lg: 0.15em; $letter-spacing-xl: 0.2em; $letter-spacing-xxl: 0.25em; // Tables // // Customizes the `.table` component with basic values, each used across all table variations. $table-head-color: $gray-700 !default; $table-cell-padding-y: 0.75rem !default; $table-cell-padding-x: 1.5rem !default; $table-cell-padding-y-sm: 0.3rem !default; $table-cell-padding-x-sm: 0.6rem !default; $table-hover-bg: rgba($gray-100, 0.7) !default; // table striped $table-striped-bg-factor: 1 !default; $table-striped-bg: rgba($gray-100, $table-striped-bg-factor) !default; // table active $table-active-bg-factor: 1 !default; $table-active-bg: rgba($gray-100, $table-active-bg-factor) !default; $table-group-separator-color: $gray-200 !default; ================================================ FILE: styles/theme/components/_avatar.scss ================================================ // Avatar .avatar { position: relative; display: inline-block; width: 3rem; height: 3rem; } // Avatar Size .avatar-xs { width: $avatar-size-xs; height: $avatar-size-xs; } .avatar-sm { width: $avatar-size-sm; height: $avatar-size-sm; } .avatar-md { width: $avatar-size-md; height: $avatar-size-md; } .avatar-lg { width: $avatar-size-lg; height: $avatar-size-lg; } .avatar-xl { width: $avatar-size-xl; height: $avatar-size-xl; } .avatar-xxl { width: $avatar-size-xxl; height: $avatar-size-xxl; } // Avatar img .avatar img { width: 100%; height: 100%; -o-object-fit: cover; object-fit: cover; } .avatar-indicators { position: relative; } .avatar-indicators:before { content: ""; position: absolute; bottom: 0px; right: 5%; width: 30%; height: 30%; border-radius: 50%; border: 2px solid $white; display: table; } .avatar-xxl.avatar-indicators:before { bottom: 5px; right: 17%; width: 16%; height: 16%; } // Avatar indicators .avatar-offline:before { background-color: $gray-400; } .avatar-online:before { background-color: $success; } .avatar-away:before { background-color: $warning; } .avatar-busy:before { background-color: $danger; } .avatar-info:before { background-color: $info; } // Avatar intials .avatar-initials { display: -ms-flexbox; display: flex; -ms-flex-pack: center; justify-content: center; -ms-flex-align: center; align-items: center; width: 100%; height: 100%; pointer-events: none; text-transform: uppercase; } // Color varient .avatar-primary .avatar-initials { color: $white; background-color: $primary; } .avatar-secondary .avatar-initials { color: $white; background-color: $secondary; } .avatar-success .avatar-initials { color: $white; background-color: $success; } .avatar-warning .avatar-initials { color: $white; background-color: $warning; } .avatar-info .avatar-initials { color: $white; background-color: $info; } .avatar-danger .avatar-initials { color: $white; background-color: $danger; } .avatar-light .avatar-initials { color: $white; background-color: $light; } .avatar-dark .avatar-initials { color: $white; background-color: $dark; } // Avatar Group .avatar-group .avatar+.avatar { margin-left: -1.2rem; } .avatar-group .avatar:hover { z-index: 2; } // Avatar border .avatar-group img, .avatar-group .avatar .avatar-initials { border: 2px solid $white; } // Image aspect ratio 4:3 // .img-4by3-xxl { // width: $img-4by3-xxl; // } // .img-4by3-xl { // width: $img-4by3-xl; // } // .img-4by3-lg { // width: $img-4by3-lg; // } // .img-4by3-md { // width: $img-4by3-md; // } // .img-4by3-sm { // width: $img-4by3-sm; // } // .img-4by3-xs { // width: $img-4by3-xs; // } ================================================ FILE: styles/theme/components/_badge.scss ================================================ // // Extended from bootstrap // // Badge dot .badge-dot{ font-size: 0; vertical-align: middle; padding: 0; border-radius: 50%; line-height: 1; height: .5rem; min-height: .5rem; width: .5rem; min-width: .5rem; display: inline-block !important; } ================================================ FILE: styles/theme/components/_button.scss ================================================ // // Extended from bootstrap // // btn outline white .btn-outline-white { border-color: $gray-300; color: $body-color; &:hover, &:focus { background-color: $gray-100; border-color: $gray-400; color: $body-color; } &.active { background-color: $gray-100; border-color: $gray-400; color: $body-color; } } // btn icon .btn-icon { position: relative; display: -ms-inline-flexbox; display: inline-flex; -ms-flex-negative: 0; flex-shrink: 0; -ms-flex-pack: center; justify-content: center; -ms-flex-align: center; align-items: center; font-size: 0.92969rem; font-weight: 400; width: 2.5rem; height: 2.5rem; padding: 0; } .btn-icon.btn-xs { font-size: 0.75rem; width: 1.53125rem; height: 1.53125rem; } .btn-icon.btn-sm { font-size: 0.875rem; width: 2.1875rem; height: 2.1875rem; } .btn-icon.btn-lg { font-size: 1rem; width: 3.36875rem; height: 3.36875rem; } .btn-float-button { position: fixed; bottom: 0; right: 0; } ================================================ FILE: styles/theme/components/_card.scss ================================================ // // Extended from bootstrap // // card .card{ box-shadow: $smooth-shadow-sm; border: 0px; border-radius: $border-radius-lg; } ================================================ FILE: styles/theme/components/_docs.scss ================================================ // Copy Button .copy-button { cursor: pointer; border: 0; font-size: 0.875rem; line-height: 1.125rem; text-transform: capitalize; font-weight: 600; padding: 0.25rem 0.5rem; color: $primary; background-color: $white; position: absolute; top: 0.875rem; right: 0.625rem; border-radius: 0.25rem; border: 1px solid $primary; &:hover { outline: 0; background-color: $white; color: $primary; } &:focus { outline: 0; background-color: $white; color: $primary; } &:active { outline: 0; background-color: $white; color: $primary; } } ================================================ FILE: styles/theme/components/_dropdown.scss ================================================ // // Extended from bootstrap dropdown // // Dropdown menu .dropdown-menu { font-size: 0.875rem; line-height: 1.375rem; color: $gray-700; border: none; box-shadow: 0px 0px 1px rgba(60, 66, 87, 0.05), 0px 3px 6px rgba(60, 66, 87, 0.1), 0px 9px 24px rgba(60, 66, 87, 0.2); border-radius: 0.5rem; z-index: 1040; } // Dropdown header .dropdown-header { color: $gray-500; padding: 0.25rem 1.2rem; margin-bottom: 0.2rem; text-transform: uppercase; letter-spacing: 1px; font-size: 0.6875rem; font-weight: 500; } // Dropdown text .dropdown-text { padding: 0.25rem 1.2rem; color: $gray-500; font-size: 0.75rem; line-height: 1.4; } // Dropdown item .dropdown-item { font-size: 0.875rem; line-height: 28px; font-weight: 500; color: $gray-900; padding: 0.125rem 1.2rem; &:hover { color: $primary; text-decoration: none; background-color: $light; border-radius: 0rem; } &.active { color: $primary; text-decoration: none; background-color: $light; } &:last-child { border-bottom: 0rem; } &:focus { color: $primary; text-decoration: none; background-color: $gray-300; border-radius: 0rem; color: $primary; text-decoration: none; background-color: $light; border-radius: 0rem; .dropdown-toggle { &::after { color: $primary; } } &:hover { color: $primary; text-decoration: none; background-color: $light; border-radius: 0rem; } &:active { color: $black; text-decoration: none; background-color: $light; border-radius: 0.25rem; } } &:hover.dropdown-toggle { &::after { color: $primary; } } &:hover { color: $primary; text-decoration: none; background-color: $light; border-radius: 0px; } } // Dropdown menu sizes .dropdown-menu-xs { min-width: 8rem !important; border-radius: 0.5rem; } .dropdown-menu-md { min-width: 17rem !important; border-radius: 0.5rem; } .dropdown-menu-lg { min-width: 22rem !important; border-radius: 0.5rem; } .dropdown-menu-xl { min-width: 24rem !important; border-radius: 0.5rem; } // Dropdown toggle arrow .dropdown-toggle::after { margin-left: 0.255em; vertical-align: 0.255em; font-family: "Material Design Icons" !important; content: "\f0140"; border-top: 0rem; border-right: 0rem; border-bottom: 0; border-left: 0rem; float: right; } // Dropup .dropup .dropdown-toggle::after { display: inline-block; margin-left: 0.255em; vertical-align: 0.255em; font-family: "Material Design Icons" !important; content: "\f0143"; border-top: 0rem; border-right: 0rem; border-bottom: 0; border-left: 0rem; } // dropend .dropend .dropdown-toggle::after { display: inline-block; margin-left: 0.255em; vertical-align: 0.255em; font-family: "Material Design Icons" !important; content: "\f0142"; border-top: 0rem; border-right: 0rem; border-bottom: 0; border-left: 0rem; } // dropstart .dropstart .dropdown-toggle::before { display: inline-block; margin-right: 0.255em; font-family: "Material Design Icons" !important; content: "\f0141"; border-top: 0rem; border-right: 0rem; border-bottom: 0; border-left: 0rem; } // Dropdown item icon .dropdown-item-icon { display: inline-block; opacity: 0.7; font-size: 1rem; width: 1.5rem; color: $gray-600; } // Responsive breakpoints for dropdown @media (min-width: 990px) { .dropstart-lg { position: relative; .dropdown-menu { top: 0; right: 100%; margin-top: 0; margin-right: 0.125rem; } } .dropstart-toggle-none.dropstart .dropdown-toggle::before { display: none; } } // Toggle none .dropdown-toggle-none .dropdown-toggle::before { display: none; } // Hover dropdown submenu .dropdown-animation.dropdown-submenu { .dropdown-menu { top: 0; right: 100%; margin-top: 0; margin-right: 0.125rem; } .dropdown-menu { display: block; visibility: hidden; opacity: 0; -webkit-transform: translateY(20px); -ms-transform: translateY(20px); transform: translateY(20px); -webkit-transition: all 0.3s ease-in; -o-transition: all 0.3s ease-in; transition: all 0.3s ease-in; } &:hover { > .dropdown-menu { -webkit-transform: scaleY(1); -ms-transform: scaleY(1); transform: scaleY(1); opacity: 1; visibility: visible; } } } ================================================ FILE: styles/theme/components/_forms.scss ================================================ // // Extended from bootstrap // // form .form-control-flush { border-top: 0px; border-left: 0px; border-right: 0px; padding-left: 0px; border-radius: 0px; &:focus { color: #495057; background-color: #fff; border-bottom-color: $gray-400; outline: 0; box-shadow: none; } } ================================================ FILE: styles/theme/components/_layout.scss ================================================ // layouts // Header .header { .navbar { padding: 0.625rem 1.5rem; #nav-toggle { font-size: 20px; color: $gray-700; line-height: 0.5; } .navbar-nav { @media (max-width: 576px) { flex-direction: row; } @media (min-width: 576px) and (max-width: 767.98px) { flex-direction: row; } @media (min-width: 768px) and (max-width: 991.98px) { flex-direction: row; } } } } // Layouts // Dashboard wrapper #db-wrapper { overflow-x: hidden; display: flex; } // Dashboard page content #page-content { min-height: 100vh; min-width: 100vw; margin-left: 15.625rem; -webkit-transition: margin 0.25s ease-out; -moz-transition: margin 0.25s ease-out; -o-transition: margin 0.25s ease-out; transition: margin 0.25s ease-out; } // Dashboard navbar vertical toggled #db-wrapper.toggled .navbar-vertical { margin-left: 0; } // Dashboard page content toggled #db-wrapper.toggled #page-content { margin-left: 0; } #db-wrapper.toggled #page-content .inner-wrapper-sticky { left:20px !important; } #db-wrapper.toggled #page-content .inner-wrapper-sticky .setting-nav { width: 354px; @media(max-width: 1024px){ width: 204px; } } // Media query for layout @media (max-width: 576px) { #page-content { margin-left: 0rem; } #db-wrapper.toggled { #page-content { margin-left: 15.6875rem; } } } @media (min-width: 768px) { .navbar-vertical { margin-left: 0rem; } #page-content { min-width: 0rem; width: 100%; } #db-wrapper.toggled .navbar-vertical { margin-left: -16rem; } } @media (min-width: 576px) and (max-width: 767.98px) { #page-content { margin-left: 0rem; } #db-wrapper.toggled { #page-content { margin-left: 15.6875rem; } } } ================================================ FILE: styles/theme/components/_nav.scss ================================================ // Bottom line nav .nav-line-bottom { border-bottom: 1px solid $gray-200; .nav-item { .nav-link { color: $gray-600; border-radius: 0px; margin-bottom: -1px; padding: .875rem 1.25rem; font-weight: 500; @media (max-width: 576px) { padding: 0.8rem; } &.active { color: $primary; background-color: transparent; border-bottom: 1px solid $primary; @media (max-width: 576px) { padding: 0.747rem; } } &:hover { color: $primary; background-color: transparent; border-bottom: 1px solid $primary; } .badge { line-height: 1.4; } } } @media (max-width: 576px) { overflow-x: scroll; flex-wrap: nowrap; overflow-y: hidden; &::-webkit-scrollbar { display: none; } } } // Nav line bottom tab (.nav-lb-tab) .nav-lb-tab { border-bottom: 1px solid $gray-300; @media (max-width: 576px) { overflow-x: scroll; flex-wrap: nowrap; overflow-y: hidden; &::-webkit-scrollbar { display: none; } } .nav-item { margin: 0rem 1.5rem; .nav-link { border-bottom: 2px solid transparent; border-radius: 0px; padding: 16px 0px; margin-bottom: -1px; font-weight: 500; color: $gray-600; white-space: nowrap; &.active { background-color: transparent; border-bottom: 2px solid $primary; color: $primary; } &:hover { background-color: transparent; border-bottom: 2px solid $primary; color: $primary; } } } } // Nav line top tab. (.nav-lt-tab) .nav-lt-tab { border-top: 1px solid $gray-300; @media (max-width: 768px) { overflow-x: scroll; flex-wrap: nowrap; overflow-y: hidden; &::-webkit-scrollbar { display: none; } } .nav-item { margin: 0rem 1rem; margin-top: -0.0625rem; .nav-link { border-top: 2px solid transparent; border-radius: 0px; padding: 1rem 0rem; font-weight: 500; color: $gray-600; &.active { background-color: transparent; border-top: 2px solid $primary; color: $primary; } &:hover { background-color: transparent; border-top: 2px solid $primary; color: $primary; } } } } // nav email .nav-email-list { .nav-item { .nav-link { color: $gray-600; padding: 6px 10px; border-radius: 8px; margin-bottom: 4px; font-weight: 500; &:hover { background-color: $gray-100; color: $primary; } &.active { background-color: $gray-100; color: $primary; } } } .nav-text { font-size: 12px; text-transform: uppercase; letter-spacing: 1px; font-weight: 500; } } ================================================ FILE: styles/theme/components/_navbar-vertical.scss ================================================ // Navbar Vertcial .navbar-vertical { margin-left: -17rem; display: block; position: fixed; top: 0; bottom: 0; width: 100%; max-width: 250px; padding: 0rem; background-color: $gray-800; border-right: 1px solid $gray-800; -webkit-transition: margin 0.25s ease-out; -moz-transition: margin 0.25s ease-out; -o-transition: margin 0.25s ease-out; transition: margin 0.25s ease-out; .slimScrollDiv { height: 100% !important; overflow-y: auto; } .nav-scroller { height: 100% !important; overflow-y: auto; } .navbar-brand { padding: 1rem 1.5rem 1.5rem; margin-right: 0px; display: block; img { height: 1.875rem; } } .navbar-heading { color: $gray-700; padding: 1rem 1.5rem; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.08rem; font-weight: 700; } .navbar-nav { .nav-item { .nav-link { padding: 0.5rem 1.5rem; display: flex; align-items: center; color: $gray-500; font-weight: 500; line-height: 1.8; -webkit-transition: all 0.5s; white-space: nowrap; transition: all 0.5s; &:hover { color: $gray-200; } &:hover .nav-icon { color: $gray-200; opacity: 1; } &.active { color: $gray-200; } &.active .nav-icon { color: $gray-200; opacity: 1; } } .nav-link[data-bs-toggle="collapse"]{ position: relative; &:after { display: block; content: ""; background: url(../../../public/fonts/feather-icons/icons/chevron-down.svg); font-family: Feather; margin-left: auto; transition: 0.5s ease; position: absolute; right: 1.5rem; height: 24px; width: 24px; -webkit-filter: brightness(0) invert(1); filter: brightness(0) invert(1); transform: scale(0.7); } } } .nav-icon { opacity: 0.6; font-size: .875rem; -webkit-transition: all 0.5s; transition: all 0.5s; } .sub-nav-icon{ font-size: .35rem; margin-right: .5rem; } .nav { .nav-item { .nav-link { color: $gray-500; padding: 0.25rem 3rem; &:hover { color: $white; } &.active { color: $white; } } .nav { .nav-item { .nav-link { color: $gray-500; padding: 0.25rem 3.5rem; &:hover { color: $white; } &.active { color: $white; } } .nav { .nav-item { .nav-link { color: $gray-500; padding: 0.25rem 4.2rem; &:hover { color: $white; } &.active { color: $white; } } } } } } } } } } .collapse.in { display: block; } ================================================ FILE: styles/theme/components/_navbar.scss ================================================ // navbar .navbar-classic { background-color: #fff; box-shadow: $smooth-shadow-sm; .navbar-right-wrap { .list-group-item { padding: 1rem 1.25rem; } } .nav-badge { position: absolute; top: -9px; right: 3px; } } // Responsive breakpoints @media (min-width: 1200px) { .navbar-classic { .dropdown-menu-end { right: 0; left: auto; } .dropdown-menu-start { right: auto; left: 0; } .dropdown-menu { display: block; visibility: hidden; opacity: 0; -webkit-transform: translateY(20px); -ms-transform: translateY(20px); transform: translateY(20px); -webkit-transition: all 0.3s ease-in; -o-transition: all 0.3s ease-in; transition: all 0.3s ease-in; } .dropdown { &:hover { > .dropdown-menu { -webkit-transform: scaleY(1); -ms-transform: scaleY(1); transform: scaleY(1); opacity: 1; visibility: visible; } } } .dropdown-submenu { &:hover { > .dropdown-menu { -webkit-transform: scaleY(1); -ms-transform: scaleY(1); transform: scaleY(1); opacity: 1; visibility: visible; } } } } } @media (max-width: 992px) { .navbar-classic { .navbar-nav { .dropdown-menu { margin: 0px; .dropdown-submenu { .dropdown-menu { box-shadow: none; margin: 0; } } } } .nav-top-wrap { flex-direction: row; .dropdown { position: static; } .dropdown-menu { position: absolute; margin: 0.25rem 0.75rem !important; .dropdown-submenu .dropdown-menu { position: relative; top: -7px !important; padding: 0px !important; } } } } } ================================================ FILE: styles/theme/components/_reboot.scss ================================================ body{ -webkit-font-smoothing: antialiased; } ================================================ FILE: styles/theme/components/_scrollspy.scss ================================================ // Scrollspy // Scrollspy .scrollspy-example { position: relative; height: 12.5rem; margin-top: 0.5rem; overflow: auto; } .scrollspy-example-2 { position: relative; height: 21.875rem; overflow: auto; } ================================================ FILE: styles/theme/components/_sidenav.scss ================================================ // Docs Sidebar // Docs breakpoints @media(max-width: 768px) { .docs-content { padding: 3.75rem 1.25rem 8.75rem 1.25rem; } } @media(max-width: 768px) { // Docs nav sidebar .docs-nav-sidebar { .navbar-toggler { background-color: $white; } width: 100%; position: relative; right: 0rem; top: 0; } // Docs wrapper .docs-wrapper { margin-left: 0rem; } .docs-main-wrapper { .main-content { margin-left: 0rem; width: auto; } } .docs-content { padding: 0rem; } } .doc-sidebar{ z-index: 2; width: 13.625rem; border-right: 1px solid $gray-300; position: fixed; height: 100%; overflow: auto; @media(max-width:990px) { width: 100%; position: relative; border: 0; height: auto; } @media(min-width: 990px) and (max-width: 1200px) { width: 10rem; } .navbar-nav{ padding-top: 1rem; .navbar-header { margin-bottom: .5rem; padding: 0rem 1rem; margin-top: 2rem; font-size: 0.75rem; .heading { font-size: 0.75rem; text-transform: uppercase; letter-spacing: 1px; font-weight: 600; color: $gray-400; margin-bottom: 0rem; } span { color: $gray-600; } } .nav-item { .nav-link { color: $gray-800; font-size: .875rem; line-height: 1.25rem; padding: 0.25rem 1rem; font-family: $font-family-sans-serif; font-weight: 500; &:hover { color: $primary; } } .nav-link.active { color: $primary; } } } } ================================================ FILE: styles/theme/components/_social-button.scss ================================================ // social color .color-facebook { color: #4267B2; } .color-twitter { color: #1DA1F2; } .color-github { color: #000000; } .color-google { color: #db3236; } .color-slack { color: #ce375c; } .color-linkedin { color: #0077b5; } ================================================ FILE: styles/theme/components/_table.scss ================================================ // // Extend from bootstrap // // Table .table .thead-light th{ color: $gray-600; } .table thead th { font-weight: 500; padding: 0.75rem 1.5rem; text-transform: capitalize; font-size: 0.875rem; color: $gray-600; } ================================================ FILE: styles/theme/utilities/_background.scss ================================================ // // Extended from bootstrap // // filter invert in to dark .filter-invert-white { -webkit-filter: brightness(0) invert(1); filter: brightness(0) invert(1); } .filter-invert-dark { -webkit-filter: brightness(0) invert(0); filter: brightness(0) invert(0); } .bg-gray-400 { background-color: $gray-400; } ================================================ FILE: styles/theme/utilities/_border.scss ================================================ // // Extend from Bootstrap // // Border width .border-white-color-40 { border-color: rgba(233, 236, 239, 0.4) !important; } .border-dashed { border: 1px dashed $gray-300 !important; } // divider .divider { display: -ms-flexbox; display: flex; -ms-flex-align: center; align-items: center; &::after, &::before { -ms-flex: 1 1 0%; flex: 1 1 0%; border-top: .0625rem solid $gray-400; content: ""; margin-top: .0625rem; } &::before { margin-right: 1.5rem; } &::after { margin-left: 1.5rem; } } ================================================ FILE: styles/theme/utilities/_icon-shape.scss ================================================ // Icon shape .icon-xxs { width: $icon-size-xxs; height: $icon-size-xxs; line-height: $icon-size-xxs; } .icon-xs { width: $icon-size-xs; height: $icon-size-xs; line-height: $icon-size-xs; } .icon-sm { width: $icon-size-sm; height: $icon-size-sm; line-height: $icon-size-sm; } .icon-md { width: $icon-size-md; height: $icon-size-md; line-height: $icon-size-md; } .icon-lg { width: $icon-size-lg; height: $icon-size-lg; line-height: $icon-size-lg; } .icon-xl { width: $icon-size-xl; height: $icon-size-xl; line-height: $icon-size-xl; } .icon-xxl { width: $icon-size-xxl; height: $icon-size-xxl; line-height: $icon-size-xxl; } .icon-shape { display: inline-flex; align-items: center; justify-content: center; text-align: center; vertical-align: middle; } ================================================ FILE: styles/theme/utilities/_position.scss ================================================ // // Extended from bootstrap // // Position @each $size, $value in $position-values { .top-#{$size} { top: $value; } .right-#{$size} { right: $value; } .bottom-#{$size} { bottom: $value; } .left-#{$size} { left: $value; } } .z-index-1030 { z-index: 1030; } ================================================ FILE: styles/theme/utilities/_shadows.scss ================================================ // // Extended from bootstrap // // shadows .smooth-shadow-sm { box-shadow: $smooth-shadow-sm !important; } .smooth-shadow-md { box-shadow: $smooth-shadow-md!important; } .smooth-shadow-lg { box-shadow: $smooth-shadow-lg !important; } ================================================ FILE: styles/theme/utilities/_text.scss ================================================ // text h1, h2, h3, h4, .h1, .h2, .h3, .h4 { letter-spacing: -0.02rem; } .text-inherit { color: $gray-900; } .text-primary-hover{ &:hover{ color: $primary !important; } } ================================================ FILE: styles/theme/vendor/apexChart/_apexchart.scss ================================================ // Apex Chart .apexcharts-tooltip { border-radius: .5rem !important; box-shadow: $box-shadow-sm !important; .apexcharts-tooltip-series-group { background: $white !important; color: $dark; padding: 3px 16px 6px 16px !important; display: none; text-align: left; justify-content: left; align-items: center; line-height: 1 !important; } } .apexcharts-tooltip-marker { width: 8px !important; height: 8px !important; position: relative; top: 0px; margin-right: 6px !important; border-radius: 50%; } // .apexcharts-tooltip-series-group.apexcharts-active, // .apexcharts-tooltip-series-group:last-child { // padding-bottom: 50px !important; // } .apexcharts-tooltip.apexcharts-theme-light { border: 1px solid $gray-200 !important; background-color: $gray-100 !important; background: $white !important; } .apexcharts-tooltip.apexcharts-theme-light .apexcharts-tooltip-title { background: $white !important; border-bottom: 1px solid $gray-200 !important; } .apexcharts-tooltip-title { padding: 8px 16px !important; font-size: 14px !important; margin-bottom: 4px; font-weight: 600 !important; } ================================================ FILE: styles/theme/vendor/prismJs/_prism.scss ================================================ // Prism /* Code blocks */ code[class*="language-"], pre[class*="language-"]{ font-family: $font-family-base; } pre[class*="language-"] { padding: 1em; overflow: auto; border-radius: 0.5rem !important; margin: 0; } :not(pre) > code[class*="language-"], pre[class*="language-"] { background: $gray-900; } div.code-toolbar { position: relative; > .toolbar { position: absolute; top: 0; right: 0; transition: opacity 0.3s ease-in-out; opacity: 0; padding: .5rem; } &:hover > .toolbar, &:focus-within > .toolbar { opacity: 1; } > .toolbar > .toolbar-item { display: inline-block; > { a { cursor: pointer; } button { background: none; border: 0; color: $dark; font: inherit; line-height: normal; overflow: visible; padding: 0; } a, button, span { color: $dark; font-size: .75rem; padding: .25rem .5rem; background: $white; font-weight: 600; border-radius: .25rem; } a { &:hover, &:focus { color: $dark; text-decoration: none; } } button { &:hover, &:focus { color: $dark; text-decoration: none; } } span { &:hover, &:focus { color: inherit; text-decoration: none; } } } } } /* Separate line b/c rules are thrown out if selector is invalid. IE11 and old Edge versions don't support :focus-within. */ ================================================ FILE: styles/theme.scss ================================================ /* ========================================================= * Dash UI - Bootstrap 5 Admin & Dashboard Theme ========================================================= * Product Page: https://codescandy.com/dashui/index.html * Copyright 2023 Codescandy (https://codescandy.com/) * Designed and coded by https://codescandy.com ========================================================= */ // Inter Fonts @import url("https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap"); // Font Awesome @import url("https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.2/css/all.css"); // Material Design Icons @import url("https://cdnjs.cloudflare.com/ajax/libs/MaterialDesign-Webfont/7.2.96/css/materialdesignicons.min.css"); // Feather Icons @import url("../public/fonts/feather-icons/feather.css"); // Bootstrap functions @import "~bootstrap/scss/functions"; // User Variables @import "user-variables"; // theme variables @import "theme/variables"; //utilities @import "theme/utilities"; // Bootstrap @import "~bootstrap/scss/bootstrap"; // Theme @import "theme/theme"; // User @import "user"; .heading-permalink { color: transparent; margin-left: -2rem; &:hover { color: transparent; } &::before { color: rgba(82, 95, 127, 0); content: "#"; } &:hover:before { color: $primary; } } ================================================ FILE: sub-components/billing/BillingAddress.js ================================================ // import node module libraries import React, { Fragment, useState } from 'react' import Link from 'next/link'; import { Row, Col, Card, Modal, Button, Form } from 'react-bootstrap'; // import widget as custom components import { FormSelect } from 'widgets'; const BillingAddress = () => { const [modalShow, setModalShow] = useState(false); const countryOptions = [ { value: 'India', label: 'India' }, { value: 'US', label: 'US' }, { value: 'UK', label: 'UK' }, { value: 'UAE', label: 'UAE' } ]; const cityOptions = [ { value: 'Ahmedabad', label: 'Ahmedabad' }, { value: 'New York', label: 'New York' }, { value: 'Los Angeles', label: 'Los Angeles' }, { value: 'Chicago', label: 'Chicago' } ]; const NewBillingAddressModal = (props) => { return (

    Billing Address

    Please provide the billing address with the credit card you ve provided.

    Country Address line 1 Address line 2 City State Zip/Postal Code Make this my default payment method.
    ); } return (

    Billing address

    Shipping Billing Address Valarie Tarrant 3757 Morgan Street Tallahassee, FL 32301 Edit Delete Remove as Default Billing

    E-mail: valarietarrant@dashui.com

    Phone: 321-654-0987


    Default Billing Address Mildred Cantu 3757 Morgan Street Tallahassee, FL 32301 Edit Delete Set as Default

    E-mail: valarietarrant@dashui.com

    Phone: 321-654-0987


    setModalShow(false)} />
    ) } export default BillingAddress ================================================ FILE: sub-components/billing/CurrentPlan.js ================================================ // import node module libraries import Link from 'next/link'; import { useState } from 'react' import { Row, Col, Card, Image, Modal, Button, Form, Badge } from 'react-bootstrap'; const CurrentPlan = () => { const [modalShow, setModalShow] = useState(false); const ChangePlanModal = (props) => { return ( Update Your Plan

    Change your plan

    You can choose from one of the available plans bellow.

    Standard Active Plan Single Site

    $49.00

    Multiside Unlimited Site

    $149.00

    Extended For spanaying users

    $449.00

    ); } return ( {/* card header */}

    Current Plan Overview

    {/* card body */}

    Current Plan

    Starter - Jan 2021

    Unlimited access to essential tools for design, bootstrap themes, illustrator and icons.

    Next Payment: on $499.00 USD Jan 1, 2022

    Yearly Payment

    $499 USD

    Learn more about our membership policy setModalShow(false)} /> Cancel Subscription
    {/* card footer */}
    Payment method
    ***8773
    Remove Change Card
    ) } export default CurrentPlan ================================================ FILE: sub-components/changelog/Version_01_00_00.js ================================================ // import node module libraries import { Col, Row, Card } from 'react-bootstrap'; const Version_01_00_00 = () => { return (
    v1.0.0 - April 20, 2023

    Initial Release of Dash UI NextJS

    Dash UI theme is a fully responsive and yet modern premium bootstrap dashboard Admin template developed in nextjs framework.

    ); }; export default Version_01_00_00; ================================================ FILE: sub-components/changelog/Version_01_01_00.js ================================================ // import node module libraries import { Col, Row, Card } from 'react-bootstrap'; const Version_01_01_00 = () => { const UpdatedSass = [ 'styles/theme/_utilities.scss', 'styles/theme.scss' ] const UpdatedReactFiles = [ 'widgets/dropfiles/DropFiles.js', 'widgets/form-select/FormSelect.js', 'widgets/highlight-code/HighlightCode.js', 'sub-components/dashboard/TasksPerformance.js', 'sub-components/settings/EmailSetting.js', 'sub-components/settings/GeneralSetting.js', 'routes/DashboardRoutes.js', 'data/code/ListgroupsCode.js', 'data/code/NavbarsCode.js', 'data/code/ToastsCode.js', 'components/bootstrap/DotBadge.js' ] const DeletedFiles = [ 'layouts/DefaultDashboardLayout.js', 'layouts/NotFound.js', 'layouts/AuthLayout.js', 'pages/_app.js', 'pages/_document.js' ] return (
    v1.1.0 - August 1, 2023

    Dash UI NextJS Update

    • Replaced Page Router with App Router and done all required changes to impliment it.
    • Required packages are Updated
    • Added new package react-syntax-highlighter
    • Removed prism-react-renderer and next-seo packages
    • Fixed a few bugs

    Updated React Files:

      {UpdatedReactFiles.map((item, index) => { return (
    • {item}
    • ) })}

    Updated SCSS Files:

      {UpdatedSass.map((item, index) => { return (
    • {item}
    • ) })}

    Deleted Components / Layout / Hook / React Files:

      {DeletedFiles.map((item, index) => { return (
    • {item}
    • ) })}
    ); }; export default Version_01_01_00; ================================================ FILE: sub-components/changelog/Version_01_01_01.js ================================================ // import node module libraries import { Col, Row, Card } from 'react-bootstrap'; const Version_01_01_01 = () => { const UpdatedSass = [ 'styles/theme/_utilities.scss', 'styles/theme.scss' ] const UpdatedReactFiles = [ 'widgets/dropfiles/DropFiles.js', 'widgets/form-select/FormSelect.js', 'widgets/highlight-code/HighlightCode.js', 'sub-components/dashboard/TasksPerformance.js', 'sub-components/settings/EmailSetting.js', 'sub-components/settings/GeneralSetting.js', 'routes/DashboardRoutes.js', 'data/code/ListgroupsCode.js', 'data/code/NavbarsCode.js', 'data/code/ToastsCode.js', 'components/bootstrap/DotBadge.js' ] const DeletedFiles = [ 'layouts/DefaultDashboardLayout.js', 'layouts/NotFound.js', 'layouts/AuthLayout.js', 'pages/_app.js', 'pages/_document.js' ] return (
    v1.1.1 - December 9, 2025

    Dash UI NextJS Update

    • Updated Nextjs to 16.x
    • Updated React to 19.x
    • Required packages are Updated
    • Removed react-copy-to-clipboard package
    • Fixed a few bugs
    ); }; export default Version_01_01_01; ================================================ FILE: sub-components/dashboard/ActiveProjects.js ================================================ // import node module libraries import Link from 'next/link'; import { ProgressBar, Col, Row, Card, Table, Image } from 'react-bootstrap'; // import required data files import ActiveProjectsData from "data/dashboard/ActiveProjectsData"; const ActiveProjects = () => { return (

    Active Projects

    {ActiveProjectsData.map((item, index) => { return ( ) })}
    Project name Hours priority Members Progress
    {item.projectName}
    {item.hours} {item.priority}
    {item.members.map((avatar, avatarIndex) => { return ( avatar ) })} +5
    {item.progress}%
    View All Projects
    ) } export default ActiveProjects ================================================ FILE: sub-components/dashboard/TasksPerformance.js ================================================ 'use client' import React from "react"; import Link from 'next/link'; import { Card, Dropdown } from 'react-bootstrap'; import { MoreVertical } from 'react-feather'; import dynamic from 'next/dynamic'; const Chart = dynamic(() => import('react-apexcharts'), { ssr: false }); const Charts = () => { const perfomanceChartSeries = [100, 78, 89]; const perfomanceChartOptions = { dataLabels: { enabled: !1 }, labels: ['Direct', 'Referral', 'Organic'], colors: ['#28a745', '#ffc107', '#dc3545'], plotOptions: { radialBar: { startAngle: -168, endAngle: -450, hollow: { size: '55%', }, track: { background: 'transaprent', }, dataLabels: { show: false, } } }, chart: { type: 'radialBar' }, stroke: { lineCap: "round" }, responsive: [ { breakpoint: 480, options: { chart: { height: 300 } } }, { breakpoint: 5000, options: { chart: { height: 320 } } } ] }; const CustomToggle = React.forwardRef(({ children, onClick }, ref) => ( ( { e.preventDefault(); onClick(e); }} className="text-muted text-primary-hover"> {children} ) )); CustomToggle.displayName = 'CustomToggle'; const ActionMenu = () => { return ( Action Another action Something else here ); }; return (

    Tasks Performance

    {/* icon with content */}

    76%

    Completed

    32%

    In-Progress

    13%

    Behind

    ) } export default Charts ================================================ FILE: sub-components/dashboard/Teams.js ================================================ // import node module libraries import React from "react"; import Link from 'next/link'; import { Card, Table, Dropdown, Image } from 'react-bootstrap'; import { MoreVertical } from 'react-feather'; // import required data files import TeamsData from "data/dashboard/TeamsData"; const Teams = () => { const CustomToggle = React.forwardRef(({ children, onClick }, ref) => ( ( { e.preventDefault(); onClick(e); }} className="text-muted text-primary-hover"> {children} ) )); CustomToggle.displayName = 'CustomToggle'; const ActionMenu = () => { return ( Action Another action Something else here ); }; return (

    Teams

    {TeamsData.map((item, index) => { return ( ) })}
    Name Role Last Activity
    {item.name}

    {item.email}

    {item.role} {item.lastActivity}
    ) } export default Teams ================================================ FILE: sub-components/index.js ================================================ /** * The folder sub-components contains sub component of all the pages, * so here you will find folder names which are listed in root pages. */ // sub components for /pages/dashboard import ActiveProjects from 'sub-components/dashboard/ActiveProjects'; import TasksPerformance from 'sub-components/dashboard/TasksPerformance'; import Teams from 'sub-components/dashboard/Teams'; // sub components for /pages/profile import AboutMe from 'sub-components/profile/AboutMe'; import ActivityFeed from 'sub-components/profile/ActivityFeed'; import MyTeam from 'sub-components/profile/MyTeam'; import ProfileHeader from 'sub-components/profile/ProfileHeader'; import ProjectsContributions from 'sub-components/profile/ProjectsContributions'; import RecentFromBlog from 'sub-components/profile/RecentFromBlog'; // sub components for /pages/billing import CurrentPlan from 'sub-components/billing/CurrentPlan'; import BillingAddress from 'sub-components/billing/BillingAddress'; // sub components for /pages/settings import DeleteAccount from 'sub-components/settings/DeleteAccount'; import EmailSetting from 'sub-components/settings/EmailSetting'; import GeneralSetting from 'sub-components/settings/GeneralSetting'; import Notifications from 'sub-components/settings/Notifications'; import Preferences from 'sub-components/settings/Preferences'; export { ActiveProjects, TasksPerformance, Teams, AboutMe, ActivityFeed, MyTeam, ProfileHeader, ProjectsContributions, RecentFromBlog, CurrentPlan, BillingAddress, DeleteAccount, EmailSetting, GeneralSetting, Notifications, Preferences }; ================================================ FILE: sub-components/profile/AboutMe.js ================================================ // import node module libraries import { Col, Row, Card } from 'react-bootstrap'; const AboutMe = () => { return ( {/* card */} {/* card body */} {/* card title */} About Me Bio

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspen disse var ius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat.

    Position

    Theme designer at Bootstrap.

    Phone

    +32112345689

    Date of Birth

    01.10.1997

    Email

    Dashui@gmail.com

    Location

    Ahmedabad, India

    ) } export default AboutMe ================================================ FILE: sub-components/profile/ActivityFeed.js ================================================ // import node module libraries import { Row, Col, Card, Image } from 'react-bootstrap'; const ActivityFeed = () => { return ( {/* card */} {/* card body */} {/* card title */} Activity Feed
    Dianna Smiley

    Just create a new Project in Dashui...

    2m ago

    Irene Hargrove

    Comment on Bootstrap Tutorial Says Hi, I m irene...

    1hour ago

    Trevor Bradley

    Just share your article on Social Media..

    2month ago

    ) } export default ActivityFeed ================================================ FILE: sub-components/profile/MyTeam.js ================================================ // import node module libraries import Link from 'next/link'; import { Card, Image } from 'react-bootstrap'; const MyTeam = () => { return ( My Team
    Dianna Smiley

    UI / UX Designer

    {/* icons */}
    Anne Brewer

    Senior UX Designer

    {/* icons */}
    Richard Christmas

    Front-End Engineer

    {/* icons */}
    Nicholas Binder

    Content Marketing Manager

    {/* icons */}
    ) } export default MyTeam ================================================ FILE: sub-components/profile/ProfileHeader.js ================================================ // import node module libraries import Link from 'next/link'; import { Col, Row, Image } from 'react-bootstrap'; const ProfileHeader = () => { return ( {/* Bg */}
    {/* avatar */}
    {/* text */}

    Jitu Chauhan

    @imjituchauhan

    Edit Profile
    {/* nav */}
    • Overview
    • Project
    • Files
    • Teams
    • Followers
    • Activity
    ) } export default ProfileHeader ================================================ FILE: sub-components/profile/ProjectsContributions.js ================================================ // import node module libraries import React from "react"; import Link from 'next/link'; import { Col, Card, Dropdown, Image } from 'react-bootstrap'; import { MoreVertical } from 'react-feather'; // import required data files import ProjectsContributionsData from 'data/profile/ProjectsContributionsData'; const ProjectsContributions = () => { const CustomToggle = React.forwardRef(({ children, onClick }, ref) => ( ( { e.preventDefault(); onClick(e); }} className="text-muted text-primary-hover"> {children} ) )); CustomToggle.displayName = 'CustomToggle'; const ActionMenu = () => { return ( Action Another action Something else here ); }; return ( Projects Contributions {ProjectsContributionsData.map((item, index) => { return (
    {/* text */}
    {item.projectName}

    {item.description}

    {/* avatar group */}
    {item.members.map((avatar, avatarIndex) => { return ( avatar ) })}
    {/* dropdown */}
    ) })}
    ) } export default ProjectsContributions ================================================ FILE: sub-components/profile/RecentFromBlog.js ================================================ // import node module libraries import React from "react"; import Link from 'next/link'; import { MoreVertical } from 'react-feather'; import { Col, Row, Card, Form, Dropdown, Image, Button } from 'react-bootstrap'; const RecentFromBlog = () => { const CustomToggle = React.forwardRef(({ children, onClick }, ref) => ( ( { e.preventDefault(); onClick(e); }} className="text-muted text-primary-hover"> {children} ) )); CustomToggle.displayName = 'CustomToggle'; const ActionMenu = () => { return ( Action Another action Something else here ); }; return (
    {/* avatar */}
    Jitu Chauhan

    19 minutes ago

    {/* dropdown */}
    {/* text */}

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspen disse var ius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat.

    {/* icons */}
    20 Like 12 Comment Share
    {/* Image */} avatar {/* Image */} avatar {/* Image */} avatar
    You and 20 more liked this
    {/* row */} Name
    ) } export default RecentFromBlog ================================================ FILE: sub-components/settings/DeleteAccount.js ================================================ // import node module libraries import Link from 'next/link'; import { Col, Row, Card } from 'react-bootstrap'; const DeleteAccount = () => { return (

    Delete Account

    Easily set up social media accounts

    Danger Zone

    Delete any and all content you have, such as articles, comments, your reading list or chat messages. Allow your username to become available to anyone.

    Delete Account

    Feel free to contact with any dashui@example.com questions.

    ) } export default DeleteAccount ================================================ FILE: sub-components/settings/EmailSetting.js ================================================ // import node module libraries import { Col, Row, Form, Card, Button } from 'react-bootstrap'; // import hooks import useMounted from 'hooks/useMounted'; const EmailSetting = () => { const hasMounted = useMounted(); return (

    Email Setting

    Add an email settings to profile

    {/* card */} {/* card body */}

    Email

    {hasMounted &&
    {/* New email */} New email
    }

    Change your password

    {hasMounted &&
    {/* Current password */} Current password {/* New password */} New password {/* Confirm new password */} Confirm new password {/* list */}
    Password requirements:

    Ensure that these requirements are met:

    • Minimum 8 characters long the more, the better
    • At least one lowercase character
    • At least one uppercase character
    • At least one number, symbol, or whitespace character
    }
    ) } export default EmailSetting ================================================ FILE: sub-components/settings/GeneralSetting.js ================================================ // import node module libraries import { Col, Row, Form, Card, Button, Image } from 'react-bootstrap'; // import widget as custom components import { FormSelect, DropFiles } from 'widgets'; // import hooks import useMounted from 'hooks/useMounted'; const GeneralSetting = () => { const hasMounted = useMounted(); const countryOptions = [ { value: 'India', label: 'India' }, { value: 'US', label: 'US' }, { value: 'UK', label: 'UK' }, { value: 'UAE', label: 'UAE' } ]; return (

    General Setting

    Profile configuration settings

    {/* card body */}

    General Settings

    Avatar
    {/* col */} {/* heading */}
    Cover photo
    {/* dropzone input */}
    {hasMounted &&
    }

    Basic information

    {hasMounted &&
    Full name {/* row */} Email {/* row */} Phone (Optional) {/* Location */} Location {/* Address Line One */} Address line 1 {/* Address Line Two */} Address line 2 {/* Zip code */} Zip code
    }
    ) } export default GeneralSetting ================================================ FILE: sub-components/settings/Notifications.js ================================================ // import node module libraries import { useState } from 'react' import { Col, Row, Card, Form, Button, Table, Alert } from 'react-bootstrap'; // import widget as custom components import { FormSelect } from 'widgets'; const Notifications = () => { const notificationOptions = [ { value: 'Always', label: 'Always' }, { value: 'One', label: 'One' }, { value: 'Two', label: 'Two' }, { value: 'Three', label: 'Three' } ]; const dailyDigestOptions = [ { value: 'Everyday', label: 'Everyday' }, { value: 'One', label: 'One' }, { value: 'Two', label: 'Two' }, { value: 'Three', label: 'Three' } ]; const timeOptions = [ { value: '2PM', label: '2PM' }, { value: 'One', label: 'One' }, { value: 'Two', label: 'Two' }, { value: 'Three', label: 'Three' } ]; const AlertDismissible = () => { const [show, setShow] = useState(true); if (show) { return ( setShow(false)} dismissible> To start using Slack for personal notifications, you should first connect Slack. ); } } return (

    Notifications

    Change notification settings

    Notification for email, mobile & Slack

    {/* alert */}
    {/* table */}
    Activity & Conversation
    When a Files is shared with a team
    When someone requests access to my design
    When someone comments in threads I’m following
    When someone @mentions me in any comments
    Project activity
    When someone adds me to a project
    Team activity
    When my invitees sign up
    When someone requests access to my team
    When someone invites me to a team

    When should we send you notifications? Daily Digest Time
    ) } export default Notifications ================================================ FILE: sub-components/settings/Preferences.js ================================================ // import node module libraries import { Col, Row, Form, Card, Button } from 'react-bootstrap'; // import widget as custom components import { FormSelect } from 'widgets'; const Preferences = () => { const langaugeOptions = [ { value: 'English', label: 'English' }, { value: 'Hindi', label: 'Hindi' }, { value: 'Spanish', label: 'Spanish' }, { value: 'Arabic', label: 'Arabic' } ]; const timeZoneOptions = [ { value: 'GMT +5.30', label: 'GMT +5.30' }, { value: 'GMT +5.30', label: 'GMT +5.30' }, { value: 'GMT +5.30', label: 'GMT +5.30' }, { value: 'GMT +5.30', label: 'GMT +5.30' } ]; const dateFormatOptions = [ { value: 'No Preference', label: 'No Preference' }, { value: 'Preference', label: 'Preference' } ]; return (

    Preferences

    Configure your preferences

    Preferences

    {/* Langauge */} Langauge {/* Time Zone */} Time Zone {/* Date Format */} Date Format {/* Default*/} Default On Off {/* Choose option default */} Choose option default Tell me Open e-mail Show default
    ) } export default Preferences ================================================ FILE: widgets/PageHeading.js ================================================ // import node module libraries import { Row, Col } from 'react-bootstrap'; const PageHeading = props => { const { heading } = props; return ( {/* Page header */}

    {heading}

    ) } export default PageHeading ================================================ FILE: widgets/cards/PricingCard.js ================================================ // import node module libraries import { ListGroup, Card } from 'react-bootstrap'; import Link from 'next/link'; const PricingCard = ({ content }) => { let plan = content[0]; return ( {/* text */}

    {plan.plantitle}

    {/* price */}

    ${plan.monthly}

    /mo

    {plan.buttonText}

    {plan.featureHeading}

    {plan.features.map((item, index) => { return ( ); })}
    ) } export default PricingCard ================================================ FILE: widgets/dropfiles/DropFiles.js ================================================ // import node module libraries import React, { useEffect, useState } from 'react'; import { useDropzone } from 'react-dropzone'; import { Image } from 'react-bootstrap'; const thumbsContainer = { display: 'flex', flexDirection: 'row', flexWrap: 'wrap', marginTop: 16 }; const thumb = { display: 'inline-flex', borderRadius: 2, border: '1px solid #eaeaea', marginBottom: 8, marginRight: 8, width: 100, height: 100, padding: 4, boxSizing: 'border-box' }; const thumbInner = { display: 'flex', minWidth: 0, overflow: 'hidden' }; const img = { display: 'block', width: 'auto', height: '100%' }; export const DropFiles = (props) => { const [files, setFiles] = useState([]); const { getRootProps, getInputProps } = useDropzone({ accept: {'image/*': ['.jpeg', '.jpg', '.png']}, onDrop: (acceptedFiles) => { setFiles( acceptedFiles.map((file) => Object.assign(file, { preview: URL.createObjectURL(file) }) ) ); } }); const thumbs = files.map((file) => (
    {file.name}
    )); useEffect( () => () => { // Make sure to revoke the data uris to avoid memory leaks files.forEach((file) => URL.revokeObjectURL(file.preview)); }, [files] ); return (

    Drag 'n' drop some files here, or click to select files

    ); }; ================================================ FILE: widgets/features/FeatureLeftTopIcon.js ================================================ // Widget : Features // Style : Features item with left top icon // import node module libraries import PropTypes from 'prop-types'; const FeatureLeftTopIcon = ({ item }) => { return (

    {item.title}

    {item.description}

    ) } // Typechecking With PropTypes FeatureLeftTopIcon.propTypes = { item: PropTypes.any.isRequired }; export default FeatureLeftTopIcon ================================================ FILE: widgets/form-select/FormSelect.js ================================================ // import node module libraries import { Fragment } from 'react'; import { Form } from 'react-bootstrap'; import PropTypes from 'prop-types'; export const FormSelect = (props={ placeholder: '', id: '', name: '', className:'' }) => { const { placeholder, options, id, name, onChange, className } = props; return ( {placeholder ? ( ) : ( '' )} {options.map((item, index) => { return ( ); })} ); }; FormSelect.propTypes = { placeholder: PropTypes.string, defaultselected: PropTypes.string, id: PropTypes.string, name: PropTypes.string, className:PropTypes.string }; export default FormSelect; ================================================ FILE: widgets/highlight-code/HighlightCode.js ================================================ 'use client' // import node module libraries import { Fragment, useState } from 'react'; import SyntaxHighlighter from 'react-syntax-highlighter'; import { shadesOfPurple } from 'react-syntax-highlighter/dist/esm/styles/hljs'; const HighlightCode = ({ code }) => { const [copied, setCopied] = useState(false); const handleCopy = async () => { try { await navigator.clipboard.writeText(code); setCopied(true); setTimeout(() => setCopied(false), 3000); // Reset 'copied' state after 2 seconds } catch (err) { console.error('Failed to copy text: ', err); // Handle error, e.g., show an error message to the user } }; return ( {/* */} {code} ); }; export default HighlightCode; ================================================ FILE: widgets/index.js ================================================ // import widget/custom components from highlight-code folder import HighlightCode from 'widgets/highlight-code/HighlightCode'; import PageHeading from 'widgets/PageHeading'; import FormSelect from 'widgets/form-select/FormSelect'; import PricingCard from 'widgets/cards/PricingCard'; import FeatureLeftTopIcon from 'widgets/features/FeatureLeftTopIcon'; import { DropFiles } from 'widgets/dropfiles/DropFiles'; import StatRightTopIcon from 'widgets/stats/StatRightTopIcon'; export { HighlightCode, PageHeading, FormSelect, PricingCard, FeatureLeftTopIcon, DropFiles, StatRightTopIcon }; ================================================ FILE: widgets/stats/StatRightTopIcon.js ================================================ // Widget : Stat Style // Style : Stat widget with right top icon // import node module libraries import PropTypes from 'prop-types'; import { Card } from 'react-bootstrap'; const StatRightTopIcon = props => { const { info } = props; return (

    {info.title}

    {info.icon}

    {info.value}

    ) } // Typechecking With PropTypes StatRightTopIcon.propTypes = { info: PropTypes.any.isRequired }; export default StatRightTopIcon