From 47c1c99d893517efc679ab29d675cc0bf44be8be Mon Sep 17 00:00:00 2001
From: Dominik Guzei <dominik.guzei@gmail.com>
Date: Thu, 11 Apr 2019 16:54:01 +0200
Subject: feat(App): Added Workspaces for all your daily routines 🥳
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* merge default and fetched feature configs

* ignore intellij project files

* basic setup for workspaces feature

* define workspaces as premium feature

* add workspaces menu item in settings dialog

* basic setup of workspaces settings screen

* fix eslint error

* assign react key prop to workspace items

* add styles for workspace table

* setup logic to display workspace edit page

* consolidate workspace feature for further development

* prepare basic workspace edit form

* add on enter key handler for form input component

* add form for creating workspaces

* small fixes

* adds flow for deleting workspaces

* stop tracking google analytics in components

* pin gulp-sass-variables version to 1.1.1

* fix merge conflict

* fix bug in form input library

* improve workspace form setup

* finish basic workspace settings

* finish workspaces mvp

* fix eslint issues

* remove dev logs

* detach service when underlying webview unmounts

* disable no-param-reassign eslint rule

* add workspace drawer

* change workspace switch shortcuts to start with zero

* add workspace drawer toggle menu item and shortcut

* improve workspace switching ux

* style add workspace icon in drawer like the sidebar icons

* improve workspace drawer layout

* add i18n messages for service loading and workspace switching

* small fixes

* add tooltip to add workspace button in drawer

* add workspaces count badge in settings navigation

* fix merge conflicts with latest develop

* refactor state management for workspace feature

* reset api requests when workspace feature is stopped

* hide workspace feature if it is disabled

* handle get workspaces request errors in the ui

* show infobox when updating workspaces

* indicate any server interaction with spinners and infoboxes

* add analytic events for workspace actions

* improve styling of workspace switch indicator

* add workspace premium notice to dashboard

* add workspace feature info in drawer for free users

* add workspace premium badge in settings nav

* fix premium workspace badge in settings menu for light theme

* fix active workspaces settings premium badge in light theme

* give upgrade account button a bit more padding

* add open last used workspace logic

* use mobx-localstorage directly in the store

* fix wrong workspace tooltip shortcut in sidebar

* fix bug in workspace feature initialization

* show workspaces intro in drawer when user has none yet

* fix issues for users that have workspace but downgraded to free

* border radius for premium intro in workspace settings

* close workspace drawer after clicking on a workspace

* add hover effect for drawer workspace items

* ensure drawer is open on workspace settings routes

* add small text label for adding new workspace to drawer

* make workspace settings list items taller

* refactor workspace table css away from legacy styles

* render workspace service list like services + toggle

* change plus icon in workspace drawer to settings icon

* autofocus create workspace input field

* add css transition to drawer workspace item hover

* fix drawer add workspace label styles

* refactors workspace theme vars into object structure

* improve contrast of workspace switching indicator

* added generic pro badge component for settings nav

* add premium badge to workspace drawer headline

* add context menu for workspace drawer items

* handle deleted services that are attached to workspaces
---
 packages/ui/src/badge/ProBadge.tsx | 64 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 64 insertions(+)
 create mode 100644 packages/ui/src/badge/ProBadge.tsx

(limited to 'packages/ui/src/badge/ProBadge.tsx')

diff --git a/packages/ui/src/badge/ProBadge.tsx b/packages/ui/src/badge/ProBadge.tsx
new file mode 100644
index 000000000..612e23210
--- /dev/null
+++ b/packages/ui/src/badge/ProBadge.tsx
@@ -0,0 +1,64 @@
+import { Theme } from '@meetfranz/theme';
+import classnames from 'classnames';
+import React, { Component } from 'react';
+import injectStyle from 'react-jss';
+
+import { Icon, Badge } from '../';
+import { IWithStyle } from '../typings/generic';
+
+interface IProps extends IWithStyle {
+  badgeClasses?: string;
+  iconClasses?: string;
+  inverted?: boolean;
+}
+
+const styles = (theme: Theme) => ({
+  badge: {
+    height: 'auto',
+    padding: [4, 6, 2, 7],
+    borderRadius: theme.borderRadiusSmall,
+  },
+  invertedBadge: {
+    background: theme.styleTypes.primary.contrast,
+    color: theme.styleTypes.primary.accent,
+  },
+  icon: {
+    fill: theme.styleTypes.primary.contrast,
+  },
+  invertedIcon: {
+    fill: theme.styleTypes.primary.accent,
+  },
+});
+
+class ProBadgeComponent extends Component<IProps> {
+  render() {
+    const {
+      classes,
+      badgeClasses,
+      iconClasses,
+      inverted,
+    } = this.props;
+
+    return (
+      <Badge
+        type="primary"
+        className={classnames([
+          classes.badge,
+          inverted && classes.invertedBadge,
+          badgeClasses,
+        ])}
+      >
+        <Icon
+          icon="mdiStar"
+          className={classnames([
+            classes.icon,
+            inverted && classes.invertedIcon,
+            iconClasses,
+          ])}
+        />
+      </Badge>
+    );
+  }
+}
+
+export const ProBadge = injectStyle(styles)(ProBadgeComponent);
-- 
cgit v1.2.3-70-g09d2

