@xyo-network/react-webapp 2.78.0 → 2.78.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/Body.tsx","../../src/components/lib/cssValues.ts","../../src/components/Chrome.tsx","../../src/components/ErrorPage.tsx","../../src/components/Page.tsx","../../src/components/NotFoundPage/Page.tsx"],"sourcesContent":["import { Breakpoint, styled } from '@mui/material'\nimport { FlexBoxProps, FlexGrowCol, FlexRow } from '@xylabs/react-flexbox'\nimport React, { ReactNode } from 'react'\n\nimport { fixedContent, scrollableContent } from './lib'\n\nconst WebAppBodyName = 'WebAppBody'\nconst propsNotForwarded = new Set(['mobileScrollingBreakpoint', 'variant', 'spacing', 'disableBreadcrumbGutter'])\nconst defaultStyledOptions = {\n shouldForwardProp: (prop: string) => !propsNotForwarded.has(prop),\n}\n\nconst WebAppBodyRoot = styled(FlexGrowCol, {\n ...defaultStyledOptions,\n name: WebAppBodyName,\n slot: 'Root',\n})<WebAppBodyProps>(({ spacing, theme, mobileScrollingBreakpoint = 'sm', variant }) => {\n const scrollable = variant === 'scrollable'\n return theme.unstable_sx({\n alignItems: 'stretch',\n gap: 1,\n justifyContent: 'flex-start',\n overflowX: 'visible',\n overflowY: scrollable ? 'scroll' : 'hidden',\n paddingY: spacing,\n [theme.breakpoints.down(mobileScrollingBreakpoint)]: {\n overflowY: 'scroll',\n },\n })\n})\n\nconst WebAppBodyBreadcrumb = styled(FlexRow, {\n ...defaultStyledOptions,\n name: WebAppBodyName,\n slot: 'Breadcrumb',\n})<WebAppBodyProps>(({ theme, disableBreadcrumbGutter, spacing }) =>\n theme.unstable_sx({\n justifyContent: 'start',\n marginX: disableBreadcrumbGutter ? 0 : spacing,\n }),\n)\n\nconst WebAppBodyScrollableWrapper = styled(FlexGrowCol, {\n name: WebAppBodyName,\n slot: 'ScrollableWrapper',\n})<WebAppBodyProps>(() => ({\n alignItems: 'stretch',\n}))\n\nconst WebAppBodyScrollable = styled(FlexGrowCol, {\n ...defaultStyledOptions,\n name: WebAppBodyName,\n slot: 'Scrollable',\n})<WebAppBodyProps>(({ theme, mobileScrollingBreakpoint = 'sm', variant }) => {\n const props = variant === 'scrollable' ? scrollableContent : fixedContent\n return {\n ...props,\n alignItems: 'stretch',\n justifyContent: 'start',\n [theme.breakpoints.down(mobileScrollingBreakpoint)]: {\n inset: 'unset',\n position: 'relative',\n },\n }\n})\n\nexport interface WebAppBodyProps extends FlexBoxProps {\n breadcrumbs?: ReactNode\n disableBreadcrumbGutter?: boolean\n mobileScrollingBreakpoint?: Breakpoint\n spacing?: string | number\n variant?: 'scrollable' | 'fixed'\n}\n\nexport const WebAppBody: React.FC<WebAppBodyProps> = ({\n children,\n breadcrumbs,\n disableBreadcrumbGutter,\n mobileScrollingBreakpoint,\n spacing = 1,\n variant,\n ...props\n}) => {\n return (\n <WebAppBodyRoot mobileScrollingBreakpoint={mobileScrollingBreakpoint} spacing={spacing} variant={variant} {...props}>\n {breadcrumbs ?\n <WebAppBodyBreadcrumb disableBreadcrumbGutter={disableBreadcrumbGutter} spacing={spacing}>\n {breadcrumbs}\n </WebAppBodyBreadcrumb>\n : null}\n <WebAppBodyScrollableWrapper>\n <WebAppBodyScrollable mobileScrollingBreakpoint={mobileScrollingBreakpoint} variant={variant}>\n {children}\n </WebAppBodyScrollable>\n </WebAppBodyScrollableWrapper>\n </WebAppBodyRoot>\n )\n}\n","import { CSSProperties } from 'react'\n\nexport const scrollableWrap: CSSProperties = {\n inset: 0,\n position: 'absolute',\n} as const\n\nexport const fixedWrap: CSSProperties = {\n inset: 'unset',\n position: 'relative',\n} as const\n\n// Making a scrollable vs fixed wrapper and content is an inversion of the wrap and content styles\nexport const scrollableContent: CSSProperties = {\n ...fixedWrap,\n} as const\n\nexport const fixedContent: CSSProperties = {\n ...scrollableWrap,\n} as const\n","import { Divider, Paper } from '@mui/material'\nimport { FlexBoxProps, FlexCol, FlexGrowCol, FlexGrowRow } from '@xylabs/react-flexbox'\nimport { WebAppNavigationType } from '@xyo-network/react-app-settings'\nimport { ApplicationAppBar, SystemToolbar } from '@xyo-network/react-appbar'\nimport { Footer } from '@xyo-network/react-footer'\nimport { ErrorBoundary } from '@xyo-network/react-shared'\nimport { forwardRef, ReactNode } from 'react'\nimport { Helmet } from 'react-helmet'\n\nimport { WebAppErrorPage } from './ErrorPage'\n\nexport interface WebAppChromeProps extends FlexBoxProps {\n appName: string\n appbar?: ReactNode\n errorBoundary?: boolean\n errorPage?: ReactNode\n footer?: ReactNode\n footerElevation?: number\n menuItems?: ReactNode\n navigationType?: WebAppNavigationType\n}\n\nexport const WebAppChrome = forwardRef<HTMLDivElement, WebAppChromeProps>(\n ({ appName, appbar, children, errorBoundary, errorPage, footer, footerElevation = 4, menuItems, navigationType = 'menu', ...props }, ref) => {\n return (\n <FlexCol id=\"web-chrome-flex\" alignItems=\"stretch\" overflow=\"hidden\" height=\"100vh\" ref={ref} {...props}>\n <Helmet defaultTitle={appName} titleTemplate={`%s | ${appName}`}>\n <meta content=\"website\" property=\"og:type\" />\n </Helmet>\n {appbar ?? <ApplicationAppBar systemToolbar={<SystemToolbar menuItems={navigationType === 'menu' ? menuItems : undefined} />} />}\n <FlexGrowRow id=\"sidebar-nav-flex\" overflow=\"hidden\" alignItems=\"stretch\">\n {navigationType === 'menu' ? null : (\n <>\n {menuItems}\n <Divider orientation=\"vertical\" />\n </>\n )}\n <FlexGrowCol id=\"main-flex\" justifyContent=\"flex-start\" alignItems=\"stretch\">\n {errorBoundary ?\n <ErrorBoundary\n fallbackWithError={(error) => {\n return errorPage ?? <WebAppErrorPage error={error} />\n }}\n >\n {children}\n </ErrorBoundary>\n : children}\n </FlexGrowCol>\n </FlexGrowRow>\n <FlexCol id=\"footer-flex\" alignItems=\"stretch\">\n <Paper elevation={footerElevation} square>\n {footer ?? <Footer dynamicHeight />}\n </Paper>\n </FlexCol>\n </FlexCol>\n )\n },\n)\n\nWebAppChrome.displayName = 'WebAppChrome'\n","import { ButtonEx } from '@xylabs/react-button'\n\nimport { WebAppPage, WebAppPageProps } from './Page'\n\nexport interface WebAppErrorPageProps extends WebAppPageProps {\n error?: Error\n}\n\nexport const WebAppErrorPage: React.FC<WebAppErrorPageProps> = ({ error, ...props }) => (\n <WebAppPage title=\"Oops! Something went wrong\" {...props}>\n <h1>Oops! Something went wrong!</h1>\n <p>{`${error}`}</p>\n <ButtonEx href=\"/\" variant=\"contained\">\n Homepage\n </ButtonEx>\n </WebAppPage>\n)\n\n/** @deprecated use WebAppErrorPage instead */\nexport const ErrorPage = WebAppErrorPage\n","import { Container, ContainerProps, styled } from '@mui/material'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { FlexBoxProps, FlexGrowCol } from '@xylabs/react-flexbox'\nimport { useUserEvents } from '@xylabs/react-pixel'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { Helmet } from 'react-helmet'\nimport { useLocation } from 'react-router-dom'\n\nimport { WebAppBody, WebAppBodyProps } from './Body'\nimport { fixedWrap, scrollableWrap } from './lib'\n\nconst WebAppPageRoot = styled(FlexGrowCol, {\n name: 'WebAppPage',\n shouldForwardProp: (propName) => propName !== 'mobileScrollingBreakpoint' && propName !== 'variant',\n slot: 'Root',\n})<WebAppPageProps>(({ theme, mobileScrollingBreakpoint = 'sm', variant }) => {\n const props = variant === 'scrollable' ? scrollableWrap : fixedWrap\n return {\n ...props,\n alignItems: 'stretch',\n justifyContent: 'start',\n maxWidth: '100vw',\n [theme.breakpoints.down(mobileScrollingBreakpoint)]: {\n inset: 0,\n position: 'absolute',\n },\n }\n})\n\nexport interface WebAppPageProps extends WebAppBodyProps, FlexBoxProps {\n container?: ContainerProps['maxWidth'] | 'none'\n disableGutters?: boolean\n}\n\nexport const WebAppPage: React.FC<WithChildren<WebAppPageProps>> = ({\n disableGutters,\n disableBreadcrumbGutter,\n title,\n container,\n children,\n breadcrumbs,\n mobileScrollingBreakpoint,\n variant = 'scrollable',\n ...props\n}) => {\n const userEvents = useUserEvents()\n const { pathname } = useLocation()\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async () => {\n await userEvents?.viewContent({ name: title ?? 'NodeBasePage', path: location.pathname })\n },\n [pathname, title, userEvents],\n )\n\n return (\n <WebAppPageRoot mobileScrollingBreakpoint={mobileScrollingBreakpoint} variant={variant} {...props}>\n <Helmet title={title} />\n {container && container !== 'none' ?\n <Container\n disableGutters={disableGutters}\n style={{ alignItems: 'stretch', display: 'flex', flexDirection: 'column', flexGrow: 1, justifyContent: 'flex-start' }}\n maxWidth={container}\n >\n <WebAppBody\n disableBreadcrumbGutter={disableBreadcrumbGutter}\n breadcrumbs={breadcrumbs}\n mobileScrollingBreakpoint={mobileScrollingBreakpoint}\n variant={variant}\n {...props}\n >\n {children}\n </WebAppBody>\n </Container>\n : <WebAppBody\n disableBreadcrumbGutter={disableBreadcrumbGutter}\n breadcrumbs={breadcrumbs}\n mobileScrollingBreakpoint={mobileScrollingBreakpoint}\n paddingX={disableGutters ? 0 : 1}\n variant={variant}\n {...props}\n >\n {children}\n </WebAppBody>\n }\n </WebAppPageRoot>\n )\n}\n\n/** @deprecated use WebAppPagePage instead */\nexport const FlexPage = WebAppPage\n","import { NotFound } from '@xyo-network/react-shared'\n\nimport { WebAppPage, WebAppPageProps } from '../Page'\n\nexport const WebAppNotFoundPage: React.FC<WebAppPageProps> = ({ title, ...props }) => (\n <WebAppPage title={title ?? 'Sorry! Page Not Found'} {...props}>\n <NotFound />\n </WebAppPage>\n)\n\n/** @deprecated use WebAppNotFoundPage instead */\nexport const NotFoundPage = WebAppNotFoundPage\n"],"mappings":"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","names":["styled","FlexGrowCol","FlexRow","scrollableWrap","fixedWrap","scrollableContent","fixedContent","jsx","jsxs","WebAppBodyName","propsNotForwarded","defaultStyledOptions","prop","WebAppBodyRoot","styled","FlexGrowCol","spacing","theme","mobileScrollingBreakpoint","variant","scrollable","WebAppBodyBreadcrumb","FlexRow","disableBreadcrumbGutter","WebAppBodyScrollableWrapper","WebAppBodyScrollable","scrollableContent","fixedContent","WebAppBody","children","breadcrumbs","props","Divider","Paper","FlexCol","FlexGrowCol","FlexGrowRow","ApplicationAppBar","SystemToolbar","Footer","ErrorBoundary","forwardRef","Helmet","ButtonEx","Container","styled","useAsyncEffect","FlexGrowCol","useUserEvents","Helmet","useLocation","jsx","jsxs","WebAppPageRoot","styled","FlexGrowCol","propName","theme","mobileScrollingBreakpoint","variant","scrollableWrap","fixedWrap","WebAppPage","disableGutters","disableBreadcrumbGutter","title","container","children","breadcrumbs","props","userEvents","useUserEvents","pathname","useLocation","useAsyncEffect","Helmet","Container","WebAppBody","FlexPage","jsx","jsxs","WebAppErrorPage","error","props","WebAppPage","ButtonEx","ErrorPage","Fragment","jsx","jsxs","WebAppChrome","forwardRef","appName","appbar","children","errorBoundary","errorPage","footer","footerElevation","menuItems","navigationType","props","ref","FlexCol","Helmet","ApplicationAppBar","SystemToolbar","FlexGrowRow","Divider","FlexGrowCol","ErrorBoundary","error","WebAppErrorPage","Paper","Footer","NotFound","jsx","WebAppNotFoundPage","title","props","WebAppPage","NotFound","NotFoundPage"]}
1
+ {"version":3,"sources":["../../src/components/Body.tsx","../../src/components/lib/cssValues.ts","../../src/components/Chrome.tsx","../../src/components/ErrorPage.tsx","../../src/components/Page.tsx","../../src/components/NotFoundPage/Page.tsx"],"sourcesContent":["import { Breakpoint, styled } from '@mui/material'\nimport { FlexBoxProps, FlexGrowCol, FlexRow } from '@xylabs/react-flexbox'\nimport React, { ReactNode } from 'react'\n\nimport { fixedContent, scrollableContent } from './lib'\n\nconst WebAppBodyName = 'WebAppBody'\nconst propsNotForwarded = new Set(['mobileScrollingBreakpoint', 'variant', 'spacing', 'disableBreadcrumbGutter'])\nconst defaultStyledOptions = {\n shouldForwardProp: (prop: string) => !propsNotForwarded.has(prop),\n}\n\nconst WebAppBodyRoot = styled(FlexGrowCol, {\n ...defaultStyledOptions,\n name: WebAppBodyName,\n slot: 'Root',\n})<WebAppBodyProps>(({ spacing, theme, mobileScrollingBreakpoint = 'sm', variant }) => {\n const scrollable = variant === 'scrollable'\n return theme.unstable_sx({\n alignItems: 'stretch',\n gap: 1,\n justifyContent: 'flex-start',\n overflowX: 'visible',\n overflowY: scrollable ? 'scroll' : 'hidden',\n paddingY: spacing,\n [theme.breakpoints.down(mobileScrollingBreakpoint)]: {\n overflowY: 'scroll',\n },\n })\n})\n\nconst WebAppBodyBreadcrumb = styled(FlexRow, {\n ...defaultStyledOptions,\n name: WebAppBodyName,\n slot: 'Breadcrumb',\n})<WebAppBodyProps>(({ theme, disableBreadcrumbGutter, spacing }) =>\n theme.unstable_sx({\n justifyContent: 'start',\n marginX: disableBreadcrumbGutter ? 0 : spacing,\n }),\n)\n\nconst WebAppBodyScrollableWrapper = styled(FlexGrowCol, {\n name: WebAppBodyName,\n slot: 'ScrollableWrapper',\n})<WebAppBodyProps>(() => ({\n alignItems: 'stretch',\n}))\n\nconst WebAppBodyScrollable = styled(FlexGrowCol, {\n ...defaultStyledOptions,\n name: WebAppBodyName,\n slot: 'Scrollable',\n})<WebAppBodyProps>(({ theme, mobileScrollingBreakpoint = 'sm', variant }) => {\n const props = variant === 'scrollable' ? scrollableContent : fixedContent\n return {\n ...props,\n alignItems: 'stretch',\n justifyContent: 'start',\n [theme.breakpoints.down(mobileScrollingBreakpoint)]: {\n inset: 'unset',\n position: 'relative',\n },\n }\n})\n\nexport interface WebAppBodyProps extends FlexBoxProps {\n breadcrumbs?: ReactNode\n disableBreadcrumbGutter?: boolean\n mobileScrollingBreakpoint?: Breakpoint\n spacing?: string | number\n variant?: 'scrollable' | 'fixed'\n}\n\nexport const WebAppBody: React.FC<WebAppBodyProps> = ({\n children,\n breadcrumbs,\n disableBreadcrumbGutter,\n mobileScrollingBreakpoint,\n spacing = 1,\n variant,\n ...props\n}) => {\n return (\n <WebAppBodyRoot mobileScrollingBreakpoint={mobileScrollingBreakpoint} spacing={spacing} variant={variant} {...props}>\n {breadcrumbs ?\n <WebAppBodyBreadcrumb disableBreadcrumbGutter={disableBreadcrumbGutter} spacing={spacing}>\n {breadcrumbs}\n </WebAppBodyBreadcrumb>\n : null}\n <WebAppBodyScrollableWrapper>\n <WebAppBodyScrollable mobileScrollingBreakpoint={mobileScrollingBreakpoint} variant={variant}>\n {children}\n </WebAppBodyScrollable>\n </WebAppBodyScrollableWrapper>\n </WebAppBodyRoot>\n )\n}\n","import { CSSProperties } from 'react'\n\nexport const scrollableWrap: CSSProperties = {\n inset: 0,\n position: 'absolute',\n} as const\n\nexport const fixedWrap: CSSProperties = {\n inset: 'unset',\n position: 'relative',\n} as const\n\n// Making a scrollable vs fixed wrapper and content is an inversion of the wrap and content styles\nexport const scrollableContent: CSSProperties = {\n ...fixedWrap,\n} as const\n\nexport const fixedContent: CSSProperties = {\n ...scrollableWrap,\n} as const\n","import { Divider, Paper } from '@mui/material'\nimport { FlexBoxProps, FlexCol, FlexGrowCol, FlexGrowRow } from '@xylabs/react-flexbox'\nimport { WebAppNavigationType } from '@xyo-network/react-app-settings'\nimport { ApplicationAppBar, SystemToolbar } from '@xyo-network/react-appbar'\nimport { Footer } from '@xyo-network/react-footer'\nimport { ErrorBoundary } from '@xyo-network/react-shared'\nimport { forwardRef, ReactNode } from 'react'\nimport { Helmet } from 'react-helmet'\n\nimport { WebAppErrorPage } from './ErrorPage'\n\nexport interface WebAppChromeProps extends FlexBoxProps {\n appName: string\n appbar?: ReactNode\n errorBoundary?: boolean\n errorPage?: ReactNode\n footer?: ReactNode\n footerElevation?: number\n menuItems?: ReactNode\n navigationType?: WebAppNavigationType\n}\n\nexport const WebAppChrome = forwardRef<HTMLDivElement, WebAppChromeProps>(\n ({ appName, appbar, children, errorBoundary, errorPage, footer, footerElevation = 4, menuItems, navigationType = 'menu', ...props }, ref) => {\n return (\n <FlexCol id=\"web-chrome-flex\" alignItems=\"stretch\" overflow=\"hidden\" height=\"100vh\" ref={ref} {...props}>\n <Helmet defaultTitle={appName} titleTemplate={`%s | ${appName}`}>\n <meta content=\"website\" property=\"og:type\" />\n </Helmet>\n {appbar ?? <ApplicationAppBar systemToolbar={<SystemToolbar menuItems={navigationType === 'menu' ? menuItems : undefined} />} />}\n <FlexGrowRow id=\"sidebar-nav-flex\" overflow=\"hidden\" alignItems=\"stretch\">\n {navigationType === 'menu' ? null : (\n <>\n {menuItems}\n <Divider orientation=\"vertical\" />\n </>\n )}\n <FlexGrowCol id=\"main-flex\" justifyContent=\"flex-start\" alignItems=\"stretch\">\n {errorBoundary ?\n <ErrorBoundary\n fallbackWithError={(error) => {\n return errorPage ?? <WebAppErrorPage error={error} />\n }}\n >\n {children}\n </ErrorBoundary>\n : children}\n </FlexGrowCol>\n </FlexGrowRow>\n <FlexCol id=\"footer-flex\" alignItems=\"stretch\">\n <Paper elevation={footerElevation} square>\n {footer ?? <Footer dynamicHeight />}\n </Paper>\n </FlexCol>\n </FlexCol>\n )\n },\n)\n\nWebAppChrome.displayName = 'WebAppChrome'\n","import { ButtonEx } from '@xylabs/react-button'\n\nimport { WebAppPage, WebAppPageProps } from './Page'\n\nexport interface WebAppErrorPageProps extends WebAppPageProps {\n error?: Error\n}\n\nexport const WebAppErrorPage: React.FC<WebAppErrorPageProps> = ({ error, ...props }) => (\n <WebAppPage title=\"Oops! Something went wrong\" {...props}>\n <h1>Oops! Something went wrong!</h1>\n <p>{`${error}`}</p>\n <ButtonEx href=\"/\" variant=\"contained\">\n Homepage\n </ButtonEx>\n </WebAppPage>\n)\n\n/** @deprecated use WebAppErrorPage instead */\nexport const ErrorPage = WebAppErrorPage\n","import { Container, ContainerProps, styled } from '@mui/material'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { FlexBoxProps, FlexGrowCol } from '@xylabs/react-flexbox'\nimport { useUserEvents } from '@xylabs/react-pixel'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { Helmet } from 'react-helmet'\nimport { useLocation } from 'react-router-dom'\n\nimport { WebAppBody, WebAppBodyProps } from './Body'\nimport { fixedWrap, scrollableWrap } from './lib'\n\nconst WebAppPageRoot = styled(FlexGrowCol, {\n name: 'WebAppPage',\n shouldForwardProp: (propName) => propName !== 'mobileScrollingBreakpoint' && propName !== 'variant',\n slot: 'Root',\n})<WebAppPageProps>(({ theme, mobileScrollingBreakpoint = 'sm', variant }) => {\n const props = variant === 'scrollable' ? scrollableWrap : fixedWrap\n return {\n ...props,\n alignItems: 'stretch',\n justifyContent: 'start',\n maxWidth: '100vw',\n [theme.breakpoints.down(mobileScrollingBreakpoint)]: {\n inset: 0,\n position: 'absolute',\n },\n }\n})\n\nexport interface WebAppPageProps extends WebAppBodyProps, FlexBoxProps {\n container?: ContainerProps['maxWidth'] | 'none'\n disableGutters?: boolean\n}\n\nexport const WebAppPage: React.FC<WithChildren<WebAppPageProps>> = ({\n disableGutters,\n disableBreadcrumbGutter,\n title,\n container,\n children,\n breadcrumbs,\n mobileScrollingBreakpoint,\n variant = 'scrollable',\n ...props\n}) => {\n const userEvents = useUserEvents()\n const { pathname } = useLocation()\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async () => {\n await userEvents?.viewContent({ name: title ?? 'NodeBasePage', path: location.pathname })\n },\n [pathname, title, userEvents],\n )\n\n return (\n <WebAppPageRoot mobileScrollingBreakpoint={mobileScrollingBreakpoint} variant={variant} {...props}>\n <Helmet title={title} />\n {container && container !== 'none' ?\n <Container\n disableGutters={disableGutters}\n style={{ alignItems: 'stretch', display: 'flex', flexDirection: 'column', flexGrow: 1, justifyContent: 'flex-start' }}\n maxWidth={container}\n >\n <WebAppBody\n disableBreadcrumbGutter={disableBreadcrumbGutter}\n breadcrumbs={breadcrumbs}\n mobileScrollingBreakpoint={mobileScrollingBreakpoint}\n variant={variant}\n {...props}\n >\n {children}\n </WebAppBody>\n </Container>\n : <WebAppBody\n disableBreadcrumbGutter={disableBreadcrumbGutter}\n breadcrumbs={breadcrumbs}\n mobileScrollingBreakpoint={mobileScrollingBreakpoint}\n paddingX={disableGutters ? 0 : 1}\n variant={variant}\n {...props}\n >\n {children}\n </WebAppBody>\n }\n </WebAppPageRoot>\n )\n}\n\n/** @deprecated use WebAppPagePage instead */\nexport const FlexPage = WebAppPage\n","import { NotFound } from '@xyo-network/react-shared'\n\nimport { WebAppPage, WebAppPageProps } from '../Page'\n\nexport const WebAppNotFoundPage: React.FC<WebAppPageProps> = ({ title, ...props }) => (\n <WebAppPage title={title ?? 'Sorry! Page Not Found'} {...props}>\n <NotFound />\n </WebAppPage>\n)\n\n/** @deprecated use WebAppNotFoundPage instead */\nexport const NotFoundPage = WebAppNotFoundPage\n"],"mappings":"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","names":["FlexGrowCol","Helmet","styled","FlexGrowCol","jsx","jsxs","styled","FlexGrowCol","jsx","jsxs","jsx","jsxs","Helmet","FlexGrowCol","jsx"]}
@@ -1,2 +1,261 @@
1
- "use strict";var w=Object.defineProperty;var M=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var z=Object.prototype.hasOwnProperty;var J=(e,o)=>{for(var r in o)w(e,r,{get:o[r],enumerable:!0})},K=(e,o,r,p)=>{if(o&&typeof o=="object"||typeof o=="function")for(let a of U(o))!z.call(e,a)&&a!==r&&w(e,a,{get:()=>o[a],enumerable:!(p=M(o,a))||p.enumerable});return e};var Q=e=>K(w({},"__esModule",{value:!0}),e);var se={};J(se,{ErrorPage:()=>ae,FlexPage:()=>pe,NotFoundPage:()=>ne,WebAppBody:()=>u,WebAppChrome:()=>_,WebAppErrorPage:()=>B,WebAppNotFoundPage:()=>j,WebAppPage:()=>f});module.exports=Q(se);var x=require("@mui/material"),c=require("@xylabs/react-flexbox");var F={inset:0,position:"absolute"},v={inset:"unset",position:"relative"},E={...v},N={...F};var d=require("react/jsx-runtime"),g="WebAppBody",V=new Set(["mobileScrollingBreakpoint","variant","spacing","disableBreadcrumbGutter"]),S={shouldForwardProp:e=>!V.has(e)},Z=(0,x.styled)(c.FlexGrowCol,{...S,name:g,slot:"Root"})(({spacing:e,theme:o,mobileScrollingBreakpoint:r="sm",variant:p})=>{let a=p==="scrollable";return o.unstable_sx({alignItems:"stretch",gap:1,justifyContent:"flex-start",overflowX:"visible",overflowY:a?"scroll":"hidden",paddingY:e,[o.breakpoints.down(r)]:{overflowY:"scroll"}})}),ee=(0,x.styled)(c.FlexRow,{...S,name:g,slot:"Breadcrumb"})(({theme:e,disableBreadcrumbGutter:o,spacing:r})=>e.unstable_sx({justifyContent:"start",marginX:o?0:r})),oe=(0,x.styled)(c.FlexGrowCol,{name:g,slot:"ScrollableWrapper"})(()=>({alignItems:"stretch"})),re=(0,x.styled)(c.FlexGrowCol,{...S,name:g,slot:"Scrollable"})(({theme:e,mobileScrollingBreakpoint:o="sm",variant:r})=>({...r==="scrollable"?E:N,alignItems:"stretch",justifyContent:"start",[e.breakpoints.down(o)]:{inset:"unset",position:"relative"}})),u=({children:e,breadcrumbs:o,disableBreadcrumbGutter:r,mobileScrollingBreakpoint:p,spacing:a=1,variant:n,...s})=>(0,d.jsxs)(Z,{mobileScrollingBreakpoint:p,spacing:a,variant:n,...s,children:[o?(0,d.jsx)(ee,{disableBreadcrumbGutter:r,spacing:a,children:o}):null,(0,d.jsx)(oe,{children:(0,d.jsx)(re,{mobileScrollingBreakpoint:p,variant:n,children:e})})]});var y=require("@mui/material"),i=require("@xylabs/react-flexbox"),h=require("@xyo-network/react-appbar"),O=require("@xyo-network/react-footer"),X=require("@xyo-network/react-shared"),Y=require("react"),L=require("react-helmet");var D=require("@xylabs/react-button");var A=require("@mui/material"),G=require("@xylabs/react-async-effect"),k=require("@xylabs/react-flexbox"),I=require("@xylabs/react-pixel"),T=require("react-helmet"),H=require("react-router-dom");var l=require("react/jsx-runtime"),te=(0,A.styled)(k.FlexGrowCol,{name:"WebAppPage",shouldForwardProp:e=>e!=="mobileScrollingBreakpoint"&&e!=="variant",slot:"Root"})(({theme:e,mobileScrollingBreakpoint:o="sm",variant:r})=>({...r==="scrollable"?F:v,alignItems:"stretch",justifyContent:"start",maxWidth:"100vw",[e.breakpoints.down(o)]:{inset:0,position:"absolute"}})),f=({disableGutters:e,disableBreadcrumbGutter:o,title:r,container:p,children:a,breadcrumbs:n,mobileScrollingBreakpoint:s,variant:m="scrollable",...b})=>{let W=(0,I.useUserEvents)(),{pathname:C}=(0,H.useLocation)();return(0,G.useAsyncEffect)(async()=>{await W?.viewContent({name:r??"NodeBasePage",path:location.pathname})},[C,r,W]),(0,l.jsxs)(te,{mobileScrollingBreakpoint:s,variant:m,...b,children:[(0,l.jsx)(T.Helmet,{title:r}),p&&p!=="none"?(0,l.jsx)(A.Container,{disableGutters:e,style:{alignItems:"stretch",display:"flex",flexDirection:"column",flexGrow:1,justifyContent:"flex-start"},maxWidth:p,children:(0,l.jsx)(u,{disableBreadcrumbGutter:o,breadcrumbs:n,mobileScrollingBreakpoint:s,variant:m,...b,children:a})}):(0,l.jsx)(u,{disableBreadcrumbGutter:o,breadcrumbs:n,mobileScrollingBreakpoint:s,paddingX:e?0:1,variant:m,...b,children:a})]})},pe=f;var P=require("react/jsx-runtime"),B=({error:e,...o})=>(0,P.jsxs)(f,{title:"Oops! Something went wrong",...o,children:[(0,P.jsx)("h1",{children:"Oops! Something went wrong!"}),(0,P.jsx)("p",{children:`${e}`}),(0,P.jsx)(D.ButtonEx,{href:"/",variant:"contained",children:"Homepage"})]}),ae=B;var t=require("react/jsx-runtime"),_=(0,Y.forwardRef)(({appName:e,appbar:o,children:r,errorBoundary:p,errorPage:a,footer:n,footerElevation:s=4,menuItems:m,navigationType:b="menu",...W},C)=>(0,t.jsxs)(i.FlexCol,{id:"web-chrome-flex",alignItems:"stretch",overflow:"hidden",height:"100vh",ref:C,...W,children:[(0,t.jsx)(L.Helmet,{defaultTitle:e,titleTemplate:`%s | ${e}`,children:(0,t.jsx)("meta",{content:"website",property:"og:type"})}),o??(0,t.jsx)(h.ApplicationAppBar,{systemToolbar:(0,t.jsx)(h.SystemToolbar,{menuItems:b==="menu"?m:void 0})}),(0,t.jsxs)(i.FlexGrowRow,{id:"sidebar-nav-flex",overflow:"hidden",alignItems:"stretch",children:[b==="menu"?null:(0,t.jsxs)(t.Fragment,{children:[m,(0,t.jsx)(y.Divider,{orientation:"vertical"})]}),(0,t.jsx)(i.FlexGrowCol,{id:"main-flex",justifyContent:"flex-start",alignItems:"stretch",children:p?(0,t.jsx)(X.ErrorBoundary,{fallbackWithError:q=>a??(0,t.jsx)(B,{error:q}),children:r}):r})]}),(0,t.jsx)(i.FlexCol,{id:"footer-flex",alignItems:"stretch",children:(0,t.jsx)(y.Paper,{elevation:s,square:!0,children:n??(0,t.jsx)(O.Footer,{dynamicHeight:!0})})})]}));_.displayName="WebAppChrome";var $=require("@xyo-network/react-shared");var R=require("react/jsx-runtime"),j=({title:e,...o})=>(0,R.jsx)(f,{title:e??"Sorry! Page Not Found",...o,children:(0,R.jsx)($.NotFound,{})}),ne=j;
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var src_exports = {};
22
+ __export(src_exports, {
23
+ ErrorPage: () => ErrorPage,
24
+ FlexPage: () => FlexPage,
25
+ NotFoundPage: () => NotFoundPage,
26
+ WebAppBody: () => WebAppBody,
27
+ WebAppChrome: () => WebAppChrome,
28
+ WebAppErrorPage: () => WebAppErrorPage,
29
+ WebAppNotFoundPage: () => WebAppNotFoundPage,
30
+ WebAppPage: () => WebAppPage
31
+ });
32
+ module.exports = __toCommonJS(src_exports);
33
+
34
+ // src/components/Body.tsx
35
+ var import_material = require("@mui/material");
36
+ var import_react_flexbox = require("@xylabs/react-flexbox");
37
+
38
+ // src/components/lib/cssValues.ts
39
+ var scrollableWrap = {
40
+ inset: 0,
41
+ position: "absolute"
42
+ };
43
+ var fixedWrap = {
44
+ inset: "unset",
45
+ position: "relative"
46
+ };
47
+ var scrollableContent = {
48
+ ...fixedWrap
49
+ };
50
+ var fixedContent = {
51
+ ...scrollableWrap
52
+ };
53
+
54
+ // src/components/Body.tsx
55
+ var import_jsx_runtime = require("react/jsx-runtime");
56
+ var WebAppBodyName = "WebAppBody";
57
+ var propsNotForwarded = /* @__PURE__ */ new Set(["mobileScrollingBreakpoint", "variant", "spacing", "disableBreadcrumbGutter"]);
58
+ var defaultStyledOptions = {
59
+ shouldForwardProp: (prop) => !propsNotForwarded.has(prop)
60
+ };
61
+ var WebAppBodyRoot = (0, import_material.styled)(import_react_flexbox.FlexGrowCol, {
62
+ ...defaultStyledOptions,
63
+ name: WebAppBodyName,
64
+ slot: "Root"
65
+ })(({ spacing, theme, mobileScrollingBreakpoint = "sm", variant }) => {
66
+ const scrollable = variant === "scrollable";
67
+ return theme.unstable_sx({
68
+ alignItems: "stretch",
69
+ gap: 1,
70
+ justifyContent: "flex-start",
71
+ overflowX: "visible",
72
+ overflowY: scrollable ? "scroll" : "hidden",
73
+ paddingY: spacing,
74
+ [theme.breakpoints.down(mobileScrollingBreakpoint)]: {
75
+ overflowY: "scroll"
76
+ }
77
+ });
78
+ });
79
+ var WebAppBodyBreadcrumb = (0, import_material.styled)(import_react_flexbox.FlexRow, {
80
+ ...defaultStyledOptions,
81
+ name: WebAppBodyName,
82
+ slot: "Breadcrumb"
83
+ })(
84
+ ({ theme, disableBreadcrumbGutter, spacing }) => theme.unstable_sx({
85
+ justifyContent: "start",
86
+ marginX: disableBreadcrumbGutter ? 0 : spacing
87
+ })
88
+ );
89
+ var WebAppBodyScrollableWrapper = (0, import_material.styled)(import_react_flexbox.FlexGrowCol, {
90
+ name: WebAppBodyName,
91
+ slot: "ScrollableWrapper"
92
+ })(() => ({
93
+ alignItems: "stretch"
94
+ }));
95
+ var WebAppBodyScrollable = (0, import_material.styled)(import_react_flexbox.FlexGrowCol, {
96
+ ...defaultStyledOptions,
97
+ name: WebAppBodyName,
98
+ slot: "Scrollable"
99
+ })(({ theme, mobileScrollingBreakpoint = "sm", variant }) => {
100
+ const props = variant === "scrollable" ? scrollableContent : fixedContent;
101
+ return {
102
+ ...props,
103
+ alignItems: "stretch",
104
+ justifyContent: "start",
105
+ [theme.breakpoints.down(mobileScrollingBreakpoint)]: {
106
+ inset: "unset",
107
+ position: "relative"
108
+ }
109
+ };
110
+ });
111
+ var WebAppBody = ({
112
+ children,
113
+ breadcrumbs,
114
+ disableBreadcrumbGutter,
115
+ mobileScrollingBreakpoint,
116
+ spacing = 1,
117
+ variant,
118
+ ...props
119
+ }) => {
120
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(WebAppBodyRoot, { mobileScrollingBreakpoint, spacing, variant, ...props, children: [
121
+ breadcrumbs ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(WebAppBodyBreadcrumb, { disableBreadcrumbGutter, spacing, children: breadcrumbs }) : null,
122
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(WebAppBodyScrollableWrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(WebAppBodyScrollable, { mobileScrollingBreakpoint, variant, children }) })
123
+ ] });
124
+ };
125
+
126
+ // src/components/Chrome.tsx
127
+ var import_material3 = require("@mui/material");
128
+ var import_react_flexbox3 = require("@xylabs/react-flexbox");
129
+ var import_react_appbar = require("@xyo-network/react-appbar");
130
+ var import_react_footer = require("@xyo-network/react-footer");
131
+ var import_react_shared = require("@xyo-network/react-shared");
132
+ var import_react = require("react");
133
+ var import_react_helmet2 = require("react-helmet");
134
+
135
+ // src/components/ErrorPage.tsx
136
+ var import_react_button = require("@xylabs/react-button");
137
+
138
+ // src/components/Page.tsx
139
+ var import_material2 = require("@mui/material");
140
+ var import_react_async_effect = require("@xylabs/react-async-effect");
141
+ var import_react_flexbox2 = require("@xylabs/react-flexbox");
142
+ var import_react_pixel = require("@xylabs/react-pixel");
143
+ var import_react_helmet = require("react-helmet");
144
+ var import_react_router_dom = require("react-router-dom");
145
+ var import_jsx_runtime2 = require("react/jsx-runtime");
146
+ var WebAppPageRoot = (0, import_material2.styled)(import_react_flexbox2.FlexGrowCol, {
147
+ name: "WebAppPage",
148
+ shouldForwardProp: (propName) => propName !== "mobileScrollingBreakpoint" && propName !== "variant",
149
+ slot: "Root"
150
+ })(({ theme, mobileScrollingBreakpoint = "sm", variant }) => {
151
+ const props = variant === "scrollable" ? scrollableWrap : fixedWrap;
152
+ return {
153
+ ...props,
154
+ alignItems: "stretch",
155
+ justifyContent: "start",
156
+ maxWidth: "100vw",
157
+ [theme.breakpoints.down(mobileScrollingBreakpoint)]: {
158
+ inset: 0,
159
+ position: "absolute"
160
+ }
161
+ };
162
+ });
163
+ var WebAppPage = ({
164
+ disableGutters,
165
+ disableBreadcrumbGutter,
166
+ title,
167
+ container,
168
+ children,
169
+ breadcrumbs,
170
+ mobileScrollingBreakpoint,
171
+ variant = "scrollable",
172
+ ...props
173
+ }) => {
174
+ const userEvents = (0, import_react_pixel.useUserEvents)();
175
+ const { pathname } = (0, import_react_router_dom.useLocation)();
176
+ (0, import_react_async_effect.useAsyncEffect)(
177
+ // eslint-disable-next-line react-hooks/exhaustive-deps
178
+ async () => {
179
+ await userEvents?.viewContent({ name: title ?? "NodeBasePage", path: location.pathname });
180
+ },
181
+ [pathname, title, userEvents]
182
+ );
183
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(WebAppPageRoot, { mobileScrollingBreakpoint, variant, ...props, children: [
184
+ /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_react_helmet.Helmet, { title }),
185
+ container && container !== "none" ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
186
+ import_material2.Container,
187
+ {
188
+ disableGutters,
189
+ style: { alignItems: "stretch", display: "flex", flexDirection: "column", flexGrow: 1, justifyContent: "flex-start" },
190
+ maxWidth: container,
191
+ children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
192
+ WebAppBody,
193
+ {
194
+ disableBreadcrumbGutter,
195
+ breadcrumbs,
196
+ mobileScrollingBreakpoint,
197
+ variant,
198
+ ...props,
199
+ children
200
+ }
201
+ )
202
+ }
203
+ ) : /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
204
+ WebAppBody,
205
+ {
206
+ disableBreadcrumbGutter,
207
+ breadcrumbs,
208
+ mobileScrollingBreakpoint,
209
+ paddingX: disableGutters ? 0 : 1,
210
+ variant,
211
+ ...props,
212
+ children
213
+ }
214
+ )
215
+ ] });
216
+ };
217
+ var FlexPage = WebAppPage;
218
+
219
+ // src/components/ErrorPage.tsx
220
+ var import_jsx_runtime3 = require("react/jsx-runtime");
221
+ var WebAppErrorPage = ({ error, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(WebAppPage, { title: "Oops! Something went wrong", ...props, children: [
222
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("h1", { children: "Oops! Something went wrong!" }),
223
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("p", { children: `${error}` }),
224
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react_button.ButtonEx, { href: "/", variant: "contained", children: "Homepage" })
225
+ ] });
226
+ var ErrorPage = WebAppErrorPage;
227
+
228
+ // src/components/Chrome.tsx
229
+ var import_jsx_runtime4 = require("react/jsx-runtime");
230
+ var WebAppChrome = (0, import_react.forwardRef)(
231
+ ({ appName, appbar, children, errorBoundary, errorPage, footer, footerElevation = 4, menuItems, navigationType = "menu", ...props }, ref) => {
232
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_react_flexbox3.FlexCol, { id: "web-chrome-flex", alignItems: "stretch", overflow: "hidden", height: "100vh", ref, ...props, children: [
233
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_helmet2.Helmet, { defaultTitle: appName, titleTemplate: `%s | ${appName}`, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("meta", { content: "website", property: "og:type" }) }),
234
+ appbar ?? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_appbar.ApplicationAppBar, { systemToolbar: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_appbar.SystemToolbar, { menuItems: navigationType === "menu" ? menuItems : void 0 }) }),
235
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_react_flexbox3.FlexGrowRow, { id: "sidebar-nav-flex", overflow: "hidden", alignItems: "stretch", children: [
236
+ navigationType === "menu" ? null : /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(import_jsx_runtime4.Fragment, { children: [
237
+ menuItems,
238
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_material3.Divider, { orientation: "vertical" })
239
+ ] }),
240
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_flexbox3.FlexGrowCol, { id: "main-flex", justifyContent: "flex-start", alignItems: "stretch", children: errorBoundary ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
241
+ import_react_shared.ErrorBoundary,
242
+ {
243
+ fallbackWithError: (error) => {
244
+ return errorPage ?? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(WebAppErrorPage, { error });
245
+ },
246
+ children
247
+ }
248
+ ) : children })
249
+ ] }),
250
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_flexbox3.FlexCol, { id: "footer-flex", alignItems: "stretch", children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_material3.Paper, { elevation: footerElevation, square: true, children: footer ?? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_react_footer.Footer, { dynamicHeight: true }) }) })
251
+ ] });
252
+ }
253
+ );
254
+ WebAppChrome.displayName = "WebAppChrome";
255
+
256
+ // src/components/NotFoundPage/Page.tsx
257
+ var import_react_shared2 = require("@xyo-network/react-shared");
258
+ var import_jsx_runtime5 = require("react/jsx-runtime");
259
+ var WebAppNotFoundPage = ({ title, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(WebAppPage, { title: title ?? "Sorry! Page Not Found", ...props, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_react_shared2.NotFound, {}) });
260
+ var NotFoundPage = WebAppNotFoundPage;
2
261
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/components/Body.tsx","../../src/components/lib/cssValues.ts","../../src/components/Chrome.tsx","../../src/components/ErrorPage.tsx","../../src/components/Page.tsx","../../src/components/NotFoundPage/Page.tsx"],"sourcesContent":["export * from './components'\n","import { Breakpoint, styled } from '@mui/material'\nimport { FlexBoxProps, FlexGrowCol, FlexRow } from '@xylabs/react-flexbox'\nimport React, { ReactNode } from 'react'\n\nimport { fixedContent, scrollableContent } from './lib'\n\nconst WebAppBodyName = 'WebAppBody'\nconst propsNotForwarded = new Set(['mobileScrollingBreakpoint', 'variant', 'spacing', 'disableBreadcrumbGutter'])\nconst defaultStyledOptions = {\n shouldForwardProp: (prop: string) => !propsNotForwarded.has(prop),\n}\n\nconst WebAppBodyRoot = styled(FlexGrowCol, {\n ...defaultStyledOptions,\n name: WebAppBodyName,\n slot: 'Root',\n})<WebAppBodyProps>(({ spacing, theme, mobileScrollingBreakpoint = 'sm', variant }) => {\n const scrollable = variant === 'scrollable'\n return theme.unstable_sx({\n alignItems: 'stretch',\n gap: 1,\n justifyContent: 'flex-start',\n overflowX: 'visible',\n overflowY: scrollable ? 'scroll' : 'hidden',\n paddingY: spacing,\n [theme.breakpoints.down(mobileScrollingBreakpoint)]: {\n overflowY: 'scroll',\n },\n })\n})\n\nconst WebAppBodyBreadcrumb = styled(FlexRow, {\n ...defaultStyledOptions,\n name: WebAppBodyName,\n slot: 'Breadcrumb',\n})<WebAppBodyProps>(({ theme, disableBreadcrumbGutter, spacing }) =>\n theme.unstable_sx({\n justifyContent: 'start',\n marginX: disableBreadcrumbGutter ? 0 : spacing,\n }),\n)\n\nconst WebAppBodyScrollableWrapper = styled(FlexGrowCol, {\n name: WebAppBodyName,\n slot: 'ScrollableWrapper',\n})<WebAppBodyProps>(() => ({\n alignItems: 'stretch',\n}))\n\nconst WebAppBodyScrollable = styled(FlexGrowCol, {\n ...defaultStyledOptions,\n name: WebAppBodyName,\n slot: 'Scrollable',\n})<WebAppBodyProps>(({ theme, mobileScrollingBreakpoint = 'sm', variant }) => {\n const props = variant === 'scrollable' ? scrollableContent : fixedContent\n return {\n ...props,\n alignItems: 'stretch',\n justifyContent: 'start',\n [theme.breakpoints.down(mobileScrollingBreakpoint)]: {\n inset: 'unset',\n position: 'relative',\n },\n }\n})\n\nexport interface WebAppBodyProps extends FlexBoxProps {\n breadcrumbs?: ReactNode\n disableBreadcrumbGutter?: boolean\n mobileScrollingBreakpoint?: Breakpoint\n spacing?: string | number\n variant?: 'scrollable' | 'fixed'\n}\n\nexport const WebAppBody: React.FC<WebAppBodyProps> = ({\n children,\n breadcrumbs,\n disableBreadcrumbGutter,\n mobileScrollingBreakpoint,\n spacing = 1,\n variant,\n ...props\n}) => {\n return (\n <WebAppBodyRoot mobileScrollingBreakpoint={mobileScrollingBreakpoint} spacing={spacing} variant={variant} {...props}>\n {breadcrumbs ?\n <WebAppBodyBreadcrumb disableBreadcrumbGutter={disableBreadcrumbGutter} spacing={spacing}>\n {breadcrumbs}\n </WebAppBodyBreadcrumb>\n : null}\n <WebAppBodyScrollableWrapper>\n <WebAppBodyScrollable mobileScrollingBreakpoint={mobileScrollingBreakpoint} variant={variant}>\n {children}\n </WebAppBodyScrollable>\n </WebAppBodyScrollableWrapper>\n </WebAppBodyRoot>\n )\n}\n","import { CSSProperties } from 'react'\n\nexport const scrollableWrap: CSSProperties = {\n inset: 0,\n position: 'absolute',\n} as const\n\nexport const fixedWrap: CSSProperties = {\n inset: 'unset',\n position: 'relative',\n} as const\n\n// Making a scrollable vs fixed wrapper and content is an inversion of the wrap and content styles\nexport const scrollableContent: CSSProperties = {\n ...fixedWrap,\n} as const\n\nexport const fixedContent: CSSProperties = {\n ...scrollableWrap,\n} as const\n","import { Divider, Paper } from '@mui/material'\nimport { FlexBoxProps, FlexCol, FlexGrowCol, FlexGrowRow } from '@xylabs/react-flexbox'\nimport { WebAppNavigationType } from '@xyo-network/react-app-settings'\nimport { ApplicationAppBar, SystemToolbar } from '@xyo-network/react-appbar'\nimport { Footer } from '@xyo-network/react-footer'\nimport { ErrorBoundary } from '@xyo-network/react-shared'\nimport { forwardRef, ReactNode } from 'react'\nimport { Helmet } from 'react-helmet'\n\nimport { WebAppErrorPage } from './ErrorPage'\n\nexport interface WebAppChromeProps extends FlexBoxProps {\n appName: string\n appbar?: ReactNode\n errorBoundary?: boolean\n errorPage?: ReactNode\n footer?: ReactNode\n footerElevation?: number\n menuItems?: ReactNode\n navigationType?: WebAppNavigationType\n}\n\nexport const WebAppChrome = forwardRef<HTMLDivElement, WebAppChromeProps>(\n ({ appName, appbar, children, errorBoundary, errorPage, footer, footerElevation = 4, menuItems, navigationType = 'menu', ...props }, ref) => {\n return (\n <FlexCol id=\"web-chrome-flex\" alignItems=\"stretch\" overflow=\"hidden\" height=\"100vh\" ref={ref} {...props}>\n <Helmet defaultTitle={appName} titleTemplate={`%s | ${appName}`}>\n <meta content=\"website\" property=\"og:type\" />\n </Helmet>\n {appbar ?? <ApplicationAppBar systemToolbar={<SystemToolbar menuItems={navigationType === 'menu' ? menuItems : undefined} />} />}\n <FlexGrowRow id=\"sidebar-nav-flex\" overflow=\"hidden\" alignItems=\"stretch\">\n {navigationType === 'menu' ? null : (\n <>\n {menuItems}\n <Divider orientation=\"vertical\" />\n </>\n )}\n <FlexGrowCol id=\"main-flex\" justifyContent=\"flex-start\" alignItems=\"stretch\">\n {errorBoundary ?\n <ErrorBoundary\n fallbackWithError={(error) => {\n return errorPage ?? <WebAppErrorPage error={error} />\n }}\n >\n {children}\n </ErrorBoundary>\n : children}\n </FlexGrowCol>\n </FlexGrowRow>\n <FlexCol id=\"footer-flex\" alignItems=\"stretch\">\n <Paper elevation={footerElevation} square>\n {footer ?? <Footer dynamicHeight />}\n </Paper>\n </FlexCol>\n </FlexCol>\n )\n },\n)\n\nWebAppChrome.displayName = 'WebAppChrome'\n","import { ButtonEx } from '@xylabs/react-button'\n\nimport { WebAppPage, WebAppPageProps } from './Page'\n\nexport interface WebAppErrorPageProps extends WebAppPageProps {\n error?: Error\n}\n\nexport const WebAppErrorPage: React.FC<WebAppErrorPageProps> = ({ error, ...props }) => (\n <WebAppPage title=\"Oops! Something went wrong\" {...props}>\n <h1>Oops! Something went wrong!</h1>\n <p>{`${error}`}</p>\n <ButtonEx href=\"/\" variant=\"contained\">\n Homepage\n </ButtonEx>\n </WebAppPage>\n)\n\n/** @deprecated use WebAppErrorPage instead */\nexport const ErrorPage = WebAppErrorPage\n","import { Container, ContainerProps, styled } from '@mui/material'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { FlexBoxProps, FlexGrowCol } from '@xylabs/react-flexbox'\nimport { useUserEvents } from '@xylabs/react-pixel'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { Helmet } from 'react-helmet'\nimport { useLocation } from 'react-router-dom'\n\nimport { WebAppBody, WebAppBodyProps } from './Body'\nimport { fixedWrap, scrollableWrap } from './lib'\n\nconst WebAppPageRoot = styled(FlexGrowCol, {\n name: 'WebAppPage',\n shouldForwardProp: (propName) => propName !== 'mobileScrollingBreakpoint' && propName !== 'variant',\n slot: 'Root',\n})<WebAppPageProps>(({ theme, mobileScrollingBreakpoint = 'sm', variant }) => {\n const props = variant === 'scrollable' ? scrollableWrap : fixedWrap\n return {\n ...props,\n alignItems: 'stretch',\n justifyContent: 'start',\n maxWidth: '100vw',\n [theme.breakpoints.down(mobileScrollingBreakpoint)]: {\n inset: 0,\n position: 'absolute',\n },\n }\n})\n\nexport interface WebAppPageProps extends WebAppBodyProps, FlexBoxProps {\n container?: ContainerProps['maxWidth'] | 'none'\n disableGutters?: boolean\n}\n\nexport const WebAppPage: React.FC<WithChildren<WebAppPageProps>> = ({\n disableGutters,\n disableBreadcrumbGutter,\n title,\n container,\n children,\n breadcrumbs,\n mobileScrollingBreakpoint,\n variant = 'scrollable',\n ...props\n}) => {\n const userEvents = useUserEvents()\n const { pathname } = useLocation()\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async () => {\n await userEvents?.viewContent({ name: title ?? 'NodeBasePage', path: location.pathname })\n },\n [pathname, title, userEvents],\n )\n\n return (\n <WebAppPageRoot mobileScrollingBreakpoint={mobileScrollingBreakpoint} variant={variant} {...props}>\n <Helmet title={title} />\n {container && container !== 'none' ?\n <Container\n disableGutters={disableGutters}\n style={{ alignItems: 'stretch', display: 'flex', flexDirection: 'column', flexGrow: 1, justifyContent: 'flex-start' }}\n maxWidth={container}\n >\n <WebAppBody\n disableBreadcrumbGutter={disableBreadcrumbGutter}\n breadcrumbs={breadcrumbs}\n mobileScrollingBreakpoint={mobileScrollingBreakpoint}\n variant={variant}\n {...props}\n >\n {children}\n </WebAppBody>\n </Container>\n : <WebAppBody\n disableBreadcrumbGutter={disableBreadcrumbGutter}\n breadcrumbs={breadcrumbs}\n mobileScrollingBreakpoint={mobileScrollingBreakpoint}\n paddingX={disableGutters ? 0 : 1}\n variant={variant}\n {...props}\n >\n {children}\n </WebAppBody>\n }\n </WebAppPageRoot>\n )\n}\n\n/** @deprecated use WebAppPagePage instead */\nexport const FlexPage = WebAppPage\n","import { NotFound } from '@xyo-network/react-shared'\n\nimport { WebAppPage, WebAppPageProps } from '../Page'\n\nexport const WebAppNotFoundPage: React.FC<WebAppPageProps> = ({ title, ...props }) => (\n <WebAppPage title={title ?? 'Sorry! Page Not Found'} {...props}>\n <NotFound />\n </WebAppPage>\n)\n\n/** @deprecated use WebAppNotFoundPage instead */\nexport const NotFoundPage = WebAppNotFoundPage\n"],"mappings":"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","names":["src_exports","__export","ErrorPage","FlexPage","NotFoundPage","WebAppBody","WebAppChrome","WebAppErrorPage","WebAppNotFoundPage","WebAppPage","__toCommonJS","import_material","import_react_flexbox","scrollableWrap","fixedWrap","scrollableContent","fixedContent","import_jsx_runtime","WebAppBodyName","propsNotForwarded","defaultStyledOptions","prop","WebAppBodyRoot","spacing","theme","mobileScrollingBreakpoint","variant","scrollable","WebAppBodyBreadcrumb","disableBreadcrumbGutter","WebAppBodyScrollableWrapper","WebAppBodyScrollable","scrollableContent","fixedContent","WebAppBody","children","breadcrumbs","props","import_material","import_react_flexbox","import_react_appbar","import_react_footer","import_react_shared","import_react","import_react_helmet","import_react_button","import_material","import_react_async_effect","import_react_flexbox","import_react_pixel","import_react_helmet","import_react_router_dom","import_jsx_runtime","WebAppPageRoot","propName","theme","mobileScrollingBreakpoint","variant","scrollableWrap","fixedWrap","WebAppPage","disableGutters","disableBreadcrumbGutter","title","container","children","breadcrumbs","props","userEvents","pathname","WebAppBody","FlexPage","import_jsx_runtime","WebAppErrorPage","error","props","WebAppPage","ErrorPage","import_jsx_runtime","WebAppChrome","appName","appbar","children","errorBoundary","errorPage","footer","footerElevation","menuItems","navigationType","props","ref","error","WebAppErrorPage","import_react_shared","import_jsx_runtime","WebAppNotFoundPage","title","props","WebAppPage","NotFoundPage"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/components/Body.tsx","../../src/components/lib/cssValues.ts","../../src/components/Chrome.tsx","../../src/components/ErrorPage.tsx","../../src/components/Page.tsx","../../src/components/NotFoundPage/Page.tsx"],"sourcesContent":["export * from './components'\n","import { Breakpoint, styled } from '@mui/material'\nimport { FlexBoxProps, FlexGrowCol, FlexRow } from '@xylabs/react-flexbox'\nimport React, { ReactNode } from 'react'\n\nimport { fixedContent, scrollableContent } from './lib'\n\nconst WebAppBodyName = 'WebAppBody'\nconst propsNotForwarded = new Set(['mobileScrollingBreakpoint', 'variant', 'spacing', 'disableBreadcrumbGutter'])\nconst defaultStyledOptions = {\n shouldForwardProp: (prop: string) => !propsNotForwarded.has(prop),\n}\n\nconst WebAppBodyRoot = styled(FlexGrowCol, {\n ...defaultStyledOptions,\n name: WebAppBodyName,\n slot: 'Root',\n})<WebAppBodyProps>(({ spacing, theme, mobileScrollingBreakpoint = 'sm', variant }) => {\n const scrollable = variant === 'scrollable'\n return theme.unstable_sx({\n alignItems: 'stretch',\n gap: 1,\n justifyContent: 'flex-start',\n overflowX: 'visible',\n overflowY: scrollable ? 'scroll' : 'hidden',\n paddingY: spacing,\n [theme.breakpoints.down(mobileScrollingBreakpoint)]: {\n overflowY: 'scroll',\n },\n })\n})\n\nconst WebAppBodyBreadcrumb = styled(FlexRow, {\n ...defaultStyledOptions,\n name: WebAppBodyName,\n slot: 'Breadcrumb',\n})<WebAppBodyProps>(({ theme, disableBreadcrumbGutter, spacing }) =>\n theme.unstable_sx({\n justifyContent: 'start',\n marginX: disableBreadcrumbGutter ? 0 : spacing,\n }),\n)\n\nconst WebAppBodyScrollableWrapper = styled(FlexGrowCol, {\n name: WebAppBodyName,\n slot: 'ScrollableWrapper',\n})<WebAppBodyProps>(() => ({\n alignItems: 'stretch',\n}))\n\nconst WebAppBodyScrollable = styled(FlexGrowCol, {\n ...defaultStyledOptions,\n name: WebAppBodyName,\n slot: 'Scrollable',\n})<WebAppBodyProps>(({ theme, mobileScrollingBreakpoint = 'sm', variant }) => {\n const props = variant === 'scrollable' ? scrollableContent : fixedContent\n return {\n ...props,\n alignItems: 'stretch',\n justifyContent: 'start',\n [theme.breakpoints.down(mobileScrollingBreakpoint)]: {\n inset: 'unset',\n position: 'relative',\n },\n }\n})\n\nexport interface WebAppBodyProps extends FlexBoxProps {\n breadcrumbs?: ReactNode\n disableBreadcrumbGutter?: boolean\n mobileScrollingBreakpoint?: Breakpoint\n spacing?: string | number\n variant?: 'scrollable' | 'fixed'\n}\n\nexport const WebAppBody: React.FC<WebAppBodyProps> = ({\n children,\n breadcrumbs,\n disableBreadcrumbGutter,\n mobileScrollingBreakpoint,\n spacing = 1,\n variant,\n ...props\n}) => {\n return (\n <WebAppBodyRoot mobileScrollingBreakpoint={mobileScrollingBreakpoint} spacing={spacing} variant={variant} {...props}>\n {breadcrumbs ?\n <WebAppBodyBreadcrumb disableBreadcrumbGutter={disableBreadcrumbGutter} spacing={spacing}>\n {breadcrumbs}\n </WebAppBodyBreadcrumb>\n : null}\n <WebAppBodyScrollableWrapper>\n <WebAppBodyScrollable mobileScrollingBreakpoint={mobileScrollingBreakpoint} variant={variant}>\n {children}\n </WebAppBodyScrollable>\n </WebAppBodyScrollableWrapper>\n </WebAppBodyRoot>\n )\n}\n","import { CSSProperties } from 'react'\n\nexport const scrollableWrap: CSSProperties = {\n inset: 0,\n position: 'absolute',\n} as const\n\nexport const fixedWrap: CSSProperties = {\n inset: 'unset',\n position: 'relative',\n} as const\n\n// Making a scrollable vs fixed wrapper and content is an inversion of the wrap and content styles\nexport const scrollableContent: CSSProperties = {\n ...fixedWrap,\n} as const\n\nexport const fixedContent: CSSProperties = {\n ...scrollableWrap,\n} as const\n","import { Divider, Paper } from '@mui/material'\nimport { FlexBoxProps, FlexCol, FlexGrowCol, FlexGrowRow } from '@xylabs/react-flexbox'\nimport { WebAppNavigationType } from '@xyo-network/react-app-settings'\nimport { ApplicationAppBar, SystemToolbar } from '@xyo-network/react-appbar'\nimport { Footer } from '@xyo-network/react-footer'\nimport { ErrorBoundary } from '@xyo-network/react-shared'\nimport { forwardRef, ReactNode } from 'react'\nimport { Helmet } from 'react-helmet'\n\nimport { WebAppErrorPage } from './ErrorPage'\n\nexport interface WebAppChromeProps extends FlexBoxProps {\n appName: string\n appbar?: ReactNode\n errorBoundary?: boolean\n errorPage?: ReactNode\n footer?: ReactNode\n footerElevation?: number\n menuItems?: ReactNode\n navigationType?: WebAppNavigationType\n}\n\nexport const WebAppChrome = forwardRef<HTMLDivElement, WebAppChromeProps>(\n ({ appName, appbar, children, errorBoundary, errorPage, footer, footerElevation = 4, menuItems, navigationType = 'menu', ...props }, ref) => {\n return (\n <FlexCol id=\"web-chrome-flex\" alignItems=\"stretch\" overflow=\"hidden\" height=\"100vh\" ref={ref} {...props}>\n <Helmet defaultTitle={appName} titleTemplate={`%s | ${appName}`}>\n <meta content=\"website\" property=\"og:type\" />\n </Helmet>\n {appbar ?? <ApplicationAppBar systemToolbar={<SystemToolbar menuItems={navigationType === 'menu' ? menuItems : undefined} />} />}\n <FlexGrowRow id=\"sidebar-nav-flex\" overflow=\"hidden\" alignItems=\"stretch\">\n {navigationType === 'menu' ? null : (\n <>\n {menuItems}\n <Divider orientation=\"vertical\" />\n </>\n )}\n <FlexGrowCol id=\"main-flex\" justifyContent=\"flex-start\" alignItems=\"stretch\">\n {errorBoundary ?\n <ErrorBoundary\n fallbackWithError={(error) => {\n return errorPage ?? <WebAppErrorPage error={error} />\n }}\n >\n {children}\n </ErrorBoundary>\n : children}\n </FlexGrowCol>\n </FlexGrowRow>\n <FlexCol id=\"footer-flex\" alignItems=\"stretch\">\n <Paper elevation={footerElevation} square>\n {footer ?? <Footer dynamicHeight />}\n </Paper>\n </FlexCol>\n </FlexCol>\n )\n },\n)\n\nWebAppChrome.displayName = 'WebAppChrome'\n","import { ButtonEx } from '@xylabs/react-button'\n\nimport { WebAppPage, WebAppPageProps } from './Page'\n\nexport interface WebAppErrorPageProps extends WebAppPageProps {\n error?: Error\n}\n\nexport const WebAppErrorPage: React.FC<WebAppErrorPageProps> = ({ error, ...props }) => (\n <WebAppPage title=\"Oops! Something went wrong\" {...props}>\n <h1>Oops! Something went wrong!</h1>\n <p>{`${error}`}</p>\n <ButtonEx href=\"/\" variant=\"contained\">\n Homepage\n </ButtonEx>\n </WebAppPage>\n)\n\n/** @deprecated use WebAppErrorPage instead */\nexport const ErrorPage = WebAppErrorPage\n","import { Container, ContainerProps, styled } from '@mui/material'\nimport { useAsyncEffect } from '@xylabs/react-async-effect'\nimport { FlexBoxProps, FlexGrowCol } from '@xylabs/react-flexbox'\nimport { useUserEvents } from '@xylabs/react-pixel'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { Helmet } from 'react-helmet'\nimport { useLocation } from 'react-router-dom'\n\nimport { WebAppBody, WebAppBodyProps } from './Body'\nimport { fixedWrap, scrollableWrap } from './lib'\n\nconst WebAppPageRoot = styled(FlexGrowCol, {\n name: 'WebAppPage',\n shouldForwardProp: (propName) => propName !== 'mobileScrollingBreakpoint' && propName !== 'variant',\n slot: 'Root',\n})<WebAppPageProps>(({ theme, mobileScrollingBreakpoint = 'sm', variant }) => {\n const props = variant === 'scrollable' ? scrollableWrap : fixedWrap\n return {\n ...props,\n alignItems: 'stretch',\n justifyContent: 'start',\n maxWidth: '100vw',\n [theme.breakpoints.down(mobileScrollingBreakpoint)]: {\n inset: 0,\n position: 'absolute',\n },\n }\n})\n\nexport interface WebAppPageProps extends WebAppBodyProps, FlexBoxProps {\n container?: ContainerProps['maxWidth'] | 'none'\n disableGutters?: boolean\n}\n\nexport const WebAppPage: React.FC<WithChildren<WebAppPageProps>> = ({\n disableGutters,\n disableBreadcrumbGutter,\n title,\n container,\n children,\n breadcrumbs,\n mobileScrollingBreakpoint,\n variant = 'scrollable',\n ...props\n}) => {\n const userEvents = useUserEvents()\n const { pathname } = useLocation()\n\n useAsyncEffect(\n // eslint-disable-next-line react-hooks/exhaustive-deps\n async () => {\n await userEvents?.viewContent({ name: title ?? 'NodeBasePage', path: location.pathname })\n },\n [pathname, title, userEvents],\n )\n\n return (\n <WebAppPageRoot mobileScrollingBreakpoint={mobileScrollingBreakpoint} variant={variant} {...props}>\n <Helmet title={title} />\n {container && container !== 'none' ?\n <Container\n disableGutters={disableGutters}\n style={{ alignItems: 'stretch', display: 'flex', flexDirection: 'column', flexGrow: 1, justifyContent: 'flex-start' }}\n maxWidth={container}\n >\n <WebAppBody\n disableBreadcrumbGutter={disableBreadcrumbGutter}\n breadcrumbs={breadcrumbs}\n mobileScrollingBreakpoint={mobileScrollingBreakpoint}\n variant={variant}\n {...props}\n >\n {children}\n </WebAppBody>\n </Container>\n : <WebAppBody\n disableBreadcrumbGutter={disableBreadcrumbGutter}\n breadcrumbs={breadcrumbs}\n mobileScrollingBreakpoint={mobileScrollingBreakpoint}\n paddingX={disableGutters ? 0 : 1}\n variant={variant}\n {...props}\n >\n {children}\n </WebAppBody>\n }\n </WebAppPageRoot>\n )\n}\n\n/** @deprecated use WebAppPagePage instead */\nexport const FlexPage = WebAppPage\n","import { NotFound } from '@xyo-network/react-shared'\n\nimport { WebAppPage, WebAppPageProps } from '../Page'\n\nexport const WebAppNotFoundPage: React.FC<WebAppPageProps> = ({ title, ...props }) => (\n <WebAppPage title={title ?? 'Sorry! Page Not Found'} {...props}>\n <NotFound />\n </WebAppPage>\n)\n\n/** @deprecated use WebAppNotFoundPage instead */\nexport const NotFoundPage = WebAppNotFoundPage\n"],"mappings":"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","names":["import_material","import_react_flexbox","import_react_helmet","import_material","import_react_flexbox","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react_shared","import_jsx_runtime"]}