Files
AFFiNE-Mirror/packages/frontend/component/src/ui/icon-picker/renderer.tsx
Cats Juice d272c4342d feat(core): replace emoji-mart with affine icon picker (#13644)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- New Features
  - Unified icon picker with consistent rendering across the app.
  - Picker can auto-close after selection.
  - “Remove” now clears the icon selection.

- Refactor
- Icon handling consolidated across editors, navigation, and document
titles for consistent behavior.
  - Picker now opens on the Emoji panel by default.

- Style
  - Adjusted line-height and selectors for icon picker visuals.

- Chores
  - Removed unused emoji-mart dependencies.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-09-26 06:41:29 +00:00

30 lines
637 B
TypeScript

import type { ReactNode } from 'react';
import { AffineIconRenderer } from './renderer/affine-icon';
import { type IconData, IconType } from './type';
export const IconRenderer = ({
data,
fallback,
}: {
data?: IconData;
fallback?: ReactNode;
}) => {
if (!data) {
return fallback ?? null;
}
if (data.type === IconType.Emoji && data.unicode) {
return data.unicode;
}
if (data.type === IconType.AffineIcon && data.name) {
return <AffineIconRenderer name={data.name} color={data.color} />;
}
if (data.type === IconType.Blob) {
// Not supported yet
return null;
}
return fallback ?? null;
};