import type { Meta, StoryObj } from "@storybook/react"; import { AdminContext, List, defaultI18nProvider, Resource, TextInput, useListContext, ListBase, } from "react-admin"; import { generatorProp, topLevel } from "@amplicode/storybook-extensions"; import { Card } from "@mui/material"; import { delayDataProvider } from "../../../dataProvider"; import { resourceName } from "../../../ideExtension"; const defaultDecorator = (Story: () => JSX.Element) => ( ); const meta = { title: "Pages/Lists/Base", component: List as any, decorators: [(Story) => defaultDecorator(Story)], args: {}, argTypes: { perPage: { control: "select", description: "Items per page", options: [5, 10, 20], }, filters: generatorProp({ description: "The filters to display in the toolbar.", generatorId: "amplicode.reactAdmin.filtersGenerator", hideInStoryBook: true, defaultValue: [], }), disableAuthentication: { control: "boolean", }, disableSyncWithLocation: { control: "boolean", }, sort: { control: "text", }, filter: { control: "text", }, queryOptions: { control: "text", }, }, } satisfies Meta; export default meta; type Story = StoryObj; export const Default: Story = { render: ({ resource, ...props }) => { const CustomList = topLevel(() => { const { data, isLoading, error } = useListContext(); if (isLoading) return <>Loading; if (error) return <>{error.message}; if (!data || data.length === 0) return <>No data; return ( <> Users
    {data?.map((item) => (
  • {item.name}
  • ))}
); }); return ( ); }, args: { resource: resourceName("users"), }, };