@eristack/list-shell
Version:
Presentational list page layout, toolbar, and TanStack Query state banners
1 lines • 3.53 kB
Source Map (JSON)
{"version":3,"sources":["../src/index.ts","../src/list-page-layout.tsx","../src/list-toolbar.tsx","../src/query-state-banner.tsx"],"sourcesContent":["export { ListPageLayout, type ListPageLayoutProps } from \"./list-page-layout.js\";\nexport { ListToolbar, type ListToolbarProps } from \"./list-toolbar.js\";\nexport {\n QueryStateBanner,\n type QueryStateBannerProps,\n} from \"./query-state-banner.js\";\n","import type { ReactNode } from \"react\";\n\nexport type ListPageLayoutProps = {\n toolbar?: ReactNode;\n banner?: ReactNode;\n children: ReactNode;\n};\n\nexport function ListPageLayout({ toolbar, banner, children }: ListPageLayoutProps) {\n return (\n <div className=\"erista-list-page\" data-component=\"list-page-layout\">\n {toolbar ? <div className=\"erista-list-page__toolbar\">{toolbar}</div> : null}\n {banner ? <div className=\"erista-list-page__banner\">{banner}</div> : null}\n <div className=\"erista-list-page__body\">{children}</div>\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nexport type ListToolbarProps = {\n leading?: ReactNode;\n trailing?: ReactNode;\n children?: ReactNode;\n};\n\nexport function ListToolbar({ leading, trailing, children }: ListToolbarProps) {\n return (\n <div className=\"erista-list-toolbar\" data-component=\"list-toolbar\">\n {leading ? <div className=\"erista-list-toolbar__leading\">{leading}</div> : null}\n {children ?? null}\n {trailing ? <div className=\"erista-list-toolbar__trailing\">{trailing}</div> : null}\n </div>\n );\n}\n","import type { ReactNode } from \"react\";\n\nexport type QueryStateBannerProps = {\n isLoading?: boolean;\n isError?: boolean;\n isEmpty?: boolean;\n loadingMessage?: ReactNode;\n errorMessage?: ReactNode;\n emptyMessage?: ReactNode;\n};\n\nexport function QueryStateBanner({\n isLoading,\n isError,\n isEmpty,\n loadingMessage = \"Loading…\",\n errorMessage = \"Something went wrong.\",\n emptyMessage = \"No results.\",\n}: QueryStateBannerProps) {\n if (isLoading) {\n return (\n <div className=\"erista-query-banner\" data-state=\"loading\" role=\"status\">\n {loadingMessage}\n </div>\n );\n }\n if (isError) {\n return (\n <div className=\"erista-query-banner\" data-state=\"error\" role=\"alert\">\n {errorMessage}\n </div>\n );\n }\n if (isEmpty) {\n return (\n <div className=\"erista-query-banner\" data-state=\"empty\">\n {emptyMessage}\n </div>\n );\n }\n return null;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACUI;AAFG,SAAS,eAAe,EAAE,SAAS,QAAQ,SAAS,GAAwB;AACjF,SACE,6CAAC,SAAI,WAAU,oBAAmB,kBAAe,oBAC9C;AAAA,cAAU,4CAAC,SAAI,WAAU,6BAA6B,mBAAQ,IAAS;AAAA,IACvE,SAAS,4CAAC,SAAI,WAAU,4BAA4B,kBAAO,IAAS;AAAA,IACrE,4CAAC,SAAI,WAAU,0BAA0B,UAAS;AAAA,KACpD;AAEJ;;;ACNI,IAAAA,sBAAA;AAFG,SAAS,YAAY,EAAE,SAAS,UAAU,SAAS,GAAqB;AAC7E,SACE,8CAAC,SAAI,WAAU,uBAAsB,kBAAe,gBACjD;AAAA,cAAU,6CAAC,SAAI,WAAU,gCAAgC,mBAAQ,IAAS;AAAA,IAC1E,YAAY;AAAA,IACZ,WAAW,6CAAC,SAAI,WAAU,iCAAiC,oBAAS,IAAS;AAAA,KAChF;AAEJ;;;ACKM,IAAAC,sBAAA;AAVC,SAAS,iBAAiB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA,iBAAiB;AAAA,EACjB,eAAe;AAAA,EACf,eAAe;AACjB,GAA0B;AACxB,MAAI,WAAW;AACb,WACE,6CAAC,SAAI,WAAU,uBAAsB,cAAW,WAAU,MAAK,UAC5D,0BACH;AAAA,EAEJ;AACA,MAAI,SAAS;AACX,WACE,6CAAC,SAAI,WAAU,uBAAsB,cAAW,SAAQ,MAAK,SAC1D,wBACH;AAAA,EAEJ;AACA,MAAI,SAAS;AACX,WACE,6CAAC,SAAI,WAAU,uBAAsB,cAAW,SAC7C,wBACH;AAAA,EAEJ;AACA,SAAO;AACT;","names":["import_jsx_runtime","import_jsx_runtime"]}