mirror of
https://github.com/pezkuwichain/pezkuwi-apps.git
synced 2026-04-28 13:47:57 +00:00
76 lines
1.9 KiB
TypeScript
76 lines
1.9 KiB
TypeScript
// Copyright 2017-2026 @pezkuwi/apps authors & contributors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
import type { BareProps as Props } from '@pezkuwi/react-components/types';
|
|
|
|
import React, { useMemo } from 'react';
|
|
|
|
import { AccountSidebar, styled } from '@pezkuwi/react-components';
|
|
import GlobalStyle from '@pezkuwi/react-components/styles';
|
|
import { useApi, useTheme } from '@pezkuwi/react-hooks';
|
|
import Signer from '@pezkuwi/react-signer';
|
|
|
|
import Content from './Content/index.js';
|
|
import Menu from './Menu/index.js';
|
|
import BottomOverlay from './overlays/Bottom.js';
|
|
import ConnectingOverlay from './overlays/Connecting.js';
|
|
import WarmUp from './WarmUp.js';
|
|
|
|
export const PORTAL_ID = 'portals';
|
|
|
|
function Apps ({ className = '' }: Props): React.ReactElement<Props> {
|
|
const { themeClassName } = useTheme();
|
|
const { apiEndpoint, isDevelopment } = useApi();
|
|
|
|
const uiHighlight = useMemo(
|
|
() => isDevelopment
|
|
? undefined
|
|
: apiEndpoint?.ui.color,
|
|
[apiEndpoint, isDevelopment]
|
|
);
|
|
|
|
return (
|
|
<>
|
|
<GlobalStyle uiHighlight={uiHighlight} />
|
|
<StyledDiv className={`${className} apps--Wrapper ${themeClassName}`}>
|
|
<Menu />
|
|
<AccountSidebar>
|
|
<Signer>
|
|
<Content />
|
|
</Signer>
|
|
<ConnectingOverlay />
|
|
<BottomOverlay />
|
|
<div id={PORTAL_ID} />
|
|
</AccountSidebar>
|
|
</StyledDiv>
|
|
<WarmUp />
|
|
</>
|
|
);
|
|
}
|
|
|
|
const StyledDiv = styled.div`
|
|
background: var(--bg-page);
|
|
box-sizing: border-box;
|
|
display: flex;
|
|
flex-direction: column;
|
|
min-height: 100vh;
|
|
|
|
${[
|
|
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,
|
|
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
|
|
20, 21, 22, 23, 24
|
|
].map((n) => `
|
|
.greyAnim-${n} {
|
|
animation: greyAnim${n} 2s;
|
|
}
|
|
|
|
@keyframes greyAnim${n} {
|
|
0% { background: #a6a6a6; }
|
|
50% { background: darkorange; }
|
|
100% { background: #a6a6a6; }
|
|
}
|
|
`).join('')}
|
|
`;
|
|
|
|
export default React.memo(Apps);
|