refactor: remove Storybook stories
This commit is contained in:
		@@ -73,8 +73,6 @@
 | 
				
			|||||||
    "build": "react-scripts build",
 | 
					    "build": "react-scripts build",
 | 
				
			||||||
    "test": "react-scripts test",
 | 
					    "test": "react-scripts test",
 | 
				
			||||||
    "eject": "react-scripts eject",
 | 
					    "eject": "react-scripts eject",
 | 
				
			||||||
    "storybook": "start-storybook -p 9009 -s public",
 | 
					 | 
				
			||||||
    "build-storybook": "build-storybook -s public",
 | 
					 | 
				
			||||||
    "generate": "graphql-codegen",
 | 
					    "generate": "graphql-codegen",
 | 
				
			||||||
    "lint": "eslint --ext js,ts,tsx src",
 | 
					    "lint": "eslint --ext js,ts,tsx src",
 | 
				
			||||||
    "tsc": "tsc"
 | 
					    "tsc": "tsc"
 | 
				
			||||||
@@ -99,16 +97,6 @@
 | 
				
			|||||||
    "@graphql-codegen/typescript": "^1.13.2",
 | 
					    "@graphql-codegen/typescript": "^1.13.2",
 | 
				
			||||||
    "@graphql-codegen/typescript-operations": "^1.13.2",
 | 
					    "@graphql-codegen/typescript-operations": "^1.13.2",
 | 
				
			||||||
    "@graphql-codegen/typescript-react-apollo": "^1.13.2",
 | 
					    "@graphql-codegen/typescript-react-apollo": "^1.13.2",
 | 
				
			||||||
    "@storybook/addon-actions": "^5.3.13",
 | 
					 | 
				
			||||||
    "@storybook/addon-backgrounds": "^5.3.17",
 | 
					 | 
				
			||||||
    "@storybook/addon-docs": "^5.3.17",
 | 
					 | 
				
			||||||
    "@storybook/addon-knobs": "^5.3.17",
 | 
					 | 
				
			||||||
    "@storybook/addon-links": "^5.3.13",
 | 
					 | 
				
			||||||
    "@storybook/addon-storysource": "^5.3.17",
 | 
					 | 
				
			||||||
    "@storybook/addon-viewport": "^5.3.17",
 | 
					 | 
				
			||||||
    "@storybook/addons": "^5.3.13",
 | 
					 | 
				
			||||||
    "@storybook/preset-create-react-app": "^1.5.2",
 | 
					 | 
				
			||||||
    "@storybook/react": "^5.3.13",
 | 
					 | 
				
			||||||
    "@typescript-eslint/eslint-plugin": "^2.20.0",
 | 
					    "@typescript-eslint/eslint-plugin": "^2.20.0",
 | 
				
			||||||
    "@typescript-eslint/parser": "^2.20.0",
 | 
					    "@typescript-eslint/parser": "^2.20.0",
 | 
				
			||||||
    "eslint": "^6.8.0",
 | 
					    "eslint": "^6.8.0",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,19 +0,0 @@
 | 
				
			|||||||
import React from 'react';
 | 
					 | 
				
			||||||
import { action } from '@storybook/addon-actions';
 | 
					 | 
				
			||||||
import theme from 'App/ThemeStyles';
 | 
					 | 
				
			||||||
