mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-15 05:37:32 +00:00
Merge remote-tracking branch 'refs/remotes/origin/feat/cloud-sync-saika'
Conflicts: package.json packages/app/src/components/workspace-slider-bar/index.tsx packages/app/src/libs/i18n/resources/bn.json packages/app/src/libs/i18n/resources/fr.json packages/app/src/libs/i18n/resources/sr.json packages/app/src/libs/i18n/resources/zh-Hans.json packages/app/src/libs/i18n/resources/zh-Hant.json packages/app/src/pages/_app.tsx packages/data-center/src/datacenter.ts pnpm-lock.yaml
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@affine/datacenter": "workspace:*",
|
||||
"@affine/i18n": "workspace:*",
|
||||
"@blocksuite/blocks": "0.3.1-20230109032243-37ad3ba",
|
||||
"@blocksuite/editor": "0.3.1-20230109032243-37ad3ba",
|
||||
"@blocksuite/icons": "^2.0.2",
|
||||
@@ -27,7 +28,6 @@
|
||||
"cmdk": "^0.1.20",
|
||||
"css-spring": "^4.1.0",
|
||||
"dayjs": "^1.11.7",
|
||||
"i18next": "^21.9.1",
|
||||
"lit": "^2.3.1",
|
||||
"next": "13.1.0",
|
||||
"next-debug-local": "^0.1.5",
|
||||
@@ -36,7 +36,6 @@
|
||||
"quill-cursors": "^4.0.0",
|
||||
"react": "18.2.0",
|
||||
"react-dom": "18.2.0",
|
||||
"react-i18next": "^11.18.4",
|
||||
"yjs": "^13.5.44"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { describe, test, expect } from 'vitest';
|
||||
import { test, expect } from '@playwright/test';
|
||||
import { printer } from './../printer';
|
||||
const chalk = require('chalk');
|
||||
describe('printer', () => {
|
||||
test.describe('printer', () => {
|
||||
test('test debug', () => {
|
||||
expect(printer.debug('test debug')).toBe(
|
||||
chalk.green`debug` + chalk.white(' - test debug')
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { NotFoundTitle, PageContainer } from './styles';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useTranslation } from '@affine/i18n';
|
||||
export const NotfoundPage = () => {
|
||||
const { t } = useTranslation();
|
||||
return (
|
||||
|
||||
@@ -23,7 +23,7 @@ import {
|
||||
StyledModalFooter,
|
||||
} from './style';
|
||||
import bg from '@/components/contact-modal/bg.png';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useTranslation } from '@affine/i18n';
|
||||
const linkList = [
|
||||
{
|
||||
icon: <GithubIcon />,
|
||||
|
||||
@@ -15,7 +15,7 @@ import { useTheme } from '@/providers/ThemeProvider';
|
||||
import { EdgelessIcon, PaperIcon } from './Icons';
|
||||
import useCurrentPageMeta from '@/hooks/use-current-page-meta';
|
||||
import { usePageHelper } from '@/hooks/use-page-helper';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useTranslation } from '@affine/i18n';
|
||||
const PaperItem = ({ active }: { active?: boolean }) => {
|
||||
const {
|
||||
theme: {
|
||||
|
||||
@@ -3,7 +3,7 @@ import { IconButton, IconButtonProps } from '@/ui/button';
|
||||
import { Tooltip } from '@/ui/tooltip';
|
||||
import { ArrowDownIcon } from '@blocksuite/icons';
|
||||
import { useModal } from '@/providers/GlobalModalProvider';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useTranslation } from '@affine/i18n';
|
||||
export const QuickSearchButton = ({
|
||||
onClick,
|
||||
...props
|
||||
|
||||
@@ -16,7 +16,7 @@ import { usePageHelper } from '@/hooks/use-page-helper';
|
||||
import { useConfirm } from '@/providers/ConfirmProvider';
|
||||
import useCurrentPageMeta from '@/hooks/use-current-page-meta';
|
||||
import { toast } from '@/ui/toast';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useTranslation } from '@affine/i18n';
|
||||
const PopoverContent = () => {
|
||||
const { editor } = useAppState();
|
||||
const { toggleFavoritePage, toggleDeletePage } = usePageHelper();
|
||||
|
||||
@@ -8,7 +8,7 @@ import {
|
||||
import { CloseIcon, ContactIcon, HelpIcon, KeyboardIcon } from './Icons';
|
||||
import Grow from '@mui/material/Grow';
|
||||
import { Tooltip } from '@/ui/tooltip';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useTranslation } from '@affine/i18n';
|
||||
import { useModal } from '@/providers/GlobalModalProvider';
|
||||
import { useTheme } from '@/providers/ThemeProvider';
|
||||
import useCurrentPageMeta from '@/hooks/use-current-page-meta';
|
||||
|
||||
@@ -6,7 +6,7 @@ import Loading from '@/components/loading';
|
||||
import { usePageHelper } from '@/hooks/use-page-helper';
|
||||
import { useAppState } from '@/providers/app-state-provider/context';
|
||||
import { useEffect, useState } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useTranslation } from '@affine/i18n';
|
||||
// import { Tooltip } from '@/ui/tooltip';
|
||||
type ImportModalProps = {
|
||||
open: boolean;
|
||||
|
||||
@@ -14,7 +14,7 @@ import {
|
||||
} from '@blocksuite/icons';
|
||||
import { toast } from '@/ui/toast';
|
||||
import { usePageHelper } from '@/hooks/use-page-helper';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useTranslation } from '@affine/i18n';
|
||||
export const OperationCell = ({ pageMeta }: { pageMeta: PageMeta }) => {
|
||||
const { id, favorite } = pageMeta;
|
||||
const { openPage } = usePageHelper();
|
||||
|
||||
@@ -24,7 +24,7 @@ import { useAppState } from '@/providers/app-state-provider/context';
|
||||
import { toast } from '@/ui/toast';
|
||||
import { usePageHelper } from '@/hooks/use-page-helper';
|
||||
import { useTheme } from '@/providers/ThemeProvider';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useTranslation } from '@affine/i18n';
|
||||
const FavoriteTag = ({
|
||||
pageMeta: { favorite, id },
|
||||
}: {
|
||||
|
||||
@@ -4,7 +4,7 @@ import { StyledModalFooterContent } from './style';
|
||||
import { useModal } from '@/providers/GlobalModalProvider';
|
||||
import { Command } from 'cmdk';
|
||||
import { usePageHelper } from '@/hooks/use-page-helper';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useTranslation } from '@affine/i18n';
|
||||
export const Footer = (props: { query: string }) => {
|
||||
const { triggerQuickSearchModal } = useModal();
|
||||
const { openPage, createPage } = usePageHelper();
|
||||
|
||||
@@ -7,7 +7,7 @@ import { useAppState } from '@/providers/app-state-provider';
|
||||
import { useRouter } from 'next/router';
|
||||
import { useSwitchToConfig } from './config';
|
||||
import { NoResultSVG } from './NoResultSVG';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useTranslation } from '@affine/i18n';
|
||||
import usePageHelper from '@/hooks/use-page-helper';
|
||||
import usePageMetaList from '@/hooks/use-page-meta-list';
|
||||
export const Results = (props: {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { AllPagesIcon, FavouritesIcon, TrashIcon } from '@blocksuite/icons';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useTranslation } from '@affine/i18n';
|
||||
|
||||
export const useSwitchToConfig = (
|
||||
currentWorkspaceId: string
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useTranslation } from '@affine/i18n';
|
||||
interface ShortcutTip {
|
||||
[x: string]: string;
|
||||
}
|
||||
@@ -13,7 +13,7 @@ export const useMacKeyboardShortcuts = (): ShortcutTip => {
|
||||
[t('Strikethrough')]: '⌘+⇧+S',
|
||||
[t('Inline code')]: ' ⌘+E',
|
||||
[t('Code block')]: '⌘+⌥+C',
|
||||
[t('Hyperlink(with selected text)')]: '⌘+K',
|
||||
[t('Link')]: '⌘+K',
|
||||
[t('Quick search')]: '⌘+K',
|
||||
[t('Body text')]: '⌘+⌥+0',
|
||||
[t('Heading', { number: '1' })]: '⌘+⌥+1',
|
||||
@@ -57,7 +57,7 @@ export const useWindowsKeyboardShortcuts = (): ShortcutTip => {
|
||||
[t('Strikethrough')]: 'Ctrl+Shift+S',
|
||||
[t('Inline code')]: ' Ctrl+E',
|
||||
[t('Code block')]: 'Ctrl+Alt+C',
|
||||
[t('Hyperlink(with selected text)')]: 'Ctrl+K',
|
||||
[t('Link')]: 'Ctrl+K',
|
||||
[t('Quick search')]: 'Ctrl+K',
|
||||
[t('Body text')]: 'Ctrl+Shift+0',
|
||||
[t('Heading', { number: '1' })]: 'Ctrl+Shift+1',
|
||||
|
||||
@@ -16,7 +16,7 @@ import {
|
||||
import Slide from '@mui/material/Slide';
|
||||
import { ModalCloseButton } from '@/ui/modal';
|
||||
import { getUaHelper } from '@/utils';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useTranslation } from '@affine/i18n';
|
||||
type ModalProps = {
|
||||
open: boolean;
|
||||
onClose: () => void;
|
||||
|
||||
@@ -32,7 +32,7 @@ import useLocalStorage from '@/hooks/use-local-storage';
|
||||
import usePageMetaList from '@/hooks/use-page-meta-list';
|
||||
import { usePageHelper } from '@/hooks/use-page-helper';
|
||||
import { WorkspaceSetting } from '@/components/workspace-setting';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useTranslation } from '@affine/i18n';
|
||||
|
||||
const FavoriteList = ({ showList }: { showList: boolean }) => {
|
||||
const { openPage } = usePageHelper();
|
||||
|
||||
@@ -1,66 +0,0 @@
|
||||
import i18next, { Resource } from 'i18next';
|
||||
import {
|
||||
I18nextProvider,
|
||||
initReactI18next,
|
||||
useTranslation,
|
||||
} from 'react-i18next';
|
||||
import { LOCALES } from './resources';
|
||||
import type en_US from './resources/en.json';
|
||||
|
||||
// const localStorage = {
|
||||
// getItem() {
|
||||
// return undefined;
|
||||
// },
|
||||
// setItem() {},
|
||||
// };
|
||||
// See https://react.i18next.com/latest/typescript
|
||||
declare module 'react-i18next' {
|
||||
interface CustomTypeOptions {
|
||||
// custom namespace type if you changed it
|
||||
// defaultNS: 'ns1';
|
||||
// custom resources type
|
||||
resources: {
|
||||
en: typeof en_US;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// const STORAGE_KEY = 'i18n_lng';
|
||||
|
||||
export { i18n, useTranslation, I18nProvider, LOCALES };
|
||||
|
||||
const resources = LOCALES.reduce<Resource>(
|
||||
(acc, { tag, res }) => ({ ...acc, [tag]: { translation: res } }),
|
||||
{}
|
||||
);
|
||||
|
||||
const fallbackLng = LOCALES[0].tag;
|
||||
const standardizeLocale = (language: string) => {
|
||||
if (LOCALES.find(locale => locale.tag === language)) return language;
|
||||
if (LOCALES.find(locale => locale.tag === language.slice(0, 2).toLowerCase()))
|
||||
return language;
|
||||
return fallbackLng;
|
||||
};
|
||||
|
||||
const language = standardizeLocale(
|
||||
// localStorage.getItem(STORAGE_KEY) ??
|
||||
// (typeof navigator !== 'undefined' ? navigator.language : 'en')
|
||||
'en'
|
||||
);
|
||||
|
||||
const i18n = i18next.createInstance();
|
||||
i18n.use(initReactI18next).init({
|
||||
lng: language,
|
||||
fallbackLng,
|
||||
debug: false,
|
||||
resources,
|
||||
interpolation: {
|
||||
escapeValue: false, // not needed for react as it escapes by default
|
||||
},
|
||||
});
|
||||
|
||||
i18n.on('languageChanged', () => {
|
||||
// localStorage.setItem(STORAGE_KEY, lng);
|
||||
});
|
||||
|
||||
const I18nProvider = I18nextProvider;
|
||||
@@ -1 +0,0 @@
|
||||
{}
|
||||
@@ -1,79 +0,0 @@
|
||||
{
|
||||
"Quick search": "Quick search",
|
||||
"All pages": "All pages",
|
||||
"Favourites": "Favourites",
|
||||
"No item": "No item",
|
||||
"Import": "Import",
|
||||
"Trash": "Trash",
|
||||
"New Page": "New Page",
|
||||
"New Keyword Page": "New '{{query}}' page",
|
||||
"Find 0 result": "Find 0 result",
|
||||
"Find results": "Find {{number}} results",
|
||||
"Collapse sidebar": "Collapse sidebar",
|
||||
"Expand sidebar": "Expand sidebar",
|
||||
"Removed from Favourites": "Removed from Favourites",
|
||||
"Remove from favourites": "Remove from favourites",
|
||||
"Added to Favourites": "Added to Favourites",
|
||||
"Add to favourites": "Add to favourites",
|
||||
"Paper": "Paper",
|
||||
"Edgeless": "Edgeless",
|
||||
"Switch to": "Switch to",
|
||||
"Convert to ": "Convert to ",
|
||||
"Page": "Page",
|
||||
"Export": "Export",
|
||||
"Export to HTML": "Export to HTML",
|
||||
"Export to Markdown": "Export to Markdown",
|
||||
"Delete": "Delete",
|
||||
"Title": "Title",
|
||||
"Untitled": "Untitled",
|
||||
"Created": "Created",
|
||||
"Updated": "Updated",
|
||||
"Open in new tab": "Open in new tab",
|
||||
"Favourite": "Favourite",
|
||||
"Favourited": "Favourited",
|
||||
"Delete page?": "Delete page?",
|
||||
"Delete permanently?": "Delete permanently?",
|
||||
"will be moved to Trash": "{{title}} will be moved to Trash",
|
||||
"Once deleted, you can't undo this action.": "Once deleted, you can't undo this action.",
|
||||
"Moved to Trash": "Moved to Trash",
|
||||
"Permanently deleted": "Permanently deleted",
|
||||
"restored": "{{title}} restored",
|
||||
"Cancel": "Cancel",
|
||||
"Keyboard Shortcuts": "Keyboard Shortcuts",
|
||||
"Contact Us": "Contact Us",
|
||||
"Official Website": "Official Website",
|
||||
"Get in touch!": "Get in touch!",
|
||||
"AFFiNE Community": "AFFiNE Community",
|
||||
"How is AFFiNE Alpha different?": "How is AFFiNE Alpha different?",
|
||||
"Shortcuts": "Shortcuts",
|
||||
"Undo": "Undo",
|
||||
"Redo": "Redo",
|
||||
"Bold": "Bold",
|
||||
"Italic": "Italic",
|
||||
"Underline": "Underline",
|
||||
"Strikethrough": "Strikethrough",
|
||||
"Inline code": "Inline code",
|
||||
"Code block": "Code block",
|
||||
"Hyperlink(with selected text)": "Hyperlink(with selected text)",
|
||||
"Body text": "Body text",
|
||||
"Heading": "Heading {{number}}",
|
||||
"Increase indent": "Increase indent",
|
||||
"Reduce indent": "Reduce indent",
|
||||
"Markdown Syntax": "Markdown Syntax",
|
||||
"Divider": "Divider",
|
||||
"404 - Page Not Found": "404 - Page Not Found",
|
||||
"New Workspace": "New Workspace",
|
||||
"Workspace description": "Workspace is your virtual space to capture, create and plan as just one person or together as a team.",
|
||||
"Create": "Create",
|
||||
"Select": "Select",
|
||||
"Text": "Text (coming soon)",
|
||||
"Shape": "Shape",
|
||||
"Sticky": "Sticky (coming soon)",
|
||||
"Pen": "Pen (coming soon)",
|
||||
"Connector": "Connector (coming soon)",
|
||||
"Upload": "Upload",
|
||||
"Restore it": "Restore it",
|
||||
"TrashButtonGroupTitle": "Permanently delete",
|
||||
"TrashButtonGroupDescription": "Once deleted, you can't undo this action. Do you confirm?",
|
||||
"Delete permanently": "Delete permanently"
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
{}
|
||||
@@ -1,72 +0,0 @@
|
||||
// THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
||||
// Run `pnpm run download-resources` to regenerate.
|
||||
// To overwrite this, please overwrite download.ts
|
||||
import en from './en.json';
|
||||
import zh_Hans from './zh-Hans.json';
|
||||
import zh_Hant from './zh-Hant.json';
|
||||
import sr from './sr.json';
|
||||
import fr from './fr.json';
|
||||
import bn from './bn.json';
|
||||
|
||||
export const LOCALES = [
|
||||
{
|
||||
id: 1000016008,
|
||||
name: 'English',
|
||||
tag: 'en',
|
||||
originalName: 'English',
|
||||
flagEmoji: '🇬🇧',
|
||||
base: true,
|
||||
completeRate: 1,
|
||||
res: en,
|
||||
},
|
||||
{
|
||||
id: 1000016009,
|
||||
name: 'Simplified Chinese',
|
||||
tag: 'zh-Hans',
|
||||
originalName: '简体中文',
|
||||
flagEmoji: '🇨🇳',
|
||||
base: false,
|
||||
completeRate: 1,
|
||||
res: zh_Hans,
|
||||
},
|
||||
{
|
||||
id: 1000016012,
|
||||
name: 'Traditional Chinese',
|
||||
tag: 'zh-Hant',
|
||||
originalName: '繁體中文',
|
||||
flagEmoji: '🇭🇰',
|
||||
base: false,
|
||||
completeRate: 1,
|
||||
res: zh_Hant,
|
||||
},
|
||||
{
|
||||
id: 1000034005,
|
||||
name: 'Serbian',
|
||||
tag: 'sr',
|
||||
originalName: 'српски',
|
||||
flagEmoji: '🇷🇸',
|
||||
base: false,
|
||||
completeRate: 0.9166666666666666,
|
||||
res: sr,
|
||||
},
|
||||
{
|
||||
id: 1000034008,
|
||||
name: 'French',
|
||||
tag: 'fr',
|
||||
originalName: 'français',
|
||||
flagEmoji: '🇫🇷',
|
||||
base: false,
|
||||
completeRate: 1,
|
||||
res: fr,
|
||||
},
|
||||
{
|
||||
id: 1000034010,
|
||||
name: 'Bangla',
|
||||
tag: 'bn',
|
||||
originalName: 'বাংলা',
|
||||
flagEmoji: '🇧🇩',
|
||||
base: false,
|
||||
completeRate: 0.7083333333333334,
|
||||
res: bn,
|
||||
},
|
||||
] as const;
|
||||
@@ -1 +0,0 @@
|
||||
{}
|
||||
@@ -1,65 +0,0 @@
|
||||
{
|
||||
"Quick search": "快速搜索",
|
||||
"All pages": "全部页面",
|
||||
"Favourites": "收藏夹",
|
||||
"No item": "没有项目",
|
||||
"Import": "导入",
|
||||
"Trash": "回收站",
|
||||
"New Page": "新建文章",
|
||||
"New Keyword Page": "新建 '{{query}}' 为标题的文章",
|
||||
"Find 0 result": "找到 0 个结果",
|
||||
"Find results": "找到 {{number}} 个结果",
|
||||
"Collapse sidebar": "关闭侧边栏",
|
||||
"Expand sidebar": "展开侧边栏",
|
||||
"Removed from Favourites": "已从收藏中移除",
|
||||
"Remove from favourites": "从收藏中移除",
|
||||
"Added to Favourites": "已添加到收藏",
|
||||
"Add to favourites": "添加到收藏",
|
||||
"Paper": "文章",
|
||||
"Edgeless": "无边模式",
|
||||
"Switch to": "跳转到",
|
||||
"Convert to ": "转换成 ",
|
||||
"Page": "文章",
|
||||
"Export": "导出",
|
||||
"Export to HTML": "导出到 HTML",
|
||||
"Export to Markdown": "导出到 Markdown",
|
||||
"Delete": "删除",
|
||||
"Title": "标题",
|
||||
"Untitled": "无标题",
|
||||
"Created": "创建时间",
|
||||
"Updated": "更新时间",
|
||||
"Open in new tab": "在新页面打开",
|
||||
"Favourite": "收藏",
|
||||
"Favourited": "已收藏",
|
||||
"Delete page?": "删除文章?",
|
||||
"Delete permanently?": "永久删除?",
|
||||
"will be moved to Trash": "{{title}} 将被移动到回收站",
|
||||
"Once deleted, you can't undo this action.": "一次性删除,无法恢复。",
|
||||
"Moved to Trash": "已移动到回收站",
|
||||
"Permanently deleted": "已永久删除",
|
||||
"restored": "{{title}} 已恢复",
|
||||
"Cancel": "取消",
|
||||
"Keyboard Shortcuts": "快捷键",
|
||||
"Contact Us": "联系我们",
|
||||
"Official Website": "官网",
|
||||
"Get in touch!": "Get in touch!",
|
||||
"AFFiNE Community": "AFFiNE Community",
|
||||
"How is AFFiNE Alpha different?": "How is AFFiNE Alpha different?",
|
||||
"Shortcuts": "Shortcuts",
|
||||
"Undo": "Undo",
|
||||
"Redo": "Redo",
|
||||
"Bold": "Bold",
|
||||
"Italic": "Italic",
|
||||
"Underline": "Underline",
|
||||
"Strikethrough": "Strikethrough",
|
||||
"Inline code": "Inline code",
|
||||
"Code block": "Code block",
|
||||
"Link": "Link",
|
||||
"Body text": "Body text",
|
||||
"Heading": "Heading {{number}}",
|
||||
"Increase indent": "Increase indent",
|
||||
"Reduce indent": "Reduce indent",
|
||||
"Markdown Syntax": "Markdown Syntax",
|
||||
"Divider": "Divider",
|
||||
"404 - Page Not Found": "404 - Page Not Found"
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
{}
|
||||
@@ -18,8 +18,8 @@ import { useEffect } from 'react';
|
||||
import { useAppState } from '@/providers/app-state-provider';
|
||||
import { PageLoading } from '@/components/loading';
|
||||
import Head from 'next/head';
|
||||
import '@/libs/i18n';
|
||||
import TemporaryHelperProvider from '@/providers/temporary-helper-provider';
|
||||
import '@affine/i18n';
|
||||
|
||||
const ThemeProvider = dynamic(() => import('@/providers/ThemeProvider'), {
|
||||
ssr: false,
|
||||
|
||||
@@ -4,7 +4,7 @@ import usePageMetaList from '@/hooks/use-page-meta-list';
|
||||
import { PageListHeader } from '@/components/header';
|
||||
import { ReactElement } from 'react';
|
||||
import WorkspaceLayout from '@/components/workspace-layout';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useTranslation } from '@affine/i18n';
|
||||
const All = () => {
|
||||
const pageMetaList = usePageMetaList();
|
||||
const { t } = useTranslation();
|
||||
|
||||
@@ -4,7 +4,7 @@ import { FavouritesIcon } from '@blocksuite/icons';
|
||||
import usePageMetaList from '@/hooks/use-page-meta-list';
|
||||
import { ReactElement } from 'react';
|
||||
import WorkspaceLayout from '@/components/workspace-layout';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useTranslation } from '@affine/i18n';
|
||||
export const Favorite = () => {
|
||||
const pageMetaList = usePageMetaList();
|
||||
const { t } = useTranslation();
|
||||
|
||||
@@ -4,7 +4,7 @@ import { TrashIcon } from '@blocksuite/icons';
|
||||
import usePageMetaList from '@/hooks/use-page-meta-list';
|
||||
import { ReactElement } from 'react';
|
||||
import WorkspaceLayout from '@/components/workspace-layout';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useTranslation } from '@affine/i18n';
|
||||
export const Trash = () => {
|
||||
const pageMetaList = usePageMetaList();
|
||||
const { t } = useTranslation();
|
||||
|
||||
@@ -7,7 +7,7 @@ import {
|
||||
StyledModalWrapper,
|
||||
} from '@/ui/confirm/styles';
|
||||
import { Button } from '@/ui/button';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { useTranslation } from '@affine/i18n';
|
||||
export type ConfirmProps = {
|
||||
title?: string;
|
||||
content?: string;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { describe, test, expect } from 'vitest';
|
||||
import { test, expect } from '@playwright/test';
|
||||
import { isMobile } from '../get-is-mobile';
|
||||
|
||||
describe('get-is-mobile', () => {
|
||||
test.describe('get-is-mobile', () => {
|
||||
test('get-is-mobile', () => {
|
||||
expect(
|
||||
isMobile(
|
||||
|
||||
Reference in New Issue
Block a user