├── .babelrc
├── .eslintignore
├── .eslintrc
├── .gitignore
├── LICENSE
├── README.md
├── __mocks__
├── fileMock.js
└── styleMock.js
├── __tests__
├── __snapshots__
│ └── snapshotTests.js.snap
└── snapshotTests.js
├── circle.yml
├── docs
├── README.md
├── js_patterns.md
├── open_dash.png
├── react_patterns.md
├── react_style_guide.md
└── syncano_patterns.md
├── jest.json
├── nightwatch.conf.js
├── nightwatch.json
├── package-lock.json
├── package.json
├── s3ListKeys.js
├── snapshotTestConfig.js
├── src
├── Root.js
├── app.js
├── app.sass
├── apps
│ ├── Account
│ │ ├── AccountActivate.jsx
│ │ ├── AccountContainer.jsx
│ │ ├── AccountContainer.sass
│ │ ├── AccountLogin.jsx
│ │ ├── AccountPasswordReset.jsx
│ │ ├── AccountPasswordResetConfirm.jsx
│ │ ├── AccountPasswordUpdate.jsx
│ │ ├── AccountSignup.jsx
│ │ ├── AuthActions.js
│ │ ├── AuthConstants.js
│ │ ├── AuthStore.js
│ │ ├── Hello.js
│ │ ├── auth.js
│ │ └── index.js
│ ├── Admins
│ │ ├── AdminDialog.jsx
│ │ ├── AdminDialogStore.js
│ │ ├── Admins.jsx
│ │ ├── AdminsActions.js
│ │ ├── AdminsInvitationsActions.js
│ │ ├── AdminsInvitationsList.jsx
│ │ ├── AdminsInvitationsListItem.jsx
│ │ ├── AdminsInvitationsStore.js
│ │ ├── AdminsList.jsx
│ │ ├── AdminsListItem.jsx
│ │ ├── AdminsStore.js
│ │ └── index.js
│ ├── ApiKeys
│ │ ├── ApiKeyDialog.jsx
│ │ ├── ApiKeyDialogStore.js
│ │ ├── ApiKeys.jsx
│ │ ├── ApiKeysActions.js
│ │ ├── ApiKeysList.jsx
│ │ ├── ApiKeysListItem.jsx
│ │ ├── ApiKeysStore.js
│ │ └── index.js
│ ├── Channels
│ │ ├── ChannelsActions.js
│ │ ├── ChannelsStore.js
│ │ └── index.js
│ ├── Classes
│ │ ├── Classes.jsx
│ │ ├── ClassesActions.js
│ │ ├── ClassesList.jsx
│ │ ├── ClassesListItem.jsx
│ │ ├── ClassesStore.js
│ │ └── index.js
│ ├── CustomSockets
│ │ ├── CustomSockets.js
│ │ ├── CustomSocketsActions.js
│ │ ├── CustomSocketsEndpoints.js
│ │ ├── CustomSocketsEndpointsActions.js
│ │ ├── CustomSocketsEndpointsList.js
│ │ ├── CustomSocketsEndpointsListItem.js
│ │ ├── CustomSocketsEndpointsStore.js
│ │ ├── CustomSocketsList.js
│ │ ├── CustomSocketsListItem.js
│ │ ├── CustomSocketsStore.js
│ │ └── index.js
│ ├── DataObjects
│ │ ├── CheckAvatar.jsx
│ │ ├── DataObjectDialog.jsx
│ │ ├── DataObjectDialogStore.js
│ │ ├── DataObjectSearchForm.js
│ │ ├── DataObjects.jsx
│ │ ├── DataObjectsActions.js
│ │ ├── DataObjectsStore.js
│ │ ├── DataObjectsTable
│ │ │ ├── ColumnsFilterMenu.js
│ │ │ ├── ColumnsFilterMenuListItem.js
│ │ │ ├── DataObjectsTable.js
│ │ │ ├── DataObjectsTableCell.js
│ │ │ ├── DataObjectsTableDateCell.js
│ │ │ ├── DataObjectsTableFileCell.js
│ │ │ ├── DataObjectsTableJSONCell.js
│ │ │ ├── DataObjectsTableReferenceCell.js
│ │ │ ├── DataObjectsTableTextCell.js
│ │ │ └── index.js
│ │ ├── DataObjectsTableInitialColumns.js
│ │ ├── ReadOnlyTooltip.js
│ │ └── index.js
│ ├── GlobalConfig
│ │ ├── GlobalConfigDialog.js
│ │ ├── GlobalConfigDialogActions.js
│ │ ├── GlobalConfigDialogStore.js
│ │ └── index.js
│ ├── Groups
│ │ ├── GroupDialog.jsx
│ │ ├── GroupDialogStore.js
│ │ ├── GroupSummary.js
│ │ ├── GroupsActions.js
│ │ ├── GroupsDropdown.js
│ │ ├── GroupsList.jsx
│ │ ├── GroupsListItem.jsx
│ │ ├── GroupsStore.js
│ │ └── index.js
│ ├── Hosting
│ │ ├── DotsListItem.js
│ │ ├── Files.js
│ │ ├── Hosting.js
│ │ ├── HostingActions.js
│ │ ├── HostingFilesActions.js
│ │ ├── HostingFilesEmptyView.js
│ │ ├── HostingFilesFolderForm.js
│ │ ├── HostingFilesList.js
│ │ ├── HostingFilesListItem.js
│ │ ├── HostingFilesStore.js
│ │ ├── HostingList.js
│ │ ├── HostingListItem.js
│ │ ├── HostingListItemLinks.js
│ │ ├── HostingPublishDialog.js
│ │ ├── HostingPublishDialogActions.js
│ │ ├── HostingPublishDialogStore.js
│ │ ├── HostingStore.js
│ │ ├── HostingUploadDialog.js
│ │ ├── HostingUploadDialogActions.js
│ │ ├── HostingUploadDialogStore.js
│ │ ├── UploadFilesButton.js
│ │ └── index.js
│ ├── Instances
│ │ ├── InstanceDialog.jsx
│ │ ├── InstanceDialogActions.js
│ │ ├── InstanceDialogStore.js
│ │ ├── InstanceEdit.jsx
│ │ ├── Instances.jsx
│ │ ├── Instances.sass
│ │ ├── InstancesActions.js
│ │ ├── InstancesList.jsx
│ │ ├── InstancesListItem.jsx
│ │ ├── InstancesStore.js
│ │ ├── SharedInstancesList.jsx
│ │ └── index.js
│ ├── Profile
│ │ ├── ProfileActions.js
│ │ ├── ProfileAuthentication.jsx
│ │ ├── ProfileAuthenticationStore.js
│ │ ├── ProfileBillingAddress.jsx
│ │ ├── ProfileBillingAddressStore.js
│ │ ├── ProfileBillingChart.css
│ │ ├── ProfileBillingChart.js
│ │ ├── ProfileBillingChartActions.js
│ │ ├── ProfileBillingChartStore.js
│ │ ├── ProfileBillingInvoices.jsx
│ │ ├── ProfileBillingInvoicesStore.js
│ │ ├── ProfileBillingPayment.jsx
│ │ ├── ProfileBillingPaymentStore.js
│ │ ├── ProfileBillingPlan.jsx
│ │ ├── ProfileBillingPlanActions.js
│ │ ├── ProfileBillingPlanCancel.js
│ │ ├── ProfileBillingPlanCancelForm.js
│ │ ├── ProfileBillingPlanDialog.jsx
│ │ ├── ProfileBillingPlanDialogActions.js
│ │ ├── ProfileBillingPlanDialogStore.js
│ │ ├── ProfileBillingPlanReceiptDialog.jsx
│ │ ├── ProfileBillingPlanReceiptDialogActions.js
│ │ ├── ProfileBillingPlanReceiptDialogStore.js
│ │ ├── ProfileBillingPlanStore.js
│ │ ├── ProfileSettings.jsx
│ │ ├── ProfileSettingsStore.js
│ │ └── index.js
│ ├── ProfileInvitations
│ │ ├── ProfileInvitations.js
│ │ ├── ProfileInvitationsActions.js
│ │ ├── ProfileInvitationsList.js
│ │ ├── ProfileInvitationsListItem.js
│ │ ├── ProfileInvitationsStore.js
│ │ └── index.js
│ ├── Session
│ │ ├── NewLibConnection.js
│ │ ├── SessionActions.js
│ │ ├── SessionStore.js
│ │ └── index.js
│ ├── SnackbarNotification
│ │ ├── SnackbarNotification.jsx
│ │ ├── SnackbarNotificationActions.js
│ │ ├── SnackbarNotificationStore.js
│ │ └── index.js
│ ├── Sockets
│ │ ├── DetailsView
│ │ │ ├── SocketAuthorInfo.js
│ │ │ ├── SocketCodeExample.js
│ │ │ ├── SocketDependenciesList.js
│ │ │ ├── SocketDetailContentSection.js
│ │ │ ├── SocketDetailInfoBar.js
│ │ │ ├── SocketDetailsView.js
│ │ │ ├── SocketMethodDescription.js
│ │ │ └── SocketParametersList.js
│ │ ├── Sockets.jsx
│ │ ├── SocketsActions.js
│ │ ├── SocketsDialog.js
│ │ ├── SocketsDialogSidebar.js
│ │ ├── SocketsDialogStore.js
│ │ ├── SocketsList.js
│ │ ├── SocketsListItem.js
│ │ ├── SocketsStore.js
│ │ ├── SocketsSummary.js
│ │ └── index.js
│ ├── SocketsRegistry
│ │ ├── DetailsView
│ │ │ ├── SocketAuthorInfo.js
│ │ │ ├── SocketCodeExample.js
│ │ │ ├── SocketDependenciesList.js
│ │ │ ├── SocketDetailContentSection.js
│ │ │ ├── SocketDetailInfoBar.js
│ │ │ ├── SocketDetailsView.js
│ │ │ ├── SocketMethodDescription.js
│ │ │ └── SocketParametersList.js
│ │ ├── SocketsRegistry.js
│ │ ├── SocketsRegistryActions.js
│ │ ├── SocketsRegistryDialogSidebar.js
│ │ ├── SocketsRegistryDialogStore.js
│ │ ├── SocketsRegistryInnerToolbar.js
│ │ ├── SocketsRegistryList.js
│ │ ├── SocketsRegistryListItem.js
│ │ ├── SocketsRegistryStore.js
│ │ ├── SocketsRegistrySummary.js
│ │ ├── SocketsSearchBar.js
│ │ └── index.js
│ ├── Syncano
│ │ ├── Actions
│ │ │ ├── Account.js
│ │ │ ├── AccountInvitations.js
│ │ │ ├── Admins.js
│ │ │ ├── ApiKeys.js
│ │ │ ├── Billing.js
│ │ │ ├── Channels.js
│ │ │ ├── Classes.js
│ │ │ ├── CustomSockets.js
│ │ │ ├── DataEndpoints.js
│ │ │ ├── DataObjects.js
│ │ │ ├── GlobalConfig.js
│ │ │ ├── Groups.js
│ │ │ ├── Hosting.js
│ │ │ ├── Instances.js
│ │ │ ├── Invitations.js
│ │ │ ├── Profile.js
│ │ │ ├── PushDevices.js
│ │ │ ├── PushNotifications.js
│ │ │ ├── Sockets.js
│ │ │ ├── SocketsRegistry.js
│ │ │ ├── Usage.js
│ │ │ ├── Users.js
│ │ │ └── index.js
│ │ └── index.js
│ ├── Traces
│ │ ├── Traces.jsx
│ │ ├── TracesActions.js
│ │ ├── TracesEmptyView.js
│ │ ├── TracesList.jsx
│ │ ├── TracesListItem.js
│ │ ├── TracesStore.js
│ │ └── index.js
│ ├── Usage
│ │ ├── Usage.js
│ │ ├── UsageChart.js
│ │ └── index.js
│ ├── Users
│ │ ├── UserDialog.jsx
│ │ ├── UserDialogStore.js
│ │ ├── UserInfo.jsx
│ │ ├── Users.jsx
│ │ ├── UsersActions.js
│ │ ├── UsersList.jsx
│ │ ├── UsersListItem.jsx
│ │ ├── UsersStore.js
│ │ └── index.js
│ └── index.js
├── assets
│ ├── fonts
│ │ ├── avenir
│ │ │ ├── 0078f486-8e52-42c0-ad81-3c8d3d43f48e.woff2
│ │ │ ├── 04801919-17ee-4c6b-8b17-eb1965cb3ed6.woff
│ │ │ ├── 04d1bf6c-070d-4b7e-9498-6051c9f0c349.ttf
│ │ │ ├── 065a6b14-b2cc-446e-9428-271c570df0d9.woff2
│ │ │ ├── 0979215b-3a1b-4356-9c76-e90fa4551f1d.svg
│ │ │ ├── 15281d0d-e3c2-46e1-94db-cb681e00bfaa.svg
│ │ │ ├── 17b90ef5-b63f-457b-a981-503bb7afe3c0.woff2
│ │ │ ├── 19d12bba-92b1-43ad-9bab-cd36a4195c2a.woff
│ │ │ ├── 1a7173fa-062b-49ad-9915-bc57d3bfc1f5.woff2
│ │ │ ├── 1e9b2738-9316-4b0c-97c0-5423b69ea147.eot
│ │ │ ├── 20577853-40a7-4ada-a3fb-dd6e9392f401.svg
│ │ │ ├── 2315df7a-8bc2-433d-bf0a-162fc0063de0.ttf
│ │ │ ├── 25f994de-d13f-4a5d-a82b-bf925a1e054d.ttf
│ │ │ ├── 33fac8ae-e7a5-4903-9ac1-c09a59b4c61d.svg
│ │ │ ├── 3604edbd-784e-4ca7-b978-18836469c62d.svg
│ │ │ ├── 38a556e4-b6e5-48c6-aece-b1d470af124e.svg
│ │ │ ├── 3c210c80-960f-4684-850b-25390b4d08af.woff2
│ │ │ ├── 4030caeb-d266-4d36-ac58-a3bb7a5b1bfa.eot
│ │ │ ├── 4577388c-510f-4366-addb-8b663bcc762a.ttf
│ │ │ ├── 476612d9-282d-4f76-95cd-b4dd31e7ed21.woff2
│ │ │ ├── 4b978f72-bb48-46c3-909a-2a8cd2f8819c.woff
│ │ │ ├── 57bf7902-79ee-4b31-a327-1bbf59a3d155.eot
│ │ │ ├── 5ba5a010-7470-4d9d-8a49-2920dc1be1f8.ttf
│ │ │ ├── 61bd362e-7162-46bd-b67e-28f366c4afbe.woff
│ │ │ ├── 63a166cb-be60-435c-a056-75172e43efa5.eot
│ │ │ ├── 65d75eb0-2601-4da5-a9a4-9ee67a470a59.woff
│ │ │ ├── 6af9989e-235b-4c75-8c08-a83bdaef3f66.eot
│ │ │ ├── 6d1ce413-19e7-4b43-b328-6cdedc58b35a.ttf
│ │ │ ├── 6d4a6a8c-ef50-422f-8456-88d479e0b23d.svg
│ │ │ ├── 6dc0e7d8-9284-44e1-8f05-984a41daa3a4.woff
│ │ │ ├── 710789a0-1557-48a1-8cec-03d52d663d74.eot
│ │ │ ├── 75b36c58-2a02-4057-a537-09af0832ae46.woff
│ │ │ ├── 7b1e5b2a-b6a6-43da-9021-ada6d1d797f2.svg
│ │ │ ├── 908c4810-64db-4b46-bb8e-823eb41f68c0.woff
│ │ │ ├── 93603a74-2be0-436c-83e1-68f9ef616eaf.svg
│ │ │ ├── 9bdf0737-f98c-477a-9365-ffc41b9d1285.ttf
│ │ │ ├── 9ced8e96-4602-4507-8c20-4ff381949a9a.ttf
│ │ │ ├── a2477e08-09d9-4d4b-97a9-23a1e22cb44c.woff2
│ │ │ ├── a59168c1-917d-4de9-a244-0316c057c357.woff2
│ │ │ ├── a7c1d112-7546-459d-a153-1467481298bd.svg
│ │ │ ├── avenir.css
│ │ │ ├── b0268c31-e450-4159-bfea-e0d20e2b5c0c.svg
│ │ │ ├── b290e775-e0f9-4980-914b-a4c32a5e3e36.woff2
│ │ │ ├── b5c44a82-eeb8-41de-9c3f-a8db50b24b8a.ttf
│ │ │ ├── c70e90bc-3c94-41dc-bf14-caa727c76301.ttf
│ │ │ ├── c78eb7af-a1c8-4892-974b-52379646fef4.woff2
│ │ │ ├── c9aeeabd-dd65-491d-b4be-3e0db9ae47a0.woff
│ │ │ ├── cb5c71ad-e582-4d00-929c-67fbfaeb1c27.woff
│ │ │ ├── ccd17c6b-e7ed-4b73-b0d2-76712a4ef46b.ttf
│ │ │ ├── cdda031e-26e9-4269-83d1-5a218caa10db.woff
│ │ │ ├── cebcf56a-ea7e-4f5c-8110-a7ee367c1f91.eot
│ │ │ ├── cee053ec-4b41-4506-a1fe-796261690610.ttf
│ │ │ ├── d0a3e813-1257-4b66-812a-36101faa0fb3.svg
│ │ │ ├── d513e15e-8f35-4129-ad05-481815e52625.woff2
│ │ │ ├── d8c50fcc-bc32-4f31-8c24-b170c64e2254.eot
│ │ │ ├── deb5e718-7abb-4df3-9365-edfa95317090.woff2
│ │ │ ├── e0542193-b2e6-4273-bc45-39d4dfd3c15b.eot
│ │ │ ├── e6b412d9-d1ed-4b17-bb93-a6911df8640d.eot
│ │ │ ├── edefe737-dc78-4aa3-ad03-3c6f908330ed.eot
│ │ │ ├── f1ebae2b-5296-4244-8771-5f40e60a564a.woff
│ │ │ └── f55e4498-ad48-4577-93a0-c614de5cbbb8.eot
│ │ └── icons
│ │ │ ├── Syncano-Icons.css
│ │ │ ├── Syncano-Icons.css.njk
│ │ │ ├── Syncano-Icons.eot
│ │ │ ├── Syncano-Icons.svg
│ │ │ ├── Syncano-Icons.ttf
│ │ │ ├── Syncano-Icons.woff
│ │ │ └── Syncano-Icons.woff2
│ ├── icons
│ │ ├── account-alert.svg
│ │ ├── account-box-outline.svg
│ │ ├── account-box.svg
│ │ ├── account-check.svg
│ │ ├── account-circle.svg
│ │ ├── account-key.svg
│ │ ├── account-location.svg
│ │ ├── account-minus.svg
│ │ ├── account-multiple-outline.svg
│ │ ├── account-multiple-plus.svg
│ │ ├── account-multiple.svg
│ │ ├── account-network.svg
│ │ ├── account-outline.svg
│ │ ├── account-plus.svg
│ │ ├── account-remove.svg
│ │ ├── account-search.svg
│ │ ├── account-star-variant.svg
│ │ ├── account-switch.svg
│ │ ├── account.svg
│ │ ├── airballoon.svg
│ │ ├── airplane-off.svg
│ │ ├── airplane.svg
│ │ ├── alarm-check.svg
│ │ ├── alarm-multiple.svg
│ │ ├── alarm-off.svg
│ │ ├── alarm-plus.svg
│ │ ├── alarm.svg
│ │ ├── album.svg
│ │ ├── alert-box.svg
│ │ ├── alert-circle-outline.svg
│ │ ├── alert-circle.svg
│ │ ├── alert-octagon.svg
│ │ ├── alert.svg
│ │ ├── alpha.svg
│ │ ├── alphabetical.svg
│ │ ├── amazon-clouddrive.svg
│ │ ├── amazon.svg
│ │ ├── ambulance.svg
│ │ ├── android-debug-bridge.svg
│ │ ├── android-studio.svg
│ │ ├── android.svg
│ │ ├── apple-finder.svg
│ │ ├── apple-mobileme.svg
│ │ ├── apple-safari.svg
│ │ ├── apple.svg
│ │ ├── appnet.svg
│ │ ├── apps.svg
│ │ ├── archive.svg
│ │ ├── arrange-bring-forward.svg
│ │ ├── arrange-bring-to-front.svg
│ │ ├── arrange-send-backward.svg
│ │ ├── arrange-send-to-back.svg
│ │ ├── arrow-all.svg
│ │ ├── arrow-collapse.svg
│ │ ├── arrow-down-bold-circle-outline.svg
│ │ ├── arrow-down-bold-circle.svg
│ │ ├── arrow-down-bold-hexagon-outline.svg
│ │ ├── arrow-down-bold.svg
│ │ ├── arrow-down.svg
│ │ ├── arrow-expand.svg
│ │ ├── arrow-left-bold-circle-outline.svg
│ │ ├── arrow-left-bold-circle.svg
│ │ ├── arrow-left-bold-hexagon-outline.svg
│ │ ├── arrow-left-bold.svg
│ │ ├── arrow-left-drop-circle-outline.svg
│ │ ├── arrow-left.svg
│ │ ├── arrow-right-bold-circle-outline.svg
│ │ ├── arrow-right-bold-circle.svg
│ │ ├── arrow-right-bold-hexagon-outline.svg
│ │ ├── arrow-right-bold.svg
│ │ ├── arrow-right-drop-circle-outline.svg
│ │ ├── arrow-right.svg
│ │ ├── arrow-up-bold-circle-outline.svg
│ │ ├── arrow-up-bold-circle.svg
│ │ ├── arrow-up-bold-hexagon-outline.svg
│ │ ├── arrow-up-bold.svg
│ │ ├── arrow-up.svg
│ │ ├── at.svg
│ │ ├── attachment.svg
│ │ ├── auto-fix.svg
│ │ ├── auto-upload.svg
│ │ ├── backup-restore.svg
│ │ ├── bank.svg
│ │ ├── barcode.svg
│ │ ├── barley.svg
│ │ ├── barrel.svg
│ │ ├── basecamp.svg
│ │ ├── basket-fill.svg
│ │ ├── basket-unfill.svg
│ │ ├── basket.svg
│ │ ├── battery-20.svg
│ │ ├── battery-30.svg
│ │ ├── battery-40.svg
│ │ ├── battery-60.svg
│ │ ├── battery-80.svg
│ │ ├── battery-90.svg
│ │ ├── battery-alert.svg
│ │ ├── battery-charging-100.svg
│ │ ├── battery-charging-20.svg
│ │ ├── battery-charging-30.svg
│ │ ├── battery-charging-40.svg
│ │ ├── battery-charging-60.svg
│ │ ├── battery-charging-80.svg
│ │ ├── battery-charging-90.svg
│ │ ├── battery-minus.svg
│ │ ├── battery-negative.svg
│ │ ├── battery-outline.svg
│ │ ├── battery-plus.svg
│ │ ├── battery-positive.svg
│ │ ├── battery-standard.svg
│ │ ├── battery-unknown.svg
│ │ ├── battery.svg
│ │ ├── beach.svg
│ │ ├── beaker-empty-outline.svg
│ │ ├── beaker-empty.svg
│ │ ├── beaker-outline.svg
│ │ ├── beaker.svg
│ │ ├── beats.svg
│ │ ├── beer.svg
│ │ ├── behance.svg
│ │ ├── bell-off.svg
│ │ ├── bell-outline.svg
│ │ ├── bell-ring-outline.svg
│ │ ├── bell-ring.svg
│ │ ├── bell-sleep.svg
│ │ ├── bell.svg
│ │ ├── beta.svg
│ │ ├── bike.svg
│ │ ├── bing.svg
│ │ ├── bio.svg
│ │ ├── black-mesa.svg
│ │ ├── blackberry.svg
│ │ ├── blinds.svg
│ │ ├── block-helper.svg
│ │ ├── blogger.svg
│ │ ├── bluetooth-audio.svg
│ │ ├── bluetooth-connect.svg
│ │ ├── bluetooth-settings.svg
│ │ ├── bluetooth.svg
│ │ ├── blur-linear.svg
│ │ ├── blur-off.svg
│ │ ├── blur-radial.svg
│ │ ├── blur.svg
│ │ ├── bone.svg
│ │ ├── book-multiple-variant.svg
│ │ ├── book-multiple.svg
│ │ ├── book-open-page-variant.svg
│ │ ├── book-open.svg
│ │ ├── book-variant.svg
│ │ ├── book.svg
│ │ ├── bookmark-check.svg
│ │ ├── bookmark-outline-plus.svg
│ │ ├── bookmark-outline.svg
│ │ ├── bookmark-plus.svg
│ │ ├── bookmark-remove.svg
│ │ ├── bookmark.svg
│ │ ├── border-all.svg
│ │ ├── border-bottom.svg
│ │ ├── border-color.svg
│ │ ├── border-horizontal.svg
│ │ ├── border-inside.svg
│ │ ├── border-left.svg
│ │ ├── border-none.svg
│ │ ├── border-outside.svg
│ │ ├── border-right.svg
│ │ ├── border-top.svg
│ │ ├── border-vertical.svg
│ │ ├── bowling.svg
│ │ ├── box-download.svg
│ │ ├── box-upload.svg
│ │ ├── box.svg
│ │ ├── briefcase-checked.svg
│ │ ├── briefcase-download.svg
│ │ ├── briefcase-upload.svg
│ │ ├── briefcase.svg
│ │ ├── brightness-1.svg
│ │ ├── brightness-2.svg
│ │ ├── brightness-3.svg
│ │ ├── brightness-4.svg
│ │ ├── brightness-5.svg
│ │ ├── brightness-6.svg
│ │ ├── brightness-7.svg
│ │ ├── brightness-auto.svg
│ │ ├── brightness.svg
│ │ ├── broom.svg
│ │ ├── brush.svg
│ │ ├── bug.svg
│ │ ├── bullhorn.svg
│ │ ├── bus.svg
│ │ ├── cake-variant.svg
│ │ ├── cake.svg
│ │ ├── calculator.svg
│ │ ├── calendar-blank.svg
│ │ ├── calendar-check-multiple.svg
│ │ ├── calendar-check.svg
│ │ ├── calendar-clock.svg
│ │ ├── calendar-multiple.svg
│ │ ├── calendar-plus.svg
│ │ ├── calendar-remove.svg
│ │ ├── calendar-select.svg
│ │ ├── calendar-text.svg
│ │ ├── calendar-today.svg
│ │ ├── calendar.svg
│ │ ├── camcorder-box-off.svg
│ │ ├── camcorder-box.svg
│ │ ├── camcorder-off.svg
│ │ ├── camcorder.svg
│ │ ├── camera-iris.svg
│ │ ├── camera-party-mode.svg
│ │ ├── camera-switch.svg
│ │ ├── camera-timer.svg
│ │ ├── camera.svg
│ │ ├── cancel.svg
│ │ ├── candycane.svg
│ │ ├── car-wash.svg
│ │ ├── car.svg
│ │ ├── carrot.svg
│ │ ├── cart-outline.svg
│ │ ├── cart.svg
│ │ ├── cash-multiple.svg
│ │ ├── cash-usd.svg
│ │ ├── cash.svg
│ │ ├── cast-connected.svg
│ │ ├── cast.svg
│ │ ├── castle.svg
│ │ ├── cellphone-android.svg
│ │ ├── cellphone-dock.svg
│ │ ├── cellphone-iphone.svg
│ │ ├── cellphone-link-off.svg
│ │ ├── cellphone-link.svg
│ │ ├── cellphone-settings.svg
│ │ ├── cellphone.svg
│ │ ├── certificate.svg
│ │ ├── chair-school.svg
│ │ ├── chart-arc.svg
│ │ ├── chart-bar.svg
│ │ ├── chart-histogram.svg
│ │ ├── chart-line.svg
│ │ ├── chart-pie.svg
│ │ ├── check-all.svg
│ │ ├── check-bookmark.svg
│ │ ├── check-circle.svg
│ │ ├── check.svg
│ │ ├── checkbox-blank-circle-outline.svg
│ │ ├── checkbox-blank-circle.svg
│ │ ├── checkbox-blank-outline.svg
│ │ ├── checkbox-blank.svg
│ │ ├── checkbox-marked-circle-outline.svg
│ │ ├── checkbox-marked-circle.svg
│ │ ├── checkbox-marked-outline.svg
│ │ ├── checkbox-marked.svg
│ │ ├── checkbox-multiple-blank-outline.svg
│ │ ├── checkbox-multiple-blank.svg
│ │ ├── checkbox-multiple-marked-outline.svg
│ │ ├── checkbox-multiple-marked.svg
│ │ ├── checkerboard.svg
│ │ ├── chevron-double-down.svg
│ │ ├── chevron-double-left.svg
│ │ ├── chevron-double-right.svg
│ │ ├── chevron-double-up.svg
│ │ ├── chevron-down.svg
│ │ ├── chevron-left.svg
│ │ ├── chevron-right.svg
│ │ ├── chevron-up.svg
│ │ ├── church.svg
│ │ ├── circle-checkbox-blank.svg
│ │ ├── circle-checkbox-marked.svg
│ │ ├── cisco-webex.svg
│ │ ├── city.svg
│ │ ├── clapperboard.svg
│ │ ├── clipboard-account.svg
│ │ ├── clipboard-alert.svg
│ │ ├── clipboard-arrow-down.svg
│ │ ├── clipboard-arrow-left.svg
│ │ ├── clipboard-check.svg
│ │ ├── clipboard-outline.svg
│ │ ├── clipboard-text.svg
│ │ ├── clipboard.svg
│ │ ├── clippy.svg
│ │ ├── clock-fast.svg
│ │ ├── clock.svg
│ │ ├── close-box-outline.svg
│ │ ├── close-circle-outline.svg
│ │ ├── close-circle.svg
│ │ ├── close-network.svg
│ │ ├── close.svg
│ │ ├── closed-caption.svg
│ │ ├── cloud-check.svg
│ │ ├── cloud-circle.svg
│ │ ├── cloud-download.svg
│ │ ├── cloud-outline-off.svg
│ │ ├── cloud-outline.svg
│ │ ├── cloud-upload.svg
│ │ ├── cloud.svg
│ │ ├── code-array.svg
│ │ ├── code-braces.svg
│ │ ├── code-string.svg
│ │ ├── code-tags.svg
│ │ ├── coffee-to-go.svg
│ │ ├── coffee.svg
│ │ ├── cog-box.svg
│ │ ├── cog.svg
│ │ ├── coin.svg
│ │ ├── color-helper.svg
│ │ ├── comment-account-outline.svg
│ │ ├── comment-account.svg
│ │ ├── comment-alert-outline.svg
│ │ ├── comment-alert.svg
│ │ ├── comment-check-outline.svg
│ │ ├── comment-check.svg
│ │ ├── comment-multipe-outline.svg
│ │ ├── comment-outline.svg
│ │ ├── comment-plus-outline.svg
│ │ ├── comment-processing-outline.svg
│ │ ├── comment-processing.svg
│ │ ├── comment-remove-outline.svg
│ │ ├── comment-text-outline.svg
│ │ ├── comment-text.svg
│ │ ├── comment.svg
│ │ ├── compare.svg
│ │ ├── compass-outline.svg
│ │ ├── compass.svg
│ │ ├── console.svg
│ │ ├── content-copy.svg
│ │ ├── content-cut.svg
│ │ ├── content-paste.svg
│ │ ├── content-save-all.svg
│ │ ├── content-save.svg
│ │ ├── contrast-box.svg
│ │ ├── contrast-circle.svg
│ │ ├── contrast.svg
│ │ ├── controller-xbox.svg
│ │ ├── cow.svg
│ │ ├── credit-card-multiple.svg
│ │ ├── credit-card.svg
│ │ ├── crop-free.svg
│ │ ├── crop-landscape.svg
│ │ ├── crop-portrait.svg
│ │ ├── crop-square.svg
│ │ ├── crop.svg
│ │ ├── crosshairs-gps.svg
│ │ ├── crosshairs.svg
│ │ ├── cube-outline.svg
│ │ ├── cube-unfolded.svg
│ │ ├── cube.svg
│ │ ├── cup-water.svg
│ │ ├── cup.svg
│ │ ├── currency-btc.svg
│ │ ├── currency-eur.svg
│ │ ├── currency-gbp.svg
│ │ ├── currency-try.svg
│ │ ├── currency-usd.svg
│ │ ├── cursor-default-outline.svg
│ │ ├── cursor-default.svg
│ │ ├── cursor-move.svg
│ │ ├── cursor-pointer.svg
│ │ ├── custom-socket.svg
│ │ ├── data.svg
│ │ ├── debug-step-into.svg
│ │ ├── debug-step-out.svg
│ │ ├── debug-step-over.svg
│ │ ├── delete-variant.svg
│ │ ├── delete.svg
│ │ ├── deskphone.svg
│ │ ├── desktop-mac.svg
│ │ ├── desktop-tower.svg
│ │ ├── details.svg
│ │ ├── deviantart.svg
│ │ ├── dice-1.svg
│ │ ├── dice-2.svg
│ │ ├── dice-3.svg
│ │ ├── dice-4.svg
│ │ ├── dice-5.svg
│ │ ├── dice-6.svg
│ │ ├── dice.svg
│ │ ├── directions.svg
│ │ ├── disk-alert.svg
│ │ ├── disqus-outline.svg
│ │ ├── disqus.svg
│ │ ├── division-box.svg
│ │ ├── division.svg
│ │ ├── dns.svg
│ │ ├── document.svg
│ │ ├── domain.svg
│ │ ├── dots-horizontal.svg
│ │ ├── dots-vertical.svg
│ │ ├── download.svg
│ │ ├── drag-horizontal.svg
│ │ ├── drag-vertical.svg
│ │ ├── drag.svg
│ │ ├── drawing-box.svg
│ │ ├── drawing.svg
│ │ ├── dribbble-box.svg
│ │ ├── dribbble.svg
│ │ ├── drone.svg
│ │ ├── dropbox.svg
│ │ ├── duck.svg
│ │ ├── dumbbell.svg
│ │ ├── earth-off.svg
│ │ ├── earth.svg
│ │ ├── ebay.svg
│ │ ├── edge.svg
│ │ ├── elevation-decline.svg
│ │ ├── elevation-rise.svg
│ │ ├── email-open.svg
│ │ ├── email-outline.svg
│ │ ├── email.svg
│ │ ├── emoticon-cool.svg
│ │ ├── emoticon-devil.svg
│ │ ├── emoticon-happy.svg
│ │ ├── emoticon-neutral.svg
│ │ ├── emoticon-poop.svg
│ │ ├── emoticon-sad.svg
│ │ ├── emoticon-tongue.svg
│ │ ├── emoticon.svg
│ │ ├── equal-box.svg
│ │ ├── equal.svg
│ │ ├── eraser.svg
│ │ ├── escalator.svg
│ │ ├── etsy.svg
│ │ ├── evernote.svg
│ │ ├── exclamation.svg
│ │ ├── exit-to-app.svg
│ │ ├── eye-off.svg
│ │ ├── eye.svg
│ │ ├── eyedropper-variant.svg
│ │ ├── eyedropper.svg
│ │ ├── facebook-box.svg
│ │ ├── facebook.svg
│ │ ├── factory.svg
│ │ ├── fan.svg
│ │ ├── fast-forward.svg
│ │ ├── ferry.svg
│ │ ├── file-cloud.svg
│ │ ├── file-css-outline.svg
│ │ ├── file-delimited.svg
│ │ ├── file-document-box.svg
│ │ ├── file-document-outline.svg
│ │ ├── file-document.svg
│ │ ├── file-excel-box.svg
│ │ ├── file-excel.svg
│ │ ├── file-find.svg
│ │ ├── file-hidden.svg
│ │ ├── file-html-outline.svg
│ │ ├── file-image-box.svg
│ │ ├── file-image.svg
│ │ ├── file-js-outline.svg
│ │ ├── file-music.svg
│ │ ├── file-outline.svg
│ │ ├── file-pdf-box.svg
│ │ ├── file-pdf.svg
│ │ ├── file-powerpoint-box.svg
│ │ ├── file-powerpoint.svg
│ │ ├── file-presentation-box.svg
│ │ ├── file-restore.svg
│ │ ├── file-video.svg
│ │ ├── file-word-box.svg
│ │ ├── file-word.svg
│ │ ├── file-xml.svg
│ │ ├── file.svg
│ │ ├── fill.svg
│ │ ├── film.svg
│ │ ├── filmstrip-off.svg
│ │ ├── filmstrip.svg
│ │ ├── filter-outline.svg
│ │ ├── filter-remove-outline.svg
│ │ ├── filter-remove.svg
│ │ ├── filter-variant.svg
│ │ ├── filter.svg
│ │ ├── fire.svg
│ │ ├── fish.svg
│ │ ├── flag-checkered-variant.svg
│ │ ├── flag-checkered.svg
│ │ ├── flag-outline-variant.svg
│ │ ├── flag-outline.svg
│ │ ├── flag-variant.svg
│ │ ├── flag.svg
│ │ ├── flash-auto.svg
│ │ ├── flash-off.svg
│ │ ├── flash.svg
│ │ ├── flashlight-off.svg
│ │ ├── flashlight.svg
│ │ ├── flip-to-back.svg
│ │ ├── flip-to-front.svg
│ │ ├── floppy.svg
│ │ ├── flower.svg
│ │ ├── folder-account.svg
│ │ ├── folder-download.svg
│ │ ├── folder-google-drive.svg
│ │ ├── folder-image.svg
│ │ ├── folder-lock-open.svg
│ │ ├── folder-lock.svg
│ │ ├── folder-move.svg
│ │ ├── folder-multiple-image.svg
│ │ ├── folder-multiple-outline.svg
│ │ ├── folder-multiple.svg
│ │ ├── folder-outline-lock.svg
│ │ ├── folder-outline.svg
│ │ ├── folder-plus.svg
│ │ ├── folder-remove.svg
│ │ ├── folder-upload.svg
│ │ ├── folder.svg
│ │ ├── food-apple.svg
│ │ ├── food-variant.svg
│ │ ├── food.svg
│ │ ├── football-helmet.svg
│ │ ├── football.svg
│ │ ├── format-align-center.svg
│ │ ├── format-align-justify.svg
│ │ ├── format-align-left.svg
│ │ ├── format-align-right.svg
│ │ ├── format-bold.svg
│ │ ├── format-clear.svg
│ │ ├── format-color-fill.svg
│ │ ├── format-color.svg
│ │ ├── format-header-1.svg
│ │ ├── format-header-2.svg
│ │ ├── format-header-3.svg
│ │ ├── format-header-4.svg
│ │ ├── format-header-5.svg
│ │ ├── format-header-6.svg
│ │ ├── format-header-pound.svg
│ │ ├── format-indent-decrease.svg
│ │ ├── format-indent-increase.svg
│ │ ├── format-italic.svg
│ │ ├── format-line-spacing.svg
│ │ ├── format-list-bulleted.svg
│ │ ├── format-list-numbers.svg
│ │ ├── format-paint.svg
│ │ ├── format-paragraph.svg
│ │ ├── format-quote.svg
│ │ ├── format-size.svg
│ │ ├── format-strikethrough.svg
│ │ ├── format-subscript.svg
│ │ ├── format-superscript.svg
│ │ ├── format-textdirection-l-to-r.svg
│ │ ├── format-textdirection-r-to-l.svg
│ │ ├── format-underline.svg
│ │ ├── forum.svg
│ │ ├── forward.svg
│ │ ├── foursquare.svg
│ │ ├── fridge.svg
│ │ ├── fullscreen-exit.svg
│ │ ├── fullscreen.svg
│ │ ├── function.svg
│ │ ├── gamepad-variant.svg
│ │ ├── gamepad.svg
│ │ ├── gas-station.svg
│ │ ├── gavel.svg
│ │ ├── gender-female.svg
│ │ ├── gender-male.svg
│ │ ├── gender-transgender.svg
│ │ ├── gift.svg
│ │ ├── github-box.svg
│ │ ├── github.svg
│ │ ├── glass-flute.svg
│ │ ├── glass-mug.svg
│ │ ├── glass-stange.svg
│ │ ├── glass-tulip.svg
│ │ ├── gmail.svg
│ │ ├── google-chrome.svg
│ │ ├── google-circles-communities.svg
│ │ ├── google-circles-extended.svg
│ │ ├── google-circles-invite.svg
│ │ ├── google-circles.svg
│ │ ├── google-controller-off.svg
│ │ ├── google-controller.svg
│ │ ├── google-drive.svg
│ │ ├── google-earth.svg
│ │ ├── google-glass.svg
│ │ ├── google-maps.svg
│ │ ├── google-pages.svg
│ │ ├── google-play.svg
│ │ ├── google-plus-box.svg
│ │ ├── google-plus.svg
│ │ ├── google.svg
│ │ ├── hand-pointing-right.svg
│ │ ├── hanger.svg
│ │ ├── hangouts.svg
│ │ ├── harddisk.svg
│ │ ├── headphones-box.svg
│ │ ├── headphones-dots.svg
│ │ ├── headphones.svg
│ │ ├── headset-dock.svg
│ │ ├── headset-off.svg
│ │ ├── headset.svg
│ │ ├── heart-box-outline.svg
│ │ ├── heart-box.svg
│ │ ├── heart-broken.svg
│ │ ├── heart-outline.svg
│ │ ├── heart.svg
│ │ ├── help-circle.svg
│ │ ├── help.svg
│ │ ├── hexagon-outline.svg
│ │ ├── hexagon.svg
│ │ ├── history.svg
│ │ ├── home-modern.svg
│ │ ├── home-variant.svg
│ │ ├── home.svg
│ │ ├── hops.svg
│ │ ├── hospital-building.svg
│ │ ├── hospital-marker.svg
│ │ ├── hospital.svg
│ │ ├── hosting-files-types.svg
│ │ ├── hotel.svg
│ │ ├── human-child.svg
│ │ ├── human-male-female.svg
│ │ ├── human.svg
│ │ ├── image-album.svg
│ │ ├── image-area-close.svg
│ │ ├── image-area.svg
│ │ ├── image-broken.svg
│ │ ├── image-filter-black-white.svg
│ │ ├── image-filter-center-focus.svg
│ │ ├── image-filter-drama.svg
│ │ ├── image-filter-frames.svg
│ │ ├── image-filter-hdr.svg
│ │ ├── image-filter-none.svg
│ │ ├── image-filter-tilt-shift.svg
│ │ ├── image-filter-vintage.svg
│ │ ├── image-filter.svg
│ │ ├── image.svg
│ │ ├── inbox.svg
│ │ ├── indent.svg
│ │ ├── information-outline.svg
│ │ ├── information.svg
│ │ ├── instagram.svg
│ │ ├── instapaper.svg
│ │ ├── internet-explorer.svg
│ │ ├── invert-colors.svg
│ │ ├── jira.svg
│ │ ├── keg.svg
│ │ ├── key-change.svg
│ │ ├── key-minus.svg
│ │ ├── key-plus.svg
│ │ ├── key-remove.svg
│ │ ├── key-variant.svg
│ │ ├── key.svg
│ │ ├── keyboard-backspace.svg
│ │ ├── keyboard-caps.svg
│ │ ├── keyboard-close.svg
│ │ ├── keyboard-off.svg
│ │ ├── keyboard-return.svg
│ │ ├── keyboard-tab.svg
│ │ ├── keyboard.svg
│ │ ├── label-outline.svg
│ │ ├── label.svg
│ │ ├── language-csharp.svg
│ │ ├── language-css3.svg
│ │ ├── language-golang.svg
│ │ ├── language-html5.svg
│ │ ├── language-javascript.svg
│ │ ├── language-nodejs.svg
│ │ ├── language-php.svg
│ │ ├── language-python-text.svg
│ │ ├── language-python.svg
│ │ ├── language-ruby.svg
│ │ ├── language-swift.svg
│ │ ├── laptop-chromebook.svg
│ │ ├── laptop-mac.svg
│ │ ├── laptop-windows.svg
│ │ ├── laptop.svg
│ │ ├── lastfm.svg
│ │ ├── launch.svg
│ │ ├── layers-off.svg
│ │ ├── layers.svg
│ │ ├── leaf.svg
│ │ ├── library-books.svg
│ │ ├── library-music.svg
│ │ ├── library-plus.svg
│ │ ├── library.svg
│ │ ├── lightbulb-outline.svg
│ │ ├── lightbulb.svg
│ │ ├── link-variant.svg
│ │ ├── link.svg
│ │ ├── linkedin-box.svg
│ │ ├── linkedin.svg
│ │ ├── linode.svg
│ │ ├── linux.svg
│ │ ├── lock-outline.svg
│ │ ├── lock-unlocked-outline.svg
│ │ ├── lock-unlocked.svg
│ │ ├── lock.svg
│ │ ├── login.svg
│ │ ├── logout.svg
│ │ ├── looks.svg
│ │ ├── loupe.svg
│ │ ├── lumx.svg
│ │ ├── magnify-minus.svg
│ │ ├── magnify-plus.svg
│ │ ├── magnify.svg
│ │ ├── map-marker-circle.svg
│ │ ├── map-marker-multiple.svg
│ │ ├── map-marker-off.svg
│ │ ├── map-marker-radius.svg
│ │ ├── map-marker.svg
│ │ ├── map.svg
│ │ ├── margin.svg
│ │ ├── markdown.svg
│ │ ├── marker-check.svg
│ │ ├── martini.svg
│ │ ├── material-ui.svg
│ │ ├── memory.svg
│ │ ├── menu-down.svg
│ │ ├── menu-left.svg
│ │ ├── menu-right.svg
│ │ ├── menu-up.svg
│ │ ├── menu.svg
│ │ ├── message-alert.svg
│ │ ├── message-draw.svg
│ │ ├── message-image.svg
│ │ ├── message-processing.svg
│ │ ├── message-reply.svg
│ │ ├── message-text-outline.svg
│ │ ├── message-text.svg
│ │ ├── message-video.svg
│ │ ├── message.svg
│ │ ├── microphone-dots.svg
│ │ ├── microphone-off.svg
│ │ ├── microphone-outline.svg
│ │ ├── microphone-settings.svg
│ │ ├── microphone-variant-off.svg
│ │ ├── microphone-variant.svg
│ │ ├── microphone.svg
│ │ ├── minus-box.svg
│ │ ├── minus-circle-outline.svg
│ │ ├── minus-circle.svg
│ │ ├── minus-network.svg
│ │ ├── minus.svg
│ │ ├── monitor-multiple.svg
│ │ ├── monitor.svg
│ │ ├── more.svg
│ │ ├── mouse-off.svg
│ │ ├── mouse-variant-off.svg
│ │ ├── mouse-variant.svg
│ │ ├── mouse.svg
│ │ ├── movie.svg
│ │ ├── multiplication-box.svg
│ │ ├── multiplication.svg
│ │ ├── music-box-outline.svg
│ │ ├── music-box.svg
│ │ ├── music-circle.svg
│ │ ├── music-note-eighth.svg
│ │ ├── music-note-half.svg
│ │ ├── music-note-off.svg
│ │ ├── music-note-quarter.svg
│ │ ├── music-note-sixteenth.svg
│ │ ├── music-note-whole.svg
│ │ ├── music-note.svg
│ │ ├── nature-people.svg
│ │ ├── nature.svg
│ │ ├── navigation.svg
│ │ ├── needle.svg
│ │ ├── nest-protect.svg
│ │ ├── nest-thermostat.svg
│ │ ├── newspaper.svg
│ │ ├── nfc-tap.svg
│ │ ├── nfc-variant.svg
│ │ ├── nfc.svg
│ │ ├── no.svg
│ │ ├── not-equal.svg
│ │ ├── numeric-0-box-multiple-outline.svg
│ │ ├── numeric-0-box-outline.svg
│ │ ├── numeric-0-box.svg
│ │ ├── numeric-1-box-multiple-outline.svg
│ │ ├── numeric-1-box-outline.svg
│ │ ├── numeric-1-box.svg
│ │ ├── numeric-2-box-multiple-outline.svg
│ │ ├── numeric-2-box-outline.svg
│ │ ├── numeric-2-box.svg
│ │ ├── numeric-3-box-multiple-outline.svg
│ │ ├── numeric-3-box-outline.svg
│ │ ├── numeric-3-box.svg
│ │ ├── numeric-4-box-multiple-outline.svg
│ │ ├── numeric-4-box-outline.svg
│ │ ├── numeric-4-box.svg
│ │ ├── numeric-5-box-multiple-outline.svg
│ │ ├── numeric-5-box-outline.svg
│ │ ├── numeric-5-box.svg
│ │ ├── numeric-6-box-multiple-outline.svg
│ │ ├── numeric-6-box-outline.svg
│ │ ├── numeric-6-box.svg
│ │ ├── numeric-7-box-multiple-outline.svg
│ │ ├── numeric-7-box-outline.svg
│ │ ├── numeric-7-box.svg
│ │ ├── numeric-8-box-multiple-outline.svg
│ │ ├── numeric-8-box-outline.svg
│ │ ├── numeric-8-box.svg
│ │ ├── numeric-9-box-multiple-outline.svg
│ │ ├── numeric-9-box-outline.svg
│ │ ├── numeric-9-box.svg
│ │ ├── numeric-9-plus-box-multiple-outline.svg
│ │ ├── numeric-9-plus-box-outline.svg
│ │ ├── numeric-9-plus-box.svg
│ │ ├── numeric.svg
│ │ ├── nutriton.svg
│ │ ├── office.svg
│ │ ├── oil.svg
│ │ ├── omega.svg
│ │ ├── onedrive.svg
│ │ ├── open-in-app.svg
│ │ ├── open-in-new.svg
│ │ ├── ornament-variant.svg
│ │ ├── ornament.svg
│ │ ├── outbox.svg
│ │ ├── outdent.svg
│ │ ├── package-down.svg
│ │ ├── package-up.svg
│ │ ├── package-variant-closed.svg
│ │ ├── package-variant.svg
│ │ ├── package.svg
│ │ ├── palette-advanced.svg
│ │ ├── palette.svg
│ │ ├── panda.svg
│ │ ├── pandora.svg
│ │ ├── panorama-fisheye.svg
│ │ ├── panorama-horizontal.svg
│ │ ├── panorama-vertical.svg
│ │ ├── panorama-wide-angle.svg
│ │ ├── panorama.svg
│ │ ├── paper-cut-vertical.svg
│ │ ├── paperclip.svg
│ │ ├── parking.svg
│ │ ├── pause-circle-outline.svg
│ │ ├── pause-circle.svg
│ │ ├── pause-octagon-outline.svg
│ │ ├── pause-octagon.svg
│ │ ├── pause.svg
│ │ ├── pen.svg
│ │ ├── pencil-box-outline.svg
│ │ ├── pencil-box.svg
│ │ ├── pencil.svg
│ │ ├── people.svg
│ │ ├── person-box.svg
│ │ ├── person-minus.svg
│ │ ├── person-plus.svg
│ │ ├── pharmacy.svg
│ │ ├── phone-bluetooth.svg
│ │ ├── phone-dots.svg
│ │ ├── phone-forward.svg
│ │ ├── phone-hangup.svg
│ │ ├── phone-in-talk.svg
│ │ ├── phone-locked.svg
│ │ ├── phone-missed.svg
│ │ ├── phone-paused.svg
│ │ ├── phone.svg
│ │ ├── picture.svg
│ │ ├── pig.svg
│ │ ├── pill.svg
│ │ ├── pin-off.svg
│ │ ├── pin.svg
│ │ ├── pine-tree-box.svg
│ │ ├── pine-tree.svg
│ │ ├── pinterest-box.svg
│ │ ├── pinterest.svg
│ │ ├── pizza.svg
│ │ ├── plane.svg
│ │ ├── play-box-outline.svg
│ │ ├── play-circle-outline.svg
│ │ ├── play-circle.svg
│ │ ├── play.svg
│ │ ├── playlist-plus.svg
│ │ ├── plus-box.svg
│ │ ├── plus-circle-outline.svg
│ │ ├── plus-circle.svg
│ │ ├── plus-network.svg
│ │ ├── plus-one.svg
│ │ ├── plus.svg
│ │ ├── pocket.svg
│ │ ├── poll-box.svg
│ │ ├── poll.svg
│ │ ├── polymer.svg
│ │ ├── popcorn.svg
│ │ ├── pound-box.svg
│ │ ├── pound.svg
│ │ ├── power-settings.svg
│ │ ├── power.svg
│ │ ├── presentation-play.svg
│ │ ├── presentation.svg
│ │ ├── printer-3d.svg
│ │ ├── printer.svg
│ │ ├── pulse.svg
│ │ ├── puzzle.svg
│ │ ├── qrcode.svg
│ │ ├── quadcopter.svg
│ │ ├── quality-high.svg
│ │ ├── question-mark-circle.svg
│ │ ├── quick-reply.svg
│ │ ├── quicktime.svg
│ │ ├── rabbit.svg
│ │ ├── radiator.svg
│ │ ├── radioactive.svg
│ │ ├── radiobox-blank.svg
│ │ ├── radiobox-marked.svg
│ │ ├── rdio.svg
│ │ ├── read.svg
│ │ ├── readability.svg
│ │ ├── receipt.svg
│ │ ├── recycle.svg
│ │ ├── reddit.svg
│ │ ├── redo-variant.svg
│ │ ├── redo.svg
│ │ ├── refresh.svg
│ │ ├── relative-scale.svg
│ │ ├── reload.svg
│ │ ├── remote.svg
│ │ ├── rename-box.svg
│ │ ├── repeat-off.svg
│ │ ├── repeat-once.svg
│ │ ├── repeat.svg
│ │ ├── replay.svg
│ │ ├── reply-all.svg
│ │ ├── reply.svg
│ │ ├── reproduction.svg
│ │ ├── resize-bottom-right.svg
│ │ ├── responsive.svg
│ │ ├── restore.svg
│ │ ├── rewind.svg
│ │ ├── ribbon.svg
│ │ ├── rocket.svg
│ │ ├── rotate-3d.svg
│ │ ├── rotate-left-variant.svg
│ │ ├── rotate-left.svg
│ │ ├── rotate-right-variant.svg
│ │ ├── rotate-right.svg
│ │ ├── routes.svg
│ │ ├── rss-box.svg
│ │ ├── ruler.svg
│ │ ├── run.svg
│ │ ├── satellite-variant.svg
│ │ ├── satellite.svg
│ │ ├── scale-bathroom.svg
│ │ ├── scale.svg
│ │ ├── school.svg
│ │ ├── screen-rotation-lock.svg
│ │ ├── screen-rotation.svg
│ │ ├── script.svg
│ │ ├── security-network.svg
│ │ ├── security.svg
│ │ ├── select-all.svg
│ │ ├── select-inverse.svg
│ │ ├── select-off.svg
│ │ ├── select.svg
│ │ ├── send.svg
│ │ ├── server-minus.svg
│ │ ├── server-network-off.svg
│ │ ├── server-network.svg
│ │ ├── server-off.svg
│ │ ├── server-plus.svg
│ │ ├── server-remove.svg
│ │ ├── server-security.svg
│ │ ├── server.svg
│ │ ├── settings.svg
│ │ ├── shape-plus.svg
│ │ ├── share-variant.svg
│ │ ├── share.svg
│ │ ├── shopping-music.svg
│ │ ├── shopping.svg
│ │ ├── shuffle.svg
│ │ ├── sigma.svg
│ │ ├── sign-caution.svg
│ │ ├── silverware-fork.svg
│ │ ├── silverware-spoon.svg
│ │ ├── silverware-variant.svg
│ │ ├── silverware.svg
│ │ ├── sim-alert.svg
│ │ ├── sim.svg
│ │ ├── skip-next.svg
│ │ ├── skip-previous.svg
│ │ ├── snowman.svg
│ │ ├── socket-channel.svg
│ │ ├── socket-checkbox-blank.svg
│ │ ├── socket-checkbox-marked.svg
│ │ ├── socket-custom-socket.svg
│ │ ├── socket-data.svg
│ │ ├── socket-hosting.svg
│ │ ├── socket-push.svg
│ │ ├── socket-schedule.svg
│ │ ├── socket-script-endpoint.svg
│ │ ├── socket-trigger.svg
│ │ ├── socket-user.svg
│ │ ├── socket-users.svg
│ │ ├── sort-alphabetical.svg
│ │ ├── sort-ascending.svg
│ │ ├── sort-descending.svg
│ │ ├── sort-numeric.svg
│ │ ├── sort-variant.svg
│ │ ├── sort.svg
│ │ ├── sound.svg
│ │ ├── soundcloud.svg
│ │ ├── source-fork.svg
│ │ ├── source-pull.svg
│ │ ├── speaker-off.svg
│ │ ├── speaker.svg
│ │ ├── speedometer.svg
│ │ ├── spellcheck.svg
│ │ ├── spotify.svg
│ │ ├── spotlight-beam.svg
│ │ ├── spotlight.svg
│ │ ├── spreadsheet.svg
│ │ ├── stackoverflow.svg
│ │ ├── star-circle.svg
│ │ ├── star-half.svg
│ │ ├── star-of-david.svg
│ │ ├── star-outline.svg
│ │ ├── star.svg
│ │ ├── stocking.svg
│ │ ├── stop.svg
│ │ ├── store-24-hour.svg
│ │ ├── store.svg
│ │ ├── stove.svg
│ │ ├── subway.svg
│ │ ├── swap-horizontal.svg
│ │ ├── swap-vertical.svg
│ │ ├── swim.svg
│ │ ├── sword.svg
│ │ ├── sync-alert.svg
│ │ ├── sync-off.svg
│ │ ├── sync.svg
│ │ ├── tab-unselected.svg
│ │ ├── tab.svg
│ │ ├── table-column-plus-after.svg
│ │ ├── table-column-plus-before.svg
│ │ ├── table-column-remove.svg
│ │ ├── table-column-width.svg
│ │ ├── table-edit.svg
│ │ ├── table-large.svg
│ │ ├── table-row-height.svg
│ │ ├── table-row-plus-after.svg
│ │ ├── table-row-plus-before.svg
│ │ ├── table-row-remove.svg
│ │ ├── table.svg
│ │ ├── tablet-android.svg
│ │ ├── tablet-ipad.svg
│ │ ├── tablet.svg
│ │ ├── tag-faces.svg
│ │ ├── tag-outline.svg
│ │ ├── tag-text-outline.svg
│ │ ├── tag.svg
│ │ ├── taxi.svg
│ │ ├── television-guide.svg
│ │ ├── television.svg
│ │ ├── temperature-celsius.svg
│ │ ├── temperature-fahrenheit.svg
│ │ ├── temperature-kelvin.svg
│ │ ├── tent.svg
│ │ ├── terrain.svg
│ │ ├── text-to-speech-off.svg
│ │ ├── text-to-speech.svg
│ │ ├── texture.svg
│ │ ├── theater.svg
│ │ ├── theme-light-dark.svg
│ │ ├── thermometer-lines.svg
│ │ ├── thermometer.svg
│ │ ├── thumb-down-outline.svg
│ │ ├── thumb-down.svg
│ │ ├── thumb-up-outline.svg
│ │ ├── thumb-up.svg
│ │ ├── thumbs-up-down.svg
│ │ ├── ticket-account.svg
│ │ ├── ticket.svg
│ │ ├── tie.svg
│ │ ├── tile-four.svg
│ │ ├── timelapse.svg
│ │ ├── timer-10.svg
│ │ ├── timer-3.svg
│ │ ├── timer-off.svg
│ │ ├── timer-sand.svg
│ │ ├── timer.svg
│ │ ├── timetable.svg
│ │ ├── toggle-switch-off.svg
│ │ ├── toggle-switch-on.svg
│ │ ├── tooltip-edit.svg
│ │ ├── tooltip-image.svg
│ │ ├── tooltip-outline-plus.svg
│ │ ├── tooltip-outline.svg
│ │ ├── tooltip-text.svg
│ │ ├── tooltip.svg
│ │ ├── tor.svg
│ │ ├── traffic-light.svg
│ │ ├── train.svg
│ │ ├── tram.svg
│ │ ├── transcribe-close.svg
│ │ ├── transcribe.svg
│ │ ├── transfer.svg
│ │ ├── trash.svg
│ │ ├── tree.svg
│ │ ├── trello.svg
│ │ ├── trending-down.svg
│ │ ├── trending-neutral.svg
│ │ ├── trending-up.svg
│ │ ├── truck.svg
│ │ ├── tshirt-crew.svg
│ │ ├── tshirt-v.svg
│ │ ├── tumblr-reblog.svg
│ │ ├── tumblr.svg
│ │ ├── twitch.svg
│ │ ├── twitter-box.svg
│ │ ├── twitter-retweet.svg
│ │ ├── twitter.svg
│ │ ├── ubuntu.svg
│ │ ├── undo-variant.svg
│ │ ├── undo.svg
│ │ ├── unfold-less.svg
│ │ ├── unfold-more.svg
│ │ ├── untappd.svg
│ │ ├── upload.svg
│ │ ├── usb.svg
│ │ ├── vector-curve.svg
│ │ ├── vector-point.svg
│ │ ├── vector-square.svg
│ │ ├── verified.svg
│ │ ├── vibration.svg
│ │ ├── video-off.svg
│ │ ├── video-switch.svg
│ │ ├── video.svg
│ │ ├── view-agenda.svg
│ │ ├── view-array.svg
│ │ ├── view-carousel.svg
│ │ ├── view-column.svg
│ │ ├── view-dashboard.svg
│ │ ├── view-day.svg
│ │ ├── view-headline.svg
│ │ ├── view-list.svg
│ │ ├── view-module.svg
│ │ ├── view-quilt.svg
│ │ ├── view-stream.svg
│ │ ├── view-week.svg
│ │ ├── vimeo.svg
│ │ ├── vk.svg
│ │ ├── voicemail.svg
│ │ ├── volume-high.svg
│ │ ├── volume-low.svg
│ │ ├── volume-medium.svg
│ │ ├── volume-off.svg
│ │ ├── walk.svg
│ │ ├── wallet-giftcard.svg
│ │ ├── wallet-membership.svg
│ │ ├── wallet-travel.svg
│ │ ├── wallet.svg
│ │ ├── washing-machine.svg
│ │ ├── watch-export.svg
│ │ ├── watch-import.svg
│ │ ├── watch.svg
│ │ ├── water-off.svg
│ │ ├── water-pump.svg
│ │ ├── water.svg
│ │ ├── weather-cloudy.svg
│ │ ├── weather-hail.svg
│ │ ├── weather-lightning.svg
│ │ ├── weather-night.svg
│ │ ├── weather-partlycloudy.svg
│ │ ├── weather-pouring.svg
│ │ ├── weather-rainy.svg
│ │ ├── weather-snowy.svg
│ │ ├── weather-sunny.svg
│ │ ├── weather-sunset-down.svg
│ │ ├── weather-sunset-up.svg
│ │ ├── weather-sunset.svg
│ │ ├── weather-windy-variant.svg
│ │ ├── weather-windy.svg
│ │ ├── web.svg
│ │ ├── webcam.svg
│ │ ├── weight-kilogram.svg
│ │ ├── weight.svg
│ │ ├── whatsapp.svg
│ │ ├── wheelchair-accessibility.svg
│ │ ├── white-balance-auto.svg
│ │ ├── white-balance-incandescent.svg
│ │ ├── white-balance-irradescent.svg
│ │ ├── white-balance-sunny.svg
│ │ ├── wifi.svg
│ │ ├── wikipedia.svg
│ │ ├── window-close.svg
│ │ ├── window-closed.svg
│ │ ├── window-maximize.svg
│ │ ├── window-minimize.svg
│ │ ├── window-open.svg
│ │ ├── window-restore.svg
│ │ ├── windows.svg
│ │ ├── wordpress.svg
│ │ ├── wrap-text.svg
│ │ ├── xbox-controller-off.svg
│ │ ├── xbox-controller.svg
│ │ ├── xbox.svg
│ │ ├── xda.svg
│ │ ├── xml.svg
│ │ ├── yeast.svg
│ │ ├── youtube-play.svg
│ │ ├── youtube.svg
│ │ └── zip-box.svg
│ ├── img
│ │ ├── check.svg
│ │ ├── fox.png
│ │ ├── illustrations
│ │ │ ├── assemble-your-backend-with-building-blocks.svg
│ │ │ ├── build-powerful-apps-in-half-the-time.svg
│ │ │ ├── hosting-files-types.svg
│ │ │ ├── no-active-plan.svg
│ │ │ ├── syncano-slack.svg
│ │ │ ├── undergoing-maintenance.svg
│ │ │ ├── we-cant-process-your-payment.svg
│ │ │ └── what-is-syncano.png
│ │ ├── socket-assemble.svg
│ │ ├── socket-logo.svg
│ │ ├── stripe-badge@3x.png
│ │ ├── syncano-logo.svg
│ │ └── syncano-symbol.svg
│ ├── index.html
│ └── sass
│ │ ├── _base.sass
│ │ ├── _config.sass
│ │ ├── _grid.sass
│ │ ├── _lists.sass
│ │ ├── _mobile.sass
│ │ ├── _scaffold.sass
│ │ ├── _spacings.sass
│ │ ├── _text.sass
│ │ ├── config
│ │ └── _typeplate-config.scss
│ │ ├── main.sass
│ │ └── vendor
│ │ └── typeplate
│ │ ├── _typeplate-extends.scss
│ │ ├── _typeplate-fonts.scss
│ │ ├── _typeplate-functions.scss
│ │ ├── _typeplate-helpers.scss
│ │ ├── _typeplate-mixins.scss
│ │ ├── _typeplate-styles.scss
│ │ ├── _typeplate-vars.scss
│ │ └── _typeplate.scss
├── common
│ ├── AlertPageContent
│ │ ├── AlertPageContent.js
│ │ └── index.js
│ ├── AutoCompleteWrapper
│ │ ├── AutoCompleteWrapper.js
│ │ └── index.js
│ ├── BashSnippet
│ │ ├── BashSnippet.js
│ │ └── index.js
│ ├── Billing
│ │ ├── ChartLegend.js
│ │ ├── PlanExplorerButton.js
│ │ ├── SwitchSection.js
│ │ └── index.js
│ ├── CheckIcon
│ │ ├── CheckIcon.jsx
│ │ ├── CircleCheckIcon.jsx
│ │ ├── SocketCheckIcon.jsx
│ │ └── index.js
│ ├── Clipboard
│ │ ├── Clipboard.js
│ │ └── index.js
│ ├── CloseButton
│ │ ├── CloseButton.js
│ │ └── index.js
│ ├── CodePreview
│ │ ├── CodePreview.js
│ │ ├── CodePreviewItem.js
│ │ ├── code-preview.sass
│ │ └── index.js
│ ├── Color
│ │ ├── ColorStore.js
│ │ └── index.js
│ ├── ColorIconPicker
│ │ ├── ColorIconPicker.js
│ │ ├── ColorPicker.js
│ │ ├── IconPicker.js
│ │ ├── PreviewCircle.js
│ │ ├── PreviewHexagon.js
│ │ └── index.js
│ ├── ColumnList
│ │ ├── ColName.js
│ │ ├── ColNameDesc.js
│ │ ├── Column
│ │ │ ├── CheckIcon.js
│ │ │ ├── CircleCheckIcon.jsx
│ │ │ ├── ColumnHeader.js
│ │ │ ├── Date.js
│ │ │ ├── Desc.js
│ │ │ ├── ID.js
│ │ │ ├── IconName.js
│ │ │ ├── Key.js
│ │ │ ├── Menu.js
│ │ │ ├── Name.js
│ │ │ ├── SocketCheckIcon.jsx
│ │ │ ├── Text.js
│ │ │ └── index.js
│ │ ├── ColumnListConstans.js
│ │ ├── EmptyListItem.js
│ │ ├── Header.js
│ │ ├── Item.js
│ │ ├── ItemColumn.js
│ │ └── index.js
│ ├── Container
│ │ ├── Container.js
│ │ ├── EmptyContainer.js
│ │ ├── LoadingContainer.js
│ │ ├── TabsContainer.js
│ │ └── index.js
│ ├── CreditCard
│ │ ├── CreditCard.js
│ │ └── index.js
│ ├── CreditCardForm
│ │ ├── CreditCardForm.js
│ │ ├── CreditCardFormNumberInput.js
│ │ └── index.js
│ ├── CustomTitle
│ │ ├── CustomTitle.js
│ │ └── index.js
│ ├── DataObjectsAmount
│ │ ├── DataObjectsAmount.js
│ │ └── index.js
│ ├── Dialog
│ │ ├── DeleteDialog.jsx
│ │ ├── Dialog.jsx
│ │ ├── DialogBindShortcutsHOC.js
│ │ ├── DialogContent.js
│ │ ├── DialogContentSection.js
│ │ ├── DialogSidebar.js
│ │ ├── DialogSidebarBox.js
│ │ ├── DialogSidebarLink.js
│ │ ├── DialogSidebarSection.js
│ │ ├── DialogStandardButtons.js
│ │ ├── DialogSummaryRedirect.js
│ │ ├── DialogTitleWithIcon.jsx
│ │ ├── FullPageDialog.js
│ │ └── index.js
│ ├── DialogRefreshButton
│ │ ├── DialogRefreshButton.js
│ │ └── index.js
│ ├── DirectoryNavigation
│ │ ├── DirectoryNavigation.js
│ │ ├── DirectoryNavigationLink.js
│ │ └── index.js
│ ├── DropZone
│ │ ├── DropZone.jsx
│ │ ├── UploadFileButton.jsx
│ │ └── index.js
│ ├── Dropdown
│ │ ├── DropdownNotifiItem.jsx
│ │ └── index.js
│ ├── Editor
│ │ ├── Editor.js
│ │ └── index.js
│ ├── EmptyView
│ │ ├── EmptyView.js
│ │ ├── EmptyViewCLI.js
│ │ ├── EmptyViewDouble.js
│ │ ├── EmptyViewSmall.js
│ │ └── index.js
│ ├── Header
│ │ ├── Header.jsx
│ │ ├── Header.sass
│ │ ├── HeaderGettingStartedDropdown.js
│ │ ├── HeaderInstancesDropdown.jsx
│ │ ├── HeaderNotificationsDropdown.jsx
│ │ ├── InvitationItem.js
│ │ └── index.js
│ ├── HeaderButton.js
│ ├── Icon
│ │ ├── Icon.css
│ │ ├── IconStore.js
│ │ ├── RoundIcon.jsx
│ │ ├── index.js
│ │ └── svg
│ │ │ ├── accessibility.svg
│ │ │ ├── account-child.svg
│ │ │ ├── account-circle.svg
│ │ │ ├── airplanemode-on.svg
│ │ │ ├── arrow-back.svg
│ │ │ ├── arrow_down.svg
│ │ │ ├── arrow_up.svg
│ │ │ ├── autorenew.svg
│ │ │ ├── av-timer.svg
│ │ │ ├── bug-report.svg
│ │ │ ├── cached.svg
│ │ │ ├── call-split.svg
│ │ │ ├── call.svg
│ │ │ ├── cart.svg
│ │ │ ├── checkbox-blank.svg
│ │ │ ├── checkbox-marked.svg
│ │ │ ├── close.svg
│ │ │ ├── cloud.svg
│ │ │ ├── color-lens.svg
│ │ │ ├── credit-card.svg
│ │ │ ├── devices.svg
│ │ │ ├── directions-car.svg
│ │ │ ├── directions-subway.svg
│ │ │ ├── done.svg
│ │ │ ├── email.svg
│ │ │ ├── error.svg
│ │ │ ├── event.svg
│ │ │ ├── facebook.svg
│ │ │ ├── favorite.svg
│ │ │ ├── flag.svg
│ │ │ ├── folder.svg
│ │ │ ├── get-app.svg
│ │ │ ├── github.svg
│ │ │ ├── golang.svg
│ │ │ ├── google.svg
│ │ │ ├── grade.svg
│ │ │ ├── group-add.svg
│ │ │ ├── home.svg
│ │ │ ├── inbox.svg
│ │ │ ├── info.svg
│ │ │ ├── keyboard-arrow-down.svg
│ │ │ ├── keyboard-arrow-left.svg
│ │ │ ├── keyboard-arrow-right.svg
│ │ │ ├── keyboard-arrow-up.svg
│ │ │ ├── label.svg
│ │ │ ├── layers.svg
│ │ │ ├── local-bar.svg
│ │ │ ├── local-offer.svg
│ │ │ ├── location-on.svg
│ │ │ ├── lock.svg
│ │ │ ├── map.svg
│ │ │ ├── menu-down.svg
│ │ │ ├── menu.svg
│ │ │ ├── more-horiz.svg
│ │ │ ├── more-vert.svg
│ │ │ ├── navigate_after.svg
│ │ │ ├── navigate_before.svg
│ │ │ ├── nodejs.svg
│ │ │ ├── notifications-none.svg
│ │ │ ├── notifications.svg
│ │ │ ├── person-add.svg
│ │ │ ├── phone-android.svg
│ │ │ ├── play-arrow.svg
│ │ │ ├── playlist-add.svg
│ │ │ ├── plus.svg
│ │ │ ├── publ.svg
│ │ │ ├── python.svg
│ │ │ ├── query-builder.svg
│ │ │ ├── question-answer.svg
│ │ │ ├── room.svg
│ │ │ ├── ruby.svg
│ │ │ ├── school.svg
│ │ │ ├── search.svg
│ │ │ ├── settings-backup-restore.svg
│ │ │ ├── share.svg
│ │ │ ├── shopping-cart.svg
│ │ │ ├── sync-problem.svg
│ │ │ ├── sync.svg
│ │ │ ├── system-update-tv.svg
│ │ │ ├── terminal.svg
│ │ │ ├── theaters.svg
│ │ │ ├── twitter.svg
│ │ │ ├── unfold-less.svg
│ │ │ ├── unfold-more.svg
│ │ │ ├── videocam.svg
│ │ │ ├── view-module.svg
│ │ │ ├── view-stream.svg
│ │ │ ├── vpn-key.svg
│ │ │ ├── warning.svg
│ │ │ ├── webhooks.svg
│ │ │ ├── whatshot.svg
│ │ │ └── work.svg
│ ├── InnerToolbar
│ │ ├── InnerToolbar.js
│ │ ├── InnerToolbarDropdown.js
│ │ └── index.js
│ ├── LinkWithIcon
│ │ ├── LinkWithIcon.js
│ │ └── index.js
│ ├── LinkWrapper
│ │ ├── LinkWrapper.js
│ │ └── index.js
│ ├── Lists
│ │ ├── List.jsx
│ │ ├── ListContainer.jsx
│ │ ├── Menu.js
│ │ ├── MenuItem.jsx
│ │ └── index.js
│ ├── Loading
│ │ ├── Loading.js
│ │ └── index.js
│ ├── Logo
│ │ ├── Logo.js
│ │ ├── Logo.sass
│ │ └── index.js
│ ├── MethodLabel
│ │ ├── MethodLabel.js
│ │ └── index.js
│ ├── MobileOnboarding
│ │ ├── MobileOnboarding.js
│ │ ├── MobileOnboardingSlide.js
│ │ └── index.js
│ ├── NoMobileInfo
│ │ ├── NoMobileInfo.js
│ │ ├── illustration-mobile.svg
│ │ └── index.js
│ ├── Notification
│ │ ├── Notification.jsx
│ │ ├── NotificationCloseButton.js
│ │ └── index.js
│ ├── Onboarding
│ │ ├── Onboarding.js
│ │ ├── OnboardingTerminal.js
│ │ └── index.js
│ ├── PageIntro
│ │ ├── PageIntro.js
│ │ ├── PageIntroHOC.js
│ │ └── index.js
│ ├── Pagination
│ │ ├── Pagination.js
│ │ ├── Pagination.sass
│ │ └── index.js
│ ├── PaymentIcon
│ │ ├── AmericanExpress.js
│ │ ├── DinersClub.js
│ │ ├── Discover.js
│ │ ├── Jcb.js
│ │ ├── MasterCard.js
│ │ ├── PaymentIcon.js
│ │ ├── Visa.js
│ │ └── index.js
│ ├── PaymentIcons
│ │ ├── PaymentIcons.js
│ │ └── index.js
│ ├── Popover
│ │ ├── Popover.js
│ │ └── index.js
│ ├── PricingPlans
│ │ ├── PricingPlans.js
│ │ ├── PricingPlansPlan.js
│ │ └── index.js
│ ├── RegistryEmptyView
│ │ ├── RegistryEmptyView.js
│ │ └── index.js
│ ├── SearchResultsCountBox
│ │ ├── SearchResultsCountBox.js
│ │ └── index.js
│ ├── SelectFieldWrapper
│ │ ├── SelectFieldWrapper.js
│ │ ├── SelectFieldWrapperItem.js
│ │ └── index.js
│ ├── SelectWrapper
│ │ ├── SelectWrapper.css
│ │ ├── SelectWrapper.js
│ │ └── index.js
│ ├── Show
│ │ ├── Show.js
│ │ └── index.js
│ ├── ShowMore
│ │ ├── ShowMore.js
│ │ └── index.js
│ ├── Sidebar
│ │ ├── LinkListItem.jsx
│ │ ├── List.js
│ │ ├── ListItem.js
│ │ ├── ListSubheader.js
│ │ ├── NestedLinkListItem.js
│ │ ├── Sidebar.jsx
│ │ ├── SidebarContent.js
│ │ └── index.js
│ ├── Slider
│ │ ├── Slider.js
│ │ ├── SliderSection.js
│ │ └── index.js
│ ├── SocialAuthButtonsList
│ │ ├── SocialAuthButtonsList.js
│ │ ├── SocialAuthButtonsListItem.js
│ │ ├── SocialAuthButtonsListItemDivider.js
│ │ └── index.js
│ ├── Socket
│ │ ├── Channel.js
│ │ ├── CustomSocket.js
│ │ ├── DataEndpoint.js
│ │ ├── Default.js
│ │ ├── EmptyListItem.js
│ │ ├── Hosting.js
│ │ ├── Push.js
│ │ ├── Schedule.js
│ │ ├── ScriptEndpoint.js
│ │ ├── SocketWrapper.js
│ │ ├── Trigger.js
│ │ ├── User.js
│ │ ├── Users.js
│ │ └── index.js
│ ├── Spacing.js
│ ├── StatusLabel
│ │ ├── ActiveStatusLabel.js
│ │ ├── InactiveStatusLabel.js
│ │ ├── StatusLabel.js
│ │ └── index.js
│ ├── Stepper
│ │ ├── StepLabel.js
│ │ ├── Stepper.js
│ │ └── index.js
│ ├── SyncanoTheme.js
│ ├── TableHeaderSortableColumn
│ │ ├── TableHeaderSortableColumn.js
│ │ └── index.js
│ ├── Tags
│ │ ├── List.js
│ │ └── index.js
│ ├── TogglePanel
│ │ ├── TogglePanel.js
│ │ └── index.js
│ ├── Tooltip
│ │ ├── Tooltip.js
│ │ └── index.js
│ ├── TraceResult
│ │ ├── TraceBigResult.js
│ │ ├── TraceResult.js
│ │ └── index.js
│ ├── Truncate
│ │ ├── Truncate.js
│ │ └── index.js
│ ├── UpgradeNowToolbar
│ │ ├── UpgradeNowToolbar.js
│ │ └── index.js
│ └── index.js
├── constants
│ ├── BillingPlans.json
│ └── Constants.js
├── index.html
├── mixins
│ ├── CheckListStoreMixin.js
│ ├── DialogMixin.js
│ ├── DialogStoreMixin.js
│ ├── DialogsMixin.jsx
│ ├── FormMixin.jsx
│ ├── HostingMixin.js
│ ├── MousetrapMixin.js
│ ├── ScrollLockMixin.js
│ ├── SnackbarNotificationMixin.js
│ ├── StoreFormMixin.js
│ ├── StoreHelpersMixin.js
│ ├── StoreLoadingMixin.js
│ ├── WaitForStoreMixin.js
│ └── index.js
├── pages
│ ├── app
│ │ ├── AppMobileOnboarding.js
│ │ ├── app.jsx
│ │ └── index.js
│ ├── classes.js
│ ├── dashboard.jsx
│ ├── expiredAccount.js
│ ├── failedPayment.js
│ ├── freeLimitsExceeded.js
│ ├── hardLimitReached.js
│ ├── instance.jsx
│ ├── maintenance.js
│ ├── notfound.jsx
│ └── profile.jsx
├── raven.js
├── routes.js
├── segment.js
├── stripe.js
└── utils
│ ├── ActionsConstructor.js
│ ├── JSONUtil.js
│ ├── PricingPlansUtil.js
│ ├── RoutesUtil.js
│ └── index.js
├── test.sh
├── test
├── e2e
│ ├── commands
│ │ ├── assertSelectedCount.js
│ │ ├── changeWindow.js
│ │ ├── clearInput.js
│ │ ├── clickDropdown.js
│ │ ├── clickElement.js
│ │ ├── clickListItemDropdown.js
│ │ ├── fillInput.js
│ │ ├── getChromeLogs.js
│ │ ├── goToUrl.js
│ │ ├── loginUsingLocalStorage.js
│ │ ├── multipleItems.js
│ │ ├── runScriptAndClickReloadButton.js
│ │ ├── selectDropdownValue.js
│ │ ├── setResolution.js
│ │ └── singleItemSelectUnselect.js
│ ├── globals.js
│ ├── pages
│ │ ├── adminsPage.js
│ │ ├── apiKeysPage.js
│ │ ├── authenticationPage.js
│ │ ├── billingAddressPage.js
│ │ ├── billingPaymentPage.js
│ │ ├── billingPlanPage.js
│ │ ├── classesPage.js
│ │ ├── commonElementsPage.js
│ │ ├── customSocketsPage.js
│ │ ├── dataObjectsPage.js
│ │ ├── docsPage.js
│ │ ├── generalPage.js
│ │ ├── globalsViewerPage.js
│ │ ├── instancesPage.js
│ │ ├── invitationsPage.js
│ │ ├── invoicesPage.js
│ │ ├── leftMenuPage.js
│ │ ├── listsPage.js
│ │ ├── loginPage.js
│ │ ├── planUsagePage.js
│ │ ├── profilePage.js
│ │ ├── pushDevicesPage.js
│ │ ├── pushMessagesPage.js
│ │ ├── signupPage.js
│ │ ├── socketsPage.js
│ │ ├── termsPage.js
│ │ ├── topNavigationPage.js
│ │ └── usersPage.js
│ ├── tests
│ │ ├── billing
│ │ │ ├── testBillingAddress.js
│ │ │ ├── testPaymentMethods.js
│ │ │ ├── testPlanUsage.js
│ │ │ ├── testPlansAndPricing.js
│ │ │ └── testPlansInvoicesList.js
│ │ ├── components
│ │ │ ├── testClasses.js
│ │ │ ├── testDataObjects.js
│ │ │ ├── testDemoApp.js
│ │ │ ├── testGroups.js
│ │ │ └── testUsers.js
│ │ ├── instances
│ │ │ ├── testAdministrators.js
│ │ │ ├── testApiKeys.js
│ │ │ ├── testInstance.js
│ │ │ └── testInstances.js
│ │ ├── navigation
│ │ │ └── testTopNavigation.js
│ │ ├── settings
│ │ │ ├── testAuthSettings.js
│ │ │ ├── testGlobalViewer.js
│ │ │ ├── testPasswordChange.js
│ │ │ └── testProfileChange.js
│ │ └── signup_logins
│ │ │ ├── testSignup.js
│ │ │ ├── testSocialLogins.js
│ │ │ └── testTermsOfUse.js
│ └── utils.js
└── setup
│ ├── create
│ ├── apiKey.js
│ ├── apnsDevices.js
│ ├── apnsSocket.js
│ ├── classes.js
│ ├── connection.js
│ ├── gcmDevices.js
│ ├── gcmSocket.js
│ ├── hostingSocket.js
│ ├── instance.js
│ └── user.js
│ ├── createTestInstances.js
│ ├── delete
│ └── instance.js
│ ├── deleteTestInstances.js
│ ├── files
│ ├── exportTestInstances.js
│ ├── getCertificate.js
│ └── removeCertificate.js
│ ├── helpers
│ ├── checkAccountLimits.js
│ ├── checkAvailableSlots.js
│ └── generateCiCredentials.js
│ └── profile
│ ├── firstInstance.js
│ ├── secondInstance.js
│ └── thirdInstance.js
├── webpack-helpers.js
├── webpack.config.babel.js
└── yarn.lock
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["es2015", "react", "stage-0"],
3 | "plugins": ["react-hot-loader/babel", "add-module-exports", "lodash"],
4 | "env": {
5 | "testing": {
6 | "presets": []
7 | }
8 | }
9 | }
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | src/lib
2 | src/assets/js
3 | src/segment.js
4 | src/stripe.js
5 | src/raven.js
6 |
7 | test/e2e/tempInstances.js
8 |
--------------------------------------------------------------------------------
/__mocks__/fileMock.js:
--------------------------------------------------------------------------------
1 | module.exports = 'test-file-stub';
2 |
--------------------------------------------------------------------------------
/__mocks__/styleMock.js:
--------------------------------------------------------------------------------
1 | module.exports = {};
2 |
--------------------------------------------------------------------------------
/docs/README.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/docs/README.md
--------------------------------------------------------------------------------
/docs/js_patterns.md:
--------------------------------------------------------------------------------
1 | JS patterns
2 | ===========
3 |
4 | ## Useful links
5 |
6 | * [Learning JavaScript Design Patterns](http://addyosmani.com/resources/essentialjsdesignpatterns/book/)
7 | * [JavaScript The Right Way](http://jstherightway.org/)
8 | * [Superhero.js](http://superherojs.com/)
--------------------------------------------------------------------------------
/docs/open_dash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/docs/open_dash.png
--------------------------------------------------------------------------------
/nightwatch.conf.js:
--------------------------------------------------------------------------------
1 | require('babel-core/register');
2 |
3 | module.exports = require('./nightwatch.json');
4 |
--------------------------------------------------------------------------------
/src/Root.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Router, useRouterHistory } from 'react-router';
3 | import createHistory from 'history/lib/createHashHistory';
4 | import routes from './routes';
5 | import useNamedRoutes from 'use-named-routes';
6 |
7 | const history = useNamedRoutes(useRouterHistory(createHistory))({ routes });
8 |
9 | const Root = () => (
10 |
11 | );
12 |
13 | export default Root;
14 |
--------------------------------------------------------------------------------
/src/app.sass:
--------------------------------------------------------------------------------
1 | @import "assets/sass/main"
2 |
--------------------------------------------------------------------------------
/src/apps/Account/AuthConstants.js:
--------------------------------------------------------------------------------
1 | export default {
2 | LOGIN_URL: '/login',
3 | LOGIN_REDIRECT_PATH: '/instances',
4 | SOCIAL_NETWORKS_LOGIN: ['facebook', 'google', 'github'],
5 | SOCIAL_NETWORKS_SIGNUP: ['google', 'github']
6 | };
7 |
--------------------------------------------------------------------------------
/src/apps/Account/Hello.js:
--------------------------------------------------------------------------------
1 | import hello from 'hellojs';
2 |
3 | const credentials = {};
4 | const options = {};
5 |
6 | credentials.facebook = APP_CONFIG.FACEBOOK_ID;
7 | credentials.google = APP_CONFIG.GOOGLE_ID;
8 | credentials.github = APP_CONFIG.GITHUB_ID;
9 |
10 | options.redirect_uri = `${location.protocol}//${location.host}`;
11 | options.scope = 'email';
12 |
13 | hello.init(credentials, options);
14 |
15 | export default hello;
16 |
--------------------------------------------------------------------------------
/src/apps/Account/auth.js:
--------------------------------------------------------------------------------
1 | import localStorage from 'local-storage-fallback';
2 |
3 | module.exports = {
4 | loggedIn() {
5 | return Boolean(localStorage.getItem('token'));
6 | }
7 | };
8 |
--------------------------------------------------------------------------------
/src/apps/ApiKeys/index.js:
--------------------------------------------------------------------------------
1 | import ApiKeys from './ApiKeys';
2 | import ApiKeysStore from './ApiKeysStore';
3 | import ApiKeysList from './ApiKeysList';
4 | import ApiKeysActions from './ApiKeysActions';
5 | import ApiKeyDialog from './ApiKeyDialog';
6 | import ApiKeyDialogStore from './ApiKeyDialogStore';
7 |
8 | ApiKeys.Actions = ApiKeysActions;
9 | ApiKeys.Store = ApiKeysStore;
10 | ApiKeys.List = ApiKeysList;
11 | ApiKeys.Dialog = ApiKeyDialog;
12 | ApiKeys.DialogStore = ApiKeyDialogStore;
13 |
14 | export default ApiKeys;
15 |
--------------------------------------------------------------------------------
/src/apps/Channels/ChannelsActions.js:
--------------------------------------------------------------------------------
1 | import CreateActions from '../../utils/ActionsConstructor';
2 |
3 | export default CreateActions(
4 | {
5 | fetch: {},
6 | setChannels: {},
7 | fetchChannels: {
8 | asyncResult: true,
9 | loading: true,
10 | children: ['completed', 'failure'],
11 | method: 'Syncano.Actions.Channels.list'
12 | }
13 | }
14 | );
15 |
--------------------------------------------------------------------------------
/src/apps/Channels/index.js:
--------------------------------------------------------------------------------
1 | import ChannelsStore from './ChannelsStore';
2 | import ChannelsActions from './ChannelsActions';
3 |
4 | export default { ChannelsActions, ChannelsStore };
5 |
--------------------------------------------------------------------------------
/src/apps/Classes/ClassesActions.js:
--------------------------------------------------------------------------------
1 | import CreateActions from '../../utils/ActionsConstructor';
2 |
3 | export default CreateActions(
4 | {
5 | setClasses: {},
6 | setClickedClass: {},
7 | setStepIndex: {},
8 | fetch: {},
9 | getClassByName: {},
10 | fetchClasses: {
11 | asyncResult: true,
12 | loading: true,
13 | children: ['completed', 'failure'],
14 | method: 'Syncano.Actions.Classes.list'
15 | }
16 | }
17 | );
18 |
--------------------------------------------------------------------------------
/src/apps/Classes/index.js:
--------------------------------------------------------------------------------
1 | import Classes from './Classes';
2 | import ClassesStore from './ClassesStore';
3 | import ClassesList from './ClassesList';
4 | import ClassesActions from './ClassesActions';
5 |
6 | Classes.Actions = ClassesActions;
7 | Classes.Store = ClassesStore;
8 | Classes.List = ClassesList;
9 |
10 | export default Classes;
11 |
--------------------------------------------------------------------------------
/src/apps/CustomSockets/CustomSocketsEndpointsActions.js:
--------------------------------------------------------------------------------
1 | import CreateActions from '../../utils/ActionsConstructor';
2 |
3 | export default CreateActions(
4 | {
5 | fetch: {},
6 | setCurrentCustomSocketName: {},
7 | listSocketEndpoints: {
8 | asyncResult: true,
9 | loading: true,
10 | asyncForm: true,
11 | children: ['completed', 'failure'],
12 | method: 'Syncano.Actions.CustomSockets.listSocketEndpoints'
13 | }
14 | }
15 | );
16 |
--------------------------------------------------------------------------------
/src/apps/DataObjects/DataObjectsTable/DataObjectsTableDateCell.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Moment from 'moment';
3 |
4 | const DataObjectsTableDateCell = ({ content }) => {
5 | const date = Moment(content.value).format('DD/MM/YYYY');
6 | const time = Moment(content.value).format('LTS');
7 | const title = `${date} ${time}`;
8 |
9 | return (
10 |
11 | {date}
12 |
13 | );
14 | };
15 |
16 | export default DataObjectsTableDateCell;
17 |
--------------------------------------------------------------------------------
/src/apps/DataObjects/DataObjectsTable/DataObjectsTableFileCell.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { FontIcon } from 'material-ui';
3 |
4 | const DataObjectsTableFileCell = ({ content }) => {
5 | const handleClick = (event) => {
6 | event.preventDefault();
7 | event.stopPropagation();
8 | window.open(content.value, '_blank');
9 | };
10 |
11 | return (
12 |
13 |
14 |
15 | );
16 | };
17 |
18 | export default DataObjectsTableFileCell;
19 |
--------------------------------------------------------------------------------
/src/apps/DataObjects/DataObjectsTable/DataObjectsTableJSONCell.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Truncate from '../../../common/Truncate';
3 |
4 | const DataObjectsTableJSONCell = ({ content }) => {
5 | const textContent = JSON.stringify(content);
6 |
7 | return (
8 |
12 | );
13 | };
14 |
15 | export default DataObjectsTableJSONCell;
16 |
--------------------------------------------------------------------------------
/src/apps/DataObjects/DataObjectsTable/DataObjectsTableReferenceCell.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const DataObjectsTableReferenceCell = ({ content }) => (
4 | {`${content.target}: ${content.value}`}
5 | );
6 |
7 | export default DataObjectsTableReferenceCell;
8 |
--------------------------------------------------------------------------------
/src/apps/DataObjects/DataObjectsTable/DataObjectsTableTextCell.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Truncate from '../../../common/Truncate';
3 |
4 | const DataObjectsTableTextCell = ({ content }) => (
5 |
9 | );
10 |
11 | export default DataObjectsTableTextCell;
12 |
--------------------------------------------------------------------------------
/src/apps/DataObjects/DataObjectsTable/index.js:
--------------------------------------------------------------------------------
1 | import DataObjectsTable from './DataObjectsTable';
2 |
3 | export default DataObjectsTable;
4 |
--------------------------------------------------------------------------------
/src/apps/DataObjects/index.js:
--------------------------------------------------------------------------------
1 | import DataObjects from './DataObjects';
2 | import DataObjectsStore from './DataObjectsStore';
3 | import DataObjectsActions from './DataObjectsActions';
4 | import DataObjectDialog from './DataObjectDialog';
5 | import DataObjectDialogStore from './DataObjectDialogStore';
6 | import CheckAvatar from './CheckAvatar';
7 |
8 | DataObjects.Actions = DataObjectsActions;
9 | DataObjects.Store = DataObjectsStore;
10 | DataObjects.Dialog = DataObjectDialog;
11 | DataObjects.DialogStore = DataObjectDialogStore;
12 | DataObjects.CheckAvatar = CheckAvatar;
13 |
14 | export default DataObjects;
15 |
--------------------------------------------------------------------------------
/src/apps/GlobalConfig/index.js:
--------------------------------------------------------------------------------
1 | import GlobalConfigDialog from './GlobalConfigDialog';
2 |
3 | export default GlobalConfigDialog;
4 |
--------------------------------------------------------------------------------
/src/apps/Groups/index.js:
--------------------------------------------------------------------------------
1 | import GroupsActions from './../Groups/GroupsActions';
2 | import GroupsStore from './../Groups/GroupsStore';
3 | import GroupDialog from './../Groups/GroupDialog';
4 | import GroupDialogStore from './../Groups/GroupDialogStore';
5 | import GroupsList from './../Groups/GroupsList';
6 | import GroupsListItem from './../Groups/GroupsListItem';
7 | import GroupsDropdown from './../Groups/GroupsDropdown';
8 |
9 | export default {
10 | GroupsActions,
11 | GroupsStore,
12 | GroupDialog,
13 | GroupDialogStore,
14 | GroupsList,
15 | GroupsListItem,
16 | GroupsDropdown
17 | };
18 |
--------------------------------------------------------------------------------
/src/apps/Hosting/HostingActions.js:
--------------------------------------------------------------------------------
1 | import CreateActions from '../../utils/ActionsConstructor';
2 |
3 | export default CreateActions(
4 | {
5 | fetch: {},
6 | setHosting: {},
7 | fetchHostings: {
8 | asyncResult: true,
9 | loading: true,
10 | children: ['completed', 'failure'],
11 | method: 'Syncano.Actions.Hosting.list'
12 | }
13 | }
14 | );
15 |
--------------------------------------------------------------------------------
/src/apps/Hosting/HostingPublishDialogActions.js:
--------------------------------------------------------------------------------
1 | import CreateActions from '../../utils/ActionsConstructor';
2 |
3 | export default CreateActions(
4 | {
5 | publishHosting: {
6 | asyncResult: true,
7 | loading: true,
8 | children: ['completed', 'failure'],
9 | method: 'Syncano.Actions.Hosting.publish'
10 | }
11 | },
12 | {
13 | withDialog: true
14 | }
15 | );
16 |
--------------------------------------------------------------------------------
/src/apps/Hosting/HostingUploadDialogActions.js:
--------------------------------------------------------------------------------
1 | import CreateActions from '../../utils/ActionsConstructor';
2 |
3 | export default CreateActions(
4 | {},
5 | {
6 | withDialog: true
7 | }
8 | );
9 |
--------------------------------------------------------------------------------
/src/apps/Hosting/HostingUploadDialogStore.js:
--------------------------------------------------------------------------------
1 | import Reflux from 'reflux';
2 |
3 | import { DialogStoreMixin, StoreLoadingMixin } from '../../mixins';
4 |
5 | import HostingUploadDialogActions from './HostingUploadDialogActions';
6 |
7 | export default Reflux.createStore({
8 | listenables: HostingUploadDialogActions,
9 |
10 | mixins: [
11 | DialogStoreMixin,
12 | StoreLoadingMixin
13 | ],
14 |
15 | init() {
16 | this.data = this.getInitialState();
17 | this.setLoadingStates();
18 | }
19 | });
20 |
--------------------------------------------------------------------------------
/src/apps/Hosting/index.js:
--------------------------------------------------------------------------------
1 | import Hosting from './Hosting';
2 | import HostingList from './HostingList';
3 | import Files from './Files';
4 | import HostingFilesList from './HostingFilesList';
5 |
6 | Hosting.HostingList = HostingList;
7 | Hosting.Files = Files;
8 | Hosting.FilesList = HostingFilesList;
9 |
10 | export default Hosting;
11 |
--------------------------------------------------------------------------------
/src/apps/Instances/Instances.sass:
--------------------------------------------------------------------------------
1 | .instances-dropdown > div:first-child > div:nth-child(3)
2 | max-width: 100%
3 |
--------------------------------------------------------------------------------
/src/apps/Instances/index.js:
--------------------------------------------------------------------------------
1 | import Instances from './Instances';
2 | import InstancesStore from './InstancesStore';
3 | import InstancesList from './InstancesList';
4 | import InstancesActions from './InstancesActions';
5 | import InstanceDialog from './InstanceDialog';
6 | import InstanceDialogStore from './InstanceDialogStore';
7 |
8 | Instances.Actions = InstancesActions;
9 | Instances.Store = InstancesStore;
10 | Instances.List = InstancesList;
11 | Instances.Dialog = InstanceDialog;
12 | Instances.DialogStore = InstanceDialogStore;
13 |
14 | export default Instances;
15 |
--------------------------------------------------------------------------------
/src/apps/Profile/ProfileBillingChart.css:
--------------------------------------------------------------------------------
1 | .c3-axis {
2 | opacity: .5 !important;
3 | }
4 |
--------------------------------------------------------------------------------
/src/apps/Profile/ProfileBillingChartActions.js:
--------------------------------------------------------------------------------
1 | import CreateActions from '../../utils/ActionsConstructor';
2 |
3 | export default CreateActions({
4 | fetch: {},
5 | fetchTotalDailyUsage: {
6 | children: ['completed', 'failure'],
7 | method: 'Syncano.Actions.Usage.listTotalDailyUsage'
8 | },
9 | fetchBillingProfile: {
10 | children: ['completed', 'failure'],
11 | method: 'Syncano.Actions.Billing.getProfile'
12 | }
13 | });
14 |
--------------------------------------------------------------------------------
/src/apps/Profile/ProfileBillingPlanReceiptDialogActions.js:
--------------------------------------------------------------------------------
1 | import CreateActions from '../../utils/ActionsConstructor';
2 |
3 | export default CreateActions(
4 | {},
5 | {
6 | withDialog: true
7 | }
8 | );
9 |
--------------------------------------------------------------------------------
/src/apps/Profile/ProfileBillingPlanReceiptDialogStore.js:
--------------------------------------------------------------------------------
1 | import Reflux from 'reflux';
2 |
3 | import { DialogStoreMixin } from '../../mixins';
4 |
5 | import ProfileBillingPlanReceiptDialogActions from './ProfileBillingPlanReceiptDialogActions';
6 |
7 | export default Reflux.createStore({
8 | listenables: ProfileBillingPlanReceiptDialogActions,
9 |
10 | mixins: [DialogStoreMixin],
11 |
12 | init() {
13 | this.data = {};
14 | }
15 | });
16 |
--------------------------------------------------------------------------------
/src/apps/ProfileInvitations/index.js:
--------------------------------------------------------------------------------
1 | import ProfileInvitations from './ProfileInvitations';
2 | import ProfileInvitationsStore from './ProfileInvitationsStore';
3 | import ProfileInvitationsList from './ProfileInvitationsList';
4 | import ProfileInvitationsActions from './ProfileInvitationsActions';
5 |
6 | ProfileInvitations.Actions = ProfileInvitationsActions;
7 | ProfileInvitations.Store = ProfileInvitationsStore;
8 | ProfileInvitations.List = ProfileInvitationsList;
9 |
10 | export default ProfileInvitations;
11 |
--------------------------------------------------------------------------------
/src/apps/Session/NewLibConnection.js:
--------------------------------------------------------------------------------
1 | import Syncano from 'syncano';
2 |
3 | let connection = new Syncano({ baseUrl: APP_CONFIG.SYNCANO_BASE_URL });
4 |
5 | export default {
6 | Syncano,
7 |
8 | get() {
9 | return connection;
10 | },
11 |
12 | set(_connection) {
13 | connection = _connection;
14 | },
15 |
16 | reset() {
17 | connection.setAccountKey(null);
18 | }
19 | };
20 |
--------------------------------------------------------------------------------
/src/apps/Session/index.js:
--------------------------------------------------------------------------------
1 | import Actions from './SessionActions';
2 | import Store from './SessionStore';
3 |
4 | export {
5 | Actions,
6 | Store
7 | };
8 |
--------------------------------------------------------------------------------
/src/apps/SnackbarNotification/SnackbarNotificationActions.js:
--------------------------------------------------------------------------------
1 | import Reflux from 'reflux';
2 |
3 | export default Reflux.createActions(['set', 'dismiss']);
4 |
--------------------------------------------------------------------------------
/src/apps/SnackbarNotification/index.js:
--------------------------------------------------------------------------------
1 | import SnackbarNotification from './SnackbarNotification';
2 | import Actions from './SnackbarNotificationActions';
3 | import Store from './SnackbarNotificationStore';
4 |
5 | SnackbarNotification.Actions = Actions;
6 | SnackbarNotification.Store = Store;
7 |
8 | export default SnackbarNotification;
9 |
--------------------------------------------------------------------------------
/src/apps/Syncano/Actions/Channels.js:
--------------------------------------------------------------------------------
1 | export default {
2 | list() {
3 | this.NewLibConnection
4 | .Channel
5 | .please()
6 | .list()
7 | .ordering('desc')
8 | .then(this.completed)
9 | .catch(this.failure);
10 | }
11 | };
12 |
--------------------------------------------------------------------------------
/src/apps/Syncano/Actions/Classes.js:
--------------------------------------------------------------------------------
1 | export default {
2 | list() {
3 | this.NewLibConnection
4 | .Class
5 | .please()
6 | .list()
7 | .ordering('desc')
8 | .then((classes) => {
9 | const classesList = classes.filter((item) => item.name !== 'user_profile');
10 |
11 | this.completed(classesList);
12 | })
13 | .catch(this.failure);
14 | },
15 |
16 | get(name) {
17 | this.NewLibConnection
18 | .Class
19 | .please()
20 | .get({ name })
21 | .then(this.completed)
22 | .catch(this.failure);
23 | }
24 | };
25 |
--------------------------------------------------------------------------------
/src/apps/Syncano/Actions/CustomSockets.js:
--------------------------------------------------------------------------------
1 | export default {
2 | get(name) {
3 | return this.apiV2Request().get(`/sockets/${name}/`)
4 | .then(this.completed)
5 | .catch(this.failure);
6 | },
7 |
8 | list() {
9 | return this.apiV2Request().get('/sockets/')
10 | .then(this.completed)
11 | .catch(this.failure);
12 | },
13 |
14 | listSocketEndpoints(name) {
15 | return this.apiV2Request().get(`/endpoints/sockets/${name}/`)
16 | .then(this.completed)
17 | .catch(this.failure);
18 | }
19 | };
20 |
--------------------------------------------------------------------------------
/src/apps/Syncano/Actions/GlobalConfig.js:
--------------------------------------------------------------------------------
1 | export default {
2 | get() {
3 | const name = this.NewLibConnection.getInstanceName();
4 |
5 | this.NewLibConnection
6 | .Instance
7 | .please()
8 | .getGlobalConfig({ name })
9 | .then(this.completed)
10 | .catch(this.failure);
11 | },
12 |
13 | update(config) {
14 | const name = this.NewLibConnection.getInstanceName();
15 |
16 | this.NewLibConnection
17 | .Instance
18 | .please()
19 | .setGlobalConfig({ name }, config)
20 | .then(this.completed)
21 | .catch(this.failure);
22 | }
23 | };
24 |
--------------------------------------------------------------------------------
/src/apps/Syncano/Actions/Usage.js:
--------------------------------------------------------------------------------
1 | export default {
2 | listTotalDailyUsage(instanceName) {
3 | const params = instanceName !== 'all' ? { instance: instanceName } : { total: true };
4 |
5 | this.NewLibConnection
6 | .DailyUsage
7 | .please()
8 | .list({}, params)
9 | .currentMonth()
10 | .then(this.completed)
11 | .catch(this.failure);
12 | }
13 | };
14 |
--------------------------------------------------------------------------------
/src/apps/Syncano/index.js:
--------------------------------------------------------------------------------
1 | import Actions from './Actions';
2 |
3 | export default { Actions };
4 |
--------------------------------------------------------------------------------
/src/apps/Traces/index.js:
--------------------------------------------------------------------------------
1 | import Traces from './Traces';
2 | import TracesStore from './TracesStore';
3 | import TracesList from './TracesList';
4 | import TracesActions from './TracesActions';
5 |
6 | Traces.Actions = TracesActions;
7 | Traces.Store = TracesStore;
8 | Traces.List = TracesList;
9 |
10 | export default Traces;
11 |
--------------------------------------------------------------------------------
/src/apps/Usage/UsageChart.js:
--------------------------------------------------------------------------------
1 | import { asyncComponent } from 'react-async-loading';
2 |
3 | export default asyncComponent(() => System.import('../Profile/ProfileBillingChart.js'));
4 |
--------------------------------------------------------------------------------
/src/apps/Usage/index.js:
--------------------------------------------------------------------------------
1 | import Usage from './Usage';
2 |
3 | export default Usage;
4 |
--------------------------------------------------------------------------------
/src/apps/Users/index.js:
--------------------------------------------------------------------------------
1 | import Users from './Users';
2 | import UsersStore from './UsersStore';
3 | import UsersList from './UsersList';
4 | import UsersActions from './UsersActions';
5 | import UserDialog from './UserDialog';
6 | import UserDialogStore from './UserDialogStore';
7 | import UserInfo from './UserInfo';
8 |
9 | Users.Actions = UsersActions;
10 | Users.Store = UsersStore;
11 | Users.List = UsersList;
12 | Users.Dialog = UserDialog;
13 | Users.DialogStore = UserDialogStore;
14 | Users.Info = UserInfo;
15 |
16 | export default Users;
17 |
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/0078f486-8e52-42c0-ad81-3c8d3d43f48e.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/0078f486-8e52-42c0-ad81-3c8d3d43f48e.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/04801919-17ee-4c6b-8b17-eb1965cb3ed6.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/04801919-17ee-4c6b-8b17-eb1965cb3ed6.woff
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/04d1bf6c-070d-4b7e-9498-6051c9f0c349.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/04d1bf6c-070d-4b7e-9498-6051c9f0c349.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/065a6b14-b2cc-446e-9428-271c570df0d9.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/065a6b14-b2cc-446e-9428-271c570df0d9.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/17b90ef5-b63f-457b-a981-503bb7afe3c0.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/17b90ef5-b63f-457b-a981-503bb7afe3c0.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/19d12bba-92b1-43ad-9bab-cd36a4195c2a.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/19d12bba-92b1-43ad-9bab-cd36a4195c2a.woff
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/1a7173fa-062b-49ad-9915-bc57d3bfc1f5.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/1a7173fa-062b-49ad-9915-bc57d3bfc1f5.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/1e9b2738-9316-4b0c-97c0-5423b69ea147.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/1e9b2738-9316-4b0c-97c0-5423b69ea147.eot
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/2315df7a-8bc2-433d-bf0a-162fc0063de0.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/2315df7a-8bc2-433d-bf0a-162fc0063de0.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/25f994de-d13f-4a5d-a82b-bf925a1e054d.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/25f994de-d13f-4a5d-a82b-bf925a1e054d.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/3c210c80-960f-4684-850b-25390b4d08af.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/3c210c80-960f-4684-850b-25390b4d08af.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/4030caeb-d266-4d36-ac58-a3bb7a5b1bfa.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/4030caeb-d266-4d36-ac58-a3bb7a5b1bfa.eot
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/4577388c-510f-4366-addb-8b663bcc762a.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/4577388c-510f-4366-addb-8b663bcc762a.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/476612d9-282d-4f76-95cd-b4dd31e7ed21.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/476612d9-282d-4f76-95cd-b4dd31e7ed21.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/4b978f72-bb48-46c3-909a-2a8cd2f8819c.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/4b978f72-bb48-46c3-909a-2a8cd2f8819c.woff
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/57bf7902-79ee-4b31-a327-1bbf59a3d155.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/57bf7902-79ee-4b31-a327-1bbf59a3d155.eot
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/5ba5a010-7470-4d9d-8a49-2920dc1be1f8.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/5ba5a010-7470-4d9d-8a49-2920dc1be1f8.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/61bd362e-7162-46bd-b67e-28f366c4afbe.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/61bd362e-7162-46bd-b67e-28f366c4afbe.woff
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/63a166cb-be60-435c-a056-75172e43efa5.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/63a166cb-be60-435c-a056-75172e43efa5.eot
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/65d75eb0-2601-4da5-a9a4-9ee67a470a59.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/65d75eb0-2601-4da5-a9a4-9ee67a470a59.woff
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/6af9989e-235b-4c75-8c08-a83bdaef3f66.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/6af9989e-235b-4c75-8c08-a83bdaef3f66.eot
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/6d1ce413-19e7-4b43-b328-6cdedc58b35a.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/6d1ce413-19e7-4b43-b328-6cdedc58b35a.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/6dc0e7d8-9284-44e1-8f05-984a41daa3a4.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/6dc0e7d8-9284-44e1-8f05-984a41daa3a4.woff
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/710789a0-1557-48a1-8cec-03d52d663d74.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/710789a0-1557-48a1-8cec-03d52d663d74.eot
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/75b36c58-2a02-4057-a537-09af0832ae46.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/75b36c58-2a02-4057-a537-09af0832ae46.woff
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/908c4810-64db-4b46-bb8e-823eb41f68c0.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/908c4810-64db-4b46-bb8e-823eb41f68c0.woff
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/9bdf0737-f98c-477a-9365-ffc41b9d1285.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/9bdf0737-f98c-477a-9365-ffc41b9d1285.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/9ced8e96-4602-4507-8c20-4ff381949a9a.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/9ced8e96-4602-4507-8c20-4ff381949a9a.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/a2477e08-09d9-4d4b-97a9-23a1e22cb44c.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/a2477e08-09d9-4d4b-97a9-23a1e22cb44c.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/a59168c1-917d-4de9-a244-0316c057c357.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/a59168c1-917d-4de9-a244-0316c057c357.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/b290e775-e0f9-4980-914b-a4c32a5e3e36.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/b290e775-e0f9-4980-914b-a4c32a5e3e36.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/b5c44a82-eeb8-41de-9c3f-a8db50b24b8a.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/b5c44a82-eeb8-41de-9c3f-a8db50b24b8a.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/c70e90bc-3c94-41dc-bf14-caa727c76301.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/c70e90bc-3c94-41dc-bf14-caa727c76301.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/c78eb7af-a1c8-4892-974b-52379646fef4.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/c78eb7af-a1c8-4892-974b-52379646fef4.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/c9aeeabd-dd65-491d-b4be-3e0db9ae47a0.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/c9aeeabd-dd65-491d-b4be-3e0db9ae47a0.woff
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/cb5c71ad-e582-4d00-929c-67fbfaeb1c27.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/cb5c71ad-e582-4d00-929c-67fbfaeb1c27.woff
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/ccd17c6b-e7ed-4b73-b0d2-76712a4ef46b.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/ccd17c6b-e7ed-4b73-b0d2-76712a4ef46b.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/cdda031e-26e9-4269-83d1-5a218caa10db.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/cdda031e-26e9-4269-83d1-5a218caa10db.woff
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/cebcf56a-ea7e-4f5c-8110-a7ee367c1f91.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/cebcf56a-ea7e-4f5c-8110-a7ee367c1f91.eot
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/cee053ec-4b41-4506-a1fe-796261690610.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/cee053ec-4b41-4506-a1fe-796261690610.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/d513e15e-8f35-4129-ad05-481815e52625.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/d513e15e-8f35-4129-ad05-481815e52625.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/d8c50fcc-bc32-4f31-8c24-b170c64e2254.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/d8c50fcc-bc32-4f31-8c24-b170c64e2254.eot
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/deb5e718-7abb-4df3-9365-edfa95317090.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/deb5e718-7abb-4df3-9365-edfa95317090.woff2
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/e0542193-b2e6-4273-bc45-39d4dfd3c15b.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/e0542193-b2e6-4273-bc45-39d4dfd3c15b.eot
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/e6b412d9-d1ed-4b17-bb93-a6911df8640d.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/e6b412d9-d1ed-4b17-bb93-a6911df8640d.eot
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/edefe737-dc78-4aa3-ad03-3c6f908330ed.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/edefe737-dc78-4aa3-ad03-3c6f908330ed.eot
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/f1ebae2b-5296-4244-8771-5f40e60a564a.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/f1ebae2b-5296-4244-8771-5f40e60a564a.woff
--------------------------------------------------------------------------------
/src/assets/fonts/avenir/f55e4498-ad48-4577-93a0-c614de5cbbb8.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/avenir/f55e4498-ad48-4577-93a0-c614de5cbbb8.eot
--------------------------------------------------------------------------------
/src/assets/fonts/icons/Syncano-Icons.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/icons/Syncano-Icons.eot
--------------------------------------------------------------------------------
/src/assets/fonts/icons/Syncano-Icons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/icons/Syncano-Icons.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/icons/Syncano-Icons.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/icons/Syncano-Icons.woff
--------------------------------------------------------------------------------
/src/assets/fonts/icons/Syncano-Icons.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/fonts/icons/Syncano-Icons.woff2
--------------------------------------------------------------------------------
/src/assets/icons/account-star-variant.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/alert-circle-outline.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/alert.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/arrange-bring-forward.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/arrange-send-backward.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/arrow-down-bold.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/arrow-down.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/arrow-left-bold.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/arrow-left-drop-circle-outline.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/arrow-left.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/arrow-right-bold.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/arrow-right-drop-circle-outline.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/arrow-right.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/arrow-up-bold.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/arrow-up.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/bank.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/bing.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/book-variant.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/brightness-1.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/certificate.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/icons/chart-bar.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/chart-histogram.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/chart-line.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/check.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/checkerboard.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/chevron-down.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/chevron-left.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/chevron-right.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/chevron-up.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/close-box-outline.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/close.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/code-braces.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/code-tags.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/color-helper.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/custom-socket.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/delete.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/details.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/deviantart.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/email-outline.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/equal.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/exclamation.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/fast-forward.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/file-restore.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/icons/filter-variant.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/filter.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/flag.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/flash-auto.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/flash-off.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/flash.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/format-align-right.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/format-indent-decrease.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/format-indent-increase.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/format-italic.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/format-quote.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/format-size.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/format-strikethrough.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/forward.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/glass-stange.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/image-filter-hdr.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/layers.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/menu-down.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/menu-left.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/menu-right.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/menu-up.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/menu.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/minus.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/movie.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/navigation.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/not-equal.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/numeric-1-box.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/panorama.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/pause.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/pine-tree.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/plane.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/play.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/poll.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/pulse.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/quick-reply.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/repeat.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/reply-all.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/reply.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/rewind.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/send.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/sigma.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/skip-next.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/sort-variant.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/stop.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/tie.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/tile-four.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/transfer.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/trending-down.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/trending-neutral.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/trending-up.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/undo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/unfold-less.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/unfold-more.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/verified.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/view-array.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/view-carousel.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/view-column.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/view-dashboard.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/view-headline.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/view-list.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/view-module.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/view-quilt.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/view-stream.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/volume-low.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/water.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/window-maximize.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/window-minimize.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/src/assets/icons/wrap-text.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/assets/img/check.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/src/assets/img/fox.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/img/fox.png
--------------------------------------------------------------------------------
/src/assets/img/illustrations/what-is-syncano.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/img/illustrations/what-is-syncano.png
--------------------------------------------------------------------------------
/src/assets/img/stripe-badge@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Syncano/syncano-dashboard/1db0b4bb20e6fbae3d33a2b575ba3db5c6cee6b5/src/assets/img/stripe-badge@3x.png
--------------------------------------------------------------------------------
/src/assets/sass/_config.sass:
--------------------------------------------------------------------------------
1 | @import "config/typeplate-config.scss"
2 |
3 | $blue: #2196F3 //blue500
4 | $gray: rgba(0, 0, 0, .54)
5 |
6 | $base-font-size: 14px
7 | $base-line-height: 8px
8 | $rhythm-unit: "rem"
9 |
--------------------------------------------------------------------------------
/src/assets/sass/_lists.sass:
--------------------------------------------------------------------------------
1 | .list--flex
2 | +display-flex
3 | +justify-content(space-between)
4 | +flex-direction(column)
5 | padding: 0
6 | margin: 0
7 |
8 | > li
9 | display: inline-block
10 |
11 | .list--horizontal
12 | +flex-direction(row)
13 |
--------------------------------------------------------------------------------
/src/assets/sass/_mobile.sass:
--------------------------------------------------------------------------------
1 | @media screen and (max-width: 767px)
2 | body
3 | #elevio-widget,
4 | #intercom-container
5 | display: none !important
6 |
--------------------------------------------------------------------------------
/src/assets/sass/_text.sass:
--------------------------------------------------------------------------------
1 | @each $align in (left right center)
2 | $selector: ".text--#{$align}"
3 |
4 | #{$selector}
5 | text-align: $align
6 |
--------------------------------------------------------------------------------
/src/assets/sass/main.sass:
--------------------------------------------------------------------------------
1 | @import 'config'
2 | @import 'vendor/typeplate/typeplate.scss'
3 | @import 'spacings'
4 | @import 'scaffold'
5 | @import 'grid'
6 | @import 'compass.scss'
7 | @import 'base'
8 | @import 'lists'
9 | @import 'text'
10 | @import 'mobile'
11 |
--------------------------------------------------------------------------------
/src/common/AlertPageContent/index.js:
--------------------------------------------------------------------------------
1 | import AlertPageContent from './AlertPageContent';
2 |
3 | export default AlertPageContent;
4 |
--------------------------------------------------------------------------------
/src/common/AutoCompleteWrapper/index.js:
--------------------------------------------------------------------------------
1 | import AutoCompleteWrapper from './AutoCompleteWrapper';
2 |
3 | export default AutoCompleteWrapper;
4 |
--------------------------------------------------------------------------------
/src/common/BashSnippet/index.js:
--------------------------------------------------------------------------------
1 | import BashSnippet from './BashSnippet';
2 |
3 | export default BashSnippet;
4 |
--------------------------------------------------------------------------------
/src/common/Billing/index.js:
--------------------------------------------------------------------------------
1 | import ChartLegend from './ChartLegend';
2 | import SwitchSection from './SwitchSection';
3 | import PlanExplorerButton from './PlanExplorerButton';
4 |
5 | export default {
6 | SwitchSection,
7 | PlanExplorerButton,
8 | ChartLegend
9 | };
10 |
--------------------------------------------------------------------------------
/src/common/CheckIcon/CircleCheckIcon.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import CheckIcon from './CheckIcon';
4 |
5 | export default (props) => {
6 | const icon = {
7 | className: props.iconClassName,
8 | color: '#FFF',
9 | circleColor: props.background
10 | };
11 |
12 | return (
13 |
17 | );
18 | };
19 |
--------------------------------------------------------------------------------
/src/common/CheckIcon/index.js:
--------------------------------------------------------------------------------
1 | import CheckIcon from './CheckIcon';
2 | import CircleCheckIcon from './CircleCheckIcon';
3 | import SocketCheckIcon from './SocketCheckIcon';
4 |
5 | CheckIcon.Socket = SocketCheckIcon;
6 | CheckIcon.Circle = CircleCheckIcon;
7 |
8 | export default CheckIcon;
9 |
--------------------------------------------------------------------------------
/src/common/Clipboard/index.js:
--------------------------------------------------------------------------------
1 | import Clipboard from './Clipboard';
2 |
3 | export default Clipboard;
4 |
--------------------------------------------------------------------------------
/src/common/CloseButton/index.js:
--------------------------------------------------------------------------------
1 | import CloseButton from './CloseButton';
2 |
3 | export default CloseButton;
4 |
--------------------------------------------------------------------------------
/src/common/CodePreview/index.js:
--------------------------------------------------------------------------------
1 | import CodePreview from './CodePreview';
2 | import CodePreviewItem from './CodePreviewItem';
3 |
4 | CodePreview.Item = CodePreviewItem;
5 |
6 | export default CodePreview;
7 |
--------------------------------------------------------------------------------
/src/common/Color/index.js:
--------------------------------------------------------------------------------
1 | import ColorStore from './ColorStore';
2 |
3 | export default ColorStore;
4 |
--------------------------------------------------------------------------------
/src/common/ColorIconPicker/index.js:
--------------------------------------------------------------------------------
1 | import ColorIconPicker from './ColorIconPicker';
2 | import PreviewCircle from './PreviewCircle';
3 | import PreviewHexagon from './PreviewHexagon';
4 | import ColorPicker from './ColorPicker';
5 | import IconPicker from './IconPicker';
6 |
7 | ColorIconPicker.IconPicker = IconPicker;
8 | ColorIconPicker.ColorPicker = ColorPicker;
9 | ColorIconPicker.PreviewCircle = PreviewCircle;
10 | ColorIconPicker.PreviewHexagon = PreviewHexagon;
11 |
12 | export default ColorIconPicker;
13 |
--------------------------------------------------------------------------------
/src/common/ColumnList/Column/CircleCheckIcon.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import CheckIcon from './CheckIcon';
3 | import CircleCheckIcon from '../../CheckIcon/CircleCheckIcon';
4 |
5 | const ColumnCircleCheckIcon = (props) => (
6 |
10 | );
11 |
12 | export default ColumnCircleCheckIcon;
13 |
--------------------------------------------------------------------------------
/src/common/ColumnList/Column/SocketCheckIcon.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import CheckIcon from './CheckIcon';
4 | import SocketCheckIcon from '../../CheckIcon/SocketCheckIcon';
5 |
6 | const ColumnSocketCheckIcon = (props) => (
7 |
11 | );
12 |
13 | export default ColumnSocketCheckIcon;
14 |
--------------------------------------------------------------------------------
/src/common/ColumnList/ColumnListConstans.js:
--------------------------------------------------------------------------------
1 | export default {
2 | DEFAULT_BACKGROUND: 'indigo',
3 | DEFAULT_ICON: 'cloud',
4 | DEFAULT_CLASSNAME: {
5 | CHECK_ICON: 'col-xs-12',
6 | DATE: 'col-date',
7 | DESC: 'col-flex-1',
8 | ICON_NAME: 'col-xs-10',
9 | ID: 'col-xs-2',
10 | KEY: 'col-flex-1',
11 | MENU: 'col-menu',
12 | NAME: 'col-xs-8',
13 | TEXT: 'col-xs-4'
14 | },
15 | DEFAULT_CELL_PADDING: '16px 8px',
16 | DEFAULT_ITEM_HEIGHT: 64
17 | };
18 |
--------------------------------------------------------------------------------
/src/common/ColumnList/Header.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Radium from 'radium';
3 |
4 | export default Radium(React.createClass({
5 | displayName: 'Header',
6 |
7 | getStyles() {
8 | return {
9 | display: 'flex',
10 | alignItems: 'center',
11 | fontSize: 14,
12 | lineHeight: '24px',
13 | color: 'rgba(0,0,0,.54)',
14 | marginBottom: 16
15 | };
16 | },
17 |
18 | render() {
19 | const styles = this.getStyles();
20 |
21 | return (
22 |
23 | {this.props.children}
24 |
25 | );
26 | }
27 | }));
28 |
--------------------------------------------------------------------------------
/src/common/ColumnList/ItemColumn.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Radium from 'radium';
3 |
4 | export default Radium(React.createClass({
5 |
6 | displayName: 'ItemColumn',
7 |
8 | getStyles() {
9 | return {
10 | display: 'flex',
11 | flexDirection: 'column',
12 | justifyContent: 'center'
13 | };
14 | },
15 |
16 | render() {
17 | const styles = this.getStyles();
18 |
19 | return (
20 |
21 | {this.props.children}
22 |
23 | );
24 | }
25 | }));
26 |
--------------------------------------------------------------------------------
/src/common/ColumnList/index.js:
--------------------------------------------------------------------------------
1 | import Column from './Column';
2 | import ColName from './ColName';
3 | import ColNameDesc from './ColNameDesc';
4 | import ColumnListConstans from './ColumnListConstans';
5 | import EmptyItem from './EmptyListItem';
6 | import Header from './Header';
7 | import Item from './Item';
8 | import ItemColumn from './ItemColumn';
9 |
10 | export default {
11 | Column,
12 | ColName,
13 | ColNameDesc,
14 | ColumnListConstans,
15 | EmptyItem,
16 | Header,
17 | Item,
18 | ItemColumn
19 | };
20 |
--------------------------------------------------------------------------------
/src/common/Container/TabsContainer.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Container from './Container';
3 |
4 | export default React.createClass({
5 | displayName: 'TabsContainer',
6 |
7 | getStyles() {
8 | return {
9 | maxWidth: '1000px',
10 | margin: '0 auto'
11 | };
12 | },
13 |
14 | render() {
15 | const styles = this.getStyles();
16 | const { tabs, children } = this.props;
17 |
18 | return (
19 |
20 |
21 | {tabs}
22 |
23 | {children}
24 |
25 | );
26 | }
27 | });
28 |
--------------------------------------------------------------------------------
/src/common/Container/index.js:
--------------------------------------------------------------------------------
1 | import Container from './Container';
2 | import EmptyContainer from './EmptyContainer';
3 | import LoadingContainer from './LoadingContainer';
4 | import TabsContainer from './TabsContainer';
5 |
6 | Container.Empty = EmptyContainer;
7 | Container.Loading = LoadingContainer;
8 | Container.Tabs = TabsContainer;
9 |
10 | export default Container;
11 |
--------------------------------------------------------------------------------
/src/common/CreditCard/index.js:
--------------------------------------------------------------------------------
1 | import CreditCard from './CreditCard';
2 |
3 | export default CreditCard;
4 |
--------------------------------------------------------------------------------
/src/common/CreditCardForm/index.js:
--------------------------------------------------------------------------------
1 | import CreditCardForm from './CreditCardForm';
2 |
3 | export default CreditCardForm;
4 |
--------------------------------------------------------------------------------
/src/common/CustomTitle/index.js:
--------------------------------------------------------------------------------
1 | import CustomTitle from './CustomTitle';
2 |
3 | export default CustomTitle;
4 |
--------------------------------------------------------------------------------
/src/common/DataObjectsAmount/DataObjectsAmount.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { withRouter } from 'react-router';
3 |
4 | const DataObjectsAmount = ({ dataObjects, ...other }) => {
5 | const itemsAmount = dataObjects < 1000 ? dataObjects : `~ ${dataObjects}`;
6 | const styles = {
7 | display: 'flex',
8 | flexDirection: 'row',
9 | alignItems: 'center'
10 | };
11 |
12 |
13 | return (
14 |
15 | {itemsAmount}
16 |
17 |
18 | );
19 | };
20 |
21 | export default withRouter(DataObjectsAmount);
22 |
--------------------------------------------------------------------------------
/src/common/DataObjectsAmount/index.js:
--------------------------------------------------------------------------------
1 | import DataObjectsAmount from './DataObjectsAmount';
2 |
3 | export default DataObjectsAmount;
4 |
--------------------------------------------------------------------------------
/src/common/Dialog/DialogContent.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | export default ({ children }) => (
4 |
5 | {children}
6 |
7 | );
8 |
--------------------------------------------------------------------------------
/src/common/Dialog/DialogSidebarBox.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | export default ({ children }) => {
4 | const styles = {
5 | root: {
6 | background: 'rgba(184, 192, 201, .1)',
7 | border: '1px solid rgba(184, 192, 201, .3)',
8 | borderRadius: 4,
9 | padding: 15,
10 | color: 'rgba(68, 68, 68, .5)',
11 | fontSize: 13,
12 | lineHeight: 1.5
13 | }
14 | };
15 |
16 | return (
17 |
18 | {children}
19 |
20 | );
21 | };
22 |
--------------------------------------------------------------------------------
/src/common/Dialog/DialogSidebarSection.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const DialogSidebarSection = ({ last, title, children }) => (
4 |
5 | {title &&
{title}
}
6 | {children}
7 |
8 | );
9 |
10 | export default DialogSidebarSection;
11 |
--------------------------------------------------------------------------------
/src/common/DialogRefreshButton/index.js:
--------------------------------------------------------------------------------
1 | import DialogRefreshButton from './DialogRefreshButton';
2 |
3 | export default DialogRefreshButton;
4 |
--------------------------------------------------------------------------------
/src/common/DirectoryNavigation/index.js:
--------------------------------------------------------------------------------
1 | import DirectoryNavigation from './DirectoryNavigation';
2 |
3 | export default DirectoryNavigation;
4 |
--------------------------------------------------------------------------------
/src/common/DropZone/index.js:
--------------------------------------------------------------------------------
1 | import DropZone from './DropZone';
2 | import UploadFileButton from './UploadFileButton';
3 |
4 | DropZone.UploadFileButton = UploadFileButton;
5 |
6 | export default DropZone;
7 |
--------------------------------------------------------------------------------
/src/common/Dropdown/index.js:
--------------------------------------------------------------------------------
1 | import DropdownNotifiItem from './DropdownNotifiItem';
2 |
3 | const Dropdown = {};
4 |
5 | Dropdown.NotifiItem = DropdownNotifiItem;
6 |
7 | export default Dropdown;
8 |
--------------------------------------------------------------------------------
/src/common/Editor/index.js:
--------------------------------------------------------------------------------
1 | import { asyncComponent } from 'react-async-loading';
2 |
3 | export default asyncComponent(() => System.import('./Editor.js'));
4 |
--------------------------------------------------------------------------------
/src/common/EmptyView/index.js:
--------------------------------------------------------------------------------
1 | import EmptyView from './EmptyView';
2 | import EmptyViewCLI from './EmptyViewCLI';
3 | import EmptyViewDouble from './EmptyViewDouble';
4 | import EmptyViewSmall from './EmptyViewSmall';
5 |
6 | EmptyView.CLI = EmptyViewCLI;
7 | EmptyView.Double = EmptyViewDouble;
8 | EmptyView.Small = EmptyViewSmall;
9 |
10 | export default EmptyView;
11 |
--------------------------------------------------------------------------------
/src/common/Header/index.js:
--------------------------------------------------------------------------------
1 | import Header from './Header';
2 | import HeaderInstancesDropdown from './HeaderInstancesDropdown';
3 | import InvitationItem from './InvitationItem';
4 |
5 | Header.InstancesDropdown = HeaderInstancesDropdown;
6 | Header.InvitationItem = InvitationItem;
7 |
8 | export default Header;
9 |
--------------------------------------------------------------------------------
/src/common/HeaderButton.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { FlatButton, FontIcon } from 'material-ui';
3 |
4 | const iconStyle = {
5 | fontSize: '14px',
6 | color: '#fff',
7 | opacity: '0.5' };
8 |
9 |
10 | const HeaderButton = (props) => (
11 | }
16 | hoverColor="#4C38D0"
17 | {...props}
18 | />
19 | );
20 |
21 | export default HeaderButton;
22 |
--------------------------------------------------------------------------------
/src/common/Icon/index.js:
--------------------------------------------------------------------------------
1 | import IconStore from './IconStore';
2 | import RoundIcon from './RoundIcon';
3 |
4 | RoundIcon.Store = IconStore;
5 |
6 | export default RoundIcon;
7 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/accessibility.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/account-child.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/account-circle.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/airplanemode-on.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/arrow-back.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/arrow_down.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/arrow_up.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/autorenew.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/av-timer.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/bug-report.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/cached.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/call-split.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/call.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/cart.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/checkbox-blank.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/checkbox-marked.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/close.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/cloud.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/color-lens.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/credit-card.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/devices.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/directions-car.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/directions-subway.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/done.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/email.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/error.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/event.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/facebook.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/favorite.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/flag.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/folder.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/get-app.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/grade.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/group-add.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/home.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/inbox.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/info.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/keyboard-arrow-down.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/keyboard-arrow-left.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/keyboard-arrow-right.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/keyboard-arrow-up.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/label.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/layers.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/local-bar.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/local-offer.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/location-on.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/lock.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/map.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/menu-down.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/menu.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/more-horiz.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/more-vert.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/navigate_after.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/navigate_before.svg:
--------------------------------------------------------------------------------
1 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/notifications-none.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/notifications.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/person-add.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/phone-android.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/play-arrow.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/playlist-add.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/plus.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/publ.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/query-builder.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/question-answer.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/room.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/school.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/search.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/settings-backup-restore.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/share.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/shopping-cart.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/sync-problem.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/sync.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/system-update-tv.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/terminal.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/theaters.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/unfold-less.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/unfold-more.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/videocam.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/view-module.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/view-stream.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/vpn-key.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/warning.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/whatshot.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/Icon/svg/work.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/src/common/InnerToolbar/index.js:
--------------------------------------------------------------------------------
1 | import InnerToolbar from './InnerToolbar';
2 | import InnerToolbarDropdown from './InnerToolbarDropdown';
3 |
4 | InnerToolbar.Dropdown = InnerToolbarDropdown;
5 |
6 | export default InnerToolbar;
7 |
--------------------------------------------------------------------------------
/src/common/LinkWithIcon/index.js:
--------------------------------------------------------------------------------
1 | import LinkWithIcon from './LinkWithIcon';
2 |
3 | export default LinkWithIcon;
4 |
--------------------------------------------------------------------------------
/src/common/LinkWrapper/LinkWrapper.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Link } from 'react-router';
3 | import Radium from 'radium';
4 | import { colors as Colors } from 'material-ui/styles/';
5 |
6 | const RadiumLink = Radium(Link);
7 |
8 | export default Radium(({ style, children, ...other }) => {
9 | const styles = {
10 | color: '#444',
11 | cursor: 'pointer',
12 | ':hover': {
13 | color: Colors.blue400
14 | }
15 | };
16 |
17 | return (
18 |
22 | {children}
23 |
24 | );
25 | });
26 |
--------------------------------------------------------------------------------
/src/common/LinkWrapper/index.js:
--------------------------------------------------------------------------------
1 | import LinkWrapper from './LinkWrapper';
2 |
3 | export default LinkWrapper;
4 |
--------------------------------------------------------------------------------
/src/common/Lists/ListContainer.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const ListContainer = ({ children, style, className, ...other }) => (
4 |
9 | {children}
10 |
11 | );
12 |
13 | ListContainer.propTypes = {
14 | style: React.PropTypes.object,
15 | className: React.PropTypes.string
16 | };
17 |
18 | export default ListContainer;
19 |
--------------------------------------------------------------------------------
/src/common/Lists/MenuItem.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { MenuItem } from 'material-ui';
3 |
4 | export default ({ primaryText = 'Delete Selected', checkedItemsCount, disabled, ...other }) => (
5 |
10 | );
11 |
--------------------------------------------------------------------------------
/src/common/Lists/index.js:
--------------------------------------------------------------------------------
1 | import List from './List';
2 | import Container from './ListContainer';
3 | import Menu from './Menu';
4 | import MenuItem from './MenuItem';
5 |
6 | export default {
7 | Container,
8 | List,
9 | Menu,
10 | MenuItem
11 | };
12 |
--------------------------------------------------------------------------------
/src/common/Loading/index.js:
--------------------------------------------------------------------------------
1 | import Loading from './Loading';
2 |
3 | export default Loading;
4 |
--------------------------------------------------------------------------------
/src/common/Logo/Logo.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Isvg from 'react-inlinesvg';
3 |
4 | import './Logo.sass';
5 |
6 | const Logo = ({ style, className }) => (
7 |
13 | );
14 |
15 | export default Logo;
16 |
--------------------------------------------------------------------------------
/src/common/Logo/Logo.sass:
--------------------------------------------------------------------------------
1 | @import "../../assets/sass/config"
2 |
3 | .logo-blue,
4 | .logo-white
5 | svg
6 | display: block
7 | height: inherit
8 |
9 | .logo-white path
10 | fill: #ffffff !important
11 |
12 | .logo-blue path
13 | fill: #0d65bc
14 |
--------------------------------------------------------------------------------
/src/common/Logo/index.js:
--------------------------------------------------------------------------------
1 | import Logo from './Logo';
2 |
3 | export default Logo;
4 |
--------------------------------------------------------------------------------
/src/common/MethodLabel/index.js:
--------------------------------------------------------------------------------
1 | import MethodLabel from './MethodLabel';
2 |
3 | export default MethodLabel;
4 |
--------------------------------------------------------------------------------
/src/common/MobileOnboarding/index.js:
--------------------------------------------------------------------------------
1 | import MobileOnboarding from './MobileOnboarding';
2 | import MobileOnboardingSlide from './MobileOnboardingSlide';
3 |
4 | MobileOnboarding.Slide = MobileOnboardingSlide;
5 |
6 | export default MobileOnboarding;
7 |
--------------------------------------------------------------------------------
/src/common/NoMobileInfo/index.js:
--------------------------------------------------------------------------------
1 | import { asyncComponent } from 'react-async-loading';
2 |
3 | export default asyncComponent(() => System.import('./NoMobileInfo.js'));
4 |
--------------------------------------------------------------------------------
/src/common/Notification/NotificationCloseButton.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const NotificationCloseButton = ({ isVisible, onClick }) => {
4 | const styles = {
5 | root: {
6 | position: 'absolute',
7 | top: 4,
8 | right: 8,
9 | cursor: 'pointer',
10 | fontWeight: 700
11 | }
12 | };
13 |
14 | if (isVisible) {
15 | return (
16 |
20 | x
21 |
22 | );
23 | }
24 |
25 | return null;
26 | };
27 |
28 | export default NotificationCloseButton;
29 |
--------------------------------------------------------------------------------
/src/common/Notification/index.js:
--------------------------------------------------------------------------------
1 | import Notification from './Notification';
2 |
3 | export default Notification;
4 |
--------------------------------------------------------------------------------
/src/common/Onboarding/index.js:
--------------------------------------------------------------------------------
1 | import Onboarding from './Onboarding';
2 |
3 | export default Onboarding;
4 |
--------------------------------------------------------------------------------
/src/common/PageIntro/index.js:
--------------------------------------------------------------------------------
1 | import PageIntro from './PageIntro';
2 | import PageIntroHOC from './PageIntroHOC';
3 |
4 | PageIntro.HOC = PageIntroHOC;
5 |
6 | export default PageIntro;
7 |
--------------------------------------------------------------------------------
/src/common/Pagination/index.js:
--------------------------------------------------------------------------------
1 | import Pagination from './Pagination';
2 |
3 | export default Pagination;
4 |
--------------------------------------------------------------------------------
/src/common/PaymentIcon/index.js:
--------------------------------------------------------------------------------
1 | import PaymentIcon from './PaymentIcon';
2 | import AmericanExpress from './AmericanExpress';
3 | import DinersClub from './DinersClub';
4 | import Discover from './Discover';
5 | import Jcb from './Jcb';
6 | import MasterCard from './MasterCard';
7 | import Visa from './Visa';
8 |
9 | PaymentIcon.AmericanExpress = AmericanExpress;
10 | PaymentIcon.DinersClub = DinersClub;
11 | PaymentIcon.Discover = Discover;
12 | PaymentIcon.Jcb = Jcb;
13 | PaymentIcon.MasterCard = MasterCard;
14 | PaymentIcon.Visa = Visa;
15 |
16 | export default PaymentIcon;
17 |
--------------------------------------------------------------------------------
/src/common/PaymentIcons/index.js:
--------------------------------------------------------------------------------
1 | import PaymentIcons from './PaymentIcons';
2 |
3 | export default PaymentIcons;
4 |
--------------------------------------------------------------------------------
/src/common/Popover/index.js:
--------------------------------------------------------------------------------
1 | import Popover from './Popover';
2 |
3 | export default Popover;
4 |
--------------------------------------------------------------------------------
/src/common/PricingPlans/index.js:
--------------------------------------------------------------------------------
1 | import PricingPlans from './PricingPlans';
2 |
3 | export default PricingPlans;
4 |
--------------------------------------------------------------------------------
/src/common/RegistryEmptyView/index.js:
--------------------------------------------------------------------------------
1 | import RegistryEmptyView from './RegistryEmptyView';
2 |
3 | export default RegistryEmptyView;
4 |
--------------------------------------------------------------------------------
/src/common/SearchResultsCountBox/SearchResultsCountBox.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | const SearchResultsCountBox = ({ className, children }) => {
4 | const getStyles = () => ({
5 | root: {
6 | border: '1px dashed #dedede',
7 | padding: 12,
8 | textAlign: 'center',
9 | lineHeight: 1
10 | }
11 | });
12 |
13 | const styles = getStyles();
14 |
15 | return (
16 |
20 | {children}
21 |
22 | );
23 | };
24 |
25 | export default SearchResultsCountBox;
26 |
--------------------------------------------------------------------------------
/src/common/SearchResultsCountBox/index.js:
--------------------------------------------------------------------------------
1 | import SearchResultsCountBox from './SearchResultsCountBox';
2 |
3 | export default SearchResultsCountBox;
4 |
--------------------------------------------------------------------------------
/src/common/SelectFieldWrapper/index.js:
--------------------------------------------------------------------------------
1 | import SelectFieldWrapper from './SelectFieldWrapper';
2 |
3 | export default SelectFieldWrapper;
4 |
--------------------------------------------------------------------------------
/src/common/SelectWrapper/SelectWrapper.css:
--------------------------------------------------------------------------------
1 | .select-wrapper-errors > div {
2 | border-color: #F44336;
3 | }
4 |
--------------------------------------------------------------------------------
/src/common/SelectWrapper/index.js:
--------------------------------------------------------------------------------
1 | import SelectWrapper from './SelectWrapper';
2 |
3 | export default SelectWrapper;
4 |
--------------------------------------------------------------------------------
/src/common/Show/Show.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | export default React.createClass({
4 | displayName: 'Show',
5 |
6 | render() {
7 | if (!this.props.if) {
8 | return null;
9 | }
10 |
11 | if (React.Children.count(this.props.children) > 1) {
12 | return {this.props.children}
;
13 | }
14 |
15 | return this.props.children;
16 | }
17 | });
18 |
--------------------------------------------------------------------------------
/src/common/Show/index.js:
--------------------------------------------------------------------------------
1 | import Show from './Show';
2 |
3 | export default Show;
4 |
--------------------------------------------------------------------------------
/src/common/ShowMore/ShowMore.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { colors as Colors } from 'material-ui/styles/';
3 | import { FlatButton } from 'material-ui';
4 |
5 | const ShowMore = ({ style, label = 'SHOW MORE', visible = true, ...other }) => {
6 | if (visible) {
7 | return (
8 |
9 |
14 |
15 | );
16 | }
17 |
18 | return ;
19 | };
20 |
21 | export default ShowMore;
22 |
--------------------------------------------------------------------------------
/src/common/ShowMore/index.js:
--------------------------------------------------------------------------------
1 | import ShowMore from './ShowMore';
2 |
3 | export default ShowMore;
4 |
--------------------------------------------------------------------------------
/src/common/Sidebar/List.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { List } from 'material-ui';
3 | import ListSubheader from './ListSubheader';
4 |
5 | export default ({ subheader, children }) => {
6 | const styles = {
7 | list: {
8 | paddingTop: 0,
9 | paddingBottom: 10,
10 | backgroundColor: 'transparent',
11 | borderBottom: '1px solid #D8D8D8'
12 | }
13 | };
14 |
15 | return (
16 |
17 |
18 |
19 | {children}
20 |
21 |
22 | );
23 | };
24 |
--------------------------------------------------------------------------------
/src/common/Sidebar/ListSubheader.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Radium from 'radium';
3 |
4 | export default Radium(({ text }) => {
5 | const styles = {
6 | root: {
7 | padding: '20px 20px 10px',
8 | display: 'flex',
9 | alignItems: 'center'
10 | },
11 | text: {
12 | color: '#949CAD',
13 | fontSize: 10,
14 | textTransform: 'uppercase',
15 | paddingRight: 10
16 | }
17 | };
18 |
19 | return (
20 |
24 | );
25 | });
26 |
--------------------------------------------------------------------------------
/src/common/Sidebar/NestedLinkListItem.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import LinkListItem from './LinkListItem';
3 |
4 | export default (props) => {
5 | const styles = {
6 | root: {
7 | color: '#9b9b9b',
8 | fontSize: 12,
9 | lineHeight: '16px'
10 | },
11 | innerDivStyle: {
12 | padding: '8px 20px 8px 48px',
13 | marginLeft: 20
14 | }
15 | };
16 |
17 | return (
18 |
23 | );
24 | };
25 |
--------------------------------------------------------------------------------
/src/common/Sidebar/index.js:
--------------------------------------------------------------------------------
1 | import Sidebar from './Sidebar';
2 | import List from './List';
3 | import ListItem from './ListItem';
4 | import LinkListItem from './LinkListItem';
5 | import ListSubheader from './ListSubheader';
6 | import NestedLinkListItem from './NestedLinkListItem';
7 |
8 | Sidebar.List = List;
9 | Sidebar.ListItem = ListItem;
10 | Sidebar.NestedLinkListItem = NestedLinkListItem;
11 | Sidebar.LinkListItem = LinkListItem;
12 | Sidebar.ListSubheader = ListSubheader;
13 |
14 | export default Sidebar;
15 |
--------------------------------------------------------------------------------
/src/common/Slider/index.js:
--------------------------------------------------------------------------------
1 | import Slider from './Slider';
2 | import SliderSection from './SliderSection';
3 |
4 | Slider.Section = SliderSection;
5 |
6 | export default Slider;
7 |
--------------------------------------------------------------------------------
/src/common/SocialAuthButtonsList/SocialAuthButtonsListItemDivider.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Divider } from 'material-ui';
3 | import { colors as Colors } from 'material-ui/styles/';
4 |
5 | export default React.createClass({
6 | displayName: 'SocialAuthButtonsListItemDivider',
7 |
8 | getStyles() {
9 | return {
10 | backgroundColor: Colors.blue700
11 | };
12 | },
13 |
14 | render() {
15 | const styles = this.getStyles();
16 |
17 | return (
18 |
19 | );
20 | }
21 | });
22 |
--------------------------------------------------------------------------------
/src/common/SocialAuthButtonsList/index.js:
--------------------------------------------------------------------------------
1 | import SocialAuthButtonsList from './SocialAuthButtonsList';
2 | import SocialAuthButtonsListItem from './SocialAuthButtonsListItem';
3 | import SocialAuthButtonsListItemDivider from './SocialAuthButtonsListItemDivider';
4 |
5 | SocialAuthButtonsList.Item = SocialAuthButtonsListItem;
6 | SocialAuthButtonsList.ItemDivider = SocialAuthButtonsListItemDivider;
7 |
8 | export default SocialAuthButtonsList;
9 |
--------------------------------------------------------------------------------
/src/common/Socket/CustomSocket.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { colors as Colors } from 'material-ui/styles/';
3 | import SocketWrapper from './SocketWrapper';
4 |
5 | const CustomSocket = ({ tooltip = 'Create a Socket', iconStyle, ...other }) => (
6 |
12 | );
13 |
14 | export default CustomSocket;
15 |
--------------------------------------------------------------------------------
/src/common/Socket/Hosting.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { colors as Colors } from 'material-ui/styles/';
3 | import SocketWrapper from './SocketWrapper';
4 |
5 | const HostingSocket = ({ tooltip = 'Create a Hosting Socket', iconStyle, ...other }) => (
6 |
12 | );
13 |
14 | export default HostingSocket;
15 |
--------------------------------------------------------------------------------
/src/common/Socket/SocketWrapper.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { IconButton } from 'material-ui';
3 |
4 | export default ({ style, iconStyle, ...other }) => {
5 | const styles = {
6 | style: {
7 | padding: 6
8 | },
9 | iconStyle: {
10 | fontSize: 36
11 | }
12 | };
13 |
14 | return (
15 |
20 | );
21 | };
22 |
--------------------------------------------------------------------------------
/src/common/Spacing.js:
--------------------------------------------------------------------------------
1 | export default {
2 | iconSize: 24,
3 |
4 | desktopGutter: 24,
5 | desktopGutterMore: 32,
6 | desktopGutterLess: 16,
7 | desktopGutterMini: 8,
8 | desktopKeylineIncrement: 64,
9 | desktopDropDownMenuItemHeight: 32,
10 | desktopDropDownMenuFontSize: 15,
11 | desktopLeftNavMenuItemHeight: 48,
12 | desktopSubheaderHeight: 48,
13 | desktopToolbarHeight: 56
14 | };
15 |
--------------------------------------------------------------------------------
/src/common/StatusLabel/ActiveStatusLabel.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import { FontIcon } from 'material-ui';
4 | import { colors as Colors } from 'material-ui/styles';
5 |
6 | const StatusLabel = ({ style }) => (
7 |
12 | );
13 |
14 | export default StatusLabel;
15 |
--------------------------------------------------------------------------------
/src/common/StatusLabel/InactiveStatusLabel.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import { FontIcon } from 'material-ui';
4 | import { colors as Colors } from 'material-ui/styles';
5 |
6 | const InactiveStatusLabel = ({ style }) => (
7 |
12 | );
13 |
14 | export default InactiveStatusLabel;
15 |
--------------------------------------------------------------------------------
/src/common/StatusLabel/StatusLabel.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import ActiveStatusLabel from './ActiveStatusLabel';
4 | import InactiveStatusLabel from './InactiveStatusLabel';
5 |
6 | const StatusLabel = ({ isActive = false, activeStyles, inactiveStyles, withActive = true, withInactive = true }) => {
7 | if (isActive && withActive) {
8 | return ;
9 | }
10 |
11 | if (!isActive && withInactive) {
12 | return ;
13 | }
14 |
15 | return null;
16 | };
17 |
18 | export default StatusLabel;
19 |
--------------------------------------------------------------------------------
/src/common/StatusLabel/index.js:
--------------------------------------------------------------------------------
1 | import StatusLabel from './StatusLabel';
2 |
3 | export default StatusLabel;
4 |
--------------------------------------------------------------------------------
/src/common/Stepper/index.js:
--------------------------------------------------------------------------------
1 | import Stepper from './Stepper';
2 | import StepLabel from './StepLabel';
3 |
4 | Stepper.StepLabel = StepLabel;
5 |
6 | export default Stepper;
7 |
--------------------------------------------------------------------------------
/src/common/TableHeaderSortableColumn/index.js:
--------------------------------------------------------------------------------
1 | import TableHeaderSortableColumn from './TableHeaderSortableColumn';
2 |
3 | export default TableHeaderSortableColumn;
4 |
--------------------------------------------------------------------------------
/src/common/Tags/index.js:
--------------------------------------------------------------------------------
1 | import List from './List';
2 |
3 | const Tags = {};
4 |
5 | Tags.List = List;
6 |
7 | export default Tags;
8 |
--------------------------------------------------------------------------------
/src/common/TogglePanel/index.js:
--------------------------------------------------------------------------------
1 | import TogglePanel from './TogglePanel';
2 |
3 | export default TogglePanel;
4 |
--------------------------------------------------------------------------------
/src/common/Tooltip/index.js:
--------------------------------------------------------------------------------
1 | import Tooltip from './Tooltip';
2 |
3 | export default Tooltip;
4 |
--------------------------------------------------------------------------------
/src/common/TraceResult/TraceBigResult.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { colors as Colors } from 'material-ui/styles';
3 |
4 | const styles = {
5 | link: {
6 | color: Colors.blue300
7 | }
8 | };
9 |
10 | const TraceBigResult = ({ onClick }) => (
11 |
12 | {'The result was too large to view instantly. Click '}
13 |
17 | here
18 |
19 | {' to load it.'}
20 |
21 | );
22 |
23 | export default TraceBigResult;
24 |
--------------------------------------------------------------------------------
/src/common/TraceResult/index.js:
--------------------------------------------------------------------------------
1 | import TraceResult from './TraceResult';
2 | import TraceBigResult from './TraceBigResult';
3 |
4 | export default { TraceResult, TraceBigResult };
5 |
--------------------------------------------------------------------------------
/src/common/Truncate/index.js:
--------------------------------------------------------------------------------
1 | import Truncate from './Truncate';
2 |
3 | export default Truncate;
4 |
--------------------------------------------------------------------------------
/src/common/UpgradeNowToolbar/index.js:
--------------------------------------------------------------------------------
1 | import UpgradeNowToolbar from './UpgradeNowToolbar';
2 |
3 | export default UpgradeNowToolbar;
4 |
--------------------------------------------------------------------------------
/src/mixins/SnackbarNotificationMixin.js:
--------------------------------------------------------------------------------
1 | import SnackbarNotificationActions from '../apps/SnackbarNotification/SnackbarNotificationActions';
2 |
3 | export default {
4 | setSnackbarNotification(snackbar) {
5 | SnackbarNotificationActions.set(snackbar);
6 | },
7 |
8 | dismissSnackbarNotification() {
9 | SnackbarNotificationActions.dismiss();
10 | }
11 | };
12 |
--------------------------------------------------------------------------------
/src/pages/app/index.js:
--------------------------------------------------------------------------------
1 | import AppPage from './app';
2 |
3 | export default AppPage;
4 |
--------------------------------------------------------------------------------
/src/pages/classes.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | export default React.createClass({
4 | displayName: 'Classes',
5 |
6 | render() {
7 | return this.props.children;
8 | }
9 | });
10 |
--------------------------------------------------------------------------------
/src/pages/expiredAccount.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import AlertPageContent from '../common/AlertPageContent';
3 |
4 | export default () => (
5 |
14 | );
15 |
--------------------------------------------------------------------------------
/src/pages/failedPayment.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import AlertPageContent from '../common/AlertPageContent';
3 |
4 | export default () => (
5 |
13 | );
14 |
--------------------------------------------------------------------------------
/src/pages/freeLimitsExceeded.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import AlertPageContent from '../common/AlertPageContent';
3 |
4 | export default () => (
5 |
14 | );
15 |
--------------------------------------------------------------------------------
/src/pages/hardLimitReached.js:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import AlertPageContent from '../common/AlertPageContent';
3 |
4 | export default () => (
5 |
14 | );
15 |
--------------------------------------------------------------------------------
/src/pages/notfound.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import AlertPageContent from '../common/AlertPageContent';
3 |
4 | const NotFound = () => (
5 |
12 | );
13 |
14 | export default NotFound;
15 |
--------------------------------------------------------------------------------
/src/segment.js:
--------------------------------------------------------------------------------
1 | import analytics from 'analyticsjs';
2 |
3 | if (APP_CONFIG.ANALYTICS_WRITE_KEY) {
4 | analytics.load(APP_CONFIG.ANALYTICS_WRITE_KEY);
5 | analytics.page('Dashboard', {
6 | Init: true
7 | });
8 | }
9 |
10 | export default analytics;
11 |
--------------------------------------------------------------------------------
/src/stripe.js:
--------------------------------------------------------------------------------
1 | var Stripe = require('stripejs');
2 |
3 | if (APP_CONFIG.STRIPE_PUBLISHABLE_KEY) {
4 | Stripe.setPublishableKey(APP_CONFIG.STRIPE_PUBLISHABLE_KEY);
5 | }
6 |
7 | module.exports = Stripe;
8 |
--------------------------------------------------------------------------------
/src/utils/JSONUtil.js:
--------------------------------------------------------------------------------
1 | import _ from 'lodash';
2 |
3 | const JSONUtil = {
4 | isValidJSONInput: (value) => {
5 | if (typeof value === 'object' || value === '') {
6 | return true;
7 | }
8 |
9 | try {
10 | const parsedValue = JSON.parse(value);
11 |
12 | if (_.isPlainObject(parsedValue)) {
13 | return true;
14 | }
15 |
16 | return false;
17 | } catch (e) {
18 | return false;
19 | }
20 | }
21 | };
22 |
23 | export default JSONUtil;
24 |
--------------------------------------------------------------------------------
/src/utils/index.js:
--------------------------------------------------------------------------------
1 | import JSONUtil from './JSONUtil';
2 | import PricingPlansUtil from './PricingPlansUtil';
3 | import RoutesUtil from './RoutesUtil';
4 |
5 | export default {
6 | JSONUtil,
7 | PricingPlansUtil,
8 | RoutesUtil
9 | };
10 |
--------------------------------------------------------------------------------
/test/e2e/commands/assertSelectedCount.js:
--------------------------------------------------------------------------------
1 | // Checks if specified selector occurs as many time as specified in count param,
2 | // using locationStrategy "class name", "css selector", "id", "name",
3 | // "link text", "partial link text", "tag name" or "xpath"
4 | // Optional: message => string to displayed for assertion
5 | exports.command = function assertSelectedCount(locationStrategy, selector, count, message = null) {
6 | return this.elements(locationStrategy, selector, (result) => {
7 | this.assert.equal(result.value.length, count, message);
8 | });
9 | };
10 |
--------------------------------------------------------------------------------
/test/e2e/commands/changeWindow.js:
--------------------------------------------------------------------------------
1 | exports.command = function changeWindow(windowNumber, expectedWindowCount) {
2 | return this.windowHandles((result) => {
3 | const handle = result.value[windowNumber];
4 | const message = `There should be ${expectedWindowCount} windows open.`;
5 |
6 | this.assert.equal(result.value.length, expectedWindowCount, message);
7 | this.switchWindow(handle);
8 | });
9 | };
10 |
--------------------------------------------------------------------------------
/test/e2e/commands/clearInput.js:
--------------------------------------------------------------------------------
1 | // Custom command that clears specified element by using CTRL+A and then DELETE
2 | // oparation. Created as a workaround for AceEditor clearing.
3 | exports.command = function clearInput(element) {
4 | const mainKey = process.platform === 'darwin' ? this.Keys.COMMAND : this.Keys.CONTROL;
5 |
6 | return this
7 | .click(element)
8 | .pause(100)
9 | .keys(mainKey)
10 | .keys('a')
11 | .keys(this.Keys.NULL)
12 | .pause(200)
13 | .keys(this.Keys.DELETE)
14 | .keys(this.Keys.NULL)
15 | .pause(100);
16 | };
17 |
--------------------------------------------------------------------------------
/test/e2e/commands/clickElement.js:
--------------------------------------------------------------------------------
1 | // Command that will wait for a given element to be visible, then
2 | // will move to it, click and pause for 1sec. Mostly used for buttons or any
3 | // other clickable parts of UI.
4 | exports.command = function clickElement(element) {
5 | return this
6 | .waitForElementPresent(element)
7 | .moveToElement(element, 0, 0)
8 | .click(element)
9 | .pause(1000);
10 | };
11 |
--------------------------------------------------------------------------------
/test/e2e/commands/fillInput.js:
--------------------------------------------------------------------------------
1 | // Command that will clear value of given element
2 | // and then fill with target string.
3 | exports.command = function fillInput(element, string) {
4 | return this
5 | .waitForElementVisible(element)
6 | .clearValue(element)
7 | .pause(300)
8 | .setValue(element, string)
9 | .pause(1000);
10 | };
11 |
--------------------------------------------------------------------------------
/test/e2e/commands/getChromeLogs.js:
--------------------------------------------------------------------------------
1 | // Custom commands that extracts chrome console logs and their level
2 | // In future could save this to file, fail tests or build.
3 | // Using log.message you could get whole message, but for now I will disable it
4 | // as without proper formating it won't be readable.
5 | exports.command = function getChromeLogs() {
6 | return this.getLog('browser', (logEntriesArray) => {
7 | logEntriesArray.forEach((log) => {
8 | console.log(`[${log.level}] Timestamp: ${log.timestamp}\n`);
9 | });
10 | });
11 | };
12 |
--------------------------------------------------------------------------------
/test/e2e/commands/goToUrl.js:
--------------------------------------------------------------------------------
1 | // Command that helps to navigate to proper url for given instance and endpoint
2 | // Used as url is not compatible with pageObjects directly, forcing to break
3 | // command chaining.
4 | import utils from '../utils';
5 |
6 | exports.command = function goToUrl(instanceName, endpoint) {
7 | const baseUrl = utils.testBaseUrl();
8 |
9 | return this
10 | .url(`${baseUrl}/#/instances/${instanceName}/${endpoint}`)
11 | .pause(2000);
12 | };
13 |
--------------------------------------------------------------------------------
/test/e2e/commands/loginUsingLocalStorage.js:
--------------------------------------------------------------------------------
1 | import utils from '../utils';
2 |
3 | exports.command = function loginUsingLocalStorage(accountToken) {
4 | const baseUrl = utils.testBaseUrl();
5 |
6 | return this
7 | .url(`${baseUrl}/#/?token=${accountToken}`)
8 | .pause(1000);
9 | };
10 |
--------------------------------------------------------------------------------
/test/e2e/commands/multipleItems.js:
--------------------------------------------------------------------------------
1 | // Command that wraps clickListItemDropdown and assertSelectedCount
2 | // thus creating command that can for example select x items and assert that
3 | // proper number of them where selected.
4 | exports.command = function multipleItems(action, assertionCount, optionsMenu, selectedItems) {
5 | return this
6 | .useXpath()
7 | .clickListItemDropdown(optionsMenu, action)
8 | .assertSelectedCount('xpath', selectedItems, assertionCount);
9 | };
10 |
--------------------------------------------------------------------------------
/test/e2e/commands/runScriptAndClickReloadButton.js:
--------------------------------------------------------------------------------
1 | exports.command = function runScriptAndClickReloadButton(scriptEditPage, connection, query) {
2 | connection
3 | .Script
4 | .please()
5 | .run(query)
6 | .then((resp) => {
7 | scriptEditPage
8 | .clickElement('@tracesRefresh')
9 | .waitForElementPresent('@scriptSuccess');
10 | return resp;
11 | })
12 | .catch((err) => console.error(err));
13 | return this;
14 | };
15 |
--------------------------------------------------------------------------------
/test/e2e/commands/selectDropdownValue.js:
--------------------------------------------------------------------------------
1 | // Command that selects given dropdownValue from targeted element.
2 | exports.command = function selectDropdownValue(element, dropdownValue) {
3 | const value = `//iframe//following-sibling::div//div[text()="${dropdownValue}"]`;
4 |
5 | return this
6 | .waitForElementVisible(element)
7 | .moveToElement(element, 0, 0)
8 | .pause(500)
9 | .mouseButtonClick()
10 | .pause(500)
11 | .waitForElementVisible(value)
12 | .pause(500)
13 | .click(value)
14 | .pause(500);
15 | };
16 |
--------------------------------------------------------------------------------
/test/e2e/commands/setResolution.js:
--------------------------------------------------------------------------------
1 | // Changes resolution of window based on client information that are passed in test_settings.
2 | // Splits string from config by x value and parses it as int.
3 |
4 | exports.command = function setResolution(client) {
5 | const clientInfo = client.globals.test_settings.resolution;
6 | const [horizontal, vertical] = clientInfo.split('x').map((dim) => parseInt(dim, 10));
7 |
8 | return this.resizeWindow(horizontal, vertical);
9 | };
10 |
--------------------------------------------------------------------------------
/test/e2e/globals.js:
--------------------------------------------------------------------------------
1 | export default {
2 | waitForConditionTimeout: 8000,
3 | retryAssertionTimeout: 2000,
4 | apiBaseUrl: process.env.SYNCANO_BASE_URL
5 | };
6 |
--------------------------------------------------------------------------------
/test/e2e/pages/commonElementsPage.js:
--------------------------------------------------------------------------------
1 | export default {
2 | snackBarNotification: {
3 | selector: '[data-e2e="snackbar-notifcation"]'
4 | },
5 | notificationBar: {
6 | selector: '[data-e2e="notification-bar"]'
7 | }
8 | };
9 |
--------------------------------------------------------------------------------
/test/e2e/pages/customSocketsPage.js:
--------------------------------------------------------------------------------
1 | export default {
2 | elements: {
3 | addButtonZeroState: {
4 | selector: 'button[data-e2e="zero-state-add-button"]'
5 | }
6 | }
7 | };
8 |
--------------------------------------------------------------------------------
/test/e2e/pages/docsPage.js:
--------------------------------------------------------------------------------
1 | export default {
2 | elements: {
3 | syncanoLogo: {
4 | selector: '//li[@class="active"]/a[text()="Documentation"]',
5 | locateStrategy: 'xpath'
6 | },
7 | docsTarget: {
8 | selector: '[class="cover-main"]'
9 | },
10 | gettingStartedTarget: {
11 | selector: '*[data-id="quickstart-guide"]'
12 | },
13 | instancesTarget: {
14 | selector: '*[data-e2e="instances-page-title"]'
15 | }
16 | }
17 | };
18 |
--------------------------------------------------------------------------------
/test/e2e/pages/generalPage.js:
--------------------------------------------------------------------------------
1 | export default {
2 | elements: {
3 | instanceNameField: {
4 | selector: '//input[@name="name"]',
5 | locateStrategy: 'xpath'
6 | }
7 | }
8 | };
9 |
--------------------------------------------------------------------------------
/test/e2e/pages/globalsViewerPage.js:
--------------------------------------------------------------------------------
1 | export default {
2 | elements: {
3 | globalConfigViewer: {
4 | selector: '[data-e2e="global-config-viewer"]'
5 | },
6 | globalConfigCloseButton: {
7 | selector: '[data-e2e="global-config-close"]'
8 | }
9 | }
10 | };
11 |
--------------------------------------------------------------------------------
/test/e2e/pages/invitationsPage.js:
--------------------------------------------------------------------------------
1 | export default {
2 | elements: {
3 | emptyInvitationsView: {
4 | selector: '//span[@class="synicon-email-outline"]',
5 | locateStrategy: 'xpath'
6 | }
7 | }
8 | };
9 |
--------------------------------------------------------------------------------
/test/e2e/pages/invoicesPage.js:
--------------------------------------------------------------------------------
1 | import utils from '../utils';
2 |
3 | export default {
4 | url: `${utils.testBaseUrl()}/#/account/invoices/`,
5 | elements: {
6 | emptyInvoicesView: {
7 | selector: '//span[@class="synicon-file-outline"]',
8 | locateStrategy: 'xpath'
9 | },
10 | invoicesPageTitle: {
11 | selector: '[data-e2e="invoices-page-title"]'
12 | },
13 | invoiceAmountColumn: {
14 | selector: '(//div[@class="invoices-list"]//div[@class="description-field col-flex-1"])[3]',
15 | locateStrategy: 'xpath'
16 | }
17 | }
18 | };
19 |
--------------------------------------------------------------------------------
/test/e2e/pages/profilePage.js:
--------------------------------------------------------------------------------
1 | import commonElementsPage from './commonElementsPage';
2 | import utils from '../utils';
3 |
4 | export default {
5 | url: `${utils.testBaseUrl()}/#/account`,
6 | elements: {
7 | updateButton: {
8 | selector: '[data-e2e="profile-update-button"]'
9 | },
10 | innerToolbar: {
11 | selector: '[data-e2e="inner-toolbar"]'
12 | },
13 | firstName: {
14 | selector: 'input[name=firstName]'
15 | },
16 | lastName: {
17 | selector: 'input[name=lastName]'
18 | },
19 | ...commonElementsPage
20 | }
21 | };
22 |
--------------------------------------------------------------------------------
/test/e2e/pages/pushDevicesPage.js:
--------------------------------------------------------------------------------
1 | export default {
2 | elements: {
3 | androidDevicesHeading: {
4 | selector: '[data-e2e="gcm-devices-list-title"]'
5 | },
6 | iosDevicesHeading: {
7 | selector: '[data-e2e="apns-devices-list-title"]'
8 | },
9 | firstDevice: {
10 | selector: '(//div[@class="col-sm-14"]/div/div/div)[1]',
11 | locateStrategy: 'xpath'
12 | },
13 | APNSDevicesEmptyListItem: {
14 | selector: '[data-e2e="apns-devices-empty-list-item"]'
15 | },
16 | GCMDevicesEmptyListItem: {
17 | selector: '[data-e2e="gcm-devices-empty-list-item"]'
18 | }
19 | }
20 | };
21 |
--------------------------------------------------------------------------------
/test/e2e/pages/termsPage.js:
--------------------------------------------------------------------------------
1 | export default {
2 | url: 'https://syncano.io/#/terms-of-service',
3 | commands: [],
4 | elements: {
5 | termsOfUseContainer: {
6 | selector: '//h1[text()="Terms of Service"]',
7 | locateStrategy: 'xpath'
8 | }
9 | }
10 | };
11 |
--------------------------------------------------------------------------------
/test/setup/create/apnsSocket.js:
--------------------------------------------------------------------------------
1 | import Syncano from 'syncano';
2 | import connection from './connection';
3 | import utils from '../../e2e/utils';
4 |
5 | const createAPNSSocket = () => {
6 | if (!process.env.CI) return false;
7 |
8 | return connection.get()
9 | .APNSConfig
10 | .please()
11 | .update({}, {
12 | development_certificate: Syncano.file('./cert.p12'),
13 | development_certificate_name: utils.randomString(10),
14 | development_bundle_identifier: utils.randomString(5)
15 | })
16 | .then((response) => response.development_certificate);
17 | };
18 |
19 | export default createAPNSSocket;
20 |
--------------------------------------------------------------------------------
/test/setup/create/gcmSocket.js:
--------------------------------------------------------------------------------
1 | import connection from './connection';
2 | import utils from '../../e2e/utils';
3 |
4 | const createGCMSocket = () => (
5 | connection.get()
6 | .GCMConfig
7 | .please()
8 | .update({}, {
9 | production_api_key: utils.randomString(32),
10 | development_api_key: utils.randomString(32)
11 | })
12 | .then((response) => [response.production_api_key, response.development_api_key])
13 | );
14 |
15 | export default createGCMSocket;
16 |
--------------------------------------------------------------------------------
/test/setup/create/hostingSocket.js:
--------------------------------------------------------------------------------
1 | import connection from './connection';
2 |
3 | const createHostingSocket = () => {
4 | const hosting = { name: `hosting${Date.now()}`, domains: [] };
5 |
6 | return connection.get()
7 | .Hosting
8 | .please()
9 | .create(hosting)
10 | .then((response) => response.name)
11 | .catch((error) => console.log(error));
12 | };
13 |
14 | export default createHostingSocket;
15 |
--------------------------------------------------------------------------------
/test/setup/create/instance.js:
--------------------------------------------------------------------------------
1 | import connection from './connection';
2 |
3 | const createInstance = () => {
4 | const instance = {
5 | name: `testInstance-${Date.now()}`,
6 | metadata: {
7 | testInstance: true
8 | }
9 | };
10 |
11 | return connection.get().Instance
12 | .please()
13 | .create(instance)
14 | .then((response) => response.name)
15 | .catch((error) => console.error('Instance error:\n', error.message));
16 | };
17 |
18 | export default createInstance;
19 |
--------------------------------------------------------------------------------
/test/setup/delete/instance.js:
--------------------------------------------------------------------------------
1 | import connection from '../create/connection';
2 | import _ from 'lodash';
3 |
4 | const deleteInstance = (instances) => {
5 | _.forEach(instances, (instance) => {
6 | if (instance.instanceName) {
7 | connection.get().Instance
8 | .please()
9 | .delete({ name: instance.instanceName })
10 | .then(() => console.log(`deleteInstance::${instance.instanceName} was deleted.`))
11 | .catch((error) => console.error('Instance delete error:\n', error.message));
12 | }
13 | });
14 |
15 | return instances;
16 | };
17 |
18 | export default deleteInstance;
19 |
--------------------------------------------------------------------------------
/test/setup/deleteTestInstances.js:
--------------------------------------------------------------------------------
1 | import createConnection from './create/connection';
2 | import deleteInstance from './delete/instance';
3 | import tempInstances from '../e2e/tempInstances';
4 |
5 | const credentials = {
6 | email: tempInstances.account.email,
7 | password: tempInstances.account.password
8 | };
9 |
10 | createConnection.login(credentials)
11 | .then(() => deleteInstance(tempInstances))
12 | .catch((error) => console.error('Cleanup error:\n', error.message));
13 |
--------------------------------------------------------------------------------
/test/setup/files/exportTestInstances.js:
--------------------------------------------------------------------------------
1 | import fs from 'fs';
2 |
3 | const exportTestInstances = (data) => {
4 | const fileName = 'tempInstances.js';
5 | const path = `${__dirname}/../../e2e/${fileName}`;
6 | const configFile = fs.createWriteStream(path);
7 | const json = JSON.stringify(data);
8 |
9 | configFile.write(`export default ${json};`);
10 |
11 | return console.log(`\n> File saved at ./test/e2e/${fileName}\n`);
12 | };
13 |
14 | export default exportTestInstances;
15 |
--------------------------------------------------------------------------------
/test/setup/files/removeCertificate.js:
--------------------------------------------------------------------------------
1 | import fs from 'fs';
2 |
3 | const removeCert = () => {
4 | fs.exists('./cert.p12', (exists) => {
5 | exists && fs.unlink('./cert.p12');
6 | });
7 | console.log('Deleted file: ./cert.p12');
8 | };
9 |
10 | removeCert();
11 |
--------------------------------------------------------------------------------
/test/setup/helpers/checkAccountLimits.js:
--------------------------------------------------------------------------------
1 | import connection from '../create/connection';
2 | import _ from 'lodash';
3 |
4 | const plansLimits = {
5 | builder: 4,
6 | 'paid-commitment': 16
7 | };
8 |
9 | const checkAccountLimits = () => connection.get()
10 | .Subscription
11 | .please()
12 | .list()
13 | .then((response) => {
14 | const plans = [];
15 |
16 | _.forEach(response, (plan) => {
17 | plans.push(plan.plan);
18 | });
19 | const currentPlan = plans[0];
20 | const currentLimit = plansLimits[currentPlan];
21 |
22 | return currentLimit;
23 | });
24 |
25 | export default checkAccountLimits;
26 |
--------------------------------------------------------------------------------
/test/setup/helpers/generateCiCredentials.js:
--------------------------------------------------------------------------------
1 | const generateCiCredentials = () => {
2 | const ciBaseEmail = process.env.CI_BASE_EMAIL;
3 | const ciPassword = Date.now();
4 | const splittedEmail = {};
5 |
6 | [splittedEmail.emailName, splittedEmail.emailDomain] = ciBaseEmail.split('@');
7 |
8 | const credentials = {
9 | email: `${splittedEmail.emailName}+${ciPassword}@${splittedEmail.emailDomain}`,
10 | password: ciPassword
11 | };
12 |
13 | return credentials;
14 | };
15 |
16 | export default generateCiCredentials;
17 |
--------------------------------------------------------------------------------