mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-12 04:18:54 +00:00
Compare commits
89 Commits
v0.5.4-bet
...
v0.6.0-can
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
885aea3425 | ||
|
|
a616150f2d | ||
|
|
d80dae8a89 | ||
|
|
34ff08b92b | ||
|
|
2f7b51d7ff | ||
|
|
b7cee3185e | ||
|
|
1c5455e6ed | ||
|
|
2d303fd5d3 | ||
|
|
fbe2543c03 | ||
|
|
d6b640726e | ||
|
|
f875b37641 | ||
|
|
53c4fc6dfa | ||
|
|
6c310249d9 | ||
|
|
02e1f528bf | ||
|
|
c870104370 | ||
|
|
627d8ef787 | ||
|
|
5563823a7a | ||
|
|
d6804bb0fd | ||
|
|
1350633690 | ||
|
|
50196d8fde | ||
|
|
2e0ccb53ec | ||
|
|
1498ee405b | ||
|
|
cb863c4afa | ||
|
|
2629d39501 | ||
|
|
38305cd984 | ||
|
|
93116c24f2 | ||
|
|
017b9c8615 | ||
|
|
9ce3a96862 | ||
|
|
a0ff520ba4 | ||
|
|
a8b8986d89 | ||
|
|
8ffc096fee | ||
|
|
7e457f7b4c | ||
|
|
aedf2d339e | ||
|
|
ffd5ae52b3 | ||
|
|
3093194da8 | ||
|
|
68b4f792f0 | ||
|
|
e2c6e4f9fc | ||
|
|
9ff7dbffb7 | ||
|
|
0c561da061 | ||
|
|
06951319a6 | ||
|
|
0bfcab4067 | ||
|
|
2c4db4fa16 | ||
|
|
23b4f9ee12 | ||
|
|
e5330b1917 | ||
|
|
183611a556 | ||
|
|
7786456ba4 | ||
|
|
f4bf7e3ddf | ||
|
|
05d88215d1 | ||
|
|
b240a70e51 | ||
|
|
00fd468e9b | ||
|
|
b5a7f8b7eb | ||
|
|
f03277fd17 | ||
|
|
ee93071149 | ||
|
|
21fdced2bd | ||
|
|
10b4558947 | ||
|
|
0fbed5d9d6 | ||
|
|
8d117123d7 | ||
|
|
063ffda09d | ||
|
|
39c83bd25b | ||
|
|
4444c3d1a6 | ||
|
|
717dd93f37 | ||
|
|
c58673c55f | ||
|
|
768e55072d | ||
|
|
8c84daec2b | ||
|
|
e54a5b6128 | ||
|
|
ee1e50f391 | ||
|
|
268636c440 | ||
|
|
06fa0cdb60 | ||
|
|
73dbb39009 | ||
|
|
47848cb5da | ||
|
|
eff6a03a51 | ||
|
|
08f6a41ef4 | ||
|
|
6d1345ffe5 | ||
|
|
689f615b11 | ||
|
|
f82ea5d9c4 | ||
|
|
dc4979a80c | ||
|
|
1f48bc4301 | ||
|
|
beabd1e050 | ||
|
|
19e20a6a20 | ||
|
|
e4f13ddae4 | ||
|
|
752d0545ca | ||
|
|
08341d3d6c | ||
|
|
ef665df330 | ||
|
|
b38017cd23 | ||
|
|
0c550a2827 | ||
|
|
87ffdad862 | ||
|
|
c6e8024e16 | ||
|
|
4200b3c3e5 | ||
|
|
10976a9257 |
5
.github/workflows/build.yml
vendored
5
.github/workflows/build.yml
vendored
@@ -365,11 +365,6 @@ jobs:
|
||||
name: affine
|
||||
fail_ci_if_error: true
|
||||
|
||||
- name: Run desktop tests
|
||||
if: ${{ matrix.spec.test && matrix.spec.os != 'ubuntu-latest' }}
|
||||
run: yarn test
|
||||
working-directory: apps/electron
|
||||
|
||||
- name: Upload test results
|
||||
if: ${{ failure() }}
|
||||
uses: actions/upload-artifact@v3
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@affine/electron",
|
||||
"private": true,
|
||||
"version": "0.5.4-beta.1",
|
||||
"version": "0.6.0-canary.5",
|
||||
"author": "affine",
|
||||
"repository": {
|
||||
"url": "https://github.com/toeverything/AFFiNE",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@affine/server",
|
||||
"private": true,
|
||||
"version": "0.5.4-beta.1",
|
||||
"version": "0.6.0-canary.5",
|
||||
"description": "Affine Node.js server",
|
||||
"type": "module",
|
||||
"bin": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@affine/web",
|
||||
"private": true,
|
||||
"version": "0.5.4-beta.1",
|
||||
"version": "0.6.0-canary.5",
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "AFFiNE",
|
||||
"version": "0.5.4-beta.1",
|
||||
"version": "0.6.0-canary.5",
|
||||
"private": true,
|
||||
"author": "toeverything",
|
||||
"license": "MPL-2.0",
|
||||
|
||||
@@ -15,5 +15,5 @@
|
||||
"dependencies": {
|
||||
"dotenv": "^16.0.3"
|
||||
},
|
||||
"version": "0.5.4-beta.1"
|
||||
"version": "0.6.0-canary.5"
|
||||
}
|
||||
|
||||
@@ -84,5 +84,5 @@
|
||||
"wait-on": "^7.0.1",
|
||||
"yjs": "^13.6.1"
|
||||
},
|
||||
"version": "0.5.4-beta.1"
|
||||
"version": "0.6.0-canary.5"
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { Trans } from '@affine/i18n';
|
||||
import { AffineLogoSimSBlue1_1Icon, CloseIcon } from '@blocksuite/icons';
|
||||
|
||||
import {
|
||||
@@ -18,16 +19,18 @@ export const DownloadTips = ({ onClose }: { onClose: () => void }) => {
|
||||
<div className={downloadTipStyle}>
|
||||
<AffineLogoSimSBlue1_1Icon className={downloadTipIconStyle} />
|
||||
<div className={downloadMessageStyle}>
|
||||
Enjoying the demo?
|
||||
<a
|
||||
className={linkStyle}
|
||||
href="https://github.com/toeverything/AFFiNE/releases"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>
|
||||
Download the AFFiNE Client
|
||||
</a>
|
||||
for the full experience.
|
||||
<Trans i18nKey="com.affine.banner.content">
|
||||
Enjoying the demo?
|
||||
<a
|
||||
className={linkStyle}
|
||||
href="https://github.com/toeverything/AFFiNE/releases"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>
|
||||
Download the AFFiNE Client
|
||||
</a>
|
||||
for the full experience.
|
||||
</Trans>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
|
||||
25
packages/component/src/components/card/block-card/index.tsx
Normal file
25
packages/component/src/components/card/block-card/index.tsx
Normal file
@@ -0,0 +1,25 @@
|
||||
import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';
|
||||
|
||||
import * as styles from './styles.css';
|
||||
|
||||
export const BlockCard = forwardRef<
|
||||
HTMLDivElement,
|
||||
{
|
||||
left?: ReactNode;
|
||||
title: string;
|
||||
desc?: string;
|
||||
right?: ReactNode;
|
||||
} & HTMLAttributes<HTMLDivElement>
|
||||
>(({ left, title, desc, right, ...props }, ref) => {
|
||||
return (
|
||||
<div ref={ref} className={styles.blockCard} {...props}>
|
||||
{left && <div className={styles.blockCardAround}>{left}</div>}
|
||||
<div className={styles.blockCardContent}>
|
||||
<div>{title}</div>
|
||||
<div className={styles.blockCardDesc}>{desc}</div>
|
||||
</div>
|
||||
{right && <div className={styles.blockCardAround}>{right}</div>}
|
||||
</div>
|
||||
);
|
||||
});
|
||||
BlockCard.displayName = 'BlockCard';
|
||||
@@ -0,0 +1,35 @@
|
||||
import { style } from '@vanilla-extract/css';
|
||||
|
||||
export const blockCard = style({
|
||||
display: 'flex',
|
||||
gap: '12px',
|
||||
padding: '8px 12px',
|
||||
color: 'var(--affine-text-primary-color)',
|
||||
backgroundColor: 'var(--affine-background-primary-color)',
|
||||
borderRadius: '4px',
|
||||
userSelect: 'none',
|
||||
cursor: 'pointer',
|
||||
selectors: {
|
||||
'&:hover': {
|
||||
boxShadow: 'var(--affine-shadow-1)',
|
||||
},
|
||||
// TODO active styles
|
||||
},
|
||||
});
|
||||
|
||||
export const blockCardAround = style({
|
||||
display: 'flex',
|
||||
justifyContent: 'center',
|
||||
alignItems: 'center',
|
||||
});
|
||||
|
||||
export const blockCardContent = style({
|
||||
display: 'flex',
|
||||
flexDirection: 'column',
|
||||
flex: 1,
|
||||
});
|
||||
|
||||
export const blockCardDesc = style({
|
||||
color: 'var(--affine-text-secondary-color)',
|
||||
fontSize: 'var(--affine-font-xs)',
|
||||
});
|
||||
@@ -10,7 +10,7 @@ import { useBlockSuiteWorkspaceName } from '@toeverything/hooks/use-block-suite-
|
||||
import type { FC } from 'react';
|
||||
import { useCallback } from 'react';
|
||||
|
||||
import { WorkspaceAvatar } from '../workspace-avatar';
|
||||
import { WorkspaceAvatar } from '../../workspace-avatar';
|
||||
import {
|
||||
StyledCard,
|
||||
StyledSettingLink,
|
||||
@@ -1,5 +1,5 @@
|
||||
import { displayFlex, styled, textEllipsis } from '../..';
|
||||
import { IconButton } from '../..';
|
||||
import { displayFlex, styled, textEllipsis } from '../../../styles';
|
||||
import { IconButton } from '../../../ui/button/icon-button';
|
||||
|
||||
export const StyleWorkspaceInfo = styled('div')(() => {
|
||||
return {
|
||||
@@ -9,7 +9,7 @@ import type { FC } from 'react';
|
||||
import { useRef } from 'react';
|
||||
import { useCallback, useState } from 'react';
|
||||
|
||||
import { Menu } from '../..';
|
||||
import { Menu } from '../../ui/menu/menu';
|
||||
import { Export } from './export';
|
||||
import { containerStyle, indicatorContainerStyle, tabStyle } from './index.css';
|
||||
import { SharePage } from './share-page';
|
||||
|
||||
@@ -12,7 +12,7 @@ import {
|
||||
import { SortableContext, useSortable } from '@dnd-kit/sortable';
|
||||
import type { FC } from 'react';
|
||||
|
||||
import { WorkspaceCard } from '../workspace-card';
|
||||
import { WorkspaceCard } from '../../components/card/workspace-card';
|
||||
import { workspaceItemStyle } from './index.css';
|
||||
|
||||
export type WorkspaceListProps = {
|
||||
|
||||
@@ -2,8 +2,11 @@
|
||||
import type { Meta, StoryFn } from '@storybook/react';
|
||||
import { useState } from 'react';
|
||||
|
||||
import { Button } from '..';
|
||||
import { Button } from '../ui/button/button';
|
||||
import { DropdownButton } from '../ui/button/dropdown';
|
||||
import type { ButtonProps } from '../ui/button/interface';
|
||||
import { Menu } from '../ui/menu/menu';
|
||||
import { toast } from '../ui/toast/toast';
|
||||
|
||||
export default {
|
||||
title: 'AFFiNE/Button',
|
||||
@@ -20,30 +23,72 @@ export const Primary = Template.bind(undefined);
|
||||
Primary.args = {
|
||||
type: 'primary',
|
||||
children: 'This is a primary button',
|
||||
onClick: () => toast('Click button'),
|
||||
};
|
||||
|
||||
export const Default = Template.bind(undefined);
|
||||
Default.args = {
|
||||
type: 'default',
|
||||
children: 'This is a default button',
|
||||
onClick: () => toast('Click button'),
|
||||
};
|
||||
|
||||
export const Light = Template.bind(undefined);
|
||||
Light.args = {
|
||||
type: 'light',
|
||||
children: 'This is a light button',
|
||||
onClick: () => toast('Click button'),
|
||||
};
|
||||
|
||||
export const Warning = Template.bind(undefined);
|
||||
Warning.args = {
|
||||
type: 'warning',
|
||||
children: 'This is a warning button',
|
||||
onClick: () => toast('Click button'),
|
||||
};
|
||||
|
||||
export const Danger = Template.bind(undefined);
|
||||
Danger.args = {
|
||||
type: 'danger',
|
||||
children: 'This is a danger button',
|
||||
onClick: () => toast('Click button'),
|
||||
};
|
||||
|
||||
export const Dropdown: StoryFn = ({ onClickDropDown, ...props }) => {
|
||||
const [open, setOpen] = useState(false);
|
||||
return (
|
||||
<>
|
||||
<DropdownButton onClickDropDown={onClickDropDown} {...props}>
|
||||
Dropdown Button
|
||||
</DropdownButton>
|
||||
|
||||
<Menu
|
||||
visible={open}
|
||||
placement="bottom-end"
|
||||
trigger={['click']}
|
||||
width={235}
|
||||
disablePortal={true}
|
||||
onClickAway={() => {
|
||||
setOpen(false);
|
||||
}}
|
||||
content={<>Dropdown Menu</>}
|
||||
>
|
||||
<DropdownButton
|
||||
onClick={() => {
|
||||
toast('Click button');
|
||||
setOpen(false);
|
||||
}}
|
||||
onClickDropDown={() => setOpen(!open)}
|
||||
>
|
||||
Dropdown with Menu
|
||||
</DropdownButton>
|
||||
</Menu>
|
||||
</>
|
||||
);
|
||||
};
|
||||
Dropdown.args = {
|
||||
onClick: () => toast('Click button'),
|
||||
onClickDropDown: () => toast('Click dropdown'),
|
||||
};
|
||||
|
||||
export const Test: StoryFn<ButtonProps> = () => {
|
||||
|
||||
55
packages/component/src/stories/card.stories.tsx
Normal file
55
packages/component/src/stories/card.stories.tsx
Normal file
@@ -0,0 +1,55 @@
|
||||
import { BlockCard } from '@affine/component/card/block-card';
|
||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
||||
import { EdgelessIcon, PageIcon } from '@blocksuite/icons';
|
||||
import { Workspace } from '@blocksuite/store';
|
||||
|
||||
import { WorkspaceCard } from '../components/card/workspace-card';
|
||||
import { toast } from '../ui/toast';
|
||||
|
||||
export default {
|
||||
title: 'AFFiNE/Card',
|
||||
component: WorkspaceCard,
|
||||
};
|
||||
|
||||
const blockSuiteWorkspace = new Workspace({
|
||||
id: 'blocksuite-local',
|
||||
});
|
||||
|
||||
blockSuiteWorkspace.meta.setName('Hello World');
|
||||
|
||||
export const AffineWorkspaceCard = () => {
|
||||
return (
|
||||
<WorkspaceCard
|
||||
workspace={{
|
||||
flavour: WorkspaceFlavour.LOCAL,
|
||||
id: 'local',
|
||||
blockSuiteWorkspace,
|
||||
providers: [],
|
||||
}}
|
||||
onClick={() => {}}
|
||||
onSettingClick={() => {}}
|
||||
currentWorkspaceId={null}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
export const AffineBlockCard = () => {
|
||||
return (
|
||||
<div style={{ display: 'flex', flexDirection: 'column', gap: '4px' }}>
|
||||
<BlockCard title={'New Page'} onClick={() => toast('clicked')} />
|
||||
<BlockCard
|
||||
title={'New Page'}
|
||||
desc={'Write with a blank page'}
|
||||
right={<PageIcon width={20} height={20} />}
|
||||
onClick={() => toast('clicked page')}
|
||||
/>
|
||||
<BlockCard
|
||||
title={'New Edgeless'}
|
||||
desc={'Draw with a blank whiteboard'}
|
||||
left={<PageIcon width={20} height={20} />}
|
||||
right={<EdgelessIcon width={20} height={20} />}
|
||||
onClick={() => toast('clicked edgeless')}
|
||||
/>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
@@ -1,31 +0,0 @@
|
||||
import { WorkspaceFlavour } from '@affine/workspace/type';
|
||||
import { Workspace } from '@blocksuite/store';
|
||||
|
||||
import { WorkspaceCard } from '../components/workspace-card';
|
||||
|
||||
export default {
|
||||
title: 'AFFiNE/WorkspaceCard',
|
||||
component: WorkspaceCard,
|
||||
};
|
||||
|
||||
const blockSuiteWorkspace = new Workspace({
|
||||
id: 'blocksuite-local',
|
||||
});
|
||||
|
||||
blockSuiteWorkspace.meta.setName('Hello World');
|
||||
|
||||
export const Basic = () => {
|
||||
return (
|
||||
<WorkspaceCard
|
||||
workspace={{
|
||||
flavour: WorkspaceFlavour.LOCAL,
|
||||
id: 'local',
|
||||
blockSuiteWorkspace,
|
||||
providers: [],
|
||||
}}
|
||||
onClick={() => {}}
|
||||
onSettingClick={() => {}}
|
||||
currentWorkspaceId={null}
|
||||
/>
|
||||
);
|
||||
};
|
||||
35
packages/component/src/ui/button/dropdown.tsx
Normal file
35
packages/component/src/ui/button/dropdown.tsx
Normal file
@@ -0,0 +1,35 @@
|
||||
import { ArrowDownSmallIcon } from '@blocksuite/icons';
|
||||
import {
|
||||
type ButtonHTMLAttributes,
|
||||
forwardRef,
|
||||
type MouseEventHandler,
|
||||
} from 'react';
|
||||
|
||||
import * as styles from './styles.css';
|
||||
|
||||
type DropdownButtonProps = {
|
||||
onClickDropDown?: MouseEventHandler<SVGSVGElement>;
|
||||
} & ButtonHTMLAttributes<HTMLButtonElement>;
|
||||
|
||||
export const DropdownButton = forwardRef<
|
||||
HTMLButtonElement,
|
||||
DropdownButtonProps
|
||||
>(({ onClickDropDown, children, ...props }, ref) => {
|
||||
const handleClickDropDown: MouseEventHandler<SVGSVGElement> = e => {
|
||||
e.stopPropagation();
|
||||
onClickDropDown?.(e);
|
||||
};
|
||||
return (
|
||||
<button ref={ref} className={styles.dropdownBtn} {...props}>
|
||||
<span>{children}</span>
|
||||
<span className={styles.divider} />
|
||||
<ArrowDownSmallIcon
|
||||
className={styles.icon}
|
||||
width={16}
|
||||
height={16}
|
||||
onClick={handleClickDropDown}
|
||||
/>
|
||||
</button>
|
||||
);
|
||||
});
|
||||
DropdownButton.displayName = 'SimpleDropdownButton';
|
||||
40
packages/component/src/ui/button/styles.css.ts
Normal file
40
packages/component/src/ui/button/styles.css.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
import { style } from '@vanilla-extract/css';
|
||||
|
||||
export const dropdownBtn = style({
|
||||
display: 'inline-flex',
|
||||
alignItems: 'center',
|
||||
justifyContent: 'center',
|
||||
padding: '0 10px',
|
||||
gap: '4px',
|
||||
color: 'var(--affine-text-primary-color)',
|
||||
fontWeight: 600,
|
||||
background: 'var(--affine-button-gray-color)',
|
||||
boxShadow: 'var(--affine-float-button-shadow)',
|
||||
borderRadius: '8px',
|
||||
fontSize: 'var(--affine-font-sm)',
|
||||
// width: '100%',
|
||||
height: '32px',
|
||||
userSelect: 'none',
|
||||
whiteSpace: 'nowrap',
|
||||
cursor: 'pointer',
|
||||
selectors: {
|
||||
'&:hover': {
|
||||
background: 'var(--affine-hover-color)',
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
export const divider = style({
|
||||
width: '0.5px',
|
||||
height: '16px',
|
||||
background: 'var(--affine-border-color)',
|
||||
});
|
||||
|
||||
export const icon = style({
|
||||
borderRadius: '4px',
|
||||
selectors: {
|
||||
'&:hover': {
|
||||
background: 'var(--affine-hover-color)',
|
||||
},
|
||||
},
|
||||
});
|
||||
@@ -9,5 +9,5 @@
|
||||
"devDependencies": {
|
||||
"@types/debug": "^4.1.7"
|
||||
},
|
||||
"version": "0.5.4-beta.1"
|
||||
"version": "0.6.0-canary.5"
|
||||
}
|
||||
|
||||
2
packages/env/package.json
vendored
2
packages/env/package.json
vendored
@@ -22,5 +22,5 @@
|
||||
"dependencies": {
|
||||
"lit": "^2.7.4"
|
||||
},
|
||||
"version": "0.5.4-beta.1"
|
||||
"version": "0.6.0-canary.5"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@affine/graphql",
|
||||
"version": "0.5.4-beta.1",
|
||||
"version": "0.6.0-canary.5",
|
||||
"description": "Autogenerated GraphQL client for affine.pro",
|
||||
"license": "MPL-2.0",
|
||||
"type": "module",
|
||||
|
||||
@@ -4,5 +4,5 @@
|
||||
"./*": "./src/*"
|
||||
},
|
||||
"private": true,
|
||||
"version": "0.5.4-beta.1"
|
||||
"version": "0.6.0-canary.5"
|
||||
}
|
||||
|
||||
@@ -40,5 +40,5 @@
|
||||
"ts-node": "^10.9.1",
|
||||
"typescript": "^5.0.4"
|
||||
},
|
||||
"version": "0.5.4-beta.1"
|
||||
"version": "0.6.0-canary.5"
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
"Copied link to clipboard": "Link in die Zwischenablage kopiert",
|
||||
"Local Workspace Description": "Alle Daten sind auf dem aktuellen Gerät gespeichert. Du kannst AFFiNE Cloud für diesen Workspace aktivieren, um deine Daten mit der Cloud zu synchronisieren.",
|
||||
"Download all data": "Alle Daten herunterladen",
|
||||
"It takes up little space on your device": "Es verbraucht nur wenig Speicherplatz auf deinem Gerät.",
|
||||
"It takes up little space on your device": "Es nimmt nur wenig Platz auf deinem Gerät ein.",
|
||||
"Help and Feedback": "Hilfe und Feedback",
|
||||
"Not now": "Vielleicht später",
|
||||
"Please make sure you are online": "Bitte stelle sicher, dass du online bist",
|
||||
@@ -190,13 +190,10 @@
|
||||
"Data sync mode": "Daten-Sync Modus",
|
||||
"Download core data": "Core Daten herunterladen",
|
||||
"Check Our Docs": "Sieh dir unsere Dokumentation an",
|
||||
"Get in touch! Join our communities": "Bleib mit uns in Kontakt und trete unseren Communitys bei!",
|
||||
"Get in touch! Join our communities": "Nimm teil! Treten Sie unseren Communities bei.",
|
||||
"Move to Trash": "In Papierkorb verschieben",
|
||||
"Placeholder of delete workspace": "Bitte zur Bestätigung den Workspace-Namen eingeben",
|
||||
"Access level": "Zugriffsberechtigung",
|
||||
"Loading Page": "Lade Seite",
|
||||
"Loading All Workspaces": "Lade alle Workspaces",
|
||||
"Discover what's new!": "Erfahre was neu ist!",
|
||||
"Move to": "Verschieben zu",
|
||||
"Disable": "Deaktivieren",
|
||||
"Open Workspace Settings": "Workspace Einstellungen öffnen",
|
||||
@@ -204,21 +201,18 @@
|
||||
"Workspace Not Found": "Workspace nicht gefunden",
|
||||
"Rename": "Umbenennen",
|
||||
"Page is Loading": "Seite lädt",
|
||||
"Discover what's new!": "Erfahre was neu ist!",
|
||||
"Loading All Workspaces": "Lade alle Workspaces",
|
||||
"Loading Page": "Lade Seite",
|
||||
"Create Shared Link Description": "Erstelle einen Link, den du leicht mit jedem teilen kannst.",
|
||||
"Back to Quick Search": "Zurück zur Schnellsuche",
|
||||
"Disable Public Link": "Öffentlichen Link deaktivieren",
|
||||
"Disable Public Link ?": "Öffentlichen Link deaktivieren ?",
|
||||
"Export Shared Pages Description": "Laden eine statische Kopie dieser Seite herunter, um sie mit anderen zu teilen.",
|
||||
"Favorite pages for easy access": "Favoriten-Seiten für schnellen Zugriff",
|
||||
"Move page to": "Seite verschieben nach...",
|
||||
"Navigation Path": "Navigationspfad",
|
||||
"Pivots": "Pivots",
|
||||
"RFP": "Seiten können frei zu Pivots hinzugefügt/entfernt werden und bleiben über \"Alle Seiten\" zugänglich.",
|
||||
"Remove from Pivots": "Von Pivots entfernen",
|
||||
"Router is Loading": "Router lädt",
|
||||
"Share Menu Public Workspace Description1": "Laden andere ein, dem Workspace beizutreten oder veröffentliche ihn im Internet.",
|
||||
"Share Menu Public Workspace Description2": "Der aktuelle Workspace wurde im Internet als öffentlicher Workspace veröffentlicht.",
|
||||
"View Navigation Path": "Navigationspfad ansehen",
|
||||
"Add a subpage inside": "Unterseite hinzufügen",
|
||||
"Disable Public Link Description": "Wenn du diesen öffentlichen Link deaktivierst, können andere Personen mit diesem Link nicht mehr auf diese Seite zugreifen.",
|
||||
"Disable Public Sharing": "Öffentliche Freigabe deaktivieren",
|
||||
@@ -228,8 +222,58 @@
|
||||
"Shared Pages Description": "Die öffentliche Freigabe der Seite erfordert den AFFiNE-Cloud-Dienst.",
|
||||
"Shared Pages In Public Workspace Description": "Der gesamte Workspace wird im Web veröffentlicht und kann über <1>Workspace Einstellungen</1> bearbeitet werden.",
|
||||
"emptySharedPages": "Freigegebene Seiten werden hier angezeigt.",
|
||||
"Recent": "Neueste",
|
||||
"Synced with AFFiNE Cloud": "Synchronisiert mit AFFiNE Cloud",
|
||||
"Successfully deleted": "Erfolgreich gelöscht",
|
||||
"You cannot delete the last workspace": "Du kannst den letzten Workspace nicht löschen"
|
||||
"You cannot delete the last workspace": "Du kannst den letzten Workspace nicht löschen",
|
||||
"Move page to": "Seite verschieben nach...",
|
||||
"Navigation Path": "Navigationspfad",
|
||||
"Recent": "Neueste",
|
||||
"Export Shared Pages Description": "Laden eine statische Kopie dieser Seite herunter, um sie mit anderen zu teilen.",
|
||||
"Share Menu Public Workspace Description1": "Laden andere ein, dem Workspace beizutreten oder veröffentliche ihn im Internet.",
|
||||
"Share Menu Public Workspace Description2": "Der aktuelle Workspace wurde im Internet als öffentlicher Workspace veröffentlicht.",
|
||||
"View Navigation Path": "Navigationspfad ansehen",
|
||||
"Delete Workspace Label Hint": "Wenn dieser Workspace gelöscht wird, wird sein gesamter Inhalt für alle Benutzer dauerhaft gelöscht. Niemand wird in der Lage sein, den Inhalt dieses Workspaces wiederherzustellen.",
|
||||
"Added Successfully": "Erfolgreich hinzugefügt",
|
||||
"Continue": "Fortfahren",
|
||||
"Create your own workspace": "Eigenen Workspace erstellen",
|
||||
"Created Successfully": "Erfolgreich erstellt",
|
||||
"Customize": "Anpassen",
|
||||
"FILE_ALREADY_EXISTS": "Datei existiert bereits",
|
||||
"Move folder": "Ordner verschieben",
|
||||
"Move folder hint": "Neuen Speicherort auswählen.",
|
||||
"Add Workspace Hint": "Auswählen, was du schon hast",
|
||||
"Change avatar hint": "Avatar von allen Mitgliedern ändern.",
|
||||
"Change workspace name hint": "Name von allen Mitgliedern ändern.",
|
||||
"DB_FILE_ALREADY_LOADED": "Datenbankdatei bereits geladen",
|
||||
"DB_FILE_INVALID": "Ungültige Datenbankdatei",
|
||||
"DB_FILE_PATH_INVALID": "Pfad der Datenbankdatei ungültig",
|
||||
"Default Location": "Standard-Speicherort",
|
||||
"Default db location hint": "Standardmäßig wird unter {{location}} gespeichert.",
|
||||
"Move folder success": "Ordnerverschiebung erfolgreich",
|
||||
"Open folder": "Ordner öffnen",
|
||||
"Save": "Speichern",
|
||||
"Set database location": "Datenbankstandort festlegen",
|
||||
"UNKNOWN_ERROR": "Unbekannter Fehler",
|
||||
"Open folder hint": "Prüfe, wo sich der Speicherordner befindet.",
|
||||
"Storage Folder": "Speicherordner",
|
||||
"Storage Folder Hint": "Speicherort überprüfen oder ändern.",
|
||||
"Sync across devices with AFFiNE Cloud": "Geräteübergreifende Synchronisierung mit AFFiNE Cloud",
|
||||
"Name Your Workspace": "Workspace benennen",
|
||||
"Update Available": "Update verfügbar",
|
||||
"com.affine.edgelessMode": "Edgeless-Modus",
|
||||
"com.affine.onboarding.title2": "Intuitive und robuste, blockbasierte Bearbeitung",
|
||||
"com.affine.onboarding.videoDescription1": "Wechsle mühelos zwischen dem Seitenmodus für die strukturierte Dokumentenerstellung und dem Whiteboard-Modus für den Ausdruck kreativer Ideen in freier Form.",
|
||||
"com.affine.onboarding.videoDescription2": "Verwende eine modulare Schnittstelle, um strukturierte Dokumente zu erstellen, indem du Textblöcke, Bilder und andere Inhalte einfach per Drag-and-drop anordnen kannst.",
|
||||
"com.affine.onboarding.title1": "Hyperfusion von Whiteboard und Dokumenten",
|
||||
"com.affine.pageMode": "Seitenmodus",
|
||||
"Update workspace name success": "Update vom Workspace-Namen erfolgreich",
|
||||
"Use on current device only": "Nur auf dem aktuellen Gerät verwenden",
|
||||
"Workspace database storage description": "Wähle den Ort, an dem du deinen Workspace erstellen möchten. Die Daten vom Workspace werden standardmäßig lokal gespeichert.",
|
||||
"dark": "dunkel",
|
||||
"system": "system",
|
||||
"Restart Install Client Update": "Neustart zum Installieren des Updates",
|
||||
"Add Workspace": "Workspace hinzufügen",
|
||||
"Export success": "Export erfolgreich",
|
||||
"light": "hell",
|
||||
"others": "Andere"
|
||||
}
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
"No item": "No item",
|
||||
"Import": "Import",
|
||||
"Trash": "Trash",
|
||||
"others": "Others",
|
||||
"New Page": "New Page",
|
||||
"New Keyword Page": "New '{{query}}' page",
|
||||
"Find 0 result": "Find 0 result",
|
||||
@@ -258,16 +257,12 @@
|
||||
"Move folder hint": "Select a new storage location.",
|
||||
"Storage Folder": "Storage Folder",
|
||||
"DB_FILE_INVALID": "Invalid Database file",
|
||||
"FILE_ALREADY_EXISTS": "File already exists",
|
||||
"Name Your Workspace": "Name Your Workspace",
|
||||
"Change avatar hint": "New avatar will be shown for everyone.",
|
||||
"Change workspace name hint": "New name will be shown for everyone.",
|
||||
"Delete Workspace Label Hint": "After deleting this Workspace, you will permanently delete all of its content for everyone. No one will be able to recover the content of this Workspace.",
|
||||
"DB_FILE_PATH_INVALID": "Database file path invalid",
|
||||
"Default db location hint": "By default will be saved to {{location}}",
|
||||
"light": "light",
|
||||
"dark": "dark",
|
||||
"system": "system",
|
||||
"com.affine.pageMode": "Page Mode",
|
||||
"com.affine.edgelessMode": "Edgeless Mode",
|
||||
"com.affine.onboarding.title1": "Hyper merged whiteboard and docs",
|
||||
|
||||
@@ -12,13 +12,13 @@
|
||||
"Retain cached cloud data": "保留缓存的云数据",
|
||||
"Workspace Owner": "工作区所有者",
|
||||
"Cloud Workspace": "云端工作区",
|
||||
"Cloud Workspace Description": "所有数据将被同步并保存在AFFiNE账户(<1>{{email}}</1>)中",
|
||||
"Copied link to clipboard": "复制链接到剪贴板",
|
||||
"Available Offline": "可供离线使用",
|
||||
"Back Home": "返回首页",
|
||||
"Enabled success": "启用成功",
|
||||
"Published Description": "当前工作区已被发布到Web,所有人都可以通过链接来查看此工作区内容。",
|
||||
"All data has been stored in the cloud": "所有数据已被保存在云端。",
|
||||
"Cloud Workspace Description": "所有数据将被同步并保存在 AFFiNE 账户(<1>{{email}}</1>)中",
|
||||
"Published Description": "当前工作区已被发布到 Web,所有人都可以通过链接来查看此工作区内容。",
|
||||
"Download data": "下载 {{CoreOrAll}} 数据",
|
||||
"Force Sign Out": "强制登出",
|
||||
"Joined Workspace": "加入工作区",
|
||||
@@ -73,18 +73,15 @@
|
||||
"Access level": "访问权限",
|
||||
"Added to Favorites": "已收藏",
|
||||
"Collaboration": "协作",
|
||||
"Collaboration Description": "与其他成员协作需要AFFiNE云服务支持。",
|
||||
"Continue with Google": "谷歌登录以继续",
|
||||
"Delete page?": "确定要删除页面?",
|
||||
"Delete permanently": "永久删除",
|
||||
"Delete permanently?": "是否永久删除?",
|
||||
"Edgeless": "无界",
|
||||
"Enable AFFiNE Cloud": "启用 AFFiNE 云服务",
|
||||
"Enable AFFiNE Cloud Description": "如启用,此工作区中的数据将通过AFFiNE Cloud进行备份和同步。",
|
||||
"Favorites": "收藏夹",
|
||||
"Get in touch!": "保持联络!",
|
||||
"Got it": "知道了",
|
||||
"How is AFFiNE Alpha different?": "AFFiNE Alpha有何不同?",
|
||||
"Invite": "邀请",
|
||||
"Invite Members": "邀请成员",
|
||||
"Invite placeholder": "搜索邮件(仅支持Gmail)",
|
||||
@@ -94,12 +91,16 @@
|
||||
"Leave Workspace": "退出工作区",
|
||||
"Leave Workspace Description": "退出后,您将无法再访问此工作区的内容。",
|
||||
"Link": "超链接(选定文本)",
|
||||
"Collaboration Description": "与其他成员协作需要 AFFiNE 云服务支持。",
|
||||
"Moved to Trash": "已移到垃圾箱",
|
||||
"My Workspaces": "我的工作区",
|
||||
"Enable AFFiNE Cloud Description": "如启用,此工作区中的数据将通过 AFFiNE Cloud 进行备份和同步。",
|
||||
"How is AFFiNE Alpha different?": "AFFiNE Alpha 有何不同?",
|
||||
"Non-Gmail": "不支持非 Gmail 邮箱",
|
||||
"Publishing": "发布到 web 需要 AFFiNE 云服务。",
|
||||
"New Page": "新建页面",
|
||||
"New Workspace": "新建工作区",
|
||||
"No item": "无项目",
|
||||
"Non-Gmail": "不支持非Gmail邮箱",
|
||||
"NotLoggedIn": "当前未登录",
|
||||
"Official Website": "官网",
|
||||
"Once deleted, you can't undo this action": "一旦删除,您将无法撤销此操作。",
|
||||
@@ -116,7 +117,6 @@
|
||||
"Pending": "待定",
|
||||
"Permanently deleted": "已永久删除",
|
||||
"Publish": "发布",
|
||||
"Publishing": "发布到web需要AFFiNE云服务。",
|
||||
"Publish to web": "发布到web",
|
||||
"Quick search": "快速搜索",
|
||||
"Quick search placeholder": "快速搜索...",
|
||||
@@ -169,8 +169,8 @@
|
||||
"Restore it": "恢复TA",
|
||||
"all": "全部",
|
||||
"core": "核心",
|
||||
"Sync Description": "{{workspaceName}}是本地工作区,所有数据都存储在当前设备上。您可以为此工作区启用AFFiNE Cloud,以使数据与云端保持同步。",
|
||||
"Delete Workspace Description2": "正在删除(<1>{{workspace}}</1>),将同时删除本地和云端数据。此操作无法撤消,请谨慎操作。",
|
||||
"Sync Description": "{{workspaceName}}是本地工作区,所有数据都存储在当前设备上。您可以为此工作区启用 AFFiNE Cloud,以使数据与云端保持同步。",
|
||||
"Failed to publish workspace": "工作区发布失败",
|
||||
"Member": "成员",
|
||||
"Member has been removed": "{{name}} 已被移除。",
|
||||
|
||||
@@ -22,5 +22,5 @@
|
||||
"@blocksuite/store": "*",
|
||||
"lottie-web": "*"
|
||||
},
|
||||
"version": "0.5.4-beta.1"
|
||||
"version": "0.6.0-canary.5"
|
||||
}
|
||||
|
||||
@@ -35,5 +35,5 @@
|
||||
"test": "cross-env TS_NODE_TRANSPILE_ONLY=1 TS_NODE_PROJECT=./tsconfig.json node --test --loader ts-node/esm --experimental-specifier-resolution=node ./__tests__/**/*.mts",
|
||||
"version": "napi version"
|
||||
},
|
||||
"version": "0.5.4-beta.1"
|
||||
"version": "0.6.0-canary.5"
|
||||
}
|
||||
|
||||
@@ -5,5 +5,5 @@
|
||||
"exports": {
|
||||
"./*.md": "./src/*.md"
|
||||
},
|
||||
"version": "0.5.4-beta.1"
|
||||
"version": "0.6.0-canary.5"
|
||||
}
|
||||
|
||||
@@ -40,5 +40,5 @@
|
||||
"next": "^13.4.2",
|
||||
"ws": "^8.13.0"
|
||||
},
|
||||
"version": "0.5.4-beta.1"
|
||||
"version": "0.6.0-canary.5"
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@toeverything/y-indexeddb",
|
||||
"type": "module",
|
||||
"version": "0.5.4-beta.1",
|
||||
"version": "0.6.0-canary.5",
|
||||
"scripts": {
|
||||
"build": "vite build"
|
||||
},
|
||||
|
||||
2
tests/fixtures/package.json
vendored
2
tests/fixtures/package.json
vendored
@@ -3,5 +3,5 @@
|
||||
"exports": {
|
||||
"./*": "./*"
|
||||
},
|
||||
"version": "0.5.4-beta.1"
|
||||
"version": "0.6.0-canary.5"
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@affine-test/kit",
|
||||
"private": true,
|
||||
"version": "0.5.4-beta.1",
|
||||
"version": "0.6.0-canary.5",
|
||||
"exports": {
|
||||
"./playwright": "./playwright.ts"
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user