├── .babelrc
├── .eslintignore
├── .eslintrc
├── .gitignore
├── CODE_OF_CONDUCT.md
├── LICENSE.txt
├── _config.yml
├── documentation
├── css
│ ├── bootstrap.css
│ ├── prism.css
│ └── style.css
├── favicon.ico
├── fonts
│ ├── glyphicons-halflings-regular.eot
│ ├── glyphicons-halflings-regular.svg
│ ├── glyphicons-halflings-regular.ttf
│ ├── glyphicons-halflings-regular.woff
│ └── glyphicons-halflings-regular.woff2
├── images
│ ├── BossAdminChooseTheme.png
│ ├── BossAdminTable.png
│ ├── banner.jpg
│ ├── detail_icon.png
│ ├── fonts.jpg
│ ├── icons.png
│ ├── logo.png
│ ├── roboto.png
│ ├── ss_code.png
│ └── ss_code2.png
├── index.html
└── js
│ ├── bootstrap.bundle.js
│ ├── bootstrap.bundle.js.map
│ ├── jquery.js
│ ├── jquery.nav.js
│ └── prism.js
├── package-lock.json
├── package.json
├── postcss.config.js
├── readme.md
├── src
├── app
│ ├── actions
│ │ ├── CalendarEventActions.js
│ │ ├── ContactActions.js
│ │ ├── CrudTbActions.js
│ │ ├── EcommerceActions.js
│ │ ├── ReduxFormActions.js
│ │ ├── TreeTableActions.js
│ │ ├── UiActions.js
│ │ └── actionTypes.js
│ ├── components
│ │ ├── App
│ │ │ ├── App.js
│ │ │ ├── Dashboard.js
│ │ │ ├── Outer.js
│ │ │ └── appStyles-jss.js
│ │ ├── Badges
│ │ │ └── LimitedBadges.js
│ │ ├── BreadCrumb
│ │ │ ├── BreadCrumb.js
│ │ │ └── breadCrumb-jss.js
│ │ ├── Calendar
│ │ │ ├── AddEvent.js
│ │ │ ├── AddEventForm.js
│ │ │ ├── DetailEvent.js
│ │ │ ├── EventCalendar.js
│ │ │ └── calendar-jss.js
│ │ ├── CardPaper
│ │ │ ├── GeneralCard.js
│ │ │ ├── IdentityCard.js
│ │ │ ├── NewsCard.js
│ │ │ ├── PlayerCard.js
│ │ │ ├── PostCard.js
│ │ │ ├── ProductCard.js
│ │ │ ├── ProfileCard.js
│ │ │ ├── VideoCard.js
│ │ │ └── cardStyle-jss.js
│ │ ├── Cart
│ │ │ ├── Cart.js
│ │ │ └── cart-jss.js
│ │ ├── Contact
│ │ │ ├── AddContact.js
│ │ │ ├── AddContactForm.js
│ │ │ ├── ContactDetail.js
│ │ │ ├── ContactHeader.js
│ │ │ ├── ContactList.js
│ │ │ └── contact-jss.js
│ │ ├── Counter
│ │ │ └── CounterWidget.js
│ │ ├── Error
│ │ │ └── ErrorWrap.js
│ │ ├── Footer
│ │ │ ├── Footer.js
│ │ │ └── Footer.scss
│ │ ├── Forms
│ │ │ ├── LoginForm.js
│ │ │ ├── RegisterForm.js
│ │ │ ├── helpers
│ │ │ │ └── helpers.js
│ │ │ └── user-jss.js
│ │ ├── Gallery
│ │ │ ├── ProductDetail.js
│ │ │ ├── ProductGallery.js
│ │ │ └── product-jss.js
│ │ ├── Header
│ │ │ ├── Header.js
│ │ │ ├── UserMenu.js
│ │ │ └── header-jss.js
│ │ ├── MarketingAds
│ │ │ └── MarketingAds.js
│ │ ├── Notification
│ │ │ └── Notification.js
│ │ ├── Panel
│ │ │ ├── FloatingPanel.js
│ │ │ └── panel-jss.js
│ │ ├── PapperBlock
│ │ │ ├── PapperBlock.js
│ │ │ └── papperStyle-jss.js
│ │ ├── Quote
│ │ │ └── Quote.js
│ │ ├── Search
│ │ │ ├── SearchProduct.js
│ │ │ └── search-jss.js
│ │ ├── Sidebar
│ │ │ ├── MainMenu.js
│ │ │ ├── OtherMenu.js
│ │ │ ├── Sidebar.js
│ │ │ └── sidebar-jss.js
│ │ ├── SourceReader
│ │ │ └── SourceReader.js
│ │ ├── Tables
│ │ │ ├── AdvTable.js
│ │ │ ├── CrudTable.js
│ │ │ ├── EmptyData.js
│ │ │ ├── TreeTable.js
│ │ │ └── tableParts
│ │ │ │ ├── DatePickerCell.js
│ │ │ │ ├── EditableCell.js
│ │ │ │ ├── Form.js
│ │ │ │ ├── MainTable.js
│ │ │ │ ├── Row.js
│ │ │ │ ├── SelectableCell.js
│ │ │ │ ├── TableHeader.js
│ │ │ │ ├── TableToolbar.js
│ │ │ │ ├── TimePickerCell.js
│ │ │ │ ├── ToggleCell.js
│ │ │ │ └── tableStyle-jss.js
│ │ ├── Widget
│ │ │ ├── AlbumWidget.js
│ │ │ ├── AreaChartWidget.js
│ │ │ ├── CarouselWidget.js
│ │ │ ├── CounterIconsWidget.js
│ │ │ └── widget-jss.js
│ │ └── index.js
│ ├── config
│ │ ├── codePreview.js
│ │ ├── default.js
│ │ ├── environment.js
│ │ └── index.js
│ ├── redux
│ │ ├── helpers
│ │ │ └── dateTimeHelper.js
│ │ ├── middleware
│ │ │ └── clientMiddleware.js
│ │ ├── modules
│ │ │ ├── calendar.js
│ │ │ ├── contact.js
│ │ │ ├── crudTable.js
│ │ │ ├── ecommerce.js
│ │ │ ├── initForm.js
│ │ │ ├── login.js
│ │ │ ├── treeTable.js
│ │ │ └── ui.js
│ │ ├── reducer.js
│ │ └── store.js
│ ├── routes
│ │ ├── Charts
│ │ │ ├── AreaCharts.js
│ │ │ ├── BarCharts.js
│ │ │ ├── CompossedCharts.js
│ │ │ ├── LineCharts.js
│ │ │ ├── PieCharts.js
│ │ │ ├── RadarCharts.js
│ │ │ ├── ResponsiveCharts.js
│ │ │ ├── ScatterCharts.js
│ │ │ └── demos
│ │ │ │ ├── AreaNegativePositive.js
│ │ │ │ ├── AreaPercent.js
│ │ │ │ ├── AreaResponsive.js
│ │ │ │ ├── AreaSimple.js
│ │ │ │ ├── AreaStacked.js
│ │ │ │ ├── BarCustom.js
│ │ │ │ ├── BarCustomLabel.js
│ │ │ │ ├── BarMix.js
│ │ │ │ ├── BarPositiveNegative.js
│ │ │ │ ├── BarResponsive.js
│ │ │ │ ├── BarSimple.js
│ │ │ │ ├── BarStacked.js
│ │ │ │ ├── CompossedLineBarArea.js
│ │ │ │ ├── CompossedResponsive.js
│ │ │ │ ├── CompossedSameData.js
│ │ │ │ ├── CompossedVertical.js
│ │ │ │ ├── DoubleRadar.js
│ │ │ │ ├── LineCustomDot.js
│ │ │ │ ├── LineCustomLabel.js
│ │ │ │ ├── LineResponsive.js
│ │ │ │ ├── LineSimple.js
│ │ │ │ ├── LineVertical.js
│ │ │ │ ├── PieCustomLabel.js
│ │ │ │ ├── PieCustomShape.js
│ │ │ │ ├── PieSimple.js
│ │ │ │ ├── RadarSimple.js
│ │ │ │ ├── ScatterCustom.js
│ │ │ │ ├── ScatterJoinLine.js
│ │ │ │ ├── ScatterMultiple.js
│ │ │ │ ├── ScatterResponsive.js
│ │ │ │ ├── ScatterSimple.js
│ │ │ │ ├── index.js
│ │ │ │ └── sampleData.js
│ │ ├── Dashboard
│ │ │ ├── Dashboard.js
│ │ │ ├── DashboardV2.js
│ │ │ └── dashboard-jss.js
│ │ ├── Forms
│ │ │ ├── Autocomplete.js
│ │ │ ├── Buttons.js
│ │ │ ├── CheckboxRadio.js
│ │ │ ├── DateTimePicker.js
│ │ │ ├── Rating.js
│ │ │ ├── ReduxForm.js
│ │ │ ├── Selectbox.js
│ │ │ ├── SliderRange.js
│ │ │ ├── Switches.js
│ │ │ ├── TextEditor.js
│ │ │ ├── Textbox.js
│ │ │ ├── Upload.js
│ │ │ └── demos
│ │ │ │ ├── AutoSuggest.js
│ │ │ │ ├── Checkboxes.js
│ │ │ │ ├── ComplexButtons.js
│ │ │ │ ├── ControlledSelectbox.js
│ │ │ │ ├── CustomButtons.js
│ │ │ │ ├── DateInput.js
│ │ │ │ ├── DateTimeInput.js
│ │ │ │ ├── FloatingButtons.js
│ │ │ │ ├── FormattedInputs.js
│ │ │ │ ├── HighlightSuggest.js
│ │ │ │ ├── InputAdornments.js
│ │ │ │ ├── MultipleSelectbox.js
│ │ │ │ ├── NativeSelectbox.js
│ │ │ │ ├── RadioButton.js
│ │ │ │ ├── ReduxFormDemo.js
│ │ │ │ ├── SelectSuggestionTags.js
│ │ │ │ ├── SelectSuggestions.js
│ │ │ │ ├── SimpleSelectbox.js
│ │ │ │ ├── StandardButtons.js
│ │ │ │ ├── SwitchesInput.js
│ │ │ │ ├── TagSuggestions.js
│ │ │ │ ├── TextFields.js
│ │ │ │ ├── TextFieldsLayout.js
│ │ │ │ ├── TimeInput.js
│ │ │ │ └── index.js
│ │ ├── Layouts
│ │ │ ├── AppLayout.js
│ │ │ ├── Grid.js
│ │ │ ├── Responsive.js
│ │ │ └── demos
│ │ │ │ ├── AutoLayout.js
│ │ │ │ ├── Breakpoint.js
│ │ │ │ ├── BreakpointGrid.js
│ │ │ │ ├── Centered.js
│ │ │ │ ├── FullHeader.js
│ │ │ │ ├── FullWidth.js
│ │ │ │ ├── GridLayout.js
│ │ │ │ ├── Interactive.js
│ │ │ │ ├── Limitation.js
│ │ │ │ ├── MediaQueries.js
│ │ │ │ ├── SidebarLayout.js
│ │ │ │ ├── SidebarLayoutRight.js
│ │ │ │ ├── WIthWIdth.js
│ │ │ │ ├── breakpoint.md
│ │ │ │ ├── index.js
│ │ │ │ └── menuData.js
│ │ ├── Maps
│ │ │ ├── Info.js
│ │ │ ├── MapDirection.js
│ │ │ ├── MapMarker.js
│ │ │ ├── SearchMap.js
│ │ │ ├── StreetViewMap.js
│ │ │ ├── TrafficIndicator.js
│ │ │ └── demos
│ │ │ │ ├── BasicMarker.js
│ │ │ │ ├── Direction.js
│ │ │ │ ├── PopoverMarker.js
│ │ │ │ ├── SearchLocation.js
│ │ │ │ ├── StreetView.js
│ │ │ │ ├── Traffic.js
│ │ │ │ └── index.js
│ │ ├── NotFound
│ │ │ └── NotFound.js
│ │ ├── Pages
│ │ │ ├── BlankPage
│ │ │ │ └── index.js
│ │ │ ├── Calendar
│ │ │ │ └── index.js
│ │ │ ├── Chat
│ │ │ │ └── index.js
│ │ │ ├── Contact
│ │ │ │ └── index.js
│ │ │ ├── Ecommerce
│ │ │ │ └── index.js
│ │ │ ├── Email
│ │ │ │ └── index.js
│ │ │ ├── Error
│ │ │ │ └── index.js
│ │ │ ├── Maintenance
│ │ │ │ └── index.js
│ │ │ ├── Photos
│ │ │ │ └── index.js
│ │ │ ├── SocialMedia
│ │ │ │ └── index.js
│ │ │ ├── Standalone
│ │ │ │ ├── LoginDedicated.js
│ │ │ │ └── NotFoundDedicated.js
│ │ │ ├── UserProfile
│ │ │ │ └── index.js
│ │ │ └── Users
│ │ │ │ ├── LockScreen.js
│ │ │ │ ├── Login.js
│ │ │ │ ├── Register.js
│ │ │ │ └── ResetPassword.js
│ │ ├── Parent
│ │ │ └── index.js
│ │ ├── Tables
│ │ │ ├── AdvancedTable.js
│ │ │ ├── BasicTable.js
│ │ │ ├── CrudTable.js
│ │ │ ├── TablePlayground.js
│ │ │ ├── TreeTable.js
│ │ │ └── demos
│ │ │ │ ├── AdvTableDemo.js
│ │ │ │ ├── BorderedTable.js
│ │ │ │ ├── CrudTableDemo.js
│ │ │ │ ├── EmptyTable.js
│ │ │ │ ├── HoverTable.js
│ │ │ │ ├── SimpleTable.js
│ │ │ │ ├── StatusColorRow.js
│ │ │ │ ├── StatusLabel.js
│ │ │ │ ├── StrippedTable.js
│ │ │ │ ├── TrackingTable.js
│ │ │ │ ├── TreeTableDemo.js
│ │ │ │ ├── dataTreeTable.js
│ │ │ │ ├── index.js
│ │ │ │ └── sampleData.js
│ │ ├── Themes
│ │ │ ├── ThemeThumb.js
│ │ │ ├── index.js
│ │ │ └── themeStyles-jss.js
│ │ ├── UiElements
│ │ │ ├── Accordion.js
│ │ │ ├── Avatars.js
│ │ │ ├── Badges.js
│ │ │ ├── Breadcrumbs.js
│ │ │ ├── Cards.js
│ │ │ ├── DialogModal.js
│ │ │ ├── Dividers.js
│ │ │ ├── DrawerMenu.js
│ │ │ ├── ImageGrid.js
│ │ │ ├── List.js
│ │ │ ├── Notification.js
│ │ │ ├── Paginations.js
│ │ │ ├── PopoverTooltip.js
│ │ │ ├── Progress.js
│ │ │ ├── SliderCarousel.js
│ │ │ ├── Steppers.js
│ │ │ ├── Tabs.js
│ │ │ ├── Tags.js
│ │ │ ├── Typography.js
│ │ │ └── demos
│ │ │ │ ├── Accordion
│ │ │ │ ├── AdvancedAccordion.js
│ │ │ │ ├── ControlledAccordion.js
│ │ │ │ └── SimpleAccordion.js
│ │ │ │ ├── Avatars
│ │ │ │ ├── AvatarsDemo.js
│ │ │ │ └── AvatarsPractice.js
│ │ │ │ ├── Badges
│ │ │ │ ├── CommonBadges.js
│ │ │ │ └── VariantBadges.js
│ │ │ │ ├── Breadcrumbs
│ │ │ │ ├── ClassicBreadcrumbs.js
│ │ │ │ └── PaperBreadcrumbs.js
│ │ │ │ ├── Cards
│ │ │ │ ├── ControlCards.js
│ │ │ │ ├── EcommerceCards.js
│ │ │ │ ├── PaperSheet.js
│ │ │ │ ├── SocialCards.js
│ │ │ │ └── StandardCards.js
│ │ │ │ ├── DialogModal
│ │ │ │ ├── AlertDialog.js
│ │ │ │ ├── ConfirmationDialog.js
│ │ │ │ ├── FormDialog.js
│ │ │ │ ├── FullScreenDialog.js
│ │ │ │ ├── ModalDemo.js
│ │ │ │ ├── SelectDialog.js
│ │ │ │ └── SelectRadioDialog.js
│ │ │ │ ├── DrawerMenu
│ │ │ │ ├── BasicMenu.js
│ │ │ │ ├── DropdownMenu.js
│ │ │ │ ├── MenuTransition.js
│ │ │ │ ├── MiniDrawer.js
│ │ │ │ ├── PermanentDrawer.js
│ │ │ │ ├── PersistentDrawer.js
│ │ │ │ ├── StyledMenu.js
│ │ │ │ ├── SwipeDrawer.js
│ │ │ │ ├── TemporaryDrawer.js
│ │ │ │ └── menuData.js
│ │ │ │ ├── ImageGrid
│ │ │ │ ├── AdvancedGridList.js
│ │ │ │ ├── ImageGridList.js
│ │ │ │ ├── SingleLineGridList.js
│ │ │ │ └── TitlebarGridList.js
│ │ │ │ ├── List
│ │ │ │ ├── ListBasic.js
│ │ │ │ ├── ListControl.js
│ │ │ │ ├── ListInteractive.js
│ │ │ │ ├── ListMenu.js
│ │ │ │ └── PinnedList.js
│ │ │ │ ├── Notification
│ │ │ │ ├── SimpleNotif.js
│ │ │ │ ├── StyledNotif.js
│ │ │ │ └── TransitionNotif.js
│ │ │ │ ├── PopoverTooltip
│ │ │ │ ├── PopoverPlayground.js
│ │ │ │ ├── PositionedTooltips.js
│ │ │ │ ├── SimplePopover.js
│ │ │ │ └── SimpleTooltips.js
│ │ │ │ ├── Progress
│ │ │ │ ├── CircularDeterminate.js
│ │ │ │ ├── CircularIndeterminate.js
│ │ │ │ ├── CircularIntegration.js
│ │ │ │ ├── CircularStatic.js
│ │ │ │ ├── LinearBuffer.js
│ │ │ │ ├── LinearDeterminate.js
│ │ │ │ ├── LinearIndeterminate.js
│ │ │ │ ├── LinearQuery.js
│ │ │ │ ├── LinearStatic.js
│ │ │ │ └── ProgressDelay.js
│ │ │ │ ├── Steppers
│ │ │ │ ├── HorizontalLinear.js
│ │ │ │ ├── HorizontalNonLinear.js
│ │ │ │ ├── MobileSteppers.js
│ │ │ │ ├── StepperCarousel.js
│ │ │ │ ├── StepperError.js
│ │ │ │ └── VerticalStepper.js
│ │ │ │ ├── Tabs
│ │ │ │ ├── BottomNav.js
│ │ │ │ ├── CenteredTabs.js
│ │ │ │ ├── CustomTabs.js
│ │ │ │ ├── DisabledTab.js
│ │ │ │ ├── FixedTabs.js
│ │ │ │ ├── IconTabs.js
│ │ │ │ ├── LongTextTabs.js
│ │ │ │ ├── ScrollIconTabs.js
│ │ │ │ ├── ScrollTabs.js
│ │ │ │ └── SimpleTabs.js
│ │ │ │ ├── Tags
│ │ │ │ ├── ArrayTags.js
│ │ │ │ └── BasicTags.js
│ │ │ │ ├── Typography
│ │ │ │ ├── AlignTypo.js
│ │ │ │ ├── ColouredTypo.js
│ │ │ │ ├── GeneralTypo.js
│ │ │ │ ├── Heading.js
│ │ │ │ ├── ListTypo.js
│ │ │ │ └── QuotesDemo.js
│ │ │ │ └── index.js
│ │ ├── index.js
│ │ └── withTracker.js
│ ├── styles
│ │ ├── components
│ │ │ ├── Code.scss
│ │ │ ├── Form.scss
│ │ │ ├── Messages.scss
│ │ │ ├── Progress.scss
│ │ │ ├── Table.scss
│ │ │ ├── TextEditor.scss
│ │ │ ├── Typography.scss
│ │ │ └── vendors
│ │ │ │ ├── react-big-calendar
│ │ │ │ └── react-big-calendar.css
│ │ │ │ ├── react-loading-bar
│ │ │ │ └── index.css
│ │ │ │ ├── select
│ │ │ │ └── select.css
│ │ │ │ └── slick-carousel
│ │ │ │ ├── ajax-loader.gif
│ │ │ │ ├── fonts
│ │ │ │ ├── slick.eot
│ │ │ │ ├── slick.svg
│ │ │ │ ├── slick.ttf
│ │ │ │ └── slick.woff
│ │ │ │ ├── slick-carousel.css
│ │ │ │ ├── slick-theme.css
│ │ │ │ └── slick.css
│ │ ├── layout
│ │ │ ├── _base.scss
│ │ │ ├── _buttons.scss
│ │ │ ├── _forms.scss
│ │ │ ├── _layout.scss
│ │ │ ├── _lists.scss
│ │ │ ├── _media.scss
│ │ │ ├── _tables.scss
│ │ │ ├── _typography.scss
│ │ │ └── _variables.scss
│ │ ├── mixins.scss
│ │ ├── mixins
│ │ │ ├── bourbon.scss
│ │ │ ├── neat.scss
│ │ │ └── pallete.scss
│ │ ├── variables.scss
│ │ └── variables
│ │ │ ├── bitters.scss
│ │ │ ├── custom_pallete.scss
│ │ │ └── neat.scss
│ └── utils
│ │ ├── avatars.js
│ │ ├── brand.js
│ │ ├── carouselData.js
│ │ ├── chartData.js
│ │ ├── chartMiniData.js
│ │ ├── chatData.js
│ │ ├── connectionData.js
│ │ ├── contactData.js
│ │ ├── dummyContents.js
│ │ ├── emailData.js
│ │ ├── eventData.js
│ │ ├── helpers.js
│ │ ├── images.js
│ │ ├── imgData.js
│ │ ├── imgDataMasonry.js
│ │ ├── menu.js
│ │ ├── notifMessage.js
│ │ ├── otherMenu.js
│ │ ├── productData.js
│ │ ├── screenshoot.js
│ │ ├── themePalette.js
│ │ ├── timelineData.js
│ │ └── validation.js
├── client
│ ├── index.js
│ ├── normalize.scss
│ └── root.js
├── helpers
│ ├── ApiClient.js
│ └── material-icon-cheat.txt
└── server
│ ├── SSR
│ ├── createSSR.js
│ └── html.js
│ ├── env.js
│ ├── rawdocs.js
│ ├── rawicons.js
│ ├── server.js
│ └── start.js
├── static
├── favicons
│ ├── android-icon-144x144.png
│ ├── android-icon-192x192.png
│ ├── android-icon-36x36.png
│ ├── android-icon-48x48.png
│ ├── android-icon-72x72.png
│ ├── android-icon-96x96.png
│ ├── apple-icon-114x114.png
│ ├── apple-icon-120x120.png
│ ├── apple-icon-144x144.png
│ ├── apple-icon-152x152.png
│ ├── apple-icon-180x180.png
│ ├── apple-icon-57x57.png
│ ├── apple-icon-60x60.png
│ ├── apple-icon-72x72.png
│ ├── apple-icon-76x76.png
│ ├── apple-icon-precomposed.png
│ ├── apple-icon.png
│ ├── browserconfig.xml
│ ├── favicon-16x16.png
│ ├── favicon-32x32.png
│ ├── favicon-96x96.png
│ ├── favicon.ico
│ ├── manifest.json
│ ├── ms-icon-144x144.png
│ ├── ms-icon-150x150.png
│ ├── ms-icon-310x310.png
│ └── ms-icon-70x70.png
├── images
│ ├── avatars
│ │ ├── pp_boy.svg
│ │ ├── pp_boy2.svg
│ │ ├── pp_boy3.svg
│ │ ├── pp_boy4.svg
│ │ ├── pp_boy5.svg
│ │ ├── pp_girl.svg
│ │ ├── pp_girl2.svg
│ │ ├── pp_girl3.svg
│ │ ├── pp_girl4.svg
│ │ └── pp_girl5.svg
│ ├── logo.svg
│ ├── material_bg.svg
│ ├── pp_boy.svg
│ ├── pp_girl.svg
│ └── spinner.gif
└── logo.jpg
└── webpack
├── universal-webpack-settings.json
├── webpack-dev-server.js
├── webpack.config.client.development.js
├── webpack.config.client.js
├── webpack.config.client.production.babel.js
├── webpack.config.js
├── webpack.config.server.development.babel.js
├── webpack.config.server.js
└── webpack.config.server.production.babel.js
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | "env",
4 | "react",
5 | "stage-0",
6 | "flow"
7 | ],
8 | "plugins": [
9 | "react-hot-loader/babel",
10 | [ "babel-plugin-webpack-alias", { "config": "./webpack/webpack.config.js" } ]
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/.eslintignore
--------------------------------------------------------------------------------
/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "eslint-config-airbnb",
4 | "plugin:flowtype/recommended"
5 | ],
6 | "env": {
7 | "browser": true,
8 | "node": true,
9 | "mocha": true,
10 | },
11 | "parser": "babel-eslint",
12 | "rules": {
13 | "no-nested-ternary": 0,
14 | "import/no-unresolved": 0,
15 | "import/no-named-as-default": 0,
16 | "no-unused-expressions": 0,
17 | "comma-dangle": 0, // not sure why airbnb turned this on. gross!
18 | "indent": [2, 2, {"SwitchCase": 1}],
19 | "no-console": 0,
20 | "no-alert": 0,
21 | "id-length": 0,
22 | "no-script-url": 0,
23 | "import/no-extraneous-dependencies": 0,
24 | "no-underscore-dangle": 0,
25 | "react/jsx-filename-extension": 0,
26 | "global-require": 0,
27 | "import/newline-after-import": 0,
28 | "import/extensions": 0,
29 | "prefer-template": 0,
30 | "max-len": 0,
31 | "react/prefer-stateless-function": 0,
32 | "react/forbid-prop-types": 0,
33 | "jsx-a11y/href-no-hash": "off",
34 | "function-paren-newline": 0,
35 | "react/no-typos": 0,
36 | "jsx-a11y/anchor-is-valid": 0,
37 | "react/default-props-match-prop-types": 0,
38 | "arrow-parens": 0
39 | },
40 | "plugins": [
41 | "react",
42 | "import",
43 | "flowtype"
44 | ],
45 | "settings": {
46 | "import/parser": "babel-eslint",
47 | "import/resolve": {
48 | "moduleDirectory": ["node_modules", "src"]
49 | }
50 | },
51 | "globals": {
52 | "__CLIENT__": true,
53 | "__SERVER__": true,
54 | "beforeAll": true,
55 | "afterAll": true,
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Webstorm
2 | .idea/
3 |
4 | # OSX
5 | .DS_Store
6 | .AppleDouble
7 | .LSOverride
8 |
9 | # Node
10 | node_modules/
11 | npm-debug.log
12 | yarn.lock
13 |
14 | *.iml
15 | .DB
16 |
17 | *.log
18 | .env
19 |
20 | # Dist
21 | static/server
22 | static/assets
23 |
24 | # Webpack
25 | webpack-assets.json
26 | webpack-stats.json
27 |
28 | # Sublime
29 |
30 | *.sublime-workspace
31 | *.sublime-project
32 |
33 | # Tests
34 | coverage/
35 |
--------------------------------------------------------------------------------
/LICENSE.txt:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014 Call-Em-All
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 |
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-slate
--------------------------------------------------------------------------------
/documentation/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/documentation/favicon.ico
--------------------------------------------------------------------------------
/documentation/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/documentation/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/documentation/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/documentation/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/documentation/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/documentation/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/documentation/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/documentation/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/documentation/images/BossAdminChooseTheme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/documentation/images/BossAdminChooseTheme.png
--------------------------------------------------------------------------------
/documentation/images/BossAdminTable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/documentation/images/BossAdminTable.png
--------------------------------------------------------------------------------
/documentation/images/banner.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/documentation/images/banner.jpg
--------------------------------------------------------------------------------
/documentation/images/detail_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/documentation/images/detail_icon.png
--------------------------------------------------------------------------------
/documentation/images/fonts.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/documentation/images/fonts.jpg
--------------------------------------------------------------------------------
/documentation/images/icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/documentation/images/icons.png
--------------------------------------------------------------------------------
/documentation/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/documentation/images/logo.png
--------------------------------------------------------------------------------
/documentation/images/roboto.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/documentation/images/roboto.png
--------------------------------------------------------------------------------
/documentation/images/ss_code.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/documentation/images/ss_code.png
--------------------------------------------------------------------------------
/documentation/images/ss_code2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/documentation/images/ss_code2.png
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | var autoprefixer = require('autoprefixer');
2 |
3 | module.exports = {
4 | plugins: [
5 | autoprefixer({browsers: 'last 2 versions'})
6 | ]
7 | }
8 |
--------------------------------------------------------------------------------
/src/app/actions/CalendarEventActions.js:
--------------------------------------------------------------------------------
1 | import * as types from './actionTypes';
2 |
3 | export const fetchAction = items => ({
4 | type: types.FETCH_CALENDAR_DATA,
5 | items,
6 | });
7 |
8 | export const addAction = {
9 | type: types.ADD_EVENT
10 | };
11 |
12 | export const discardAction = {
13 | type: types.DISCARD_EVENT
14 | };
15 |
16 | export const submitAction = newEvent => ({
17 | type: types.SUBMIT_EVENT,
18 | newEvent,
19 | });
20 |
21 | export const deleteAction = event => ({
22 | type: types.DELETE_EVENT,
23 | event,
24 | });
25 |
26 | export const closeNotifAction = {
27 | type: types.CLOSE_NOTIF
28 | };
29 |
--------------------------------------------------------------------------------
/src/app/actions/ContactActions.js:
--------------------------------------------------------------------------------
1 | import * as types from './actionTypes';
2 |
3 | export const fetchAction = items => ({
4 | type: types.FETCH_CONTACT_DATA,
5 | items,
6 | });
7 |
8 | export const showDetailAction = item => ({
9 | type: types.SHOW_DETAIL_CONTACT,
10 | item,
11 | });
12 |
13 | export const hideDetailAction = {
14 | type: types.HIDE_DETAIL,
15 | };
16 |
17 | export const submitAction = (newData, avatar) => ({
18 | type: types.SUBMIT_CONTACT,
19 | newData,
20 | avatar
21 | });
22 |
23 | export const addAction = {
24 | type: types.ADD_CONTACT,
25 | };
26 |
27 | export const editAction = item => ({
28 | type: types.EDIT_CONTACT,
29 | item,
30 | });
31 |
32 | export const searchAction = keyword => ({
33 | type: types.SEARCH_CONTACT,
34 | keyword,
35 | });
36 |
37 | export const removeAction = item => ({
38 | type: types.DELETE_CONTACT,
39 | item,
40 | });
41 |
42 | export const closeAction = {
43 | type: types.CLOSE_CONTACT_FORM,
44 | };
45 |
46 | export const addToFavoriteAction = item => ({
47 | type: types.TOGGLE_FAVORITE,
48 | item,
49 | });
50 |
51 | export const closeNotifAction = {
52 | type: types.CLOSE_NOTIF
53 | };
54 |
--------------------------------------------------------------------------------
/src/app/actions/CrudTbActions.js:
--------------------------------------------------------------------------------
1 | import * as types from './actionTypes';
2 |
3 | export const fetchAction = (items, branch) => ({
4 | branch,
5 | type: `${branch}/${types.FETCH_DATA}`,
6 | items
7 | });
8 | export const addAction = (anchor, branch) => ({
9 | branch,
10 | type: `${branch}/${types.ADD_EMPTY_ROW}`,
11 | anchor
12 | });
13 | export const removeAction = (item, branch) => ({
14 | branch,
15 | type: `${branch}/${types.REMOVE_ROW}`,
16 | item
17 | });
18 | export const updateAction = (event, item, branch) => ({
19 | branch,
20 | type: `${branch}/${types.UPDATE_ROW}`,
21 | event,
22 | item
23 | });
24 | export const editAction = (item, branch) => ({
25 | branch,
26 | type: `${branch}/${types.EDIT_ROW}`,
27 | item
28 | });
29 | export const saveAction = (item, branch) => ({
30 | branch,
31 | type: `${branch}/${types.SAVE_ROW}`,
32 | item
33 | });
34 | export const closeNotifAction = branch => ({
35 | branch,
36 | type: `${branch}/${types.CLOSE_NOTIF}`,
37 | });
38 |
--------------------------------------------------------------------------------
/src/app/actions/EcommerceActions.js:
--------------------------------------------------------------------------------
1 | import * as types from './actionTypes';
2 |
3 | export const fetchAction = items => ({
4 | type: types.FETCH_PRODUCT_DATA,
5 | items,
6 | });
7 |
8 | export const searchAction = keyword => ({
9 | type: types.SEARCH_PRODUCT,
10 | keyword,
11 | });
12 |
13 | export const addAction = item => ({
14 | type: types.ADD_TO_CART,
15 | item,
16 | });
17 |
18 | export const removeAction = item => ({
19 | type: types.DELETE_CART_ITEM,
20 | item,
21 | });
22 |
23 | export const checkoutAction = ({
24 | type: types.CHECKOUT,
25 | });
26 |
27 | export const detailAction = item => ({
28 | type: types.SHOW_DETAIL_PRODUCT,
29 | item
30 | });
31 |
32 | export const closeNotifAction = {
33 | type: types.CLOSE_NOTIF
34 | };
35 |
--------------------------------------------------------------------------------
/src/app/actions/ReduxFormActions.js:
--------------------------------------------------------------------------------
1 | import * as types from './actionTypes';
2 |
3 | export const initAction = (data) => ({ type: types.INIT, data });
4 | export const clearAction = { type: types.CLEAR };
5 |
--------------------------------------------------------------------------------
/src/app/actions/TreeTableActions.js:
--------------------------------------------------------------------------------
1 | import * as types from './actionTypes';
2 |
3 | const openAction = (keyID, child, branch) => ({
4 | branch,
5 | type: `${branch}/${types.TOGGLE_TREE}`,
6 | keyID,
7 | child
8 | });
9 |
10 | export default openAction;
11 |
--------------------------------------------------------------------------------
/src/app/actions/UiActions.js:
--------------------------------------------------------------------------------
1 | import * as types from './actionTypes';
2 |
3 | export const toggleAction = { type: types.TOGGLE_SIDEBAR };
4 | export const openAction = initialLocation => ({
5 | type: types.OPEN_SUBMENU,
6 | initialLocation
7 | });
8 | export const changeThemeAction = theme => ({
9 | type: types.CHANGE_THEME,
10 | theme
11 | });
12 | export const playTransitionAction = isLoaded => ({
13 | type: types.LOAD_PAGE,
14 | isLoaded
15 | });
16 |
--------------------------------------------------------------------------------
/src/app/components/App/Outer.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { object, PropTypes } from 'prop-types';
3 | import { renderRoutes } from 'react-router-config';
4 | import { withStyles } from '@material-ui/core/styles';
5 | import Hidden from '@material-ui/core/Hidden';
6 | import brand from 'ba-utils/brand';
7 | import logo from 'ba-images/logo.svg';
8 | import styles from './appStyles-jss';
9 |
10 | class Outer extends React.Component {
11 | render() {
12 | const {
13 | classes,
14 | route,
15 | } = this.props;
16 | return (
17 |
18 |
19 |
20 |
21 |

22 |
{brand.name}
23 |
24 |
25 | {renderRoutes(route.routes)}
26 |
27 |
28 | );
29 | }
30 | }
31 |
32 | Outer.propTypes = {
33 | classes: PropTypes.object.isRequired,
34 | route: object,
35 | };
36 |
37 | Outer.defaultProps = {
38 | route: object
39 | };
40 |
41 | export default (withStyles(styles)(Outer));
42 |
--------------------------------------------------------------------------------
/src/app/components/Badges/LimitedBadges.js:
--------------------------------------------------------------------------------
1 | import React, { PureComponent } from 'react';
2 | import PropTypes from 'prop-types';
3 | import Badge from '@material-ui/core/Badge';
4 |
5 | class LimitedBadges extends PureComponent {
6 | render() {
7 | const {
8 | children,
9 | limit,
10 | value,
11 | ...rest
12 | } = this.props;
13 | return (
14 | limit ? limit + '+' : value} {...rest}>
15 | { children }
16 |
17 | );
18 | }
19 | }
20 |
21 | LimitedBadges.propTypes = {
22 | children: PropTypes.node.isRequired,
23 | value: PropTypes.number.isRequired,
24 | limit: PropTypes.number.isRequired,
25 | };
26 |
27 | export default LimitedBadges;
28 |
--------------------------------------------------------------------------------
/src/app/components/BreadCrumb/BreadCrumb.js:
--------------------------------------------------------------------------------
1 | import React, { Fragment } from 'react';
2 | import PropTypes from 'prop-types';
3 | import { withStyles } from '@material-ui/core/styles';
4 | import classNames from 'classnames';
5 | import { Link, Route } from 'react-router-dom';
6 | import styles from './breadCrumb-jss';
7 |
8 | const Breadcrumbs = (props) => {
9 | const {
10 | classes,
11 | theme,
12 | separator,
13 | location
14 | } = props;
15 | return (
16 |
17 | {
20 | let parts = location.pathname.split('/');
21 | const place = parts[parts.length - 1];
22 | parts = parts.slice(1, parts.length - 1);
23 | return (
24 |
25 | You are here:
26 |
27 | {
28 | parts.map((part, partIndex) => {
29 | const path = ['', ...parts.slice(0, partIndex + 1)].join('/');
30 | return (
31 |
32 | {part}
33 | { separator }
34 |
35 | );
36 | })
37 | }
38 | {place}
39 |
40 |
41 | );
42 | }}
43 | />
44 |
45 | );
46 | };
47 |
48 | Breadcrumbs.propTypes = {
49 | classes: PropTypes.object.isRequired,
50 | location: PropTypes.object.isRequired,
51 | theme: PropTypes.string.isRequired,
52 | separator: PropTypes.string.isRequired,
53 | };
54 |
55 | export default withStyles(styles)(Breadcrumbs);
56 |
--------------------------------------------------------------------------------
/src/app/components/BreadCrumb/breadCrumb-jss.js:
--------------------------------------------------------------------------------
1 | const styles = theme => ({
2 | dark: {},
3 | breadcrumbs: {
4 | position: 'relative',
5 | display: 'block',
6 | fontSize: 12,
7 | color: 'rgba(255, 255, 255, 0.5)',
8 | '& p': {
9 | display: 'block',
10 | '& span': {
11 | textTransform: 'capitalize',
12 | marginLeft: 5,
13 | },
14 | '& a': {
15 | color: theme.palette.common.white,
16 | textDecoration: 'none',
17 | margin: '0 5px'
18 | }
19 | },
20 | '&$dark': {
21 | color: theme.palette.grey[900],
22 | '& a': {
23 | color: theme.palette.grey[900]
24 | }
25 | }
26 | }
27 | });
28 |
29 | export default styles;
30 |
--------------------------------------------------------------------------------
/src/app/components/Calendar/AddEvent.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { withStyles } from '@material-ui/core/styles';
4 | import Button from '@material-ui/core/Button';
5 | import Add from '@material-ui/icons/Add';
6 | import Tooltip from '@material-ui/core/Tooltip';
7 | import FloatingPanel from './../Panel/FloatingPanel';
8 | import AddEventForm from './AddEventForm';
9 | import styles from './calendar-jss.js';
10 |
11 | class AddEvent extends React.Component {
12 | showResult(values) {
13 | setTimeout(() => {
14 | this.props.submit(values);
15 | }, 500); // simulate server latency
16 | }
17 |
18 | render() {
19 | const {
20 | classes,
21 | openForm,
22 | closeForm,
23 | addEvent
24 | } = this.props;
25 | const branch = '';
26 | return (
27 |
28 |
29 |
32 |
33 |
closeForm()}>
34 | this.showResult(values)} />
35 |
36 |
37 | );
38 | }
39 | }
40 |
41 | AddEvent.propTypes = {
42 | classes: PropTypes.object.isRequired,
43 | openForm: PropTypes.bool.isRequired,
44 | addEvent: PropTypes.func.isRequired,
45 | closeForm: PropTypes.func.isRequired,
46 | submit: PropTypes.func.isRequired,
47 | };
48 |
49 | export default withStyles(styles)(AddEvent);
50 |
--------------------------------------------------------------------------------
/src/app/components/CardPaper/NewsCard.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { withStyles } from '@material-ui/core/styles';
4 | import Card from '@material-ui/core/Card';
5 | import CardMedia from '@material-ui/core/CardMedia';
6 | import CardActions from '@material-ui/core/CardActions';
7 | import CardContent from '@material-ui/core/CardContent';
8 | import Button from '@material-ui/core/Button';
9 | import styles from './cardStyle-jss';
10 |
11 | class NewsCard extends React.Component {
12 | render() {
13 | const {
14 | classes,
15 | children,
16 | title,
17 | image,
18 | } = this.props;
19 | return (
20 |
21 |
26 |
27 | {children}
28 |
29 |
30 |
33 |
36 |
37 |
38 | );
39 | }
40 | }
41 |
42 | NewsCard.propTypes = {
43 | classes: PropTypes.object.isRequired,
44 | children: PropTypes.node.isRequired,
45 | title: PropTypes.string.isRequired,
46 | image: PropTypes.string.isRequired,
47 | };
48 |
49 | export default withStyles(styles)(NewsCard);
50 |
--------------------------------------------------------------------------------
/src/app/components/Cart/cart-jss.js:
--------------------------------------------------------------------------------
1 | const styles = theme => ({
2 | totalPrice: {
3 | background: theme.palette.grey[200],
4 | textAlign: 'right',
5 | display: 'block'
6 | },
7 | cartWrap: {
8 | [theme.breakpoints.up('sm')]: {
9 | width: 400,
10 | },
11 | '&:focus': {
12 | outline: 'none'
13 | }
14 | },
15 | itemText: {
16 | marginRight: 30,
17 | overflow: 'hidden',
18 | whiteSpace: 'nowrap',
19 | textOverflow: 'ellipsis',
20 | width: 220
21 | },
22 | cartPanel: {
23 | '& figure': {
24 | width: 120,
25 | height: 70,
26 | overflow: 'hidden',
27 | '& img': {
28 | maxWidth: '100%'
29 | }
30 | }
31 | },
32 | empty: {
33 | textAlign: 'center',
34 | padding: 20
35 | }
36 | });
37 |
38 | export default styles;
39 |
--------------------------------------------------------------------------------
/src/app/components/Footer/Footer.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import styles from './Footer.scss';
3 |
4 | const Footer = () => (
5 |
6 | Footer
7 |
8 | );
9 |
10 | export default Footer;
11 |
--------------------------------------------------------------------------------
/src/app/components/Footer/Footer.scss:
--------------------------------------------------------------------------------
1 | @import "../../styles/variables";
2 | @import "../../styles/mixins";
3 |
4 | $Footer: 'Footer';
5 |
6 | .#{$Footer} {
7 | display: flex;
8 | }
9 |
--------------------------------------------------------------------------------
/src/app/components/Forms/helpers/helpers.js:
--------------------------------------------------------------------------------
1 | export default function isImage(file) {
2 | const fileName = file.name || file.path;
3 | const suffix = fileName.substr(fileName.indexOf('.') + 1).toLowerCase();
4 | if (suffix === 'jpg' || suffix === 'jpeg' || suffix === 'bmp' || suffix === 'png') {
5 | return true;
6 | }
7 | return false;
8 | }
9 |
--------------------------------------------------------------------------------
/src/app/components/Notification/Notification.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { withStyles } from '@material-ui/core/styles';
4 | import Snackbar from '@material-ui/core/Snackbar';
5 | import IconButton from '@material-ui/core/IconButton';
6 | import CloseIcon from '@material-ui/icons/Close';
7 |
8 | const styles = theme => ({
9 | close: {
10 | width: theme.spacing.unit * 4,
11 | height: theme.spacing.unit * 4,
12 | },
13 | });
14 |
15 | class Notification extends React.Component {
16 | handleClose = (event, reason) => {
17 | if (reason === 'clickaway') {
18 | return;
19 | }
20 | this.props.close('crudTableDemo');
21 | };
22 |
23 | render() {
24 | const { classes, message } = this.props;
25 | return (
26 | this.handleClose()}
34 | ContentProps={{
35 | 'aria-describedby': 'message-id',
36 | }}
37 | message={message}
38 | action={[
39 | this.handleClose()}
45 | >
46 |
47 | ,
48 | ]}
49 | />
50 | );
51 | }
52 | }
53 |
54 | Notification.propTypes = {
55 | classes: PropTypes.object.isRequired,
56 | close: PropTypes.func.isRequired,
57 | message: PropTypes.string.isRequired,
58 | };
59 |
60 | export default withStyles(styles)(Notification);
61 |
--------------------------------------------------------------------------------
/src/app/components/PapperBlock/PapperBlock.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import classNames from 'classnames';
4 | import { withStyles } from '@material-ui/core/styles';
5 | import Paper from '@material-ui/core/Paper';
6 | import Typography from '@material-ui/core/Typography';
7 | import styles from './papperStyle-jss';
8 |
9 | function PaperSheet(props) {
10 | const {
11 | classes,
12 | title,
13 | desc,
14 | children,
15 | whiteBg,
16 | noMargin,
17 | colorMode,
18 | overflowX
19 | } = props;
20 | return (
21 |
22 |
23 |
24 | {title}
25 |
26 |
27 | {desc}
28 |
29 |
32 |
33 |
34 | );
35 | }
36 |
37 | PaperSheet.propTypes = {
38 | classes: PropTypes.object.isRequired,
39 | title: PropTypes.string.isRequired,
40 | desc: PropTypes.string.isRequired,
41 | children: PropTypes.node.isRequired,
42 | whiteBg: PropTypes.bool,
43 | colorMode: PropTypes.bool,
44 | noMargin: PropTypes.bool,
45 | overflowX: PropTypes.bool,
46 | };
47 |
48 | PaperSheet.defaultProps = {
49 | whiteBg: false,
50 | noMargin: false,
51 | colorMode: false,
52 | overflowX: false
53 | };
54 |
55 | export default withStyles(styles)(PaperSheet);
56 |
--------------------------------------------------------------------------------
/src/app/components/PapperBlock/papperStyle-jss.js:
--------------------------------------------------------------------------------
1 | const styles = theme => ({
2 | root: theme.mixins.gutters({
3 | paddingTop: theme.spacing.unit * 3,
4 | paddingBottom: theme.spacing.unit * 3,
5 | marginTop: theme.spacing.unit * 3,
6 | '&$noMargin': {
7 | margin: 0
8 | },
9 | }),
10 | title: {
11 | marginBottom: theme.spacing.unit * 4,
12 | paddingBottom: theme.spacing.unit * 2,
13 | position: 'relative',
14 | textTransform: 'capitalize',
15 | fontSize: 28,
16 | '&:after': {
17 | content: '""',
18 | display: 'block',
19 | position: 'absolute',
20 | bottom: 0,
21 | left: 0,
22 | width: 40,
23 | borderBottom: `4px solid ${theme.palette.primary.main}`
24 | }
25 | },
26 | description: {
27 | maxWidth: 960,
28 | fontSize: 16,
29 | },
30 | content: {
31 | marginTop: theme.spacing.unit * 2,
32 | padding: theme.spacing.unit,
33 | backgroundColor: theme.palette.background.default,
34 | },
35 | whiteBg: {
36 | backgroundColor: 'transparent',
37 | margin: 0,
38 | },
39 | noMargin: {},
40 | colorMode: {
41 | backgroundColor: theme.palette.secondary.main,
42 | '& $title': {
43 | color: theme.palette.grey[100],
44 | '&:after': {
45 | borderBottom: `5px solid ${theme.palette.primary.light}`
46 | }
47 | },
48 | '& $description': {
49 | color: theme.palette.grey[100],
50 | }
51 | },
52 | overflowX: {
53 | width: '100%',
54 | overflowX: 'auto',
55 | }
56 | });
57 |
58 | export default styles;
59 |
--------------------------------------------------------------------------------
/src/app/components/Search/search-jss.js:
--------------------------------------------------------------------------------
1 | const styles = theme => ({
2 | root: {
3 | flexGrow: 1,
4 | marginTop: 20,
5 | marginBottom: 40
6 | },
7 | flex: {
8 | flex: 1,
9 | },
10 | menuButton: {
11 | marginLeft: -12,
12 | marginRight: 20,
13 | },
14 | wrapper: {
15 | fontFamily: theme.typography.fontFamily,
16 | position: 'relative',
17 | marginRight: theme.spacing.unit * 2,
18 | marginLeft: theme.spacing.unit,
19 | borderRadius: 2,
20 | display: 'block',
21 | },
22 | search: {
23 | width: 'auto',
24 | height: '100%',
25 | position: 'absolute',
26 | pointerEvents: 'none',
27 | display: 'flex',
28 | alignItems: 'center',
29 | justifyContent: 'center',
30 | },
31 | input: {
32 | font: 'inherit',
33 | padding: `${theme.spacing.unit}px ${theme.spacing.unit}px ${theme.spacing.unit}px ${theme.spacing.unit * 4}px`,
34 | border: 0,
35 | display: 'block',
36 | verticalAlign: 'middle',
37 | whiteSpace: 'normal',
38 | background: 'none',
39 | margin: 0, // Reset for Safari
40 | color: 'inherit',
41 | width: '100%',
42 | '&:focus': {
43 | outline: 0,
44 | },
45 | },
46 | });
47 |
48 | export default styles;
49 |
--------------------------------------------------------------------------------
/src/app/components/Sidebar/OtherMenu.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { NavLink } from 'react-router-dom';
4 | import ListItem from '@material-ui/core/ListItem';
5 | import ListItemText from '@material-ui/core/ListItemText';
6 | import OtherMenuContent from 'ba-utils/otherMenu';
7 |
8 | class OtherMenu extends React.Component {
9 | render() {
10 | const { toggleDrawerOpen } = this.props;
11 | const getOtherMenu = menuArray => menuArray.map((item, index) => {
12 | const keyIndex = index.toString();
13 | return (
14 |
15 |
21 |
22 |
23 |
24 | );
25 | });
26 |
27 | return (
28 |
29 | {getOtherMenu(OtherMenuContent)}
30 |
31 | );
32 | }
33 | }
34 |
35 | OtherMenu.propTypes = {
36 | toggleDrawerOpen: PropTypes.func.isRequired,
37 | };
38 |
39 | export default OtherMenu;
40 |
--------------------------------------------------------------------------------
/src/app/components/Tables/CrudTable.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import MainTable from './tableParts/MainTable';
4 |
5 | class CrudTable extends React.Component {
6 | componentDidMount() {
7 | this.props.fetchData(this.props.dataInit, this.props.branch);
8 | }
9 |
10 | render() {
11 | const {
12 | title,
13 | dataTable,
14 | addEmptyRow,
15 | removeRow,
16 | updateRow,
17 | editRow,
18 | finishEditRow,
19 | anchor,
20 | branch
21 | } = this.props;
22 | return (
23 |
34 | );
35 | }
36 | }
37 |
38 | CrudTable.propTypes = {
39 | title: PropTypes.string.isRequired,
40 | anchor: PropTypes.array.isRequired,
41 | dataInit: PropTypes.array.isRequired,
42 | dataTable: PropTypes.object.isRequired,
43 | fetchData: PropTypes.func.isRequired,
44 | addEmptyRow: PropTypes.func.isRequired,
45 | removeRow: PropTypes.func.isRequired,
46 | updateRow: PropTypes.func.isRequired,
47 | editRow: PropTypes.func.isRequired,
48 | finishEditRow: PropTypes.func.isRequired,
49 | branch: PropTypes.string.isRequired,
50 | };
51 |
52 | export default CrudTable;
53 |
--------------------------------------------------------------------------------
/src/app/components/Tables/EmptyData.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import tableStyles from 'ba-components/Table.scss';
3 | import TableIcon from '@material-ui/icons/Apps';
4 |
5 | function EmptyData() {
6 | return (
7 |
11 | );
12 | }
13 |
14 | export default EmptyData;
15 |
--------------------------------------------------------------------------------
/src/app/components/Tables/tableParts/SelectableCell.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import Select from '@material-ui/core/Select';
4 | import MenuItem from '@material-ui/core/MenuItem';
5 | import TableCell from '@material-ui/core/TableCell';
6 | import css from 'ba-components/Table.scss';
7 |
8 | class SelectableCell extends React.Component {
9 | handleChange = event => {
10 | this.props.updateRow(event, this.props.branch);
11 | this.setState({ [event.target.name]: event.target.value });
12 | };
13 | render() {
14 | const {
15 | cellData,
16 | edited,
17 | options,
18 | } = this.props;
19 | return (
20 |
21 |
33 |
34 | );
35 | }
36 | }
37 |
38 | SelectableCell.propTypes = {
39 | options: PropTypes.array.isRequired,
40 | cellData: PropTypes.object.isRequired,
41 | updateRow: PropTypes.func.isRequired,
42 | edited: PropTypes.bool.isRequired,
43 | branch: PropTypes.string.isRequired,
44 | };
45 |
46 | export default SelectableCell;
47 |
--------------------------------------------------------------------------------
/src/app/components/Tables/tableParts/ToggleCell.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import TableCell from '@material-ui/core/TableCell';
4 | import classNames from 'classnames';
5 | import FormControlLabel from '@material-ui/core/FormControlLabel';
6 | import Switch from '@material-ui/core/Switch';
7 | import css from 'ba-components/Table.scss';
8 |
9 | class ToggleCell extends React.Component {
10 | state = {
11 | isChecked: this.props.cellData.value
12 | };
13 | handleChange = event => {
14 | this.setState({ isChecked: event.target.checked });
15 | this.props.updateRow(event, this.props.branch);
16 | };
17 | render() {
18 | const {
19 | cellData,
20 | edited,
21 | } = this.props;
22 | return (
23 |
24 |
25 |
35 | }
36 | />
37 |
38 | );
39 | }
40 | }
41 |
42 | ToggleCell.propTypes = {
43 | cellData: PropTypes.object.isRequired,
44 | updateRow: PropTypes.func.isRequired,
45 | edited: PropTypes.bool.isRequired,
46 | branch: PropTypes.string.isRequired,
47 | };
48 |
49 | export default ToggleCell;
50 |
--------------------------------------------------------------------------------
/src/app/components/Tables/tableParts/tableStyle-jss.js:
--------------------------------------------------------------------------------
1 | import { lighten } from '@material-ui/core/styles/colorManipulator';
2 | const styles = theme => ({
3 | root: {
4 | paddingRight: theme.spacing.unit,
5 | },
6 | rootTable: {
7 | width: '100%',
8 | marginTop: theme.spacing.unit * 3,
9 | overflowX: 'auto',
10 | },
11 | highlight:
12 | theme.palette.type === 'light' ? {
13 | color: theme.palette.secondary.main,
14 | backgroundColor: lighten(theme.palette.secondary.light, 0.85),
15 | } : {
16 | color: theme.palette.text.primary,
17 | backgroundColor: theme.palette.secondary.dark,
18 | },
19 | spacer: {
20 | flex: '1 1 100%',
21 | },
22 | actionsToolbar: {
23 | color: theme.palette.text.secondary,
24 | flex: '1 0 auto',
25 | },
26 | titleToolbar: {
27 | flex: '0 0 auto',
28 | },
29 | filterBtn: {
30 | top: -5,
31 | },
32 | textField: {
33 | flexBasis: 200,
34 | width: 300
35 | },
36 | table: {
37 | minWidth: 900,
38 | },
39 | actions: {
40 | color: theme.palette.text.secondary,
41 | margin: 10
42 | },
43 | toolbar: {
44 | backgroundColor: theme.palette.grey[800],
45 | },
46 | title: {
47 | flex: '0 0 auto',
48 | '& h2': {
49 | color: theme.palette.common.white
50 | }
51 | },
52 | button: {
53 | margin: theme.spacing.unit,
54 | },
55 | iconSmall: {
56 | fontSize: 20,
57 | },
58 | leftIcon: {
59 | marginRight: theme.spacing.unit,
60 | },
61 | });
62 |
63 | export default styles;
64 |
--------------------------------------------------------------------------------
/src/app/config/codePreview.js:
--------------------------------------------------------------------------------
1 | export default {
2 | enable: true
3 | };
4 |
--------------------------------------------------------------------------------
/src/app/config/default.js:
--------------------------------------------------------------------------------
1 | import isUndefined from 'lodash/isUndefined';
2 |
3 | const env = process.env.NODE_ENV;
4 | const ssl = !isUndefined(process.env.SSL) && +(process.env.SSL) === 1 ? 1 : 0;
5 | const prefix = 'http' + (ssl ? 's' : '') + '://';
6 | const host = prefix + (process.env.HOST || 'localhost');
7 | const port = !isUndefined(process.env.PORT) ? +(process.env.PORT) : '';
8 | const apiSsl = !isUndefined(process.env.APISSL) && +(process.env.APISSL) === 1 ? 1 : 0;
9 | const prefixHost = 'http' + (apiSsl ? 's' : '') + '://';
10 | const apiPort = !isUndefined(process.env.APIPORT) ? +(process.env.APIPORT) : '';
11 | const apiHost = prefixHost + (!isUndefined(process.env.APIHOST) ? process.env.APIHOST : 'localhost') + (apiPort ? ':' + apiPort : '');
12 | const ssr = !isUndefined(process.env.SSR) && +(process.env.SSR) === 1;
13 | const googleAnaliticsId = process.env.GOOGLE_ANALITICS_ID !== 'undefined' ? process.env.GOOGLE_ANALITICS_ID : '';
14 |
15 | export default {
16 | env,
17 | ssl,
18 | host: host + (port ? `:${port}` : ''),
19 | port,
20 | apiSsl,
21 | apiPort,
22 | apiHost,
23 | ssr,
24 | googleAnaliticsId,
25 |
26 | server: {
27 | ssl,
28 | host,
29 | port: port || 8080,
30 | apiSsl,
31 | apiPort,
32 | apiHost
33 | },
34 |
35 | webpack: {
36 | server: {
37 | ssl,
38 | host,
39 | port: port || 3001,
40 | apiSsl,
41 | apiPort,
42 | apiHost
43 | }
44 | }
45 | };
46 |
--------------------------------------------------------------------------------
/src/app/config/environment.js:
--------------------------------------------------------------------------------
1 | export default {
2 | development: {
3 | isProd: false
4 | },
5 | production: {
6 | isProd: true
7 | }
8 | }[process.env.NODE_ENV || 'development'];
9 |
--------------------------------------------------------------------------------
/src/app/config/index.js:
--------------------------------------------------------------------------------
1 | import config from './default';
2 | import env from './environment';
3 |
4 | export default {
5 | ...config,
6 | ...env
7 | };
8 |
--------------------------------------------------------------------------------
/src/app/redux/helpers/dateTimeHelper.js:
--------------------------------------------------------------------------------
1 | export function getDate() {
2 | let today = new Date();
3 | let dd = today.getDate();
4 | const monthNames = [
5 | 'January', 'February', 'March', 'April', 'May', 'June',
6 | 'July', 'August', 'September', 'October', 'November', 'December'
7 | ];
8 | const mm = monthNames[today.getMonth()]; // January is 0!
9 | const yyyy = today.getFullYear();
10 |
11 | if (dd < 10) {
12 | dd = '0' + dd;
13 | }
14 |
15 | today = mm + ', ' + dd + ' ' + yyyy;
16 |
17 | return today;
18 | }
19 |
20 | export function getTime() {
21 | let now = new Date();
22 | let h = now.getHours();
23 | let m = now.getMinutes();
24 |
25 | if (h < 10) {
26 | h = '0' + h;
27 | }
28 |
29 | if (m < 10) {
30 | m = '0' + m;
31 | }
32 |
33 | now = h + ':' + m;
34 | return now;
35 | }
36 |
--------------------------------------------------------------------------------
/src/app/redux/middleware/clientMiddleware.js:
--------------------------------------------------------------------------------
1 | import { fromJS } from 'immutable';
2 |
3 | export default function clientMiddleware(client) {
4 | return ({ dispatch, getState }) =>
5 | next => (action) => {
6 | if (typeof action === 'function') {
7 | return action(dispatch, getState);
8 | }
9 | const { promise, types, ...rest } = action; // eslint-disable-line no-redeclare
10 | if (!promise) {
11 | return next(action);
12 | }
13 |
14 | const [REQUEST, SUCCESS, FAILURE] = types;
15 | next({ ...rest, type: REQUEST });
16 |
17 | const actionPromise = promise(client);
18 | actionPromise.then(
19 | result => next({ ...rest, result: fromJS(result.data), type: SUCCESS }),
20 | ({ response = {} }) => next({ ...rest, error: fromJS(response.data), type: FAILURE })
21 | ).catch(({ response = {} }) => {
22 | console.error('MIDDLEWARE ERROR:', response);
23 | next({ ...rest, error: fromJS(response.data), type: FAILURE });
24 | });
25 | return actionPromise;
26 | };
27 | }
28 |
--------------------------------------------------------------------------------
/src/app/redux/modules/initForm.js:
--------------------------------------------------------------------------------
1 | import { fromJS, Map } from 'immutable';
2 | import { INIT, CLEAR } from '../../actions/actionTypes';
3 |
4 | const initialState = {
5 | formValues: Map()
6 | };
7 |
8 | const initialImmutableState = fromJS(initialState);
9 | export default function reducer(state = initialImmutableState, action = {}) {
10 | switch (action.type) {
11 | case INIT:
12 | return state.withMutations((mutableState) => {
13 | mutableState.set('formValues', action.data);
14 | });
15 | case CLEAR:
16 | return state.withMutations((mutableState) => {
17 | mutableState.set('formValues', []);
18 | });
19 | default:
20 | return state;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/src/app/redux/modules/login.js:
--------------------------------------------------------------------------------
1 | import { Map, fromJS } from 'immutable';
2 | import { INIT } from '../../actions/actionTypes';
3 |
4 | const initialState = {
5 | usersLogin: Map({
6 | email: 'johndoe@mail.com',
7 | password: '12345678',
8 | remember: false
9 | })
10 | };
11 | const initialImmutableState = fromJS(initialState);
12 | export default function reducer(state = initialImmutableState, action = {}) {
13 | switch (action.type) {
14 | case INIT:
15 | return state;
16 | default:
17 | return state;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/app/redux/modules/treeTable.js:
--------------------------------------------------------------------------------
1 | import { fromJS, List } from 'immutable';
2 | import { TOGGLE_TREE } from '../../actions/actionTypes';
3 |
4 | const initialState = {
5 | treeOpen: List([]),
6 | arrowMore: List([])
7 | };
8 |
9 | const initialImmutableState = fromJS(initialState);
10 |
11 | // Collect existing child and parent id's
12 | function collectId(id, listedId, collapsed, arrowLess) {
13 | arrowLess.push(id);
14 | for (let i = 0; i < listedId.size; i += 1) {
15 | if (listedId.getIn([i]).startsWith(id + '_')) {
16 | collapsed.push(listedId.getIn([i]));
17 | arrowLess.push(listedId.getIn([i]));
18 | }
19 | }
20 | }
21 |
22 | export default function reducer(state = initialImmutableState, action = {}) {
23 | const { branch } = action;
24 | switch (action.type) {
25 | case `${branch}/${TOGGLE_TREE}`:
26 | return state.withMutations((mutableState) => {
27 | const listedId = state.get('treeOpen');
28 | const collapsed = [];
29 | const arrowLess = [];
30 |
31 | // Collect existing id
32 | collectId(action.keyID, listedId, collapsed, arrowLess);
33 |
34 | // Collapse and Expand row
35 | if (collapsed.length > 0) { // Collapse tree table
36 | mutableState.update('treeOpen', treeOpen => treeOpen.filter(x => collapsed.indexOf(x) < 0));
37 | mutableState.update('arrowMore', arrowMore => arrowMore.filter(x => arrowLess.indexOf(x) < 0));
38 | } else { // Expand tree table
39 | mutableState.update('arrowMore', arrowMore => arrowMore.push(action.keyID));
40 | action.child.map(item => {
41 | mutableState.update('treeOpen', treeOpen => treeOpen.push(item.id));
42 | return true;
43 | });
44 | }
45 | });
46 | default:
47 | return state;
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/src/app/redux/reducer.js:
--------------------------------------------------------------------------------
1 | import { reducer as form } from 'redux-form/immutable';
2 | import { combineReducers } from 'redux-immutablejs';
3 | import { routerReducer as router } from 'react-router-redux';
4 |
5 | import ui from './modules/ui';
6 | import treeTable from './modules/treeTable';
7 | import crudTable from './modules/crudTable';
8 | import initval from './modules/initForm';
9 | import login from './modules/login';
10 | import ecommerce from './modules/ecommerce';
11 | import contact from './modules/contact';
12 | import calendar from './modules/calendar';
13 |
14 | function branchReducer(reducerFunction, reducerName) {
15 | return (state, action) => {
16 | const { branch } = action;
17 | const isInitializationCall = state === undefined;
18 | if (branch !== reducerName && !isInitializationCall) {
19 | return state;
20 | }
21 | return reducerFunction(state, action);
22 | };
23 | }
24 |
25 | export default function createReducer() {
26 | return combineReducers({
27 | form,
28 | router,
29 | ui,
30 | initval,
31 | login,
32 | calendar,
33 | ecommerce,
34 | contact,
35 | treeTableArrow: branchReducer(treeTable, 'treeTableArrow'),
36 | treeTablePM: branchReducer(treeTable, 'treeTablePM'),
37 | crudTableDemo: branchReducer(crudTable, 'crudTableDemo'),
38 | });
39 | }
40 |
--------------------------------------------------------------------------------
/src/app/redux/store.js:
--------------------------------------------------------------------------------
1 | import { fromJS } from 'immutable';
2 | import { createStore, applyMiddleware, compose } from 'redux';
3 | import { routerMiddleware } from 'react-router-redux';
4 | import createReducer from './reducer';
5 | import createMiddleware from './middleware/clientMiddleware';
6 |
7 | export default function configureStore(history, client, initialState = {}) {
8 | const reducer = createReducer();
9 | const middlewares = [createMiddleware(client), routerMiddleware(history)];
10 |
11 | const composeEnhancers =
12 | (global.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ &&
13 | global.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__({
14 | // Specify extension’s options like name, actionsBlacklist, actionsCreators, serialize...
15 | })) || compose;
16 |
17 | const enhancer = composeEnhancers(
18 | applyMiddleware(...middlewares)
19 | );
20 |
21 | const initialValues = fromJS(initialState).set('router', history);
22 |
23 | const store = createStore(
24 | reducer,
25 | initialValues,
26 | enhancer
27 | );
28 |
29 | if (module.hot) {
30 | module.hot.accept('./reducer', () => {
31 | const createNextReducer = require('./reducer').default;
32 | const nextReducer = createNextReducer();
33 | store.replaceReducer(nextReducer);
34 | });
35 | }
36 |
37 | return store;
38 | }
39 |
--------------------------------------------------------------------------------
/src/app/routes/Charts/PieCharts.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import { SourceReader, PapperBlock } from './../../components';
5 | import {
6 | PieSimple,
7 | PieCustomShape,
8 | PieCustomLabel,
9 | } from './demos';
10 |
11 | class PieCharts extends React.Component {
12 | render() {
13 | const title = brand.name + ' - Chart';
14 | const description = brand.desc;
15 | const docSrc = 'routes/Charts/demos/';
16 | return (
17 |
18 |
19 | {title}
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
31 |
32 |
33 |
37 |
38 |
39 |
43 |
44 |
45 | );
46 | }
47 | }
48 |
49 | export default PieCharts;
50 |
--------------------------------------------------------------------------------
/src/app/routes/Charts/RadarCharts.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import { SourceReader, PapperBlock } from './../../components';
5 | import {
6 | RadarSimple,
7 | DoubleRadar
8 | } from './demos';
9 |
10 | class RadarCharts extends React.Component {
11 | render() {
12 | const title = brand.name + ' - Chart';
13 | const description = brand.desc;
14 | const docSrc = 'routes/Charts/demos/';
15 | return (
16 |
17 |
18 | {title}
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 | );
39 | }
40 | }
41 |
42 | export default RadarCharts;
43 |
--------------------------------------------------------------------------------
/src/app/routes/Charts/demos/AreaNegativePositive.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { createMuiTheme } from '@material-ui/core/styles';
3 | import ThemePallete from 'ba-utils/themePalette';
4 | import {
5 | AreaChart,
6 | Area,
7 | XAxis,
8 | YAxis,
9 | CartesianGrid,
10 | Tooltip
11 | } from 'recharts';
12 | import { data2 } from './sampleData';
13 |
14 | const theme = createMuiTheme(ThemePallete.redTheme);
15 | const color = ({
16 | primary: theme.palette.primary.main,
17 | secondary: theme.palette.secondary.main,
18 | });
19 |
20 | const gradientOffset = () => {
21 | const dataMax = Math.max(...data2.map((i) => i.uv));
22 | const dataMin = Math.min(...data2.map((i) => i.uv));
23 |
24 | if (dataMax <= 0) {
25 | return 0;
26 | } else if (dataMin >= 0) {
27 | return 1;
28 | }
29 | return dataMax / (dataMax - dataMin);
30 | };
31 |
32 | const off = gradientOffset();
33 |
34 | function AreaNegativePositive() {
35 | return (
36 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 | );
60 | }
61 |
62 | export default AreaNegativePositive;
63 |
--------------------------------------------------------------------------------
/src/app/routes/Charts/demos/AreaSimple.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { createMuiTheme } from '@material-ui/core/styles';
3 | import ThemePallete from 'ba-utils/themePalette';
4 | import {
5 | AreaChart,
6 | Area,
7 | XAxis,
8 | YAxis,
9 | CartesianGrid,
10 | Tooltip
11 | } from 'recharts';
12 | import { data2 } from './sampleData';
13 |
14 | const theme = createMuiTheme(ThemePallete.greenTheme);
15 | const color = ({
16 | main: theme.palette.primary.main,
17 | dark: theme.palette.primary.dark,
18 | });
19 |
20 | function AreaSimple() {
21 | return (
22 |
33 |
34 |
35 |
36 |
37 |
38 |
39 | );
40 | }
41 |
42 | export default AreaSimple;
43 |
--------------------------------------------------------------------------------
/src/app/routes/Charts/demos/AreaStacked.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { createMuiTheme } from '@material-ui/core/styles';
3 | import ThemePallete from 'ba-utils/themePalette';
4 | import {
5 | AreaChart,
6 | Area,
7 | XAxis,
8 | YAxis,
9 | CartesianGrid,
10 | Tooltip
11 | } from 'recharts';
12 | import green from '@material-ui/core/colors/green';
13 | import { data1 } from './sampleData';
14 |
15 | const theme = createMuiTheme(ThemePallete.redTheme);
16 | const color = ({
17 | primary: theme.palette.primary.main,
18 | primarydark: theme.palette.primary.dark,
19 | secondary: theme.palette.secondary.main,
20 | secondarydark: theme.palette.secondary.dark,
21 | third: green[500],
22 | thirddark: green[900],
23 | });
24 |
25 | function AreaStacked() {
26 | return (
27 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 | );
47 | }
48 |
49 | export default AreaStacked;
50 |
--------------------------------------------------------------------------------
/src/app/routes/Charts/demos/BarMix.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { createMuiTheme } from '@material-ui/core/styles';
3 | import ThemePallete from 'ba-utils/themePalette';
4 | import {
5 | BarChart,
6 | Bar,
7 | XAxis,
8 | YAxis,
9 | CartesianGrid,
10 | Tooltip,
11 | Legend
12 | } from 'recharts';
13 | import green from '@material-ui/core/colors/green';
14 | import { data2 } from './sampleData';
15 |
16 | const theme = createMuiTheme(ThemePallete.blueTheme);
17 | const color = ({
18 | primary: theme.palette.primary.main,
19 | secondary: theme.palette.secondary.main,
20 | third: green[500]
21 | });
22 |
23 | function BarMix() {
24 | return (
25 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 | );
46 | }
47 |
48 | export default BarMix;
49 |
--------------------------------------------------------------------------------
/src/app/routes/Charts/demos/BarPositiveNegative.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { createMuiTheme } from '@material-ui/core/styles';
3 | import ThemePallete from 'ba-utils/themePalette';
4 | import {
5 | BarChart,
6 | Bar,
7 | XAxis,
8 | YAxis,
9 | CartesianGrid,
10 | Tooltip,
11 | Legend,
12 | ReferenceLine
13 | } from 'recharts';
14 | import { data3 } from './sampleData';
15 |
16 | const theme = createMuiTheme(ThemePallete.greenTheme);
17 | const color = ({
18 | primary: theme.palette.primary.main,
19 | secondary: theme.palette.secondary.main,
20 | });
21 |
22 | function BarPositiveNegative() {
23 | return (
24 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 | );
45 | }
46 |
47 | export default BarPositiveNegative;
48 |
--------------------------------------------------------------------------------
/src/app/routes/Charts/demos/BarResponsive.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { createMuiTheme, withStyles } from '@material-ui/core/styles';
4 | import ThemePallete from 'ba-utils/themePalette';
5 | import {
6 | BarChart,
7 | Bar,
8 | XAxis,
9 | YAxis,
10 | CartesianGrid,
11 | Tooltip,
12 | Legend,
13 | ResponsiveContainer
14 | } from 'recharts';
15 | import { data1 } from './sampleData';
16 |
17 | const theme = createMuiTheme(ThemePallete.greenNatureTheme);
18 | const color = ({
19 | primary: theme.palette.primary.main,
20 | secondary: theme.palette.secondary.main,
21 | });
22 |
23 | const styles = {
24 | chartFluid: {
25 | width: '100%',
26 | height: 450
27 | }
28 | };
29 |
30 | function BarResponsive(props) {
31 | const { classes } = props;
32 | return (
33 |
34 |
35 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 | );
57 | }
58 |
59 | BarResponsive.propTypes = {
60 | classes: PropTypes.object.isRequired,
61 | };
62 |
63 | export default withStyles(styles)(BarResponsive);
64 |
65 |
--------------------------------------------------------------------------------
/src/app/routes/Charts/demos/BarSimple.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { createMuiTheme } from '@material-ui/core/styles';
3 | import ThemePallete from 'ba-utils/themePalette';
4 | import {
5 | BarChart,
6 | Bar,
7 | XAxis,
8 | YAxis,
9 | CartesianGrid,
10 | Tooltip,
11 | Legend
12 | } from 'recharts';
13 | import { data1 } from './sampleData';
14 |
15 | const theme = createMuiTheme(ThemePallete.redTheme);
16 | const color = ({
17 | primary: theme.palette.primary.main,
18 | secondary: theme.palette.secondary.main,
19 | });
20 |
21 | function BarSimple() {
22 | return (
23 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 | );
43 | }
44 |
45 | export default BarSimple;
46 |
--------------------------------------------------------------------------------
/src/app/routes/Charts/demos/BarStacked.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { createMuiTheme } from '@material-ui/core/styles';
3 | import ThemePallete from 'ba-utils/themePalette';
4 | import {
5 | BarChart,
6 | Bar,
7 | XAxis,
8 | YAxis,
9 | CartesianGrid,
10 | Tooltip,
11 | Legend
12 | } from 'recharts';
13 | import { data1 } from './sampleData';
14 |
15 | const theme = createMuiTheme(ThemePallete.orangeTheme);
16 | const color = ({
17 | primary: theme.palette.primary.main,
18 | secondary: theme.palette.secondary.main,
19 | });
20 |
21 | function BarStacked() {
22 | return (
23 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 | );
43 | }
44 |
45 | export default BarStacked;
46 |
--------------------------------------------------------------------------------
/src/app/routes/Charts/demos/CompossedLineBarArea.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { createMuiTheme } from '@material-ui/core/styles';
3 | import ThemePallete from 'ba-utils/themePalette';
4 | import green from '@material-ui/core/colors/green';
5 | import {
6 | ComposedChart,
7 | Line,
8 | Area,
9 | Bar,
10 | XAxis,
11 | YAxis,
12 | CartesianGrid,
13 | Tooltip,
14 | Legend
15 | } from 'recharts';
16 | import { data1 } from './sampleData';
17 |
18 | const theme = createMuiTheme(ThemePallete.orangeTheme);
19 | const color = ({
20 | main: theme.palette.primary.main,
21 | maindark: theme.palette.primary.dark,
22 | secondary: theme.palette.secondary.main,
23 | third: green[500],
24 | });
25 |
26 | function CompossedLineBarArea() {
27 | return (
28 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 | );
49 | }
50 |
51 | export default CompossedLineBarArea;
52 |
--------------------------------------------------------------------------------
/src/app/routes/Charts/demos/CompossedSameData.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { createMuiTheme } from '@material-ui/core/styles';
3 | import ThemePallete from 'ba-utils/themePalette';
4 | import {
5 | ComposedChart,
6 | Line,
7 | Bar,
8 | XAxis,
9 | YAxis,
10 | CartesianGrid,
11 | Tooltip,
12 | Legend
13 | } from 'recharts';
14 | import { data1 } from './sampleData';
15 |
16 | const theme = createMuiTheme(ThemePallete.blueTheme);
17 | const color = ({
18 | main: theme.palette.primary.main,
19 | secondary: theme.palette.secondary.main,
20 | });
21 |
22 | function CompossedSameData() {
23 | return (
24 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 | );
44 | }
45 |
46 | export default CompossedSameData;
47 |
--------------------------------------------------------------------------------
/src/app/routes/Charts/demos/CompossedVertical.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { createMuiTheme } from '@material-ui/core/styles';
3 | import ThemePallete from 'ba-utils/themePalette';
4 | import green from '@material-ui/core/colors/green';
5 | import {
6 | ComposedChart,
7 | Line,
8 | Area,
9 | Bar,
10 | XAxis,
11 | YAxis,
12 | CartesianGrid,
13 | Tooltip,
14 | Legend
15 | } from 'recharts';
16 | import { data1 } from './sampleData';
17 |
18 | const theme = createMuiTheme(ThemePallete.blueTheme);
19 | const color = ({
20 | main: theme.palette.primary.main,
21 | maindark: theme.palette.primary.dark,
22 | secondary: theme.palette.secondary.main,
23 | third: green[500],
24 | });
25 |
26 | function CompossedVertical() {
27 | return (
28 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 | );
50 | }
51 |
52 | export default CompossedVertical;
53 |
--------------------------------------------------------------------------------
/src/app/routes/Charts/demos/DoubleRadar.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { createMuiTheme } from '@material-ui/core/styles';
3 | import ThemePallete from 'ba-utils/themePalette';
4 | import {
5 | Radar,
6 | RadarChart,
7 | PolarGrid,
8 | PolarAngleAxis,
9 | PolarRadiusAxis,
10 | Legend
11 | } from 'recharts';
12 | import { data7 } from './sampleData';
13 |
14 | const theme = createMuiTheme(ThemePallete.redTheme);
15 | const color = ({
16 | main: theme.palette.primary.main,
17 | maindark: theme.palette.primary.dark,
18 | secondary: theme.palette.secondary.main,
19 | secondarydark: theme.palette.secondary.dark,
20 | });
21 |
22 | function DoubleRadar() {
23 | return (
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 | );
33 | }
34 |
35 | export default DoubleRadar;
36 |
--------------------------------------------------------------------------------
/src/app/routes/Charts/demos/LineCustomLabel.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { createMuiTheme } from '@material-ui/core/styles';
4 | import ThemePallete from 'ba-utils/themePalette';
5 | import {
6 | LineChart,
7 | Line,
8 | XAxis,
9 | YAxis,
10 | CartesianGrid,
11 | Tooltip,
12 | Legend
13 | } from 'recharts';
14 | import { data1 } from './sampleData';
15 |
16 | const theme = createMuiTheme(ThemePallete.redTheme);
17 | const color = ({
18 | primary: theme.palette.primary.main,
19 | secondary: theme.palette.secondary.main,
20 | });
21 |
22 | const CustomizedLabel = props => {
23 | const {
24 | x,
25 | y,
26 | stroke,
27 | value
28 | } = props;
29 | return (
30 |
31 | { value }
32 |
33 | );
34 | };
35 |
36 | CustomizedLabel.propTypes = {
37 | x: PropTypes.number,
38 | y: PropTypes.number,
39 | value: PropTypes.number,
40 | stroke: PropTypes.string,
41 | };
42 |
43 | CustomizedLabel.defaultProps = {
44 | x: 0,
45 | y: 0,
46 | value: 0,
47 | stroke: '#000'
48 | };
49 |
50 | function LineCustomLabel() {
51 | return (
52 |
63 |
64 |
65 |
66 |
67 |
68 | } />
69 | } />
70 |
71 | );
72 | }
73 |
74 | export default LineCustomLabel;
75 |
--------------------------------------------------------------------------------
/src/app/routes/Charts/demos/LineResponsive.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { withStyles } from '@material-ui/core/styles';
4 | import {
5 | LineChart,
6 | Line,
7 | XAxis,
8 | YAxis,
9 | CartesianGrid,
10 | Tooltip,
11 | Legend,
12 | ResponsiveContainer
13 | } from 'recharts';
14 | import { data1 } from './sampleData';
15 |
16 | const styles = {
17 | chartFluid: {
18 | width: '100%',
19 | height: 450
20 | }
21 | };
22 |
23 | function LineResponsive(props) {
24 | const { classes } = props;
25 | return (
26 |
27 |
28 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 | );
50 | }
51 |
52 | LineResponsive.propTypes = {
53 | classes: PropTypes.object.isRequired,
54 | };
55 |
56 | export default withStyles(styles)(LineResponsive);
57 |
--------------------------------------------------------------------------------
/src/app/routes/Charts/demos/LineSimple.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import {
3 | LineChart,
4 | Line,
5 | XAxis,
6 | YAxis,
7 | CartesianGrid,
8 | Tooltip,
9 | Legend
10 | } from 'recharts';
11 | import { data1 } from './sampleData';
12 |
13 | function LineSimple() {
14 | return (
15 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 | );
35 | }
36 |
37 | export default LineSimple;
38 |
--------------------------------------------------------------------------------
/src/app/routes/Charts/demos/LineVertical.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { createMuiTheme } from '@material-ui/core/styles';
3 | import ThemePallete from 'ba-utils/themePalette';
4 | import {
5 | LineChart,
6 | Line,
7 | XAxis,
8 | YAxis,
9 | CartesianGrid,
10 | Tooltip,
11 | Legend
12 | } from 'recharts';
13 | import { data1 } from './sampleData';
14 |
15 | const theme = createMuiTheme(ThemePallete.cyanTheme);
16 | const color = ({
17 | primary: theme.palette.primary.main,
18 | secondary: theme.palette.secondary.main,
19 | });
20 |
21 | function LineVertical() {
22 | return (
23 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 | );
44 | }
45 |
46 | export default LineVertical;
47 |
--------------------------------------------------------------------------------
/src/app/routes/Charts/demos/PieSimple.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { createMuiTheme } from '@material-ui/core/styles';
3 | import ThemePallete from 'ba-utils/themePalette';
4 | import {
5 | PieChart,
6 | Pie,
7 | Tooltip
8 | } from 'recharts';
9 | import { data4, data5 } from './sampleData';
10 |
11 | const theme = createMuiTheme(ThemePallete.purpleTheme);
12 | const color = ({
13 | primary: theme.palette.primary.main,
14 | secondary: theme.palette.secondary.main,
15 | });
16 |
17 | function PieSimple() {
18 | return (
19 |
29 |
30 |
31 |
32 |
33 | );
34 | }
35 |
36 | export default PieSimple;
37 |
--------------------------------------------------------------------------------
/src/app/routes/Charts/demos/RadarSimple.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { createMuiTheme } from '@material-ui/core/styles';
3 | import ThemePallete from 'ba-utils/themePalette';
4 | import {
5 | Radar,
6 | RadarChart,
7 | PolarGrid,
8 | PolarAngleAxis,
9 | PolarRadiusAxis
10 | } from 'recharts';
11 | import { data7 } from './sampleData';
12 |
13 | const theme = createMuiTheme(ThemePallete.purpleTheme);
14 | const color = ({
15 | main: theme.palette.primary.main,
16 | dark: theme.palette.primary.dark,
17 | });
18 |
19 | function RadarSimple() {
20 | return (
21 |
22 |
23 |
24 |
25 |
26 |
27 | );
28 | }
29 |
30 | export default RadarSimple;
31 |
--------------------------------------------------------------------------------
/src/app/routes/Charts/demos/ScatterCustom.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { createMuiTheme } from '@material-ui/core/styles';
3 | import ThemePallete from 'ba-utils/themePalette';
4 | import {
5 | ScatterChart,
6 | Scatter,
7 | XAxis,
8 | YAxis,
9 | ZAxis,
10 | CartesianGrid,
11 | Tooltip,
12 | Legend
13 | } from 'recharts';
14 | import { data8, data9 } from './sampleData';
15 |
16 | const theme = createMuiTheme(ThemePallete.orangeTheme);
17 | const color = ({
18 | primary: theme.palette.primary.main,
19 | secondary: theme.palette.secondary.main,
20 | });
21 |
22 | function ScatterCustom() {
23 | return (
24 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 | );
44 | }
45 |
46 | export default ScatterCustom;
47 |
--------------------------------------------------------------------------------
/src/app/routes/Charts/demos/ScatterJoinLine.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { createMuiTheme } from '@material-ui/core/styles';
3 | import ThemePallete from 'ba-utils/themePalette';
4 | import {
5 | ScatterChart,
6 | Scatter,
7 | XAxis,
8 | YAxis,
9 | ZAxis,
10 | CartesianGrid,
11 | Tooltip,
12 | Legend
13 | } from 'recharts';
14 | import { data8, data9 } from './sampleData';
15 |
16 | const theme = createMuiTheme(ThemePallete.blueTheme);
17 | const color = ({
18 | primary: theme.palette.primary.main,
19 | secondary: theme.palette.secondary.main,
20 | });
21 |
22 | function ScatterJoinLine() {
23 | return (
24 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 | );
44 | }
45 |
46 | export default ScatterJoinLine;
47 |
--------------------------------------------------------------------------------
/src/app/routes/Charts/demos/ScatterMultiple.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { createMuiTheme } from '@material-ui/core/styles';
3 | import ThemePallete from 'ba-utils/themePalette';
4 | import {
5 | ScatterChart,
6 | Scatter,
7 | XAxis,
8 | YAxis,
9 | ZAxis,
10 | CartesianGrid,
11 | Tooltip,
12 | Legend
13 | } from 'recharts';
14 | import { data8, data9 } from './sampleData';
15 |
16 | const theme = createMuiTheme(ThemePallete.greenTheme);
17 | const color = ({
18 | primary: theme.palette.primary.main,
19 | secondary: theme.palette.secondary.main,
20 | });
21 |
22 | function ScatterMultiple() {
23 | return (
24 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 | );
44 | }
45 |
46 | export default ScatterMultiple;
47 |
--------------------------------------------------------------------------------
/src/app/routes/Charts/demos/ScatterResponsive.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { createMuiTheme, withStyles } from '@material-ui/core/styles';
4 | import ThemePallete from 'ba-utils/themePalette';
5 | import {
6 | ScatterChart,
7 | Scatter,
8 | XAxis,
9 | YAxis,
10 | ZAxis,
11 | CartesianGrid,
12 | Tooltip,
13 | Legend,
14 | ResponsiveContainer
15 | } from 'recharts';
16 | import { data8, data9 } from './sampleData';
17 |
18 | const theme = createMuiTheme(ThemePallete.skyBlueTheme);
19 | const color = ({
20 | primary: theme.palette.primary.main,
21 | secondary: theme.palette.secondary.main,
22 | });
23 |
24 | const styles = {
25 | chartFluid: {
26 | width: '100%',
27 | height: 450
28 | }
29 | };
30 |
31 | function ScatterResponsive(props) {
32 | const { classes } = props;
33 | return (
34 |
35 |
36 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 | );
58 | }
59 |
60 | ScatterResponsive.propTypes = {
61 | classes: PropTypes.object.isRequired,
62 | };
63 |
64 | export default withStyles(styles)(ScatterResponsive);
65 |
--------------------------------------------------------------------------------
/src/app/routes/Charts/demos/ScatterSimple.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { createMuiTheme } from '@material-ui/core/styles';
3 | import ThemePallete from 'ba-utils/themePalette';
4 | import {
5 | ScatterChart,
6 | Scatter,
7 | XAxis,
8 | YAxis,
9 | CartesianGrid,
10 | Tooltip,
11 | } from 'recharts';
12 | import { data8 } from './sampleData';
13 |
14 | const theme = createMuiTheme(ThemePallete.cyanTheme);
15 | const color = ({
16 | primary: theme.palette.primary.main,
17 | });
18 |
19 | function ScatterSimple() {
20 | return (
21 |
31 |
32 |
33 |
34 |
35 |
36 |
37 | );
38 | }
39 |
40 | export default ScatterSimple;
41 |
--------------------------------------------------------------------------------
/src/app/routes/Charts/demos/index.js:
--------------------------------------------------------------------------------
1 | export LineSimple from './LineSimple';
2 | export LineVertical from './LineVertical';
3 | export LineCustomDot from './LineCustomDot';
4 | export LineCustomLabel from './LineCustomLabel';
5 | export LineResponsive from './LineResponsive';
6 | export BarSimple from './BarSimple';
7 | export BarMix from './BarMix';
8 | export BarStacked from './BarStacked';
9 | export BarCustom from './BarCustom';
10 | export BarPositiveNegative from './BarPositiveNegative';
11 | export BarCustomLabel from './BarCustomLabel';
12 | export BarResponsive from './BarResponsive';
13 | export AreaSimple from './AreaSimple';
14 | export AreaStacked from './AreaStacked';
15 | export AreaPercent from './AreaPercent';
16 | export AreaNegativePositive from './AreaNegativePositive';
17 | export AreaResponsive from './AreaResponsive';
18 | export PieSimple from './PieSimple';
19 | export PieCustomShape from './PieCustomShape';
20 | export PieCustomLabel from './PieCustomLabel';
21 | export RadarSimple from './RadarSimple';
22 | export DoubleRadar from './DoubleRadar';
23 | export ScatterSimple from './ScatterSimple';
24 | export ScatterJoinLine from './ScatterJoinLine';
25 | export ScatterMultiple from './ScatterMultiple';
26 | export ScatterCustom from './ScatterCustom';
27 | export ScatterResponsive from './ScatterResponsive';
28 | export CompossedLineBarArea from './CompossedLineBarArea';
29 | export CompossedSameData from './CompossedSameData';
30 | export CompossedVertical from './CompossedVertical';
31 | export CompossedResponsive from './CompossedResponsive';
32 |
--------------------------------------------------------------------------------
/src/app/routes/Dashboard/DashboardV2.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import ss from 'ba-utils/screenshoot';
5 | import { MarketingAds } from './../../components';
6 |
7 | class DashboardV2 extends React.Component {
8 | render() {
9 | const title = brand.name + ' - Dashboard v2';
10 | const description = brand.desc;
11 | return (
12 |
13 |
14 | {title}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | );
24 | }
25 | }
26 |
27 | export default DashboardV2;
28 |
--------------------------------------------------------------------------------
/src/app/routes/Dashboard/dashboard-jss.js:
--------------------------------------------------------------------------------
1 | const styles = theme => ({
2 | root: {
3 | flexGrow: 1,
4 | },
5 | divider: {
6 | margin: `${theme.spacing.unit * 2}px 0`,
7 | background: 'none'
8 | },
9 | sliderWrap: {
10 | position: 'relative',
11 | display: 'block',
12 | boxShadow: theme.shadows[1],
13 | width: '100%',
14 | borderRadius: 4
15 | },
16 | dividerMini: {
17 | margin: `${theme.spacing.unit * 1.5}px 0`,
18 | background: 'none'
19 | },
20 | noPadding: {
21 | paddingTop: '0 !important',
22 | paddingBottom: '0 !important',
23 | [theme.breakpoints.up('sm')]: {
24 | padding: '0 !important'
25 | }
26 | }
27 | });
28 |
29 | export default styles;
30 |
--------------------------------------------------------------------------------
/src/app/routes/Forms/Rating.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import ss from 'ba-utils/screenshoot';
5 | import { withStyles } from '@material-ui/core/styles';
6 | import { MarketingAds } from './../../components';
7 |
8 | const styles = ({
9 | root: {
10 | flexGrow: 1,
11 | }
12 | });
13 |
14 | class DateTime extends React.Component {
15 | render() {
16 | const title = brand.name + ' - Form';
17 | const description = brand.desc;
18 | return (
19 |
20 |
21 | {title}
22 |
23 |
24 |
25 |
26 |
27 |
28 |
33 |
34 | );
35 | }
36 | }
37 |
38 | export default withStyles(styles)(DateTime);
39 |
--------------------------------------------------------------------------------
/src/app/routes/Forms/ReduxForm.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import { withStyles } from '@material-ui/core/styles';
5 | import { SourceReader, PapperBlock } from './../../components';
6 | import { ReduxFormDemo } from './demos';
7 |
8 | const styles = ({
9 | root: {
10 | flexGrow: 1,
11 | }
12 | });
13 |
14 | class ReduxForm extends React.Component {
15 | state = {
16 | valueForm: []
17 | }
18 |
19 | showResult(values) {
20 | setTimeout(() => {
21 | this.setState({ valueForm: values });
22 | window.alert(`You submitted:\n\n${this.state.valueForm}`);
23 | }, 500); // simulate server latency
24 | }
25 |
26 | render() {
27 | const title = brand.name + ' - Form';
28 | const description = brand.desc;
29 | const docSrc = 'routes/Forms/demos/';
30 | return (
31 |
32 |
33 | {title}
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 | this.showResult(values)} />
43 |
44 |
45 |
46 |
47 | );
48 | }
49 | }
50 |
51 | export default withStyles(styles)(ReduxForm);
52 |
--------------------------------------------------------------------------------
/src/app/routes/Forms/SliderRange.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import ss from 'ba-utils/screenshoot';
5 | import { withStyles } from '@material-ui/core/styles';
6 | import { MarketingAds } from './../../components';
7 |
8 | const styles = ({
9 | root: {
10 | flexGrow: 1,
11 | }
12 | });
13 |
14 | class DateTime extends React.Component {
15 | render() {
16 | const title = brand.name + ' - Form';
17 | const description = brand.desc;
18 | return (
19 |
20 |
21 | {title}
22 |
23 |
24 |
25 |
26 |
27 |
28 |
33 |
34 | );
35 | }
36 | }
37 |
38 | export default withStyles(styles)(DateTime);
39 |
--------------------------------------------------------------------------------
/src/app/routes/Forms/Switches.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import { withStyles } from '@material-ui/core/styles';
5 | import { SourceReader, PapperBlock } from './../../components';
6 | import { SwitchesInput } from './demos';
7 |
8 | const styles = ({
9 | root: {
10 | flexGrow: 1,
11 | }
12 | });
13 |
14 | class DateTime extends React.Component {
15 | render() {
16 | const title = brand.name + ' - Form';
17 | const description = brand.desc;
18 | const docSrc = 'routes/Forms/demos/';
19 | return (
20 |
21 |
22 | {title}
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 | );
37 | }
38 | }
39 |
40 | export default withStyles(styles)(DateTime);
41 |
--------------------------------------------------------------------------------
/src/app/routes/Forms/TextEditor.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import ss from 'ba-utils/screenshoot';
5 | import { withStyles } from '@material-ui/core/styles';
6 | import { MarketingAds } from './../../components';
7 |
8 | const styles = ({
9 | root: {
10 | flexGrow: 1,
11 | }
12 | });
13 |
14 | class DateTime extends React.Component {
15 | render() {
16 | const title = brand.name + ' - Form';
17 | const description = brand.desc;
18 | return (
19 |
20 |
21 | {title}
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | );
31 | }
32 | }
33 |
34 | export default withStyles(styles)(DateTime);
35 |
--------------------------------------------------------------------------------
/src/app/routes/Forms/Upload.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import ss from 'ba-utils/screenshoot';
5 | import { withStyles } from '@material-ui/core/styles';
6 | import { MarketingAds } from './../../components';
7 |
8 | const styles = ({
9 | root: {
10 | flexGrow: 1,
11 | }
12 | });
13 |
14 | class DateTime extends React.Component {
15 | render() {
16 | const title = brand.name + ' - Form';
17 | const description = brand.desc;
18 | return (
19 |
20 |
21 | {title}
22 |
23 |
24 |
25 |
26 |
27 |
28 |
33 |
34 | );
35 | }
36 | }
37 |
38 | export default withStyles(styles)(DateTime);
39 |
--------------------------------------------------------------------------------
/src/app/routes/Forms/demos/index.js:
--------------------------------------------------------------------------------
1 | // Redux Form
2 | export ReduxFormDemo from './ReduxFormDemo';
3 | // Date Time Picker
4 | export DateInput from './DateInput';
5 | export TimeInput from './TimeInput';
6 | export DateTimeInput from './DateTimeInput';
7 | // Checkbox and Radio
8 | export Checkboxes from './Checkboxes';
9 | export RadioButton from './RadioButton';
10 | // Switches
11 | export SwitchesInput from './SwitchesInput';
12 | // Selectbox
13 | export SimpleSelectbox from './SimpleSelectbox';
14 | export NativeSelectbox from './NativeSelectbox';
15 | export MultipleSelectbox from './MultipleSelectbox';
16 | export ControlledSelectbox from './ControlledSelectbox';
17 | // Buttons
18 | export StandardButtons from './StandardButtons';
19 | export FloatingButtons from './FloatingButtons';
20 | export CustomButtons from './CustomButtons';
21 | export ComplexButtons from './ComplexButtons';
22 | // Textfield
23 | export TextFields from './TextFields';
24 | export TextFieldsLayout from './TextFieldsLayout';
25 | export InputAdornments from './InputAdornments';
26 | export FormattedInputs from './FormattedInputs';
27 | // Autocomplete
28 | export AutoSuggest from './AutoSuggest';
29 | export TagSuggestions from './TagSuggestions';
30 | export SelectSuggestions from './SelectSuggestions';
31 | export SelectSuggestionTags from './SelectSuggestionTags';
32 | export HighlightSuggest from './HighlightSuggest';
33 |
--------------------------------------------------------------------------------
/src/app/routes/Layouts/demos/Centered.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { withStyles } from '@material-ui/core/styles';
4 | import Paper from '@material-ui/core/Paper';
5 | import Grid from '@material-ui/core/Grid';
6 |
7 | const styles = theme => ({
8 | root: {
9 | flexGrow: 1,
10 | },
11 | paper: {
12 | padding: theme.spacing.unit * 2,
13 | textAlign: 'center',
14 | color: theme.palette.text.secondary,
15 | backgroundColor: theme.palette.secondary.light,
16 | },
17 | });
18 |
19 | function CenteredGrid(props) {
20 | const { classes } = props;
21 |
22 | return (
23 |
24 |
25 |
26 | xs=12
27 |
28 |
29 | xs=6
30 |
31 |
32 | xs=6
33 |
34 |
35 | xs=3
36 |
37 |
38 | xs=3
39 |
40 |
41 | xs=3
42 |
43 |
44 | xs=3
45 |
46 |
47 |
48 | );
49 | }
50 |
51 | CenteredGrid.propTypes = {
52 | classes: PropTypes.object.isRequired,
53 | };
54 |
55 | export default withStyles(styles)(CenteredGrid);
56 |
--------------------------------------------------------------------------------
/src/app/routes/Layouts/demos/FullWidth.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { withStyles } from '@material-ui/core/styles';
4 | import Paper from '@material-ui/core/Paper';
5 | import Grid from '@material-ui/core/Grid';
6 |
7 | const styles = theme => ({
8 | root: {
9 | flexGrow: 1,
10 | },
11 | paper: {
12 | padding: theme.spacing.unit * 2,
13 | textAlign: 'center',
14 | color: theme.palette.text.secondary,
15 | backgroundColor: theme.palette.secondary.light
16 | },
17 | });
18 |
19 | function FullWidthGrid(props) {
20 | const { classes } = props;
21 |
22 | return (
23 |
24 |
25 |
26 | xs=12
27 |
28 |
29 | xs=12 sm=6
30 |
31 |
32 | xs=12 sm=6
33 |
34 |
35 | xs=6 sm=3
36 |
37 |
38 | xs=6 sm=3
39 |
40 |
41 | xs=6 sm=3
42 |
43 |
44 | xs=6 sm=3
45 |
46 |
47 |
48 | );
49 | }
50 |
51 | FullWidthGrid.propTypes = {
52 | classes: PropTypes.object.isRequired,
53 | };
54 |
55 | export default withStyles(styles)(FullWidthGrid);
56 |
--------------------------------------------------------------------------------
/src/app/routes/Layouts/demos/MediaQueries.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { withStyles } from '@material-ui/core/styles';
4 | import Typography from '@material-ui/core/Typography';
5 | import red from '@material-ui/core/colors/red';
6 | import green from '@material-ui/core/colors/green';
7 | import blue from '@material-ui/core/colors/indigo';
8 |
9 | const styles = theme => ({
10 | root: {
11 | padding: theme.spacing.unit,
12 | '& h3': {
13 | color: theme.palette.common.white,
14 | },
15 | [theme.breakpoints.down('sm')]: {
16 | backgroundColor: red[500],
17 | },
18 | [theme.breakpoints.up('md')]: {
19 | backgroundColor: blue[500],
20 | },
21 | [theme.breakpoints.up('lg')]: {
22 | backgroundColor: green[500],
23 | },
24 | },
25 | });
26 |
27 | function MediaQuery(props) {
28 | const { classes } = props;
29 |
30 | return (
31 |
32 | down(sm): red
33 | up(md): blue
34 | up(lg): green
35 |
36 | );
37 | }
38 |
39 | MediaQuery.propTypes = {
40 | classes: PropTypes.object.isRequired,
41 | };
42 |
43 | export default withStyles(styles)(MediaQuery);
44 |
--------------------------------------------------------------------------------
/src/app/routes/Layouts/demos/WIthWIdth.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import withWidth from '@material-ui/core/withWidth';
4 | import Typography from '@material-ui/core/Typography';
5 |
6 | const components = {
7 | sm: 'em',
8 | md: 'u',
9 | lg: 'del',
10 | };
11 |
12 | function WithWidth(props) {
13 | const { width } = props;
14 | const Component = components[width] || 'span';
15 |
16 | return (
17 |
18 | {`Current width: ${width}`}
19 |
20 | );
21 | }
22 |
23 | WithWidth.propTypes = {
24 | width: PropTypes.string.isRequired,
25 | };
26 |
27 | export default withWidth()(WithWidth);
28 |
--------------------------------------------------------------------------------
/src/app/routes/Layouts/demos/breakpoint.md:
--------------------------------------------------------------------------------
1 |
2 | | innerWidth |xs | sm | md | lg | xl |
3 | |--------|-----|----|----|----|----|----|
4 | | width | xs | sm | md | lg | xl |
5 | | smUp | show | hide |
6 | | mdDown | | | hide | show |
7 |
--------------------------------------------------------------------------------
/src/app/routes/Layouts/demos/index.js:
--------------------------------------------------------------------------------
1 | export AutoLayout from './AutoLayout';
2 | export Centered from './Centered';
3 | export FullWidth from './FullWidth';
4 | export GridLayout from './GridLayout';
5 | export Interactive from './Interactive';
6 | export Limitation from './Limitation';
7 | export SidebarLayout from './SidebarLayout';
8 | export SidebarLayoutRight from './SidebarLayoutRight';
9 | export FullHeader from './FullHeader';
10 | export Breakpoint from './Breakpoint';
11 | export BreakpointGrid from './BreakpointGrid';
12 | export MediaQueries from './MediaQueries';
13 | export WIthWIdth from './WIthWIdth';
14 |
--------------------------------------------------------------------------------
/src/app/routes/Maps/Info.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Typography from '@material-ui/core/Typography';
3 | import Type from 'ba-components/Typography.scss';
4 |
5 | class Info extends React.Component {
6 | render() {
7 | return (
8 |
9 | This demo may not working properly because it has not added Google Map api key. To add Your own Google Map api key please follow this link
10 | https://developers.google.com/maps/documentation/javascript/get-api-key
11 |
12 | );
13 | }
14 | }
15 |
16 | export default Info;
17 |
--------------------------------------------------------------------------------
/src/app/routes/Maps/MapDirection.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import { SourceReader, PapperBlock } from './../../components';
5 | import { Direction } from './demos';
6 | import Info from './Info';
7 |
8 | class MapDirection extends React.Component {
9 | render() {
10 | const title = brand.name + ' - Map';
11 | const description = brand.desc;
12 | const docSrc = 'routes/Maps/demos/';
13 | return (
14 |
15 |
16 | {title}
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | );
30 | }
31 | }
32 |
33 | export default MapDirection;
34 |
--------------------------------------------------------------------------------
/src/app/routes/Maps/MapMarker.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import { SourceReader, PapperBlock } from './../../components';
5 | import { BasicMarker, PopoverMarker } from './demos';
6 | import Info from './Info';
7 |
8 | class MapMarker extends React.Component {
9 | render() {
10 | const title = brand.name + ' - Map';
11 | const description = brand.desc;
12 | const docSrc = 'routes/Maps/demos/';
13 | return (
14 |
15 |
16 | {title}
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 | );
35 | }
36 | }
37 |
38 | export default MapMarker;
39 |
--------------------------------------------------------------------------------
/src/app/routes/Maps/SearchMap.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import { SourceReader, PapperBlock } from './../../components';
5 | import { SearchLocation } from './demos';
6 | import Info from './Info';
7 |
8 | class SearchMap extends React.Component {
9 | render() {
10 | const title = brand.name + ' - Map';
11 | const description = brand.desc;
12 | const docSrc = 'routes/Maps/demos/';
13 | return (
14 |
15 |
16 | {title}
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | );
30 | }
31 | }
32 |
33 | export default SearchMap;
34 |
--------------------------------------------------------------------------------
/src/app/routes/Maps/StreetViewMap.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import ss from 'ba-utils/screenshoot';
5 | import { MarketingAds } from './../../components';
6 |
7 | class StreetViewMap extends React.Component {
8 | render() {
9 | const title = brand.name + ' - UI Elements';
10 | const description = brand.desc;
11 | return (
12 |
13 |
14 | {title}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | );
24 | }
25 | }
26 |
27 | export default StreetViewMap;
28 |
--------------------------------------------------------------------------------
/src/app/routes/Maps/TrafficIndicator.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import ss from 'ba-utils/screenshoot';
5 | import { MarketingAds } from './../../components';
6 |
7 | class TrafficIndicator extends React.Component {
8 | render() {
9 | const title = brand.name + ' - UI Elements';
10 | const description = brand.desc;
11 | return (
12 |
13 |
14 | {title}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | );
24 | }
25 | }
26 |
27 | export default TrafficIndicator;
28 |
--------------------------------------------------------------------------------
/src/app/routes/Maps/demos/BasicMarker.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { compose } from 'recompose';
3 | import {
4 | withScriptjs,
5 | withGoogleMap,
6 | GoogleMap,
7 | Marker,
8 | } from 'react-google-maps';
9 |
10 | const MapWithAMarker = compose(
11 | withScriptjs,
12 | withGoogleMap
13 | )(props => (
14 |
19 |
22 |
23 | ));
24 |
25 | class BasicMarker extends React.Component {
26 | render() {
27 | return (
28 | }
31 | containerElement={}
32 | mapElement={}
33 | />
34 | );
35 | }
36 | }
37 |
38 | export default BasicMarker;
39 |
--------------------------------------------------------------------------------
/src/app/routes/Maps/demos/Direction.js:
--------------------------------------------------------------------------------
1 | /* eslint-disable no-undef */
2 | import React from 'react';
3 | import { compose, withProps, lifecycle } from 'recompose';
4 | import {
5 | withScriptjs,
6 | withGoogleMap,
7 | GoogleMap,
8 | DirectionsRenderer,
9 | } from 'react-google-maps';
10 |
11 | const MapWithADirectionsRenderer = compose(
12 | withProps({
13 | googleMapURL: 'https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=geometry,drawing,places',
14 | loadingElement: ,
15 | containerElement: ,
16 | mapElement: ,
17 | }),
18 | withScriptjs,
19 | withGoogleMap,
20 | lifecycle({
21 | componentDidMount() {
22 | const DirectionsService = new google.maps.DirectionsService();
23 |
24 | DirectionsService.route({
25 | origin: new google.maps.LatLng(41.8507300, -87.6512600),
26 | destination: new google.maps.LatLng(41.8525800, -87.6514100),
27 | travelMode: google.maps.TravelMode.DRIVING,
28 | }, (result, status) => {
29 | if (status === google.maps.DirectionsStatus.OK) {
30 | this.setState({
31 | directions: result,
32 | });
33 | } else {
34 | console.error(`error fetching directions ${result}`);
35 | }
36 | });
37 | }
38 | })
39 | )(props => (
40 |
44 | {props.directions && }
45 |
46 | ));
47 |
48 | class Direction extends React.Component {
49 | render() {
50 | return (
51 |
52 | );
53 | }
54 | }
55 |
56 | export default Direction;
57 |
--------------------------------------------------------------------------------
/src/app/routes/Maps/demos/PopoverMarker.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { compose, withStateHandlers } from 'recompose';
3 | import LocalDining from '@material-ui/icons/LocalDining';
4 | import {
5 | withScriptjs,
6 | withGoogleMap,
7 | GoogleMap,
8 | Marker,
9 | InfoWindow
10 | } from 'react-google-maps';
11 |
12 | const MapWithAMakredInfoWindow = compose(
13 | withStateHandlers(() => ({
14 | isOpen: false,
15 | }), {
16 | onToggleOpen: ({ isOpen }) => () => ({
17 | isOpen: !isOpen,
18 | })
19 | }),
20 | withScriptjs,
21 | withGoogleMap
22 | )(props => (
23 |
27 |
31 | {props.isOpen &&
32 |
33 |
34 | A marked place
35 |
36 |
37 | }
38 |
39 |
40 | ));
41 |
42 | class PopoverMarker extends React.Component {
43 | render() {
44 | return (
45 | }
48 | containerElement={}
49 | mapElement={}
50 | />
51 | );
52 | }
53 | }
54 |
55 | export default PopoverMarker;
56 |
--------------------------------------------------------------------------------
/src/app/routes/Maps/demos/Traffic.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { compose, withProps } from 'recompose';
3 | import {
4 | withScriptjs,
5 | withGoogleMap,
6 | GoogleMap,
7 | TrafficLayer,
8 | } from 'react-google-maps';
9 |
10 | const MapWithATrafficLayer = compose(
11 | withProps({
12 | googleMapURL: 'https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=geometry,drawing,places',
13 | loadingElement: ,
14 | containerElement: ,
15 | mapElement: ,
16 | }),
17 | withScriptjs,
18 | withGoogleMap
19 | )(props => (
20 |
25 |
26 |
27 | ));
28 |
29 | class Traffic extends React.Component {
30 | render() {
31 | return (
32 |
33 | );
34 | }
35 | }
36 |
37 | export default Traffic;
38 |
--------------------------------------------------------------------------------
/src/app/routes/Maps/demos/index.js:
--------------------------------------------------------------------------------
1 | export BasicMarker from './BasicMarker';
2 | export PopoverMarker from './PopoverMarker';
3 | export Direction from './Direction';
4 | export SearchLocation from './SearchLocation';
5 | export Traffic from './Traffic';
6 | export StreetView from './StreetView';
7 |
--------------------------------------------------------------------------------
/src/app/routes/NotFound/NotFound.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import { Route } from 'react-router-dom';
5 | import { ErrorWrap } from './../../components';
6 |
7 | const title = brand.name + ' - Page Not Found';
8 | const description = brand.desc;
9 |
10 | const NotFound = () => (
11 | {
13 | if (staticContext) {
14 | staticContext.status = 404; // eslint-disable-line
15 | }
16 | return (
17 |
18 |
19 | {title}
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 | );
29 | }}
30 | />
31 | );
32 |
33 | export default NotFound;
34 |
--------------------------------------------------------------------------------
/src/app/routes/Pages/BlankPage/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import { PapperBlock } from './../../../components';
5 |
6 | class BlankPage extends React.Component {
7 | render() {
8 | const title = brand.name + ' - Blank Page';
9 | const description = brand.desc;
10 | return (
11 |
12 |
13 | {title}
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | Content
22 |
23 |
24 | );
25 | }
26 | }
27 |
28 | export default BlankPage;
29 |
--------------------------------------------------------------------------------
/src/app/routes/Pages/Chat/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import ss from 'ba-utils/screenshoot';
5 | import { MarketingAds } from './../../../components';
6 |
7 | class Chat extends React.Component {
8 | render() {
9 | const title = brand.name + ' - UI Elements';
10 | const description = brand.desc;
11 | return (
12 |
13 |
14 | {title}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | );
24 | }
25 | }
26 |
27 | export default Chat;
28 |
--------------------------------------------------------------------------------
/src/app/routes/Pages/Email/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import ss from 'ba-utils/screenshoot';
5 | import { MarketingAds } from './../../../components';
6 |
7 | class Email extends React.Component {
8 | render() {
9 | const title = brand.name + ' - UI Elements';
10 | const description = brand.desc;
11 | return (
12 |
13 |
14 | {title}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | );
24 | }
25 | }
26 |
27 | export default Email;
28 |
--------------------------------------------------------------------------------
/src/app/routes/Pages/Error/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import { Route } from 'react-router-dom';
5 | import { ErrorWrap } from './../../../components';
6 |
7 | const title = brand.name + ' - Aplication Error';
8 | const description = brand.desc;
9 |
10 | const Error = () => (
11 | {
13 | if (staticContext) {
14 | staticContext.status = 404; // eslint-disable-line
15 | }
16 | return (
17 |
18 |
19 | {title}
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 | );
29 | }}
30 | />
31 | );
32 |
33 | export default Error;
34 |
--------------------------------------------------------------------------------
/src/app/routes/Pages/Maintenance/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import ss from 'ba-utils/screenshoot';
5 | import { MarketingAds } from './../../../components';
6 |
7 | class Paginations extends React.Component {
8 | render() {
9 | const title = brand.name + ' - UI Elements';
10 | const description = brand.desc;
11 | return (
12 |
13 |
14 | {title}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | );
24 | }
25 | }
26 |
27 | export default Paginations;
28 |
--------------------------------------------------------------------------------
/src/app/routes/Pages/Photos/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import ss from 'ba-utils/screenshoot';
5 | import { MarketingAds } from './../../../components';
6 |
7 | class Photos extends React.Component {
8 | render() {
9 | const title = brand.name + ' - UI Elements';
10 | const description = brand.desc;
11 | return (
12 |
13 |
14 | {title}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | );
24 | }
25 | }
26 |
27 | export default Photos;
28 |
--------------------------------------------------------------------------------
/src/app/routes/Pages/SocialMedia/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import ss from 'ba-utils/screenshoot';
5 | import { MarketingAds } from './../../../components';
6 |
7 | class Chat extends React.Component {
8 | render() {
9 | const title = brand.name + ' - UI Elements';
10 | const description = brand.desc;
11 | return (
12 |
13 |
14 | {title}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | );
24 | }
25 | }
26 |
27 | export default Chat;
28 |
--------------------------------------------------------------------------------
/src/app/routes/Pages/Standalone/LoginDedicated.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { PropTypes } from 'prop-types';
3 | import { withStyles } from '@material-ui/core/styles';
4 | import Hidden from '@material-ui/core/Hidden';
5 | import brand from 'ba-utils/brand';
6 | import logo from 'ba-images/logo.svg';
7 | import styles from './../../../components/App/appStyles-jss';
8 | import Login from './../Users/Login';
9 |
10 | class LoginDedicated extends React.Component {
11 | render() {
12 | const { classes } = this.props;
13 | return (
14 |
15 |
16 |
17 |
18 |

19 |
{brand.name}
20 |
21 |
22 |
23 |
24 |
25 | );
26 | }
27 | }
28 |
29 | LoginDedicated.propTypes = {
30 | classes: PropTypes.object.isRequired,
31 | };
32 |
33 | export default (withStyles(styles)(LoginDedicated));
34 |
--------------------------------------------------------------------------------
/src/app/routes/Pages/Standalone/NotFoundDedicated.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { PropTypes } from 'prop-types';
3 | import { withStyles } from '@material-ui/core/styles';
4 | import styles from './../../../components/App/appStyles-jss';
5 | import Error from './../Error';
6 |
7 | class NotFoundDedicated extends React.Component {
8 | render() {
9 | const { classes } = this.props;
10 | return (
11 |
12 |
13 |
14 |
15 |
16 | );
17 | }
18 | }
19 |
20 | NotFoundDedicated.propTypes = {
21 | classes: PropTypes.object.isRequired,
22 | };
23 |
24 | export default (withStyles(styles)(NotFoundDedicated));
25 |
--------------------------------------------------------------------------------
/src/app/routes/Pages/UserProfile/index.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import ss from 'ba-utils/screenshoot';
5 | import { MarketingAds } from './../../../components';
6 |
7 | class Chat extends React.Component {
8 | render() {
9 | const title = brand.name + ' - UI Elements';
10 | const description = brand.desc;
11 | return (
12 |
13 |
14 | {title}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | );
24 | }
25 | }
26 |
27 | export default Chat;
28 |
--------------------------------------------------------------------------------
/src/app/routes/Pages/Users/LockScreen.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import ss from 'ba-utils/screenshoot';
5 | import { MarketingAds } from './../../../components';
6 |
7 | class Paginations extends React.Component {
8 | render() {
9 | const title = brand.name + ' - UI Elements';
10 | const description = brand.desc;
11 | return (
12 |
13 |
14 | {title}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | );
24 | }
25 | }
26 |
27 | export default Paginations;
28 |
--------------------------------------------------------------------------------
/src/app/routes/Pages/Users/ResetPassword.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import ss from 'ba-utils/screenshoot';
5 | import { MarketingAds } from './../../../components';
6 |
7 | class Paginations extends React.Component {
8 | render() {
9 | const title = brand.name + ' - UI Elements';
10 | const description = brand.desc;
11 | return (
12 |
13 |
14 | {title}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | );
24 | }
25 | }
26 |
27 | export default Paginations;
28 |
--------------------------------------------------------------------------------
/src/app/routes/Tables/AdvancedTable.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import ss from 'ba-utils/screenshoot';
5 | import { withStyles } from '@material-ui/core/styles';
6 | import { SourceReader, PapperBlock, MarketingAds } from './../../components';
7 | import { AdvTableDemo } from './demos';
8 |
9 | const styles = ({
10 | root: {
11 | flexGrow: 1,
12 | }
13 | });
14 |
15 | class AdvancedTable extends Component {
16 | render() {
17 | const title = brand.name + ' - Table';
18 | const description = brand.desc;
19 | const docSrc = 'routes/Tables/demos/';
20 | return (
21 |
22 |
23 | {title}
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
35 |
36 |
37 |
38 | );
39 | }
40 | }
41 |
42 | export default withStyles(styles)(AdvancedTable);
43 |
--------------------------------------------------------------------------------
/src/app/routes/Tables/demos/EmptyTable.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { withStyles } from '@material-ui/core/styles';
4 | import Toolbar from '@material-ui/core/Toolbar';
5 | import Typography from '@material-ui/core/Typography';
6 | import Table from '@material-ui/core/Table';
7 | import TableCell from '@material-ui/core/TableCell';
8 | import TableHead from '@material-ui/core/TableHead';
9 | import TableRow from '@material-ui/core/TableRow';
10 | import Paper from '@material-ui/core/Paper';
11 | import { EmptyData } from './../../../components';
12 |
13 | const styles = theme => ({
14 | root: {
15 | width: '100%',
16 | marginTop: theme.spacing.unit * 3,
17 | overflowX: 'auto',
18 | },
19 | table: {
20 | minWidth: 700,
21 | },
22 | });
23 |
24 | function EmptyTable(props) {
25 | const { classes } = props;
26 | return (
27 |
28 |
29 |
30 | Nutrition
31 |
32 |
33 |
34 |
35 |
36 | Dessert (100g serving)
37 | Calories
38 | Fat (g)
39 | Carbs (g)
40 | Protein (g)
41 |
42 |
43 |
44 |
45 |
46 | );
47 | }
48 |
49 | EmptyTable.propTypes = {
50 | classes: PropTypes.object.isRequired,
51 | };
52 |
53 | export default withStyles(styles)(EmptyTable);
54 |
--------------------------------------------------------------------------------
/src/app/routes/Tables/demos/TrackingTable.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import ss from 'ba-utils/screenshoot';
5 | import { MarketingAds } from './../../../components';
6 |
7 | class TrackingTable extends React.Component {
8 | render() {
9 | const title = brand.name + ' - Dashboard v2';
10 | const description = brand.desc;
11 | return (
12 |
13 |
14 | {title}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | );
24 | }
25 | }
26 |
27 | export default TrackingTable;
28 |
--------------------------------------------------------------------------------
/src/app/routes/Tables/demos/index.js:
--------------------------------------------------------------------------------
1 | export SimpleTable from './SimpleTable';
2 | export StrippedTable from './StrippedTable';
3 | export HoverTable from './HoverTable';
4 | export BorderedTable from './BorderedTable';
5 | export TreeTableDemo from './TreeTableDemo';
6 | export CrudTableDemo from './CrudTableDemo';
7 | export AdvTableDemo from './AdvTableDemo';
8 | export StatusLabel from './StatusLabel';
9 | export StatusColorRow from './StatusColorRow';
10 | export EmptyTable from './EmptyTable';
11 | export TrackingTable from './TrackingTable';
12 |
--------------------------------------------------------------------------------
/src/app/routes/UiElements/Avatars.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import { SourceReader, PapperBlock } from './../../components';
5 | import { AvatarsDemo, AvatarsPractice } from './demos';
6 |
7 | class Avatars extends React.Component {
8 | render() {
9 | const title = brand.name + ' - UI Elements';
10 | const description = brand.desc;
11 | const docSrc = 'routes/UiElements/demos/Avatars/';
12 | return (
13 |
14 |
15 | {title}
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
27 |
28 |
29 |
33 |
34 |
35 | );
36 | }
37 | }
38 |
39 | export default Avatars;
40 |
--------------------------------------------------------------------------------
/src/app/routes/UiElements/Badges.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import { SourceReader, PapperBlock } from './../../components';
5 | import { CommonBadges, VariantBadges } from './demos';
6 |
7 | class Badges extends React.Component {
8 | render() {
9 | const title = brand.name + ' - UI Elements';
10 | const description = brand.desc;
11 | const docSrc = 'routes/UiElements/demos/Badges/';
12 | return (
13 |
14 |
15 | {title}
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 | );
36 | }
37 | }
38 |
39 | export default Badges;
40 |
--------------------------------------------------------------------------------
/src/app/routes/UiElements/Breadcrumbs.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import { SourceReader, PapperBlock } from './../../components';
5 | import { ClassicBreadcrumbs, PaperBreadcrumbs } from './demos';
6 |
7 | class BreadCrumbs extends React.Component {
8 | render() {
9 | const title = brand.name + ' - UI Elements';
10 | const description = brand.desc;
11 | const docSrc = 'routes/UiElements/demos/Breadcrumbs/';
12 | return (
13 |
14 |
15 | {title}
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
33 |
34 |
35 | );
36 | }
37 | }
38 |
39 | export default BreadCrumbs;
40 |
--------------------------------------------------------------------------------
/src/app/routes/UiElements/Dividers.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import ss from 'ba-utils/screenshoot';
5 | import { MarketingAds } from './../../components';
6 |
7 | class Dividers extends React.Component {
8 | render() {
9 | const title = brand.name + ' - UI Elements';
10 | const description = brand.desc;
11 | return (
12 |
13 |
14 | {title}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | );
24 | }
25 | }
26 |
27 | export default Dividers;
28 |
--------------------------------------------------------------------------------
/src/app/routes/UiElements/Paginations.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import ss from 'ba-utils/screenshoot';
5 | import { MarketingAds } from './../../components';
6 |
7 | class Paginations extends React.Component {
8 | render() {
9 | const title = brand.name + ' - UI Elements';
10 | const description = brand.desc;
11 | return (
12 |
13 |
14 | {title}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | );
24 | }
25 | }
26 |
27 | export default Paginations;
28 |
--------------------------------------------------------------------------------
/src/app/routes/UiElements/SliderCarousel.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import ss from 'ba-utils/screenshoot';
4 | import brand from 'ba-utils/brand';
5 | import { MarketingAds } from './../../components';
6 |
7 | class SliderCarousel extends React.Component {
8 | render() {
9 | const title = brand.name + ' - UI Elements';
10 | const description = brand.desc;
11 | return (
12 |
13 |
14 | {title}
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | );
25 | }
26 | }
27 |
28 | export default SliderCarousel;
29 |
--------------------------------------------------------------------------------
/src/app/routes/UiElements/Tags.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Helmet } from 'react-helmet';
3 | import brand from 'ba-utils/brand';
4 | import { SourceReader, PapperBlock } from './../../components';
5 | import { BasicTags, ArrayTags } from './demos';
6 |
7 | class Tags extends React.Component {
8 | render() {
9 | const title = brand.name + ' - UI Elements';
10 | const description = brand.desc;
11 | const docSrc = 'routes/UiElements/demos/Tags/';
12 | return (
13 |
14 |
15 | {title}
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
33 |
34 |
35 | );
36 | }
37 | }
38 |
39 | export default Tags;
40 |
--------------------------------------------------------------------------------
/src/app/routes/UiElements/demos/Cards/PaperSheet.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { withStyles } from '@material-ui/core/styles';
4 | import Paper from '@material-ui/core/Paper';
5 | import Typography from '@material-ui/core/Typography';
6 |
7 | const styles = theme => ({
8 | root: theme.mixins.gutters({
9 | paddingTop: 16,
10 | paddingBottom: 16,
11 | marginTop: theme.spacing.unit * 3,
12 | }),
13 | });
14 |
15 | function PaperSheet(props) {
16 | const { classes } = props;
17 | return (
18 |
19 |
20 |
21 | This is a sheet of paper.
22 |
23 |
24 | Paper can be used to build surface or other elements for your application.
25 |
26 |
27 |
28 | );
29 | }
30 |
31 | PaperSheet.propTypes = {
32 | classes: PropTypes.object.isRequired,
33 | };
34 |
35 | export default withStyles(styles)(PaperSheet);
36 |
--------------------------------------------------------------------------------
/src/app/routes/UiElements/demos/ImageGrid/ImageGridList.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { withStyles } from '@material-ui/core/styles';
4 | import GridList from '@material-ui/core/GridList';
5 | import GridListTile from '@material-ui/core/GridListTile';
6 | import imgData from 'ba-utils/imgData';
7 |
8 | const styles = theme => ({
9 | root: {
10 | display: 'flex',
11 | flexWrap: 'wrap',
12 | justifyContent: 'space-around',
13 | overflow: 'hidden',
14 | backgroundColor: theme.palette.background.paper,
15 | },
16 | gridList: {
17 | width: 500,
18 | height: 450,
19 | },
20 | subheader: {
21 | width: '100%',
22 | },
23 | img: {
24 | maxWidth: 'none'
25 | }
26 | });
27 |
28 | /**
29 | * The example data is structured as follows:
30 | *
31 | * import image from 'path/to/image.jpg';
32 | * [etc...]
33 | *
34 | * const tileData = [
35 | * {
36 | * img: image,
37 | * title: 'Image',
38 | * author: 'author',
39 | * cols: 2,
40 | * },
41 | * {
42 | * [etc...]
43 | * },
44 | * ];
45 | */
46 | function ImageGridList(props) {
47 | const { classes } = props;
48 |
49 | return (
50 |
51 |
52 | {imgData.map((tile, index) => (
53 |
54 |
55 |
56 | ))}
57 |
58 |
59 | );
60 | }
61 |
62 | ImageGridList.propTypes = {
63 | classes: PropTypes.object.isRequired,
64 | };
65 |
66 | export default withStyles(styles)(ImageGridList);
67 |
--------------------------------------------------------------------------------
/src/app/routes/UiElements/demos/Progress/CircularIndeterminate.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { withStyles } from '@material-ui/core/styles';
4 | import CircularProgress from '@material-ui/core/CircularProgress';
5 | import purple from '@material-ui/core/colors/purple';
6 |
7 | const styles = theme => ({
8 | progress: {
9 | margin: theme.spacing.unit * 2,
10 | },
11 | });
12 |
13 | function CircularIndeterminate(props) {
14 | const { classes } = props;
15 | return (
16 |
17 |
18 |
19 |
20 |
21 |
22 | );
23 | }
24 |
25 | CircularIndeterminate.propTypes = {
26 | classes: PropTypes.object.isRequired,
27 | };
28 |
29 | export default withStyles(styles)(CircularIndeterminate);
30 |
--------------------------------------------------------------------------------
/src/app/routes/UiElements/demos/Progress/CircularStatic.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { withStyles } from '@material-ui/core/styles';
4 | import CircularProgress from '@material-ui/core/CircularProgress';
5 |
6 | const styles = theme => ({
7 | progress: {
8 | margin: theme.spacing.unit * 2,
9 | },
10 | });
11 |
12 | function CircularStatic(props) {
13 | const { classes } = props;
14 | return (
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | );
23 | }
24 |
25 | CircularStatic.propTypes = {
26 | classes: PropTypes.object.isRequired,
27 | };
28 |
29 | export default withStyles(styles)(CircularStatic);
30 |
--------------------------------------------------------------------------------
/src/app/routes/UiElements/demos/Progress/LinearBuffer.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { withStyles } from '@material-ui/core/styles';
4 | import LinearProgress from '@material-ui/core/LinearProgress';
5 |
6 | const styles = {
7 | root: {
8 | flexGrow: 1,
9 | },
10 | };
11 |
12 | class LinearBuffer extends React.Component {
13 | state = {
14 | completed: 0,
15 | buffer: 10,
16 | };
17 |
18 | componentDidMount() {
19 | this.timer = setInterval(this.progress, 500);
20 | }
21 |
22 | componentWillUnmount() {
23 | clearInterval(this.timer);
24 | }
25 |
26 | timer = null;
27 |
28 | progress = () => {
29 | const { completed } = this.state;
30 | if (completed > 100) {
31 | this.setState({ completed: 0, buffer: 10 });
32 | } else {
33 | const diff = Math.random() * 10;
34 | const diff2 = Math.random() * 10;
35 | this.setState({ completed: completed + diff, buffer: completed + diff + diff2 });
36 | }
37 | };
38 |
39 | render() {
40 | const { classes } = this.props;
41 | const { completed, buffer } = this.state;
42 | return (
43 |
44 |
45 |
46 |
47 |
48 | );
49 | }
50 | }
51 |
52 | LinearBuffer.propTypes = {
53 | classes: PropTypes.object.isRequired,
54 | };
55 |
56 | export default withStyles(styles)(LinearBuffer);
57 |
--------------------------------------------------------------------------------
/src/app/routes/UiElements/demos/Progress/LinearDeterminate.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { withStyles } from '@material-ui/core/styles';
4 | import LinearProgress from '@material-ui/core/LinearProgress';
5 |
6 | const styles = {
7 | root: {
8 | flexGrow: 1,
9 | },
10 | };
11 |
12 | class LinearDeterminate extends React.Component {
13 | state = {
14 | completed: 0,
15 | };
16 |
17 | componentDidMount() {
18 | this.timer = setInterval(this.progress, 500);
19 | }
20 |
21 | componentWillUnmount() {
22 | clearInterval(this.timer);
23 | }
24 |
25 | timer = null;
26 |
27 | progress = () => {
28 | const { completed } = this.state;
29 | if (completed === 100) {
30 | this.setState({ completed: 0 });
31 | } else {
32 | const diff = Math.random() * 10;
33 | this.setState({ completed: Math.min(completed + diff, 100) });
34 | }
35 | };
36 |
37 | render() {
38 | const { classes } = this.props;
39 | return (
40 |
41 |
42 |
43 |
44 |
45 | );
46 | }
47 | }
48 |
49 | LinearDeterminate.propTypes = {
50 | classes: PropTypes.object.isRequired,
51 | };
52 |
53 | export default withStyles(styles)(LinearDeterminate);
54 |
--------------------------------------------------------------------------------
/src/app/routes/UiElements/demos/Progress/LinearIndeterminate.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { withStyles } from '@material-ui/core/styles';
4 | import LinearProgress from '@material-ui/core/LinearProgress';
5 |
6 | const styles = {
7 | root: {
8 | flexGrow: 1,
9 | },
10 | };
11 |
12 | function LinearIndeterminate(props) {
13 | const { classes } = props;
14 | return (
15 |
16 |
17 |
18 |
19 |
20 | );
21 | }
22 |
23 | LinearIndeterminate.propTypes = {
24 | classes: PropTypes.object.isRequired,
25 | };
26 |
27 | export default withStyles(styles)(LinearIndeterminate);
28 |
--------------------------------------------------------------------------------
/src/app/routes/UiElements/demos/Progress/LinearQuery.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { withStyles } from '@material-ui/core/styles';
4 | import LinearProgress from '@material-ui/core/LinearProgress';
5 |
6 | const styles = {
7 | root: {
8 | flexGrow: 1,
9 | },
10 | };
11 |
12 | function LinearQuery(props) {
13 | const { classes } = props;
14 | return (
15 |
16 |
17 |
18 |
19 |
20 | );
21 | }
22 |
23 | LinearQuery.propTypes = {
24 | classes: PropTypes.object.isRequired,
25 | };
26 |
27 | export default withStyles(styles)(LinearQuery);
28 |
--------------------------------------------------------------------------------
/src/app/routes/UiElements/demos/Progress/LinearStatic.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { withStyles } from '@material-ui/core/styles';
4 | import LinearProgress from '@material-ui/core/LinearProgress';
5 |
6 | const styles = {
7 | root: {
8 | flexGrow: 1,
9 | },
10 | };
11 |
12 | function LinearIndeterminate(props) {
13 | const { classes } = props;
14 | return (
15 |
16 |
17 |
18 |
19 |
20 | );
21 | }
22 |
23 | LinearIndeterminate.propTypes = {
24 | classes: PropTypes.object.isRequired,
25 | };
26 |
27 | export default withStyles(styles)(LinearIndeterminate);
28 |
--------------------------------------------------------------------------------
/src/app/routes/UiElements/demos/Tabs/CenteredTabs.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { withStyles } from '@material-ui/core/styles';
4 | import Paper from '@material-ui/core/Paper';
5 | import Tabs from '@material-ui/core/Tabs';
6 | import Tab from '@material-ui/core/Tab';
7 |
8 | const styles = {
9 | root: {
10 | flexGrow: 1,
11 | },
12 | };
13 |
14 | class CenteredTabs extends React.Component {
15 | state = {
16 | value: 0,
17 | };
18 |
19 | handleChange = (event, value) => {
20 | this.setState({ value });
21 | };
22 |
23 | render() {
24 | const { classes } = this.props;
25 |
26 | return (
27 |
28 |
35 |
36 |
37 |
38 |
39 |
40 | );
41 | }
42 | }
43 |
44 | CenteredTabs.propTypes = {
45 | classes: PropTypes.object.isRequired,
46 | };
47 |
48 | export default withStyles(styles)(CenteredTabs);
49 |
--------------------------------------------------------------------------------
/src/app/routes/UiElements/demos/Tabs/DisabledTab.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Paper from '@material-ui/core/Paper';
3 | import Tabs from '@material-ui/core/Tabs';
4 | import Tab from '@material-ui/core/Tab';
5 |
6 | class DisabledTab extends React.Component {
7 | state = {
8 | value: 2,
9 | };
10 |
11 | handleChange = (event, value) => {
12 | this.setState({ value });
13 | };
14 |
15 | render() {
16 | return (
17 |
18 |
24 |
25 |
26 |
27 |
28 |
29 | );
30 | }
31 | }
32 |
33 | export default DisabledTab;
34 |
--------------------------------------------------------------------------------
/src/app/routes/UiElements/demos/Tabs/SimpleTabs.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { withStyles } from '@material-ui/core/styles';
4 | import AppBar from '@material-ui/core/AppBar';
5 | import Tabs from '@material-ui/core/Tabs';
6 | import Tab from '@material-ui/core/Tab';
7 | import Typography from '@material-ui/core/Typography';
8 |
9 | function TabContainer(props) {
10 | return (
11 |
12 | {props.children}
13 |
14 | );
15 | }
16 |
17 | TabContainer.propTypes = {
18 | children: PropTypes.node.isRequired,
19 | };
20 |
21 | const styles = theme => ({
22 | root: {
23 | flexGrow: 1,
24 | backgroundColor: theme.palette.background.paper,
25 | },
26 | });
27 |
28 | class SimpleTabs extends React.Component {
29 | state = {
30 | value: 0,
31 | };
32 |
33 | handleChange = (event, value) => {
34 | this.setState({ value });
35 | };
36 |
37 | render() {
38 | const { classes } = this.props;
39 | const { value } = this.state;
40 |
41 | return (
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 | {value === 0 &&
Item One}
51 | {value === 1 &&
Item Two}
52 | {value === 2 &&
Item Three}
53 |
54 | );
55 | }
56 | }
57 |
58 | SimpleTabs.propTypes = {
59 | classes: PropTypes.object.isRequired,
60 | };
61 |
62 | export default withStyles(styles)(SimpleTabs);
63 |
--------------------------------------------------------------------------------
/src/app/routes/UiElements/demos/Typography/ColouredTypo.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Typography from '@material-ui/core/Typography';
3 | import Type from 'ba-components/Typography.scss';
4 |
5 | class ColouredTypo extends React.Component {
6 | render() {
7 | return (
8 |
9 |
10 | Ut sed eros finibus
11 |
12 |
13 | Nulla eget lobortis lacus. Aliquam venenatis magna et odio lobortis maximus.
14 |
15 |
16 | Aliquam nec ex aliquet
17 |
18 |
19 | Aenean facilisis vitae purus facilisis semper
20 |
21 |
22 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse sed urna in justo euismod condimentum.
23 |
24 |
25 | Vivamus et luctus mauris. Maecenas nisl libero, tincidunt id odio id, feugiat vulputate quam.
26 |
27 |
28 | Curabitur egestas consequat lorem, vel fermentum augue porta id.
29 |
30 |
31 | );
32 | }
33 | }
34 |
35 | export default ColouredTypo;
36 |
--------------------------------------------------------------------------------
/src/app/routes/UiElements/demos/Typography/Heading.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Typography from '@material-ui/core/Typography';
3 |
4 | class Heading extends React.Component {
5 | render() {
6 | return (
7 |
8 |
9 | Disp 4
10 |
11 |
12 | Display 3
13 |
14 |
15 | Display 2
16 |
17 |
18 | Display 1
19 |
20 |
21 | Headline
22 |
23 |
24 | Title
25 |
26 |
27 | Subheading
28 |
29 |
30 | {`
31 | Lorem ipsum dolor sit amet, consectetur adipisicing elit,
32 | sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
33 | `}
34 |
35 |
36 | );
37 | }
38 | }
39 |
40 | export default Heading;
41 |
--------------------------------------------------------------------------------
/src/app/routes/UiElements/demos/Typography/QuotesDemo.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import PropTypes from 'prop-types';
3 | import { withStyles } from '@material-ui/core/styles';
4 | import { Quote } from './../../../../components';
5 |
6 | const styles = theme => ({
7 | divider: {
8 | margin: `${theme.spacing.unit * 3}px 0`,
9 | }
10 | });
11 |
12 | class QuotesDemo extends React.Component {
13 | render() {
14 | const { classes } = this.props;
15 | return (
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 | );
25 | }
26 | }
27 |
28 | QuotesDemo.propTypes = {
29 | classes: PropTypes.object.isRequired,
30 | };
31 |
32 | export default withStyles(styles)(QuotesDemo);
33 |
--------------------------------------------------------------------------------
/src/app/routes/withTracker.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 | import { object } from 'prop-types';
3 | import GoogleAnalytics from 'react-ga';
4 | import { googleAnaliticsId } from '../config';
5 |
6 | if (googleAnaliticsId) {
7 | GoogleAnalytics.initialize(googleAnaliticsId);
8 | }
9 |
10 | export default function withTracker(WrappedComponent, options = {}) {
11 | const trackPage = (page) => {
12 | GoogleAnalytics.set({
13 | page,
14 | ...options
15 | });
16 | GoogleAnalytics.pageview(page);
17 | };
18 |
19 | const HOC = class extends Component {
20 | static propTypes = {
21 | location: object.isRequired,
22 | };
23 |
24 | componentDidMount() {
25 | if (googleAnaliticsId) {
26 | const page = this.props.location.pathname;
27 | trackPage(page);
28 | }
29 | }
30 |
31 | componentWillReceiveProps(nextProps) {
32 | if (googleAnaliticsId) {
33 | const currentPage = this.props.location.pathname;
34 | const nextPage = nextProps.location.pathname;
35 |
36 | if (currentPage !== nextPage) {
37 | trackPage(nextPage);
38 | }
39 | }
40 | }
41 |
42 | render() {
43 | return ;
44 | }
45 | };
46 |
47 | if (typeof WrappedComponent.fetchData !== 'undefined') {
48 | HOC.fetchData = WrappedComponent.fetchData;
49 | }
50 |
51 | return HOC;
52 | }
53 |
--------------------------------------------------------------------------------
/src/app/styles/components/Code.scss:
--------------------------------------------------------------------------------
1 | .codePre{
2 | code{
3 | color: #4f00ff;
4 | padding: 3px;
5 | border: #c1c1c1 1px solid;
6 | border-radius: 3px;
7 | font-size: 13px;
8 | }
9 | }
--------------------------------------------------------------------------------
/src/app/styles/components/Form.scss:
--------------------------------------------------------------------------------
1 | @import "./../mixins";
2 | $sm: "(max-width: 600px)";
3 | .bodyForm{
4 | position: relative;
5 | background: $white;
6 | padding: 24px;
7 | @media #{$sm} {
8 | padding: 15px 10px;
9 | }
10 | max-height: 450px;
11 | overflow: auto;
12 | }
13 | .buttonArea{
14 | background: material-color('grey', '100');
15 | position: relative;
16 | bottom: 0;
17 | left: 0;
18 | width: 100%;
19 | text-align: right;
20 | padding: 8px 24px;
21 | button{
22 | margin-right: 5px;
23 | }
24 | }
--------------------------------------------------------------------------------
/src/app/styles/components/Progress.scss:
--------------------------------------------------------------------------------
1 | @import "../../styles/mixins";
2 |
3 | // Fill Background
4 | .bgInfo div{
5 | background: material-color('blue', '300')
6 | }
7 | .bgSuccess div{
8 | background: material-color('green', '300')
9 | }
10 | .bgWarning div{
11 | background: material-color('orange', '300')
12 | }
13 | .bgError div{
14 | background: material-color('red', '300')
15 | }
16 | .bgDefault div{
17 | background: material-color('grey', '700')
18 | }
--------------------------------------------------------------------------------
/src/app/styles/components/TextEditor.scss:
--------------------------------------------------------------------------------
1 | @import "../../styles/mixins";
2 |
3 | .TextEditor{
4 | background: #fff;
5 | min-height: 200px;
6 | border: 1px solid material-color('grey', '300');
7 | padding: 0 10px;
8 | }
9 |
10 | .ToolbarEditor{
11 | background: material-color('grey', '50');
12 | border: none;
13 | }
14 |
15 | .textPreview{
16 | width: 100%;
17 | resize: none;
18 | height: 305px;
19 | border-width: 1px;
20 | border-style: solid;
21 | border-color: material-color('grey', '300');
22 | border-image: initial;
23 | padding: 5px;
24 | }
--------------------------------------------------------------------------------
/src/app/styles/components/vendors/react-loading-bar/index.css:
--------------------------------------------------------------------------------
1 | .Loading__loading___1m_fZ {
2 | pointer-events: none;
3 | transition: 400ms linear all;
4 | }
5 |
6 | .Loading__bar___21yOt {
7 | position: fixed;
8 | top: 0;
9 | left: 0;
10 | z-index: 10002;
11 | display: none;
12 | width: 100%;
13 | height: 2px;
14 | background: #29d;
15 | border-radius: 0 1px 1px 0;
16 | transition: width 350ms;
17 | }
18 |
19 | .Loading__peg___3Y_28 {
20 | position: absolute;
21 | top: 0;
22 | right: 0;
23 | width: 70px;
24 | height: 2px;
25 | border-radius: 50%;
26 | opacity: .45;
27 | box-shadow: #29d 1px 0 6px 1px;
28 | }
29 |
30 | .Loading__spinner___11Pm4 {
31 | position: fixed;
32 | top: 5px;
33 | left: 5px;
34 | z-index: 10002;
35 | pointer-events: none;
36 | transition: 350ms linear all;
37 | }
38 |
39 | .Loading__icon___3OOyu {
40 | width: 14px;
41 | height: 14px;
42 | border: solid #29d;
43 | border-width: 0 2px 2px 0;
44 | border-radius: 50%;
45 | -webkit-animation: Loading__loading-bar-spinner___1hKY9 400ms linear infinite;
46 | animation: Loading__loading-bar-spinner___1hKY9 400ms linear infinite;
47 | }
48 |
49 | @-webkit-keyframes Loading__loading-bar-spinner___1hKY9 {
50 | 0% {
51 | -webkit-transform: rotate(0);
52 | transform: rotate(0);
53 | }
54 |
55 | 100% {
56 | -webkit-transform: rotate(360deg);
57 | transform: rotate(360deg);
58 | }
59 | }
60 |
61 | @keyframes Loading__loading-bar-spinner___1hKY9 {
62 | 0% {
63 | -webkit-transform: rotate(0);
64 | transform: rotate(0);
65 | }
66 |
67 | 100% {
68 | -webkit-transform: rotate(360deg);
69 | transform: rotate(360deg);
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/src/app/styles/components/vendors/slick-carousel/ajax-loader.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/src/app/styles/components/vendors/slick-carousel/ajax-loader.gif
--------------------------------------------------------------------------------
/src/app/styles/components/vendors/slick-carousel/fonts/slick.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/src/app/styles/components/vendors/slick-carousel/fonts/slick.eot
--------------------------------------------------------------------------------
/src/app/styles/components/vendors/slick-carousel/fonts/slick.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/src/app/styles/components/vendors/slick-carousel/fonts/slick.ttf
--------------------------------------------------------------------------------
/src/app/styles/components/vendors/slick-carousel/fonts/slick.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/src/app/styles/components/vendors/slick-carousel/fonts/slick.woff
--------------------------------------------------------------------------------
/src/app/styles/layout/_base.scss:
--------------------------------------------------------------------------------
1 | // Bitters 1.7.0
2 | // http://bitters.bourbon.io
3 | // Copyright 2013-2017 thoughtbot, inc.
4 | // MIT License
5 |
6 | @import "../variables";
7 | @import "variables";
8 |
9 | @import "buttons";
10 | @import "forms";
11 | @import "layout";
12 | @import "lists";
13 | @import "media";
14 | @import "tables";
15 | @import "typography";
16 |
--------------------------------------------------------------------------------
/src/app/styles/layout/_buttons.scss:
--------------------------------------------------------------------------------
1 | $_button-background-color: $action-color;
2 | $_button-background-color-hover: shade($action-color, 20%);
3 |
4 | #{$all-buttons} {
5 | appearance: none;
6 | background-color: $_button-background-color;
7 | border: 0;
8 | border-radius: $base-border-radius;
9 | color: contrast-switch($_button-background-color);
10 | cursor: pointer;
11 | display: inline-block;
12 | font-family: $base-font-family;
13 | font-size: 16px;
14 | -webkit-font-smoothing: antialiased;
15 | font-weight: 600;
16 | line-height: 1;
17 | padding: $small-spacing $base-spacing;
18 | text-align: center;
19 | text-decoration: none;
20 | transition: background-color $base-duration $base-timing;
21 | user-select: none;
22 | vertical-align: middle;
23 | white-space: nowrap;
24 |
25 | &:focus {
26 | outline: none;
27 | outline-offset: inherit;
28 | }
29 |
30 | &:disabled {
31 | cursor: not-allowed;
32 | opacity: 0.5;
33 |
34 | &:hover {
35 | background-color: $_button-background-color;
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/src/app/styles/layout/_forms.scss:
--------------------------------------------------------------------------------
1 | $_form-background-color: #fff;
2 | $_form-box-shadow: inset 0 1px 3px rgba(#000, 0.06);
3 | $_form-box-shadow-focus: $_form-box-shadow, 0 0 5px rgba($action-color, 0.7);
4 |
5 | fieldset {
6 | background-color: transparent;
7 | border: 0;
8 | margin: 0;
9 | padding: 0;
10 | }
11 |
12 | legend {
13 | font-weight: 600;
14 | margin-bottom: $small-spacing / 2;
15 | padding: 0;
16 | }
17 |
18 | textarea {
19 | resize: vertical;
20 | }
21 |
22 | [type="checkbox"],
23 | [type="radio"] {
24 | display: inline;
25 | margin-right: $small-spacing / 2;
26 | }
27 |
28 | [type="file"] {
29 | margin-bottom: $small-spacing;
30 | width: 100%;
31 | }
32 |
33 | select {
34 | margin-bottom: $small-spacing;
35 | width: 100%;
36 | }
37 |
38 | [type="checkbox"],
39 | [type="radio"],
40 | [type="file"],
41 | select {
42 | &:focus {
43 | outline: $focus-outline;
44 | outline-offset: $focus-outline-offset;
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/src/app/styles/layout/_layout.scss:
--------------------------------------------------------------------------------
1 | html {
2 | background-color: $viewport-background-color;
3 | box-sizing: border-box;
4 | }
5 |
6 | *,
7 | *::before,
8 | *::after {
9 | box-sizing: inherit;
10 | }
11 |
12 | html,
13 | body {
14 | height: 100%;
15 | }
16 |
17 | body {
18 | margin: 0;
19 | }
20 |
--------------------------------------------------------------------------------
/src/app/styles/layout/_lists.scss:
--------------------------------------------------------------------------------
1 | ul,
2 | ol {
3 | list-style-type: none;
4 | margin: 0;
5 | padding: 0;
6 | }
7 |
8 | dl {
9 | margin: 0;
10 | }
11 |
12 | dt {
13 | font-weight: 600;
14 | margin: 0;
15 | }
16 |
17 | dd {
18 | margin: 0;
19 | }
20 |
--------------------------------------------------------------------------------
/src/app/styles/layout/_media.scss:
--------------------------------------------------------------------------------
1 | figure {
2 | margin: 0;
3 | }
4 |
5 | img,
6 | picture {
7 | margin: 0;
8 | max-width: 100%;
9 | }
10 |
--------------------------------------------------------------------------------
/src/app/styles/layout/_tables.scss:
--------------------------------------------------------------------------------
1 | table {
2 | border-collapse: collapse;
3 | margin: $base-spacing 0;
4 | text-align: left;
5 | width: 100%;
6 | }
7 |
8 | thead {
9 | line-height: $heading-line-height;
10 | vertical-align: bottom;
11 | }
12 |
13 | tbody {
14 | vertical-align: top;
15 | }
16 |
17 | tr {
18 | border-bottom: $base-border;
19 | }
20 |
21 | th {
22 | font-weight: 600;
23 | }
24 |
25 | th,
26 | td {
27 | padding: $small-spacing $base-spacing;
28 | @media screen and (max-width: 1400px) {
29 | padding: $small-spacing;
30 | padding-left: $base-spacing
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/src/app/styles/layout/_typography.scss:
--------------------------------------------------------------------------------
1 | @import "../../styles/mixins";
2 |
3 | html {
4 | color: $base-font-color;
5 | font-family: $base-font-family;
6 | font-size: 100%;
7 | line-height: $base-line-height;
8 | }
9 |
10 | h1,
11 | h2,
12 | h3,
13 | h4,
14 | h5,
15 | h6 {
16 | font-family: $heading-font-family;
17 | font-size: modular-scale(1);
18 | line-height: $heading-line-height;
19 | margin: 0 0 $small-spacing;
20 | }
21 |
22 | p {
23 | margin: 0 0 $small-spacing;
24 | }
25 |
26 | a {
27 | color: material-color('blue', '500');
28 | text-decoration-skip: ink;
29 | transition: color $base-duration $base-timing;
30 |
31 | &:focus {
32 | outline: none;
33 | outline-offset: none;
34 | }
35 | }
36 |
37 | hr {
38 | border-bottom: $base-border;
39 | border-left: 0;
40 | border-right: 0;
41 | border-top: 0;
42 | margin: $base-spacing 0;
43 | }
44 |
45 |
46 | [textalign="center"]{text-align: center !important}
47 | [textalign="left"]{text-align: left}
48 | [textalign="right"]{text-align: right}
49 | [textalign="justify"]{text-align: justify}
--------------------------------------------------------------------------------
/src/app/styles/layout/_variables.scss:
--------------------------------------------------------------------------------
1 | // Typography
2 | $base-font-family: $font-stack-system;
3 | $heading-font-family: $base-font-family;
4 |
5 | // Line height
6 | $base-line-height: 1.5;
7 | $heading-line-height: 1.2;
8 |
9 | // Other Sizes
10 | $base-border-radius: 3px;
11 | $base-spacing: 1.5em;
12 | $big-spacing: $base-spacing * 2;
13 | $small-spacing: $base-spacing / 2;
14 | $base-z-index: 0;
15 |
16 | // Colors
17 | $white: #FFF;
18 | $grey-light: #F5F5F5;
19 | $grey: #E0E0E0;
20 | $grey-dark: #424242;
21 |
22 | // Font Colors
23 | $base-font-color: $grey-dark;
24 | $action-color: $grey;
25 |
26 | // Border
27 | $base-border-color: $grey;
28 | $base-border: 1px solid $base-border-color;
29 |
30 | // Background Colors
31 | $viewport-background-color: #fff;
32 |
33 | // Focus
34 | $focus-outline-color: transparentize($action-color, 0.4);
35 | $focus-outline-width: 3px;
36 | $focus-outline: $focus-outline-width solid $focus-outline-color;
37 | $focus-outline-offset: 2px;
38 |
39 | // Animations
40 | $base-duration: 150ms;
41 | $base-timing: ease;
42 |
--------------------------------------------------------------------------------
/src/app/styles/mixins.scss:
--------------------------------------------------------------------------------
1 | @import "mixins/bourbon";
2 | @import "mixins/neat";
3 | @import "mixins/pallete";
4 |
--------------------------------------------------------------------------------
/src/app/styles/mixins/bourbon.scss:
--------------------------------------------------------------------------------
1 | @import "node_modules/bourbon/app/assets/stylesheets/_bourbon.scss";
2 |
--------------------------------------------------------------------------------
/src/app/styles/mixins/neat.scss:
--------------------------------------------------------------------------------
1 | @import "node_modules/bourbon-neat/app/assets/stylesheets/_neat.scss";
2 |
--------------------------------------------------------------------------------
/src/app/styles/mixins/pallete.scss:
--------------------------------------------------------------------------------
1 | // See the material colot pallete list here https://material-ui-next.com/style/color/
2 | @import '../../../../node_modules/sass-material-colors/sass/sass-material-colors';
3 |
4 | // Colors
5 | $white: #FFF;
6 | $grey-light: #F5F5F5;
7 | $grey: #E0E0E0;
8 | $grey-dark: #424242;
--------------------------------------------------------------------------------
/src/app/styles/variables.scss:
--------------------------------------------------------------------------------
1 | @import "variables/bitters";
2 | @import "variables/neat";
3 | @import "variables/custom_pallete";
4 |
--------------------------------------------------------------------------------
/src/app/styles/variables/bitters.scss:
--------------------------------------------------------------------------------
1 | $font-stack-system: "Roboto", "Helvetica", "Arial", sans-serif;
2 | $heading-font-family: "Roboto", "Helvetica", "Arial", sans-serif;
3 | $all-buttons: 'button, input[type="button"], input[type="submit"]';
4 | $all-text-inputs: 'input[type="text"], input[type="password"], input[type="email"], input[type="tel"]';
5 |
--------------------------------------------------------------------------------
/src/app/styles/variables/custom_pallete.scss:
--------------------------------------------------------------------------------
1 | @function grey(){
2 | @return material-color('blue-grey', '400');
3 | }
4 |
5 | @function greyLight(){
6 | @return material-color('blue-grey', '200');
7 | }
8 |
9 | @function greyLigther(){
10 | @return material-color('blue-grey', '100');
11 | }
12 |
13 | @function greyDark(){
14 | @return material-color('blue-grey', '600');
15 | }
16 |
17 | @function greyDarker(){
18 | @return material-color('blue-grey', '800');
19 | }
20 |
21 | @function black(){
22 | @return material-color('blue-grey', '900');
23 | }
24 |
25 | @function white(){
26 | @return "#FFFFFF";
27 | }
28 |
29 | @function primaryColor(){
30 | @return material-color('indigo', '900');
31 | }
--------------------------------------------------------------------------------
/src/app/styles/variables/neat.scss:
--------------------------------------------------------------------------------
1 | $border-box-sizing: false;
2 |
--------------------------------------------------------------------------------
/src/app/utils/avatars.js:
--------------------------------------------------------------------------------
1 | const avatars = [
2 | '/images/avatars/pp_girl.svg',
3 | '/images/avatars/pp_girl.svg',
4 | '/images/avatars/pp_girl2.svg',
5 | '/images/avatars/pp_girl3.svg',
6 | '/images/avatars/pp_girl4.svg',
7 | '/images/avatars/pp_girl5.svg',
8 | '/images/avatars/pp_boy.svg',
9 | '/images/avatars/pp_boy2.svg',
10 | '/images/avatars/pp_boy3.svg',
11 | '/images/avatars/pp_boy4.svg',
12 | '/images/avatars/pp_boy5.svg',
13 | ];
14 |
15 | export default avatars;
16 |
--------------------------------------------------------------------------------
/src/app/utils/brand.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | name: 'Boss Lite',
3 | desc: 'Boss Lite - Material Admin Dashboard',
4 | prefix: 'boss',
5 | footerText: 'Boss Lite All Rights Reserved 2018',
6 | logoText: 'Boss Lite',
7 | needLogin: false
8 | };
9 |
--------------------------------------------------------------------------------
/src/app/utils/carouselData.js:
--------------------------------------------------------------------------------
1 | const carouselData = [
2 | {
3 | background: '#E91E63',
4 | title: 'Feature',
5 | desc: 'Vestibulum tempor, sem et molestie egestas, dui tortor laoreet tellus.',
6 | icon: 'flag',
7 | },
8 | {
9 | background: '#0091EA',
10 | title: 'Unlimited',
11 | desc: 'Aliquam nec ex aliquet, aliquam neque non, gravida est.',
12 | icon: 'all_inclusive',
13 | },
14 | {
15 | background: '#00BFA5',
16 | title: 'Complete',
17 | desc: 'Vestibulum bibendum nisi eget magna malesuada',
18 | icon: 'done',
19 | },
20 | {
21 | background: '#F57F17',
22 | title: 'Easy',
23 | desc: 'Vestibulum tempor, sem et molestie egestas, dui tortor laoreet tellus.',
24 | icon: 'extension',
25 | },
26 | {
27 | background: '#7CB342',
28 | title: 'Satisfy',
29 | desc: 'Aliquam nec ex aliquet, aliquam neque non, gravida est.',
30 | icon: 'mood',
31 | },
32 | {
33 | background: '#546E7A',
34 | title: 'Public',
35 | desc: 'Quisque a consequat ante, at volutpat enim. Aenean sit amet magna vel magna',
36 | icon: 'public',
37 | },
38 | {
39 | background: '#00ACC1',
40 | title: 'Awesome',
41 | desc: 'Vestibulum tempor, sem et molestie egestas, dui tortor laoreet tellus.',
42 | icon: 'thumb_up',
43 | },
44 | {
45 | background: '#C51162',
46 | title: 'Safeguard',
47 | desc: 'Quisque a consequat ante, at volutpat enim. Aenean sit amet magna vel magna',
48 | icon: 'lock',
49 | },
50 | {
51 | background: '#7C4DFF',
52 | title: 'Favorite',
53 | desc: ' Aenean facilisis vitae purus facilisis semper.',
54 | icon: 'favorite',
55 | },
56 | ];
57 |
58 | export default carouselData;
59 |
--------------------------------------------------------------------------------
/src/app/utils/chartMiniData.js:
--------------------------------------------------------------------------------
1 | export const data1 = [
2 | {
3 | name: 'Page A',
4 | uv: 4000,
5 | pv: 2400,
6 | amt: 2400
7 | },
8 | {
9 | name: 'Page B',
10 | uv: 3000,
11 | pv: 1398,
12 | amt: 2210
13 | },
14 | {
15 | name: 'Page C',
16 | uv: 2000,
17 | pv: 9800,
18 | amt: 2290
19 | },
20 | {
21 | name: 'Page D',
22 | uv: 2780,
23 | pv: 3908,
24 | amt: 2000
25 | },
26 | {
27 | name: 'Page E',
28 | uv: 1890,
29 | pv: 4800,
30 | amt: 2181
31 | },
32 | ];
33 |
34 | export const data2 = [
35 | {
36 | name: 'Group A',
37 | value: 400
38 | }, {
39 | name: 'Group B',
40 | value: 300
41 | },
42 | {
43 | name: 'Group C',
44 | value: 300
45 | }, {
46 | name: 'Group D',
47 | value: 200
48 | }
49 | ];
50 |
--------------------------------------------------------------------------------
/src/app/utils/connectionData.js:
--------------------------------------------------------------------------------
1 | import imgApi from 'ba-utils/images';
2 | import avatarApi from 'ba-utils/avatars';
3 | const connectionData = [
4 | {
5 | cover: imgApi[41],
6 | avatar: avatarApi[6],
7 | name: 'John Doe',
8 | title: 'UX Designer',
9 | connection: 203,
10 | verified: false
11 | },
12 | {
13 | cover: imgApi[4],
14 | avatar: avatarApi[2],
15 | name: 'Jane Doe',
16 | title: 'Administrator',
17 | connection: 10,
18 | verified: true
19 | },
20 | {
21 | cover: imgApi[42],
22 | avatar: avatarApi[7],
23 | name: 'James Doe',
24 | title: 'Marketing',
25 | connection: 18,
26 | verified: false
27 | },
28 | {
29 | cover: imgApi[8],
30 | avatar: avatarApi[10],
31 | name: 'Mickey Joe',
32 | title: 'Teacher Lecture',
33 | connection: 6,
34 | verified: true
35 | },
36 | {
37 | cover: imgApi[39],
38 | avatar: avatarApi[5],
39 | name: 'Janet Doe',
40 | title: 'UI Designer',
41 | connection: 18,
42 | verified: false
43 | },
44 | {
45 | cover: imgApi[49],
46 | avatar: avatarApi[1],
47 | name: 'Michele Joe',
48 | title: 'Designer',
49 | connection: 100,
50 | verified: true
51 | },
52 | {
53 | cover: imgApi[50],
54 | avatar: avatarApi[9],
55 | name: 'James Doe',
56 | title: 'Programmer',
57 | connection: 20,
58 | verified: true
59 | },
60 | {
61 | cover: imgApi[45],
62 | avatar: avatarApi[8],
63 | name: 'Jimmy Doe',
64 | title: 'Interior Designer',
65 | connection: 1,
66 | verified: false
67 | },
68 | {
69 | cover: imgApi[43],
70 | avatar: avatarApi[3],
71 | name: 'Maya Joe',
72 | title: 'Contributor',
73 | connection: 100,
74 | verified: false
75 | },
76 | ];
77 |
78 | export default connectionData;
79 |
--------------------------------------------------------------------------------
/src/app/utils/dummyContents.js:
--------------------------------------------------------------------------------
1 | import avatarApi from './avatars';
2 | module.exports = {
3 | user: {
4 | name: 'John Doe',
5 | title: 'Administrator',
6 | avatar: avatarApi[6]
7 | },
8 | text: {
9 | title: 'Lorem ipsum',
10 | subtitle: 'Ut a lorem eu odio cursus laoreet.',
11 | sentences: 'Donec lacus sem, scelerisque sed ligula nec, iaculis porttitor mauris.',
12 | paragraph: 'Sed rutrum augue libero, id faucibus quam aliquet sed. Phasellus interdum orci quam, volutpat ornare eros rhoncus sed. Donec vestibulum leo a auctor convallis. In dignissim consectetur molestie. Vivamus interdum tempor dui, nec posuere augue consequat sit amet. Suspendisse quis semper quam. Nullam nec neque sem.',
13 | date: 'Jan 9, 2018'
14 | }
15 | };
16 |
--------------------------------------------------------------------------------
/src/app/utils/imgData.js:
--------------------------------------------------------------------------------
1 | import imgApi from './images';
2 | const imgData = [
3 | {
4 | img: imgApi[3],
5 | thumb: imgApi[3],
6 | title: 'Breakfast',
7 | author: 'jill111',
8 | cols: 2,
9 | featured: true,
10 | },
11 | {
12 | img: imgApi[5],
13 | thumb: imgApi[5],
14 | title: 'Tasty burger',
15 | author: 'director90',
16 | },
17 | {
18 | img: imgApi[33],
19 | thumb: imgApi[33],
20 | title: 'Camera',
21 | author: 'Danson67',
22 | },
23 | {
24 | img: imgApi[35],
25 | thumb: imgApi[35],
26 | title: 'Morning',
27 | author: 'fancycrave1',
28 | featured: true,
29 | },
30 | {
31 | img: imgApi[41],
32 | thumb: imgApi[41],
33 | title: 'Hats',
34 | author: 'Hans',
35 | },
36 | {
37 | img: imgApi[43],
38 | thumb: imgApi[43],
39 | title: 'Honey',
40 | author: 'fancycravel',
41 | },
42 | {
43 | img: imgApi[7],
44 | thumb: imgApi[7],
45 | title: 'Vegetables',
46 | author: 'jill111',
47 | cols: 2,
48 | },
49 | {
50 | img: imgApi[9],
51 | thumb: imgApi[9],
52 | title: 'Water plant',
53 | author: 'BkrmadtyaKarki',
54 | },
55 | {
56 | img: imgApi[17],
57 | thumb: imgApi[17],
58 | title: 'Mushrooms',
59 | author: 'PublicDomainPictures',
60 | },
61 | {
62 | img: imgApi[13],
63 | thumb: imgApi[13],
64 | title: 'Olive oil',
65 | author: 'congerdesign',
66 | },
67 | {
68 | img: imgApi[19],
69 | thumb: imgApi[19],
70 | title: 'Sea star',
71 | cols: 2,
72 | author: '821292',
73 | },
74 | {
75 | img: imgApi[47],
76 | thumb: imgApi[47],
77 | title: 'Bike',
78 | author: 'danfador',
79 | },
80 | ];
81 |
82 | export default imgData;
83 |
--------------------------------------------------------------------------------
/src/app/utils/imgDataMasonry.js:
--------------------------------------------------------------------------------
1 | import imgApi from './images';
2 | const imgData = [
3 | {
4 | img: imgApi[41],
5 | title: 'Breakfast',
6 | author: 'jill111',
7 | },
8 | {
9 | img: imgApi[42],
10 | title: 'Tasty burger',
11 | author: 'director90',
12 | },
13 | {
14 | img: imgApi[50],
15 | title: 'Camera',
16 | author: 'Danson67',
17 | },
18 | {
19 | img: imgApi[39],
20 | title: 'Morning',
21 | author: 'fancycrave1',
22 | featured: true,
23 | },
24 | {
25 | img: imgApi[2],
26 | title: 'Hats',
27 | author: 'Hans',
28 | },
29 | {
30 | img: imgApi[22],
31 | title: 'Honey',
32 | author: 'fancycravel',
33 | },
34 | {
35 | img: imgApi[46],
36 | title: 'Vegetables',
37 | author: 'jill111',
38 | cols: 2,
39 | },
40 | {
41 | img: imgApi[20],
42 | title: 'Water plant',
43 | author: 'BkrmadtyaKarki',
44 | },
45 | {
46 | img: imgApi[10],
47 | title: 'Mushrooms',
48 | author: 'PublicDomainPictures',
49 | },
50 | {
51 | img: imgApi[27],
52 | title: 'Olive oil',
53 | author: 'congerdesign',
54 | },
55 | {
56 | img: imgApi[13],
57 | title: 'Sea star',
58 | cols: 2,
59 | author: '821292',
60 | },
61 | {
62 | img: imgApi[30],
63 | title: 'Bike',
64 | author: 'danfador',
65 | },
66 | ];
67 |
68 | export default imgData;
69 |
--------------------------------------------------------------------------------
/src/app/utils/notifMessage.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | saved: 'Data has been saved',
3 | updated: 'Data has been updated',
4 | removed: 'Item has been removed',
5 | posted: 'Your post has been submitted',
6 | commented: 'Your comment has been submitted',
7 | discard: 'Action canceled',
8 | addCart: 'Item added to cart',
9 | checkout: 'Thank you for shopping',
10 | sent: 'Email sent',
11 | labeled: 'You just changed email label',
12 | };
13 |
--------------------------------------------------------------------------------
/src/app/utils/otherMenu.js:
--------------------------------------------------------------------------------
1 | module.exports = [
2 | {
3 | key: 'settings',
4 | name: 'Settings',
5 | link: '/#'
6 | },
7 | {
8 | key: 'help_support',
9 | name: 'Help & Support',
10 | link: '/#'
11 | },
12 | ];
13 |
--------------------------------------------------------------------------------
/src/app/utils/themePalette.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | magentaTheme: {
3 | palette: {
4 | primary: {
5 | light: '#FCE4EC',
6 | main: '#EC407A',
7 | dark: '#D81B60',
8 | contrastText: '#fff',
9 | },
10 | secondary: {
11 | light: '#E0F7FA',
12 | main: '#00BCD4',
13 | dark: '#0097A7',
14 | contrastText: '#fff',
15 | },
16 | },
17 | },
18 | blueTheme: {
19 | palette: {
20 | primary: {
21 | light: '#E8EAF6',
22 | main: '#3F51B5',
23 | dark: '#283593',
24 | contrastText: '#fff',
25 | },
26 | secondary: {
27 | light: '#B3E5FC',
28 | main: '#03A9F4',
29 | dark: '#0277BD',
30 | contrastText: '#fff',
31 | },
32 | },
33 | },
34 | skyBlueTheme: {
35 | palette: {
36 | primary: {
37 | light: '#E3F2FD',
38 | main: '#2196F3',
39 | dark: '#1565C0',
40 | contrastText: '#fff',
41 | },
42 | secondary: {
43 | light: '#A7FFEB',
44 | main: '#00BFA5',
45 | dark: '#00796B',
46 | contrastText: '#fff',
47 | },
48 | },
49 | }
50 | };
51 |
--------------------------------------------------------------------------------
/src/client/root.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { object, oneOfType, array } from 'prop-types';
3 | import { Provider } from 'react-redux';
4 | import { renderRoutes } from 'react-router-config';
5 | import { ConnectedRouter } from 'react-router-redux';
6 | import {} from './normalize.scss';
7 | import {} from './../app/styles/layout/_base.scss';
8 |
9 | const Root = ({
10 | history,
11 | routes,
12 | store
13 | }) => (
14 |
15 |
16 | {renderRoutes(routes)}
17 |
18 |
19 | );
20 |
21 | Root.propTypes = {
22 | history: object.isRequired,
23 | store: object.isRequired,
24 | routes: oneOfType([
25 | array,
26 | object,
27 | ]).isRequired
28 | };
29 |
30 | export default Root;
31 |
--------------------------------------------------------------------------------
/src/helpers/ApiClient.js:
--------------------------------------------------------------------------------
1 | import axios from 'axios';
2 | import config from './../app/config';
3 |
4 | const methods = ['get', 'post', 'put', 'patch', 'del'];
5 | function formatUrl(path, directUrl = false) {
6 | if (directUrl) return path;
7 | const adjustedPath = path[0] !== '/' ? `/${path}` : path;
8 | if (path.indexOf('http') === 0) {
9 | return path;
10 | }
11 | return config.apiHost + adjustedPath;
12 | }
13 |
14 | class _ApiClient {
15 | constructor() { // we can get an access to req
16 | const _this = this;
17 | methods.forEach((method) => {
18 | _this[method] = (path, {
19 | params,
20 | data,
21 | headers,
22 | attachments,
23 | directUrl,
24 | handleProgress,
25 | } = {}) => {
26 | const requestConfig = {
27 | method,
28 | url: formatUrl(path, directUrl)
29 | };
30 |
31 | if (params) {
32 | requestConfig.params = { ...params };
33 | }
34 |
35 | if (headers) {
36 | requestConfig.headers = { ...headers };
37 | }
38 |
39 | if (attachments) {
40 | if (attachments && typeof attachments === 'object') {
41 | const _data = new FormData();
42 | Object.keys(attachments).forEach((c) => {
43 | _data.append(c, attachments[c]);
44 | });
45 | requestConfig.data = _data;
46 | }
47 | }
48 |
49 | if (data && !attachments) {
50 | requestConfig.data = { ...data };
51 | }
52 |
53 | if (handleProgress) {
54 | requestConfig.onUploadProgress = handleProgress;
55 | }
56 |
57 | return axios(requestConfig);
58 | };
59 | });
60 | }
61 | }
62 |
63 | const ApiClient = _ApiClient;
64 |
65 | export default ApiClient;
66 |
--------------------------------------------------------------------------------
/src/server/env.js:
--------------------------------------------------------------------------------
1 | import dotenv from 'dotenv';
2 |
3 | export default dotenv.config();
4 |
--------------------------------------------------------------------------------
/src/server/rawdocs.js:
--------------------------------------------------------------------------------
1 | import fs from 'fs';
2 |
3 | export default function rawdoc(componentName) {
4 | const dir = 'src/app/';
5 | const content = fs.readFileSync(dir + componentName.src, 'utf8');
6 | return content.toString();
7 | }
8 |
9 |
--------------------------------------------------------------------------------
/src/server/rawicons.js:
--------------------------------------------------------------------------------
1 | import fs from 'fs';
2 |
3 | export default function rawdoc(fileName) {
4 | const dir = 'src/helpers/';
5 | const content = fs.readFileSync(dir + fileName.src, 'utf8');
6 | return content.toString();
7 | }
8 |
--------------------------------------------------------------------------------
/src/server/start.js:
--------------------------------------------------------------------------------
1 | import { server } from 'universal-webpack';
2 | import settings from './../../webpack/universal-webpack-settings.json';
3 | import config from './../../webpack/webpack.config';
4 |
5 | /**
6 | * Define isomorphic constants.
7 | */
8 | global.__CLIENT__ = false;
9 | global.__SERVER__ = true;
10 |
11 | server(config, settings);
12 |
--------------------------------------------------------------------------------
/static/favicons/android-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/favicons/android-icon-144x144.png
--------------------------------------------------------------------------------
/static/favicons/android-icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/favicons/android-icon-192x192.png
--------------------------------------------------------------------------------
/static/favicons/android-icon-36x36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/favicons/android-icon-36x36.png
--------------------------------------------------------------------------------
/static/favicons/android-icon-48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/favicons/android-icon-48x48.png
--------------------------------------------------------------------------------
/static/favicons/android-icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/favicons/android-icon-72x72.png
--------------------------------------------------------------------------------
/static/favicons/android-icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/favicons/android-icon-96x96.png
--------------------------------------------------------------------------------
/static/favicons/apple-icon-114x114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/favicons/apple-icon-114x114.png
--------------------------------------------------------------------------------
/static/favicons/apple-icon-120x120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/favicons/apple-icon-120x120.png
--------------------------------------------------------------------------------
/static/favicons/apple-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/favicons/apple-icon-144x144.png
--------------------------------------------------------------------------------
/static/favicons/apple-icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/favicons/apple-icon-152x152.png
--------------------------------------------------------------------------------
/static/favicons/apple-icon-180x180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/favicons/apple-icon-180x180.png
--------------------------------------------------------------------------------
/static/favicons/apple-icon-57x57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/favicons/apple-icon-57x57.png
--------------------------------------------------------------------------------
/static/favicons/apple-icon-60x60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/favicons/apple-icon-60x60.png
--------------------------------------------------------------------------------
/static/favicons/apple-icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/favicons/apple-icon-72x72.png
--------------------------------------------------------------------------------
/static/favicons/apple-icon-76x76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/favicons/apple-icon-76x76.png
--------------------------------------------------------------------------------
/static/favicons/apple-icon-precomposed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/favicons/apple-icon-precomposed.png
--------------------------------------------------------------------------------
/static/favicons/apple-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/favicons/apple-icon.png
--------------------------------------------------------------------------------
/static/favicons/browserconfig.xml:
--------------------------------------------------------------------------------
1 |
2 | #ffffff
--------------------------------------------------------------------------------
/static/favicons/favicon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/favicons/favicon-16x16.png
--------------------------------------------------------------------------------
/static/favicons/favicon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/favicons/favicon-32x32.png
--------------------------------------------------------------------------------
/static/favicons/favicon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/favicons/favicon-96x96.png
--------------------------------------------------------------------------------
/static/favicons/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/favicons/favicon.ico
--------------------------------------------------------------------------------
/static/favicons/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "App",
3 | "icons": [
4 | {
5 | "src": "\/android-icon-36x36.png",
6 | "sizes": "36x36",
7 | "type": "image\/png",
8 | "density": "0.75"
9 | },
10 | {
11 | "src": "\/android-icon-48x48.png",
12 | "sizes": "48x48",
13 | "type": "image\/png",
14 | "density": "1.0"
15 | },
16 | {
17 | "src": "\/android-icon-72x72.png",
18 | "sizes": "72x72",
19 | "type": "image\/png",
20 | "density": "1.5"
21 | },
22 | {
23 | "src": "\/android-icon-96x96.png",
24 | "sizes": "96x96",
25 | "type": "image\/png",
26 | "density": "2.0"
27 | },
28 | {
29 | "src": "\/android-icon-144x144.png",
30 | "sizes": "144x144",
31 | "type": "image\/png",
32 | "density": "3.0"
33 | },
34 | {
35 | "src": "\/android-icon-192x192.png",
36 | "sizes": "192x192",
37 | "type": "image\/png",
38 | "density": "4.0"
39 | }
40 | ]
41 | }
--------------------------------------------------------------------------------
/static/favicons/ms-icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/favicons/ms-icon-144x144.png
--------------------------------------------------------------------------------
/static/favicons/ms-icon-150x150.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/favicons/ms-icon-150x150.png
--------------------------------------------------------------------------------
/static/favicons/ms-icon-310x310.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/favicons/ms-icon-310x310.png
--------------------------------------------------------------------------------
/static/favicons/ms-icon-70x70.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/favicons/ms-icon-70x70.png
--------------------------------------------------------------------------------
/static/images/avatars/pp_boy.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
--------------------------------------------------------------------------------
/static/images/avatars/pp_girl.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
14 |
--------------------------------------------------------------------------------
/static/images/logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
41 |
--------------------------------------------------------------------------------
/static/images/material_bg.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/static/images/pp_boy.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
--------------------------------------------------------------------------------
/static/images/pp_girl.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
14 |
--------------------------------------------------------------------------------
/static/images/spinner.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/images/spinner.gif
--------------------------------------------------------------------------------
/static/logo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ilhammeidi/boss-lite/f96e950f111ab65e711293e2218731c391cc0a28/static/logo.jpg
--------------------------------------------------------------------------------
/webpack/universal-webpack-settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "server": {
3 | "input": "./src/server/server.js",
4 | "output": "./static/server/server.js"
5 | }
6 | }
--------------------------------------------------------------------------------
/webpack/webpack-dev-server.js:
--------------------------------------------------------------------------------
1 | import Express from 'express';
2 | import webpack from 'webpack';
3 | import webpackDevMiddleware from 'webpack-dev-middleware';
4 | import webpackHotMiddleware from 'webpack-hot-middleware';
5 | import config from './webpack.config.client.development';
6 | import appConfig from '../src/app/config';
7 |
8 | const app = new Express();
9 | const compiler = webpack(config);
10 | const { port } = appConfig.webpack.server;
11 |
12 | const options = {
13 | quiet: true,
14 | noInfo: true,
15 | hot: true,
16 | publicPath: config.output.publicPath,
17 | headers: { 'Access-Control-Allow-Origin': '*' },
18 | stats: { colors: true }
19 | };
20 |
21 | app.use(webpackDevMiddleware(compiler, options));
22 | app.use(webpackHotMiddleware(compiler));
23 |
24 | app.listen(port, (error) => {
25 | if (error) {
26 | console.error(error.stack || error);
27 | throw error;
28 | }
29 |
30 | console.info('Webpack development server listening on port %s', port);
31 | });
32 |
--------------------------------------------------------------------------------
/webpack/webpack.config.client.development.js:
--------------------------------------------------------------------------------
1 | import webpack from 'webpack';
2 | import merge from 'webpack-merge';
3 | import getBaseConfig from './webpack.config.client';
4 | import appConfig from '../src/app/config';
5 |
6 | const { host, port } = appConfig.webpack.server;
7 | const baseConfig = getBaseConfig({
8 | development: true,
9 | css_bundle: true
10 | });
11 |
12 | const config = {
13 | devtool: 'eval',
14 |
15 | performance: { hints: false },
16 |
17 | entry: {
18 | main: [
19 | `webpack-hot-middleware/client?path=${host}:${port}/__webpack_hmr`,
20 | 'react-hot-loader/patch',
21 | baseConfig.entry.main
22 | ]
23 | },
24 |
25 | output: {
26 | publicPath: `${host}:${port}${baseConfig.output.publicPath}`
27 | },
28 |
29 | module: {
30 | rules: [
31 | {
32 | test: /\.js?$/,
33 | exclude: /node_modules/,
34 | loader: 'babel-loader'
35 | }
36 | ]
37 | },
38 |
39 | plugins: [
40 | new webpack.HotModuleReplacementPlugin(),
41 | new webpack.NamedModulesPlugin(),
42 | new webpack.DefinePlugin({
43 | 'process.env': {
44 | NODE_ENV: JSON.stringify('development'),
45 | SSR: process.env.SSR,
46 | SSL: process.env.SSL,
47 | APISSL: process.env.APISSL,
48 | APIHOST: `"${process.env.APIHOST}"`,
49 | APIPORT: process.env.APIPORT,
50 | GOOGLE_ANALITICS_ID: `"${process.env.GOOGLE_ANALITICS_ID}"`
51 | },
52 | __CLIENT__: true,
53 | __SERVER__: false
54 | })
55 | ]
56 | };
57 |
58 | export default merge(baseConfig, config);
59 |
--------------------------------------------------------------------------------
/webpack/webpack.config.client.js:
--------------------------------------------------------------------------------
1 | import { clientConfiguration } from 'universal-webpack';
2 | import settings from './universal-webpack-settings.json';
3 | import config from './webpack.config';
4 |
5 | export default function (options) {
6 | return clientConfiguration(config, settings, options);
7 | }
8 |
--------------------------------------------------------------------------------
/webpack/webpack.config.server.development.babel.js:
--------------------------------------------------------------------------------
1 | import cloneDeep from 'lodash/cloneDeep';
2 | import baseConfig from './webpack.config.server';
3 | import appConfig from '../src/app/config';
4 |
5 | const { host, port } = appConfig.webpack.server;
6 | const config = cloneDeep(baseConfig);
7 |
8 | config.output.publicPath = `${host}:${port}${config.output.publicPath}`;
9 |
10 | export default config;
11 |
--------------------------------------------------------------------------------
/webpack/webpack.config.server.js:
--------------------------------------------------------------------------------
1 | import { serverConfiguration } from 'universal-webpack';
2 | import settings from './universal-webpack-settings.json';
3 | import config from './webpack.config';
4 |
5 | export default serverConfiguration(config, settings);
6 |
--------------------------------------------------------------------------------
/webpack/webpack.config.server.production.babel.js:
--------------------------------------------------------------------------------
1 | import baseConfiguration from './webpack.config.server';
2 | export default baseConfiguration;
3 |
--------------------------------------------------------------------------------