Next.js Discord

Discord Forum

Icon in Server Component

Unanswered
Scaly-naped Pigeon posted this in #help-forum
Open in Discord
Scaly-naped PigeonOP
import Link from 'next/link';
import PaddingWrapper from '@/shared/components/PaddingWrapper';
import Icon from '@/shared/components/icons';

const HomeLogoSection = () => (
  <PaddingWrapper className="pt-[10px] pb-[0px] bg-white">
    <h1>
      <Link href="/">
        <Icon.Bbangle shape="horizontal-name" />
      </Link>
    </h1>
  </PaddingWrapper>
);

export default HomeLogoSection;


'use client';

import Plus from '@public/assets/icons/plus.svg';
import Close from '@public/assets/icons/btn-remove.svg';
import Heart from './HeartIcon';
import Bbangle from './BbangleIcon';

const Icon = {
  Plus,
  Close,
  Heart,
  Bbangle
};

export default Icon;



'use client';

import BbangleSmileIcon from '@public/assets/icons/bbangle-smile.svg';
import BbangleCryIcon from '@public/assets/icons/bbangle-cry.svg';
import BbanglVerticalNameIcon from '@public/assets/icons/bbangle-vertical-name.svg';
import BbangleHorizontalNameIcon from '@public/assets/icons/bbangle-horizontal-name.svg';

interface Props {
  shape: 'vertical-name' | 'horizontal-name' | 'smile' | 'cry';
  className?: string;
}

const BbangleIcon = ({ shape, className }: Props) => {
  switch (shape) {
    case 'vertical-name':
      return <BbanglVerticalNameIcon />;
    case 'horizontal-name':
      return <BbangleHorizontalNameIcon />;
    case 'smile':
      return <BbangleSmileIcon className={className} />;
    case 'cry':
      return <BbangleCryIcon />;
    default:
      return <BbangleSmileIcon />;
  }
};

export default BbangleIcon;


why next throw error when i import svg icons
I use svgr

3 Replies

Did you export Icon?
Scaly-naped PigeonOP
yes!
export default Icon
https://github.com/vercel/next.js/discussions/45347

Looks like there are issues when using compound components.