mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-13 16:16:46 +08:00
9465d0dc73
Closes: [BS-3555](https://linear.app/affine-design/issue/BS-3555/ui-attachment-loading-变量更新) Closes: [BS-3559](https://linear.app/affine-design/issue/BS-3559/ui-图片-loading-变量更新) ### Dark <img width="625" alt="Screenshot 2025-05-26 at 20 32 36" src="https://github.com/user-attachments/assets/93501e3d-8fc6-45f9-84a0-ac147e5c5f9f" /> ### Light <img width="623" alt="Screenshot 2025-05-26 at 20 32 25" src="https://github.com/user-attachments/assets/7d5bc128-6667-45b5-982d-dab3a22706a7" /> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Loading icons are now invoked as functions, allowing for more flexible and customizable rendering with parameters like size and progress. - **Refactor** - Replaced theme-dependent and static loading icon references with a unified `LoadingIcon()` component across multiple components and blocks. - Removed legacy icon variants and simplified icon import statements, centralizing icon rendering logic. - **Style** - Updated styles for loading and reload buttons to use theme-aware CSS variables. - Enlarged and repositioned loading indicators in image blocks for better visibility. - **Bug Fixes** - Achieved consistent loading icon rendering across various blocks and components by standardizing icon invocation. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
103 lines
3.2 KiB
TypeScript
103 lines
3.2 KiB
TypeScript
import {
|
|
EmbedEdgelessIcon,
|
|
EmbedPageIcon,
|
|
} from '@blocksuite/affine-components/icons';
|
|
import {
|
|
ColorScheme,
|
|
type EmbedLinkedDocStyles,
|
|
} from '@blocksuite/affine-model';
|
|
import type { TemplateResult } from 'lit';
|
|
|
|
import {
|
|
DarkSyncedDocErrorBanner,
|
|
LightSyncedDocErrorBanner,
|
|
} from '../embed-synced-doc-block/styles.js';
|
|
import {
|
|
DarkLinkedEdgelessDeletedLargeBanner,
|
|
DarkLinkedEdgelessDeletedSmallBanner,
|
|
DarkLinkedEdgelessEmptyLargeBanner,
|
|
DarkLinkedEdgelessEmptySmallBanner,
|
|
DarkLinkedPageDeletedLargeBanner,
|
|
DarkLinkedPageDeletedSmallBanner,
|
|
DarkLinkedPageEmptyLargeBanner,
|
|
DarkLinkedPageEmptySmallBanner,
|
|
LightLinkedEdgelessDeletedLargeBanner,
|
|
LightLinkedEdgelessDeletedSmallBanner,
|
|
LightLinkedEdgelessEmptyLargeBanner,
|
|
LightLinkedEdgelessEmptySmallBanner,
|
|
LightLinkedPageDeletedLargeBanner,
|
|
LightLinkedPageDeletedSmallBanner,
|
|
LightLinkedPageEmptyLargeBanner,
|
|
LightLinkedPageEmptySmallBanner,
|
|
LinkedDocDeletedIcon,
|
|
} from './styles.js';
|
|
|
|
type EmbedCardImages = {
|
|
LinkedDocIcon: TemplateResult<1>;
|
|
LinkedDocDeletedIcon: TemplateResult<1>;
|
|
LinkedDocEmptyBanner: TemplateResult<1>;
|
|
LinkedDocDeletedBanner: TemplateResult<1>;
|
|
SyncedDocErrorBanner: TemplateResult<1>;
|
|
};
|
|
|
|
export function getEmbedLinkedDocIcons(
|
|
theme: ColorScheme,
|
|
editorMode: 'page' | 'edgeless',
|
|
style: (typeof EmbedLinkedDocStyles)[number]
|
|
): EmbedCardImages {
|
|
const small = style !== 'vertical';
|
|
if (editorMode === 'page') {
|
|
if (theme === ColorScheme.Light) {
|
|
return {
|
|
LinkedDocIcon: EmbedPageIcon,
|
|
LinkedDocDeletedIcon,
|
|
LinkedDocEmptyBanner: small
|
|
? LightLinkedPageEmptySmallBanner
|
|
: LightLinkedPageEmptyLargeBanner,
|
|
LinkedDocDeletedBanner: small
|
|
? LightLinkedPageDeletedSmallBanner
|
|
: LightLinkedPageDeletedLargeBanner,
|
|
SyncedDocErrorBanner: LightSyncedDocErrorBanner,
|
|
};
|
|
} else {
|
|
return {
|
|
LinkedDocIcon: EmbedPageIcon,
|
|
LinkedDocDeletedIcon,
|
|
LinkedDocEmptyBanner: small
|
|
? DarkLinkedPageEmptySmallBanner
|
|
: DarkLinkedPageEmptyLargeBanner,
|
|
LinkedDocDeletedBanner: small
|
|
? DarkLinkedPageDeletedSmallBanner
|
|
: DarkLinkedPageDeletedLargeBanner,
|
|
SyncedDocErrorBanner: DarkSyncedDocErrorBanner,
|
|
};
|
|
}
|
|
} else {
|
|
if (theme === ColorScheme.Light) {
|
|
return {
|
|
LinkedDocIcon: EmbedEdgelessIcon,
|
|
LinkedDocDeletedIcon,
|
|
LinkedDocEmptyBanner: small
|
|
? LightLinkedEdgelessEmptySmallBanner
|
|
: LightLinkedEdgelessEmptyLargeBanner,
|
|
LinkedDocDeletedBanner: small
|
|
? LightLinkedEdgelessDeletedSmallBanner
|
|
: LightLinkedEdgelessDeletedLargeBanner,
|
|
SyncedDocErrorBanner: LightSyncedDocErrorBanner,
|
|
};
|
|
} else {
|
|
return {
|
|
LinkedDocIcon: EmbedEdgelessIcon,
|
|
LinkedDocDeletedIcon,
|
|
LinkedDocEmptyBanner: small
|
|
? DarkLinkedEdgelessEmptySmallBanner
|
|
: DarkLinkedEdgelessEmptyLargeBanner,
|
|
LinkedDocDeletedBanner: small
|
|
? DarkLinkedEdgelessDeletedSmallBanner
|
|
: DarkLinkedEdgelessDeletedLargeBanner,
|
|
SyncedDocErrorBanner: DarkSyncedDocErrorBanner,
|
|
};
|
|
}
|
|
}
|
|
}
|