mirror of
https://github.com/twentyhq/twenty.git
synced 2025-01-03 09:42:01 +03:00
Add Plugin Panel
This commit is contained in:
parent
374573871c
commit
b4032d508d
98
front/package-lock.json
generated
98
front/package-lock.json
generated
@ -10,6 +10,10 @@
|
||||
"dependencies": {
|
||||
"@emotion/react": "^11.10.5",
|
||||
"@emotion/styled": "^11.10.5",
|
||||
"@fortawesome/fontawesome-svg-core": "^6.2.1",
|
||||
"@fortawesome/free-regular-svg-icons": "^6.2.1",
|
||||
"@fortawesome/free-solid-svg-icons": "^6.2.1",
|
||||
"@fortawesome/react-fontawesome": "^0.2.0",
|
||||
"@types/node": "^16.18.4",
|
||||
"@types/react": "^18.0.25",
|
||||
"@types/react-dom": "^18.0.9",
|
||||
@ -2264,6 +2268,63 @@
|
||||
"js-yaml": "bin/js-yaml.js"
|
||||
}
|
||||
},
|
||||
"node_modules/@fortawesome/fontawesome-common-types": {
|
||||
"version": "6.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.2.1.tgz",
|
||||
"integrity": "sha512-Sz07mnQrTekFWLz5BMjOzHl/+NooTdW8F8kDQxjWwbpOJcnoSg4vUDng8d/WR1wOxM0O+CY9Zw0nR054riNYtQ==",
|
||||
"hasInstallScript": true,
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/@fortawesome/fontawesome-svg-core": {
|
||||
"version": "6.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.2.1.tgz",
|
||||
"integrity": "sha512-HELwwbCz6C1XEcjzyT1Jugmz2NNklMrSPjZOWMlc+ZsHIVk+XOvOXLGGQtFBwSyqfJDNgRq4xBCwWOaZ/d9DEA==",
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-common-types": "6.2.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/@fortawesome/free-regular-svg-icons": {
|
||||
"version": "6.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.2.1.tgz",
|
||||
"integrity": "sha512-wiqcNDNom75x+pe88FclpKz7aOSqS2lOivZeicMV5KRwOAeypxEYWAK/0v+7r+LrEY30+qzh8r2XDaEHvoLsMA==",
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-common-types": "6.2.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/@fortawesome/free-solid-svg-icons": {
|
||||
"version": "6.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.2.1.tgz",
|
||||
"integrity": "sha512-oKuqrP5jbfEPJWTij4sM+/RvgX+RMFwx3QZCZcK9PrBDgxC35zuc7AOFsyMjMd/PIFPeB2JxyqDr5zs/DZFPPw==",
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-common-types": "6.2.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/@fortawesome/react-fontawesome": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.0.tgz",
|
||||
"integrity": "sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==",
|
||||
"dependencies": {
|
||||
"prop-types": "^15.8.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@fortawesome/fontawesome-svg-core": "~1 || ~6",
|
||||
"react": ">=16.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@gar/promisify": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
|
||||
@ -35640,6 +35701,43 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"@fortawesome/fontawesome-common-types": {
|
||||
"version": "6.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.2.1.tgz",
|
||||
"integrity": "sha512-Sz07mnQrTekFWLz5BMjOzHl/+NooTdW8F8kDQxjWwbpOJcnoSg4vUDng8d/WR1wOxM0O+CY9Zw0nR054riNYtQ=="
|
||||
},
|
||||
"@fortawesome/fontawesome-svg-core": {
|
||||
"version": "6.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.2.1.tgz",
|
||||
"integrity": "sha512-HELwwbCz6C1XEcjzyT1Jugmz2NNklMrSPjZOWMlc+ZsHIVk+XOvOXLGGQtFBwSyqfJDNgRq4xBCwWOaZ/d9DEA==",
|
||||
"requires": {
|
||||
"@fortawesome/fontawesome-common-types": "6.2.1"
|
||||
}
|
||||
},
|
||||
"@fortawesome/free-regular-svg-icons": {
|
||||
"version": "6.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.2.1.tgz",
|
||||
"integrity": "sha512-wiqcNDNom75x+pe88FclpKz7aOSqS2lOivZeicMV5KRwOAeypxEYWAK/0v+7r+LrEY30+qzh8r2XDaEHvoLsMA==",
|
||||
"requires": {
|
||||
"@fortawesome/fontawesome-common-types": "6.2.1"
|
||||
}
|
||||
},
|
||||
"@fortawesome/free-solid-svg-icons": {
|
||||
"version": "6.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.2.1.tgz",
|
||||
"integrity": "sha512-oKuqrP5jbfEPJWTij4sM+/RvgX+RMFwx3QZCZcK9PrBDgxC35zuc7AOFsyMjMd/PIFPeB2JxyqDr5zs/DZFPPw==",
|
||||
"requires": {
|
||||
"@fortawesome/fontawesome-common-types": "6.2.1"
|
||||
}
|
||||
},
|
||||
"@fortawesome/react-fontawesome": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.0.tgz",
|
||||
"integrity": "sha512-uHg75Rb/XORTtVt7OS9WoK8uM276Ufi7gCzshVWkUJbHhh3svsUUeqXerrM96Wm7fRiDzfKRwSoahhMIkGAYHw==",
|
||||
"requires": {
|
||||
"prop-types": "^15.8.1"
|
||||
}
|
||||
},
|
||||
"@gar/promisify": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz",
|
||||
|
@ -5,6 +5,10 @@
|
||||
"dependencies": {
|
||||
"@emotion/react": "^11.10.5",
|
||||
"@emotion/styled": "^11.10.5",
|
||||
"@fortawesome/fontawesome-svg-core": "^6.2.1",
|
||||
"@fortawesome/free-regular-svg-icons": "^6.2.1",
|
||||
"@fortawesome/free-solid-svg-icons": "^6.2.1",
|
||||
"@fortawesome/react-fontawesome": "^0.2.0",
|
||||
"@types/node": "^16.18.4",
|
||||
"@types/react": "^18.0.25",
|
||||
"@types/react-dom": "^18.0.9",
|
||||
|
@ -1,10 +1,16 @@
|
||||
import FullWidthContainer from '../../layout/containers/FullWidthContainer';
|
||||
import ListPanel from './ListPanel';
|
||||
import DiscussionPanel from './discussion-panel/DiscussionPanel';
|
||||
import ListPanel from './list-panel/ListPanel';
|
||||
import PluginPanel from './plugin-panel/PluginPanel';
|
||||
|
||||
function Inbox() {
|
||||
return (
|
||||
<FullWidthContainer>
|
||||
<>
|
||||
<ListPanel />
|
||||
<DiscussionPanel />
|
||||
<PluginPanel />
|
||||
</>
|
||||
</FullWidthContainer>
|
||||
);
|
||||
}
|
||||
|
@ -1,50 +0,0 @@
|
||||
import styled from '@emotion/styled';
|
||||
import ListPanelHeader from './ListPanelHeader';
|
||||
import ListPanelItem from './ListPanelItem';
|
||||
|
||||
const StyledList = styled.div`
|
||||
display: flex;
|
||||
width: 325px;
|
||||
flex-direction: column;
|
||||
border-right: 2px solid #eaecee;
|
||||
`;
|
||||
|
||||
export type Task = {
|
||||
id: number;
|
||||
targetUser: string;
|
||||
label: string;
|
||||
time: string;
|
||||
lastMessage: string;
|
||||
};
|
||||
|
||||
function ListPanel() {
|
||||
const tasks: Task[] = [
|
||||
{
|
||||
id: 1,
|
||||
targetUser: 'Sylvie Vartan',
|
||||
label: 'Guest at #xxx property',
|
||||
time: '3h',
|
||||
lastMessage:
|
||||
'I’m looking for my order but couldn’t find it. Could you help me find it. I don’t know where ...',
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
targetUser: 'Johnny Halliday',
|
||||
label: 'Guest at #xxx property',
|
||||
time: '4h',
|
||||
lastMessage: 'Hello, this is Johnny',
|
||||
},
|
||||
];
|
||||
return (
|
||||
<StyledList>
|
||||
<>
|
||||
<ListPanelHeader />
|
||||
{tasks.map((item) => (
|
||||
<ListPanelItem key={item.id} task={item} />
|
||||
))}
|
||||
</>
|
||||
</StyledList>
|
||||
);
|
||||
}
|
||||
|
||||
export default ListPanel;
|
12
front/src/pages/inbox/discussion-panel/DiscussionPanel.tsx
Normal file
12
front/src/pages/inbox/discussion-panel/DiscussionPanel.tsx
Normal file
@ -0,0 +1,12 @@
|
||||
import styled from '@emotion/styled';
|
||||
|
||||
const StyledPanel = styled.div`
|
||||
display: flex;
|
||||
flex-grow: 1;
|
||||
`;
|
||||
|
||||
function DiscussionPanel() {
|
||||
return <StyledPanel></StyledPanel>;
|
||||
}
|
||||
|
||||
export default DiscussionPanel;
|
@ -0,0 +1,7 @@
|
||||
import styled from '@emotion/styled';
|
||||
|
||||
function Composer() {
|
||||
return;
|
||||
}
|
||||
|
||||
export default Composer;
|
@ -0,0 +1,7 @@
|
||||
import styled from '@emotion/styled';
|
||||
|
||||
function ComposerSwitch() {
|
||||
return;
|
||||
}
|
||||
|
||||
export default ComposerSwitch;
|
@ -0,0 +1,7 @@
|
||||
import styled from '@emotion/styled';
|
||||
|
||||
function Booking() {
|
||||
return;
|
||||
}
|
||||
|
||||
export default Booking;
|
@ -0,0 +1,7 @@
|
||||
import styled from '@emotion/styled';
|
||||
|
||||
function Message() {
|
||||
return;
|
||||
}
|
||||
|
||||
export default Message;
|
7
front/src/pages/inbox/discussion-panel/events/Note.tsx
Normal file
7
front/src/pages/inbox/discussion-panel/events/Note.tsx
Normal file
@ -0,0 +1,7 @@
|
||||
import styled from '@emotion/styled';
|
||||
|
||||
function Note() {
|
||||
return;
|
||||
}
|
||||
|
||||
export default Note;
|
27
front/src/pages/inbox/plugin-panel/PluginPanel.tsx
Normal file
27
front/src/pages/inbox/plugin-panel/PluginPanel.tsx
Normal file
@ -0,0 +1,27 @@
|
||||
import styled from '@emotion/styled';
|
||||
import PluginPanelNav from './PluginPanelNav';
|
||||
import PluginHistory from './plugin-history/PanelHistory';
|
||||
|
||||
const StyledPanel = styled.div`
|
||||
display: flex;
|
||||
width: 350px;
|
||||
border-left: 1px solid #eaecee;
|
||||
`;
|
||||
|
||||
const StyledContainer = styled.div`
|
||||
display: flex;
|
||||
flex-grow: 1;
|
||||
`;
|
||||
|
||||
function PluginPanel() {
|
||||
return (
|
||||
<StyledPanel>
|
||||
<StyledContainer>
|
||||
<PluginHistory />
|
||||
</StyledContainer>
|
||||
<PluginPanelNav />
|
||||
</StyledPanel>
|
||||
);
|
||||
}
|
||||
|
||||
export default PluginPanel;
|
46
front/src/pages/inbox/plugin-panel/PluginPanelNav.tsx
Normal file
46
front/src/pages/inbox/plugin-panel/PluginPanelNav.tsx
Normal file
@ -0,0 +1,46 @@
|
||||
import styled from '@emotion/styled';
|
||||
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
||||
import { faClone } from '@fortawesome/free-regular-svg-icons';
|
||||
|
||||
const StyledNav = styled.div`
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 60px;
|
||||
border-left: 1px solid #eaecee;
|
||||
background: #f1f3f5;
|
||||
`;
|
||||
|
||||
const StyledNavItem = styled.div`
|
||||
display: flex;
|
||||
width: 60px;
|
||||
border-bottom: 1px solid #eaecee;
|
||||
padding: 22px;
|
||||
cursor: pointer;
|
||||
`;
|
||||
|
||||
function PluginPanelNav() {
|
||||
return (
|
||||
<StyledNav>
|
||||
<StyledNavItem>
|
||||
<FontAwesomeIcon icon={faClone} size="lg" />
|
||||
</StyledNavItem>
|
||||
<StyledNavItem>
|
||||
<FontAwesomeIcon icon={faClone} size="lg" />
|
||||
</StyledNavItem>
|
||||
<StyledNavItem>
|
||||
<FontAwesomeIcon icon={faClone} size="lg" />
|
||||
</StyledNavItem>
|
||||
<StyledNavItem>
|
||||
<FontAwesomeIcon icon={faClone} size="lg" />
|
||||
</StyledNavItem>
|
||||
<StyledNavItem>
|
||||
<FontAwesomeIcon icon={faClone} size="lg" />
|
||||
</StyledNavItem>
|
||||
<StyledNavItem>
|
||||
<FontAwesomeIcon icon={faClone} size="lg" />
|
||||
</StyledNavItem>
|
||||
</StyledNav>
|
||||
);
|
||||
}
|
||||
|
||||
export default PluginPanelNav;
|
@ -0,0 +1,7 @@
|
||||
import styled from '@emotion/styled';
|
||||
|
||||
function PluginHistory() {
|
||||
return <div></div>;
|
||||
}
|
||||
|
||||
export default PluginHistory;
|
@ -0,0 +1,7 @@
|
||||
import styled from '@emotion/styled';
|
||||
|
||||
function UserActivity() {
|
||||
return;
|
||||
}
|
||||
|
||||
export default UserActivity;
|
@ -0,0 +1,7 @@
|
||||
import styled from '@emotion/styled';
|
||||
|
||||
function UserInformation() {
|
||||
return;
|
||||
}
|
||||
|
||||
export default UserInformation;
|
Loading…
Reference in New Issue
Block a user