├── .babelrc
├── .eslintrc
├── .gitignore
├── LICENSE
├── README.md
├── app
├── colors.js
├── colors.scss
├── common.js
├── components
│ ├── Accordion
│ │ ├── Accordion.js
│ │ ├── AccordionBody.js
│ │ ├── AccordionHeader.js
│ │ ├── AccordionHeader.scss
│ │ ├── AccordionIndicator.js
│ │ ├── context.js
│ │ └── index.js
│ ├── App
│ │ ├── AppClient.js
│ │ └── index.js
│ ├── Avatar
│ │ ├── Avatar.js
│ │ ├── AvatarAddonBadge.js
│ │ ├── AvatarAddonIcon.js
│ │ ├── AvatarFont.js
│ │ ├── AvatarImage.js
│ │ └── index.js
│ ├── Card
│ │ ├── Card.js
│ │ ├── Card.scss
│ │ └── index.js
│ ├── CardHeader
│ │ ├── CardHeader.js
│ │ ├── CardHeader.scss
│ │ └── index.js
│ ├── Checkable
│ │ ├── Checkable.js
│ │ ├── CheckableInput.js
│ │ ├── CheckableTrigger.js
│ │ ├── CheckableTrigger.scss
│ │ ├── context.js
│ │ └── index.js
│ ├── CustomInput
│ │ ├── CustomInput.js
│ │ └── index.js
│ ├── Divider
│ │ ├── Divider.js
│ │ └── index.js
│ ├── EmptyLayout
│ │ ├── EmptyLayout.js
│ │ ├── EmptyLayoutSection.js
│ │ └── index.js
│ ├── ExtendedDropdown
│ │ ├── ExtendedDropdown.js
│ │ ├── ExtendedDropdownLink.js
│ │ ├── ExtendedDropdownSection.js
│ │ └── index.js
│ ├── FloatGrid
│ │ ├── Col.js
│ │ ├── Grid.js
│ │ ├── Ready.js
│ │ ├── Row.js
│ │ ├── floatGridContext.js
│ │ └── index.js
│ ├── HolderProvider
│ │ ├── HolderIconProvider.js
│ │ ├── HolderTextProvider.js
│ │ └── index.js
│ ├── IconWithBadge
│ │ ├── IconWithBadge.js
│ │ └── index.js
│ ├── InputGroupAddon
│ │ ├── InputGroupAddon.js
│ │ └── index.js
│ ├── Layout
│ │ ├── Layout.js
│ │ ├── LayoutContent.js
│ │ ├── LayoutNavbar.js
│ │ ├── LayoutSidebar.js
│ │ ├── PageConfigContext.js
│ │ ├── index.js
│ │ ├── setupPage.js
│ │ └── withPageConfig.js
│ ├── Nav
│ │ ├── index.js
│ │ └── nav.js
│ ├── Navbar
│ │ ├── index.js
│ │ └── navbar.js
│ ├── NavbarThemeProvider
│ │ ├── NavbarThemeProvider.js
│ │ └── index.js
│ ├── NestedDropdown
│ │ ├── NestedDropdown.js
│ │ ├── NestedDropdownSubmenu.js
│ │ ├── context.js
│ │ └── index.js
│ ├── OuterClick
│ │ ├── OuterClick.js
│ │ └── index.js
│ ├── PageLoader
│ │ ├── PageLoader.js
│ │ ├── PageLoader.scss
│ │ └── index.js
│ ├── Progress
│ │ ├── Progress.js
│ │ ├── Progress.scss
│ │ └── index.js
│ ├── Recharts
│ │ ├── CartesianGrid.js
│ │ ├── DefAreaValueColor.js
│ │ ├── Legend.js
│ │ ├── PieValueLabel.js
│ │ ├── PolarAngleAxis.js
│ │ ├── PolarGrid.js
│ │ ├── PolarRadiusAxis.js
│ │ ├── Tooltip.js
│ │ ├── ValueLabel.js
│ │ ├── XAxis.js
│ │ ├── YAxis.js
│ │ ├── ZAxis.js
│ │ └── config.js
│ ├── Sidebar
│ │ ├── Sidebar.js
│ │ ├── SidebarClose.js
│ │ ├── SidebarContent.js
│ │ ├── SidebarHideSlim.js
│ │ ├── SidebarMobileFluid.js
│ │ ├── SidebarSection.js
│ │ ├── SidebarShowSlim.js
│ │ └── index.js
│ ├── SidebarMenu
│ │ ├── MenuContext.js
│ │ ├── SidebarMenu.js
│ │ ├── SidebarMenuItem.js
│ │ └── index.js
│ ├── SidebarTrigger
│ │ ├── SidebarTrigger.js
│ │ └── index.js
│ ├── StarRating
│ │ ├── StarRating.js
│ │ ├── StarRating.scss
│ │ └── index.js
│ ├── Theme
│ │ ├── ThemeClass.js
│ │ ├── ThemeContext.js
│ │ ├── ThemeProvider.js
│ │ ├── ThemeSelector.js
│ │ └── index.js
│ ├── Tools
│ │ ├── DefaultOnly.js
│ │ ├── SlimOnly.js
│ │ ├── SlimProps.js
│ │ └── index.js
│ ├── UncontrolledModal
│ │ ├── UncontrolledModal.js
│ │ ├── UncontrolledModalClose.js
│ │ ├── context.js
│ │ └── index.js
│ ├── UncontrolledPopover
│ │ ├── UncontrolledPopover.js
│ │ └── index.js
│ ├── UncontrolledTabs
│ │ ├── UncontrolledTabs.js
│ │ ├── UncontrolledTabsNavLink.js
│ │ ├── UncontrolledTabsTabContent.js
│ │ ├── context.js
│ │ └── index.js
│ ├── Wizard
│ │ ├── Wizard.js
│ │ ├── WizardStep.js
│ │ └── index.js
│ ├── agGrid.js
│ ├── index.js
│ └── recharts.js
├── images
│ ├── avatars
│ │ ├── 1.jpg
│ │ ├── 10.jpg
│ │ ├── 11.jpg
│ │ ├── 12.jpg
│ │ ├── 13.jpg
│ │ ├── 14.jpg
│ │ ├── 15.jpg
│ │ ├── 16.jpg
│ │ ├── 17.jpg
│ │ ├── 18.jpg
│ │ ├── 19.jpg
│ │ ├── 2.jpg
│ │ ├── 20.jpg
│ │ ├── 21.jpg
│ │ ├── 22.jpg
│ │ ├── 23.jpg
│ │ ├── 24.jpg
│ │ ├── 25.jpg
│ │ ├── 26.jpg
│ │ ├── 27.jpg
│ │ ├── 28.jpg
│ │ ├── 29.jpg
│ │ ├── 3.jpg
│ │ ├── 30.jpg
│ │ ├── 31.jpg
│ │ ├── 32.jpg
│ │ ├── 33.jpg
│ │ ├── 34.jpg
│ │ ├── 35.jpg
│ │ ├── 36.jpg
│ │ ├── 37.jpg
│ │ ├── 38.jpg
│ │ ├── 39.jpg
│ │ ├── 4.jpg
│ │ ├── 40.jpg
│ │ ├── 41.jpg
│ │ ├── 42.jpg
│ │ ├── 43.jpg
│ │ ├── 44.jpg
│ │ ├── 45.jpg
│ │ ├── 46.jpg
│ │ ├── 47.jpg
│ │ ├── 48.jpg
│ │ ├── 49.jpg
│ │ ├── 5.jpg
│ │ ├── 50.jpg
│ │ ├── 6.jpg
│ │ ├── 7.jpg
│ │ ├── 8.jpg
│ │ ├── 9.jpg
│ │ └── avatar-1.jpg
│ ├── favicons
│ │ ├── apple-touch-icon.png
│ │ ├── favicon-16x16.png
│ │ ├── favicon-32x32.png
│ │ └── favicon.ico
│ └── logos
│ │ ├── logo-danger.svg
│ │ ├── logo-indigo.svg
│ │ ├── logo-info.svg
│ │ ├── logo-pink.svg
│ │ ├── logo-primary.svg
│ │ ├── logo-purple.svg
│ │ ├── logo-success.svg
│ │ ├── logo-warning.svg
│ │ ├── logo-white.svg
│ │ └── logo-yellow.svg
├── index.html
├── index.js
├── layout
│ ├── components
│ │ ├── DefaultNavbar.js
│ │ ├── DefaultSidebar.js
│ │ ├── NavbarActivityFeed.js
│ │ ├── NavbarMessages.js
│ │ ├── NavbarUser.js
│ │ ├── SidebarANavbar.js
│ │ ├── SidebarASidebar.js
│ │ ├── SidebarMiddleNav.js
│ │ └── SidebarWithNavbarNavbar.js
│ └── default.js
├── routes
│ ├── Apps
│ │ ├── AccountEdit
│ │ │ ├── AccountEdit.js
│ │ │ └── index.js
│ │ ├── BillingEdit
│ │ │ ├── BillingEdit.js
│ │ │ └── index.js
│ │ ├── Chat
│ │ │ ├── Chat.js
│ │ │ └── index.js
│ │ ├── Clients
│ │ │ ├── Clients.js
│ │ │ ├── components
│ │ │ │ ├── TrTableClients.js
│ │ │ │ └── TrTableCompanies.js
│ │ │ └── index.js
│ │ ├── EmailDetails
│ │ │ ├── EmailDetails.js
│ │ │ └── index.js
│ │ ├── Files
│ │ │ ├── Files.js
│ │ │ ├── FilesGrid.js
│ │ │ ├── FilesList.js
│ │ │ ├── components
│ │ │ │ └── TrTableFilesList.js
│ │ │ └── index.js
│ │ ├── GalleryGrid
│ │ │ ├── GalleryGrid.js
│ │ │ └── index.js
│ │ ├── GalleryTable
│ │ │ ├── GalleryTable.js
│ │ │ ├── components
│ │ │ │ └── TrTableGalleryList.js
│ │ │ └── index.js
│ │ ├── ImagesResults
│ │ │ ├── ImagesResults.js
│ │ │ └── index.js
│ │ ├── Inbox
│ │ │ ├── Inbox.js
│ │ │ ├── components
│ │ │ │ └── TrTableInbox.js
│ │ │ └── index.js
│ │ ├── NewEmail
│ │ │ ├── NewEmail.js
│ │ │ └── index.js
│ │ ├── ProfileDetails
│ │ │ ├── ProfileDetails.js
│ │ │ ├── components
│ │ │ │ └── TrTableMessages.js
│ │ │ └── index.js
│ │ ├── ProfileEdit
│ │ │ ├── ProfileEdit.js
│ │ │ └── index.js
│ │ ├── Projects
│ │ │ ├── Projects.js
│ │ │ ├── ProjectsGrid.js
│ │ │ ├── ProjectsList.js
│ │ │ ├── components
│ │ │ │ └── TrTableProjectsList.js
│ │ │ └── index.js
│ │ ├── SearchResults
│ │ │ ├── SearchResults.js
│ │ │ └── index.js
│ │ ├── SessionsEdit
│ │ │ ├── SessionsEdit.js
│ │ │ └── index.js
│ │ ├── SettingsEdit
│ │ │ ├── SettingsEdit.js
│ │ │ └── index.js
│ │ ├── Tasks
│ │ │ ├── Tasks.js
│ │ │ ├── TasksGrid.js
│ │ │ ├── TasksList.js
│ │ │ ├── components
│ │ │ │ └── TrTableTasksList.js
│ │ │ └── index.js
│ │ ├── TasksDetails
│ │ │ ├── TasksDetails.js
│ │ │ └── index.js
│ │ ├── TasksKanban
│ │ │ ├── TasksKanban.js
│ │ │ └── index.js
│ │ ├── Users
│ │ │ ├── Users.js
│ │ │ ├── UsersGrid.js
│ │ │ ├── UsersList.js
│ │ │ ├── components
│ │ │ │ └── TrTableUsersList.js
│ │ │ └── index.js
│ │ ├── UsersResults
│ │ │ ├── UsersResults.js
│ │ │ └── index.js
│ │ └── VideosResults
│ │ │ ├── VideosResults.js
│ │ │ └── index.js
│ ├── Cards
│ │ ├── Cards
│ │ │ ├── Cards.js
│ │ │ └── index.js
│ │ └── CardsHeaders
│ │ │ ├── CardsHeaders.js
│ │ │ └── index.js
│ ├── Dashboards
│ │ ├── Analytics
│ │ │ ├── Analytics.js
│ │ │ ├── Analytics.scss
│ │ │ ├── components
│ │ │ │ └── AudienceMetricsChart.js
│ │ │ └── index.js
│ │ ├── Financial
│ │ │ ├── Financial.js
│ │ │ └── index.js
│ │ ├── Monitor
│ │ │ ├── Monitor.js
│ │ │ └── index.js
│ │ ├── Projects
│ │ │ ├── DraggableProjects.js
│ │ │ ├── ProjectsDashboard.js
│ │ │ └── index.js
│ │ ├── Reports
│ │ │ ├── Reports.js
│ │ │ ├── components
│ │ │ │ ├── TinyArcChart.js
│ │ │ │ ├── TinyAreaChart.js
│ │ │ │ └── TinyLineChart.js
│ │ │ └── index.js
│ │ ├── Stock
│ │ │ ├── Stock.js
│ │ │ └── index.js
│ │ ├── System
│ │ │ ├── System.js
│ │ │ ├── components
│ │ │ │ ├── CardSystem.js
│ │ │ │ ├── TinyAreaChart.js
│ │ │ │ ├── TinyBarChart.js
│ │ │ │ ├── TinyDonutChart.js
│ │ │ │ └── trSystem.js
│ │ │ └── index.js
│ │ └── components
│ │ │ └── TinyLineChart.js
│ ├── Forms
│ │ ├── DatePicker
│ │ │ ├── DatePickerExamples.js
│ │ │ ├── components
│ │ │ │ ├── AddonInput.js
│ │ │ │ ├── ButtonInput.js
│ │ │ │ ├── Example.js
│ │ │ │ └── index.js
│ │ │ └── index.js
│ │ ├── Dropzone
│ │ │ ├── Dropzone.js
│ │ │ ├── components
│ │ │ │ ├── FilesGrid.js
│ │ │ │ ├── FilesList.js
│ │ │ │ ├── common.scss
│ │ │ │ └── index.js
│ │ │ ├── index.js
│ │ │ └── utilities.js
│ │ ├── Editor
│ │ │ ├── Editor.js
│ │ │ └── index.js
│ │ ├── Forms
│ │ │ ├── Forms.js
│ │ │ └── index.js
│ │ ├── FormsLayouts
│ │ │ ├── FormsLayouts.js
│ │ │ └── index.js
│ │ ├── InputGroups
│ │ │ ├── InputGroups.js
│ │ │ └── index.js
│ │ ├── Sliders
│ │ │ ├── Sliders.js
│ │ │ ├── Sliders.scss
│ │ │ └── index.js
│ │ ├── TextMask
│ │ │ ├── TextMask.js
│ │ │ └── index.js
│ │ ├── Toggles
│ │ │ ├── Toggles.js
│ │ │ ├── Toggles.scss
│ │ │ └── index.js
│ │ ├── Typeahead
│ │ │ ├── Typeahead.js
│ │ │ ├── components
│ │ │ │ ├── AsynchronousPagination.js
│ │ │ │ ├── AsynchronousSearching.js
│ │ │ │ ├── BasicBehaviors.js
│ │ │ │ ├── BasicExample.js
│ │ │ │ ├── BodyContainer.js
│ │ │ │ ├── ControllingSelections.js
│ │ │ │ ├── CustomFiltering.js
│ │ │ │ ├── CustomSelections.js
│ │ │ │ ├── Filtering.js
│ │ │ │ ├── FormExample.js
│ │ │ │ ├── GithubMenuItem.js
│ │ │ │ ├── InputSize.js
│ │ │ │ ├── LabelKey.js
│ │ │ │ ├── MenuAlignment.js
│ │ │ │ ├── PaginationExample.js
│ │ │ │ ├── PublicMethods.js
│ │ │ │ ├── RenderingExample.js
│ │ │ │ ├── exampleData.js
│ │ │ │ ├── index.js
│ │ │ │ └── utils.js
│ │ │ └── index.js
│ │ └── Wizard
│ │ │ ├── Wizard.js
│ │ │ └── index.js
│ ├── Graphs
│ │ └── ReCharts
│ │ │ ├── ReCharts.js
│ │ │ ├── components
│ │ │ ├── AreaChartFillByValue.js
│ │ │ ├── BarChartHasBackground.js
│ │ │ ├── BarChartStackedBySign.js
│ │ │ ├── CustomizedLabelLineChart.js
│ │ │ ├── DashedLineChart.js
│ │ │ ├── LineBarAreaComposedChart.js
│ │ │ ├── MixBarChart.js
│ │ │ ├── PercentAreaChart.js
│ │ │ ├── PieChartWithCustomizedLabel.js
│ │ │ ├── PieChartWithPaddingAngle.js
│ │ │ ├── PieChartWithPaddingAngleHalf.js
│ │ │ ├── PositiveAndNegativeBarChart.js
│ │ │ ├── SimpleAreaChart.js
│ │ │ ├── SimpleBarChart.js
│ │ │ ├── SimpleLineChart.js
│ │ │ ├── SimpleRadialBarChart.js
│ │ │ ├── SpecifiedDomainRadarChart.js
│ │ │ ├── StackedAreaChart.js
│ │ │ ├── StackedBarChart.js
│ │ │ ├── StraightAnglePieChart.js
│ │ │ ├── TinyAreaChart.js
│ │ │ ├── TinyBarChart.js
│ │ │ ├── TinyDonutChart.js
│ │ │ ├── TinyLineChart.js
│ │ │ ├── TinyPieChart.js
│ │ │ ├── TwoLevelPieChart.js
│ │ │ ├── VerticalComposedChart.js
│ │ │ └── VerticalLineChart.js
│ │ │ └── index.js
│ ├── Icons
│ │ ├── Icons.js
│ │ └── index.js
│ ├── Interface
│ │ ├── Accordions
│ │ │ ├── Accordions.js
│ │ │ └── index.js
│ │ ├── Alerts
│ │ │ ├── Alerts.js
│ │ │ └── index.js
│ │ ├── Avatars
│ │ │ ├── Avatars.js
│ │ │ └── index.js
│ │ ├── BadgesLabels
│ │ │ ├── BadgesLabels.js
│ │ │ └── index.js
│ │ ├── Breadcrumbs
│ │ │ ├── Breadcrumbs.js
│ │ │ └── index.js
│ │ ├── Buttons
│ │ │ ├── Buttons.js
│ │ │ └── index.js
│ │ ├── Calendar
│ │ │ ├── Calendar.js
│ │ │ ├── events.js
│ │ │ └── index.js
│ │ ├── Colors
│ │ │ ├── Colors.js
│ │ │ └── index.js
│ │ ├── CropImage
│ │ │ ├── CropImage.js
│ │ │ ├── components
│ │ │ │ └── ExampleProvider.js
│ │ │ ├── images
│ │ │ │ ├── image-1.jpg
│ │ │ │ └── image-2.jpg
│ │ │ └── index.js
│ │ ├── DragAndDropElements
│ │ │ ├── DragAndDropElements.js
│ │ │ ├── components
│ │ │ │ ├── DraggableTable.js
│ │ │ │ ├── HorizontalLists.js
│ │ │ │ ├── MultipleVerticalLists.js
│ │ │ │ ├── common.scss
│ │ │ │ ├── index.js
│ │ │ │ └── utilities.js
│ │ │ └── index.js
│ │ ├── Dropdowns
│ │ │ ├── Dropdowns.js
│ │ │ └── index.js
│ │ ├── Images
│ │ │ ├── Images.js
│ │ │ └── index.js
│ │ ├── ListGroups
│ │ │ ├── ListGroups.js
│ │ │ └── index.js
│ │ ├── MediaObjects
│ │ │ ├── MediaObjects.js
│ │ │ └── index.js
│ │ ├── Modals
│ │ │ ├── Modals.js
│ │ │ └── index.js
│ │ ├── Navbars
│ │ │ ├── Navbars.js
│ │ │ └── index.js
│ │ ├── Notifications
│ │ │ ├── Notifications.js
│ │ │ └── index.js
│ │ ├── Paginations
│ │ │ ├── Paginations.js
│ │ │ └── index.js
│ │ ├── ProgressBars
│ │ │ ├── ProgressBars.js
│ │ │ └── index.js
│ │ ├── TabsPills
│ │ │ ├── TabsPills.js
│ │ │ └── index.js
│ │ ├── TooltipsPopovers
│ │ │ ├── TooltipsPopovers.js
│ │ │ └── index.js
│ │ └── Typography
│ │ │ ├── Typography.js
│ │ │ └── index.js
│ ├── Layouts
│ │ ├── DragAndDropLayout
│ │ │ ├── DragAndDropLayout.js
│ │ │ └── index.js
│ │ ├── NavbarOnly
│ │ │ ├── NavbarOnly.js
│ │ │ ├── components
│ │ │ │ └── LayoutNavbar.js
│ │ │ └── index.js
│ │ ├── SidebarA
│ │ │ ├── SidebarA.js
│ │ │ └── index.js
│ │ ├── SidebarDefault
│ │ │ ├── SidebarDefault.js
│ │ │ └── index.js
│ │ └── SidebarWithNavbar
│ │ │ ├── SidebarWithNavbar.js
│ │ │ └── index.js
│ ├── Pages
│ │ ├── ComingSoon
│ │ │ ├── ComingSoon.js
│ │ │ └── index.js
│ │ ├── Confirmation
│ │ │ ├── Confirmation.js
│ │ │ └── index.js
│ │ ├── Danger
│ │ │ ├── Danger.js
│ │ │ └── index.js
│ │ ├── Error404
│ │ │ ├── Error404.js
│ │ │ └── index.js
│ │ ├── ForgotPassword
│ │ │ ├── ForgotPassword.js
│ │ │ └── index.js
│ │ ├── LockScreen
│ │ │ ├── LockScreen.js
│ │ │ └── index.js
│ │ ├── Login
│ │ │ ├── Login.js
│ │ │ └── index.js
│ │ ├── Register
│ │ │ ├── Register.js
│ │ │ └── index.js
│ │ ├── Success
│ │ │ ├── Success.js
│ │ │ └── index.js
│ │ └── Timeline
│ │ │ ├── Timeline.js
│ │ │ └── index.js
│ ├── Tables
│ │ ├── AgGrid
│ │ │ ├── AgGrid.js
│ │ │ └── index.js
│ │ ├── ExtendedTable
│ │ │ ├── ExtendedTable.js
│ │ │ ├── components
│ │ │ │ ├── AdvancedTableA.js
│ │ │ │ ├── AdvancedTableB.js
│ │ │ │ ├── BasicTable.js
│ │ │ │ ├── BorderedTable.js
│ │ │ │ ├── CellEdit.js
│ │ │ │ ├── ClearSearch.js
│ │ │ │ ├── CustomExportButton.js
│ │ │ │ ├── CustomPaginationPanel.js
│ │ │ │ ├── CustomPaginationTotal.js
│ │ │ │ ├── CustomSearch.js
│ │ │ │ ├── CustomSizePerPageButton.js
│ │ │ │ ├── LargeTable.js
│ │ │ │ ├── LargeTable.scss
│ │ │ │ ├── SelectAll.js
│ │ │ │ ├── SortTable.js
│ │ │ │ └── index.js
│ │ │ ├── filters
│ │ │ │ ├── index.js
│ │ │ │ ├── numberFilter.js
│ │ │ │ ├── selectFilter.js
│ │ │ │ └── textFilter.js
│ │ │ └── index.js
│ │ └── Tables
│ │ │ ├── Tables.js
│ │ │ ├── components
│ │ │ ├── TrTableBordered.js
│ │ │ ├── TrTableBorderless.js
│ │ │ ├── TrTableContextual.js
│ │ │ ├── TrTableDefault.js
│ │ │ ├── TrTableHeads.js
│ │ │ ├── TrTableHoverable.js
│ │ │ ├── TrTableResponsive.js
│ │ │ ├── TrTableSmall.js
│ │ │ └── TrTableStriped.js
│ │ │ └── index.js
│ ├── Widgets
│ │ ├── Widgets.js
│ │ └── index.js
│ ├── components
│ │ ├── Analytics
│ │ │ ├── MetricVsTarget.js
│ │ │ ├── SessionsByDevice.js
│ │ │ ├── TinyAreaChart.js
│ │ │ ├── TinyAreaChartSpend.js
│ │ │ ├── TrTableTrafficChannels.js
│ │ │ └── WebsitePerformance.js
│ │ ├── Attachment.js
│ │ ├── CardFooterInfo.js
│ │ ├── CardTextDemo.js
│ │ ├── Chat
│ │ │ ├── ChatCardFooter.js
│ │ │ ├── ChatCardHeader.js
│ │ │ ├── ChatLeft.js
│ │ │ ├── ChatLeftNav.js
│ │ │ └── ChatRight.js
│ │ ├── Colors
│ │ │ ├── CardColor.js
│ │ │ ├── CardRgbaColor.js
│ │ │ └── InfoPopover.js
│ │ ├── Comment.js
│ │ ├── Dropdowns
│ │ │ ├── Activity.js
│ │ │ ├── DropdownProfile.js
│ │ │ ├── Messages.js
│ │ │ └── SwitchVersion.js
│ │ ├── Files
│ │ │ ├── FilesCardGrid.js
│ │ │ └── FilesLeftNav.js
│ │ ├── Financial
│ │ │ ├── StackedAreaChart.js
│ │ │ ├── TinyDonutChartBig.js
│ │ │ ├── TrTableInvoices.js
│ │ │ └── TrTableRecentFundings.js
│ │ ├── FooterText.js
│ │ ├── Gallery
│ │ │ └── GalleryCard.js
│ │ ├── HeaderDemo.js
│ │ ├── HeaderMain.js
│ │ ├── LogoThemed
│ │ │ └── LogoThemed.js
│ │ ├── Logos
│ │ │ ├── LogoNavbar.js
│ │ │ └── LogotypeNavbar.js
│ │ ├── Mailbox
│ │ │ └── MailboxLeftNav.js
│ │ ├── Monitor
│ │ │ ├── TinyAreaChart.js
│ │ │ ├── TinyDonutChart.js
│ │ │ ├── TinyDonutChartBig.js
│ │ │ └── TrTableMonitor.js
│ │ ├── Navbars
│ │ │ ├── NavbarExample.js
│ │ │ └── NavbarNavigation.js
│ │ ├── Pages
│ │ │ ├── FooterAuth.js
│ │ │ └── HeaderAuth.js
│ │ ├── Paginations.js
│ │ ├── Profile.js
│ │ ├── Profile
│ │ │ ├── DlRowAddress.js
│ │ │ ├── DlRowContacts.js
│ │ │ ├── ProfileHeader.js
│ │ │ ├── ProfileLeftNav.js
│ │ │ └── ProfileOverviewCard.js
│ │ ├── Projects
│ │ │ ├── ProjectsCardGrid.js
│ │ │ ├── ProjectsLeftNav.js
│ │ │ └── ProjectsSmHeader.js
│ │ ├── ProjectsDashboards
│ │ │ ├── ProjectsList.js
│ │ │ ├── TasksMedia.js
│ │ │ ├── TinyDonutChart.js
│ │ │ └── TinyDonutChartAllProjects.js
│ │ ├── SearchResults
│ │ │ ├── ImagesResultsCard.js
│ │ │ ├── SearchResultsCard.js
│ │ │ ├── SearchResultsHeader.js
│ │ │ ├── SearchResultsLeftNav.js
│ │ │ ├── UsersResultsCard.js
│ │ │ └── VideosResultsCard.js
│ │ ├── Sidebar
│ │ │ ├── SidebarBottomA.js
│ │ │ ├── SidebarBottomB.js
│ │ │ ├── SidebarTopA.js
│ │ │ └── SidebarTopB.js
│ │ ├── Stock
│ │ │ ├── SimpleLineChart.js
│ │ │ ├── TrTableFavStock.js
│ │ │ ├── TrTableStock.js
│ │ │ └── TrTableSummary.js
│ │ ├── Tables
│ │ │ ├── TrBorderless.js
│ │ │ └── TrResponsive.js
│ │ ├── Tasks
│ │ │ └── TasksCardGrid.js
│ │ ├── Timeline
│ │ │ ├── TimelineDefault.js
│ │ │ └── TimelineMini.js
│ │ ├── Users
│ │ │ ├── UsersCardGrid.js
│ │ │ └── UsersLeftNav.js
│ │ └── VersionSelector.js
│ └── index.js
├── styles
│ ├── bootstrap.scss
│ ├── components
│ │ ├── float-grid.scss
│ │ ├── theme-selector.scss
│ │ └── wizard.scss
│ ├── main.scss
│ ├── plugins
│ │ ├── _ag-grid.scss
│ │ ├── _font-awesome.scss
│ │ ├── _rc-slider.scss
│ │ ├── _react-big-calendar.scss
│ │ ├── _react-bootstrap-table.scss
│ │ ├── _react-bootstrap-typeahead.scss
│ │ ├── _react-datepicker.scss
│ │ ├── _react-dropzone.scss
│ │ ├── _react-grid-layout.scss
│ │ ├── _react-image-crop.scss
│ │ ├── _react-quill.scss
│ │ ├── _react-toastify.scss
│ │ ├── _react-toggle.scss
│ │ ├── plugins.css
│ │ └── plugins.scss
│ └── variables.scss
└── utilities.js
├── build
├── cli-tools.js
├── webpack.config.client.dev.js
└── webpack.config.client.prod.js
├── config.js
├── package.json
├── packages
└── dashboard-style
│ ├── js-modules
│ ├── colors.js
│ ├── dashboard-version.js
│ ├── dropdown-menu-animate.js
│ ├── extended-faker.js
│ ├── highcharts.js
│ ├── index.js
│ ├── nested-dropdown-animate.js
│ ├── side-menu-animate.js
│ ├── sidebar-entry-animate.js
│ ├── slim-menu-animate.js
│ ├── slim-sidebar-animate.js
│ └── utilities.js
│ ├── js
│ ├── ag-grid.js
│ ├── ag-grid.js.map
│ ├── animate.js
│ ├── animate.js.map
│ ├── colors.js
│ ├── colors.js.map
│ ├── dashboard-version.js
│ ├── dashboard-version.js.map
│ ├── faker.js
│ ├── faker.js.map
│ ├── highcharts.js
│ ├── highcharts.js.map
│ ├── highcharts
│ │ ├── area-basic.js
│ │ ├── area-basic.js.map
│ │ ├── area-stacked.js
│ │ ├── area-stacked.js.map
│ │ ├── bar-basic.js
│ │ ├── bar-basic.js.map
│ │ ├── bar-stacked.js
│ │ ├── bar-stacked.js.map
│ │ ├── column-basic.js
│ │ ├── column-basic.js.map
│ │ ├── column-drilldown.js
│ │ ├── column-drilldown.js.map
│ │ ├── line-ajax.js
│ │ ├── line-ajax.js.map
│ │ ├── line-basic.js
│ │ ├── line-basic.js.map
│ │ ├── line-labels.js
│ │ ├── line-labels.js.map
│ │ ├── line-time-series.js
│ │ ├── line-time-series.js.map
│ │ ├── pie-legend.js
│ │ ├── pie-legend.js.map
│ │ ├── pie-semi-circle.js
│ │ └── pie-semi-circle.js.map
│ ├── init.js
│ ├── init.js.map
│ ├── layout.js
│ ├── layout.js.map
│ ├── nested-dropdown.js
│ ├── nested-dropdown.js.map
│ ├── side-menu.js
│ ├── side-menu.js.map
│ ├── theme-config.js
│ └── theme-config.js.map
│ ├── package.json
│ └── scss
│ ├── _animations.scss
│ ├── _avatars.scss
│ ├── _custom-card-header.scss
│ ├── _custom-card.scss
│ ├── _extended-dropdown.scss
│ ├── _fullScreen.scss
│ ├── _hr-text.scss
│ ├── _icon-with-badge.scss
│ ├── _layout.scss
│ ├── _navbar.scss
│ ├── _nested-dropdown.scss
│ ├── _sidebar-menu.scss
│ ├── _sidebar.scss
│ ├── _theme-config.scss
│ ├── _theme-variants.scss
│ ├── _timeline.scss
│ ├── _variables.scss
│ ├── bootstrap
│ ├── _functions.scss
│ ├── _helpers.scss
│ ├── _mixins.scss
│ ├── _variables.scss
│ └── bootstrap.scss
│ ├── mixins
│ └── _layout-theme.scss
│ ├── plugins
│ ├── ag-grid
│ │ ├── _ag-theme-bootstrap-vars.scss
│ │ ├── ag-grid.scss
│ │ └── ag-theme-bootstrap.scss
│ └── highcharts
│ │ └── highcharts.scss
│ └── style.scss
├── postcss.config.js
└── vercel.json
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | "@babel/preset-env",
4 | "@babel/preset-react",
5 | ],
6 | "plugins": [
7 | "@babel/plugin-proposal-class-properties",
8 | "@babel/plugin-syntax-dynamic-import",
9 | "universal-import",
10 | "react-hot-loader/babel"
11 | ],
12 | "env": {
13 | "development": {
14 | "plugins": [
15 | "react-hot-loader/babel"
16 | ]
17 | }
18 | }
19 | }
--------------------------------------------------------------------------------
/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "parser": "babel-eslint",
3 | "plugins": [
4 | "react"
5 | ],
6 | "parserOptions": {
7 | "ecmaVersion": 6,
8 | "sourceType": "module",
9 | "ecmaFeatures": {
10 | "jsx": true,
11 | "experimentalObjectRestSpread": true
12 | }
13 | },
14 | "env": {
15 | "es6": true,
16 | "browser": true,
17 | "node": true,
18 | "mocha": true
19 | },
20 | "extends": [
21 | "eslint:recommended",
22 | "plugin:react/recommended"
23 | ],
24 | "rules": {
25 | }
26 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # build output
2 | dist
3 |
4 | # dependencies
5 | node_modules
6 | package-lock.json
7 | yarn.lock
8 |
9 | # other
10 | .DS_Store
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Tomasz O.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/app/colors.js:
--------------------------------------------------------------------------------
1 | import _ from 'lodash';
2 |
3 | import colors from './colors.scss';
4 |
5 | const colorKeys = _
6 | .chain(colors)
7 | .keys()
8 | .filter((colorKey) => (
9 | colorKey.indexOf('bg-') === -1 &&
10 | colorKey.indexOf('fg-') === -1
11 | ))
12 | .value();
13 |
14 | export default _.pick(colors, colorKeys);
--------------------------------------------------------------------------------
/app/colors.scss:
--------------------------------------------------------------------------------
1 | @import "./styles/variables";
2 |
3 | @each $name, $color in $dashboard-colors {
4 | .fg-color--#{ $name } {
5 | color: $color;
6 | }
7 | .bg-color--#{ $name } {
8 | background-color: $color;
9 | }
10 | }
11 |
12 | :export {
13 | @each $name, $color in $dashboard-colors {
14 | #{$name}: $color
15 | }
16 | }
--------------------------------------------------------------------------------
/app/common.js:
--------------------------------------------------------------------------------
1 | import * as CommonDashboardFuncs from '@owczar/dashboard-style--airframe';
2 |
3 | export default CommonDashboardFuncs;
--------------------------------------------------------------------------------
/app/components/Accordion/AccordionBody.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import classNames from 'classnames';
4 | import { Collapse, CardBody } from 'reactstrap';
5 |
6 | import { Consumer } from './context';
7 |
8 | export const AccordionBody = (props) => (
9 |
10 | {
11 | ({ isOpen }) => (
12 |
13 |
14 | { props.children }
15 |
16 |
17 | )
18 | }
19 |
20 | );
21 | AccordionBody.propTypes = {
22 | children: PropTypes.node,
23 | className: PropTypes.string
24 | };
25 |
--------------------------------------------------------------------------------
/app/components/Accordion/AccordionHeader.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import classNames from 'classnames';
4 |
5 | import CardHeader from './../CardHeader';
6 |
7 | import { Consumer } from './context';
8 | import classes from './AccordionHeader.scss';
9 |
10 | export const AccordionHeader = (props) => (
11 |
12 | {
13 | ({ onToggle }) => (
14 |
23 | { props.children }
24 |
25 | )
26 | }
27 |
28 | );
29 | AccordionHeader.propTypes = {
30 | children: PropTypes.node,
31 | onClick: PropTypes.func,
32 | className: PropTypes.string
33 | };
34 |
--------------------------------------------------------------------------------
/app/components/Accordion/AccordionHeader.scss:
--------------------------------------------------------------------------------
1 | @import '../../styles/variables';
2 |
3 | div.header {
4 | background: none;
5 | border-bottom: none;
6 | cursor: pointer;
7 | color: $link-color;
8 | text-decoration: $link-decoration;
9 |
10 | &:hover {
11 | color: $link-hover-color;
12 | text-decoration: $link-hover-decoration;
13 | }
14 | }
--------------------------------------------------------------------------------
/app/components/Accordion/AccordionIndicator.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import classNames from 'classnames';
4 |
5 | import { Consumer } from './context';
6 |
7 | export const AccordionIndicator = (props) => (
8 |
9 | {
10 | ({ isOpen }) => isOpen ?
11 | React.cloneElement(props.open, {
12 | className: classNames(props.className, props.open.props.className)
13 | }) : React.cloneElement(props.closed, {
14 | className: classNames(props.className, props.closed.props.className)
15 | })
16 | }
17 |
18 | );
19 | AccordionIndicator.propTypes = {
20 | open: PropTypes.node,
21 | closed: PropTypes.node,
22 | className: PropTypes.string
23 | }
24 | AccordionIndicator.defaultProps = {
25 | open: ,
26 | closed:
27 | }
28 |
--------------------------------------------------------------------------------
/app/components/Accordion/context.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const { Provider, Consumer } = React.createContext();
4 |
5 | export {
6 | Provider,
7 | Consumer
8 | };
9 |
--------------------------------------------------------------------------------
/app/components/Accordion/index.js:
--------------------------------------------------------------------------------
1 | import { Accordion } from './Accordion';
2 | import { AccordionBody } from './AccordionBody';
3 | import { AccordionHeader } from './AccordionHeader';
4 | import { AccordionIndicator } from './AccordionIndicator';
5 |
6 | Accordion.Body = AccordionBody;
7 | Accordion.Header = AccordionHeader;
8 | Accordion.Indicator = AccordionIndicator;
9 |
10 | export default Accordion;
11 |
--------------------------------------------------------------------------------
/app/components/App/AppClient.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { hot } from 'react-hot-loader'
3 | import { BrowserRouter as Router } from 'react-router-dom';
4 |
5 | import AppLayout from './../../layout/default';
6 | import { RoutedContent } from './../../routes';
7 |
8 | const basePath = process.env.BASE_PATH || '/';
9 |
10 | const AppClient = () => {
11 | return (
12 |
13 |
14 |
15 |
16 |
17 | );
18 | }
19 |
20 | export default hot(module)(AppClient);
--------------------------------------------------------------------------------
/app/components/App/index.js:
--------------------------------------------------------------------------------
1 | import AppClient from './AppClient';
2 |
3 | export default AppClient;
--------------------------------------------------------------------------------
/app/components/Avatar/AvatarAddonBadge.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import classNames from 'classnames';
4 | import { Badge } from 'reactstrap';
5 |
6 | const AvatarAddonBadge = (props) => {
7 | const { children, ...badgeProps } = props;
8 |
9 | return (
10 |
11 | { children }
12 |
13 | );
14 | };
15 | AvatarAddonBadge.propTypes = {
16 | children: PropTypes.node,
17 | className: PropTypes.string
18 | };
19 | AvatarAddonBadge.addOnId = "avatar--badge";
20 |
21 | export { AvatarAddonBadge };
--------------------------------------------------------------------------------
/app/components/Avatar/AvatarAddonIcon.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import classNames from 'classnames';
4 |
5 | import avatarColors from './../../colors.scss';
6 |
7 | const AvatarAddonIcon = (props) => {
8 | const addOnClass = classNames({
9 | 'avatar__icon__inner': props.small
10 | }, avatarColors[`fg-color--${ props.color }`]);
11 |
12 | return (
13 |
14 | );
15 | };
16 | AvatarAddonIcon.propTypes = {
17 | small: PropTypes.bool,
18 | className: PropTypes.string,
19 | color: PropTypes.string
20 | };
21 | AvatarAddonIcon.defaultProps = {
22 | color: "success"
23 | };
24 | AvatarAddonIcon.addOnId = "avatar--icon";
25 |
26 | export { AvatarAddonIcon };
--------------------------------------------------------------------------------
/app/components/Avatar/index.js:
--------------------------------------------------------------------------------
1 | import { Avatar } from './Avatar';
2 | import { AvatarFont } from './AvatarFont';
3 | import { AvatarImage } from './AvatarImage';
4 |
5 | import { AvatarAddonBadge } from './AvatarAddonBadge';
6 | import { AvatarAddonIcon } from './AvatarAddonIcon';
7 |
8 | Avatar.Font = AvatarFont;
9 | Avatar.Image = AvatarImage;
10 |
11 | const AvatarAddOn = {
12 | Icon: AvatarAddonIcon,
13 | Badge: AvatarAddonBadge
14 | };
15 |
16 | export default Avatar;
17 | export { AvatarAddOn };
--------------------------------------------------------------------------------
/app/components/Card/Card.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import classNames from 'classnames';
4 | import {
5 | Card as BsCard
6 | } from 'reactstrap';
7 |
8 | import classes from './Card.scss';
9 |
10 | const Card = (props) => {
11 | const { children, type, color, className, ...otherProps } = props;
12 | const cardClass = classNames(className,
13 | classes['custom-card'],
14 | classes[`custom-card--${ type }`],
15 | color && classes[`custom-card--color-${ color }`]
16 | );
17 | return (
18 |
19 | { children }
20 |
21 | );
22 | }
23 | Card.propTypes = {
24 | ...BsCard.propTypes,
25 | type: PropTypes.string,
26 | color: PropTypes.string
27 | };
28 | Card.defaultProps = {
29 | type: 'border',
30 | color: null
31 | };
32 |
33 | export { Card };
34 |
--------------------------------------------------------------------------------
/app/components/Card/Card.scss:
--------------------------------------------------------------------------------
1 | @import "../../styles/variables";
2 |
3 | .custom-card {
4 | &--border-dash,
5 | &--border-dot,
6 | &--border {
7 | @each $name, $color in $dashboard-colors {
8 | &.custom-card--color-#{$name} {
9 | border-color: $color
10 | }
11 | }
12 | }
13 |
14 | &--side-border {
15 | border-left-width: 2px;
16 |
17 | @each $name, $color in $dashboard-colors {
18 | &.custom-card--color-#{$name} {
19 | border-left-color: $color
20 | }
21 | }
22 | }
23 |
24 | &--background {
25 | color: map-get($dashboard-colors, 'white');
26 |
27 | @each $name, $color in $dashboard-colors {
28 | &.custom-card--color-#{$name} {
29 | background-color: $color;
30 | }
31 | }
32 | }
33 |
34 | &--border-dash {
35 | border-style: dashed;
36 | border-width: 2px;
37 | }
38 |
39 | &--border-dot {
40 | border-style: dotted;
41 | border-width: 2px;
42 | }
43 |
44 | &--shadow {
45 | box-shadow: 0 1px 2px 0 rgba(31, 45, 61, 0.07);
46 | }
47 |
48 | &--none {
49 | border: none;
50 | background: none;
51 | }
52 | }
--------------------------------------------------------------------------------
/app/components/Card/index.js:
--------------------------------------------------------------------------------
1 | import { Card } from './Card';
2 |
3 | export default Card;
--------------------------------------------------------------------------------
/app/components/CardHeader/CardHeader.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import classNames from 'classnames';
4 | import {
5 | CardHeader as BsCardHeader
6 | } from 'reactstrap';
7 |
8 | import classes from './CardHeader.scss';
9 |
10 | const CardHeader = (props) => {
11 | const { type, color, className, children, ...otherProps } = props;
12 | const cardHeaderClass = classNames(className,
13 | classes['custom-card-header'],
14 | type && classes[`custom-card-header--${ type }`],
15 | color && classes[`custom-card-header--color-${ color }`]
16 | );
17 | return (
18 |
19 | { children }
20 |
21 | );
22 | };
23 | CardHeader.propTypes = {
24 | type: PropTypes.string,
25 | color: PropTypes.string,
26 | className: PropTypes.string,
27 | ...BsCardHeader.propTypes
28 | };
29 |
30 | export { CardHeader };
31 |
--------------------------------------------------------------------------------
/app/components/CardHeader/CardHeader.scss:
--------------------------------------------------------------------------------
1 | @import "../../styles/variables";
2 |
3 | .custom-card-header {
4 | &--background {
5 | color: map-get($dashboard-colors, "white");
6 |
7 | @each $name, $color in $dashboard-colors {
8 | &.custom-card-header--color-#{$name} {
9 | background-color: $color;
10 | }
11 | }
12 | }
13 |
14 | &--border {
15 | @each $name, $color in $dashboard-colors {
16 | border-bottom: 2px solid;
17 | background: none;
18 |
19 | &.custom-card-header--color-#{$name} {
20 | border-bottom-color: $color;
21 | }
22 | }
23 | }
24 | }
--------------------------------------------------------------------------------
/app/components/CardHeader/index.js:
--------------------------------------------------------------------------------
1 | import { CardHeader } from './CardHeader';
2 |
3 | export default CardHeader;
--------------------------------------------------------------------------------
/app/components/Checkable/Checkable.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 |
4 | import { Provider } from './context';
5 |
6 | class Checkable extends React.Component {
7 | static propTypes = {
8 | children: PropTypes.node.isRequired,
9 | tag: PropTypes.oneOfType([
10 | PropTypes.func,
11 | PropTypes.string
12 | ])
13 | };
14 | static defaultProps = {
15 | tag: "div"
16 | };
17 |
18 | constructor(props) {
19 | super(props);
20 |
21 | this.state = {
22 | isChecked: false
23 | };
24 | }
25 |
26 | render() {
27 | const { tag, children, ...otherProps } = this.props;
28 | const Tag = this.props.tag;
29 |
30 | return (
31 | { this.setState({ isChecked: enabled || !this.state.isChecked }) }
35 | }}
36 | >
37 |
38 | { children }
39 |
40 |
41 | );
42 | }
43 | }
44 |
45 | export { Checkable };
46 |
--------------------------------------------------------------------------------
/app/components/Checkable/CheckableTrigger.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import classNames from 'classnames';
3 | import PropTypes from 'prop-types';
4 |
5 | import { Consumer } from './context';
6 |
7 | import classes from './CheckableTrigger.scss';
8 |
9 | const CheckableTrigger = (props) => {
10 | const { children, tag, className, ...otherProps } = props;
11 | const Tag = tag;
12 | const tagClass = classNames(classes['checkable__trigger'], className);
13 |
14 | return (
15 |
16 | {
17 | (value) => (
18 | { value.toggle() } }>
19 | { children }
20 |
21 | )
22 | }
23 |
24 | );
25 | };
26 | CheckableTrigger.propTypes = {
27 | children: PropTypes.node,
28 | className: PropTypes.string,
29 | tag: PropTypes.oneOfType([
30 | PropTypes.func,
31 | PropTypes.string
32 | ])
33 | };
34 | CheckableTrigger.defaultProps = {
35 | tag: "div"
36 | };
37 |
38 | export { CheckableTrigger };
--------------------------------------------------------------------------------
/app/components/Checkable/CheckableTrigger.scss:
--------------------------------------------------------------------------------
1 | .checkable__trigger {
2 | cursor: pointer;
3 | }
--------------------------------------------------------------------------------
/app/components/Checkable/context.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const { Provider, Consumer } = React.createContext();
4 |
5 | export {
6 | Provider,
7 | Consumer
8 | };
9 |
--------------------------------------------------------------------------------
/app/components/Checkable/index.js:
--------------------------------------------------------------------------------
1 | import { Checkable } from './Checkable';
2 | import { CheckableTrigger } from './CheckableTrigger';
3 | import { CheckableInput } from './CheckableInput';
4 |
5 | Checkable.Trigger = CheckableTrigger;
6 | Checkable.Input = CheckableInput;
7 |
8 | export default Checkable;
--------------------------------------------------------------------------------
/app/components/CustomInput/CustomInput.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import classNames from 'classnames';
3 | import { CustomInput as RSCustomInput } from 'reactstrap';
4 |
5 | const CustomInput = (props) => {
6 | const { className, ...otherProps } = props;
7 | const inputClass = classNames(className, {
8 | 'custom-control-empty': !props.label
9 | });
10 |
11 | return (
12 |
13 | );
14 | }
15 | CustomInput.propTypes = { ...RSCustomInput.propTypes };
16 |
17 | export { CustomInput };
18 |
--------------------------------------------------------------------------------
/app/components/CustomInput/index.js:
--------------------------------------------------------------------------------
1 | import { CustomInput } from './CustomInput';
2 |
3 | export default CustomInput;
4 |
--------------------------------------------------------------------------------
/app/components/Divider/Divider.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import classNames from 'classnames';
4 |
5 | export const Divider = ({ position, children, className }) => {
6 | const dividerClass = classNames({
7 | 'hr-text-center': position === 'center',
8 | 'hr-text-right': position === 'right'
9 | }, 'hr-text', className);
10 |
11 | return (
12 |
13 | { children }
14 |
15 | )
16 | }
17 |
18 | Divider.propTypes = {
19 | position: PropTypes.string,
20 | className: PropTypes.string,
21 | children: PropTypes.node
22 | }
--------------------------------------------------------------------------------
/app/components/Divider/index.js:
--------------------------------------------------------------------------------
1 | import { Divider } from './Divider';
2 |
3 | export default Divider;
4 |
--------------------------------------------------------------------------------
/app/components/EmptyLayout/EmptyLayoutSection.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import _ from 'lodash';
3 | import PropTypes from 'prop-types';
4 | import classNames from 'classnames';
5 |
6 | const EmptyLayoutSection = (props) => {
7 | const sectionClass = classNames(props.className, 'fullscreen__section', {
8 | 'fullscreen__section--center': props.center
9 | });
10 | const maxWidth = _.isNumber(props.width) ? `${props.width}px` : props.width;
11 | return (
12 |
13 | {
14 | props.center ?
15 |
16 | { props.children }
17 |
: props.children
18 | }
19 |
20 | )
21 | };
22 | EmptyLayoutSection.propTypes = {
23 | className: PropTypes.string,
24 | children: PropTypes.node.isRequired,
25 | center: PropTypes.bool,
26 | width: PropTypes.oneOfType([PropTypes.number, PropTypes.string])
27 | };
28 | EmptyLayoutSection.defaultProps = {
29 | width: '420px'
30 | }
31 |
32 | export { EmptyLayoutSection };
33 |
--------------------------------------------------------------------------------
/app/components/EmptyLayout/index.js:
--------------------------------------------------------------------------------
1 | import { EmptyLayout } from './EmptyLayout';
2 | import { EmptyLayoutSection } from './EmptyLayoutSection';
3 |
4 | EmptyLayout.Section = EmptyLayoutSection;
5 |
6 | export default EmptyLayout;
7 |
--------------------------------------------------------------------------------
/app/components/ExtendedDropdown/ExtendedDropdown.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import classNames from 'classnames';
4 | import { DropdownMenu } from 'reactstrap';
5 |
6 | export const ExtendedDropdown = ({ className, ...otherProps }) => {
7 | const classes = classNames(
8 | className,
9 | 'extended-dropdown'
10 | );
11 | return (
12 |
13 | );
14 | }
15 | ExtendedDropdown.propTypes = {
16 | className: PropTypes.string,
17 | };
18 |
--------------------------------------------------------------------------------
/app/components/ExtendedDropdown/ExtendedDropdownLink.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Link } from 'react-router-dom';
3 | import { DropdownContext } from 'reactstrap/es/DropdownContext';
4 |
5 | const ExtendedDropdownLink = (props) => {
6 | const { children, ...otherProps } = props;
7 |
8 | return (
9 |
10 | {
11 | ({ toggle }) => (
12 | { toggle(); } }>
13 | { children }
14 |
15 | )
16 | }
17 |
18 | );
19 | };
20 | ExtendedDropdownLink.propTypes = { ...Link.propTypes };
21 | ExtendedDropdownLink.defaultProps = { ...Link.defaultProps };
22 |
23 | export { ExtendedDropdownLink };
24 |
--------------------------------------------------------------------------------
/app/components/ExtendedDropdown/ExtendedDropdownSection.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import classNames from 'classnames';
4 |
5 | const ExtendedDropdownSection = (props) => {
6 | const { children, list, className, tag, ...otherProps } = props;
7 | const sectionClass = classNames(
8 | "extended-dropdown__section", className, {
9 | "extended-dropdown__section--list": list
10 | }
11 | );
12 | const Tag = tag;
13 |
14 | return (
15 |
16 | { children }
17 |
18 | );
19 | };
20 | ExtendedDropdownSection.propTypes = {
21 | children: PropTypes.node,
22 | list: PropTypes.bool,
23 | className: PropTypes.string,
24 | tag: PropTypes.oneOfType([PropTypes.string, PropTypes.func])
25 | };
26 | ExtendedDropdownSection.defaultProps = {
27 | tag: "div"
28 | };
29 |
30 | export { ExtendedDropdownSection };
--------------------------------------------------------------------------------
/app/components/ExtendedDropdown/index.js:
--------------------------------------------------------------------------------
1 | import { ExtendedDropdown } from './ExtendedDropdown';
2 | import { ExtendedDropdownSection } from './ExtendedDropdownSection';
3 | import { ExtendedDropdownLink } from './ExtendedDropdownLink';
4 |
5 | ExtendedDropdown.Section = ExtendedDropdownSection;
6 | ExtendedDropdown.Link = ExtendedDropdownLink;
7 |
8 | export default ExtendedDropdown;
--------------------------------------------------------------------------------
/app/components/FloatGrid/Ready.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { FloatGridContext } from './floatGridContext';
4 |
5 | export const Ready = ({ children }) => (
6 |
7 | {
8 | ({ gridReady }) => gridReady ? children : null
9 | }
10 |
11 | );
12 | Ready.propTypes = {
13 | children: PropTypes.node
14 | }
--------------------------------------------------------------------------------
/app/components/FloatGrid/floatGridContext.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | export const FloatGridContext = React.createContext();
4 |
--------------------------------------------------------------------------------
/app/components/FloatGrid/index.js:
--------------------------------------------------------------------------------
1 | import { Col } from './Col';
2 | import { Row } from './Row';
3 | import { Grid } from './Grid';
4 | import { Ready } from './Ready';
5 |
6 | Grid.Col = Col;
7 | Grid.Row = Row;
8 | Grid.Ready = Ready;
9 |
10 | export const applyColumn = (columnId, layouts) => ({
11 | ...layouts[columnId],
12 | i: columnId,
13 | key: columnId
14 | });
15 |
16 | export default Grid;
17 |
--------------------------------------------------------------------------------
/app/components/HolderProvider/HolderIconProvider.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 |
4 | import { HolderTextProvider } from './HolderTextProvider';
5 |
6 | const HolderIconProvider = (props) => {
7 | const { iconChar, children, ...otherProps } = props;
8 | return (
9 |
14 | { children }
15 |
16 | );
17 | };
18 | HolderIconProvider.propTypes = {
19 | iconChar: PropTypes.string.isRequired,
20 | children: PropTypes.node
21 | };
22 |
23 | export { HolderIconProvider };
--------------------------------------------------------------------------------
/app/components/HolderProvider/index.js:
--------------------------------------------------------------------------------
1 | import { HolderTextProvider } from './HolderTextProvider';
2 | import { HolderIconProvider } from './HolderIconProvider';
3 |
4 | const HolderProvider = {
5 | Text: HolderTextProvider,
6 | Icon: HolderIconProvider
7 | };
8 |
9 | export default HolderProvider;
10 |
11 |
--------------------------------------------------------------------------------
/app/components/IconWithBadge/IconWithBadge.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import classNames from 'classnames';
4 |
5 | const IconWithBadge = (props) => {
6 | const { badge, children, className } = props;
7 | const adjustedBadge = React.cloneElement(badge, {
8 | className: classNames(
9 | badge.props.className,
10 | 'icon-with-badge__badge'
11 | )
12 | });
13 | const wrapClass = classNames(className, 'icon-with-badge');
14 | return (
15 |
16 | { children }
17 | { adjustedBadge }
18 |
19 | );
20 | };
21 | IconWithBadge.propTypes = {
22 | badge: PropTypes.node,
23 | children: PropTypes.node,
24 | className: PropTypes.string
25 | };
26 |
27 | export { IconWithBadge };
28 |
--------------------------------------------------------------------------------
/app/components/IconWithBadge/index.js:
--------------------------------------------------------------------------------
1 | import { IconWithBadge } from './IconWithBadge';
2 |
3 | export default IconWithBadge;
4 |
--------------------------------------------------------------------------------
/app/components/InputGroupAddon/InputGroupAddon.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import _ from 'lodash';
3 |
4 | import {
5 | InputGroupAddon as BsInputGroupAddon
6 | } from 'reactstrap';
7 |
8 | const InputGroupAddon = (props) => {
9 | const { children, ...otherProps } = props;
10 | const childArr = React.Children.toArray(children);
11 | const isFa = _.some(childArr, (child) =>
12 | React.isValidElement(child) && child.props.className && _.includes(child.props.className, 'fa'));
13 | const isCheckRadio = _.some(childArr, (child) =>
14 | React.isValidElement(child) && (child.props.type === 'radio' || child.props.type === 'checkbox'));
15 |
16 | let child = isFa || isCheckRadio ? (
17 |
18 | { children }
19 |
20 | ) : children;
21 |
22 | return (
23 |
24 | { child }
25 |
26 | );
27 | }
28 | InputGroupAddon.propTypes = {
29 | ...BsInputGroupAddon.propTypes
30 | };
31 | InputGroupAddon.defaultProps = BsInputGroupAddon.defaultProps;
32 |
33 | export { InputGroupAddon };
34 |
--------------------------------------------------------------------------------
/app/components/InputGroupAddon/index.js:
--------------------------------------------------------------------------------
1 | import { InputGroupAddon } from './InputGroupAddon';
2 |
3 | export default InputGroupAddon;
--------------------------------------------------------------------------------
/app/components/Layout/LayoutContent.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 |
4 | const LayoutContent = (props) => (
5 |
6 | { props.children }
7 |
8 | );
9 |
10 | LayoutContent.propTypes = {
11 | children: PropTypes.node
12 | };
13 | LayoutContent.layoutPartName = "content";
14 |
15 | export {
16 | LayoutContent
17 | };
18 |
--------------------------------------------------------------------------------
/app/components/Layout/LayoutNavbar.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 |
4 | const LayoutNavbar = (props) => {
5 | const navbar = React.Children.only(props.children);
6 |
7 | return (
8 |
9 | {
10 | React.cloneElement(navbar, { fixed: null })
11 | }
12 |
13 | );
14 | };
15 |
16 | LayoutNavbar.propTypes = {
17 | children: PropTypes.node
18 | };
19 | LayoutNavbar.layoutPartName = "navbar";
20 |
21 | export {
22 | LayoutNavbar
23 | };
24 |
--------------------------------------------------------------------------------
/app/components/Layout/LayoutSidebar.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import classNames from 'classnames';
4 |
5 | const LayoutSidebar = (props) => {
6 | const sidebarClass = classNames("layout__sidebar", {
7 | "layout__sidebar--slim": props.sidebarSlim,
8 | "layout__sidebar--collapsed": props.sidebarCollapsed
9 | });
10 |
11 | return (
12 |
13 | { props.children }
14 |
15 | );
16 | };
17 |
18 | LayoutSidebar.propTypes = {
19 | children: PropTypes.node,
20 | sidebarSlim: PropTypes.bool,
21 | sidebarCollapsed: PropTypes.bool
22 | };
23 | LayoutSidebar.layoutPartName = "sidebar";
24 |
25 | export {
26 | LayoutSidebar
27 | };
28 |
--------------------------------------------------------------------------------
/app/components/Layout/PageConfigContext.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const PageConfigContext = React.createContext();
4 |
5 | export {
6 | PageConfigContext
7 | };
8 |
--------------------------------------------------------------------------------
/app/components/Layout/index.js:
--------------------------------------------------------------------------------
1 | import { Layout } from './Layout';
2 | import { LayoutContent } from './LayoutContent';
3 | import { LayoutNavbar } from './LayoutNavbar';
4 | import { LayoutSidebar } from './LayoutSidebar';
5 | import { withPageConfig } from './withPageConfig';
6 | import { setupPage } from './setupPage';
7 | import { PageConfigContext } from './PageConfigContext';
8 |
9 | Layout.Sidebar = LayoutSidebar;
10 | Layout.Navbar = LayoutNavbar;
11 | Layout.Content = LayoutContent;
12 |
13 | const PageConfigProvider = PageConfigContext.Provider;
14 | const PageConfigConsumer = PageConfigContext.Consumer;
15 |
16 | export default Layout;
17 | export { withPageConfig, setupPage, PageConfigProvider, PageConfigConsumer };
18 |
--------------------------------------------------------------------------------
/app/components/Layout/setupPage.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import _ from 'lodash';
3 | import PropTypes from 'prop-types';
4 | import { withPageConfig } from './withPageConfig'
5 |
6 | export const setupPage = (startupConfig) =>
7 | (Component) => {
8 | class PageSetupWrap extends React.Component {
9 | static propTypes = {
10 | pageConfig: PropTypes.object
11 | }
12 | componentDidMount() {
13 | this.prevConfig = _.pick(this.props.pageConfig,
14 | ['pageTitle', 'pageDescription', 'pageKeywords']);
15 | this.props.pageConfig.changeMeta(startupConfig);
16 | }
17 |
18 | componentWillUnmount() {
19 | this.props.pageConfig.changeMeta(this.prevConfig);
20 | }
21 |
22 | render() {
23 | return (
24 |
25 | )
26 | }
27 | }
28 |
29 | return withPageConfig(PageSetupWrap);
30 | };
--------------------------------------------------------------------------------
/app/components/Layout/withPageConfig.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { PageConfigContext } from './PageConfigContext';
3 |
4 | export const withPageConfig = (Component) => {
5 | const WithPageConfig = (props) => (
6 |
7 | {
8 | (pageConfig) =>
9 | }
10 |
11 | );
12 | return WithPageConfig;
13 | };
14 |
--------------------------------------------------------------------------------
/app/components/Nav/index.js:
--------------------------------------------------------------------------------
1 | import { Nav } from './nav';
2 |
3 | export default Nav;
4 |
--------------------------------------------------------------------------------
/app/components/Nav/nav.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import classNames from 'classnames';
4 |
5 | import { Nav as BsNav } from 'reactstrap';
6 |
7 | const Nav = ({ accent, className, ...otherProps }) => {
8 | return (
9 |
15 | );
16 | };
17 | Nav.propTypes = {
18 | ...BsNav.propTypes,
19 | accent: PropTypes.bool,
20 | };
21 | Nav.defaultProps = {
22 | accent: false
23 | };
24 |
25 | export { Nav };
26 |
--------------------------------------------------------------------------------
/app/components/Navbar/index.js:
--------------------------------------------------------------------------------
1 | import { Navbar } from './navbar';
2 |
3 | export default Navbar;
--------------------------------------------------------------------------------
/app/components/NavbarThemeProvider/NavbarThemeProvider.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import classNames from 'classnames';
4 |
5 | const NavbarThemeProvider = ({ style, color, children, className }) => {
6 | const isSingleChild = React.Children.count(children) === 1;
7 | const themeClass = `navbar-${style}-${color}`;
8 |
9 | if (isSingleChild) {
10 | const child = React.Children.only(children);
11 |
12 | return React.cloneElement(child, {
13 | className: classNames(
14 | child.props.className,
15 | themeClass
16 | ),
17 | });
18 | } else {
19 | return (
20 |
21 | { children }
22 |
23 | );
24 | }
25 | };
26 | NavbarThemeProvider.propTypes = {
27 | children: PropTypes.node.isRequired,
28 | style: PropTypes.string,
29 | color: PropTypes.string,
30 | };
31 | NavbarThemeProvider.defaultProps = {
32 | style: 'light',
33 | color: 'primary',
34 | };
35 |
36 | export { NavbarThemeProvider };
37 |
--------------------------------------------------------------------------------
/app/components/NavbarThemeProvider/index.js:
--------------------------------------------------------------------------------
1 | import { NavbarThemeProvider } from './NavbarThemeProvider';
2 |
3 | export default NavbarThemeProvider;
4 |
--------------------------------------------------------------------------------
/app/components/NestedDropdown/context.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const { Consumer, Provider } = React.createContext();
4 |
5 | export {
6 | Consumer,
7 | Provider
8 | };
9 |
--------------------------------------------------------------------------------
/app/components/NestedDropdown/index.js:
--------------------------------------------------------------------------------
1 | import { NestedDropdown } from './NestedDropdown';
2 | import { NestedDropdownSubmenu } from './NestedDropdownSubmenu';
3 |
4 | NestedDropdown.Submenu = NestedDropdownSubmenu;
5 |
6 | export default NestedDropdown;
7 |
--------------------------------------------------------------------------------
/app/components/OuterClick/index.js:
--------------------------------------------------------------------------------
1 | import { OuterClick } from './OuterClick';
2 |
3 | export default OuterClick;
--------------------------------------------------------------------------------
/app/components/PageLoader/PageLoader.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import classes from './PageLoader.scss';
4 |
5 | const PageLoader = () => (
6 | Loading...
7 | );
8 |
9 | export default PageLoader;
--------------------------------------------------------------------------------
/app/components/PageLoader/PageLoader.scss:
--------------------------------------------------------------------------------
1 | .pageLoader {
2 | background-color: cyan;
3 | position: fixed;
4 | top: 0;
5 | left: 0;
6 | bottom: 0;
7 | right: 0;
8 | z-index: 1000;
9 | }
--------------------------------------------------------------------------------
/app/components/PageLoader/index.js:
--------------------------------------------------------------------------------
1 | import PageLoader from './PageLoader';
2 |
3 | export default PageLoader;
--------------------------------------------------------------------------------
/app/components/Progress/Progress.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import classNames from 'classnames';
4 |
5 | import {
6 | Progress as BsProgress
7 | } from 'reactstrap';
8 |
9 | import classes from './Progress.scss';
10 |
11 | const Progress = (props) => {
12 | const { children, slim, className, ...otherProps } = props;
13 | const progressClass = classNames(className, {
14 | [classes['slim']]: slim
15 | });
16 |
17 | return (
18 |
19 | { !slim && children }
20 |
21 | );
22 | };
23 |
24 | Progress.propTypes = {
25 | slim: PropTypes.bool,
26 | className: PropTypes.string,
27 | children: PropTypes.node
28 | };
29 |
30 | export { Progress };
--------------------------------------------------------------------------------
/app/components/Progress/Progress.scss:
--------------------------------------------------------------------------------
1 | .slim {
2 | height: 0.3rem;
3 | }
--------------------------------------------------------------------------------
/app/components/Progress/index.js:
--------------------------------------------------------------------------------
1 | import { Progress } from './Progress';
2 |
3 | export default Progress;
4 |
--------------------------------------------------------------------------------
/app/components/Recharts/CartesianGrid.js:
--------------------------------------------------------------------------------
1 | import { CartesianGrid } from 'recharts';
2 |
3 | import styleConfig from './config';
4 |
5 | class CustomCartesianGrid extends CartesianGrid {
6 | static defaultProps = {
7 | ...CartesianGrid.defaultProps,
8 | ...styleConfig.grid,
9 | }
10 | }
11 |
12 | export { CustomCartesianGrid as CartesianGrid };
13 |
--------------------------------------------------------------------------------
/app/components/Recharts/DefAreaValueColor.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 |
4 | import colors from './../../colors';
5 |
6 | const gradientOffset = (data) => {
7 | const dataMax = Math.max(...data.map((i) => i.uv));
8 | const dataMin = Math.min(...data.map((i) => i.uv));
9 |
10 | if (dataMax <= 0){
11 | return 0
12 | }
13 | else if (dataMin >= 0){
14 | return 1
15 | }
16 | else{
17 | return dataMax / (dataMax - dataMin);
18 | }
19 | }
20 |
21 | export const DefAreaValueColor = (props) => {
22 | const offset = gradientOffset(props.data);
23 |
24 | return (
25 |
26 |
27 |
28 |
29 | );
30 | };
31 | DefAreaValueColor.propTypes = {
32 | positiveColor: PropTypes.string,
33 | negativeColor: PropTypes.string,
34 | id: PropTypes.string.isRequired,
35 | data: PropTypes.array.isRequired
36 | };
37 | DefAreaValueColor.defaultProps = {
38 | positiveColor: colors['success-07'],
39 | negativeColor: colors['danger-07']
40 | };
41 |
--------------------------------------------------------------------------------
/app/components/Recharts/Legend.js:
--------------------------------------------------------------------------------
1 | import { Legend as RCLegend } from 'recharts';
2 |
3 | import styleConfig from './config';
4 |
5 | export class Legend extends RCLegend {
6 | static defaultProps = {
7 | ...RCLegend.defaultProps,
8 | ...styleConfig.legend
9 | }
10 | }
--------------------------------------------------------------------------------
/app/components/Recharts/PieValueLabel.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 |
4 | import config from './config';
5 |
6 | const RADIAN = Math.PI / 180;
7 |
8 | export const PieValueLabel = (props) => {
9 | const { cx, cy, midAngle, innerRadius, outerRadius, percent, color } = props;
10 | const radius = innerRadius + (outerRadius - innerRadius) * 0.5;
11 | const x = cx + radius * Math.cos(-midAngle * RADIAN);
12 | const y = cy + radius * Math.sin(-midAngle * RADIAN);
13 |
14 | return (
15 | cx ? 'start' : 'end' }
19 | dominantBaseline="central"
20 | fill={ props.color || config.pieLabel.fill }
21 | fontSize={ config.pieLabel.fontSize }
22 | >
23 | {`${(percent * 100).toFixed(0)}%`}
24 |
25 | );
26 | };
27 | PieValueLabel.propTypes = {
28 | cx: PropTypes.number,
29 | cy: PropTypes.number,
30 | midAngle: PropTypes.number,
31 | innerRadius: PropTypes.number,
32 | outerRadius: PropTypes.number,
33 | percent: PropTypes.number,
34 | color: PropTypes.string
35 | };
36 |
--------------------------------------------------------------------------------
/app/components/Recharts/PolarAngleAxis.js:
--------------------------------------------------------------------------------
1 | import { PolarAngleAxis as RCPolarAngleAxis} from 'recharts';
2 |
3 | import styleConfig from './config';
4 |
5 | export class PolarAngleAxis extends RCPolarAngleAxis {
6 | static defaultProps = {
7 | ...RCPolarAngleAxis.defaultProps,
8 | ...styleConfig.polarAngleAxis
9 | }
10 | }
--------------------------------------------------------------------------------
/app/components/Recharts/PolarGrid.js:
--------------------------------------------------------------------------------
1 | import { PolarGrid } from 'recharts';
2 |
3 | import styleConfig from './config';
4 |
5 | class CustomPolarGrid extends PolarGrid {
6 | static defaultProps = {
7 | ...PolarGrid.defaultProps,
8 | ...styleConfig.polarGrid
9 | }
10 | }
11 |
12 | export { CustomPolarGrid as PolarGrid };
13 |
--------------------------------------------------------------------------------
/app/components/Recharts/PolarRadiusAxis.js:
--------------------------------------------------------------------------------
1 | import { PolarRadiusAxis as RCPolarRadiusAxis} from 'recharts';
2 |
3 | import styleConfig from './config';
4 |
5 | export class PolarRadiusAxis extends RCPolarRadiusAxis {
6 | static defaultProps = {
7 | ...RCPolarRadiusAxis.defaultProps,
8 | ...styleConfig.polarRadiusAxis
9 | }
10 | }
--------------------------------------------------------------------------------
/app/components/Recharts/Tooltip.js:
--------------------------------------------------------------------------------
1 | import { Tooltip as RCTooltip } from 'recharts';
2 |
3 | import styleConfig from './config';
4 |
5 | export class Tooltip extends RCTooltip {
6 | static defaultProps = {
7 | ...RCTooltip.defaultProps,
8 | ...styleConfig.tooltip
9 | }
10 | }
--------------------------------------------------------------------------------
/app/components/Recharts/ValueLabel.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 |
4 | import config from './config';
5 |
6 | export const ValueLabel = (props) =>
7 |
13 | { props.value }
14 | ;
15 |
16 | ValueLabel.propTypes = {
17 | value: PropTypes.number,
18 | x: PropTypes.number,
19 | y: PropTypes.number
20 | };
--------------------------------------------------------------------------------
/app/components/Recharts/XAxis.js:
--------------------------------------------------------------------------------
1 | import { XAxis as RCXAxis } from 'recharts';
2 |
3 | import styleConfig from './config';
4 |
5 | export class XAxis extends RCXAxis {
6 | static defaultProps = {
7 | ...RCXAxis.defaultProps,
8 | ...styleConfig.axis
9 | }
10 | }
--------------------------------------------------------------------------------
/app/components/Recharts/YAxis.js:
--------------------------------------------------------------------------------
1 | import { YAxis as RCYAxis } from 'recharts';
2 |
3 | import styleConfig from './config';
4 |
5 | export class YAxis extends RCYAxis {
6 | static defaultProps = {
7 | ...RCYAxis.defaultProps,
8 | ...styleConfig.axis
9 | }
10 | }
--------------------------------------------------------------------------------
/app/components/Recharts/ZAxis.js:
--------------------------------------------------------------------------------
1 | import { ZAxis as RCZAxis } from 'recharts';
2 |
3 | import styleConfig from './config';
4 |
5 | export class ZAxis extends RCZAxis {
6 | static defaultProps = {
7 | ...RCZAxis.defaultProps,
8 | ...styleConfig.axis
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/app/components/Sidebar/Sidebar.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 |
4 | import OuterClick from './../OuterClick';
5 | import { withPageConfig } from './../Layout';
6 | import { SidebarContent } from './SidebarContent';
7 |
8 | const Sidebar = (props) => (
9 |
10 | { /* Enable OuterClick only in sidebar overlay mode */}
11 | props.pageConfig.toggleSidebar() }
20 | >
21 |
22 |
23 |
24 | );
25 |
26 | Sidebar.propTypes = {
27 | children: PropTypes.node,
28 | slim: PropTypes.bool,
29 | collapsed: PropTypes.bool,
30 | animationsDisabled: PropTypes.bool,
31 | pageConfig: PropTypes.object
32 | };
33 |
34 | const cfgSidebar = withPageConfig(Sidebar);
35 |
36 | export {
37 | cfgSidebar as Sidebar
38 | };
39 |
--------------------------------------------------------------------------------
/app/components/Sidebar/SidebarClose.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 |
4 | const SidebarClose = (props) => (
5 |
6 | { props.children }
7 |
8 | );
9 | SidebarClose.propTypes = {
10 | children: PropTypes.node
11 | };
12 |
13 | export { SidebarClose };
--------------------------------------------------------------------------------
/app/components/Sidebar/SidebarHideSlim.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import classNames from 'classnames';
4 |
5 | export const SidebarHideSlim = ({ children }) => {
6 | return React.Children.map(children, (child) =>
7 | React.cloneElement(child, {
8 | className: classNames(
9 | child.props.className,
10 | 'sidebar__hide-slim'
11 | )
12 | })
13 | );
14 | };
15 |
16 | SidebarHideSlim.propTypes = {
17 | children: PropTypes.node,
18 | };
19 |
--------------------------------------------------------------------------------
/app/components/Sidebar/SidebarMobileFluid.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import classNames from 'classnames';
4 |
5 | const SidebarMobileFluid = (props) => {
6 | const wrapClass = classNames("sidebar__mobile-fluid", props.className);
7 |
8 | return (
9 |
10 | { props.children }
11 |
12 | );
13 | };
14 |
15 | SidebarMobileFluid.propTypes = {
16 | children: PropTypes.node,
17 | className: PropTypes.string
18 | };
19 |
20 | export {
21 | SidebarMobileFluid
22 | };
23 |
--------------------------------------------------------------------------------
/app/components/Sidebar/SidebarSection.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import classNames from 'classnames';
4 |
5 | const SidebarSection = (props) => {
6 | const sectionClass = classNames("sidebar__section", {
7 | 'sidebar__section--fluid': props.fluid,
8 | 'sidebar__section--cover': props.cover
9 | }, props.className);
10 |
11 | return (
12 |
13 | { props.children }
14 |
15 | );
16 | };
17 |
18 | SidebarSection.propTypes = {
19 | children: PropTypes.node,
20 | fluid: PropTypes.bool,
21 | cover: PropTypes.bool,
22 | className: PropTypes.string
23 | };
24 |
25 | export {
26 | SidebarSection
27 | };
28 |
--------------------------------------------------------------------------------
/app/components/Sidebar/SidebarShowSlim.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import classNames from 'classnames';
4 |
5 | export const SidebarShowSlim = ({ children }) => {
6 | return React.Children.map(children, (child) =>
7 | React.cloneElement(child, {
8 | className: classNames(
9 | child.props.className,
10 | 'sidebar__show-slim'
11 | )
12 | })
13 | );
14 | };
15 |
16 | SidebarShowSlim.propTypes = {
17 | children: PropTypes.node,
18 | };
19 |
--------------------------------------------------------------------------------
/app/components/Sidebar/index.js:
--------------------------------------------------------------------------------
1 | import { Sidebar } from './Sidebar';
2 | import { SidebarSection } from './SidebarSection';
3 | import { SidebarClose } from './SidebarClose';
4 | import { SidebarMobileFluid } from './SidebarMobileFluid';
5 | import { SidebarShowSlim } from './SidebarShowSlim';
6 | import { SidebarHideSlim } from './SidebarHideSlim';
7 |
8 | Sidebar.Section = SidebarSection;
9 | Sidebar.Close = SidebarClose;
10 | Sidebar.MobileFluid = SidebarMobileFluid;
11 | Sidebar.ShowSlim = SidebarShowSlim;
12 | Sidebar.HideSlim = SidebarHideSlim;
13 |
14 | export default Sidebar;
--------------------------------------------------------------------------------
/app/components/SidebarMenu/MenuContext.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const MenuContext = React.createContext({
4 | entries: { },
5 | addEntry: () => { },
6 | removeEntry: () => { }
7 | });
8 |
9 | export { MenuContext };
--------------------------------------------------------------------------------
/app/components/SidebarMenu/index.js:
--------------------------------------------------------------------------------
1 | import { SidebarMenu } from './SidebarMenu';
2 | import { SidebarMenuItem } from './SidebarMenuItem';
3 |
4 | SidebarMenu.Item = SidebarMenuItem;
5 |
6 | export default SidebarMenu;
7 |
--------------------------------------------------------------------------------
/app/components/SidebarTrigger/SidebarTrigger.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { NavLink } from 'reactstrap';
3 | import PropTypes from 'prop-types';
4 | import { withPageConfig } from './../Layout';
5 |
6 | const SidebarTrigger = (props) => {
7 | const { tag: Tag, pageConfig, ...otherProps } = props;
8 | return (
9 | { props.pageConfig.toggleSidebar(); return false; } }
11 | active={ Tag !== 'a' ? !pageConfig.sidebarCollapsed : undefined }
12 | { ...otherProps }
13 | >
14 | { props.children }
15 |
16 | )
17 | };
18 | SidebarTrigger.propTypes = {
19 | tag: PropTypes.any,
20 | children: PropTypes.node,
21 | pageConfig: PropTypes.object
22 | }
23 | SidebarTrigger.defaultProps = {
24 | tag: NavLink,
25 | children:
26 | }
27 |
28 | const cfgSidebarTrigger = withPageConfig(SidebarTrigger);
29 |
30 | export {
31 | cfgSidebarTrigger as SidebarTrigger
32 | }
33 |
--------------------------------------------------------------------------------
/app/components/SidebarTrigger/index.js:
--------------------------------------------------------------------------------
1 | import { SidebarTrigger } from './SidebarTrigger';
2 |
3 | export default SidebarTrigger;
--------------------------------------------------------------------------------
/app/components/StarRating/StarRating.scss:
--------------------------------------------------------------------------------
1 | .starRating {
2 | display: inline-block;
3 | }
4 |
--------------------------------------------------------------------------------
/app/components/StarRating/index.js:
--------------------------------------------------------------------------------
1 | import { StarRating } from './StarRating';
2 |
3 | export default StarRating;
4 |
--------------------------------------------------------------------------------
/app/components/Theme/ThemeClass.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 |
4 | import { Consumer } from './ThemeContext';
5 |
6 | const ThemeClass = ({ children, color, style }) => {
7 | const layoutThemeClass = `layout--theme--${ style }--${ color }`;
8 |
9 | return children(layoutThemeClass);
10 | };
11 | ThemeClass.propTypes = {
12 | children: PropTypes.func.isRequired,
13 | color: PropTypes.string,
14 | style: PropTypes.string,
15 | };
16 |
17 | const ContextThemeClass = (otherProps) =>
18 |
19 | {
20 | (themeState) =>
21 | }
22 | ;
23 |
24 | export { ContextThemeClass as ThemeClass };
25 |
26 |
--------------------------------------------------------------------------------
/app/components/Theme/ThemeContext.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const { Provider, Consumer } = React.createContext();
4 |
5 | export { Provider, Consumer };
6 |
--------------------------------------------------------------------------------
/app/components/Theme/index.js:
--------------------------------------------------------------------------------
1 | export * from './ThemeClass';
2 | export * from './ThemeSelector';
3 | export * from './ThemeProvider';
4 | export { Consumer as ThemeConsumer } from './ThemeContext';
5 |
--------------------------------------------------------------------------------
/app/components/Tools/DefaultOnly.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import MediaQuery from 'react-responsive';
4 |
5 | import { withPageConfig } from './../Layout/withPageConfig';
6 |
7 | const DefaultOnly = (props) => (
8 |
9 | {
10 | props.pageConfig.sidebarSlim && props.pageConfig.sidebarCollapsed ? (
11 |
12 | { props.children }
13 |
14 | ) : (
15 | props.children
16 | )
17 | }
18 |
19 | );
20 | DefaultOnly.propTypes = {
21 | children: PropTypes.node.isRequired,
22 | pageConfig: PropTypes.object
23 | };
24 |
25 | const ExtendedDefaultOnly = withPageConfig(DefaultOnly);
26 |
27 | export {
28 | ExtendedDefaultOnly as DefaultOnly
29 | };
--------------------------------------------------------------------------------
/app/components/Tools/SlimOnly.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import MediaQuery from 'react-responsive';
4 |
5 | import { withPageConfig } from './../Layout/withPageConfig';
6 |
7 | const SlimOnly = (props) => (
8 |
9 | {
10 | props.pageConfig.sidebarSlim && props.pageConfig.sidebarCollapsed && props.children
11 | }
12 |
13 | );
14 | SlimOnly.propTypes = {
15 | children: PropTypes.node.isRequired,
16 | pageConfig: PropTypes.object
17 | };
18 |
19 | const ExtendedSlimOnly = withPageConfig(SlimOnly);
20 |
21 | export {
22 | ExtendedSlimOnly as SlimOnly
23 | };
24 |
--------------------------------------------------------------------------------
/app/components/Tools/SlimProps.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import MatchMedia from 'react-responsive';
4 |
5 | import { withPageConfig } from './../../components/Layout/withPageConfig';
6 |
7 | const SlimProps = (props) => {
8 | const {
9 | pageConfig,
10 | children,
11 | slimProps
12 | } = props;
13 |
14 | return (
15 |
16 |
17 | {
18 | /* If slim is enabled extend the children with slimProps */
19 | pageConfig.sidebarSlim && pageConfig.sidebarCollapsed ?
20 | React.Children.map(children, (child) => React.cloneElement(child, slimProps)) :
21 | children
22 | }
23 |
24 |
25 | { children }
26 |
27 |
28 | );
29 | };
30 | SlimProps.propTypes = {
31 | children: PropTypes.node,
32 | pageConfig: PropTypes.object,
33 | slimProps: PropTypes.object,
34 | defaultProps: PropTypes.object
35 | };
36 |
37 | const ExtendedSlimProps
38 | = withPageConfig(SlimProps);
39 |
40 | export {
41 | ExtendedSlimProps as SlimProps
42 | }
--------------------------------------------------------------------------------
/app/components/Tools/index.js:
--------------------------------------------------------------------------------
1 | import { SlimOnly } from './SlimOnly';
2 | import { DefaultOnly } from './DefaultOnly';
3 | import { SlimProps } from './SlimProps';
4 |
5 | const Tools = {
6 | SlimOnly,
7 | DefaultOnly,
8 | SlimProps
9 | };
10 |
11 | export default Tools;
12 |
--------------------------------------------------------------------------------
/app/components/UncontrolledModal/UncontrolledModalClose.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { Button } from 'reactstrap';
4 |
5 | import { Consumer } from './context';
6 |
7 | const UncontrolledModalClose = (props) => {
8 | const { tag, ...otherProps } = props;
9 | const Tag = tag;
10 |
11 | return (
12 |
13 | {
14 | (value) => (
15 | value.toggleModal() }
18 | />
19 | )
20 | }
21 |
22 | )
23 | };
24 | UncontrolledModalClose.propTypes = {
25 | tag: PropTypes.oneOfType([
26 | PropTypes.func,
27 | PropTypes.string
28 | ])
29 | };
30 | UncontrolledModalClose.defaultProps = {
31 | tag: Button
32 | };
33 |
34 | export { UncontrolledModalClose };
35 |
--------------------------------------------------------------------------------
/app/components/UncontrolledModal/context.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const { Provider, Consumer } = React.createContext();
4 |
5 | export {
6 | Provider,
7 | Consumer
8 | }
9 |
--------------------------------------------------------------------------------
/app/components/UncontrolledModal/index.js:
--------------------------------------------------------------------------------
1 | import { UncontrolledModal } from './UncontrolledModal';
2 | import { UncontrolledModalClose } from './UncontrolledModalClose';
3 |
4 | UncontrolledModal.Close = UncontrolledModalClose;
5 |
6 | export default UncontrolledModal;
--------------------------------------------------------------------------------
/app/components/UncontrolledPopover/index.js:
--------------------------------------------------------------------------------
1 | import { UncontrollerPopover } from './UncontrolledPopover';
2 |
3 | export default UncontrollerPopover;
--------------------------------------------------------------------------------
/app/components/UncontrolledTabs/UncontrolledTabs.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 |
4 | import { Provider } from './context';
5 |
6 | class UncontrolledTabs extends React.Component {
7 | static propTypes = {
8 | children: PropTypes.node.isRequired,
9 | initialActiveTabId: PropTypes.string
10 | };
11 |
12 | constructor(props) {
13 | super(props);
14 |
15 | this.state = {
16 | activeTabId: this.props.initialActiveTabId || null
17 | };
18 | }
19 |
20 | render() {
21 | return (
22 | { this.setState({ activeTabId: tabId }) },
24 | activeTabId: this.state.activeTabId
25 | }}>
26 | { this.props.children }
27 |
28 | );
29 | }
30 | }
31 |
32 | export { UncontrolledTabs };
33 |
--------------------------------------------------------------------------------
/app/components/UncontrolledTabs/UncontrolledTabsNavLink.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import classNames from 'classnames';
4 | import _ from 'lodash';
5 | import { NavLink } from 'reactstrap';
6 |
7 | import { Consumer } from './context';
8 |
9 | const UncontrolledTabsNavLink = (props) => (
10 |
11 | {
12 | (value) => (
13 | { value.setActiveTabId(props.tabId) } }
16 | className={ classNames({ active: props.tabId === value.activeTabId }) }
17 | href="javascript:;"
18 | />
19 | )
20 | }
21 |
22 | );
23 | UncontrolledTabsNavLink.propTypes = {
24 | tabId: PropTypes.string.isRequired
25 | };
26 |
27 | export { UncontrolledTabsNavLink };
28 |
29 |
--------------------------------------------------------------------------------
/app/components/UncontrolledTabs/UncontrolledTabsTabContent.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { TabContent } from 'reactstrap';
3 |
4 | import { Consumer } from './context';
5 |
6 | const UncontrolledTabsTabContent = (props) => (
7 |
8 | {
9 | (value) => (
10 |
11 | )
12 | }
13 |
14 | );
15 |
16 | export { UncontrolledTabsTabContent };
--------------------------------------------------------------------------------
/app/components/UncontrolledTabs/context.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const { Provider, Consumer } = React.createContext({});
4 |
5 | export {
6 | Provider,
7 | Consumer
8 | };
9 |
--------------------------------------------------------------------------------
/app/components/UncontrolledTabs/index.js:
--------------------------------------------------------------------------------
1 | import { UncontrolledTabs } from './UncontrolledTabs';
2 | import { UncontrolledTabsNavLink } from './UncontrolledTabsNavLink';
3 | import { UncontrolledTabsTabContent } from './UncontrolledTabsTabContent';
4 |
5 | UncontrolledTabs.NavLink = UncontrolledTabsNavLink;
6 | UncontrolledTabs.TabContent = UncontrolledTabsTabContent;
7 |
8 | export default UncontrolledTabs;
9 |
--------------------------------------------------------------------------------
/app/components/Wizard/index.js:
--------------------------------------------------------------------------------
1 | import { Wizard } from './Wizard';
2 | import { WizardStep } from './WizardStep';
3 |
4 | Wizard.Step = WizardStep;
5 |
6 | export default Wizard;
7 |
--------------------------------------------------------------------------------
/app/components/agGrid.js:
--------------------------------------------------------------------------------
1 | export * from 'ag-grid-react';
2 | export * from 'ag-grid-community';
--------------------------------------------------------------------------------
/app/images/avatars/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/1.jpg
--------------------------------------------------------------------------------
/app/images/avatars/10.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/10.jpg
--------------------------------------------------------------------------------
/app/images/avatars/11.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/11.jpg
--------------------------------------------------------------------------------
/app/images/avatars/12.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/12.jpg
--------------------------------------------------------------------------------
/app/images/avatars/13.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/13.jpg
--------------------------------------------------------------------------------
/app/images/avatars/14.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/14.jpg
--------------------------------------------------------------------------------
/app/images/avatars/15.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/15.jpg
--------------------------------------------------------------------------------
/app/images/avatars/16.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/16.jpg
--------------------------------------------------------------------------------
/app/images/avatars/17.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/17.jpg
--------------------------------------------------------------------------------
/app/images/avatars/18.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/18.jpg
--------------------------------------------------------------------------------
/app/images/avatars/19.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/19.jpg
--------------------------------------------------------------------------------
/app/images/avatars/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/2.jpg
--------------------------------------------------------------------------------
/app/images/avatars/20.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/20.jpg
--------------------------------------------------------------------------------
/app/images/avatars/21.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/21.jpg
--------------------------------------------------------------------------------
/app/images/avatars/22.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/22.jpg
--------------------------------------------------------------------------------
/app/images/avatars/23.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/23.jpg
--------------------------------------------------------------------------------
/app/images/avatars/24.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/24.jpg
--------------------------------------------------------------------------------
/app/images/avatars/25.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/25.jpg
--------------------------------------------------------------------------------
/app/images/avatars/26.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/26.jpg
--------------------------------------------------------------------------------
/app/images/avatars/27.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/27.jpg
--------------------------------------------------------------------------------
/app/images/avatars/28.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/28.jpg
--------------------------------------------------------------------------------
/app/images/avatars/29.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/29.jpg
--------------------------------------------------------------------------------
/app/images/avatars/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/3.jpg
--------------------------------------------------------------------------------
/app/images/avatars/30.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/30.jpg
--------------------------------------------------------------------------------
/app/images/avatars/31.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/31.jpg
--------------------------------------------------------------------------------
/app/images/avatars/32.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/32.jpg
--------------------------------------------------------------------------------
/app/images/avatars/33.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/33.jpg
--------------------------------------------------------------------------------
/app/images/avatars/34.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/34.jpg
--------------------------------------------------------------------------------
/app/images/avatars/35.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/35.jpg
--------------------------------------------------------------------------------
/app/images/avatars/36.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/36.jpg
--------------------------------------------------------------------------------
/app/images/avatars/37.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/37.jpg
--------------------------------------------------------------------------------
/app/images/avatars/38.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/38.jpg
--------------------------------------------------------------------------------
/app/images/avatars/39.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/39.jpg
--------------------------------------------------------------------------------
/app/images/avatars/4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/4.jpg
--------------------------------------------------------------------------------
/app/images/avatars/40.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/40.jpg
--------------------------------------------------------------------------------
/app/images/avatars/41.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/41.jpg
--------------------------------------------------------------------------------
/app/images/avatars/42.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/42.jpg
--------------------------------------------------------------------------------
/app/images/avatars/43.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/43.jpg
--------------------------------------------------------------------------------
/app/images/avatars/44.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/44.jpg
--------------------------------------------------------------------------------
/app/images/avatars/45.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/45.jpg
--------------------------------------------------------------------------------
/app/images/avatars/46.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/46.jpg
--------------------------------------------------------------------------------
/app/images/avatars/47.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/47.jpg
--------------------------------------------------------------------------------
/app/images/avatars/48.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/48.jpg
--------------------------------------------------------------------------------
/app/images/avatars/49.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/49.jpg
--------------------------------------------------------------------------------
/app/images/avatars/5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/5.jpg
--------------------------------------------------------------------------------
/app/images/avatars/50.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/50.jpg
--------------------------------------------------------------------------------
/app/images/avatars/6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/6.jpg
--------------------------------------------------------------------------------
/app/images/avatars/7.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/7.jpg
--------------------------------------------------------------------------------
/app/images/avatars/8.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/8.jpg
--------------------------------------------------------------------------------
/app/images/avatars/9.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/9.jpg
--------------------------------------------------------------------------------
/app/images/avatars/avatar-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/avatars/avatar-1.jpg
--------------------------------------------------------------------------------
/app/images/favicons/apple-touch-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/favicons/apple-touch-icon.png
--------------------------------------------------------------------------------
/app/images/favicons/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/favicons/favicon-16x16.png
--------------------------------------------------------------------------------
/app/images/favicons/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/favicons/favicon-32x32.png
--------------------------------------------------------------------------------
/app/images/favicons/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/images/favicons/favicon.ico
--------------------------------------------------------------------------------
/app/index.js:
--------------------------------------------------------------------------------
1 | import '@babel/polyfill';
2 |
3 | import React from 'react';
4 | import { render } from 'react-dom';
5 |
6 | import App from './components/App';
7 |
8 | render(
9 | ,
10 | document.querySelector('#root')
11 | );
--------------------------------------------------------------------------------
/app/layout/components/NavbarUser.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Link } from 'react-router-dom';
3 | import PropTypes from 'prop-types';
4 |
5 | import {
6 | NavItem,
7 | NavLink
8 | } from './../../components';
9 |
10 | const NavbarUser = (props) => (
11 |
12 |
13 |
14 |
15 |
16 | );
17 | NavbarUser.propTypes = {
18 | className: PropTypes.string,
19 | style: PropTypes.object
20 | };
21 |
22 | export { NavbarUser };
23 |
--------------------------------------------------------------------------------
/app/layout/components/SidebarANavbar.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Link } from 'react-router-dom';
3 |
4 | import {
5 | Navbar,
6 | Nav,
7 | NavItem,
8 | SidebarTrigger
9 | } from './../../components';
10 |
11 | import { NavbarActivityFeed } from './NavbarActivityFeed';
12 | import { NavbarMessages } from './NavbarMessages';
13 | import { NavbarUser } from './NavbarUser';
14 |
15 | export const SidebarANavbar = () => (
16 |
17 |
27 |
32 |
33 | );
34 |
--------------------------------------------------------------------------------
/app/routes/Apps/AccountEdit/index.js:
--------------------------------------------------------------------------------
1 | import AccountEdit from './AccountEdit';
2 |
3 | export default AccountEdit;
--------------------------------------------------------------------------------
/app/routes/Apps/BillingEdit/index.js:
--------------------------------------------------------------------------------
1 | import BillingEdit from './BillingEdit';
2 |
3 | export default BillingEdit;
--------------------------------------------------------------------------------
/app/routes/Apps/Chat/index.js:
--------------------------------------------------------------------------------
1 | import Chat from './Chat';
2 |
3 | export default Chat;
--------------------------------------------------------------------------------
/app/routes/Apps/Clients/index.js:
--------------------------------------------------------------------------------
1 | import Clients from './Clients';
2 |
3 | export default Clients;
--------------------------------------------------------------------------------
/app/routes/Apps/EmailDetails/index.js:
--------------------------------------------------------------------------------
1 | import EmailDetails from './EmailDetails';
2 |
3 | export default EmailDetails;
--------------------------------------------------------------------------------
/app/routes/Apps/Files/FilesGrid.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import { CardColumns } from './../../../components';
4 | import { FilesCardGrid } from "../../components/Files/FilesCardGrid";
5 | import { Paginations } from "../../components/Paginations";
6 |
7 | const FilesGrid = () => (
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
23 |
24 | );
25 |
26 | export default FilesGrid;
--------------------------------------------------------------------------------
/app/routes/Apps/Files/index.js:
--------------------------------------------------------------------------------
1 | import Files from './Files';
2 |
3 | export default Files;
--------------------------------------------------------------------------------
/app/routes/Apps/GalleryGrid/index.js:
--------------------------------------------------------------------------------
1 | import GalleryGrid from './GalleryGrid';
2 |
3 | export default GalleryGrid;
--------------------------------------------------------------------------------
/app/routes/Apps/GalleryTable/index.js:
--------------------------------------------------------------------------------
1 | import GalleryTable from './GalleryTable';
2 |
3 | export default GalleryTable;
--------------------------------------------------------------------------------
/app/routes/Apps/ImagesResults/index.js:
--------------------------------------------------------------------------------
1 | import ImagesResults from './ImagesResults';
2 |
3 | export default ImagesResults;
--------------------------------------------------------------------------------
/app/routes/Apps/Inbox/index.js:
--------------------------------------------------------------------------------
1 | import Inbox from './Inbox';
2 |
3 | export default Inbox;
--------------------------------------------------------------------------------
/app/routes/Apps/NewEmail/index.js:
--------------------------------------------------------------------------------
1 | import NewEmail from './NewEmail';
2 |
3 | export default NewEmail;
--------------------------------------------------------------------------------
/app/routes/Apps/ProfileDetails/index.js:
--------------------------------------------------------------------------------
1 | import ProfileDetails from './ProfileDetails';
2 |
3 | export default ProfileDetails;
--------------------------------------------------------------------------------
/app/routes/Apps/ProfileEdit/index.js:
--------------------------------------------------------------------------------
1 | import ProfileEdit from './ProfileEdit';
2 |
3 | export default ProfileEdit;
--------------------------------------------------------------------------------
/app/routes/Apps/Projects/ProjectsGrid.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import _ from 'lodash';
3 |
4 | import { CardColumns } from './../../../components';
5 | import { ProjectsCardGrid } from "../../components/Projects/ProjectsCardGrid";
6 | import { Paginations } from "../../components/Paginations";
7 |
8 | const ProjectsGrid = () => (
9 |
10 |
11 | {
12 | _.times(12, (index) => (
13 |
14 | ))
15 | }
16 |
17 |
20 |
21 | );
22 |
23 | export default ProjectsGrid;
--------------------------------------------------------------------------------
/app/routes/Apps/Projects/index.js:
--------------------------------------------------------------------------------
1 | import Projects from './Projects';
2 |
3 | export default Projects;
--------------------------------------------------------------------------------
/app/routes/Apps/SearchResults/index.js:
--------------------------------------------------------------------------------
1 | import SearchResults from './SearchResults';
2 |
3 | export default SearchResults;
--------------------------------------------------------------------------------
/app/routes/Apps/SessionsEdit/index.js:
--------------------------------------------------------------------------------
1 | import SessionsEdit from './SessionsEdit';
2 |
3 | export default SessionsEdit;
--------------------------------------------------------------------------------
/app/routes/Apps/SettingsEdit/index.js:
--------------------------------------------------------------------------------
1 | import SettingsEdit from './SettingsEdit';
2 |
3 | export default SettingsEdit;
--------------------------------------------------------------------------------
/app/routes/Apps/Tasks/TasksGrid.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import { CardColumns } from './../../../components';
4 | import { Paginations } from "../../components/Paginations";
5 | import { TasksCardGrid } from "../../components/Tasks/TasksCardGrid";
6 |
7 | const TasksGrid = () => (
8 |
9 |
10 |
11 |
14 |
17 |
20 |
23 |
26 |
29 |
32 |
35 |
36 |
39 |
40 | );
41 |
42 | export default TasksGrid;
--------------------------------------------------------------------------------
/app/routes/Apps/Tasks/index.js:
--------------------------------------------------------------------------------
1 | import Tasks from './Tasks';
2 |
3 | export default Tasks;
--------------------------------------------------------------------------------
/app/routes/Apps/TasksDetails/index.js:
--------------------------------------------------------------------------------
1 | import TasksDetails from './TasksDetails';
2 |
3 | export default TasksDetails;
--------------------------------------------------------------------------------
/app/routes/Apps/TasksKanban/index.js:
--------------------------------------------------------------------------------
1 | import TasksKanban from './TasksKanban';
2 |
3 | export default TasksKanban;
--------------------------------------------------------------------------------
/app/routes/Apps/Users/UsersGrid.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import { CardColumns } from './../../../components';
4 | import { UsersCardGrid } from "../../components/Users/UsersCardGrid";
5 | import { Paginations } from "../../components/Paginations";
6 |
7 | const UsersGrid = () => (
8 |
9 |
10 |
11 |
14 |
17 |
20 |
23 |
26 |
29 |
32 |
35 |
38 |
41 |
44 |
45 |
48 |
49 | );
50 |
51 | export default UsersGrid;
--------------------------------------------------------------------------------
/app/routes/Apps/Users/index.js:
--------------------------------------------------------------------------------
1 | import Users from './Users';
2 |
3 | export default Users;
--------------------------------------------------------------------------------
/app/routes/Apps/UsersResults/index.js:
--------------------------------------------------------------------------------
1 | import UsersResults from './UsersResults';
2 |
3 | export default UsersResults;
--------------------------------------------------------------------------------
/app/routes/Apps/VideosResults/index.js:
--------------------------------------------------------------------------------
1 | import VideosResults from './VideosResults';
2 |
3 | export default VideosResults;
--------------------------------------------------------------------------------
/app/routes/Cards/Cards/index.js:
--------------------------------------------------------------------------------
1 | import Cards from './Cards';
2 |
3 | export default Cards;
--------------------------------------------------------------------------------
/app/routes/Cards/CardsHeaders/index.js:
--------------------------------------------------------------------------------
1 | import CardsHeaders from './CardsHeaders';
2 |
3 | export default CardsHeaders;
--------------------------------------------------------------------------------
/app/routes/Dashboards/Analytics/Analytics.scss:
--------------------------------------------------------------------------------
1 | @import "./../../../styles/variables.scss";
2 |
3 | .sessions {
4 | display: flex;
5 | width: 100%;
6 | margin-bottom: 1rem;
7 | }
8 |
9 | .sessions-progress {
10 | margin-bottom: 2rem;
11 | }
12 |
13 | .session {
14 | flex: 1 1 auto;
15 |
16 | &__percentage {
17 | font-size: 2.5rem;
18 | }
19 | }
20 |
21 | :global(.float-column--size-xs),
22 | :global(.float-column--size-sm) {
23 | .sessions {
24 | flex-direction: column;
25 | }
26 |
27 | .session {
28 | display: flex;
29 | align-items: center;
30 | padding: 0.5rem 0;
31 |
32 | &__values {
33 | margin-left: auto;
34 | }
35 |
36 | &__percentage {
37 | font-size: 1.2rem;
38 | font-weight: bold;
39 | line-height: 1;
40 | }
41 |
42 | &__value {
43 | line-height: 1;
44 | }
45 |
46 | + .session {
47 | border-top: 1px solid $gray-400;
48 | }
49 | }
50 | }
51 |
52 | :global(.float-column--size-xs) {
53 | .sessions-progress {
54 | margin-top: 2rem;
55 | }
56 |
57 | .sessions-info {
58 | display: none;
59 | }
60 | }
--------------------------------------------------------------------------------
/app/routes/Dashboards/Analytics/index.js:
--------------------------------------------------------------------------------
1 | import { Analytics } from './Analytics';
2 |
3 | export default Analytics;
--------------------------------------------------------------------------------
/app/routes/Dashboards/Financial/index.js:
--------------------------------------------------------------------------------
1 | import Financial from './Financial';
2 |
3 | export default Financial;
--------------------------------------------------------------------------------
/app/routes/Dashboards/Monitor/index.js:
--------------------------------------------------------------------------------
1 | import Monitor from './Monitor';
2 |
3 | export default Monitor;
--------------------------------------------------------------------------------
/app/routes/Dashboards/Projects/index.js:
--------------------------------------------------------------------------------
1 | import ProjectsDashboard from './ProjectsDashboard';
2 |
3 | export default ProjectsDashboard;
--------------------------------------------------------------------------------
/app/routes/Dashboards/Reports/components/TinyArcChart.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {
3 | PieChart,
4 | Pie,
5 | Cell
6 | } from './../../../../components/recharts';
7 |
8 | import colors from './../../../../colors';
9 |
10 | const data = [
11 | {name: 'Free', value: 40 },
12 | {name: 'Used', value: 60 },
13 | ];
14 |
15 | const COLORS = [ colors['light'], colors['primary'] ];
16 | const SIZE = 70;
17 |
18 | const TinyArcChart = () => (
19 |
20 |
31 | {
32 | data.map((entry, index) => | )
33 | }
34 |
35 |
36 | );
37 |
38 | export { TinyArcChart };
39 |
--------------------------------------------------------------------------------
/app/routes/Dashboards/Reports/components/TinyAreaChart.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import _ from 'lodash';
3 | import {
4 | ResponsiveContainer,
5 | AreaChart,
6 | Area
7 | } from './../../../../components/recharts';
8 |
9 | import colors from './../../../../colors';
10 |
11 | const data = _.times(20, () => ({ pv: Math.random() * 100 }));
12 |
13 | const TinyAreaChart = () => (
14 |
15 |
16 |
17 |
18 |
19 | );
20 |
21 | export { TinyAreaChart };
22 |
--------------------------------------------------------------------------------
/app/routes/Dashboards/Reports/components/TinyLineChart.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import _ from 'lodash';
3 | import {
4 | ResponsiveContainer,
5 | LineChart,
6 | Line,
7 | Dot
8 | } from './../../../../components/recharts';
9 |
10 | import colors from './../../../../colors';
11 |
12 | const data = _.times(20, () => ({ pv: Math.random() * 100 }));
13 |
14 | const generateDot = ({stroke, ...other}) => (
15 |
20 | );
21 |
22 | const TinyLineChart = () => (
23 |
24 |
25 |
26 |
27 |
28 | );
29 |
30 | export { TinyLineChart };
31 |
--------------------------------------------------------------------------------
/app/routes/Dashboards/Reports/index.js:
--------------------------------------------------------------------------------
1 | import Reports from './Reports';
2 |
3 | export default Reports;
--------------------------------------------------------------------------------
/app/routes/Dashboards/Stock/index.js:
--------------------------------------------------------------------------------
1 | import Stock from './Stock';
2 |
3 | export default Stock;
--------------------------------------------------------------------------------
/app/routes/Dashboards/System/components/TinyAreaChart.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import _ from 'lodash';
4 | import {
5 | ResponsiveContainer,
6 | AreaChart,
7 | Area
8 | } from './../../../../components/recharts';
9 |
10 | import colors from './../../../../colors';
11 |
12 | const TinyAreaChart = (props) => {
13 | const data = _.times(20, () => ({ pv: Math.random() * 100 }));
14 | return (
15 |
16 |
17 |
18 |
19 |
20 | )
21 | };
22 |
23 | TinyAreaChart.propTypes = {
24 | strokeColor: PropTypes.string,
25 | fillColor: PropTypes.string
26 | };
27 | TinyAreaChart.defaultProps = {
28 | strokeColor: "600",
29 | fillColor: "200",
30 | };
31 |
32 | export { TinyAreaChart };
33 |
--------------------------------------------------------------------------------
/app/routes/Dashboards/System/components/TinyBarChart.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 |
4 | import _ from 'lodash';
5 | import {
6 | ResponsiveContainer,
7 | BarChart,
8 | Bar
9 | } from './../../../../components/recharts';
10 |
11 | import colors from './../../../../colors';
12 |
13 | const TinyBarChart = (props) => {
14 | const data = _.times(40, () => ({ pv: 20+Math.random() * 100 }));
15 | return (
16 |
17 |
18 |
19 |
20 |
21 | )
22 | };
23 |
24 | TinyBarChart.propTypes = {
25 | barColor: PropTypes.string
26 | };
27 | TinyBarChart.defaultProps = {
28 | barColor: "200"
29 | };
30 |
31 | export { TinyBarChart };
32 |
--------------------------------------------------------------------------------
/app/routes/Dashboards/System/components/TinyDonutChart.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import {
4 | PieChart,
5 | Pie,
6 | Cell
7 | } from './../../../../components/recharts';
8 |
9 | import colors from './../../../../colors';
10 |
11 | const TinyDonutChart = (props) => {
12 | const data = [
13 | {name: 'Group A', value: 40+Math.random()*100},
14 | {name: 'Group B', value: Math.random()*100}
15 | ];
16 | return (
17 |
18 |
26 | |
27 |
28 |
29 | )
30 | };
31 |
32 | TinyDonutChart.propTypes = {
33 | pieColor: PropTypes.string,
34 | strokeColor: PropTypes.string,
35 | pieBg: PropTypes.string
36 | };
37 | TinyDonutChart.defaultProps = {
38 | pieColor: "primary",
39 | strokeColor: "white",
40 | pieBg: "200"
41 | };
42 |
43 | export { TinyDonutChart };
44 |
--------------------------------------------------------------------------------
/app/routes/Dashboards/System/index.js:
--------------------------------------------------------------------------------
1 | import System from './System';
2 |
3 | export default System;
--------------------------------------------------------------------------------
/app/routes/Dashboards/components/TinyLineChart.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import _ from 'lodash';
3 | import {
4 | ResponsiveContainer,
5 | LineChart,
6 | Line,
7 | Dot
8 | } from './../../../components/recharts';
9 |
10 | import colors from './../../../colors';
11 |
12 | const data = _.times(20, () => ({ pv: Math.random() * 100 }));
13 |
14 | // eslint-disable-next-line react/prop-types
15 | const generateDot = ({stroke, ...other}) => (
16 |
21 | );
22 |
23 | const TinyLineChart = () => (
24 |
25 |
26 |
27 |
28 |
29 | );
30 |
31 | export { TinyLineChart };
32 |
--------------------------------------------------------------------------------
/app/routes/Forms/DatePicker/components/AddonInput.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 |
4 | import {
5 | InputGroup,
6 | InputGroupAddon,
7 | Input
8 | } from './../../../../components';
9 |
10 | // eslint-disable-next-line react/display-name
11 | const AddonInputFR = React.forwardRef((props, ref) => (
12 |
13 |
14 |
15 |
16 |
22 |
23 | ));
24 | AddonInputFR.propTypes = {
25 | onClick: PropTypes.func,
26 | onChange: PropTypes.func,
27 | value: PropTypes.string,
28 | className: PropTypes.string
29 | }
30 |
31 | export { AddonInputFR as AddonInput };
32 |
--------------------------------------------------------------------------------
/app/routes/Forms/DatePicker/components/ButtonInput.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 |
4 | import {
5 | Button
6 | } from './../../../../components';
7 |
8 | // eslint-disable-next-line react/display-name
9 | const ButtonInputFR = React.forwardRef((props, ref) => (
10 |
17 | ));
18 | ButtonInputFR.propTypes = {
19 | onClick: PropTypes.func,
20 | value: PropTypes.string
21 | }
22 |
23 | export { ButtonInputFR as ButtonInput };
24 |
--------------------------------------------------------------------------------
/app/routes/Forms/DatePicker/components/index.js:
--------------------------------------------------------------------------------
1 | export * from './Example';
2 | export * from './ButtonInput';
3 | export * from './AddonInput';
4 |
--------------------------------------------------------------------------------
/app/routes/Forms/DatePicker/index.js:
--------------------------------------------------------------------------------
1 | import { DatePickerExamples } from './DatePickerExamples';
2 |
3 | export default DatePickerExamples;
4 |
--------------------------------------------------------------------------------
/app/routes/Forms/Dropzone/components/common.scss:
--------------------------------------------------------------------------------
1 | @import "./../../../../styles/variables.scss";
2 |
3 | .ph--large {
4 | display: flex;
5 | align-items: center;
6 | justify-content: center;
7 | min-height: 200px;
8 | background-color: $gray-400;
9 | margin-bottom: 5px;
10 |
11 | > i {
12 | color: #fff;
13 | }
14 | }
15 |
16 | .ph--small {
17 | display: inline-block;
18 | background-color: $gray-400;
19 | padding: 7px 5px;
20 | border-radius: 7px;
21 |
22 | > i {
23 | color: #fff;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/app/routes/Forms/Dropzone/components/index.js:
--------------------------------------------------------------------------------
1 | export * from './FilesGrid';
2 | export * from './FilesList';
3 |
--------------------------------------------------------------------------------
/app/routes/Forms/Dropzone/index.js:
--------------------------------------------------------------------------------
1 | import { Dropzone } from './Dropzone';
2 |
3 | export default Dropzone;
4 |
--------------------------------------------------------------------------------
/app/routes/Forms/Dropzone/utilities.js:
--------------------------------------------------------------------------------
1 | export const typeToIcon = type => {
2 | const map = {
3 | ['application/msword']: 'fa-file-word-o',
4 | ['application/excel']: 'fa-file-excel-o',
5 | ['application/vnd.oasis.opendocument.spreadsheet']: 'fa-file-excel-o',
6 | ['application/vnd.oasis.opendocument.presentation']: 'fa-file-powerpoint-o',
7 | ['application/mspowerpoint']: 'fa-file-powerpoint-o',
8 | ['application/x-zip-compressed']: 'fa-file-archive-o',
9 | ['image/jpeg']: 'fa-file-image-o',
10 | ['image/png']: 'fa-file-image-o',
11 | ['audio/mp3']: 'fa-file-audio-o',
12 | ['text/plain']: 'fa-file-text-o'
13 | }
14 | return map[type] || null;
15 | }
16 |
17 | export const extToIcon = filename => {
18 | const map = {
19 | ['doc']: 'fa-file-word-o',
20 | ['docx']: 'fa-file-word-o',
21 | ['xls']: 'fa-file-excel-o',
22 | ['xlsx']: 'fa-file-excel-o',
23 | ['ppt']: 'fa-file-powerpoint-o',
24 | ['pdf']: 'fa-file-pdf-o'
25 | }
26 |
27 | return map[filename.split('.').pop()] || null;
28 | }
29 |
30 | export const getFileIcon = file => {
31 | return typeToIcon(file.type) || extToIcon(file.name) || 'fa-file-o';
32 | }
--------------------------------------------------------------------------------
/app/routes/Forms/Editor/index.js:
--------------------------------------------------------------------------------
1 | import { Editor } from './Editor';
2 |
3 | export default Editor;
4 |
--------------------------------------------------------------------------------
/app/routes/Forms/Forms/index.js:
--------------------------------------------------------------------------------
1 | import Forms from './Forms';
2 |
3 | export default Forms;
--------------------------------------------------------------------------------
/app/routes/Forms/FormsLayouts/index.js:
--------------------------------------------------------------------------------
1 | import FormsLayouts from './FormsLayouts';
2 |
3 | export default FormsLayouts;
--------------------------------------------------------------------------------
/app/routes/Forms/InputGroups/index.js:
--------------------------------------------------------------------------------
1 | import InputGroups from './InputGroups';
2 |
3 | export default InputGroups;
--------------------------------------------------------------------------------
/app/routes/Forms/Sliders/Sliders.scss:
--------------------------------------------------------------------------------
1 | .markedSliderWrap {
2 | padding: 0px 20px 50px;
3 | }
4 |
5 | .rangeSliderWrap {
6 | padding: 0 0 20px 0;
7 | }
8 |
9 | .markedSliderVerticalWrap {
10 | width: 100%;
11 | height: 400px;
12 | display: flex;
13 | align-items: center;
14 | justify-content: center;
15 | padding: 20px 20px 30px 20px;
16 | }
17 |
18 | .inlineInput {
19 | max-width: 70px;
20 | margin-left: 0.5rem;
21 | }
22 |
--------------------------------------------------------------------------------
/app/routes/Forms/Sliders/index.js:
--------------------------------------------------------------------------------
1 | import { Sliders } from './Sliders';
2 |
3 | export default Sliders;
4 |
--------------------------------------------------------------------------------
/app/routes/Forms/TextMask/index.js:
--------------------------------------------------------------------------------
1 | import { TextMask } from './TextMask';
2 |
3 | export default TextMask;
4 |
--------------------------------------------------------------------------------
/app/routes/Forms/Toggles/Toggles.scss:
--------------------------------------------------------------------------------
1 | .switchCustomClass > :first-child {
2 | background-color: #ab199f;
3 | }
4 |
--------------------------------------------------------------------------------
/app/routes/Forms/Toggles/index.js:
--------------------------------------------------------------------------------
1 | import { Toggles } from './Toggles';
2 |
3 | export default Toggles;
--------------------------------------------------------------------------------
/app/routes/Forms/Typeahead/components/BasicExample.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Typeahead } from 'react-bootstrap-typeahead';
3 |
4 | import {
5 | CustomInput,
6 | FormGroup
7 | } from './../../../../components';
8 | import options from './exampleData';
9 |
10 | export class BasicExample extends React.Component {
11 | state = {
12 | multiple: false,
13 | };
14 |
15 | render() {
16 | const {multiple} = this.state;
17 |
18 | return (
19 |
20 |
26 |
27 | this.setState({multiple: e.target.checked})}
30 | type="checkbox"
31 | id="basic-example-multiselect"
32 | label="Multi-Select"
33 | />
34 |
35 |
36 | );
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/app/routes/Forms/Typeahead/components/ControllingSelections.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Typeahead } from 'react-bootstrap-typeahead';
3 |
4 | import options from './exampleData';
5 |
6 | export const ControllingSelections = () => (
7 |
15 | )
16 |
--------------------------------------------------------------------------------
/app/routes/Forms/Typeahead/components/CustomSelections.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Typeahead } from 'react-bootstrap-typeahead';
3 |
4 | export const CustomSelections = () => (
5 |
12 | );
13 |
--------------------------------------------------------------------------------
/app/routes/Forms/Typeahead/components/GithubMenuItem.js:
--------------------------------------------------------------------------------
1 | import PropTypes from 'prop-types';
2 | import React from 'react';
3 |
4 | export const GithubMenuItem = ({user}) => (
5 |
6 |

15 |
{user.login}
16 |
17 | );
18 |
19 | GithubMenuItem.propTypes = {
20 | user: PropTypes.shape({
21 | avatar_url: PropTypes.string.isRequired,
22 | login: PropTypes.string.isRequired,
23 | }).isRequired,
24 | };
--------------------------------------------------------------------------------
/app/routes/Forms/Typeahead/components/LabelKey.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Typeahead } from 'react-bootstrap-typeahead';
3 |
4 | export const LabelKey = () => (
5 | `${option.firstName} ${option.lastName}`}
7 | options={[
8 | {firstName: 'Art', lastName: 'Blakey'},
9 | {firstName: 'John', lastName: 'Coltrane'},
10 | {firstName: 'Miles', lastName: 'Davis'},
11 | {firstName: 'Herbie', lastName: 'Hancock'},
12 | {firstName: 'Charlie', lastName: 'Parker'},
13 | {firstName: 'Tony', lastName: 'Williams'},
14 | ]}
15 | placeholder="Who's the coolest cat?"
16 | />
17 | );
18 |
--------------------------------------------------------------------------------
/app/routes/Forms/Typeahead/components/PaginationExample.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import _ from 'lodash';
3 | import { Typeahead } from 'react-bootstrap-typeahead';
4 |
5 | import {
6 | CustomInput,
7 | FormGroup
8 | } from './../../../../components';
9 |
10 | export class PaginationExample extends React.Component {
11 | state = {
12 | paginate: true,
13 | };
14 |
15 | render() {
16 | const {paginate} = this.state;
17 |
18 | return (
19 |
20 | console.log('Results paginated')}
22 | options={_.range(0, 1000).map((o) => o.toString())}
23 | paginate={paginate}
24 | placeholder="Pick a number..."
25 | />
26 |
27 | this.setState({paginate: !!e.target.checked})}
30 | type="checkbox"
31 | id="enable-pagination"
32 | label="Paginate results"
33 | />
34 |
35 |
36 | );
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/app/routes/Forms/Typeahead/components/index.js:
--------------------------------------------------------------------------------
1 | export * from './BasicExample';
2 | export * from './BasicBehaviors';
3 | export * from './ControllingSelections';
4 | export * from './InputSize';
5 | export * from './MenuAlignment';
6 | export * from './FormExample';
7 | export * from './PaginationExample';
8 | export * from './BodyContainer';
9 | export * from './RenderingExample';
10 | export * from './LabelKey';
11 | export * from './Filtering';
12 | export * from './CustomFiltering';
13 | export * from './CustomSelections';
14 | export * from './AsynchronousSearching';
15 | export * from './AsynchronousPagination';
16 | export * from './PublicMethods';
17 |
--------------------------------------------------------------------------------
/app/routes/Forms/Typeahead/components/utils.js:
--------------------------------------------------------------------------------
1 | const SEARCH_URI = "https://api.github.com/search/users";
2 |
3 | export function makeAndHandleRequest(query, page = 1) {
4 | return fetch(`${SEARCH_URI}?q=${query}+in:login&page=${page}&per_page=50`)
5 | .then((resp) => resp.json())
6 | .then(({ items, total_count }) => {
7 | const options = items.map((i) => ({
8 | avatar_url: i.avatar_url,
9 | id: i.id,
10 | login: i.login,
11 | }));
12 | return { options, total_count };
13 | });
14 | }
15 |
--------------------------------------------------------------------------------
/app/routes/Forms/Typeahead/index.js:
--------------------------------------------------------------------------------
1 | import { Typeahead } from './Typeahead';
2 |
3 | export default Typeahead;
4 |
--------------------------------------------------------------------------------
/app/routes/Forms/Wizard/index.js:
--------------------------------------------------------------------------------
1 | import { WizardExample } from './Wizard';
2 |
3 | export default WizardExample;
4 |
--------------------------------------------------------------------------------
/app/routes/Graphs/ReCharts/components/PieChartWithCustomizedLabel.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {
3 | Pie,
4 | ResponsiveContainer,
5 | Cell,
6 | PieChart,
7 | PieValueLabel
8 | } from './../../../../components/recharts';
9 |
10 | import colors from './../../../../colors';
11 |
12 | const data = [
13 | {name: 'Group A', value: 400},
14 | {name: 'Group B', value: 300},
15 | {name: 'Group C', value: 300},
16 | {name: 'Group D', value: 200}
17 | ];
18 | const COLORS = [ colors['primary'], colors['purple'], colors['success'], colors['yellow']];
19 |
20 | export const PieChartWithCustomizedLabel = () => (
21 |
22 |
23 | }
29 | outerRadius={80}
30 | fill="#8884d8"
31 | >
32 | {
33 | data.map((entry, index) => | )
34 | }
35 |
36 |
37 |
38 | );
39 |
--------------------------------------------------------------------------------
/app/routes/Graphs/ReCharts/components/PieChartWithPaddingAngle.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {
3 | PieChart,
4 | Pie,
5 | Cell,
6 | ResponsiveContainer
7 | } from './../../../../components/recharts';
8 |
9 | import colors from './../../../../colors';
10 |
11 | const data = [
12 | {name: 'Group A', value: 400},
13 | {name: 'Group B', value: 300},
14 | {name: 'Group C', value: 300},
15 | {name: 'Group D', value: 200}
16 | ];
17 |
18 | const COLORS = [ colors['primary'], colors['purple'], colors['success'], colors['yellow']];
19 |
20 | export const PieChartWithPaddingAngle = () => (
21 |
22 |
23 |
32 | {
33 | data.map((entry, index) => | )
34 | }
35 |
36 |
37 |
38 | );
39 |
--------------------------------------------------------------------------------
/app/routes/Graphs/ReCharts/components/PieChartWithPaddingAngleHalf.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {
3 | PieChart,
4 | Pie,
5 | Cell,
6 | ResponsiveContainer
7 | } from './../../../../components/recharts';
8 |
9 | import colors from './../../../../colors';
10 |
11 | const data = [
12 | {name: 'Group A', value: 400},
13 | {name: 'Group B', value: 300},
14 | {name: 'Group C', value: 300},
15 | {name: 'Group D', value: 200}
16 | ];
17 |
18 | const COLORS = [ colors['primary'], colors['purple'], colors['success'], colors['yellow']];
19 |
20 | export const PieChartWithPaddingAngleHalf = () => (
21 |
22 |
23 |
34 | {
35 | data.map((entry, index) => | )
36 | }
37 |
38 |
39 |
40 | );
--------------------------------------------------------------------------------
/app/routes/Graphs/ReCharts/components/SimpleAreaChart.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {
3 | AreaChart,
4 | CartesianGrid,
5 | XAxis,
6 | YAxis,
7 | Tooltip,
8 | ResponsiveContainer,
9 | Area
10 | } from './../../../../components/recharts';
11 |
12 | import colors from './../../../../colors';
13 |
14 | const data = [
15 | {name: 'Page A', uv: 4000, pv: 2400, amt: 2400},
16 | {name: 'Page B', uv: 3000, pv: 1398, amt: 2210},
17 | {name: 'Page C', uv: 2000, pv: 9800, amt: 2290},
18 | {name: 'Page D', uv: 2780, pv: 3908, amt: 2000},
19 | {name: 'Page E', uv: 1890, pv: 4800, amt: 2181},
20 | {name: 'Page F', uv: 2390, pv: 3800, amt: 2500},
21 | {name: 'Page G', uv: 3490, pv: 4300, amt: 2100},
22 | ];
23 |
24 | const SimpleAreaChart = () => (
25 |
26 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 | )
37 |
38 | export { SimpleAreaChart };
39 |
--------------------------------------------------------------------------------
/app/routes/Graphs/ReCharts/components/StraightAnglePieChart.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {
3 | Pie,
4 | ResponsiveContainer,
5 | PieChart
6 | } from './../../../../components/recharts';
7 |
8 | import colors from './../../../../colors';
9 |
10 | const data = [
11 | { name: 'Group A', value: 400 },
12 | { name: 'Group B', value: 300 },
13 | { name: 'Group C', value: 300 },
14 | { name: 'Group D', value: 200 },
15 | { name: 'Group E', value: 278 },
16 | { name: 'Group F', value: 189 }
17 | ];
18 |
19 | const StraightAnglePieChart = () => (
20 |
21 |
22 |
32 |
33 |
34 |
35 | )
36 |
37 | export { StraightAnglePieChart };
38 |
--------------------------------------------------------------------------------
/app/routes/Graphs/ReCharts/components/TinyAreaChart.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import _ from 'lodash';
3 | import {
4 | ResponsiveContainer,
5 | AreaChart,
6 | Area
7 | } from './../../../../components/recharts';
8 |
9 | import colors from './../../../../colors';
10 |
11 | const data = _.times(20, () => ({ pv: Math.random() * 100 }));
12 |
13 | /* 99% - some wierd HACK that makes the container resize properly */
14 | const TinyAreaChart = () => (
15 |
16 |
17 |
18 |
19 |
20 | );
21 |
22 | export { TinyAreaChart };
23 |
--------------------------------------------------------------------------------
/app/routes/Graphs/ReCharts/components/TinyBarChart.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import _ from 'lodash';
3 | import {
4 | ResponsiveContainer,
5 | BarChart,
6 | Bar
7 | } from './../../../../components/recharts';
8 |
9 | import colors from './../../../../colors';
10 |
11 | const data = _.times(40, () => ({ pv: Math.random() * 100 }));
12 |
13 | const TinyBarChart = () => (
14 |
15 |
16 |
17 |
18 |
19 | );
20 |
21 | export { TinyBarChart };
22 |
--------------------------------------------------------------------------------
/app/routes/Graphs/ReCharts/components/TinyDonutChart.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {
3 | PieChart,
4 | Pie,
5 | Cell
6 | } from './../../../../components/recharts';
7 |
8 | import colors from './../../../../colors';
9 |
10 | const data = [
11 | {name: 'Group A', value: 400},
12 | {name: 'Group B', value: 300},
13 | {name: 'Group C', value: 300},
14 | {name: 'Group D', value: 200}
15 | ];
16 |
17 | const COLORS = [ colors['primary'], colors['purple'], colors['success'], colors['yellow']];
18 |
19 | const TinyDonutChart = () => (
20 |
21 |
29 | {
30 | data.map((entry, index) => | )
31 | }
32 |
33 |
34 | );
35 |
36 | export { TinyDonutChart };
37 |
--------------------------------------------------------------------------------
/app/routes/Graphs/ReCharts/components/TinyLineChart.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import _ from 'lodash';
3 | import {
4 | ResponsiveContainer,
5 | LineChart,
6 | Line,
7 | Dot
8 | } from './../../../../components/recharts';
9 |
10 | import colors from './../../../../colors';
11 |
12 | const data = _.times(20, () => ({ pv: Math.random() * 100 }));
13 |
14 | const generateDot = ({stroke, ...other}) => (
15 |
22 | );
23 |
24 | const TinyLineChart = () => (
25 |
26 |
27 |
28 |
29 |
30 | );
31 |
32 | export { TinyLineChart };
33 |
--------------------------------------------------------------------------------
/app/routes/Graphs/ReCharts/components/TinyPieChart.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {
3 | PieChart,
4 | Pie,
5 | Cell
6 | } from './../../../../components/recharts';
7 |
8 | import colors from './../../../../colors';
9 |
10 | const data = [
11 | {name: 'Group A', value: 400},
12 | {name: 'Group B', value: 300},
13 | {name: 'Group C', value: 300},
14 | {name: 'Group D', value: 200}
15 | ];
16 |
17 | const COLORS = [ colors['primary'], colors['purple'], colors['success'], colors['yellow']];
18 |
19 | const TinyPieChart = () => (
20 |
21 |
28 | {
29 | data.map((entry, index) => | )
30 | }
31 |
32 |
33 | );
34 |
35 | export { TinyPieChart };
36 |
--------------------------------------------------------------------------------
/app/routes/Graphs/ReCharts/index.js:
--------------------------------------------------------------------------------
1 | import ReCharts from './ReCharts';
2 |
3 | export default ReCharts;
4 |
--------------------------------------------------------------------------------
/app/routes/Icons/index.js:
--------------------------------------------------------------------------------
1 | import Icons from './Icons';
2 |
3 | export default Icons;
--------------------------------------------------------------------------------
/app/routes/Interface/Accordions/index.js:
--------------------------------------------------------------------------------
1 | import Accordions from './Accordions';
2 |
3 | export default Accordions;
--------------------------------------------------------------------------------
/app/routes/Interface/Alerts/index.js:
--------------------------------------------------------------------------------
1 | import Alerts from './Alerts';
2 |
3 | export default Alerts;
--------------------------------------------------------------------------------
/app/routes/Interface/Avatars/index.js:
--------------------------------------------------------------------------------
1 | import Avatars from './Avatars';
2 |
3 | export default Avatars;
--------------------------------------------------------------------------------
/app/routes/Interface/BadgesLabels/index.js:
--------------------------------------------------------------------------------
1 | import BadgesLabels from './BadgesLabels';
2 |
3 | export default BadgesLabels;
--------------------------------------------------------------------------------
/app/routes/Interface/Breadcrumbs/index.js:
--------------------------------------------------------------------------------
1 | import Breadcrumbs from './Breadcrumbs';
2 |
3 | export default Breadcrumbs;
4 |
--------------------------------------------------------------------------------
/app/routes/Interface/Buttons/index.js:
--------------------------------------------------------------------------------
1 | import Buttons from './Buttons';
2 |
3 | export default Buttons;
--------------------------------------------------------------------------------
/app/routes/Interface/Calendar/index.js:
--------------------------------------------------------------------------------
1 | import { Calendar } from './Calendar';
2 |
3 | export default Calendar;
4 |
--------------------------------------------------------------------------------
/app/routes/Interface/Colors/index.js:
--------------------------------------------------------------------------------
1 | import Colors from './Colors';
2 |
3 | export default Colors;
--------------------------------------------------------------------------------
/app/routes/Interface/CropImage/images/image-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/routes/Interface/CropImage/images/image-1.jpg
--------------------------------------------------------------------------------
/app/routes/Interface/CropImage/images/image-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/0wczar/airframe-react/999e89b9a8ab80056ff2afdc112cdc521e8306a8/app/routes/Interface/CropImage/images/image-2.jpg
--------------------------------------------------------------------------------
/app/routes/Interface/CropImage/index.js:
--------------------------------------------------------------------------------
1 | import { CropImage } from './CropImage';
2 |
3 | export default CropImage;
4 |
--------------------------------------------------------------------------------
/app/routes/Interface/DragAndDropElements/components/common.scss:
--------------------------------------------------------------------------------
1 | @import "./../../../../styles/variables.scss";
2 |
3 | .list {
4 | transition: background-color 200ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
5 |
6 | &--drag-over {
7 | background-color: lighten($primary, 45%);
8 | }
9 | }
10 |
11 | .list-group-item {
12 | border-left: 1px solid transparent !important;
13 | border-right: 1px solid transparent !important;
14 | transition: border-color 200ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
15 |
16 | &:first-child {
17 | border-top: 1px solid transparent !important;
18 | }
19 |
20 | &--dragging {
21 | &:first-child {
22 | border-top-color: $primary !important;
23 | }
24 | border-color: $primary !important;
25 | }
26 | }
27 |
28 | .table {
29 | transition: background-color 200ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
30 |
31 | &--drag-over {
32 | background-color: lighten($primary, 45%);
33 | }
34 | }
35 |
36 | .row {
37 | transition: border-color 200ms cubic-bezier(0.645, 0.045, 0.355, 1.000);
38 | background: $white;
39 |
40 | &--dragging {
41 | border: 1px solid $primary !important;
42 | }
43 | }
--------------------------------------------------------------------------------
/app/routes/Interface/DragAndDropElements/components/index.js:
--------------------------------------------------------------------------------
1 | export * from './MultipleVerticalLists';
2 | export * from './DraggableTable';
3 | export * from './HorizontalLists';
--------------------------------------------------------------------------------
/app/routes/Interface/DragAndDropElements/components/utilities.js:
--------------------------------------------------------------------------------
1 | export const reorder = (list, startIndex, endIndex) => {
2 | const result = Array.from(list);
3 | const [removed] = result.splice(startIndex, 1);
4 | result.splice(endIndex, 0, removed);
5 |
6 | return result;
7 | };
8 |
9 | export const move = (source, destination, droppableSource, droppableDestination) => {
10 | const sourceClone = Array.from(source);
11 | const destClone = Array.from(destination);
12 | const [removed] = sourceClone.splice(droppableSource.index, 1);
13 |
14 | destClone.splice(droppableDestination.index, 0, removed);
15 |
16 | const result = {};
17 | result[droppableSource.droppableId] = sourceClone;
18 | result[droppableDestination.droppableId] = destClone;
19 |
20 | return result;
21 | };
--------------------------------------------------------------------------------
/app/routes/Interface/DragAndDropElements/index.js:
--------------------------------------------------------------------------------
1 | import { DragAndDropElements } from './DragAndDropElements';
2 |
3 | export default DragAndDropElements;
4 |
--------------------------------------------------------------------------------
/app/routes/Interface/Dropdowns/index.js:
--------------------------------------------------------------------------------
1 | import Dropdowns from './Dropdowns';
2 |
3 | export default Dropdowns;
--------------------------------------------------------------------------------
/app/routes/Interface/Images/index.js:
--------------------------------------------------------------------------------
1 | import { Images } from './Images';
2 |
3 | export default Images;
--------------------------------------------------------------------------------
/app/routes/Interface/ListGroups/index.js:
--------------------------------------------------------------------------------
1 | import ListGroups from './ListGroups';
2 |
3 | export default ListGroups;
--------------------------------------------------------------------------------
/app/routes/Interface/MediaObjects/index.js:
--------------------------------------------------------------------------------
1 | import MediaObjects from './MediaObjects';
2 |
3 | export default MediaObjects;
--------------------------------------------------------------------------------
/app/routes/Interface/Modals/index.js:
--------------------------------------------------------------------------------
1 | import { Modals } from './Modals';
2 |
3 | export default Modals;
4 |
--------------------------------------------------------------------------------
/app/routes/Interface/Navbars/index.js:
--------------------------------------------------------------------------------
1 | import Navbars from './Navbars';
2 |
3 | export default Navbars;
--------------------------------------------------------------------------------
/app/routes/Interface/Notifications/index.js:
--------------------------------------------------------------------------------
1 | import { Notifications } from './Notifications';
2 |
3 | export default Notifications;
4 |
--------------------------------------------------------------------------------
/app/routes/Interface/Paginations/index.js:
--------------------------------------------------------------------------------
1 | import Paginations from './Paginations';
2 |
3 | export default Paginations;
--------------------------------------------------------------------------------
/app/routes/Interface/ProgressBars/index.js:
--------------------------------------------------------------------------------
1 | import ProgressBars from './ProgressBars';
2 |
3 | export default ProgressBars;
--------------------------------------------------------------------------------
/app/routes/Interface/TabsPills/index.js:
--------------------------------------------------------------------------------
1 | import TabsPills from './TabsPills';
2 |
3 | export default TabsPills;
--------------------------------------------------------------------------------
/app/routes/Interface/TooltipsPopovers/index.js:
--------------------------------------------------------------------------------
1 | import TooltipsPopovers from './TooltipsPopovers';
2 |
3 | export default TooltipsPopovers;
--------------------------------------------------------------------------------
/app/routes/Interface/Typography/index.js:
--------------------------------------------------------------------------------
1 | import Typography from './Typography';
2 |
3 | export default Typography;
--------------------------------------------------------------------------------
/app/routes/Layouts/DragAndDropLayout/index.js:
--------------------------------------------------------------------------------
1 | import { DragAndDropLayout } from './DragAndDropLayout';
2 |
3 | export default DragAndDropLayout;
4 |
--------------------------------------------------------------------------------
/app/routes/Layouts/NavbarOnly/index.js:
--------------------------------------------------------------------------------
1 | import { NavbarOnly } from './NavbarOnly';
2 | import { LayoutNavbar } from './components/LayoutNavbar';
3 |
4 | NavbarOnly.Navbar = LayoutNavbar;
5 |
6 | export default NavbarOnly;
7 |
--------------------------------------------------------------------------------
/app/routes/Layouts/SidebarA/index.js:
--------------------------------------------------------------------------------
1 | import { SidebarA } from './SidebarA';
2 |
3 | export default SidebarA;
4 |
--------------------------------------------------------------------------------
/app/routes/Layouts/SidebarDefault/index.js:
--------------------------------------------------------------------------------
1 | import { SidebarDefault } from './SidebarDefault';
2 |
3 | export default SidebarDefault;
4 |
--------------------------------------------------------------------------------
/app/routes/Layouts/SidebarWithNavbar/index.js:
--------------------------------------------------------------------------------
1 | import { SidebarWithNavbar } from './SidebarWithNavbar';
2 | import {
3 | SidebarWithNavbarNavbar
4 | } from './../../../layout/components/SidebarWithNavbarNavbar';
5 | import {
6 | DefaultSidebar
7 | } from './../../../layout/components/DefaultSidebar';
8 |
9 | SidebarWithNavbar.Navbar = SidebarWithNavbarNavbar;
10 | SidebarWithNavbar.Sidebar = DefaultSidebar;
11 |
12 | export default SidebarWithNavbar;
13 |
--------------------------------------------------------------------------------
/app/routes/Pages/ComingSoon/index.js:
--------------------------------------------------------------------------------
1 | import ComingSoon from './ComingSoon';
2 |
3 | export default ComingSoon;
--------------------------------------------------------------------------------
/app/routes/Pages/Confirmation/index.js:
--------------------------------------------------------------------------------
1 | import Confirmation from './Confirmation';
2 |
3 | export default Confirmation;
--------------------------------------------------------------------------------
/app/routes/Pages/Danger/Danger.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Link } from 'react-router-dom';
3 |
4 | import { EmptyLayout } from './../../../components';
5 | import { HeaderAuth } from "../../components/Pages/HeaderAuth";
6 | import { FooterAuth } from "../../components/Pages/FooterAuth";
7 |
8 | const Danger = () => (
9 |
10 |
11 | { /* START Header */}
12 |
17 | { /* END Header */}
18 | { /* START Bottom Links */}
19 |
20 |
21 | Correct Errors
22 |
23 |
24 | { /* END Bottom Links */}
25 | { /* START Footer */}
26 |
27 | { /* END Footer */}
28 |
29 |
30 | );
31 |
32 | export default Danger;
33 |
--------------------------------------------------------------------------------
/app/routes/Pages/Danger/index.js:
--------------------------------------------------------------------------------
1 | import Danger from './Danger';
2 |
3 | export default Danger;
--------------------------------------------------------------------------------
/app/routes/Pages/Error404/index.js:
--------------------------------------------------------------------------------
1 | import Error404 from './Error404';
2 |
3 | export default Error404;
--------------------------------------------------------------------------------
/app/routes/Pages/ForgotPassword/index.js:
--------------------------------------------------------------------------------
1 | import ForgotPassword from './ForgotPassword';
2 |
3 | export default ForgotPassword;
--------------------------------------------------------------------------------
/app/routes/Pages/LockScreen/index.js:
--------------------------------------------------------------------------------
1 | import LockScreen from './LockScreen';
2 |
3 | export default LockScreen;
--------------------------------------------------------------------------------
/app/routes/Pages/Login/index.js:
--------------------------------------------------------------------------------
1 | import Login from './Login';
2 |
3 | export default Login;
--------------------------------------------------------------------------------
/app/routes/Pages/Register/index.js:
--------------------------------------------------------------------------------
1 | import Register from './Register';
2 |
3 | export default Register;
--------------------------------------------------------------------------------
/app/routes/Pages/Success/index.js:
--------------------------------------------------------------------------------
1 | import Success from './Success';
2 |
3 | export default Success;
--------------------------------------------------------------------------------
/app/routes/Pages/Timeline/index.js:
--------------------------------------------------------------------------------
1 | import Timeline from './Timeline';
2 |
3 | export default Timeline;
--------------------------------------------------------------------------------
/app/routes/Tables/AgGrid/index.js:
--------------------------------------------------------------------------------
1 | import AgGrid from './AgGrid';
2 |
3 | export default AgGrid;
4 |
--------------------------------------------------------------------------------
/app/routes/Tables/ExtendedTable/components/BasicTable.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import _ from "lodash";
3 | import BootstrapTable from "react-bootstrap-table-next";
4 | import { faker } from "@faker-js/faker";
5 |
6 | const columns = [
7 | {
8 | dataField: "id",
9 | text: "Product ID",
10 | },
11 | {
12 | dataField: "name",
13 | text: "Product Name",
14 | },
15 | {
16 | dataField: "price",
17 | text: "Product Price",
18 | },
19 | ];
20 |
21 | const data = _.times(5, (index) => ({
22 | id: index,
23 | name: faker.commerce.productName(),
24 | price: Math.round(2000 + Math.random() * 500),
25 | }));
26 |
27 | export const BasicTable = () => (
28 |
29 | Basic Table
30 |
37 |
38 | );
39 |
--------------------------------------------------------------------------------
/app/routes/Tables/ExtendedTable/components/BorderedTable.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import _ from "lodash";
3 | import BootstrapTable from "react-bootstrap-table-next";
4 | import { faker } from "@faker-js/faker";
5 |
6 | const columns = [
7 | {
8 | dataField: "id",
9 | text: "Product ID",
10 | },
11 | {
12 | dataField: "name",
13 | text: "Product Name",
14 | },
15 | {
16 | dataField: "price",
17 | text: "Product Price",
18 | },
19 | ];
20 |
21 | const data = _.times(5, (index) => ({
22 | id: index,
23 | name: faker.commerce.productName(),
24 | price: Math.round(2000 + Math.random() * 500),
25 | }));
26 |
27 | export const BorderedTable = () => (
28 |
29 | Bordered Table
30 |
37 |
38 | );
39 |
--------------------------------------------------------------------------------
/app/routes/Tables/ExtendedTable/components/CustomExportButton.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import {
4 | Button
5 | } from './../../../../components';
6 |
7 | export const CustomExportCSV = ({children, onExport, ...props}) => {
8 | return (
9 |
15 | );
16 | }
17 |
18 | CustomExportCSV.propTypes = {
19 | size: PropTypes.string,
20 | outline: PropTypes.bool,
21 | onExport: PropTypes.func,
22 | children: PropTypes.node
23 | }
24 |
25 | CustomExportCSV.defaultProps = {
26 | size: 'sm',
27 | outline: true
28 | }
--------------------------------------------------------------------------------
/app/routes/Tables/ExtendedTable/components/CustomPaginationPanel.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { map, isInteger } from 'lodash';
4 | import { Pagination, PaginationItem, PaginationLink, Col } from './../../../../components';
5 |
6 | const mapToFa = {
7 | '<': ,
8 | '<<': ,
9 | '>': ,
10 | '>>':
11 | }
12 |
13 | export const CustomPaginationPanel = ({ onPageChange, pages, ...otherProps }) => (
14 |
15 |
16 | {
17 | map(pages, page => (
18 |
19 | onPageChange(page.page)}>
20 | { isInteger(page.page) ? page.page : mapToFa[page.page] }
21 |
22 |
23 | ))
24 | }
25 |
26 |
27 | );
28 | CustomPaginationPanel.propTypes = {
29 | pages: PropTypes.array,
30 | onPageChange: PropTypes.func
31 | };
32 |
--------------------------------------------------------------------------------
/app/routes/Tables/ExtendedTable/components/CustomPaginationTotal.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 |
4 | export const CustomPaginationTotal = ({ from, to, size }) => (
5 |
6 | Showing { from } to { to } of { size } Results
7 |
8 | );
9 | CustomPaginationTotal.propTypes = {
10 | from: PropTypes.number,
11 | to: PropTypes.number,
12 | size: PropTypes.number,
13 | };
14 |
--------------------------------------------------------------------------------
/app/routes/Tables/ExtendedTable/components/LargeTable.scss:
--------------------------------------------------------------------------------
1 | .table-scroll-wrap {
2 | max-height: 380px;
3 | overflow-y: auto;
4 | }
--------------------------------------------------------------------------------
/app/routes/Tables/ExtendedTable/components/SelectAll.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import _ from "lodash";
3 | import BootstrapTable from "react-bootstrap-table-next";
4 | import { faker } from "@faker-js/faker";
5 |
6 | const columns = [
7 | {
8 | dataField: "id",
9 | text: "Product ID",
10 | },
11 | {
12 | dataField: "name",
13 | text: "Product Name",
14 | },
15 | {
16 | dataField: "price",
17 | text: "Product Price",
18 | },
19 | ];
20 |
21 | const data = _.times(5, (index) => ({
22 | id: index,
23 | name: faker.commerce.productName(),
24 | price: Math.round(2000 + Math.random() * 500),
25 | }));
26 |
27 | const selectRow = {
28 | mode: "checkbox",
29 | clickToSelect: true,
30 | };
31 |
32 | export const SelectAll = () => (
33 |
34 | Select All
35 |
43 |
44 | );
45 |
--------------------------------------------------------------------------------
/app/routes/Tables/ExtendedTable/components/SortTable.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import _ from "lodash";
3 | import BootstrapTable from "react-bootstrap-table-next";
4 | import { faker } from "@faker-js/faker";
5 |
6 | const sortCaret = (order) => {
7 | if (!order) return ;
8 | if (order) return ;
9 | };
10 |
11 | const columns = [
12 | {
13 | dataField: "id",
14 | text: "Product ID",
15 | },
16 | {
17 | dataField: "name",
18 | text: "Product Name",
19 | sort: true,
20 | sortCaret,
21 | },
22 | {
23 | dataField: "price",
24 | text: "Product Price",
25 | sort: true,
26 | sortCaret,
27 | },
28 | ];
29 |
30 | const data = _.times(10, (index) => ({
31 | id: index,
32 | name: faker.commerce.productName(),
33 | price: Math.round(2000 + Math.random() * 500),
34 | }));
35 |
36 | export const SortTable = () => (
37 |
38 | Sort Table
39 |
46 |
47 | );
48 |
--------------------------------------------------------------------------------
/app/routes/Tables/ExtendedTable/components/index.js:
--------------------------------------------------------------------------------
1 | export * from './AdvancedTableA';
2 | export * from './AdvancedTableB';
3 | export * from './BasicTable';
4 | export * from './BorderedTable';
5 | export * from './CellEdit';
6 | export * from './ClearSearch';
7 | export * from './CustomExportButton';
8 | export * from './CustomSearch';
9 | export * from './LargeTable';
10 | export * from './SelectAll';
11 | export * from './SortTable';
12 |
--------------------------------------------------------------------------------
/app/routes/Tables/ExtendedTable/filters/index.js:
--------------------------------------------------------------------------------
1 | export * from './textFilter';
2 | export * from './selectFilter';
3 | export * from './numberFilter';
--------------------------------------------------------------------------------
/app/routes/Tables/ExtendedTable/index.js:
--------------------------------------------------------------------------------
1 | import { ExtendedTable } from './ExtendedTable';
2 |
3 | export default ExtendedTable;
4 |
--------------------------------------------------------------------------------
/app/routes/Tables/Tables/components/TrTableHeads.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { faker } from "@faker-js/faker";
3 | import _ from "lodash";
4 |
5 | import { Badge } from "./../../../../components";
6 |
7 | /*eslint-disable */
8 | const colorStatus = ["danger", "success", "warning", "secondary"];
9 | /*eslint-enable */
10 |
11 | const TrTableHeads = () => (
12 |
13 | {_.times(4, (index) => (
14 |
15 | 1 |
16 | {faker.person.firstName()} |
17 | {faker.person.lastName()} |
18 | {faker.internet.email()} |
19 | {faker.internet.userName()} |
20 |
21 | {faker.person.jobType()}
22 | |
23 |
24 | ))}
25 |
26 | );
27 |
28 | export { TrTableHeads };
29 |
--------------------------------------------------------------------------------
/app/routes/Tables/Tables/components/TrTableHoverable.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { faker } from "@faker-js/faker";
3 |
4 | const TrTableHoverable = () => (
5 |
6 |
7 |
8 | Invoice #{faker.finance.mask()}
9 | |
10 |
11 | {faker.person.firstName()} {faker.person.lastName()}
12 | |
13 | $ {faker.finance.amount()} |
14 |
15 | {faker.date.weekday()}, 12 {faker.date.month()}, 2018
16 | |
17 |
18 |
19 | );
20 |
21 | export { TrTableHoverable };
22 |
--------------------------------------------------------------------------------
/app/routes/Tables/Tables/components/TrTableSmall.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { faker } from "@faker-js/faker";
3 | import _ from "lodash";
4 |
5 | import { Badge } from "./../../../../components";
6 |
7 | /*eslint-disable */
8 | const payment = ["success", "danger", "warning", "secondary"];
9 | /*eslint-enable */
10 |
11 | const TrTableSmall = () => (
12 |
13 | {_.times(4, (index) => (
14 |
15 | #{faker.finance.mask()} |
16 |
17 | {faker.person.firstName()} {faker.person.lastName()}
18 | |
19 | $ {faker.finance.amount()} |
20 |
21 |
22 | {faker.finance.transactionType()}
23 |
24 | |
25 |
26 | ))}
27 |
28 | );
29 |
30 | export { TrTableSmall };
31 |
--------------------------------------------------------------------------------
/app/routes/Tables/Tables/components/TrTableStriped.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { faker } from "@faker-js/faker";
3 | import _ from "lodash";
4 |
5 | /*eslint-disable */
6 | const lastMonth = [
7 |
8 | 92.02%
9 | | ,
10 |
11 | 23.02%
12 | | ,
13 | ];
14 | /*eslint-enable */
15 | /*eslint-disable */
16 | const no = ["1", "2", "3", "4"];
17 | /*eslint-enable */
18 |
19 | const TrTableStriped = () => (
20 |
21 | {_.times(4, (index) => (
22 |
23 | {no[index % 4]}. |
24 |
25 | {faker.commerce.productName()}
26 | |
27 |
28 | {faker.date.weekday()}, 12 {faker.date.month()}, 2018
29 | |
30 | {lastMonth[index % 2]}
31 |
32 | ))}
33 |
34 | );
35 |
36 | export { TrTableStriped };
37 |
--------------------------------------------------------------------------------
/app/routes/Tables/Tables/index.js:
--------------------------------------------------------------------------------
1 | import Tables from './Tables';
2 |
3 | export default Tables;
--------------------------------------------------------------------------------
/app/routes/Widgets/index.js:
--------------------------------------------------------------------------------
1 | import Widgets from './Widgets';
2 |
3 | export default Widgets;
4 |
--------------------------------------------------------------------------------
/app/routes/components/Analytics/SessionsByDevice.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 |
4 | const SessionsByDevice = (props) => (
5 |
6 |
7 | { props.title }
8 |
9 |
10 | { props.valuePercent }%
11 |
12 |
13 | { props.value }
14 |
15 |
16 | )
17 | SessionsByDevice.propTypes = {
18 | title: PropTypes.node,
19 | titlePercentColor: PropTypes.node,
20 | valuePercent: PropTypes.string,
21 | valuePercentColor: PropTypes.node,
22 | value: PropTypes.node,
23 | valueColor: PropTypes.node
24 | };
25 | SessionsByDevice.defaultProps = {
26 | title: "Title",
27 | titlePercentColor: "text-inverse",
28 | valuePercent: "00,0",
29 | valuePercentColor: "text-muted",
30 | value: "000,000",
31 | valueColor: "text-muted"
32 | };
33 |
34 |
35 | export { SessionsByDevice };
36 |
--------------------------------------------------------------------------------
/app/routes/components/Analytics/TinyAreaChart.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import _ from 'lodash';
4 | import {
5 | ResponsiveContainer,
6 | AreaChart,
7 | Area
8 | } from 'recharts';
9 |
10 | import colors from './../../../colors';
11 |
12 | const data = _.times(20, () => ({ pv: Math.random() * 100 }));
13 |
14 | const TinyAreaChart = ({ height }) => (
15 |
16 |
17 |
18 |
19 |
20 | );
21 | TinyAreaChart.propTypes = {
22 | height: PropTypes.number,
23 | };
24 | TinyAreaChart.defaultProps = {
25 | height: 25,
26 | };
27 |
28 | export { TinyAreaChart };
29 |
--------------------------------------------------------------------------------
/app/routes/components/Analytics/TinyAreaChartSpend.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import _ from 'lodash';
3 | import {
4 | ResponsiveContainer,
5 | AreaChart,
6 | Area
7 | } from 'recharts';
8 |
9 | import colors from './../../../colors';
10 |
11 | const data = _.times(20, () => ({ pv: Math.random() * 100 }));
12 |
13 | const TinyAreaChartSpend = () => (
14 |
15 |
16 |
17 |
18 |
19 | );
20 |
21 | export { TinyAreaChartSpend };
22 |
--------------------------------------------------------------------------------
/app/routes/components/Analytics/TrTableTrafficChannels.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import _ from "lodash";
3 | import { faker } from "@faker-js/faker";
4 | import { Media, Avatar, AvatarAddOn } from "./../../../components";
5 |
6 | import { randomArray } from "./../../../utilities";
7 |
8 | import { TinyAreaChart } from "./TinyAreaChart";
9 |
10 | const channel = ["Organic Search", "Display", "Direct", "Paid Search"];
11 |
12 | const change = ["75,0% ", "34,4% ", "12,9%", "23,0%"];
13 |
14 | const TrTableTrafficChannels = () => (
15 |
16 | {_.times(5, (index) => (
17 |
18 | {randomArray(channel)} |
19 | {faker.finance.amount()} |
20 | {faker.finance.amount()} |
21 |
22 | {randomArray(change)}{" "}
23 |
24 | |
25 |
26 |
27 | |
28 |
29 | ))}
30 |
31 | );
32 |
33 | export { TrTableTrafficChannels };
34 |
--------------------------------------------------------------------------------
/app/routes/components/CardFooterInfo.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 |
4 | const CardFooterInfo = (props) => (
5 |
6 |
7 |
8 | { props.text }
9 |
10 |
11 |
12 | )
13 | CardFooterInfo.propTypes = {
14 | icon: PropTypes.node,
15 | iconClassName: PropTypes.node,
16 | text: PropTypes.node,
17 | };
18 | CardFooterInfo.defaultProps = {
19 | icon: "question-circle",
20 | iconClassName: "text-muted",
21 | text: "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsam beatae, nesciunt incidunt laudantium. Eveniet ratione quis accusantium dolorum velit maiores illo mollitia."
22 | };
23 |
24 | export { CardFooterInfo };
25 |
--------------------------------------------------------------------------------
/app/routes/components/CardTextDemo.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { CardText } from './../../components';
4 |
5 | const CardTextDemo = (props) => (
6 |
7 |
8 | #{ props.cardNo }
9 |
10 | Lorem ipsum dolor sit amet, consectetur adipiscing elit.
11 | Nulla nisl elit, porta a sapien eget, fringilla sagittis ex.
12 |
13 | )
14 | CardTextDemo.propTypes = {
15 | cardNo: PropTypes.node
16 | };
17 | CardTextDemo.defaultProps = {
18 | cardNo: "?.??"
19 | };
20 |
21 | export { CardTextDemo };
22 |
--------------------------------------------------------------------------------
/app/routes/components/Chat/ChatCardFooter.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Link } from 'react-router-dom';
3 |
4 | import {
5 | InputGroup,
6 | InputGroupAddon,
7 | Button,
8 | Input
9 | } from './../../../components';
10 |
11 | const ChatCardFooter = () => (
12 |
13 |
14 |
15 |
18 |
19 |
20 |
21 |
24 |
25 |
26 |
27 | )
28 |
29 | export { ChatCardFooter };
30 |
--------------------------------------------------------------------------------
/app/routes/components/Chat/ChatCardHeader.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import {
4 | UncontrolledButtonDropdown,
5 | DropdownToggle,
6 | DropdownMenu,
7 | DropdownItem,
8 | } from './../../../components';
9 |
10 | const ChatCardHeader = () => (
11 |
12 |
13 | Chat with Romaine Weber
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | Private Message
23 |
24 |
25 |
26 | Search this Thread
27 |
28 |
29 |
30 |
31 | Block this User
32 |
33 |
34 |
35 |
36 | )
37 |
38 | export { ChatCardHeader };
39 |
--------------------------------------------------------------------------------
/app/routes/components/Dropdowns/DropdownProfile.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { faker } from "@faker-js/faker";
3 | import PropTypes from "prop-types";
4 | import { Link } from "react-router-dom";
5 |
6 | import { DropdownMenu, DropdownItem } from "./../../../components";
7 |
8 | const DropdownProfile = (props) => (
9 |
10 |
11 |
12 | {faker.person.firstName()} {faker.person.lastName()}
13 |
14 |
15 |
16 | My Profile
17 |
18 |
19 | Settings
20 |
21 |
22 | Billings
23 |
24 |
25 |
26 |
27 | Sign Out
28 |
29 |
30 |
31 | );
32 | DropdownProfile.propTypes = {
33 | position: PropTypes.string,
34 | right: PropTypes.bool,
35 | };
36 | DropdownProfile.defaultProps = {
37 | position: "",
38 | };
39 |
40 | export { DropdownProfile };
41 |
--------------------------------------------------------------------------------
/app/routes/components/Financial/TinyDonutChartBig.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import {
4 | PieChart,
5 | Pie,
6 | Cell
7 | } from 'recharts';
8 |
9 | import colors from './../../../colors';
10 |
11 | const data = [
12 | {name: 'Group A', value: 400},
13 | {name: 'Group B', value: 300},
14 | {name: 'Group C', value: 300},
15 | {name: 'Group C', value: 300}
16 | ];
17 |
18 | const COLORS = [ colors['primary'], colors['purple'], colors['success'], colors['yellow']];
19 |
20 | const TinyDonutChartBig = (props) => (
21 |
22 |
30 | {
31 | data.map((entry, index) => | )
32 | }
33 |
34 |
35 | );
36 |
37 | TinyDonutChartBig.propTypes = {
38 | pieBg: PropTypes.spring
39 | };
40 | TinyDonutChartBig.defaultProps = {
41 | pieBg: "300"
42 | };
43 |
44 | export { TinyDonutChartBig };
45 |
--------------------------------------------------------------------------------
/app/routes/components/Financial/TrTableRecentFundings.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import _ from "lodash";
3 | import { faker } from "@faker-js/faker";
4 |
5 | const TrTableRecentFundings = () => (
6 |
7 | {_.times(6, (index) => (
8 |
9 |
10 | {faker.company.name()}
11 | |
12 | ${faker.commerce.price()} |
13 | 20-02-2015 |
14 |
15 |
16 | View
17 |
18 | |
19 |
20 | ))}
21 |
22 | );
23 |
24 | export { TrTableRecentFundings };
25 |
--------------------------------------------------------------------------------
/app/routes/components/FooterText.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 |
4 | const FooterText = (props) => (
5 |
6 | (C) { props.year } All Rights Reserved. This is the "{ props.name }" built with { props.desc }.
7 | Designed and implemented by{' '}
8 |
14 | www.webkom.co
15 |
16 |
17 | )
18 | FooterText.propTypes = {
19 | year: PropTypes.node,
20 | name: PropTypes.node,
21 | desc: PropTypes.node,
22 | };
23 | FooterText.defaultProps = {
24 | year: "2018",
25 | name: "Admin Theme",
26 | desc: "Bootstrap 4, React 16 (latest) & NPM"
27 | };
28 |
29 | export { FooterText };
30 |
--------------------------------------------------------------------------------
/app/routes/components/HeaderDemo.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { Media } from 'reactstrap';
4 |
5 | const HeaderDemo = (props) => (
6 |
7 |
8 |
9 | {props.no}.
10 |
11 |
12 |
13 |
14 | {props.title}
15 |
16 | {props.children || props.subTitle}
17 |
18 |
19 | )
20 | HeaderDemo.propTypes = {
21 | no: PropTypes.oneOfType([
22 | PropTypes.string,
23 | PropTypes.number
24 | ]),
25 | title: PropTypes.string,
26 | subTitle: PropTypes.string,
27 | children: PropTypes.node,
28 | className: PropTypes.string
29 | };
30 | HeaderDemo.defaultProps = {
31 | no: 0,
32 | title: "Waiting for Data...",
33 | subTitle: "Waiting for Data..."
34 | };
35 |
36 | export { HeaderDemo };
37 |
--------------------------------------------------------------------------------
/app/routes/components/HeaderMain.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 |
4 | const HeaderMain = (props) => (
5 |
6 | { /* START H1 Header */}
7 |
8 |
9 | { props.title }
10 |
11 |
12 | { /* END H1 Header */}
13 |
14 | )
15 | HeaderMain.propTypes = {
16 | title: PropTypes.string,
17 | subTitle: PropTypes.node,
18 | className: PropTypes.string
19 | };
20 | HeaderMain.defaultProps = {
21 | title: "Waiting for Data...",
22 | subTitle: "Waiting for Data...",
23 | className: "my-4"
24 | };
25 |
26 | export { HeaderMain };
27 |
--------------------------------------------------------------------------------
/app/routes/components/Logos/LogoNavbar.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 |
4 | const LogoNavbar = (props) => (
5 |
6 | { /* START Logo: Visible on: md, lg, xl */}
7 |
8 | { /* END Logo: Visible on: md, lg, xl */}
9 | { /* START Logo: Visible on: xs, sm */}
10 |
11 | { /* END Logo: Visible on: xs, sm */}
12 |
13 | )
14 |
15 | LogoNavbar.propTypes = {
16 | logo: PropTypes.node
17 | };
18 | LogoNavbar.defaultProps = {
19 | logo: "send"
20 | };
21 |
22 | export { LogoNavbar };
23 |
--------------------------------------------------------------------------------
/app/routes/components/Logos/LogotypeNavbar.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 |
4 | const LogotypeNavbar = (props) => (
5 |
6 | { /* START Logotype: Visible on: md, lg, xl */}
7 |
8 | { props.logotype }
9 |
10 | { /* END Logotype: Visible on: md, lg, xl */}
11 | { /* START Logotype: Visible on: xs, sm */}
12 |
13 | { props.logotype }
14 |
15 | { /* END Logotype: Visible on: xs, sm */}
16 |
17 | Version: React, { props.version }
18 |
19 |
20 | )
21 |
22 | LogotypeNavbar.propTypes = {
23 | logoH: PropTypes.node,
24 | logotype: PropTypes.node,
25 | version: PropTypes.node,
26 | };
27 | LogotypeNavbar.defaultProps = {
28 | logoH: "h5",
29 | logotype: "react",
30 | version: "2.0"
31 | };
32 |
33 | export { LogotypeNavbar };
34 |
--------------------------------------------------------------------------------
/app/routes/components/Monitor/TinyAreaChart.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import _ from 'lodash';
3 | import {
4 | ResponsiveContainer,
5 | AreaChart,
6 | Area
7 | } from './../../../components/recharts';
8 |
9 | import colors from './../../../colors';
10 |
11 | const data = _.times(20, () => ({ pv: Math.random() * 100 }));
12 |
13 | const TinyAreaChart = () => (
14 |
15 |
16 |
17 |
18 |
19 | );
20 |
21 | export { TinyAreaChart };
22 |
--------------------------------------------------------------------------------
/app/routes/components/Monitor/TinyDonutChart.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {
3 | PieChart,
4 | Pie,
5 | Cell
6 | } from 'recharts';
7 |
8 | import colors from './../../../colors';
9 |
10 | const data = [
11 | {name: 'Group A', value: 400},
12 | {name: 'Group B', value: 300},
13 | {name: 'Group C', value: 300}
14 | ];
15 |
16 | const COLORS = [ colors['primary'], colors['info'], colors['300']];
17 |
18 | const TinyDonutChart = () => (
19 |
20 |
28 | {
29 | data.map((entry, index) => | )
30 | }
31 |
32 |
33 | );
34 |
35 | export { TinyDonutChart };
36 |
--------------------------------------------------------------------------------
/app/routes/components/Monitor/TinyDonutChartBig.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import {
4 | PieChart,
5 | Pie,
6 | Cell
7 | } from 'recharts';
8 |
9 | import colors from './../../../colors';
10 |
11 | const data = [
12 | {name: 'Group A', value: 400},
13 | {name: 'Group B', value: 300}
14 | ];
15 |
16 | const TinyDonutChartBig = (props) => (
17 |
18 |
26 | |
27 |
28 |
29 | );
30 |
31 | TinyDonutChartBig.propTypes = {
32 | pieColor: PropTypes.string,
33 | pieBg: PropTypes.string
34 | };
35 | TinyDonutChartBig.defaultProps = {
36 | pieColor: "secondary",
37 | pieBg: "300"
38 | };
39 |
40 | export { TinyDonutChartBig };
41 |
--------------------------------------------------------------------------------
/app/routes/components/Pages/FooterAuth.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import classNames from 'classnames';
3 | import PropTypes from 'prop-types';
4 | import { FooterText } from '../FooterText';
5 |
6 | const FooterAuth = ({ className }) => (
7 |
8 |
9 |
10 | );
11 | FooterAuth.propTypes = {
12 | className: PropTypes.string
13 | };
14 |
15 | export { FooterAuth };
16 |
--------------------------------------------------------------------------------
/app/routes/components/Paginations.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import {
4 | Pagination,
5 | PaginationItem,
6 | PaginationLink
7 | } from 'reactstrap';
8 |
9 | const Paginations = () => (
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 | 1
20 |
21 |
22 |
23 |
24 | 2
25 |
26 |
27 |
28 |
29 | 3
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 | )
39 |
40 | export { Paginations };
41 |
--------------------------------------------------------------------------------
/app/routes/components/Profile/DlRowAddress.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 |
4 | const DlRowAddress = (props) => (
5 |
6 |
7 | - Adress
8 | - 700 Zemlak Glen
9 | - City
10 | - Jacobiton
11 | - State
12 | - West Virginia
13 | - ZIP
14 | - 87032
15 |
16 |
17 | )
18 | DlRowAddress.propTypes = {
19 | leftSideClassName: PropTypes.node,
20 | rightSideClassName: PropTypes.node
21 | };
22 | DlRowAddress.defaultProps = {
23 | leftSideClassName: "",
24 | rightSideClassName: ""
25 | };
26 |
27 | export { DlRowAddress };
28 |
--------------------------------------------------------------------------------
/app/routes/components/ProjectsDashboards/TasksMedia.js:
--------------------------------------------------------------------------------
1 | import React from "react";
2 | import { faker } from "@faker-js/faker";
3 | import PropTypes from "prop-types";
4 | import { Link } from "react-router-dom";
5 |
6 | import { Media, CustomInput } from "./../../../components";
7 |
8 | const TasksMedia = (props) => (
9 |
10 |
11 |
12 |
18 |
19 |
20 |
21 |
22 | {faker.hacker.phrase()}
23 |
24 |
25 | {faker.date.past().toString()}
26 |
27 |
28 |
29 |
30 |
31 |
32 | );
33 | TasksMedia.propTypes = {
34 | iconColor: PropTypes.node,
35 | id: PropTypes.node,
36 | };
37 | TasksMedia.defaultProps = {
38 | iconColor: "muted",
39 | id: "1",
40 | };
41 |
42 | export { TasksMedia };
43 |
--------------------------------------------------------------------------------
/app/routes/components/ProjectsDashboards/TinyDonutChart.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {
3 | PieChart,
4 | Pie,
5 | Cell
6 | } from 'recharts';
7 |
8 | import colors from './../../../colors';
9 |
10 | const data = [
11 | {name: 'Group A', value: 200},
12 | {name: 'Group B', value: 300},
13 | {name: 'Group C', value: 300}
14 | ];
15 |
16 | const COLORS = [ colors['yellow'], colors['red'], colors['success'], colors['yellow']];
17 |
18 | const TinyDonutChart = () => (
19 |
20 |
28 | {
29 | data.map((entry, index) => | )
30 | }
31 |
32 |
33 | );
34 |
35 | export { TinyDonutChart };
36 |
--------------------------------------------------------------------------------
/app/routes/components/ProjectsDashboards/TinyDonutChartAllProjects.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {
3 | PieChart,
4 | Pie,
5 | Cell
6 | } from 'recharts';
7 |
8 | import colors from './../../../colors';
9 |
10 | const data = [
11 | {name: 'Group A', value: 200},
12 | {name: 'Group B', value: 200},
13 | {name: 'Group C', value: 300}
14 | ];
15 |
16 | const COLORS = [ colors['primary'], colors['info'], colors['purple'], colors['yellow']];
17 |
18 | const TinyDonutChartAllProjects = () => (
19 |
20 |
28 | {
29 | data.map((entry, index) => | )
30 | }
31 |
32 |
33 | );
34 |
35 | export { TinyDonutChartAllProjects };
36 |
--------------------------------------------------------------------------------
/app/routes/components/SearchResults/SearchResultsHeader.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import {
4 | InputGroup,
5 | InputGroupAddon,
6 | Input,
7 | Button,
8 | } from './../../../components';
9 |
10 | const SearchResultsHeader = () => (
11 |
12 |
13 |
14 |
15 | Search Results for
16 | "Content Designer"
17 |
18 |
19 | About 1,370 result (0.13 seconds)
20 |
21 |
22 |
23 |
24 |
25 |
26 |
29 |
30 |
31 |
32 |
33 | )
34 |
35 | export { SearchResultsHeader };
36 |
--------------------------------------------------------------------------------
/app/routes/components/Stock/TrTableSummary.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import _ from 'lodash';
3 | import { randomArray } from './../../../utilities';
4 |
5 | const name = [
6 | "PE",
7 | "CROIC",
8 | "Magic Y",
9 | "EV/EBITDA",
10 | "P/FCF",
11 | "ROA"
12 | ];
13 |
14 | const tr2013 = [
15 | "33*4%",
16 | "10*4",
17 | "2*5"
18 | ];
19 |
20 | const ttm = [
21 | "28*3%",
22 | "16*5"
23 | ];
24 |
25 | const TrTableSummary = () => (
26 |
27 | {
28 | _.times(9, (index) => (
29 |
30 |
31 | { randomArray(name) }
32 | |
33 |
34 | { randomArray(tr2013) }
35 | |
36 |
37 | { randomArray(tr2013) }
38 | |
39 |
40 | { randomArray(ttm) }
41 | |
42 |
43 | ))
44 | }
45 |
46 | )
47 |
48 | export { TrTableSummary };
49 |
--------------------------------------------------------------------------------
/app/styles/bootstrap.scss:
--------------------------------------------------------------------------------
1 | @import '~@owczar/dashboard-style--airframe/scss/bootstrap/bootstrap';
--------------------------------------------------------------------------------
/app/styles/components/float-grid.scss:
--------------------------------------------------------------------------------
1 | @import './../variables.scss';
2 | @import '~bootstrap/scss/mixins/breakpoints';
3 |
4 | .float-grid-parent {
5 | margin: 0 auto;
6 | padding-left: $grid-gutter-width / 2;
7 | padding-right: $grid-gutter-width / 2;
8 |
9 | &.float-grid-parent__static {
10 | @media (min-width: breakpoint-min('sm', $grid-breakpoints)) {
11 | width: map-get($container-max-widths, 'sm');
12 | }
13 | @media (min-width: breakpoint-min('md', $grid-breakpoints)) {
14 | width: map-get($container-max-widths, 'md');
15 | }
16 | @media (min-width: breakpoint-min('lg', $grid-breakpoints)) {
17 | width: map-get($container-max-widths, 'lg');
18 | }
19 | @media (min-width: breakpoint-min('xl', $grid-breakpoints)) {
20 | width: map-get($container-max-widths, 'xl');
21 | }
22 | }
23 | }
24 |
25 | .float-col {
26 | padding-left: $grid-gutter-width / 2;
27 | padding-right: $grid-gutter-width / 2;
28 | }
29 |
--------------------------------------------------------------------------------
/app/styles/components/theme-selector.scss:
--------------------------------------------------------------------------------
1 | .theme-config__body .custom-control .custom-control-label {
2 | display: block;
3 | }
--------------------------------------------------------------------------------
/app/styles/main.scss:
--------------------------------------------------------------------------------
1 | @import '~@owczar/dashboard-style--airframe/scss/style';
--------------------------------------------------------------------------------
/app/styles/plugins/_ag-grid.scss:
--------------------------------------------------------------------------------
1 | @import '~@owczar/dashboard-style--airframe/scss/plugins/ag-grid/ag-grid';
2 | @import '~@owczar/dashboard-style--airframe/scss/plugins/ag-grid/ag-theme-bootstrap';
3 |
--------------------------------------------------------------------------------
/app/styles/plugins/_font-awesome.scss:
--------------------------------------------------------------------------------
1 | $fa-font-path: "~font-awesome/fonts/";
2 |
3 | @import "~font-awesome/scss/font-awesome";
--------------------------------------------------------------------------------
/app/styles/plugins/_rc-slider.scss:
--------------------------------------------------------------------------------
1 | /* RC Sliders Overrides */
2 | @import "./../variables.scss";
3 |
4 | .rc-slider {
5 | .rc-slider-track {
6 | background-color: $primary;
7 | }
8 |
9 | .rc-slider-dot-active {
10 | border-color: $primary !important;
11 | }
12 |
13 | .rc-slider-handle {
14 | border-color: $primary;
15 |
16 | &:active {
17 | border-color: darken($primary, 10%);
18 | box-shadow: 0 0 5px darken($primary, 10%);
19 | }
20 | &:hover {
21 | border-color: darken($primary, 5%);
22 | }
23 | }
24 |
25 | .rc-slider-rail {
26 | background-color: $gray-400;
27 | }
28 | .rc-slider-dot {
29 | background-color: $white;
30 | border: 2px solid $gray-500;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/app/styles/plugins/_react-bootstrap-table.scss:
--------------------------------------------------------------------------------
1 | /*@import "~react-bootstrap-table-next/dist/react-bootstrap-table2.min.css";*/
2 |
3 | @import "./../variables.scss";
4 |
5 | .react-bootstrap-table th.sortable {
6 | white-space: nowrap;
7 | }
8 |
9 | .react-bootstrap-table th,
10 | .react-bootstrap-table td {
11 | vertical-align: middle !important;
12 | }
13 |
14 | .react-bootstrap-table .table:not(.table-bordered) tbody tr:last-child td {
15 | border-bottom: 1px solid $table-border-color;
16 | }
17 |
18 | .react-bootstrap-table-pagination {
19 | padding: 0 0.75rem;
20 | }
21 |
22 | .react-bootstrap-table-pagination-list .pagination {
23 | justify-content: flex-end;
24 | }
25 |
--------------------------------------------------------------------------------
/app/styles/plugins/_react-bootstrap-typeahead.scss:
--------------------------------------------------------------------------------
1 | /* React Bootstrap Typeahead Overrides */
2 | .rbt-token {
3 | background-color: $primary !important;
4 | color: $white !important;
5 | }
6 | .close:not(:disabled):not(.disabled):hover, .close:not(:disabled):not(.disabled):focus {
7 | color: darken($white,20%) !important;
8 | }
9 |
--------------------------------------------------------------------------------
/app/styles/plugins/_react-dropzone.scss:
--------------------------------------------------------------------------------
1 | @import "./../variables.scss";
2 |
3 | .dropzone {
4 | border: 2px dashed $gray-300;
5 | padding: 20px;
6 | text-align: center;
7 | cursor: pointer;
8 |
9 | &:hover,
10 | &--active {
11 | border-color: $primary;
12 | background-color: rgba($primary, 0.1);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/app/styles/plugins/_react-image-crop.scss:
--------------------------------------------------------------------------------
1 | // @import '~react-image-crop/lib/ReactCrop.scss';
2 |
--------------------------------------------------------------------------------
/app/styles/plugins/_react-toggle.scss:
--------------------------------------------------------------------------------
1 | /* React Toggle Overrides */
2 | .react-toggle-track {
3 | .fa {
4 | font-size: 12px;
5 | }
6 | }
7 |
8 | .react-toggle-track {
9 | background-color: $gray-500 !important;
10 | }
11 | .react-toggle-thumb {
12 | border: 1px solid $gray-500 !important;
13 | }
14 |
15 | .react-toggle--checked .react-toggle-track {
16 | background-color: $success !important;
17 | }
--------------------------------------------------------------------------------
/app/styles/plugins/plugins.css:
--------------------------------------------------------------------------------
1 | @import "~react-toggle/style.css";
2 | @import '~react-bootstrap-typeahead/css/Typeahead.css';
3 | @import '~react-bootstrap-typeahead/css/Typeahead-bs4.css';
4 | @import "~react-quill/dist/quill.snow.css";
5 | @import "~react-datepicker/dist/react-datepicker.css";
6 | @import "~react-big-calendar/lib/css/react-big-calendar.css";
7 | @import "~react-grid-layout/css/styles.css";
8 | @import "~rc-slider/assets/index.css";
9 |
--------------------------------------------------------------------------------
/app/styles/plugins/plugins.scss:
--------------------------------------------------------------------------------
1 | @import "ag-grid";
2 | @import "font-awesome";
3 | @import "react-toastify";
4 | @import "react-image-crop";
5 | @import "react-toggle";
6 | @import "react-bootstrap-typeahead";
7 | @import "react-quill";
8 | @import "react-datepicker";
9 | @import "font-awesome";
10 | @import "react-big-calendar";
11 | @import "font-awesome";
12 | @import "react-grid-layout";
13 | @import "font-awesome";
14 | @import "react-dropzone";
15 | @import "font-awesome";
16 | @import "rc-slider.scss";
17 | @import "react-bootstrap-table.scss";
18 |
--------------------------------------------------------------------------------
/app/styles/variables.scss:
--------------------------------------------------------------------------------
1 | @import "~@owczar/dashboard-style--airframe/scss/variables";
--------------------------------------------------------------------------------
/app/utilities.js:
--------------------------------------------------------------------------------
1 | const allAvatars = (ctx => {
2 | let keys = ctx.keys();
3 | return keys.map(ctx);
4 | })(require.context('./images/avatars', true, /.*/));
5 |
6 | export function randomArray(arr) {
7 | const index = Math.round(Math.random() * (arr.length - 1));
8 | return arr[index];
9 | }
10 |
11 | export function randomAvatar() {
12 | return randomArray(allAvatars);
13 | }
--------------------------------------------------------------------------------
/build/cli-tools.js:
--------------------------------------------------------------------------------
1 | var program = require('commander');
2 | var rimraf = require('rimraf');
3 | var fs = require('fs');
4 | var mkdirp = require('mkdirp');
5 |
6 | var config = require('./../config');
7 |
8 | function dirParamToPath(dirParam) {
9 | switch(dirParam) {
10 | case 'dist':
11 | return config.distDir;
12 | case 'serve':
13 | return config.serveDir;
14 | }
15 | return null;
16 | }
17 |
18 | var commands = {
19 | clear: function(value) {
20 | var targetPath = dirParamToPath(value);
21 |
22 | if(targetPath) {
23 | rimraf.sync(targetPath);
24 |
25 | console.info('Cleared target directory: %s', targetPath);
26 | }
27 | },
28 |
29 | create: function(value) {
30 | var targetPath = dirParamToPath(value);
31 |
32 | if(targetPath) {
33 | mkdirp.sync(targetPath);
34 |
35 | console.info('Created target directory: %s', targetPath);
36 | }
37 | }
38 | }
39 |
40 | program
41 | .option('-c, --clear [serve/dist]')
42 | .option('-cr, --create [serve/dist]')
43 | .parse(process.argv);
44 |
45 | for (var commandName in commands) {
46 | if (commands.hasOwnProperty(commandName) && program[commandName]) {
47 | commands[commandName](program[commandName]);
48 | }
49 | }
50 |
51 |
--------------------------------------------------------------------------------
/config.js:
--------------------------------------------------------------------------------
1 | var path = require("path");
2 |
3 | var root = path.join(__dirname);
4 |
5 | var config = {
6 | rootDir: root,
7 | // Targets ========================================================
8 | serveDir: path.join(root, ".serve"),
9 | distDir: path.join(root, "dist"),
10 | clientManifestFile: "manifest.webpack.json",
11 | clientStatsFile: "stats.webpack.json",
12 |
13 | // Source Directory ===============================================
14 | srcDir: path.join(root, "app"),
15 | srcServerDir: path.join(root, "server"),
16 |
17 | // HTML Layout ====================================================
18 | srcHtmlLayout: path.join(root, "app", "index.html"),
19 |
20 | // Site Config ====================================================
21 | siteTitle: "Airframe",
22 | siteDescription: "Default Dashboard ready for Development",
23 | siteCannonicalUrl: "http://localhost:4100",
24 | siteKeywords: "react dashboard seed bootstrap",
25 | };
26 |
27 | module.exports = config;
28 |
--------------------------------------------------------------------------------
/packages/dashboard-style/js-modules/index.js:
--------------------------------------------------------------------------------
1 | var dashboardVersion = require('./dashboard-version');
2 | var extendedFaker = require('./extended-faker');
3 | var SideMenuAnimate = require('./side-menu-animate');
4 | var SidebarEntryAnimate = require('./sidebar-entry-animate');
5 | var SlimSidebarAnimate = require('./slim-sidebar-animate');
6 | var SlimMenuAnimate = require('./slim-menu-animate');
7 | var DropdownMenuAnimate = require('./dropdown-menu-animate');
8 | var NestedDropdownAnimate = require('./nested-dropdown-animate');
9 | var HighchartsTheme = require('./highcharts');
10 | var Colors = require('./colors');
11 |
12 | module.exports = {
13 | dashboardVersion: dashboardVersion,
14 | faker: extendedFaker,
15 | SideMenuAnimate: SideMenuAnimate,
16 | SidebarEntryAnimate: SidebarEntryAnimate,
17 | SlimSidebarAnimate: SlimSidebarAnimate,
18 | SlimMenuAnimate: SlimMenuAnimate,
19 | DropdownMenuAnimate: DropdownMenuAnimate,
20 | NestedDropdownAnimate: NestedDropdownAnimate,
21 | HighchartsTheme: HighchartsTheme,
22 | Colors: Colors,
23 | };
24 |
--------------------------------------------------------------------------------
/packages/dashboard-style/js/highcharts/bar-basic.js:
--------------------------------------------------------------------------------
1 | !function o(n,l,u){function s(r,e){if(!l[r]){if(!n[r]){var t="function"==typeof require&&require;if(!e&&t)return t(r,!0);if(d)return d(r,!0);var i=new Error("Cannot find module '"+r+"'");throw i.code="MODULE_NOT_FOUND",i}var a=l[r]={exports:{}};n[r][0].call(a.exports,function(e){return s(n[r][1][e]||e)},a,a.exports,o,n,l,u)}return l[r].exports}for(var d="function"==typeof require&&require,e=0;eWikipedia.org'},xAxis:{categories:["Africa","America","Asia","Europe","Oceania"],title:{text:null}},yAxis:{min:0,title:{text:"Population (millions)",align:"high"},labels:{overflow:"justify"}},tooltip:{valueSuffix:" millions"},plotOptions:{bar:{dataLabels:{enabled:!0}}},legend:{layout:"vertical",align:"right",verticalAlign:"top",x:-40,y:80,floating:!0,borderWidth:1,borderRadius:3,backgroundColor:"#FFFFFF",borderColor:"#DEE2E6",shadow:!1},credits:{enabled:!1},series:[{name:"Year 1800",data:[107,31,635,203,2]},{name:"Year 1900",data:[133,156,947,408,6]},{name:"Year 2000",data:[814,841,3714,727,31]}]})},{}]},{},[1]);
2 | //# sourceMappingURL=bar-basic.js.map
3 |
--------------------------------------------------------------------------------
/packages/dashboard-style/js/highcharts/bar-stacked.js:
--------------------------------------------------------------------------------
1 | !function i(o,s,c){function u(r,e){if(!s[r]){if(!o[r]){var t="function"==typeof require&&require;if(!e&&t)return t(r,!0);if(f)return f(r,!0);var a=new Error("Cannot find module '"+r+"'");throw a.code="MODULE_NOT_FOUND",a}var n=s[r]={exports:{}};o[r][0].call(n.exports,function(e){return u(o[r][1][e]||e)},n,n.exports,i,o,s,c)}return s[r].exports}for(var f="function"==typeof require&&require,e=0;e{point.percentage:.1f}%"},credits:!1,plotOptions:{pie:{allowPointSelect:!0,cursor:"pointer",dataLabels:{enabled:!1},showInLegend:!0}},series:[{name:"Brands",colorByPoint:!0,data:[{name:"Chrome",y:61.41,sliced:!0,selected:!0},{name:"Internet Explorer",y:11.84},{name:"Firefox",y:10.85},{name:"Edge",y:4.67}]}]})},{}]},{},[1]);
2 | //# sourceMappingURL=pie-legend.js.map
3 |
--------------------------------------------------------------------------------
/packages/dashboard-style/js/highcharts/pie-semi-circle.js:
--------------------------------------------------------------------------------
1 | !function i(a,l,s){function c(r,e){if(!l[r]){if(!a[r]){var t="function"==typeof require&&require;if(!e&&t)return t(r,!0);if(p)return p(r,!0);var n=new Error("Cannot find module '"+r+"'");throw n.code="MODULE_NOT_FOUND",n}var o=l[r]={exports:{}};a[r][0].call(o.exports,function(e){return c(a[r][1][e]||e)},o,o.exports,i,a,l,s)}return l[r].exports}for(var p="function"==typeof require&&require,e=0;eshares
2017",align:"center",verticalAlign:"middle",y:40},tooltip:{pointFormat:"{series.name}: {point.percentage:.1f}%"},credits:!1,plotOptions:{pie:{dataLabels:{enabled:!0,distance:-50,style:{fontWeight:"bold",color:"white"}},startAngle:-90,endAngle:90,center:["50%","75%"],size:"110%"}},series:[{type:"pie",name:"Browser share",innerSize:"50%",data:[["Chrome",58.9],["Firefox",13.29],["Internet Explorer",13],["Edge",3.78]]}]})},{}]},{},[1]);
2 | //# sourceMappingURL=pie-semi-circle.js.map
3 |
--------------------------------------------------------------------------------
/packages/dashboard-style/js/nested-dropdown.js:
--------------------------------------------------------------------------------
1 | !function i(u,s,d){function a(n,e){if(!s[n]){if(!u[n]){var o="function"==typeof require&&require;if(!e&&o)return o(n,!0);if(p)return p(n,!0);var r=new Error("Cannot find module '"+n+"'");throw r.code="MODULE_NOT_FOUND",r}var t=s[n]={exports:{}};u[n][0].call(t.exports,function(e){return a(u[n][1][e]||e)},t,t.exports,i,u,s,d)}return s[n].exports}for(var p="function"==typeof require&&require,e=0;e .sidebar-menu__entry__link,.sidebar-submenu__entry--nested > .sidebar-submenu__entry__link");(t=s.filter(function(){return n.location.href===e(this).prop("href")}).first()).parent().addClass("active"),function e(n){var r=n.parents(".sidebar-submenu__entry--nested,.sidebar-menu__entry--nested");0*:first-child {
15 | padding-left: 0;
16 | padding-right: 1rem;
17 | text-align: left;
18 | color: $body-color;
19 | }
20 | &.hr-text-center {
21 | &:before {
22 | content: " ";
23 | }
24 | >*:first-child {
25 | text-align: center;
26 | padding-left: 1rem;
27 | }
28 | }
29 | &.hr-text-right {
30 | &:before {
31 | content: " ";
32 | }
33 | &:after {
34 | content: none;
35 | }
36 | >*:first-child {
37 | text-align: right;
38 | padding-left: 1rem;
39 | padding-right: 0;
40 | }
41 | }
42 | }
--------------------------------------------------------------------------------
/packages/dashboard-style/scss/_icon-with-badge.scss:
--------------------------------------------------------------------------------
1 | .icon-with-badge {
2 | position: relative;
3 | display: inline-block;
4 |
5 | .icon-with-badge__badge {
6 | position: absolute;
7 | right: -8px;
8 | top: -4px;
9 | padding: 2px 5px;
10 | line-height: 12px;
11 | }
12 | }
--------------------------------------------------------------------------------
/packages/dashboard-style/scss/_theme-config.scss:
--------------------------------------------------------------------------------
1 | .theme-config {
2 | width: 200px;
3 |
4 | position: fixed;
5 | top: 50%;
6 | right: 0;
7 | bottom: auto;
8 | left: auto;
9 | transform: translateX(100%) translateY(-50%);
10 | transition: transform 250ms cubic-bezier(0.215, 0.610, 0.355, 1.000);
11 | z-index: 1500;
12 |
13 | &--active {
14 | transform: translateY(-50%);
15 | }
16 |
17 | .theme-config {
18 | &__body.card {
19 | border-top-right-radius: 0;
20 | border-bottom-right-radius: 0;
21 | }
22 |
23 | &__trigger {
24 | border-top-right-radius: 0;
25 | border-bottom-right-radius: 0;
26 | position: absolute;
27 | top: 50%;
28 | left: 0;
29 | transform: translate(-100%, -50%);
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/packages/dashboard-style/scss/bootstrap/_functions.scss:
--------------------------------------------------------------------------------
1 | @function map-collect($maps...) {
2 | $collection: ();
3 |
4 | @each $map in $maps {
5 | $collection: map-merge($collection, $map);
6 | }
7 | @return $collection;
8 | }
--------------------------------------------------------------------------------
/packages/dashboard-style/scss/plugins/ag-grid/ag-grid.scss:
--------------------------------------------------------------------------------
1 | @import "~ag-grid-community/src/styles/ag-grid.scss";
2 |
--------------------------------------------------------------------------------
/packages/dashboard-style/scss/plugins/highcharts/highcharts.scss:
--------------------------------------------------------------------------------
1 | @import "./../../variables";
2 |
3 | .highcharts-menu {
4 | hr {
5 | margin: 0.25rem 0;
6 | }
7 | }
8 |
9 | .highcharts-root {
10 | font-family: $font-family-base !important;
11 | font-size: $font-size-base;
12 | }
--------------------------------------------------------------------------------
/packages/dashboard-style/scss/style.scss:
--------------------------------------------------------------------------------
1 | @import "./animations";
2 | @import "./avatars";
3 | @import "./custom-card";
4 | @import "./custom-card-header";
5 | @import "./hr-text";
6 | @import "./icon-with-badge";
7 | @import "./layout";
8 | @import "./sidebar";
9 | @import "./sidebar-menu";
10 | @import "./navbar";
11 | @import "./theme-variants";
12 | @import "./extended-dropdown";
13 | @import "./fullScreen";
14 | @import "./nested-dropdown";
15 | @import "./timeline";
16 | @import "./theme-config";
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: [
3 | require('autoprefixer')
4 | ]
5 | };
--------------------------------------------------------------------------------
/vercel.json:
--------------------------------------------------------------------------------
1 | {
2 | "rewrites": [
3 | { "source": "/(.*)", "destination": "/" }
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------