feat: modify styles
This commit is contained in:
@@ -73,6 +73,7 @@ export const Header = () => {
|
|||||||
>
|
>
|
||||||
<LogoIcon />
|
<LogoIcon />
|
||||||
</StyledLogo>
|
</StyledLogo>
|
||||||
|
{title ? (
|
||||||
<StyledTitle
|
<StyledTitle
|
||||||
onMouseEnter={() => {
|
onMouseEnter={() => {
|
||||||
setIsHover(true);
|
setIsHover(true);
|
||||||
@@ -89,6 +90,7 @@ export const Header = () => {
|
|||||||
/>
|
/>
|
||||||
<StyledTitleWrapper>{title}</StyledTitleWrapper>
|
<StyledTitleWrapper>{title}</StyledTitleWrapper>
|
||||||
</StyledTitle>
|
</StyledTitle>
|
||||||
|
) : null}
|
||||||
|
|
||||||
<StyledHeaderRightSide>
|
<StyledHeaderRightSide>
|
||||||
<ThemeModeSwitch />
|
<ThemeModeSwitch />
|
||||||
|
|||||||
14
packages/app/src/components/loading/index.tsx
Normal file
14
packages/app/src/components/loading/index.tsx
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
import { StyledLoading, StyledLoadingItem } from './styled';
|
||||||
|
|
||||||
|
export const Loading = () => {
|
||||||
|
return (
|
||||||
|
<StyledLoading>
|
||||||
|
<StyledLoadingItem />
|
||||||
|
<StyledLoadingItem />
|
||||||
|
<StyledLoadingItem />
|
||||||
|
<StyledLoadingItem />
|
||||||
|
</StyledLoading>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default Loading;
|
||||||
93
packages/app/src/components/loading/styled.ts
Normal file
93
packages/app/src/components/loading/styled.ts
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
import { styled } from '@/styles';
|
||||||
|
|
||||||
|
const loadingItemSize = '40px';
|
||||||
|
export const StyledLoading = styled.div`
|
||||||
|
position: relative;
|
||||||
|
left: 50%;
|
||||||
|
transform: rotateX(55deg) rotateZ(-45deg)
|
||||||
|
translate(calc(${loadingItemSize} * -2), 0);
|
||||||
|
margin-bottom: calc(3 * ${loadingItemSize});
|
||||||
|
|
||||||
|
@keyframes slide {
|
||||||
|
0% {
|
||||||
|
transform: translate(var(--sx), var(--sy));
|
||||||
|
}
|
||||||
|
65% {
|
||||||
|
transform: translate(var(--ex), var(--sy));
|
||||||
|
}
|
||||||
|
95%,
|
||||||
|
100% {
|
||||||
|
transform: translate(var(--ex), var(--ey));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes load {
|
||||||
|
20% {
|
||||||
|
content: '.';
|
||||||
|
}
|
||||||
|
40% {
|
||||||
|
content: '..';
|
||||||
|
}
|
||||||
|
80%,
|
||||||
|
100% {
|
||||||
|
content: '...';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|
||||||
|
export const StyledLoadingItem = styled.div`
|
||||||
|
position: absolute;
|
||||||
|
width: ${loadingItemSize};
|
||||||
|
height: ${loadingItemSize};
|
||||||
|
background: #9dacf9;
|
||||||
|
animation: slide 0.9s cubic-bezier(0.65, 0.53, 0.59, 0.93) infinite;
|
||||||
|
|
||||||
|
&::before,
|
||||||
|
&::after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
background: #5260b9;
|
||||||
|
transform: skew(0deg, -45deg);
|
||||||
|
right: 100%;
|
||||||
|
top: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
background: #6880ff;
|
||||||
|
transform: skew(-45deg, 0deg);
|
||||||
|
top: 100%;
|
||||||
|
right: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(1) {
|
||||||
|
--sx: 50%;
|
||||||
|
--sy: -50%;
|
||||||
|
--ex: 150%;
|
||||||
|
--ey: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(2) {
|
||||||
|
--sx: -50%;
|
||||||
|
--sy: -50%;
|
||||||
|
--ex: 50%;
|
||||||
|
--ey: -50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(3) {
|
||||||
|
--sx: 150%;
|
||||||
|
--sy: 50%;
|
||||||
|
--ex: 50%;
|
||||||
|
--ey: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:nth-child(4) {
|
||||||
|
--sx: 50%;
|
||||||
|
--sy: 50%;
|
||||||
|
--ex: -50%;
|
||||||
|
--ey: -50%;
|
||||||
|
}
|
||||||
|
`;
|
||||||
@@ -19,11 +19,11 @@ export const macKeyboardShortcuts = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const macMarkdownShortcuts = {
|
export const macMarkdownShortcuts = {
|
||||||
Bold: '**Text**',
|
Bold: '**Text** Space',
|
||||||
Italic: '*Text*',
|
Italic: '*Text* Space',
|
||||||
Underline: '~Text~',
|
Underline: '~Text~ Space',
|
||||||
Strikethrough: '~~Text~~',
|
Strikethrough: '~~Text~~ Space',
|
||||||
'Inline code': '`Code`',
|
'Inline code': '`Code` Space',
|
||||||
'Heading 1': '# Space',
|
'Heading 1': '# Space',
|
||||||
'Heading 2': '## Space',
|
'Heading 2': '## Space',
|
||||||
'Heading 3': '### Space',
|
'Heading 3': '### Space',
|
||||||
@@ -38,7 +38,7 @@ export const windowsKeyboardShortcuts = {
|
|||||||
Bold: 'Ctrl + B',
|
Bold: 'Ctrl + B',
|
||||||
Italic: 'Ctrl + I',
|
Italic: 'Ctrl + I',
|
||||||
Underline: 'Ctrl + U',
|
Underline: 'Ctrl + U',
|
||||||
Strikethrough: 'Ctrl + ⇧ + S',
|
Strikethrough: 'Ctrl + Shift + S',
|
||||||
'Inline code': ' Ctrl + E',
|
'Inline code': ' Ctrl + E',
|
||||||
Link: 'Ctrl + K',
|
Link: 'Ctrl + K',
|
||||||
'Body text': 'Ctrl + Shift + 0',
|
'Body text': 'Ctrl + Shift + 0',
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { displayFlex, styled } from '@/styles';
|
import { displayFlex, styled } from '@/styles';
|
||||||
import { ThemeModeSwitch } from '@/components/theme-mode-switch';
|
import { ThemeModeSwitch } from '@/components/theme-mode-switch';
|
||||||
|
import { Loading } from '@/components/loading';
|
||||||
|
|
||||||
export const StyledHeader = styled('div')({
|
export const StyledHeader = styled('div')({
|
||||||
height: '60px',
|
height: '60px',
|
||||||
@@ -12,9 +13,12 @@ export const StyledHeader = styled('div')({
|
|||||||
|
|
||||||
const Affine = () => {
|
const Affine = () => {
|
||||||
return (
|
return (
|
||||||
|
<>
|
||||||
<StyledHeader>
|
<StyledHeader>
|
||||||
<ThemeModeSwitch></ThemeModeSwitch>
|
<ThemeModeSwitch></ThemeModeSwitch>
|
||||||
</StyledHeader>
|
</StyledHeader>
|
||||||
|
<Loading />
|
||||||
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import dynamic from 'next/dynamic';
|
|||||||
import { styled } from '@/styles';
|
import { styled } from '@/styles';
|
||||||
import { Header } from '@/components/Header';
|
import { Header } from '@/components/Header';
|
||||||
import { FAQ } from '@/components/faq';
|
import { FAQ } from '@/components/faq';
|
||||||
|
import Loading from '@/components/loading';
|
||||||
import EdgelessToolbar from '@/components/edgeless-toolbar';
|
import EdgelessToolbar from '@/components/edgeless-toolbar';
|
||||||
import '@/components/simple-counter';
|
import '@/components/simple-counter';
|
||||||
|
|
||||||
@@ -21,8 +22,30 @@ const StyledPage = styled('div')(({ theme }) => {
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const StyledLoadingContainer = styled('div')(({ theme }) => {
|
||||||
|
return {
|
||||||
|
height: '100vh',
|
||||||
|
display: 'flex',
|
||||||
|
justifyContent: 'center',
|
||||||
|
alignItems: 'center',
|
||||||
|
color: theme.colors.primaryColor,
|
||||||
|
h1: {
|
||||||
|
fontSize: '2em',
|
||||||
|
marginTop: '150px',
|
||||||
|
fontWeight: '600',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
const DynamicEditor = dynamic(() => import('../components/editor'), {
|
const DynamicEditor = dynamic(() => import('../components/editor'), {
|
||||||
loading: () => <div style={{ textAlign: 'center' }}>Loading...</div>,
|
loading: () => (
|
||||||
|
<StyledLoadingContainer>
|
||||||
|
<div className="wrapper">
|
||||||
|
<Loading />
|
||||||
|
<h1>Loading...</h1>
|
||||||
|
</div>
|
||||||
|
</StyledLoadingContainer>
|
||||||
|
),
|
||||||
ssr: false,
|
ssr: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ export const lightTheme: AffineTheme = {
|
|||||||
'4px 4px 7px rgba(58, 76, 92, 0.04), -4px -4px 13px rgba(58, 76, 92, 0.02), 6px 6px 36px rgba(58, 76, 92, 0.06);',
|
'4px 4px 7px rgba(58, 76, 92, 0.04), -4px -4px 13px rgba(58, 76, 92, 0.02), 6px 6px 36px rgba(58, 76, 92, 0.06);',
|
||||||
},
|
},
|
||||||
space: {
|
space: {
|
||||||
paragraph: '18px',
|
paragraph: '8px',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user