import AddList from '.';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  component: AddList,
 | 
					 | 
				
			||||||
  title: 'AddList',
 | 
					 | 
				
			||||||
  parameters: {
 | 
					 | 
				
			||||||
    backgrounds: [
 | 
					 | 
				
			||||||
      { name: 'gray', value: theme.colors.bg.secondary, default: true },
 | 
					 | 
				
			||||||
      { name: 'white', value: '#ffffff' },
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Default = () => {
 | 
					 | 
				
			||||||
  return <AddList onSave={action('on save')} />;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,61 +0,0 @@
 | 
				
			|||||||
import React from 'react';
 | 
					 | 
				
			||||||
import { ThemeProvider } from 'styled-components';
 | 
					 | 
				
			||||||
import { action } from '@storybook/addon-actions';
 | 
					 | 
				
			||||||
import theme from 'App/ThemeStyles';
 | 
					 | 
				
			||||||
import NormalizeStyles from 'App/NormalizeStyles';
 | 
					 | 
				
			||||||
import BaseStyles from 'App/BaseStyles';
 | 
					 | 
				
			||||||
import Admin from '.';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  component: Admin,
 | 
					 | 
				
			||||||
  title: 'Admin',
 | 
					 | 
				
			||||||
  parameters: {
 | 
					 | 
				
			||||||
    backgrounds: [
 | 
					 | 
				
			||||||
      { name: 'gray', value: '#f8f8f8', default: true },
 | 
					 | 
				
			||||||
      { name: 'white', value: '#ffffff' },
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Default = () => {
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <>
 | 
					 | 
				
			||||||
      <NormalizeStyles />
 | 
					 | 
				
			||||||
      <BaseStyles />
 | 
					 | 
				
			||||||
      <ThemeProvider theme={theme}>
 | 
					 | 
				
			||||||
        <Admin
 | 
					 | 
				
			||||||
          onInviteUser={action('invite user')}
 | 
					 | 
				
			||||||
          canInviteUser
 | 
					 | 
				
			||||||
          initialTab={1}
 | 
					 | 
				
			||||||
          onUpdateUserPassword={action('update user password')}
 | 
					 | 
				
			||||||
          onDeleteUser={action('delete user')}
 | 
					 | 
				
			||||||
          users={[
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
              id: '1',
 | 
					 | 
				
			||||||
              username: 'jordanthedev',
 | 
					 | 
				
			||||||
              email: 'jordan@jordanthedev.com',
 | 
					 | 
				
			||||||
              role: { code: 'admin', name: 'Admin' },
 | 
					 | 
				
			||||||
              fullName: 'Jordan Knott',
 | 
					 | 
				
			||||||
              profileIcon: {
 | 
					 | 
				
			||||||
                bgColor: '#fff',
 | 
					 | 
				
			||||||
                initials: 'JK',
 | 
					 | 
				
			||||||
                url: null,
 | 
					 | 
				
			||||||
              },
 | 
					 | 
				
			||||||
              owned: {
 | 
					 | 
				
			||||||
                teams: [{ id: '1', name: 'Team' }],
 | 
					 | 
				
			||||||
                projects: [{ id: '2', name: 'Project' }],
 | 
					 | 
				
			||||||
              },
 | 
					 | 
				
			||||||
              member: {
 | 
					 | 
				
			||||||
                teams: [],
 | 
					 | 
				
			||||||
                projects: [],
 | 
					 | 
				
			||||||
              },
 | 
					 | 
				
			||||||
            },
 | 
					 | 
				
			||||||
          ]}
 | 
					 | 
				
			||||||
          invitedUsers={[]}
 | 
					 | 
				
			||||||
          onAddUser={action('add user')}
 | 
					 | 
				
			||||||
          onDeleteInvitedUser={action('delete invited user')}
 | 
					 | 
				
			||||||
        />
 | 
					 | 
				
			||||||
      </ThemeProvider>
 | 
					 | 
				
			||||||
    </>
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,138 +0,0 @@
 | 
				
			|||||||
import React from 'react';
 | 
					 | 
				
			||||||
import { action } from '@storybook/addon-actions';
 | 
					 | 
				
			||||||
import BaseStyles from 'App/BaseStyles';
 | 
					 | 
				
			||||||
import NormalizeStyles from 'App/NormalizeStyles';
 | 
					 | 
				
			||||||
import theme from 'App/ThemeStyles';
 | 
					 | 
				
			||||||
import styled, { ThemeProvider } from 'styled-components';
 | 
					 | 
				
			||||||
import Button from '.';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  component: Button,
 | 
					 | 
				
			||||||
  title: 'Button',
 | 
					 | 
				
			||||||
  parameters: {
 | 
					 | 
				
			||||||
    backgrounds: [
 | 
					 | 
				
			||||||
      { name: 'gray', value: '#f8f8f8', default: true },
 | 
					 | 
				
			||||||
      { name: 'white', value: '#ffffff' },
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const ButtonRow = styled.div`
 | 
					 | 
				
			||||||
  display: flex;
 | 
					 | 
				
			||||||
  align-items: center;
 | 
					 | 
				
			||||||
  justify-items: center;
 | 
					 | 
				
			||||||
  margin: 25px;
 | 
					 | 
				
			||||||
  width: 100%;
 | 
					 | 
				
			||||||
  & > button {
 | 
					 | 
				
			||||||
    margin-right: 1.5rem;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
`;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Default = () => {
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <>
 | 
					 | 
				
			||||||
      <BaseStyles />
 | 
					 | 
				
			||||||
      <NormalizeStyles />
 | 
					 | 
				
			||||||
      <ThemeProvider theme={theme}>
 | 
					 | 
				
			||||||
        <ButtonRow>
 | 
					 | 
				
			||||||
          <Button>Primary</Button>
 | 
					 | 
				
			||||||
          <Button color="success">Success</Button>
 | 
					 | 
				
			||||||
          <Button color="danger">Danger</Button>
 | 
					 | 
				
			||||||
          <Button color="warning">Warning</Button>
 | 
					 | 
				
			||||||
          <Button color="dark">Dark</Button>
 | 
					 | 
				
			||||||
          <Button disabled>Disabled</Button>
 | 
					 | 
				
			||||||
        </ButtonRow>
 | 
					 | 
				
			||||||
        <ButtonRow>
 | 
					 | 
				
			||||||
          <Button variant="outline">Primary</Button>
 | 
					 | 
				
			||||||
          <Button variant="outline" color="success">
 | 
					 | 
				
			||||||
            Success
 | 
					 | 
				
			||||||
          </Button>
 | 
					 | 
				
			||||||
          <Button variant="outline" color="danger">
 | 
					 | 
				
			||||||
            Danger
 | 
					 | 
				
			||||||
          </Button>
 | 
					 | 
				
			||||||
          <Button variant="outline" color="warning">
 | 
					 | 
				
			||||||
            Warning
 | 
					 | 
				
			||||||
          </Button>
 | 
					 | 
				
			||||||
          <Button variant="outline" color="dark">
 | 
					 | 
				
			||||||
            Dark
 | 
					 | 
				
			||||||
          </Button>
 | 
					 | 
				
			||||||
          <Button variant="outline" disabled>
 | 
					 | 
				
			||||||
            Disabled
 | 
					 | 
				
			||||||
          </Button>
 | 
					 | 
				
			||||||
        </ButtonRow>
 | 
					 | 
				
			||||||
        <ButtonRow>
 | 
					 | 
				
			||||||
          <Button variant="flat">Primary</Button>
 | 
					 | 
				
			||||||
          <Button variant="flat" color="success">
 | 
					 | 
				
			||||||
            Success
 | 
					 | 
				
			||||||
          </Button>
 | 
					 | 
				
			||||||
          <Button variant="flat" color="danger">
 | 
					 | 
				
			||||||
            Danger
 | 
					 | 
				
			||||||
          </Button>
 | 
					 | 
				
			||||||
          <Button variant="flat" color="warning">
 | 
					 | 
				
			||||||
            Warning
 | 
					 | 
				
			||||||
          </Button>
 | 
					 | 
				
			||||||
          <Button variant="flat" color="dark">
 | 
					 | 
				
			||||||
            Dark
 | 
					 | 
				
			||||||
          </Button>
 | 
					 | 
				
			||||||
          <Button variant="flat" disabled>
 | 
					 | 
				
			||||||
            Disabled
 | 
					 | 
				
			||||||
          </Button>
 | 
					 | 
				
			||||||
        </ButtonRow>
 | 
					 | 
				
			||||||
        <ButtonRow>
 | 
					 | 
				
			||||||
          <Button variant="lineDown">Primary</Button>
 | 
					 | 
				
			||||||
          <Button variant="lineDown" color="success">
 | 
					 | 
				
			||||||
            Success
 | 
					 | 
				
			||||||
          </Button>
 | 
					 | 
				
			||||||
          <Button variant="lineDown" color="danger">
 | 
					 | 
				
			||||||
            Danger
 | 
					 | 
				
			||||||
          </Button>
 | 
					 | 
				
			||||||
          <Button variant="lineDown" color="warning">
 | 
					 | 
				
			||||||
            Warning
 | 
					 | 
				
			||||||
          </Button>
 | 
					 | 
				
			||||||
          <Button variant="lineDown" color="dark">
 | 
					 | 
				
			||||||
            Dark
 | 
					 | 
				
			||||||
          </Button>
 | 
					 | 
				
			||||||
          <Button variant="lineDown" disabled>
 | 
					 | 
				
			||||||
            Disabled
 | 
					 | 
				
			||||||
          </Button>
 | 
					 | 
				
			||||||
        </ButtonRow>
 | 
					 | 
				
			||||||
        <ButtonRow>
 | 
					 | 
				
			||||||
          <Button variant="gradient">Primary</Button>
 | 
					 | 
				
			||||||
          <Button variant="gradient" color="success">
 | 
					 | 
				
			||||||
            Success
 | 
					 | 
				
			||||||
          </Button>
 | 
					 | 
				
			||||||
          <Button variant="gradient" color="danger">
 | 
					 | 
				
			||||||
            Danger
 | 
					 | 
				
			||||||
          </Button>
 | 
					 | 
				
			||||||
          <Button variant="gradient" color="warning">
 | 
					 | 
				
			||||||
            Warning
 | 
					 | 
				
			||||||
          </Button>
 | 
					 | 
				
			||||||
          <Button variant="gradient" color="dark">
 | 
					 | 
				
			||||||
            Dark
 | 
					 | 
				
			||||||
          </Button>
 | 
					 | 
				
			||||||
          <Button variant="gradient" disabled>
 | 
					 | 
				
			||||||
            Disabled
 | 
					 | 
				
			||||||
          </Button>
 | 
					 | 
				
			||||||
        </ButtonRow>
 | 
					 | 
				
			||||||
        <ButtonRow>
 | 
					 | 
				
			||||||
          <Button variant="relief">Primary</Button>
 | 
					 | 
				
			||||||
          <Button variant="relief" color="success">
 | 
					 | 
				
			||||||
            Success
 | 
					 | 
				
			||||||
          </Button>
 | 
					 | 
				
			||||||
          <Button variant="relief" color="danger">
 | 
					 | 
				
			||||||
            Danger
 | 
					 | 
				
			||||||
          </Button>
 | 
					 | 
				
			||||||
          <Button variant="relief" color="warning">
 | 
					 | 
				
			||||||
            Warning
 | 
					 | 
				
			||||||
          </Button>
 | 
					 | 
				
			||||||
          <Button variant="relief" color="dark">
 | 
					 | 
				
			||||||
            Dark
 | 
					 | 
				
			||||||
          </Button>
 | 
					 | 
				
			||||||
          <Button variant="relief" disabled>
 | 
					 | 
				
			||||||
            Disabled
 | 
					 | 
				
			||||||
          </Button>
 | 
					 | 
				
			||||||
        </ButtonRow>
 | 
					 | 
				
			||||||
      </ThemeProvider>
 | 
					 | 
				
			||||||
    </>
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,174 +0,0 @@
 | 
				
			|||||||
import React, { useRef } from 'react';
 | 
					 | 
				
			||||||
import { action } from '@storybook/addon-actions';
 | 
					 | 
				
			||||||
import LabelColors from 'shared/constants/labelColors';
 | 
					 | 
				
			||||||
import Card from '.';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  component: Card,
 | 
					 | 
				
			||||||
  title: 'Card',
 | 
					 | 
				
			||||||
  parameters: {
 | 
					 | 
				
			||||||
    backgrounds: [
 | 
					 | 
				
			||||||
      { name: 'gray', value: '#f8f8f8', default: true },
 | 
					 | 
				
			||||||
      { name: 'white', value: '#ffffff' },
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const labelData: Array<ProjectLabel> = [
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    id: 'development',
 | 
					 | 
				
			||||||
    name: 'Development',
 | 
					 | 
				
			||||||
    createdDate: new Date().toString(),
 | 
					 | 
				
			||||||
    labelColor: {
 | 
					 | 
				
			||||||
      id: '1',
 | 
					 | 
				
			||||||
      colorHex: LabelColors.BLUE,
 | 
					 | 
				
			||||||
      name: 'blue',
 | 
					 | 
				
			||||||
      position: 1,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Default = () => {
 | 
					 | 
				
			||||||
  const $ref = useRef<HTMLDivElement>(null);
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <Card
 | 
					 | 
				
			||||||
      taskID="1"
 | 
					 | 
				
			||||||
      taskGroupID="1"
 | 
					 | 
				
			||||||
      description=""
 | 
					 | 
				
			||||||
      ref={$ref}
 | 
					 | 
				
			||||||
      title="Hello, world"
 | 
					 | 
				
			||||||
      onClick={action('on click')}
 | 
					 | 
				
			||||||
      onContextMenu={action('on context click')}
 | 
					 | 
				
			||||||
    />
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Labels = () => {
 | 
					 | 
				
			||||||
  const $ref = useRef<HTMLDivElement>(null);
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <Card
 | 
					 | 
				
			||||||
      taskID="1"
 | 
					 | 
				
			||||||
      taskGroupID="1"
 | 
					 | 
				
			||||||
      description=""
 | 
					 | 
				
			||||||
      ref={$ref}
 | 
					 | 
				
			||||||
      title="Hello, world"
 | 
					 | 
				
			||||||
      labels={labelData}
 | 
					 | 
				
			||||||
      onClick={action('on click')}
 | 
					 | 
				
			||||||
      onContextMenu={action('on context click')}
 | 
					 | 
				
			||||||
    />
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Badges = () => {
 | 
					 | 
				
			||||||
  const $ref = useRef<HTMLDivElement>(null);
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <Card
 | 
					 | 
				
			||||||
      taskID="1"
 | 
					 | 
				
			||||||
      taskGroupID="1"
 | 
					 | 
				
			||||||
      description="hello!"
 | 
					 | 
				
			||||||
      ref={$ref}
 | 
					 | 
				
			||||||
      title="Hello, world"
 | 
					 | 
				
			||||||
      onClick={action('on click')}
 | 
					 | 
				
			||||||
      onContextMenu={action('on context click')}
 | 
					 | 
				
			||||||
      watched
 | 
					 | 
				
			||||||
      checklists={{ complete: 1, total: 4 }}
 | 
					 | 
				
			||||||
      dueDate={{ isPastDue: false, formattedDate: 'Oct 26, 2020' }}
 | 
					 | 
				
			||||||
    />
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const PastDue = () => {
 | 
					 | 
				
			||||||
  const $ref = useRef<HTMLDivElement>(null);
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <Card
 | 
					 | 
				
			||||||
      taskID="1"
 | 
					 | 
				
			||||||
      taskGroupID="1"
 | 
					 | 
				
			||||||
      description="hello!"
 | 
					 | 
				
			||||||
      ref={$ref}
 | 
					 | 
				
			||||||
      title="Hello, world"
 | 
					 | 
				
			||||||
      onClick={action('on click')}
 | 
					 | 
				
			||||||
      onContextMenu={action('on context click')}
 | 
					 | 
				
			||||||
      watched
 | 
					 | 
				
			||||||
      checklists={{ complete: 1, total: 4 }}
 | 
					 | 
				
			||||||
      dueDate={{ isPastDue: true, formattedDate: 'Oct 26, 2020' }}
 | 
					 | 
				
			||||||
    />
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Everything = () => {
 | 
					 | 
				
			||||||
  const $ref = useRef<HTMLDivElement>(null);
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <Card
 | 
					 | 
				
			||||||
      taskID="1"
 | 
					 | 
				
			||||||
      taskGroupID="1"
 | 
					 | 
				
			||||||
      description="hello!"
 | 
					 | 
				
			||||||
      ref={$ref}
 | 
					 | 
				
			||||||
      title="Hello, world"
 | 
					 | 
				
			||||||
      onClick={action('on click')}
 | 
					 | 
				
			||||||
      onContextMenu={action('on context click')}
 | 
					 | 
				
			||||||
      watched
 | 
					 | 
				
			||||||
      members={[
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
          id: '1',
 | 
					 | 
				
			||||||
          fullName: 'Jordan Knott',
 | 
					 | 
				
			||||||
          profileIcon: {
 | 
					 | 
				
			||||||
            bgColor: '#0079bf',
 | 
					 | 
				
			||||||
            initials: 'JK',
 | 
					 | 
				
			||||||
            url: null,
 | 
					 | 
				
			||||||
          },
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
      ]}
 | 
					 | 
				
			||||||
      labels={labelData}
 | 
					 | 
				
			||||||
      checklists={{ complete: 1, total: 4 }}
 | 
					 | 
				
			||||||
      dueDate={{ isPastDue: false, formattedDate: 'Oct 26, 2020' }}
 | 
					 | 
				
			||||||
    />
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Members = () => {
 | 
					 | 
				
			||||||
  const $ref = useRef<HTMLDivElement>(null);
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <Card
 | 
					 | 
				
			||||||
      description={null}
 | 
					 | 
				
			||||||
      taskID="1"
 | 
					 | 
				
			||||||
      taskGroupID="1"
 | 
					 | 
				
			||||||
      ref={$ref}
 | 
					 | 
				
			||||||
      title="Hello, world"
 | 
					 | 
				
			||||||
      onClick={action('on click')}
 | 
					 | 
				
			||||||
      onContextMenu={action('on context click')}
 | 
					 | 
				
			||||||
      members={[
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
          id: '1',
 | 
					 | 
				
			||||||
          fullName: 'Jordan Knott',
 | 
					 | 
				
			||||||
          profileIcon: {
 | 
					 | 
				
			||||||
            bgColor: '#0079bf',
 | 
					 | 
				
			||||||
            initials: 'JK',
 | 
					 | 
				
			||||||
            url: null,
 | 
					 | 
				
			||||||
          },
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
      ]}
 | 
					 | 
				
			||||||
      labels={[]}
 | 
					 | 
				
			||||||
    />
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Editable = () => {
 | 
					 | 
				
			||||||
  const $ref = useRef<HTMLDivElement>(null);
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <Card
 | 
					 | 
				
			||||||
      taskID="1"
 | 
					 | 
				
			||||||
      taskGroupID="1"
 | 
					 | 
				
			||||||
      description="hello!"
 | 
					 | 
				
			||||||
      ref={$ref}
 | 
					 | 
				
			||||||
      title="Hello, world"
 | 
					 | 
				
			||||||
      onClick={action('on click')}
 | 
					 | 
				
			||||||
      onContextMenu={action('on context click')}
 | 
					 | 
				
			||||||
      watched
 | 
					 | 
				
			||||||
      labels={labelData}
 | 
					 | 
				
			||||||
      checklists={{ complete: 1, total: 4 }}
 | 
					 | 
				
			||||||
      dueDate={{ isPastDue: false, formattedDate: 'Oct 26, 2020' }}
 | 
					 | 
				
			||||||
      editable
 | 
					 | 
				
			||||||
      onEditCard={action('edit card')}
 | 
					 | 
				
			||||||
    />
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,18 +0,0 @@
 | 
				
			|||||||
import React from 'react';
 | 
					 | 
				
			||||||
import { action } from '@storybook/addon-actions';
 | 
					 | 
				
			||||||
import CardComposer from '.';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  component: CardComposer,
 | 
					 | 
				
			||||||
  title: 'CardComposer',
 | 
					 | 
				
			||||||
  parameters: {
 | 
					 | 
				
			||||||
    backgrounds: [
 | 
					 | 
				
			||||||
      { name: 'gray', value: '#f8f8f8', default: true },
 | 
					 | 
				
			||||||
      { name: 'white', value: '#ffffff' },
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Default = () => {
 | 
					 | 
				
			||||||
  return <CardComposer isOpen onClose={action('on close')} onCreateCard={action('on create card')} />;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,155 +0,0 @@
 | 
				
			|||||||
import React, { useState } from 'react';
 | 
					 | 
				
			||||||
import { action } from '@storybook/addon-actions';
 | 
					 | 
				
			||||||
import BaseStyles from 'App/BaseStyles';
 | 
					 | 
				
			||||||
import NormalizeStyles from 'App/NormalizeStyles';
 | 
					 | 
				
			||||||
import theme from 'App/ThemeStyles';
 | 
					 | 
				
			||||||
import produce from 'immer';
 | 
					 | 
				
			||||||
import styled, { ThemeProvider } from 'styled-components';
 | 
					 | 
				
			||||||
import NOOP from 'shared/utils/noop';
 | 
					 | 
				
			||||||
import Checklist, { ChecklistItem } from '.';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  component: Checklist,
 | 
					 | 
				
			||||||
  title: 'Checklist',
 | 
					 | 
				
			||||||
  parameters: {
 | 
					 | 
				
			||||||
    backgrounds: [
 | 
					 | 
				
			||||||
      { name: 'gray', value: '#f8f8f8', default: true },
 | 
					 | 
				
			||||||
      { name: 'white', value: '#ffffff' },
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const Container = styled.div`
 | 
					 | 
				
			||||||
  width: 552px;
 | 
					 | 
				
			||||||
  margin: 25px;
 | 
					 | 
				
			||||||
  border: 1px solid ${props => props.theme.colors.bg.primary};
 | 
					 | 
				
			||||||
`;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const defaultItems = [
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    id: '1',
 | 
					 | 
				
			||||||
    position: 1,
 | 
					 | 
				
			||||||
    taskChecklistID: '1',
 | 
					 | 
				
			||||||
    complete: false,
 | 
					 | 
				
			||||||
    name: 'Tasks',
 | 
					 | 
				
			||||||
    assigned: null,
 | 
					 | 
				
			||||||
    dueDate: null,
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    id: '2',
 | 
					 | 
				
			||||||
    taskChecklistID: '1',
 | 
					 | 
				
			||||||
    position: 2,
 | 
					 | 
				
			||||||
    complete: false,
 | 
					 | 
				
			||||||
    name: 'Projects',
 | 
					 | 
				
			||||||
    assigned: null,
 | 
					 | 
				
			||||||
    dueDate: null,
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    id: '3',
 | 
					 | 
				
			||||||
    position: 3,
 | 
					 | 
				
			||||||
    taskChecklistID: '1',
 | 
					 | 
				
			||||||
    complete: false,
 | 
					 | 
				
			||||||
    name: 'Teams',
 | 
					 | 
				
			||||||
    assigned: null,
 | 
					 | 
				
			||||||
    dueDate: null,
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    id: '4',
 | 
					 | 
				
			||||||
    position: 4,
 | 
					 | 
				
			||||||
    complete: false,
 | 
					 | 
				
			||||||
    taskChecklistID: '1',
 | 
					 | 
				
			||||||
    name: 'Organizations',
 | 
					 | 
				
			||||||
    assigned: null,
 | 
					 | 
				
			||||||
    dueDate: null,
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Default = () => {
 | 
					 | 
				
			||||||
  const [checklistName, setChecklistName] = useState('Checklist');
 | 
					 | 
				
			||||||
  const [items, setItems] = useState(defaultItems);
 | 
					 | 
				
			||||||
  const onToggleItem = (itemID: string, complete: boolean) => {
 | 
					 | 
				
			||||||
    setItems(
 | 
					 | 
				
			||||||
      produce(items, draftState => {
 | 
					 | 
				
			||||||
        const idx = items.findIndex(item => item.id === itemID);
 | 
					 | 
				
			||||||
        if (idx !== -1) {
 | 
					 | 
				
			||||||
          draftState[idx] = {
 | 
					 | 
				
			||||||
            ...draftState[idx],
 | 
					 | 
				
			||||||
            complete,
 | 
					 | 
				
			||||||
          };
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }),
 | 
					 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <>
 | 
					 | 
				
			||||||
      <BaseStyles />
 | 
					 | 
				
			||||||
      <NormalizeStyles />
 | 
					 | 
				
			||||||
      <ThemeProvider theme={theme}>
 | 
					 | 
				
			||||||
        <Container>
 | 
					 | 
				
			||||||
          <Checklist
 | 
					 | 
				
			||||||
            wrapperProps={{}}
 | 
					 | 
				
			||||||
            handleProps={{}}
 | 
					 | 
				
			||||||
            name={checklistName}
 | 
					 | 
				
			||||||
            checklistID="checklist-one"
 | 
					 | 
				
			||||||
            items={items}
 | 
					 | 
				
			||||||
            onDeleteChecklist={action('delete checklist')}
 | 
					 | 
				
			||||||
            onChangeName={currentName => {
 | 
					 | 
				
			||||||
              setChecklistName(currentName);
 | 
					 | 
				
			||||||
            }}
 | 
					 | 
				
			||||||
            onAddItem={itemName => {
 | 
					 | 
				
			||||||
              let position = 1;
 | 
					 | 
				
			||||||
              const lastItem = items[-1];
 | 
					 | 
				
			||||||
              if (lastItem) {
 | 
					 | 
				
			||||||
                position = lastItem.position * 2 + 1;
 | 
					 | 
				
			||||||
              }
 | 
					 | 
				
			||||||
              setItems([
 | 
					 | 
				
			||||||
                ...items,
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                  id: `${Math.random()}`,
 | 
					 | 
				
			||||||
                  name: itemName,
 | 
					 | 
				
			||||||
                  complete: false,
 | 
					 | 
				
			||||||
                  assigned: null,
 | 
					 | 
				
			||||||
                  dueDate: null,
 | 
					 | 
				
			||||||
                  position,
 | 
					 | 
				
			||||||
                  taskChecklistID: '1',
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
              ]);
 | 
					 | 
				
			||||||
            }}
 | 
					 | 
				
			||||||
            onDeleteItem={itemID => {
 | 
					 | 
				
			||||||
              setItems(items.filter(item => item.id !== itemID));
 | 
					 | 
				
			||||||
            }}
 | 
					 | 
				
			||||||
            onChangeItemName={(itemID, currentName) => {
 | 
					 | 
				
			||||||
              setItems(
 | 
					 | 
				
			||||||
                produce(items, draftState => {
 | 
					 | 
				
			||||||
                  const idx = items.findIndex(item => item.id === itemID);
 | 
					 | 
				
			||||||
                  if (idx !== -1) {
 | 
					 | 
				
			||||||
                    draftState[idx] = {
 | 
					 | 
				
			||||||
                      ...draftState[idx],
 | 
					 | 
				
			||||||
                      name: currentName,
 | 
					 | 
				
			||||||
                    };
 | 
					 | 
				
			||||||
                  }
 | 
					 | 
				
			||||||
                }),
 | 
					 | 
				
			||||||
              );
 | 
					 | 
				
			||||||
            }}
 | 
					 | 
				
			||||||
            onToggleItem={onToggleItem}
 | 
					 | 
				
			||||||
          >
 | 
					 | 
				
			||||||
            {items.map(item => (
 | 
					 | 
				
			||||||
              <ChecklistItem
 | 
					 | 
				
			||||||
                key={item.id}
 | 
					 | 
				
			||||||
                wrapperProps={{}}
 | 
					 | 
				
			||||||
                handleProps={{}}
 | 
					 | 
				
			||||||
                checklistID="id"
 | 
					 | 
				
			||||||
                itemID={item.id}
 | 
					 | 
				
			||||||
                name={item.name}
 | 
					 | 
				
			||||||
                complete={item.complete}
 | 
					 | 
				
			||||||
                onDeleteItem={NOOP}
 | 
					 | 
				
			||||||
                onChangeName={NOOP}
 | 
					 | 
				
			||||||
                onToggleItem={NOOP}
 | 
					 | 
				
			||||||
              />
 | 
					 | 
				
			||||||
            ))}
 | 
					 | 
				
			||||||
          </Checklist>
 | 
					 | 
				
			||||||
        </Container>
 | 
					 | 
				
			||||||
      </ThemeProvider>
 | 
					 | 
				
			||||||
    </>
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,43 +0,0 @@
 | 
				
			|||||||
import React from 'react';
 | 
					 | 
				
			||||||
import BaseStyles from 'App/BaseStyles';
 | 
					 | 
				
			||||||
import NormalizeStyles from 'App/NormalizeStyles';
 | 
					 | 
				
			||||||
import theme from 'App/ThemeStyles';
 | 
					 | 
				
			||||||
import styled, { ThemeProvider } from 'styled-components';
 | 
					 | 
				
			||||||
import { User } from 'shared/icons';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import Input from '.';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  component: Input,
 | 
					 | 
				
			||||||
  title: 'Input',
 | 
					 | 
				
			||||||
  parameters: {
 | 
					 | 
				
			||||||
    backgrounds: [
 | 
					 | 
				
			||||||
      { name: 'white', value: '#ffffff', default: true },
 | 
					 | 
				
			||||||
      { name: 'gray', value: '#f8f8f8' },
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const Wrapper = styled.div`
 | 
					 | 
				
			||||||
  background: ${props => props.theme.colors.bg.primary};
 | 
					 | 
				
			||||||
  padding: 45px;
 | 
					 | 
				
			||||||
  margin: 25px;
 | 
					 | 
				
			||||||
  display: flex;
 | 
					 | 
				
			||||||
  flex-direction: column;
 | 
					 | 
				
			||||||
`;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Default = () => {
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <>
 | 
					 | 
				
			||||||
      <NormalizeStyles />
 | 
					 | 
				
			||||||
      <BaseStyles />
 | 
					 | 
				
			||||||
      <ThemeProvider theme={theme}>
 | 
					 | 
				
			||||||
        <Wrapper>
 | 
					 | 
				
			||||||
          <Input label="Label placeholder" />
 | 
					 | 
				
			||||||
          <Input width="100%" placeholder="Placeholder" />
 | 
					 | 
				
			||||||
          <Input icon={<User width={20} height={20} />} width="100%" placeholder="Placeholder" />
 | 
					 | 
				
			||||||
        </Wrapper>
 | 
					 | 
				
			||||||
      </ThemeProvider>
 | 
					 | 
				
			||||||
    </>
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,65 +0,0 @@
 | 
				
			|||||||
import React, { createRef, useState } from 'react';
 | 
					 | 
				
			||||||
import styled from 'styled-components';
 | 
					 | 
				
			||||||
import { action } from '@storybook/addon-actions';
 | 
					 | 
				
			||||||
import DropdownMenu from '.';
 | 
					 | 
				
			||||||
import theme from '../../../App/ThemeStyles';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  component: DropdownMenu,
 | 
					 | 
				
			||||||
  title: 'DropdownMenu',
 | 
					 | 
				
			||||||
  parameters: {
 | 
					 | 
				
			||||||
    backgrounds: [
 | 
					 | 
				
			||||||
      { name: 'white', value: '#ffffff' },
 | 
					 | 
				
			||||||
      { name: 'gray', value: '#f8f8f8' },
 | 
					 | 
				
			||||||
      { name: 'darkBlue', value: theme.colors.bg.secondary, default: true },
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const Container = styled.div`
 | 
					 | 
				
			||||||
  display: flex;
 | 
					 | 
				
			||||||
  align-items: center;
 | 
					 | 
				
			||||||
  justify-content: center;
 | 
					 | 
				
			||||||
`;
 | 
					 | 
				
			||||||
const Button = styled.div`
 | 
					 | 
				
			||||||
  font-size: 18px;
 | 
					 | 
				
			||||||
  padding: 15px 20px;
 | 
					 | 
				
			||||||
  color: #fff;
 | 
					 | 
				
			||||||
  background: #000;
 | 
					 | 
				
			||||||
`;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Default = () => {
 | 
					 | 
				
			||||||
  const [menu, setMenu] = useState({
 | 
					 | 
				
			||||||
    top: 0,
 | 
					 | 
				
			||||||
    left: 0,
 | 
					 | 
				
			||||||
    isOpen: false,
 | 
					 | 
				
			||||||
  });
 | 
					 | 
				
			||||||
  const $buttonRef: any = createRef();
 | 
					 | 
				
			||||||
  const onClick = () => {
 | 
					 | 
				
			||||||
    setMenu({
 | 
					 | 
				
			||||||
      isOpen: !menu.isOpen,
 | 
					 | 
				
			||||||
      left: $buttonRef.current.getBoundingClientRect().right,
 | 
					 | 
				
			||||||
      top: $buttonRef.current.getBoundingClientRect().bottom,
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <>
 | 
					 | 
				
			||||||
      <Container>
 | 
					 | 
				
			||||||
        <Button onClick={onClick} ref={$buttonRef}>
 | 
					 | 
				
			||||||
          Click me
 | 
					 | 
				
			||||||
        </Button>
 | 
					 | 
				
			||||||
      </Container>
 | 
					 | 
				
			||||||
      {menu.isOpen && (
 | 
					 | 
				
			||||||
        <DropdownMenu
 | 
					 | 
				
			||||||
          onAdminConsole={action('admin')}
 | 
					 | 
				
			||||||
          onCloseDropdown={() => {
 | 
					 | 
				
			||||||
            setMenu({ top: 0, left: 0, isOpen: false });
 | 
					 | 
				
			||||||
          }}
 | 
					 | 
				
			||||||
          onLogout={action('on logout')}
 | 
					 | 
				
			||||||
          left={menu.left}
 | 
					 | 
				
			||||||
          top={menu.top}
 | 
					 | 
				
			||||||
        />
 | 
					 | 
				
			||||||
      )}
 | 
					 | 
				
			||||||
    </>
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,74 +0,0 @@
 | 
				
			|||||||
import React from 'react';
 | 
					 | 
				
			||||||
import { action } from '@storybook/addon-actions';
 | 
					 | 
				
			||||||
import BaseStyles from 'App/BaseStyles';
 | 
					 | 
				
			||||||
import NormalizeStyles from 'App/NormalizeStyles';
 | 
					 | 
				
			||||||
import theme from 'App/ThemeStyles';
 | 
					 | 
				
			||||||
import styled, { ThemeProvider } from 'styled-components';
 | 
					 | 
				
			||||||
import { Popup } from '../PopupMenu';
 | 
					 | 
				
			||||||
import DueDateManager from '.';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const PopupWrapper = styled.div`
 | 
					 | 
				
			||||||
  width: 310px;
 | 
					 | 
				
			||||||
`;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  component: DueDateManager,
 | 
					 | 
				
			||||||
  title: 'DueDateManager',
 | 
					 | 
				
			||||||
  parameters: {
 | 
					 | 
				
			||||||
    backgrounds: [
 | 
					 | 
				
			||||||
      { name: 'gray', value: '#f8f8f8', default: true },
 | 
					 | 
				
			||||||
      { name: 'white', value: '#ffffff' },
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Default = () => {
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <>
 | 
					 | 
				
			||||||
      <NormalizeStyles />
 | 
					 | 
				
			||||||
      <BaseStyles />
 | 
					 | 
				
			||||||
      <ThemeProvider theme={theme}>
 | 
					 | 
				
			||||||
        <PopupWrapper>
 | 
					 | 
				
			||||||
          <Popup title={null} tab={0}>
 | 
					 | 
				
			||||||
            <DueDateManager
 | 
					 | 
				
			||||||
              task={{
 | 
					 | 
				
			||||||
                id: '1',
 | 
					 | 
				
			||||||
                taskGroup: { name: 'General', id: '1', position: 1 },
 | 
					 | 
				
			||||||
                name: 'Hello, world',
 | 
					 | 
				
			||||||
                position: 1,
 | 
					 | 
				
			||||||
                labels: [
 | 
					 | 
				
			||||||
                  {
 | 
					 | 
				
			||||||
                    id: 'soft-skills',
 | 
					 | 
				
			||||||
                    assignedDate: new Date().toString(),
 | 
					 | 
				
			||||||
                    projectLabel: {
 | 
					 | 
				
			||||||
                      createdDate: new Date().toString(),
 | 
					 | 
				
			||||||
                      id: 'label-soft-skills',
 | 
					 | 
				
			||||||
                      name: 'Soft Skills',
 | 
					 | 
				
			||||||
                      labelColor: {
 | 
					 | 
				
			||||||
                        id: '1',
 | 
					 | 
				
			||||||
                        name: 'white',
 | 
					 | 
				
			||||||
                        colorHex: '#fff',
 | 
					 | 
				
			||||||
                        position: 1,
 | 
					 | 
				
			||||||
                      },
 | 
					 | 
				
			||||||
                    },
 | 
					 | 
				
			||||||
                  },
 | 
					 | 
				
			||||||
                ],
 | 
					 | 
				
			||||||
                description: 'hello!',
 | 
					 | 
				
			||||||
                assigned: [
 | 
					 | 
				
			||||||
                  {
 | 
					 | 
				
			||||||
                    id: '1',
 | 
					 | 
				
			||||||
                    profileIcon: { url: null, initials: null, bgColor: null },
 | 
					 | 
				
			||||||
                    fullName: 'Jordan Knott',
 | 
					 | 
				
			||||||
                  },
 | 
					 | 
				
			||||||
                ],
 | 
					 | 
				
			||||||
              }}
 | 
					 | 
				
			||||||
              onCancel={action('cancel')}
 | 
					 | 
				
			||||||
              onDueDateChange={action('due date change')}
 | 
					 | 
				
			||||||
              onRemoveDueDate={action('remove due date')}
 | 
					 | 
				
			||||||
            />
 | 
					 | 
				
			||||||
          </Popup>
 | 
					 | 
				
			||||||
        </PopupWrapper>
 | 
					 | 
				
			||||||
      </ThemeProvider>
 | 
					 | 
				
			||||||
    </>
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,43 +0,0 @@
 | 
				
			|||||||
import React from 'react';
 | 
					 | 
				
			||||||
import BaseStyles from 'App/BaseStyles';
 | 
					 | 
				
			||||||
import NormalizeStyles from 'App/NormalizeStyles';
 | 
					 | 
				
			||||||
import theme from 'App/ThemeStyles';
 | 
					 | 
				
			||||||
import styled, { ThemeProvider } from 'styled-components';
 | 
					 | 
				
			||||||
import { User } from 'shared/icons';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import Input from '.';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  component: Input,
 | 
					 | 
				
			||||||
  title: 'Input',
 | 
					 | 
				
			||||||
  parameters: {
 | 
					 | 
				
			||||||
    backgrounds: [
 | 
					 | 
				
			||||||
      { name: 'white', value: '#ffffff', default: true },
 | 
					 | 
				
			||||||
      { name: 'gray', value: '#f8f8f8' },
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const Wrapper = styled.div`
 | 
					 | 
				
			||||||
  background: ${props => props.theme.colors.bg.primary};
 | 
					 | 
				
			||||||
  padding: 45px;
 | 
					 | 
				
			||||||
  margin: 25px;
 | 
					 | 
				
			||||||
  display: flex;
 | 
					 | 
				
			||||||
  flex-direction: column;
 | 
					 | 
				
			||||||
`;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Default = () => {
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <>
 | 
					 | 
				
			||||||
      <NormalizeStyles />
 | 
					 | 
				
			||||||
      <BaseStyles />
 | 
					 | 
				
			||||||
      <ThemeProvider theme={theme}>
 | 
					 | 
				
			||||||
        <Wrapper>
 | 
					 | 
				
			||||||
          <Input label="Label placeholder" />
 | 
					 | 
				
			||||||
          <Input width="100%" placeholder="Placeholder" />
 | 
					 | 
				
			||||||
          <Input icon={<User width={20} height={20} />} width="100%" placeholder="Placeholder" />
 | 
					 | 
				
			||||||
        </Wrapper>
 | 
					 | 
				
			||||||
      </ThemeProvider>
 | 
					 | 
				
			||||||
    </>
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,146 +0,0 @@
 | 
				
			|||||||
import React, { createRef } from 'react';
 | 
					 | 
				
			||||||
import { action } from '@storybook/addon-actions';
 | 
					 | 
				
			||||||
import Card from 'shared/components/Card';
 | 
					 | 
				
			||||||
import CardComposer from 'shared/components/CardComposer';
 | 
					 | 
				
			||||||
import LabelColors from 'shared/constants/labelColors';
 | 
					 | 
				
			||||||
import NOOP from 'shared/utils/noop';
 | 
					 | 
				
			||||||
import List, { ListCards } from '.';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  component: List,
 | 
					 | 
				
			||||||
  title: 'List',
 | 
					 | 
				
			||||||
  parameters: {
 | 
					 | 
				
			||||||
    backgrounds: [
 | 
					 | 
				
			||||||
      { name: 'white', value: '#ffffff', default: true },
 | 
					 | 
				
			||||||
      { name: 'gray', value: '#f8f8f8' },
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const labelData: Array<ProjectLabel> = [
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    id: 'development',
 | 
					 | 
				
			||||||
    name: 'Development',
 | 
					 | 
				
			||||||
    createdDate: new Date().toString(),
 | 
					 | 
				
			||||||
    labelColor: {
 | 
					 | 
				
			||||||
      id: '1',
 | 
					 | 
				
			||||||
      colorHex: LabelColors.BLUE,
 | 
					 | 
				
			||||||
      name: 'blue',
 | 
					 | 
				
			||||||
      position: 1,
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const createCard = () => {
 | 
					 | 
				
			||||||
  const $ref = createRef<HTMLDivElement>();
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <Card
 | 
					 | 
				
			||||||
      taskID="1"
 | 
					 | 
				
			||||||
      taskGroupID="1"
 | 
					 | 
				
			||||||
      description="hello!"
 | 
					 | 
				
			||||||
      ref={$ref}
 | 
					 | 
				
			||||||
      title="Hello, world"
 | 
					 | 
				
			||||||
      onClick={action('on click')}
 | 
					 | 
				
			||||||
      onContextMenu={action('on context click')}
 | 
					 | 
				
			||||||
      watched
 | 
					 | 
				
			||||||
      labels={labelData}
 | 
					 | 
				
			||||||
      checklists={{ complete: 1, total: 4 }}
 | 
					 | 
				
			||||||
      dueDate={{ isPastDue: false, formattedDate: 'Oct 26, 2020' }}
 | 
					 | 
				
			||||||
    />
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Default = () => {
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <List
 | 
					 | 
				
			||||||
      id=""
 | 
					 | 
				
			||||||
      name="General"
 | 
					 | 
				
			||||||
      isComposerOpen={false}
 | 
					 | 
				
			||||||
      onSaveName={action('on save name')}
 | 
					 | 
				
			||||||
      onOpenComposer={action('on open composer')}
 | 
					 | 
				
			||||||
      onExtraMenuOpen={action('extra menu open')}
 | 
					 | 
				
			||||||
    >
 | 
					 | 
				
			||||||
      <ListCards>
 | 
					 | 
				
			||||||
        <CardComposer onClose={NOOP} onCreateCard={NOOP} isOpen={false} />
 | 
					 | 
				
			||||||
      </ListCards>
 | 
					 | 
				
			||||||
    </List>
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const WithCardComposer = () => {
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <List
 | 
					 | 
				
			||||||
      id="1"
 | 
					 | 
				
			||||||
      name="General"
 | 
					 | 
				
			||||||
      isComposerOpen
 | 
					 | 
				
			||||||
      onSaveName={action('on save name')}
 | 
					 | 
				
			||||||
      onOpenComposer={action('on open composer')}
 | 
					 | 
				
			||||||
      onExtraMenuOpen={action('extra menu open')}
 | 
					 | 
				
			||||||
    >
 | 
					 | 
				
			||||||
      <ListCards>
 | 
					 | 
				
			||||||
        <CardComposer onClose={NOOP} onCreateCard={NOOP} isOpen />
 | 
					 | 
				
			||||||
      </ListCards>
 | 
					 | 
				
			||||||
    </List>
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const WithCard = () => {
 | 
					 | 
				
			||||||
  const $cardRef: any = createRef();
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <List
 | 
					 | 
				
			||||||
      id="1"
 | 
					 | 
				
			||||||
      name="General"
 | 
					 | 
				
			||||||
      isComposerOpen={false}
 | 
					 | 
				
			||||||
      onSaveName={action('on save name')}
 | 
					 | 
				
			||||||
      onOpenComposer={action('on open composer')}
 | 
					 | 
				
			||||||
      onExtraMenuOpen={action('extra menu open')}
 | 
					 | 
				
			||||||
    >
 | 
					 | 
				
			||||||
      <ListCards>
 | 
					 | 
				
			||||||
        <Card
 | 
					 | 
				
			||||||
          taskID="1"
 | 
					 | 
				
			||||||
          taskGroupID="1"
 | 
					 | 
				
			||||||
          description="hello!"
 | 
					 | 
				
			||||||
          ref={$cardRef}
 | 
					 | 
				
			||||||
          title="Hello, world"
 | 
					 | 
				
			||||||
          onClick={action('on click')}
 | 
					 | 
				
			||||||
          onContextMenu={action('on context click')}
 | 
					 | 
				
			||||||
          watched
 | 
					 | 
				
			||||||
          labels={labelData}
 | 
					 | 
				
			||||||
          checklists={{ complete: 1, total: 4 }}
 | 
					 | 
				
			||||||
          dueDate={{ isPastDue: false, formattedDate: 'Oct 26, 2020' }}
 | 
					 | 
				
			||||||
        />
 | 
					 | 
				
			||||||
        <CardComposer onClose={NOOP} onCreateCard={NOOP} isOpen={false} />
 | 
					 | 
				
			||||||
      </ListCards>
 | 
					 | 
				
			||||||
    </List>
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
export const WithCardAndComposer = () => {
 | 
					 | 
				
			||||||
  const $cardRef: any = createRef();
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <List
 | 
					 | 
				
			||||||
      id="1"
 | 
					 | 
				
			||||||
      name="General"
 | 
					 | 
				
			||||||
      isComposerOpen
 | 
					 | 
				
			||||||
      onSaveName={action('on save name')}
 | 
					 | 
				
			||||||
      onOpenComposer={action('on open composer')}
 | 
					 | 
				
			||||||
      onExtraMenuOpen={action('extra menu open')}
 | 
					 | 
				
			||||||
    >
 | 
					 | 
				
			||||||
      <ListCards>
 | 
					 | 
				
			||||||
        <Card
 | 
					 | 
				
			||||||
          taskID="1"
 | 
					 | 
				
			||||||
          taskGroupID="1"
 | 
					 | 
				
			||||||
          description="hello!"
 | 
					 | 
				
			||||||
          ref={$cardRef}
 | 
					 | 
				
			||||||
          title="Hello, world"
 | 
					 | 
				
			||||||
          onClick={action('on click')}
 | 
					 | 
				
			||||||
          onContextMenu={action('on context click')}
 | 
					 | 
				
			||||||
          watched
 | 
					 | 
				
			||||||
          labels={labelData}
 | 
					 | 
				
			||||||
          checklists={{ complete: 1, total: 4 }}
 | 
					 | 
				
			||||||
          dueDate={{ isPastDue: false, formattedDate: 'Oct 26, 2020' }}
 | 
					 | 
				
			||||||
        />
 | 
					 | 
				
			||||||
        <CardComposer onClose={NOOP} onCreateCard={NOOP} isOpen />
 | 
					 | 
				
			||||||
      </ListCards>
 | 
					 | 
				
			||||||
    </List>
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -56,11 +56,7 @@ const List = React.forwardRef(
 | 
				
			|||||||
    };
 | 
					    };
 | 
				
			||||||
    const onBlur = () => {
 | 
					    const onBlur = () => {
 | 
				
			||||||
      setEditingTitle(false);
 | 
					      setEditingTitle(false);
 | 
				
			||||||
      if (listName.trim() === '') {
 | 
					 | 
				
			||||||
        setListName(name);
 | 
					 | 
				
			||||||
      } else {
 | 
					 | 
				
			||||||
      onSaveName(listName);
 | 
					      onSaveName(listName);
 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
    const onEscape = () => {
 | 
					    const onEscape = () => {
 | 
				
			||||||
      if ($listNameRef && $listNameRef.current) {
 | 
					      if ($listNameRef && $listNameRef.current) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,104 +0,0 @@
 | 
				
			|||||||
import React, { useState } from 'react';
 | 
					 | 
				
			||||||
import { action } from '@storybook/addon-actions';
 | 
					 | 
				
			||||||
import theme from 'App/ThemeStyles';
 | 
					 | 
				
			||||||
import Lists from '.';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  component: Lists,
 | 
					 | 
				
			||||||
  title: 'Lists',
 | 
					 | 
				
			||||||
  parameters: {
 | 
					 | 
				
			||||||
    backgrounds: [
 | 
					 | 
				
			||||||
      { name: 'gray', value: theme.colors.bg.secondary, default: true },
 | 
					 | 
				
			||||||
      { name: 'white', value: '#ffffff' },
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const initialListsData = {
 | 
					 | 
				
			||||||
  columns: {
 | 
					 | 
				
			||||||
    'column-1': {
 | 
					 | 
				
			||||||
      taskGroupID: 'column-1',
 | 
					 | 
				
			||||||
      name: 'General',
 | 
					 | 
				
			||||||
      taskIds: ['task-3', 'task-4', 'task-1', 'task-2'],
 | 
					 | 
				
			||||||
      position: 1,
 | 
					 | 
				
			||||||
      tasks: [],
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    'column-2': {
 | 
					 | 
				
			||||||
      taskGroupID: 'column-2',
 | 
					 | 
				
			||||||
      name: 'Development',
 | 
					 | 
				
			||||||
      taskIds: [],
 | 
					 | 
				
			||||||
      position: 2,
 | 
					 | 
				
			||||||
      tasks: [],
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
  tasks: {
 | 
					 | 
				
			||||||
    'task-1': {
 | 
					 | 
				
			||||||
      taskID: 'task-1',
 | 
					 | 
				
			||||||
      taskGroup: { taskGroupID: 'column-1' },
 | 
					 | 
				
			||||||
      name: 'Create roadmap',
 | 
					 | 
				
			||||||
      position: 2,
 | 
					 | 
				
			||||||
      labels: [],
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    'task-2': {
 | 
					 | 
				
			||||||
      taskID: 'task-2',
 | 
					 | 
				
			||||||
      taskGroup: { taskGroupID: 'column-1' },
 | 
					 | 
				
			||||||
      position: 1,
 | 
					 | 
				
			||||||
      name: 'Create authentication',
 | 
					 | 
				
			||||||
      labels: [],
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    'task-3': {
 | 
					 | 
				
			||||||
      taskID: 'task-3',
 | 
					 | 
				
			||||||
      taskGroup: { taskGroupID: 'column-1' },
 | 
					 | 
				
			||||||
      position: 3,
 | 
					 | 
				
			||||||
      name: 'Create login',
 | 
					 | 
				
			||||||
      labels: [],
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    'task-4': {
 | 
					 | 
				
			||||||
      taskID: 'task-4',
 | 
					 | 
				
			||||||
      taskGroup: { taskGroupID: 'column-1' },
 | 
					 | 
				
			||||||
      position: 4,
 | 
					 | 
				
			||||||
      name: 'Create plugins',
 | 
					 | 
				
			||||||
      labels: [],
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Default = () => {
 | 
					 | 
				
			||||||
  const [listsData, setListsData] = useState(initialListsData);
 | 
					 | 
				
			||||||
  const onCardDrop = (droppedTask: Task) => {
 | 
					 | 
				
			||||||
    const newState = {
 | 
					 | 
				
			||||||
      ...listsData,
 | 
					 | 
				
			||||||
      tasks: {
 | 
					 | 
				
			||||||
        ...listsData.tasks,
 | 
					 | 
				
			||||||
        [droppedTask.id]: droppedTask,
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
    setListsData(newState);
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
  const onListDrop = (droppedColumn: any) => {
 | 
					 | 
				
			||||||
    const newState = {
 | 
					 | 
				
			||||||
      ...listsData,
 | 
					 | 
				
			||||||
      columns: {
 | 
					 | 
				
			||||||
        ...listsData.columns,
 | 
					 | 
				
			||||||
        [droppedColumn.taskGroupID]: droppedColumn,
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
    setListsData(newState);
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <Lists
 | 
					 | 
				
			||||||
      taskGroups={[]}
 | 
					 | 
				
			||||||
      onTaskClick={action('card click')}
 | 
					 | 
				
			||||||
      onQuickEditorOpen={action('card composer open')}
 | 
					 | 
				
			||||||
      onCreateTask={action('card create')}
 | 
					 | 
				
			||||||
      onTaskDrop={onCardDrop}
 | 
					 | 
				
			||||||
      onTaskGroupDrop={onListDrop}
 | 
					 | 
				
			||||||
      onChangeTaskGroupName={action('change group name')}
 | 
					 | 
				
			||||||
      cardLabelVariant="large"
 | 
					 | 
				
			||||||
      onCardLabelClick={action('label click')}
 | 
					 | 
				
			||||||
      onCreateTaskGroup={action('create list')}
 | 
					 | 
				
			||||||
      onExtraMenuOpen={action('extra menu open')}
 | 
					 | 
				
			||||||
      onCardMemberClick={action('card member click')}
 | 
					 | 
				
			||||||
    />
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,24 +0,0 @@
 | 
				
			|||||||
import React from 'react';
 | 
					 | 
				
			||||||
import NormalizeStyles from 'App/NormalizeStyles';
 | 
					 | 
				
			||||||
import BaseStyles from 'App/BaseStyles';
 | 
					 | 
				
			||||||
import LoadingSpinner from '.';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  component: LoadingSpinner,
 | 
					 | 
				
			||||||
  title: 'Login',
 | 
					 | 
				
			||||||
  parameters: {
 | 
					 | 
				
			||||||
    backgrounds: [
 | 
					 | 
				
			||||||
      { name: 'white', value: '#ffffff' },
 | 
					 | 
				
			||||||
      { name: 'gray', value: '#cdd3e1', default: true },
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
export const Default = () => {
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <>
 | 
					 | 
				
			||||||
      <NormalizeStyles />
 | 
					 | 
				
			||||||
      <BaseStyles />
 | 
					 | 
				
			||||||
      <LoadingSpinner />
 | 
					 | 
				
			||||||
    </>
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,67 +0,0 @@
 | 
				
			|||||||
import React from 'react';
 | 
					 | 
				
			||||||
import { action } from '@storybook/addon-actions';
 | 
					 | 
				
			||||||
import NormalizeStyles from 'App/NormalizeStyles';
 | 
					 | 
				
			||||||
import BaseStyles from 'App/BaseStyles';
 | 
					 | 
				
			||||||
import styled from 'styled-components';
 | 
					 | 
				
			||||||
import Login from '.';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  component: Login,
 | 
					 | 
				
			||||||
  title: 'Login',
 | 
					 | 
				
			||||||
  parameters: {
 | 
					 | 
				
			||||||
    backgrounds: [
 | 
					 | 
				
			||||||
      { name: 'white', value: '#ffffff' },
 | 
					 | 
				
			||||||
      { name: 'gray', value: '#cdd3e1', default: true },
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const Container = styled.div`
 | 
					 | 
				
			||||||
  display: flex;
 | 
					 | 
				
			||||||
  align-items: center;
 | 
					 | 
				
			||||||
  justify-content: center;
 | 
					 | 
				
			||||||
  width: 100vw;
 | 
					 | 
				
			||||||
  height: 100vh;
 | 
					 | 
				
			||||||
`;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const LoginWrapper = styled.div`
 | 
					 | 
				
			||||||
  width: 60%;
 | 
					 | 
				
			||||||
`;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Default = () => {
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <>
 | 
					 | 
				
			||||||
      <NormalizeStyles />
 | 
					 | 
				
			||||||
      <BaseStyles />
 | 
					 | 
				
			||||||
      <Container>
 | 
					 | 
				
			||||||
        <LoginWrapper>
 | 
					 | 
				
			||||||
          <Login onSubmit={action('on submit')} />
 | 
					 | 
				
			||||||
        </LoginWrapper>
 | 
					 | 
				
			||||||
      </Container>
 | 
					 | 
				
			||||||
    </>
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const WithSubmission = () => {
 | 
					 | 
				
			||||||
  const onSubmit = async (data: LoginFormData, setComplete: (val: boolean) => void, setError: any) => {
 | 
					 | 
				
			||||||
    await sleep(2000);
 | 
					 | 
				
			||||||
    if (data.username !== 'test' || data.password !== 'test') {
 | 
					 | 
				
			||||||
      setError('username', 'invalid', 'Invalid username');
 | 
					 | 
				
			||||||
      setError('password', 'invalid', 'Invalid password');
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    setComplete(true);
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <>
 | 
					 | 
				
			||||||
      <NormalizeStyles />
 | 
					 | 
				
			||||||
      <BaseStyles />
 | 
					 | 
				
			||||||
      <Container>
 | 
					 | 
				
			||||||
        <LoginWrapper>
 | 
					 | 
				
			||||||
          <Login onSubmit={onSubmit} />
 | 
					 | 
				
			||||||
        </LoginWrapper>
 | 
					 | 
				
			||||||
      </Container>
 | 
					 | 
				
			||||||
    </>
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,18 +0,0 @@
 | 
				
			|||||||
import React from 'react';
 | 
					 | 
				
			||||||
import { action } from '@storybook/addon-actions';
 | 
					 | 
				
			||||||
import MemberManager from '.';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  component: MemberManager,
 | 
					 | 
				
			||||||
  title: 'MemberManager',
 | 
					 | 
				
			||||||
  parameters: {
 | 
					 | 
				
			||||||
    backgrounds: [
 | 
					 | 
				
			||||||
      { name: 'white', value: '#ffffff', default: true },
 | 
					 | 
				
			||||||
      { name: 'gray', value: '#f8f8f8' },
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Default = () => {
 | 
					 | 
				
			||||||
  return <MemberManager availableMembers={[]} activeMembers={[]} onMemberChange={action('member change')} />;
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,32 +0,0 @@
 | 
				
			|||||||
import React from 'react';
 | 
					 | 
				
			||||||
import { action } from '@storybook/addon-actions';
 | 
					 | 
				
			||||||
import NormalizeStyles from 'App/NormalizeStyles';
 | 
					 | 
				
			||||||
import BaseStyles from 'App/BaseStyles';
 | 
					 | 
				
			||||||
import Modal from '.';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  component: Modal,
 | 
					 | 
				
			||||||
  title: 'Modal',
 | 
					 | 
				
			||||||
  parameters: {
 | 
					 | 
				
			||||||
    backgrounds: [
 | 
					 | 
				
			||||||
      { name: 'white', value: '#ffffff' },
 | 
					 | 
				
			||||||
      { name: 'gray', value: '#cdd3e1', default: true },
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Default = () => {
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <>
 | 
					 | 
				
			||||||
      <NormalizeStyles />
 | 
					 | 
				
			||||||
      <BaseStyles />
 | 
					 | 
				
			||||||
      <Modal
 | 
					 | 
				
			||||||
        width={1040}
 | 
					 | 
				
			||||||
        onClose={action('on close')}
 | 
					 | 
				
			||||||
        renderContent={() => {
 | 
					 | 
				
			||||||
          return <h1>Hello!</h1>;
 | 
					 | 
				
			||||||
        }}
 | 
					 | 
				
			||||||
      />
 | 
					 | 
				
			||||||
    </>
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,40 +0,0 @@
 | 
				
			|||||||
import React from 'react';
 | 
					 | 
				
			||||||
import styled from 'styled-components';
 | 
					 | 
				
			||||||
import NormalizeStyles from 'App/NormalizeStyles';
 | 
					 | 
				
			||||||
import BaseStyles from 'App/BaseStyles';
 | 
					 | 
				
			||||||
import { Home } from 'shared/icons';
 | 
					 | 
				
			||||||
import Navbar, { ActionButton, ButtonContainer, PrimaryLogo } from '.';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  component: Navbar,
 | 
					 | 
				
			||||||
  title: 'Navbar',
 | 
					 | 
				
			||||||
  parameters: {
 | 
					 | 
				
			||||||
    backgrounds: [
 | 
					 | 
				
			||||||
      { name: 'white', value: '#ffffff', default: true },
 | 
					 | 
				
			||||||
      { name: 'gray', value: '#cdd3e1' },
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
const MainContent = styled.div`
 | 
					 | 
				
			||||||
  padding: 0 0 50px 80px;
 | 
					 | 
				
			||||||
`;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Default = () => {
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <>
 | 
					 | 
				
			||||||
      <NormalizeStyles />
 | 
					 | 
				
			||||||
      <BaseStyles />
 | 
					 | 
				
			||||||
      <Navbar>
 | 
					 | 
				
			||||||
        <PrimaryLogo />
 | 
					 | 
				
			||||||
        <ButtonContainer>
 | 
					 | 
				
			||||||
          <ActionButton name="Home">
 | 
					 | 
				
			||||||
            <Home width={28} height={28} />
 | 
					 | 
				
			||||||
          </ActionButton>
 | 
					 | 
				
			||||||
          <ActionButton name="Home">
 | 
					 | 
				
			||||||
            <Home width={28} height={28} />
 | 
					 | 
				
			||||||
          </ActionButton>
 | 
					 | 
				
			||||||
        </ButtonContainer>
 | 
					 | 
				
			||||||
      </Navbar>
 | 
					 | 
				
			||||||
    </>
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,32 +0,0 @@
 | 
				
			|||||||
import React from 'react';
 | 
					 | 
				
			||||||
import { action } from '@storybook/addon-actions';
 | 
					 | 
				
			||||||
import NormalizeStyles from 'App/NormalizeStyles';
 | 
					 | 
				
			||||||
import BaseStyles from 'App/BaseStyles';
 | 
					 | 
				
			||||||
import NOOP from 'shared/utils/noop';
 | 
					 | 
				
			||||||
import NewProject from '.';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  component: NewProject,
 | 
					 | 
				
			||||||
  title: 'NewProject',
 | 
					 | 
				
			||||||
  parameters: {
 | 
					 | 
				
			||||||
    backgrounds: [
 | 
					 | 
				
			||||||
      { name: 'white', value: '#ffffff', default: true },
 | 
					 | 
				
			||||||
      { name: 'gray', value: '#f8f8f8' },
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Default = () => {
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <>
 | 
					 | 
				
			||||||
      <NormalizeStyles />
 | 
					 | 
				
			||||||
      <BaseStyles />
 | 
					 | 
				
			||||||
      <NewProject
 | 
					 | 
				
			||||||
        initialTeamID={null}
 | 
					 | 
				
			||||||
        onCreateProject={action('create project')}
 | 
					 | 
				
			||||||
        teams={[{ name: 'General', id: 'general', createdAt: '' }]}
 | 
					 | 
				
			||||||
        onClose={NOOP}
 | 
					 | 
				
			||||||
      />
 | 
					 | 
				
			||||||
    </>
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,47 +0,0 @@
 | 
				
			|||||||
import React from 'react';
 | 
					 | 
				
			||||||
import styled from 'styled-components';
 | 
					 | 
				
			||||||
import ProjectGridItem from '.';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  component: ProjectGridItem,
 | 
					 | 
				
			||||||
  title: 'ProjectGridItem',
 | 
					 | 
				
			||||||
  parameters: {
 | 
					 | 
				
			||||||
    backgrounds: [
 | 
					 | 
				
			||||||
      { name: 'white', value: '#ffffff', default: true },
 | 
					 | 
				
			||||||
      { name: 'gray', value: '#f8f8f8' },
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const projectsData = [
 | 
					 | 
				
			||||||
  { taskGroups: [], teamTitle: 'Personal', projectID: 'aaaa', name: 'Taskcafé', color: '#aa62e3' },
 | 
					 | 
				
			||||||
  { taskGroups: [], teamTitle: 'Personal', projectID: 'bbbb', name: 'Editorial Calender', color: '#aa62e3' },
 | 
					 | 
				
			||||||
  { taskGroups: [], teamTitle: 'Personal', projectID: 'cccc', name: 'New Blog', color: '#aa62e3' },
 | 
					 | 
				
			||||||
];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const Container = styled.div`
 | 
					 | 
				
			||||||
  display: flex;
 | 
					 | 
				
			||||||
  align-items: center;
 | 
					 | 
				
			||||||
  justify-content: center;
 | 
					 | 
				
			||||||
  width: 100vw;
 | 
					 | 
				
			||||||
  height: 100vh;
 | 
					 | 
				
			||||||
`;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const ProjectsWrapper = styled.div`
 | 
					 | 
				
			||||||
  width: 60%;
 | 
					 | 
				
			||||||
  display: flex;
 | 
					 | 
				
			||||||
  align-items: center;
 | 
					 | 
				
			||||||
  justify-content: center;
 | 
					 | 
				
			||||||
`;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Default = () => {
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <Container>
 | 
					 | 
				
			||||||
      <ProjectsWrapper>
 | 
					 | 
				
			||||||
        {projectsData.map(project => (
 | 
					 | 
				
			||||||
          <ProjectGridItem project={project} />
 | 
					 | 
				
			||||||
        ))}
 | 
					 | 
				
			||||||
      </ProjectsWrapper>
 | 
					 | 
				
			||||||
    </Container>
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,99 +0,0 @@
 | 
				
			|||||||
import React, { createRef, useState } from 'react';
 | 
					 | 
				
			||||||
import { action } from '@storybook/addon-actions';
 | 
					 | 
				
			||||||
import Card from 'shared/components/Card';
 | 
					 | 
				
			||||||
import CardComposer from 'shared/components/CardComposer';
 | 
					 | 
				
			||||||
import LabelColors from 'shared/constants/labelColors';
 | 
					 | 
				
			||||||
import List, { ListCards } from 'shared/components/List';
 | 
					 | 
				
			||||||
import QuickCardEditor from 'shared/components/QuickCardEditor';
 | 
					 | 
				
			||||||
import NOOP from 'shared/utils/noop';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  component: QuickCardEditor,
 | 
					 | 
				
			||||||
  title: 'QuickCardEditor',
 | 
					 | 
				
			||||||
  parameters: {
 | 
					 | 
				
			||||||
    backgrounds: [
 | 
					 | 
				
			||||||
      { name: 'white', value: '#ffffff', default: true },
 | 
					 | 
				
			||||||
      { name: 'gray', value: '#f8f8f8' },
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
const labelData: Array<TaskLabel> = [
 | 
					 | 
				
			||||||
  {
 | 
					 | 
				
			||||||
    id: 'development',
 | 
					 | 
				
			||||||
    assignedDate: new Date().toString(),
 | 
					 | 
				
			||||||
    projectLabel: {
 | 
					 | 
				
			||||||
      id: 'development',
 | 
					 | 
				
			||||||
      name: 'Development',
 | 
					 | 
				
			||||||
      createdDate: 'date',
 | 
					 | 
				
			||||||
      labelColor: {
 | 
					 | 
				
			||||||
        id: 'label-color-blue',
 | 
					 | 
				
			||||||
        colorHex: LabelColors.BLUE,
 | 
					 | 
				
			||||||
        name: 'blue',
 | 
					 | 
				
			||||||
        position: 1,
 | 
					 | 
				
			||||||
      },
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
];
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Default = () => {
 | 
					 | 
				
			||||||
  const $cardRef: any = createRef();
 | 
					 | 
				
			||||||
  const task: Task = {
 | 
					 | 
				
			||||||
    id: 'task',
 | 
					 | 
				
			||||||
    name: 'Hello, world!',
 | 
					 | 
				
			||||||
    position: 1,
 | 
					 | 
				
			||||||
    labels: labelData,
 | 
					 | 
				
			||||||
    taskGroup: {
 | 
					 | 
				
			||||||
      id: '1',
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
  };
 | 
					 | 
				
			||||||
  const [isEditorOpen, setEditorOpen] = useState(false);
 | 
					 | 
				
			||||||
  const [target, setTarget] = useState<null | React.RefObject<HTMLElement>>(null);
 | 
					 | 
				
			||||||
  const [top, setTop] = useState(0);
 | 
					 | 
				
			||||||
  const [left, setLeft] = useState(0);
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <>
 | 
					 | 
				
			||||||
      {isEditorOpen && target && (
 | 
					 | 
				
			||||||
        <QuickCardEditor
 | 
					 | 
				
			||||||
          task={task}
 | 
					 | 
				
			||||||
          onCloseEditor={() => setEditorOpen(false)}
 | 
					 | 
				
			||||||
          onEditCard={action('edit card')}
 | 
					 | 
				
			||||||
          onOpenLabelsPopup={action('open popup')}
 | 
					 | 
				
			||||||
          onOpenDueDatePopup={action('open popup')}
 | 
					 | 
				
			||||||
          onOpenMembersPopup={action('open popup')}
 | 
					 | 
				
			||||||
          onToggleComplete={action('complete')}
 | 
					 | 
				
			||||||
          onArchiveCard={action('archive card')}
 | 
					 | 
				
			||||||
          target={target}
 | 
					 | 
				
			||||||
        />
 | 
					 | 
				
			||||||
      )}
 | 
					 | 
				
			||||||
      <List
 | 
					 | 
				
			||||||
        id="1"
 | 
					 | 
				
			||||||
        name="General"
 | 
					 | 
				
			||||||
        isComposerOpen={false}
 | 
					 | 
				
			||||||
        onSaveName={action('on save name')}
 | 
					 | 
				
			||||||
        onOpenComposer={action('on open composer')}
 | 
					 | 
				
			||||||
        onExtraMenuOpen={NOOP}
 | 
					 | 
				
			||||||
      >
 | 
					 | 
				
			||||||
        <ListCards>
 | 
					 | 
				
			||||||
          <Card
 | 
					 | 
				
			||||||
            taskID="1"
 | 
					 | 
				
			||||||
            taskGroupID="1"
 | 
					 | 
				
			||||||
            description="hello!"
 | 
					 | 
				
			||||||
            ref={$cardRef}
 | 
					 | 
				
			||||||
            title={task.name}
 | 
					 | 
				
			||||||
            onClick={action('on click')}
 | 
					 | 
				
			||||||
            onContextMenu={() => {
 | 
					 | 
				
			||||||
              setTarget($cardRef);
 | 
					 | 
				
			||||||
              setEditorOpen(true);
 | 
					 | 
				
			||||||
            }}
 | 
					 | 
				
			||||||
            watched
 | 
					 | 
				
			||||||
            labels={labelData.map(l => l.projectLabel)}
 | 
					 | 
				
			||||||
            checklists={{ complete: 1, total: 4 }}
 | 
					 | 
				
			||||||
            dueDate={{ isPastDue: false, formattedDate: 'Oct 26, 2020' }}
 | 
					 | 
				
			||||||
          />
 | 
					 | 
				
			||||||
          <CardComposer onClose={NOOP} onCreateCard={NOOP} isOpen={false} />
 | 
					 | 
				
			||||||
        </ListCards>
 | 
					 | 
				
			||||||
      </List>
 | 
					 | 
				
			||||||
    </>
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -106,7 +106,7 @@ const QuickCardEditor = ({
 | 
				
			|||||||
            ref={$dueDate}
 | 
					            ref={$dueDate}
 | 
				
			||||||
            onClick={e => {
 | 
					            onClick={e => {
 | 
				
			||||||
              e.stopPropagation();
 | 
					              e.stopPropagation();
 | 
				
			||||||
              onOpenDueDatePopup($dueDate, task);
 | 
					              onOpenDueDatePopup($labelsRef, task);
 | 
				
			||||||
            }}
 | 
					            }}
 | 
				
			||||||
          >
 | 
					          >
 | 
				
			||||||
            Edit Due Date
 | 
					            Edit Due Date
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,37 +0,0 @@
 | 
				
			|||||||
import React, { createRef, useState } from 'react';
 | 
					 | 
				
			||||||
import { action } from '@storybook/addon-actions';
 | 
					 | 
				
			||||||
import NormalizeStyles from 'App/NormalizeStyles';
 | 
					 | 
				
			||||||
import BaseStyles from 'App/BaseStyles';
 | 
					 | 
				
			||||||
import Settings from '.';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  component: Settings,
 | 
					 | 
				
			||||||
  title: 'Settings',
 | 
					 | 
				
			||||||
  parameters: {
 | 
					 | 
				
			||||||
    backgrounds: [
 | 
					 | 
				
			||||||
      { name: 'white', value: '#ffffff', default: true },
 | 
					 | 
				
			||||||
      { name: 'gray', value: '#f8f8f8' },
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
const profile = {
 | 
					 | 
				
			||||||
  id: '1',
 | 
					 | 
				
			||||||
  fullName: 'Jordan Knott',
 | 
					 | 
				
			||||||
  username: 'jordanthedev',
 | 
					 | 
				
			||||||
  profileIcon: { url: '/uploads/headshot.png', bgColor: '#000', initials: 'JK' },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
export const Default = () => {
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <>
 | 
					 | 
				
			||||||
      <NormalizeStyles />
 | 
					 | 
				
			||||||
      <BaseStyles />
 | 
					 | 
				
			||||||
      <Settings
 | 
					 | 
				
			||||||
        profile={profile}
 | 
					 | 
				
			||||||
        onChangeUserInfo={action('change user info')}
 | 
					 | 
				
			||||||
        onResetPassword={action('reset password')}
 | 
					 | 
				
			||||||
        onProfileAvatarRemove={action('remove')}
 | 
					 | 
				
			||||||
        onProfileAvatarChange={action('profile avatar change')}
 | 
					 | 
				
			||||||
      />
 | 
					 | 
				
			||||||
    </>
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,27 +0,0 @@
 | 
				
			|||||||
import React from 'react';
 | 
					 | 
				
			||||||
import NormalizeStyles from 'App/NormalizeStyles';
 | 
					 | 
				
			||||||
import BaseStyles from 'App/BaseStyles';
 | 
					 | 
				
			||||||
import Navbar from 'shared/components/Navbar';
 | 
					 | 
				
			||||||
import Sidebar from '.';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  component: Sidebar,
 | 
					 | 
				
			||||||
  title: 'Sidebar',
 | 
					 | 
				
			||||||
  parameters: {
 | 
					 | 
				
			||||||
    backgrounds: [
 | 
					 | 
				
			||||||
      { name: 'white', value: '#ffffff' },
 | 
					 | 
				
			||||||
      { name: 'gray', value: '#cdd3e1', default: true },
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Default = () => {
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <>
 | 
					 | 
				
			||||||
      <NormalizeStyles />
 | 
					 | 
				
			||||||
      <BaseStyles />
 | 
					 | 
				
			||||||
      <Navbar />
 | 
					 | 
				
			||||||
      <Sidebar />
 | 
					 | 
				
			||||||
    </>
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -1,25 +0,0 @@
 | 
				
			|||||||
import React, { useRef } from 'react';
 | 
					 | 
				
			||||||
import NormalizeStyles from 'App/NormalizeStyles';
 | 
					 | 
				
			||||||
import BaseStyles from 'App/BaseStyles';
 | 
					 | 
				
			||||||
import Tabs from '.';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  component: Tabs,
 | 
					 | 
				
			||||||
  title: 'Tabs',
 | 
					 | 
				
			||||||
  parameters: {
 | 
					 | 
				
			||||||
    backgrounds: [
 | 
					 | 
				
			||||||
      { name: 'gray', value: '#f8f8f8', default: true },
 | 
					 | 
				
			||||||
      { name: 'white', value: '#ffffff' },
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Default = () => {
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <>
 | 
					 | 
				
			||||||
      <NormalizeStyles />
 | 
					 | 
				
			||||||
      <BaseStyles />
 | 
					 | 
				
			||||||
      <Tabs />
 | 
					 | 
				
			||||||
    </>
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
@@ -294,7 +294,6 @@ const TaskDetails: React.FC<TaskDetailsProps> = ({
 | 
				
			|||||||
  const $addMemberBtn = useRef<HTMLDivElement>(null);
 | 
					  const $addMemberBtn = useRef<HTMLDivElement>(null);
 | 
				
			||||||
  const $dueDateBtn = useRef<HTMLDivElement>(null);
 | 
					  const $dueDateBtn = useRef<HTMLDivElement>(null);
 | 
				
			||||||
  const $detailsTitle = useRef<HTMLTextAreaElement>(null);
 | 
					  const $detailsTitle = useRef<HTMLTextAreaElement>(null);
 | 
				
			||||||
  const $addLabel = useRef<HTMLDivElement>(null);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const activityStream: Array<{ id: string; data: { time: string; type: 'comment' | 'activity' } }> = [];
 | 
					  const activityStream: Array<{ id: string; data: { time: string; type: 'comment' | 'activity' } }> = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -475,7 +474,7 @@ const TaskDetails: React.FC<TaskDetailsProps> = ({
 | 
				
			|||||||
                    />
 | 
					                    />
 | 
				
			||||||
                  );
 | 
					                  );
 | 
				
			||||||
                })}
 | 
					                })}
 | 
				
			||||||
                <TaskDetailsAddLabelIcon ref={$addLabel} onClick={() => onOpenAddLabelPopup(task, $addLabel)}>
 | 
					                <TaskDetailsAddLabelIcon>
 | 
				
			||||||
                  <Plus width={12} height={12} />
 | 
					                  <Plus width={12} height={12} />
 | 
				
			||||||
                </TaskDetailsAddLabelIcon>
 | 
					                </TaskDetailsAddLabelIcon>
 | 
				
			||||||
              </MetaDetailContent>
 | 
					              </MetaDetailContent>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,50 +0,0 @@
 | 
				
			|||||||
import React, { useState } from 'react';
 | 
					 | 
				
			||||||
import NormalizeStyles from 'App/NormalizeStyles';
 | 
					 | 
				
			||||||
import BaseStyles from 'App/BaseStyles';
 | 
					 | 
				
			||||||
import { action } from '@storybook/addon-actions';
 | 
					 | 
				
			||||||
import TopNavbar from '.';
 | 
					 | 
				
			||||||
import theme from '../../../App/ThemeStyles';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export default {
 | 
					 | 
				
			||||||
  component: TopNavbar,
 | 
					 | 
				
			||||||
  title: 'TopNavbar',
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  // Our exports that end in "Data" are not stories.
 | 
					 | 
				
			||||||
  excludeStories: /.*Data$/,
 | 
					 | 
				
			||||||
  parameters: {
 | 
					 | 
				
			||||||
    backgrounds: [
 | 
					 | 
				
			||||||
      { name: 'white', value: '#ffffff' },
 | 
					 | 
				
			||||||
      { name: 'gray', value: '#f8f8f8' },
 | 
					 | 
				
			||||||
      { name: 'darkBlue', value: theme.colors.bg.secondary, default: true },
 | 
					 | 
				
			||||||
    ],
 | 
					 | 
				
			||||||
  },
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
export const Default = () => {
 | 
					 | 
				
			||||||
  return (
 | 
					 | 
				
			||||||
    <>
 | 
					 | 
				
			||||||
      <NormalizeStyles />
 | 
					 | 
				
			||||||
      <BaseStyles />
 | 
					 | 
				
			||||||
      <TopNavbar
 | 
					 | 
				
			||||||
        onOpenProjectFinder={action('finder')}
 | 
					 | 
				
			||||||
        name="Projects"
 | 
					 | 
				
			||||||
        user={{
 | 
					 | 
				
			||||||
          id: '1',
 | 
					 | 
				
			||||||
          fullName: 'Jordan Knott',
 | 
					 | 
				
			||||||
          profileIcon: {
 | 
					 | 
				
			||||||
            url: null,
 | 
					 | 
				
			||||||
            initials: 'JK',
 | 
					 | 
				
			||||||
            bgColor: '#000',
 | 
					 | 
				
			||||||
          },
 | 
					 | 
				
			||||||
        }}
 | 
					 | 
				
			||||||
        onChangeRole={action('change role')}
 | 
					 | 
				
			||||||
        onNotificationClick={action('notifications click')}
 | 
					 | 
				
			||||||
        onOpenSettings={action('open settings')}
 | 
					 | 
				
			||||||
        onDashboardClick={action('open dashboard')}
 | 
					 | 
				
			||||||
        onRemoveFromBoard={action('remove project')}
 | 
					 | 
				
			||||||
        onProfileClick={action('profile click')}
 | 
					 | 
				
			||||||
        onMyTasksClick={action('profile click')}
 | 
					 | 
				
			||||||
      />
 | 
					 | 
				
			||||||
    </>
 | 
					 | 
				
			||||||
  );
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
		Reference in New Issue
	
	Block a user