#Element type is invalid

11 messages · Page 1 of 1 (latest)

abstract lion
#

Framework: Nextjs 12 Storybook v7

SideNav.tsx is simple function based component.
This is SideNav.stories.tsx

import LanguageProvider from '@/components/LanguageProvider';

import type { Meta, StoryObj } from '@storybook/react';

import SideNav from './SideNav';

const meta: Meta<typeof SideNav> = { component: SideNav };
export default meta;

type Story = StoryObj<typeof SideNav>;

export const Default: Story = {
  render: () => <SideNav className="sidenav" />,
};
abstract lion
#

still looking for solution

open spindle
#

Does SideNav exist. As in, is the default export in SideNav a component?

abstract lion
#

This is SideNav.tsx

import { translate } from '@/components/IntlGlobalProvider';
import AllOrdersIcon from '@/public/icons/all-orders-icon.svg';
import TripDashboardIcon from '@/public/icons/trip-dashboard.svg';
import type { MenuProps } from 'antd';
import { Menu } from 'antd';
import React from 'react';
import styled from 'styled-components';

const StyledMenu = styled(Menu)`
  display: flex;
  overflow: auto;
  width: 256px;
  max-height: calc(100vh - (48px));
  // to give scroll in sideNav menu after hitting screen height; 48px is header's height
  flex-direction: column;
  gap: 22px;
  font-weight: 700;
  font-size: 14px;
`
const SideNav: React.FC<ISideNav> = ({ className: cName }: ISideNav) => {
  const onClick: MenuProps['onClick'] = (e) => {
    console.log('click ', e);
  };

  const items: MenuProps['items'] = [
    getItem(
      translate('trip_dashboard'),
      'trip_dashboard',
      <TripDashboardIcon />
    ),
      getItem(translate('all_orders'), 'all_orders', <AllOrdersIcon />, [
      getItem(translate('open_orders'), 'open_orders'),
      getItem(translate('dispatched_orders'), 'dispatched_orders'),
      getItem(translate('completed_orders'), 'completed_orders'),

  ];

  return (
    <StyledMenu
      className={cName}
      onClick={onClick}
      style={{ width: 256 }}
      mode="inline"
      items={items}
      subMenuOpenDelay={0.5}
      subMenuCloseDelay={0.5}
      // theme={'dark'}
    />
  );
};

export default SideNav;
dense stirrup
#

Could you try printing SideNav in the story? See if you get the default export, or an object with a default prop? Happens in some stacks

abstract lion
open spindle
#

console.log

dense stirrup
#

Just to check you get your component function and not null or an object with `default

abstract lion
#

FIxed. issue was svg component was not loading. so i had to add webpack rules for svg loaders

#

svgr webpack config (Solution)

webpackFinal: (config) => {
    // Default rule for images /\.(svg|ico|jpg|jpeg|png|gif|eot|otf|webp|ttf|woff|woff2|cur|ani|pdf)(\?.*)?$/
    const fileLoaderRule = config.module.rules.find(
      (rule) => rule.test && rule.test.test('.svg')
    );
    fileLoaderRule.exclude = /\.svg$/;

    config.module.rules.push({
      test: /\.svg$/,
      enforce: 'pre',
      loader: require.resolve('@svgr/webpack'),
    });

    return config;
  },