@xyo-network/react-shared 2.64.0 → 2.64.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.
- package/dist/browser/components/Ampersand.js +3 -2
- package/dist/browser/components/Ampersand.js.map +1 -1
- package/dist/browser/components/BasicHero/BasicHero.js +71 -5
- package/dist/browser/components/BasicHero/BasicHero.js.map +1 -1
- package/dist/browser/components/BasicHero/index.js +203 -1
- package/dist/browser/components/BasicHero/index.js.map +1 -1
- package/dist/browser/components/Ellipsize.js +28 -8
- package/dist/browser/components/Ellipsize.js.map +1 -1
- package/dist/browser/components/ErrorBoundary.js +4 -3
- package/dist/browser/components/ErrorBoundary.js.map +1 -1
- package/dist/browser/components/ListItemButtonEx.js +4 -3
- package/dist/browser/components/ListItemButtonEx.js.map +1 -1
- package/dist/browser/components/LoadResult.js +19 -6
- package/dist/browser/components/LoadResult.js.map +1 -1
- package/dist/browser/components/NotFound.js +3 -2
- package/dist/browser/components/NotFound.js.map +1 -1
- package/dist/browser/components/Pipe.js +3 -2
- package/dist/browser/components/Pipe.js.map +1 -1
- package/dist/browser/components/ScrollTableOnSm.js +4 -3
- package/dist/browser/components/ScrollTableOnSm.js.map +1 -1
- package/dist/browser/components/SectionSpacingRow/SectionSpacingRow.js +3 -2
- package/dist/browser/components/SectionSpacingRow/SectionSpacingRow.js.map +1 -1
- package/dist/browser/components/SectionSpacingRow/index.js +26 -1
- package/dist/browser/components/SectionSpacingRow/index.js.map +1 -1
- package/dist/browser/components/StyleGuide/AppBars.example.js +3 -2
- package/dist/browser/components/StyleGuide/AppBars.example.js.map +1 -1
- package/dist/browser/components/StyleGuide/Buttons.example.js +5 -4
- package/dist/browser/components/StyleGuide/Buttons.example.js.map +1 -1
- package/dist/browser/components/StyleGuide/Papers.example.js +3 -2
- package/dist/browser/components/StyleGuide/Papers.example.js.map +1 -1
- package/dist/browser/components/StyleGuide/StyleGuide.example.js +99 -12
- package/dist/browser/components/StyleGuide/StyleGuide.example.js.map +1 -1
- package/dist/browser/components/StyleGuide/Texts.example.js +3 -2
- package/dist/browser/components/StyleGuide/Texts.example.js.map +1 -1
- package/dist/browser/components/StyleGuide/VariantContext.example.js +2 -1
- package/dist/browser/components/StyleGuide/VariantContext.example.js.map +1 -1
- package/dist/browser/components/TableCell/AddressTableCell.js +124 -4
- package/dist/browser/components/TableCell/AddressTableCell.js.map +1 -1
- package/dist/browser/components/TableCell/EllipsisTableCell.js +98 -9
- package/dist/browser/components/TableCell/EllipsisTableCell.js.map +1 -1
- package/dist/browser/components/TableCell/EllipsisTableCellDeprecated.js +107 -6
- package/dist/browser/components/TableCell/EllipsisTableCellDeprecated.js.map +1 -1
- package/dist/browser/components/TableCell/HashTableCell.js +126 -6
- package/dist/browser/components/TableCell/HashTableCell.js.map +1 -1
- package/dist/browser/components/TableCell/findParent.js +2 -1
- package/dist/browser/components/TableCell/findParent.js.map +1 -1
- package/dist/browser/components/TableCell/getRemainingRowWidth.js +2 -1
- package/dist/browser/components/TableCell/getRemainingRowWidth.js.map +1 -1
- package/dist/browser/components/TableCell/getSmallestParentWidth.js +2 -1
- package/dist/browser/components/TableCell/getSmallestParentWidth.js.map +1 -1
- package/dist/browser/components/TableCell/index.js +160 -3
- package/dist/browser/components/TableCell/index.js.map +1 -1
- package/dist/browser/components/ThemeTokenAvatar/ThemeTokenAvatar.js +3 -2
- package/dist/browser/components/ThemeTokenAvatar/ThemeTokenAvatar.js.map +1 -1
- package/dist/browser/components/ThemeTokenAvatar/index.js +10 -1
- package/dist/browser/components/ThemeTokenAvatar/index.js.map +1 -1
- package/dist/browser/components/ThemeTokenAvatarGroup/ThemeTokenAvatarGroup.js +14 -4
- package/dist/browser/components/ThemeTokenAvatarGroup/ThemeTokenAvatarGroup.js.map +1 -1
- package/dist/browser/components/ThemeTokenAvatarGroup/index.js +19 -1
- package/dist/browser/components/ThemeTokenAvatarGroup/index.js.map +1 -1
- package/dist/browser/components/TokenBar/TokenBar.js +3 -2
- package/dist/browser/components/TokenBar/TokenBar.js.map +1 -1
- package/dist/browser/components/TokenBar/index.js +19 -1
- package/dist/browser/components/TokenBar/index.js.map +1 -1
- package/dist/browser/components/TokenData/TokenData.js +34 -17
- package/dist/browser/components/TokenData/TokenData.js.map +1 -1
- package/dist/browser/components/TokenData/img/index.js +1 -0
- package/dist/browser/components/TokenData/img/index.js.map +1 -1
- package/dist/browser/components/TokenData/index.js +153 -2
- package/dist/browser/components/TokenData/index.js.map +1 -1
- package/dist/browser/components/TokenData/useGetTokenData.js +143 -2
- package/dist/browser/components/TokenData/useGetTokenData.js.map +1 -1
- package/dist/browser/components/TokenSummary/TokenSummary.js +16 -6
- package/dist/browser/components/TokenSummary/TokenSummary.js.map +1 -1
- package/dist/browser/components/TokenSummary/index.js +29 -1
- package/dist/browser/components/TokenSummary/index.js.map +1 -1
- package/dist/browser/components/TypographyEx.js +57 -3
- package/dist/browser/components/TypographyEx.js.map +1 -1
- package/dist/browser/components/index.js +730 -18
- package/dist/browser/components/index.js.map +1 -1
- package/dist/browser/components/pluginValidation/DataMissing.js +3 -2
- package/dist/browser/components/pluginValidation/DataMissing.js.map +1 -1
- package/dist/browser/components/pluginValidation/index.js +12 -1
- package/dist/browser/components/pluginValidation/index.js.map +1 -1
- package/dist/browser/contexts/ListMode/Context.js +6 -2
- package/dist/browser/contexts/ListMode/Context.js.map +1 -1
- package/dist/browser/contexts/ListMode/Provider.js +12 -3
- package/dist/browser/contexts/ListMode/Provider.js.map +1 -1
- package/dist/browser/contexts/ListMode/index.js +44 -4
- package/dist/browser/contexts/ListMode/index.js.map +1 -1
- package/dist/browser/contexts/ListMode/use.js +19 -3
- package/dist/browser/contexts/ListMode/use.js.map +1 -1
- package/dist/browser/contexts/Pixel/Context.js +6 -2
- package/dist/browser/contexts/Pixel/Context.js.map +1 -1
- package/dist/browser/contexts/Pixel/Provider.js +12 -3
- package/dist/browser/contexts/Pixel/Provider.js.map +1 -1
- package/dist/browser/contexts/Pixel/index.js +45 -4
- package/dist/browser/contexts/Pixel/index.js.map +1 -1
- package/dist/browser/contexts/Pixel/use.js +19 -3
- package/dist/browser/contexts/Pixel/use.js.map +1 -1
- package/dist/browser/contexts/contextEx/create.js +2 -1
- package/dist/browser/contexts/contextEx/create.js.map +1 -1
- package/dist/browser/contexts/contextEx/index.js +22 -4
- package/dist/browser/contexts/contextEx/index.js.map +1 -1
- package/dist/browser/contexts/contextEx/use.js +3 -2
- package/dist/browser/contexts/contextEx/use.js.map +1 -1
- package/dist/browser/contexts/diviner/Context.js +6 -2
- package/dist/browser/contexts/diviner/Context.js.map +1 -1
- package/dist/browser/contexts/diviner/Provider.js +3 -2
- package/dist/browser/contexts/diviner/Provider.js.map +1 -1
- package/dist/browser/contexts/diviner/index.js +40 -3
- package/dist/browser/contexts/diviner/index.js.map +1 -1
- package/dist/browser/contexts/index.js +116 -4
- package/dist/browser/contexts/index.js.map +1 -1
- package/dist/browser/hooks/GradientStyles/GradientStyles.js +4 -3
- package/dist/browser/hooks/GradientStyles/GradientStyles.js.map +1 -1
- package/dist/browser/hooks/GradientStyles/index.js +56 -1
- package/dist/browser/hooks/GradientStyles/index.js.map +1 -1
- package/dist/browser/hooks/index.js +126 -7
- package/dist/browser/hooks/index.js.map +1 -1
- package/dist/browser/hooks/useDataState.js +2 -1
- package/dist/browser/hooks/useDataState.js.map +1 -1
- package/dist/browser/hooks/useIsMobile.js +7 -2
- package/dist/browser/hooks/useIsMobile.js.map +1 -1
- package/dist/browser/hooks/useMediaQuery.js +1 -0
- package/dist/browser/hooks/useMediaQuery.js.map +1 -1
- package/dist/browser/hooks/usePayloadHash.js +3 -2
- package/dist/browser/hooks/usePayloadHash.js.map +1 -1
- package/dist/browser/hooks/usePromise.js +2 -1
- package/dist/browser/hooks/usePromise.js.map +1 -1
- package/dist/browser/hooks/useShareForwardRef.js +2 -1
- package/dist/browser/hooks/useShareForwardRef.js.map +1 -1
- package/dist/browser/index.js +988 -6
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/lib/assertDefinedEx.js +2 -1
- package/dist/browser/lib/assertDefinedEx.js.map +1 -1
- package/dist/browser/lib/getActualPaddingX.js +4 -3
- package/dist/browser/lib/getActualPaddingX.js.map +1 -1
- package/dist/browser/lib/index.js +101 -3
- package/dist/browser/lib/index.js.map +1 -1
- package/dist/browser/lib/networkComponents.js +5 -4
- package/dist/browser/lib/networkComponents.js.map +1 -1
- package/dist/browser/lib/xyo.js +3 -2
- package/dist/browser/lib/xyo.js.map +1 -1
- package/dist/browser/models/index.js +0 -1
- package/dist/browser/models/index.js.map +1 -1
- package/package.json +13 -13
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
// src/components/Ampersand.tsx
|
|
2
2
|
import { Typography } from "@mui/material";
|
|
3
|
-
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
var Ampersand = (props) => {
|
|
4
5
|
return /* @__PURE__ */ jsx(Typography, { marginX: 1, component: "span", ...props, children: "&" });
|
|
5
6
|
};
|
|
6
7
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/Ampersand.tsx"],"sourcesContent":["import { Typography, TypographyProps } from '@mui/material'\n\nexport const Ampersand: React.FC<TypographyProps> = (props) => {\n return (\n <Typography marginX={1} component=\"span\" {...props}>\n &\n </Typography>\n )\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Ampersand.tsx"],"sourcesContent":["import { Typography, TypographyProps } from '@mui/material'\n\nexport const Ampersand: React.FC<TypographyProps> = (props) => {\n return (\n <Typography marginX={1} component=\"span\" {...props}>\n &\n </Typography>\n )\n}\n"],"mappings":";AAAA,SAAS,kBAAmC;AAIxC;AAFG,IAAM,YAAuC,CAAC,UAAU;AAC7D,SACE,oBAAC,cAAW,SAAS,GAAG,WAAU,QAAQ,GAAG,OAAO,eAEpD;AAEJ;","names":[]}
|
|
@@ -1,10 +1,76 @@
|
|
|
1
|
-
|
|
1
|
+
// src/components/BasicHero/BasicHero.tsx
|
|
2
2
|
import { Container, Grid, Typography } from "@mui/material";
|
|
3
3
|
import { ButtonEx } from "@xylabs/react-button";
|
|
4
4
|
import { FlexGrowCol, FlexGrowRow } from "@xylabs/react-flexbox";
|
|
5
5
|
import { LinkEx } from "@xylabs/react-link";
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
|
|
7
|
+
// src/hooks/GradientStyles/GradientStyles.tsx
|
|
8
|
+
import { useTheme } from "@mui/material";
|
|
9
|
+
import { makeStyles } from "@mui/styles";
|
|
10
|
+
var colorfulGradientLightMode = () => {
|
|
11
|
+
return {
|
|
12
|
+
background: {
|
|
13
|
+
backgroundImage: "-webkit-linear-gradient(232deg, #e17751, #d84e7a, #5898dd, #8c8ee5)"
|
|
14
|
+
},
|
|
15
|
+
border: {
|
|
16
|
+
borderImage: "-webkit-linear-gradient(232deg, #e17751, #d84e7a, #5898dd, #8c8ee5)",
|
|
17
|
+
borderImageSlice: 1,
|
|
18
|
+
borderImageSource: "-webkit-linear-gradient(232deg, #e17751, #d84e7a, #5898dd, #8c8ee5)",
|
|
19
|
+
borderRadius: 0,
|
|
20
|
+
borderStyle: "solid",
|
|
21
|
+
borderWidth: "2px"
|
|
22
|
+
},
|
|
23
|
+
heading: {
|
|
24
|
+
WebkitBackgroundClip: "text",
|
|
25
|
+
WebkitTextFillColor: "transparent",
|
|
26
|
+
background: "-webkit-linear-gradient(232deg, #e17751, #d84e7a, #5898dd, #8c8ee5)",
|
|
27
|
+
display: "inline-block"
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
var colorfulGradientDarkMode = () => {
|
|
32
|
+
return {
|
|
33
|
+
background: {
|
|
34
|
+
backgroundImage: "-webkit-linear-gradient(232deg, #F17938, #FF5BDC, #5898dd, #B2FFFD)"
|
|
35
|
+
},
|
|
36
|
+
border: {
|
|
37
|
+
borderImage: "-webkit-linear-gradient(232deg, #F17938, #FF5BDC, #5898dd, #B2FFFD)",
|
|
38
|
+
borderImageSlice: 1,
|
|
39
|
+
borderImageSource: "-webkit-linear-gradient(232deg, #F17938, #FF5BDC, #5898dd, #B2FFFD)",
|
|
40
|
+
borderRadius: 0,
|
|
41
|
+
borderStyle: "solid",
|
|
42
|
+
borderWidth: "2px"
|
|
43
|
+
},
|
|
44
|
+
heading: {
|
|
45
|
+
WebkitBackgroundClip: "text",
|
|
46
|
+
WebkitTextFillColor: "transparent",
|
|
47
|
+
background: "-webkit-linear-gradient(232deg, #F17938, #FF5BDC, #5898dd, #B2FFFD)",
|
|
48
|
+
display: "inline-block"
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
var useGradientStyles = () => {
|
|
53
|
+
const theme = useTheme();
|
|
54
|
+
const styles = theme.palette.mode === "dark" ? colorfulGradientDarkMode() : colorfulGradientLightMode();
|
|
55
|
+
const classes = makeStyles(styles);
|
|
56
|
+
return { classes, styles };
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
// src/hooks/useIsMobile.ts
|
|
60
|
+
import { useTheme as useTheme2 } from "@mui/material";
|
|
61
|
+
|
|
62
|
+
// src/hooks/useMediaQuery.ts
|
|
63
|
+
import { useMediaQuery } from "@mui/material";
|
|
64
|
+
|
|
65
|
+
// src/hooks/useIsMobile.ts
|
|
66
|
+
var useIsMobile = () => {
|
|
67
|
+
const theme = useTheme2();
|
|
68
|
+
return useMediaQuery(theme.breakpoints.down("md"));
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
// src/components/BasicHero/BasicHero.tsx
|
|
72
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
73
|
+
var SubLinkSection = ({ backgroundImageAlignment, subLinkIcon, subLinkPath, subLinkText1, subLinkText2 }) => {
|
|
8
74
|
return /* @__PURE__ */ jsxs(
|
|
9
75
|
FlexGrowRow,
|
|
10
76
|
{
|
|
@@ -24,7 +90,7 @@ const SubLinkSection = ({ backgroundImageAlignment, subLinkIcon, subLinkPath, su
|
|
|
24
90
|
}
|
|
25
91
|
);
|
|
26
92
|
};
|
|
27
|
-
|
|
93
|
+
var ButtonSection = ({ href, to, buttonText }) => {
|
|
28
94
|
const isMobile = useIsMobile();
|
|
29
95
|
return /* @__PURE__ */ jsx(
|
|
30
96
|
ButtonEx,
|
|
@@ -45,7 +111,7 @@ const ButtonSection = ({ href, to, buttonText }) => {
|
|
|
45
111
|
}
|
|
46
112
|
);
|
|
47
113
|
};
|
|
48
|
-
|
|
114
|
+
var BasicHero = ({
|
|
49
115
|
backgroundImage,
|
|
50
116
|
title,
|
|
51
117
|
gradientTitle,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/BasicHero/BasicHero.tsx"],"sourcesContent":["import { Container, Grid, Typography } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexGrowCol, FlexGrowRow } from '@xylabs/react-flexbox'\nimport { LinkEx } from '@xylabs/react-link'\nimport { ReactElement } from 'react'\n\nimport { useGradientStyles, useIsMobile } from '../../hooks'\n\nexport interface BasicHeroProps extends FlexBoxProps {\n backgroundColor?: string\n backgroundImage?: string\n button1Href?: string\n button1Text?: string\n button1To?: string\n button2Href?: string\n button2Text?: string\n button2To?: string\n desc: string\n gradientTitle?: string\n heroImage?: string\n subLinkIcon?: ReactElement\n subLinkPath?: string\n subLinkText1?: string\n subLinkText2?: string\n sx?: Record<string, string>\n textColor?: string\n title: string\n title2?: string\n}\n\ninterface SubLinkSectionProps {\n backgroundImageAlignment?: boolean\n subLinkIcon?: ReactElement\n subLinkPath?: string\n subLinkText1?: string\n subLinkText2?: string\n}\n\ninterface ButtonSectionProps {\n buttonText?: string\n href?: string\n to?: string\n}\nconst SubLinkSection: React.FC<SubLinkSectionProps> = ({ backgroundImageAlignment, subLinkIcon, subLinkPath, subLinkText1, subLinkText2 }) => {\n return (\n <FlexGrowRow\n width=\"100%\"\n sx={{ flexDirection: { md: 'row', xs: 'column' }, justifyContent: { md: backgroundImageAlignment ? 'flex-start' : 'center', xs: 'center' } }}\n >\n {subLinkIcon ? <span>{subLinkIcon} </span> : null}\n <Typography>{subLinkText1} </Typography>\n <LinkEx href={subLinkPath} underline=\"always\" target=\"_blank\" color=\"inherit\">\n <Typography>{subLinkText2}</Typography>\n </LinkEx>\n </FlexGrowRow>\n )\n}\n\nconst ButtonSection: React.FC<ButtonSectionProps> = ({ href, to, buttonText }) => {\n const isMobile = useIsMobile()\n return (\n <ButtonEx\n fullWidth={true}\n marginTop={1}\n marginBottom={1}\n marginRight={isMobile ? 2 : 1}\n marginLeft={isMobile ? 2 : 0}\n target={href ?? '_blank'}\n to={to}\n href={href}\n color=\"primary\"\n variant=\"contained\"\n paddingX={3}\n sx={{ display: href || to ? 'flex' : 'none' }}\n >\n {buttonText}\n </ButtonEx>\n )\n}\n\nexport const BasicHero: React.FC<BasicHeroProps> = ({\n backgroundImage,\n title,\n gradientTitle,\n backgroundColor,\n textColor,\n desc,\n heroImage,\n title2,\n subLinkText1,\n subLinkText2,\n subLinkPath,\n button1Text,\n button2Text,\n button2To,\n button1To,\n button2Href,\n button1Href,\n subLinkIcon,\n sx,\n ...props\n}) => {\n const isMobile = useIsMobile()\n const { classes } = useGradientStyles()\n return (\n <FlexGrowCol\n sx={{\n backgroundImage: `url(${backgroundImage})`,\n backgroundPosition: { lg: 'bottom', md: 'center left', xs: 'top left' },\n minHeight: {\n md: '500px',\n sm: '400px',\n xs: '200px',\n },\n ...(sx ?? {}),\n }}\n style={{\n backgroundColor: backgroundColor ?? '',\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n color: textColor ?? '',\n }}\n {...props}\n >\n <Container>\n <Grid\n container\n justifyContent=\"center\"\n alignItems=\"center\"\n sx={{\n alignItems: { xs: 'center' },\n justifyContent: { xs: 'center' },\n }}\n >\n <Grid item xs={12} sm={8} md={backgroundImage ? 6 : 8} lg={backgroundImage ? 6 : 8}>\n <FlexGrowCol paddingY={2} sx={{ alignItems: { xs: backgroundImage && !isMobile ? 'flex-start' : 'center' } }}>\n <Typography variant=\"h1\" component=\"h1\" gutterBottom textAlign={backgroundImage && !isMobile ? 'left' : 'center'}>\n {title ? <span>{`${title} `}</span> : null}\n {gradientTitle ? <span className={classes().heading}> {` ${gradientTitle}`}</span> : null}\n {title2 ? <span>{` ${title2}`}</span> : null}\n </Typography>\n <Typography variant=\"body1\" component=\"h2\" gutterBottom textAlign={backgroundImage && !isMobile ? 'left' : 'center'}>\n {desc}\n </Typography>\n <FlexGrowRow sx={{ flexDirection: { lg: 'row', xs: 'column' } }} width=\"100%\" marginTop={1}>\n <ButtonSection href={button1Href} to={button1To} buttonText={button1Text} />\n <ButtonSection href={button2Href} to={button2To} buttonText={button2Text} />\n </FlexGrowRow>\n <SubLinkSection\n subLinkIcon={subLinkIcon}\n subLinkText1={subLinkText1}\n subLinkText2={subLinkText2}\n subLinkPath={subLinkPath}\n backgroundImageAlignment={backgroundImage ? true : false}\n />\n </FlexGrowCol>\n </Grid>\n <Grid item xs={12} md={6}>\n {heroImage ? <img src={heroImage} width=\"100%\" /> : null}\n </Grid>\n </Grid>\n </Container>\n </FlexGrowCol>\n )\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/BasicHero/BasicHero.tsx","../../../../src/hooks/GradientStyles/GradientStyles.tsx","../../../../src/hooks/useIsMobile.ts","../../../../src/hooks/useMediaQuery.ts"],"sourcesContent":["import { Container, Grid, Typography } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexGrowCol, FlexGrowRow } from '@xylabs/react-flexbox'\nimport { LinkEx } from '@xylabs/react-link'\nimport { ReactElement } from 'react'\n\nimport { useGradientStyles, useIsMobile } from '../../hooks'\n\nexport interface BasicHeroProps extends FlexBoxProps {\n backgroundColor?: string\n backgroundImage?: string\n button1Href?: string\n button1Text?: string\n button1To?: string\n button2Href?: string\n button2Text?: string\n button2To?: string\n desc: string\n gradientTitle?: string\n heroImage?: string\n subLinkIcon?: ReactElement\n subLinkPath?: string\n subLinkText1?: string\n subLinkText2?: string\n sx?: Record<string, string>\n textColor?: string\n title: string\n title2?: string\n}\n\ninterface SubLinkSectionProps {\n backgroundImageAlignment?: boolean\n subLinkIcon?: ReactElement\n subLinkPath?: string\n subLinkText1?: string\n subLinkText2?: string\n}\n\ninterface ButtonSectionProps {\n buttonText?: string\n href?: string\n to?: string\n}\nconst SubLinkSection: React.FC<SubLinkSectionProps> = ({ backgroundImageAlignment, subLinkIcon, subLinkPath, subLinkText1, subLinkText2 }) => {\n return (\n <FlexGrowRow\n width=\"100%\"\n sx={{ flexDirection: { md: 'row', xs: 'column' }, justifyContent: { md: backgroundImageAlignment ? 'flex-start' : 'center', xs: 'center' } }}\n >\n {subLinkIcon ? <span>{subLinkIcon} </span> : null}\n <Typography>{subLinkText1} </Typography>\n <LinkEx href={subLinkPath} underline=\"always\" target=\"_blank\" color=\"inherit\">\n <Typography>{subLinkText2}</Typography>\n </LinkEx>\n </FlexGrowRow>\n )\n}\n\nconst ButtonSection: React.FC<ButtonSectionProps> = ({ href, to, buttonText }) => {\n const isMobile = useIsMobile()\n return (\n <ButtonEx\n fullWidth={true}\n marginTop={1}\n marginBottom={1}\n marginRight={isMobile ? 2 : 1}\n marginLeft={isMobile ? 2 : 0}\n target={href ?? '_blank'}\n to={to}\n href={href}\n color=\"primary\"\n variant=\"contained\"\n paddingX={3}\n sx={{ display: href || to ? 'flex' : 'none' }}\n >\n {buttonText}\n </ButtonEx>\n )\n}\n\nexport const BasicHero: React.FC<BasicHeroProps> = ({\n backgroundImage,\n title,\n gradientTitle,\n backgroundColor,\n textColor,\n desc,\n heroImage,\n title2,\n subLinkText1,\n subLinkText2,\n subLinkPath,\n button1Text,\n button2Text,\n button2To,\n button1To,\n button2Href,\n button1Href,\n subLinkIcon,\n sx,\n ...props\n}) => {\n const isMobile = useIsMobile()\n const { classes } = useGradientStyles()\n return (\n <FlexGrowCol\n sx={{\n backgroundImage: `url(${backgroundImage})`,\n backgroundPosition: { lg: 'bottom', md: 'center left', xs: 'top left' },\n minHeight: {\n md: '500px',\n sm: '400px',\n xs: '200px',\n },\n ...(sx ?? {}),\n }}\n style={{\n backgroundColor: backgroundColor ?? '',\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n color: textColor ?? '',\n }}\n {...props}\n >\n <Container>\n <Grid\n container\n justifyContent=\"center\"\n alignItems=\"center\"\n sx={{\n alignItems: { xs: 'center' },\n justifyContent: { xs: 'center' },\n }}\n >\n <Grid item xs={12} sm={8} md={backgroundImage ? 6 : 8} lg={backgroundImage ? 6 : 8}>\n <FlexGrowCol paddingY={2} sx={{ alignItems: { xs: backgroundImage && !isMobile ? 'flex-start' : 'center' } }}>\n <Typography variant=\"h1\" component=\"h1\" gutterBottom textAlign={backgroundImage && !isMobile ? 'left' : 'center'}>\n {title ? <span>{`${title} `}</span> : null}\n {gradientTitle ? <span className={classes().heading}> {` ${gradientTitle}`}</span> : null}\n {title2 ? <span>{` ${title2}`}</span> : null}\n </Typography>\n <Typography variant=\"body1\" component=\"h2\" gutterBottom textAlign={backgroundImage && !isMobile ? 'left' : 'center'}>\n {desc}\n </Typography>\n <FlexGrowRow sx={{ flexDirection: { lg: 'row', xs: 'column' } }} width=\"100%\" marginTop={1}>\n <ButtonSection href={button1Href} to={button1To} buttonText={button1Text} />\n <ButtonSection href={button2Href} to={button2To} buttonText={button2Text} />\n </FlexGrowRow>\n <SubLinkSection\n subLinkIcon={subLinkIcon}\n subLinkText1={subLinkText1}\n subLinkText2={subLinkText2}\n subLinkPath={subLinkPath}\n backgroundImageAlignment={backgroundImage ? true : false}\n />\n </FlexGrowCol>\n </Grid>\n <Grid item xs={12} md={6}>\n {heroImage ? <img src={heroImage} width=\"100%\" /> : null}\n </Grid>\n </Grid>\n </Container>\n </FlexGrowCol>\n )\n}\n","import { useTheme } from '@mui/material'\nimport { makeStyles } from '@mui/styles'\nimport { CSSProperties } from 'react'\n\nexport interface GradientStyles {\n background: CSSProperties\n border: CSSProperties\n heading: CSSProperties\n}\n\nexport const colorfulGradientLightMode = () => {\n return {\n background: {\n backgroundImage: '-webkit-linear-gradient(232deg, #e17751, #d84e7a, #5898dd, #8c8ee5)',\n },\n border: {\n borderImage: '-webkit-linear-gradient(232deg, #e17751, #d84e7a, #5898dd, #8c8ee5)',\n borderImageSlice: 1,\n borderImageSource: '-webkit-linear-gradient(232deg, #e17751, #d84e7a, #5898dd, #8c8ee5)',\n borderRadius: 0,\n borderStyle: 'solid',\n borderWidth: '2px',\n },\n heading: {\n WebkitBackgroundClip: 'text',\n WebkitTextFillColor: 'transparent',\n background: '-webkit-linear-gradient(232deg, #e17751, #d84e7a, #5898dd, #8c8ee5)',\n display: 'inline-block',\n },\n }\n}\n\nexport const colorfulGradientDarkMode = () => {\n return {\n background: {\n backgroundImage: '-webkit-linear-gradient(232deg, #F17938, #FF5BDC, #5898dd, #B2FFFD)',\n },\n border: {\n borderImage: '-webkit-linear-gradient(232deg, #F17938, #FF5BDC, #5898dd, #B2FFFD)',\n borderImageSlice: 1,\n borderImageSource: '-webkit-linear-gradient(232deg, #F17938, #FF5BDC, #5898dd, #B2FFFD)',\n borderRadius: 0,\n borderStyle: 'solid',\n borderWidth: '2px',\n },\n heading: {\n WebkitBackgroundClip: 'text',\n WebkitTextFillColor: 'transparent',\n background: '-webkit-linear-gradient(232deg, #F17938, #FF5BDC, #5898dd, #B2FFFD)',\n display: 'inline-block',\n },\n }\n}\n\nexport const useGradientStyles = () => {\n const theme = useTheme()\n const styles = theme.palette.mode === 'dark' ? colorfulGradientDarkMode() : colorfulGradientLightMode()\n const classes = makeStyles(styles)\n return { classes, styles }\n}\n","import { useTheme } from '@mui/material'\n\nimport { useMediaQuery } from './useMediaQuery'\n\nexport const useIsMobile = () => {\n const theme = useTheme()\n return useMediaQuery(theme.breakpoints.down('md'))\n}\n","// eslint-disable-next-line import/no-deprecated\nimport { useMediaQuery } from '@mui/material'\n\n// eslint-disable-next-line import/no-deprecated\nexport { useMediaQuery }\n\n/* This file only exists to deal with the false positve lint error */\n"],"mappings":"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","names":["useTheme","useTheme"]}
|
|
@@ -1,2 +1,204 @@
|
|
|
1
|
-
|
|
1
|
+
// src/components/BasicHero/BasicHero.tsx
|
|
2
|
+
import { Container, Grid, Typography } from "@mui/material";
|
|
3
|
+
import { ButtonEx } from "@xylabs/react-button";
|
|
4
|
+
import { FlexGrowCol, FlexGrowRow } from "@xylabs/react-flexbox";
|
|
5
|
+
import { LinkEx } from "@xylabs/react-link";
|
|
6
|
+
|
|
7
|
+
// src/hooks/GradientStyles/GradientStyles.tsx
|
|
8
|
+
import { useTheme } from "@mui/material";
|
|
9
|
+
import { makeStyles } from "@mui/styles";
|
|
10
|
+
var colorfulGradientLightMode = () => {
|
|
11
|
+
return {
|
|
12
|
+
background: {
|
|
13
|
+
backgroundImage: "-webkit-linear-gradient(232deg, #e17751, #d84e7a, #5898dd, #8c8ee5)"
|
|
14
|
+
},
|
|
15
|
+
border: {
|
|
16
|
+
borderImage: "-webkit-linear-gradient(232deg, #e17751, #d84e7a, #5898dd, #8c8ee5)",
|
|
17
|
+
borderImageSlice: 1,
|
|
18
|
+
borderImageSource: "-webkit-linear-gradient(232deg, #e17751, #d84e7a, #5898dd, #8c8ee5)",
|
|
19
|
+
borderRadius: 0,
|
|
20
|
+
borderStyle: "solid",
|
|
21
|
+
borderWidth: "2px"
|
|
22
|
+
},
|
|
23
|
+
heading: {
|
|
24
|
+
WebkitBackgroundClip: "text",
|
|
25
|
+
WebkitTextFillColor: "transparent",
|
|
26
|
+
background: "-webkit-linear-gradient(232deg, #e17751, #d84e7a, #5898dd, #8c8ee5)",
|
|
27
|
+
display: "inline-block"
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
var colorfulGradientDarkMode = () => {
|
|
32
|
+
return {
|
|
33
|
+
background: {
|
|
34
|
+
backgroundImage: "-webkit-linear-gradient(232deg, #F17938, #FF5BDC, #5898dd, #B2FFFD)"
|
|
35
|
+
},
|
|
36
|
+
border: {
|
|
37
|
+
borderImage: "-webkit-linear-gradient(232deg, #F17938, #FF5BDC, #5898dd, #B2FFFD)",
|
|
38
|
+
borderImageSlice: 1,
|
|
39
|
+
borderImageSource: "-webkit-linear-gradient(232deg, #F17938, #FF5BDC, #5898dd, #B2FFFD)",
|
|
40
|
+
borderRadius: 0,
|
|
41
|
+
borderStyle: "solid",
|
|
42
|
+
borderWidth: "2px"
|
|
43
|
+
},
|
|
44
|
+
heading: {
|
|
45
|
+
WebkitBackgroundClip: "text",
|
|
46
|
+
WebkitTextFillColor: "transparent",
|
|
47
|
+
background: "-webkit-linear-gradient(232deg, #F17938, #FF5BDC, #5898dd, #B2FFFD)",
|
|
48
|
+
display: "inline-block"
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
var useGradientStyles = () => {
|
|
53
|
+
const theme = useTheme();
|
|
54
|
+
const styles = theme.palette.mode === "dark" ? colorfulGradientDarkMode() : colorfulGradientLightMode();
|
|
55
|
+
const classes = makeStyles(styles);
|
|
56
|
+
return { classes, styles };
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
// src/hooks/useIsMobile.ts
|
|
60
|
+
import { useTheme as useTheme2 } from "@mui/material";
|
|
61
|
+
|
|
62
|
+
// src/hooks/useMediaQuery.ts
|
|
63
|
+
import { useMediaQuery } from "@mui/material";
|
|
64
|
+
|
|
65
|
+
// src/hooks/useIsMobile.ts
|
|
66
|
+
var useIsMobile = () => {
|
|
67
|
+
const theme = useTheme2();
|
|
68
|
+
return useMediaQuery(theme.breakpoints.down("md"));
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
// src/components/BasicHero/BasicHero.tsx
|
|
72
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
73
|
+
var SubLinkSection = ({ backgroundImageAlignment, subLinkIcon, subLinkPath, subLinkText1, subLinkText2 }) => {
|
|
74
|
+
return /* @__PURE__ */ jsxs(
|
|
75
|
+
FlexGrowRow,
|
|
76
|
+
{
|
|
77
|
+
width: "100%",
|
|
78
|
+
sx: { flexDirection: { md: "row", xs: "column" }, justifyContent: { md: backgroundImageAlignment ? "flex-start" : "center", xs: "center" } },
|
|
79
|
+
children: [
|
|
80
|
+
subLinkIcon ? /* @__PURE__ */ jsxs("span", { children: [
|
|
81
|
+
subLinkIcon,
|
|
82
|
+
"\xA0"
|
|
83
|
+
] }) : null,
|
|
84
|
+
/* @__PURE__ */ jsxs(Typography, { children: [
|
|
85
|
+
subLinkText1,
|
|
86
|
+
"\xA0"
|
|
87
|
+
] }),
|
|
88
|
+
/* @__PURE__ */ jsx(LinkEx, { href: subLinkPath, underline: "always", target: "_blank", color: "inherit", children: /* @__PURE__ */ jsx(Typography, { children: subLinkText2 }) })
|
|
89
|
+
]
|
|
90
|
+
}
|
|
91
|
+
);
|
|
92
|
+
};
|
|
93
|
+
var ButtonSection = ({ href, to, buttonText }) => {
|
|
94
|
+
const isMobile = useIsMobile();
|
|
95
|
+
return /* @__PURE__ */ jsx(
|
|
96
|
+
ButtonEx,
|
|
97
|
+
{
|
|
98
|
+
fullWidth: true,
|
|
99
|
+
marginTop: 1,
|
|
100
|
+
marginBottom: 1,
|
|
101
|
+
marginRight: isMobile ? 2 : 1,
|
|
102
|
+
marginLeft: isMobile ? 2 : 0,
|
|
103
|
+
target: href ?? "_blank",
|
|
104
|
+
to,
|
|
105
|
+
href,
|
|
106
|
+
color: "primary",
|
|
107
|
+
variant: "contained",
|
|
108
|
+
paddingX: 3,
|
|
109
|
+
sx: { display: href || to ? "flex" : "none" },
|
|
110
|
+
children: buttonText
|
|
111
|
+
}
|
|
112
|
+
);
|
|
113
|
+
};
|
|
114
|
+
var BasicHero = ({
|
|
115
|
+
backgroundImage,
|
|
116
|
+
title,
|
|
117
|
+
gradientTitle,
|
|
118
|
+
backgroundColor,
|
|
119
|
+
textColor,
|
|
120
|
+
desc,
|
|
121
|
+
heroImage,
|
|
122
|
+
title2,
|
|
123
|
+
subLinkText1,
|
|
124
|
+
subLinkText2,
|
|
125
|
+
subLinkPath,
|
|
126
|
+
button1Text,
|
|
127
|
+
button2Text,
|
|
128
|
+
button2To,
|
|
129
|
+
button1To,
|
|
130
|
+
button2Href,
|
|
131
|
+
button1Href,
|
|
132
|
+
subLinkIcon,
|
|
133
|
+
sx,
|
|
134
|
+
...props
|
|
135
|
+
}) => {
|
|
136
|
+
const isMobile = useIsMobile();
|
|
137
|
+
const { classes } = useGradientStyles();
|
|
138
|
+
return /* @__PURE__ */ jsx(
|
|
139
|
+
FlexGrowCol,
|
|
140
|
+
{
|
|
141
|
+
sx: {
|
|
142
|
+
backgroundImage: `url(${backgroundImage})`,
|
|
143
|
+
backgroundPosition: { lg: "bottom", md: "center left", xs: "top left" },
|
|
144
|
+
minHeight: {
|
|
145
|
+
md: "500px",
|
|
146
|
+
sm: "400px",
|
|
147
|
+
xs: "200px"
|
|
148
|
+
},
|
|
149
|
+
...sx ?? {}
|
|
150
|
+
},
|
|
151
|
+
style: {
|
|
152
|
+
backgroundColor: backgroundColor ?? "",
|
|
153
|
+
backgroundRepeat: "no-repeat",
|
|
154
|
+
backgroundSize: "cover",
|
|
155
|
+
color: textColor ?? ""
|
|
156
|
+
},
|
|
157
|
+
...props,
|
|
158
|
+
children: /* @__PURE__ */ jsx(Container, { children: /* @__PURE__ */ jsxs(
|
|
159
|
+
Grid,
|
|
160
|
+
{
|
|
161
|
+
container: true,
|
|
162
|
+
justifyContent: "center",
|
|
163
|
+
alignItems: "center",
|
|
164
|
+
sx: {
|
|
165
|
+
alignItems: { xs: "center" },
|
|
166
|
+
justifyContent: { xs: "center" }
|
|
167
|
+
},
|
|
168
|
+
children: [
|
|
169
|
+
/* @__PURE__ */ jsx(Grid, { item: true, xs: 12, sm: 8, md: backgroundImage ? 6 : 8, lg: backgroundImage ? 6 : 8, children: /* @__PURE__ */ jsxs(FlexGrowCol, { paddingY: 2, sx: { alignItems: { xs: backgroundImage && !isMobile ? "flex-start" : "center" } }, children: [
|
|
170
|
+
/* @__PURE__ */ jsxs(Typography, { variant: "h1", component: "h1", gutterBottom: true, textAlign: backgroundImage && !isMobile ? "left" : "center", children: [
|
|
171
|
+
title ? /* @__PURE__ */ jsx("span", { children: `${title} ` }) : null,
|
|
172
|
+
gradientTitle ? /* @__PURE__ */ jsxs("span", { className: classes().heading, children: [
|
|
173
|
+
" ",
|
|
174
|
+
` ${gradientTitle}`
|
|
175
|
+
] }) : null,
|
|
176
|
+
title2 ? /* @__PURE__ */ jsx("span", { children: ` ${title2}` }) : null
|
|
177
|
+
] }),
|
|
178
|
+
/* @__PURE__ */ jsx(Typography, { variant: "body1", component: "h2", gutterBottom: true, textAlign: backgroundImage && !isMobile ? "left" : "center", children: desc }),
|
|
179
|
+
/* @__PURE__ */ jsxs(FlexGrowRow, { sx: { flexDirection: { lg: "row", xs: "column" } }, width: "100%", marginTop: 1, children: [
|
|
180
|
+
/* @__PURE__ */ jsx(ButtonSection, { href: button1Href, to: button1To, buttonText: button1Text }),
|
|
181
|
+
/* @__PURE__ */ jsx(ButtonSection, { href: button2Href, to: button2To, buttonText: button2Text })
|
|
182
|
+
] }),
|
|
183
|
+
/* @__PURE__ */ jsx(
|
|
184
|
+
SubLinkSection,
|
|
185
|
+
{
|
|
186
|
+
subLinkIcon,
|
|
187
|
+
subLinkText1,
|
|
188
|
+
subLinkText2,
|
|
189
|
+
subLinkPath,
|
|
190
|
+
backgroundImageAlignment: backgroundImage ? true : false
|
|
191
|
+
}
|
|
192
|
+
)
|
|
193
|
+
] }) }),
|
|
194
|
+
/* @__PURE__ */ jsx(Grid, { item: true, xs: 12, md: 6, children: heroImage ? /* @__PURE__ */ jsx("img", { src: heroImage, width: "100%" }) : null })
|
|
195
|
+
]
|
|
196
|
+
}
|
|
197
|
+
) })
|
|
198
|
+
}
|
|
199
|
+
);
|
|
200
|
+
};
|
|
201
|
+
export {
|
|
202
|
+
BasicHero
|
|
203
|
+
};
|
|
2
204
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/BasicHero/index.ts"],"sourcesContent":["export * from './BasicHero'\n"],"mappings":"AAAA,cAAc;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/BasicHero/BasicHero.tsx","../../../../src/hooks/GradientStyles/GradientStyles.tsx","../../../../src/hooks/useIsMobile.ts","../../../../src/hooks/useMediaQuery.ts"],"sourcesContent":["import { Container, Grid, Typography } from '@mui/material'\nimport { ButtonEx } from '@xylabs/react-button'\nimport { FlexBoxProps, FlexGrowCol, FlexGrowRow } from '@xylabs/react-flexbox'\nimport { LinkEx } from '@xylabs/react-link'\nimport { ReactElement } from 'react'\n\nimport { useGradientStyles, useIsMobile } from '../../hooks'\n\nexport interface BasicHeroProps extends FlexBoxProps {\n backgroundColor?: string\n backgroundImage?: string\n button1Href?: string\n button1Text?: string\n button1To?: string\n button2Href?: string\n button2Text?: string\n button2To?: string\n desc: string\n gradientTitle?: string\n heroImage?: string\n subLinkIcon?: ReactElement\n subLinkPath?: string\n subLinkText1?: string\n subLinkText2?: string\n sx?: Record<string, string>\n textColor?: string\n title: string\n title2?: string\n}\n\ninterface SubLinkSectionProps {\n backgroundImageAlignment?: boolean\n subLinkIcon?: ReactElement\n subLinkPath?: string\n subLinkText1?: string\n subLinkText2?: string\n}\n\ninterface ButtonSectionProps {\n buttonText?: string\n href?: string\n to?: string\n}\nconst SubLinkSection: React.FC<SubLinkSectionProps> = ({ backgroundImageAlignment, subLinkIcon, subLinkPath, subLinkText1, subLinkText2 }) => {\n return (\n <FlexGrowRow\n width=\"100%\"\n sx={{ flexDirection: { md: 'row', xs: 'column' }, justifyContent: { md: backgroundImageAlignment ? 'flex-start' : 'center', xs: 'center' } }}\n >\n {subLinkIcon ? <span>{subLinkIcon} </span> : null}\n <Typography>{subLinkText1} </Typography>\n <LinkEx href={subLinkPath} underline=\"always\" target=\"_blank\" color=\"inherit\">\n <Typography>{subLinkText2}</Typography>\n </LinkEx>\n </FlexGrowRow>\n )\n}\n\nconst ButtonSection: React.FC<ButtonSectionProps> = ({ href, to, buttonText }) => {\n const isMobile = useIsMobile()\n return (\n <ButtonEx\n fullWidth={true}\n marginTop={1}\n marginBottom={1}\n marginRight={isMobile ? 2 : 1}\n marginLeft={isMobile ? 2 : 0}\n target={href ?? '_blank'}\n to={to}\n href={href}\n color=\"primary\"\n variant=\"contained\"\n paddingX={3}\n sx={{ display: href || to ? 'flex' : 'none' }}\n >\n {buttonText}\n </ButtonEx>\n )\n}\n\nexport const BasicHero: React.FC<BasicHeroProps> = ({\n backgroundImage,\n title,\n gradientTitle,\n backgroundColor,\n textColor,\n desc,\n heroImage,\n title2,\n subLinkText1,\n subLinkText2,\n subLinkPath,\n button1Text,\n button2Text,\n button2To,\n button1To,\n button2Href,\n button1Href,\n subLinkIcon,\n sx,\n ...props\n}) => {\n const isMobile = useIsMobile()\n const { classes } = useGradientStyles()\n return (\n <FlexGrowCol\n sx={{\n backgroundImage: `url(${backgroundImage})`,\n backgroundPosition: { lg: 'bottom', md: 'center left', xs: 'top left' },\n minHeight: {\n md: '500px',\n sm: '400px',\n xs: '200px',\n },\n ...(sx ?? {}),\n }}\n style={{\n backgroundColor: backgroundColor ?? '',\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n color: textColor ?? '',\n }}\n {...props}\n >\n <Container>\n <Grid\n container\n justifyContent=\"center\"\n alignItems=\"center\"\n sx={{\n alignItems: { xs: 'center' },\n justifyContent: { xs: 'center' },\n }}\n >\n <Grid item xs={12} sm={8} md={backgroundImage ? 6 : 8} lg={backgroundImage ? 6 : 8}>\n <FlexGrowCol paddingY={2} sx={{ alignItems: { xs: backgroundImage && !isMobile ? 'flex-start' : 'center' } }}>\n <Typography variant=\"h1\" component=\"h1\" gutterBottom textAlign={backgroundImage && !isMobile ? 'left' : 'center'}>\n {title ? <span>{`${title} `}</span> : null}\n {gradientTitle ? <span className={classes().heading}> {` ${gradientTitle}`}</span> : null}\n {title2 ? <span>{` ${title2}`}</span> : null}\n </Typography>\n <Typography variant=\"body1\" component=\"h2\" gutterBottom textAlign={backgroundImage && !isMobile ? 'left' : 'center'}>\n {desc}\n </Typography>\n <FlexGrowRow sx={{ flexDirection: { lg: 'row', xs: 'column' } }} width=\"100%\" marginTop={1}>\n <ButtonSection href={button1Href} to={button1To} buttonText={button1Text} />\n <ButtonSection href={button2Href} to={button2To} buttonText={button2Text} />\n </FlexGrowRow>\n <SubLinkSection\n subLinkIcon={subLinkIcon}\n subLinkText1={subLinkText1}\n subLinkText2={subLinkText2}\n subLinkPath={subLinkPath}\n backgroundImageAlignment={backgroundImage ? true : false}\n />\n </FlexGrowCol>\n </Grid>\n <Grid item xs={12} md={6}>\n {heroImage ? <img src={heroImage} width=\"100%\" /> : null}\n </Grid>\n </Grid>\n </Container>\n </FlexGrowCol>\n )\n}\n","import { useTheme } from '@mui/material'\nimport { makeStyles } from '@mui/styles'\nimport { CSSProperties } from 'react'\n\nexport interface GradientStyles {\n background: CSSProperties\n border: CSSProperties\n heading: CSSProperties\n}\n\nexport const colorfulGradientLightMode = () => {\n return {\n background: {\n backgroundImage: '-webkit-linear-gradient(232deg, #e17751, #d84e7a, #5898dd, #8c8ee5)',\n },\n border: {\n borderImage: '-webkit-linear-gradient(232deg, #e17751, #d84e7a, #5898dd, #8c8ee5)',\n borderImageSlice: 1,\n borderImageSource: '-webkit-linear-gradient(232deg, #e17751, #d84e7a, #5898dd, #8c8ee5)',\n borderRadius: 0,\n borderStyle: 'solid',\n borderWidth: '2px',\n },\n heading: {\n WebkitBackgroundClip: 'text',\n WebkitTextFillColor: 'transparent',\n background: '-webkit-linear-gradient(232deg, #e17751, #d84e7a, #5898dd, #8c8ee5)',\n display: 'inline-block',\n },\n }\n}\n\nexport const colorfulGradientDarkMode = () => {\n return {\n background: {\n backgroundImage: '-webkit-linear-gradient(232deg, #F17938, #FF5BDC, #5898dd, #B2FFFD)',\n },\n border: {\n borderImage: '-webkit-linear-gradient(232deg, #F17938, #FF5BDC, #5898dd, #B2FFFD)',\n borderImageSlice: 1,\n borderImageSource: '-webkit-linear-gradient(232deg, #F17938, #FF5BDC, #5898dd, #B2FFFD)',\n borderRadius: 0,\n borderStyle: 'solid',\n borderWidth: '2px',\n },\n heading: {\n WebkitBackgroundClip: 'text',\n WebkitTextFillColor: 'transparent',\n background: '-webkit-linear-gradient(232deg, #F17938, #FF5BDC, #5898dd, #B2FFFD)',\n display: 'inline-block',\n },\n }\n}\n\nexport const useGradientStyles = () => {\n const theme = useTheme()\n const styles = theme.palette.mode === 'dark' ? colorfulGradientDarkMode() : colorfulGradientLightMode()\n const classes = makeStyles(styles)\n return { classes, styles }\n}\n","import { useTheme } from '@mui/material'\n\nimport { useMediaQuery } from './useMediaQuery'\n\nexport const useIsMobile = () => {\n const theme = useTheme()\n return useMediaQuery(theme.breakpoints.down('md'))\n}\n","// eslint-disable-next-line import/no-deprecated\nimport { useMediaQuery } from '@mui/material'\n\n// eslint-disable-next-line import/no-deprecated\nexport { useMediaQuery }\n\n/* This file only exists to deal with the false positve lint error */\n"],"mappings":"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","names":["useTheme","useTheme"]}
|
|
@@ -1,9 +1,29 @@
|
|
|
1
|
-
|
|
1
|
+
// src/components/Ellipsize.tsx
|
|
2
2
|
import { Box, styled, Typography } from "@mui/material";
|
|
3
3
|
import { forwardRef, useCallback, useState } from "react";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
|
|
5
|
+
// src/hooks/useShareForwardRef.ts
|
|
6
|
+
import { useEffect, useRef } from "react";
|
|
7
|
+
var useShareForwardedRef = (forwardedRef, refresh = 0) => {
|
|
8
|
+
const innerRef = useRef(null);
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
if (!forwardedRef) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
if (typeof forwardedRef === "function") {
|
|
14
|
+
forwardedRef(innerRef.current);
|
|
15
|
+
return;
|
|
16
|
+
} else {
|
|
17
|
+
forwardedRef.current = innerRef.current;
|
|
18
|
+
}
|
|
19
|
+
}, [forwardedRef, refresh]);
|
|
20
|
+
return innerRef;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
// src/components/Ellipsize.tsx
|
|
24
|
+
import { jsx } from "react/jsx-runtime";
|
|
25
|
+
var ComponentName = "Ellipsize";
|
|
26
|
+
var EllipsizeRoot = styled(Box, {
|
|
7
27
|
name: ComponentName,
|
|
8
28
|
shouldForwardProp: (prop) => prop !== "beforeLineHeight",
|
|
9
29
|
slot: "Root"
|
|
@@ -22,13 +42,13 @@ const EllipsizeRoot = styled(Box, {
|
|
|
22
42
|
}
|
|
23
43
|
}
|
|
24
44
|
}));
|
|
25
|
-
|
|
45
|
+
var EllipsizeInnerWrap = styled(Box, {
|
|
26
46
|
name: ComponentName,
|
|
27
47
|
slot: "innerWrap"
|
|
28
48
|
})(() => ({
|
|
29
49
|
position: "relative"
|
|
30
50
|
}));
|
|
31
|
-
|
|
51
|
+
var EllipsizeContentWrap = styled(Typography, {
|
|
32
52
|
name: ComponentName,
|
|
33
53
|
shouldForwardProp: (prop) => prop !== "ellipsisPosition",
|
|
34
54
|
slot: "contentWrap"
|
|
@@ -47,7 +67,7 @@ const EllipsizeContentWrap = styled(Typography, {
|
|
|
47
67
|
} : {}
|
|
48
68
|
});
|
|
49
69
|
});
|
|
50
|
-
|
|
70
|
+
var useClientHeight = () => {
|
|
51
71
|
const [contentWrapHeight, setContentWrapHeight] = useState();
|
|
52
72
|
const contentWrapRef = useCallback((node) => {
|
|
53
73
|
if (node !== null) {
|
|
@@ -56,7 +76,7 @@ const useClientHeight = () => {
|
|
|
56
76
|
}, []);
|
|
57
77
|
return { contentWrapHeight, contentWrapRef };
|
|
58
78
|
};
|
|
59
|
-
|
|
79
|
+
var EllipsizeBox = forwardRef(
|
|
60
80
|
({ children, ellipsisPosition = "start", disableSharedRef, typographyProps, ...props }, ref) => {
|
|
61
81
|
const { contentWrapRef, contentWrapHeight } = useClientHeight();
|
|
62
82
|
const sharedRef = useShareForwardedRef(ref);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/Ellipsize.tsx"],"sourcesContent":["import { Box, BoxProps, styled, Typography, TypographyProps, TypographyTypeMap } from '@mui/material'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { forwardRef, useCallback, useState } from 'react'\n\nimport { useShareForwardedRef } from '../hooks'\n\n/**\n * Heavily inspired by - https://stackoverflow.com/a/30362531/2803259\n */\n\nconst ComponentName = 'Ellipsize'\n\nexport interface EllipsizeRootProps extends BoxProps {\n beforeLineHeight?: string | number\n}\n\nconst EllipsizeRoot = styled(Box, {\n name: ComponentName,\n shouldForwardProp: (prop) => prop !== 'beforeLineHeight',\n slot: 'Root',\n})<EllipsizeRootProps>(({ beforeLineHeight }) => ({\n '&': {\n // because the cell content ends up absolutely positioned, the cell doesn't know the content height.\n // the pseudo element with a hidden character establishes the proper height of the content and hides it\n ':before': {\n content: \"'nbsp;'\",\n display: 'block',\n // take the pseudo element out of the `display: block` flow so it won't push against our actual content\n float: 'left',\n visibility: 'hidden',\n // since we are `display: block`, lineHeight is the height\n ...(beforeLineHeight && { lineHeight: beforeLineHeight }),\n },\n },\n}))\n\nconst EllipsizeInnerWrap = styled(Box, {\n name: ComponentName,\n slot: 'innerWrap',\n})(() => ({\n position: 'relative',\n}))\n\nconst EllipsizeContentWrap = styled(Typography, {\n name: ComponentName,\n shouldForwardProp: (prop) => prop !== 'ellipsisPosition',\n slot: 'contentWrap',\n})<TypographyWithComponentProps>(({ theme, ellipsisPosition, fontFamily }) => {\n return theme.unstable_sx({\n fontFamily: fontFamily ?? 'monospace',\n left: 0,\n overflow: 'hidden',\n position: 'absolute',\n right: 0,\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n ...(ellipsisPosition === 'start'\n ? {\n direction: 'rtl',\n textAlign: 'left',\n }\n : {}),\n })\n})\n\nconst useClientHeight = () => {\n const [contentWrapHeight, setContentWrapHeight] = useState<string>()\n\n const contentWrapRef = useCallback((node: HTMLElement) => {\n if (node !== null) {\n setContentWrapHeight(node.clientHeight + 'px')\n }\n }, [])\n\n return { contentWrapHeight, contentWrapRef }\n}\n\n// See - https://mui.com/material-ui/guides/composition/#with-typescript\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport type TypographyWithComponentProps<D extends React.ElementType = TypographyTypeMap['defaultComponent'], P = {}> = TypographyProps<D, P> & {\n ellipsisPosition?: 'start' | 'end'\n}\n\nexport interface EllipsizeBoxProps extends BoxProps {\n disableSharedRef?: boolean\n ellipsisPosition?: 'start' | 'end'\n typographyProps?: TypographyWithComponentProps\n}\n\nexport const EllipsizeBox = forwardRef<HTMLDivElement, WithChildren<EllipsizeBoxProps>>(\n ({ children, ellipsisPosition = 'start', disableSharedRef, typographyProps, ...props }, ref) => {\n // Allow syncing of :before pseudo element height with contentWrapHeight\n const { contentWrapRef, contentWrapHeight } = useClientHeight()\n const sharedRef = useShareForwardedRef(ref)\n\n return (\n <EllipsizeRoot beforeLineHeight={!!sharedRef && !disableSharedRef ? contentWrapHeight : undefined} {...props} ref={ref}>\n <EllipsizeInnerWrap>\n <EllipsizeContentWrap ref={contentWrapRef} component={'span'} ellipsisPosition={ellipsisPosition} variant=\"body2\" {...typographyProps}>\n {children}\n </EllipsizeContentWrap>\n </EllipsizeInnerWrap>\n </EllipsizeRoot>\n )\n },\n)\nEllipsizeBox.displayName = 'EllipsizeBox'\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/components/Ellipsize.tsx","../../../src/hooks/useShareForwardRef.ts"],"sourcesContent":["import { Box, BoxProps, styled, Typography, TypographyProps, TypographyTypeMap } from '@mui/material'\nimport { WithChildren } from '@xylabs/react-shared'\nimport { forwardRef, useCallback, useState } from 'react'\n\nimport { useShareForwardedRef } from '../hooks'\n\n/**\n * Heavily inspired by - https://stackoverflow.com/a/30362531/2803259\n */\n\nconst ComponentName = 'Ellipsize'\n\nexport interface EllipsizeRootProps extends BoxProps {\n beforeLineHeight?: string | number\n}\n\nconst EllipsizeRoot = styled(Box, {\n name: ComponentName,\n shouldForwardProp: (prop) => prop !== 'beforeLineHeight',\n slot: 'Root',\n})<EllipsizeRootProps>(({ beforeLineHeight }) => ({\n '&': {\n // because the cell content ends up absolutely positioned, the cell doesn't know the content height.\n // the pseudo element with a hidden character establishes the proper height of the content and hides it\n ':before': {\n content: \"'nbsp;'\",\n display: 'block',\n // take the pseudo element out of the `display: block` flow so it won't push against our actual content\n float: 'left',\n visibility: 'hidden',\n // since we are `display: block`, lineHeight is the height\n ...(beforeLineHeight && { lineHeight: beforeLineHeight }),\n },\n },\n}))\n\nconst EllipsizeInnerWrap = styled(Box, {\n name: ComponentName,\n slot: 'innerWrap',\n})(() => ({\n position: 'relative',\n}))\n\nconst EllipsizeContentWrap = styled(Typography, {\n name: ComponentName,\n shouldForwardProp: (prop) => prop !== 'ellipsisPosition',\n slot: 'contentWrap',\n})<TypographyWithComponentProps>(({ theme, ellipsisPosition, fontFamily }) => {\n return theme.unstable_sx({\n fontFamily: fontFamily ?? 'monospace',\n left: 0,\n overflow: 'hidden',\n position: 'absolute',\n right: 0,\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n ...(ellipsisPosition === 'start'\n ? {\n direction: 'rtl',\n textAlign: 'left',\n }\n : {}),\n })\n})\n\nconst useClientHeight = () => {\n const [contentWrapHeight, setContentWrapHeight] = useState<string>()\n\n const contentWrapRef = useCallback((node: HTMLElement) => {\n if (node !== null) {\n setContentWrapHeight(node.clientHeight + 'px')\n }\n }, [])\n\n return { contentWrapHeight, contentWrapRef }\n}\n\n// See - https://mui.com/material-ui/guides/composition/#with-typescript\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport type TypographyWithComponentProps<D extends React.ElementType = TypographyTypeMap['defaultComponent'], P = {}> = TypographyProps<D, P> & {\n ellipsisPosition?: 'start' | 'end'\n}\n\nexport interface EllipsizeBoxProps extends BoxProps {\n disableSharedRef?: boolean\n ellipsisPosition?: 'start' | 'end'\n typographyProps?: TypographyWithComponentProps\n}\n\nexport const EllipsizeBox = forwardRef<HTMLDivElement, WithChildren<EllipsizeBoxProps>>(\n ({ children, ellipsisPosition = 'start', disableSharedRef, typographyProps, ...props }, ref) => {\n // Allow syncing of :before pseudo element height with contentWrapHeight\n const { contentWrapRef, contentWrapHeight } = useClientHeight()\n const sharedRef = useShareForwardedRef(ref)\n\n return (\n <EllipsizeRoot beforeLineHeight={!!sharedRef && !disableSharedRef ? contentWrapHeight : undefined} {...props} ref={ref}>\n <EllipsizeInnerWrap>\n <EllipsizeContentWrap ref={contentWrapRef} component={'span'} ellipsisPosition={ellipsisPosition} variant=\"body2\" {...typographyProps}>\n {children}\n </EllipsizeContentWrap>\n </EllipsizeInnerWrap>\n </EllipsizeRoot>\n )\n },\n)\nEllipsizeBox.displayName = 'EllipsizeBox'\n","import { ForwardedRef, useEffect, useRef } from 'react'\n\nexport const useShareForwardedRef = <T>(forwardedRef: ForwardedRef<T>, refresh = 0) => {\n // final ref that will share value with forward ref. this is the one to be attached to components\n const innerRef = useRef<T>(null)\n\n useEffect(() => {\n if (!forwardedRef) {\n return\n }\n if (typeof forwardedRef === 'function') {\n forwardedRef(innerRef.current)\n return\n } else {\n forwardedRef.current = innerRef.current\n }\n }, [forwardedRef, refresh])\n\n return innerRef\n}\n"],"mappings":";AAAA,SAAS,KAAe,QAAQ,kBAAsD;AAEtF,SAAS,YAAY,aAAa,gBAAgB;;;ACFlD,SAAuB,WAAW,cAAc;AAEzC,IAAM,uBAAuB,CAAI,cAA+B,UAAU,MAAM;AAErF,QAAM,WAAW,OAAU,IAAI;AAE/B,YAAU,MAAM;AACd,QAAI,CAAC,cAAc;AACjB;AAAA,IACF;AACA,QAAI,OAAO,iBAAiB,YAAY;AACtC,mBAAa,SAAS,OAAO;AAC7B;AAAA,IACF,OAAO;AACL,mBAAa,UAAU,SAAS;AAAA,IAClC;AAAA,EACF,GAAG,CAAC,cAAc,OAAO,CAAC;AAE1B,SAAO;AACT;;;AD+EU;AAxFV,IAAM,gBAAgB;AAMtB,IAAM,gBAAgB,OAAO,KAAK;AAAA,EAChC,MAAM;AAAA,EACN,mBAAmB,CAAC,SAAS,SAAS;AAAA,EACtC,MAAM;AACR,CAAC,EAAsB,CAAC,EAAE,iBAAiB,OAAO;AAAA,EAChD,KAAK;AAAA;AAAA;AAAA,IAGH,WAAW;AAAA,MACT,SAAS;AAAA,MACT,SAAS;AAAA;AAAA,MAET,OAAO;AAAA,MACP,YAAY;AAAA;AAAA,MAEZ,GAAI,oBAAoB,EAAE,YAAY,iBAAiB;AAAA,IACzD;AAAA,EACF;AACF,EAAE;AAEF,IAAM,qBAAqB,OAAO,KAAK;AAAA,EACrC,MAAM;AAAA,EACN,MAAM;AACR,CAAC,EAAE,OAAO;AAAA,EACR,UAAU;AACZ,EAAE;AAEF,IAAM,uBAAuB,OAAO,YAAY;AAAA,EAC9C,MAAM;AAAA,EACN,mBAAmB,CAAC,SAAS,SAAS;AAAA,EACtC,MAAM;AACR,CAAC,EAAgC,CAAC,EAAE,OAAO,kBAAkB,WAAW,MAAM;AAC5E,SAAO,MAAM,YAAY;AAAA,IACvB,YAAY,cAAc;AAAA,IAC1B,MAAM;AAAA,IACN,UAAU;AAAA,IACV,UAAU;AAAA,IACV,OAAO;AAAA,IACP,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,GAAI,qBAAqB,UACrB;AAAA,MACE,WAAW;AAAA,MACX,WAAW;AAAA,IACb,IACA,CAAC;AAAA,EACP,CAAC;AACH,CAAC;AAED,IAAM,kBAAkB,MAAM;AAC5B,QAAM,CAAC,mBAAmB,oBAAoB,IAAI,SAAiB;AAEnE,QAAM,iBAAiB,YAAY,CAAC,SAAsB;AACxD,QAAI,SAAS,MAAM;AACjB,2BAAqB,KAAK,eAAe,IAAI;AAAA,IAC/C;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO,EAAE,mBAAmB,eAAe;AAC7C;AAcO,IAAM,eAAe;AAAA,EAC1B,CAAC,EAAE,UAAU,mBAAmB,SAAS,kBAAkB,iBAAiB,GAAG,MAAM,GAAG,QAAQ;AAE9F,UAAM,EAAE,gBAAgB,kBAAkB,IAAI,gBAAgB;AAC9D,UAAM,YAAY,qBAAqB,GAAG;AAE1C,WACE,oBAAC,iBAAc,kBAAkB,CAAC,CAAC,aAAa,CAAC,mBAAmB,oBAAoB,QAAY,GAAG,OAAO,KAC5G,8BAAC,sBACC,8BAAC,wBAAqB,KAAK,gBAAgB,WAAW,QAAQ,kBAAoC,SAAQ,SAAS,GAAG,iBACnH,UACH,GACF,GACF;AAAA,EAEJ;AACF;AACA,aAAa,cAAc;","names":[]}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
// src/components/ErrorBoundary.tsx
|
|
2
2
|
import { Typography } from "@mui/material";
|
|
3
3
|
import { FlexCol } from "@xylabs/react-flexbox";
|
|
4
4
|
import { Component } from "react";
|
|
5
|
-
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
var ErrorBoundary = class extends Component {
|
|
6
7
|
constructor(props) {
|
|
7
8
|
super(props);
|
|
8
9
|
this.state = { error: void 0 };
|
|
@@ -29,7 +30,7 @@ class ErrorBoundary extends Component {
|
|
|
29
30
|
}
|
|
30
31
|
return this.props.children;
|
|
31
32
|
}
|
|
32
|
-
}
|
|
33
|
+
};
|
|
33
34
|
export {
|
|
34
35
|
ErrorBoundary
|
|
35
36
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ErrorBoundary.tsx"],"sourcesContent":["import { Typography } from '@mui/material'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { Component, ErrorInfo, ReactNode } from 'react'\n\nexport interface ErrorBoundaryProps {\n children: ReactNode\n // fallback as a static ReactNode value\n fallback?: ReactNode\n // fallback element that can receive the error as a prop\n fallbackWithError?: (error: Error) => ReactNode\n}\n\nexport interface ErrorBoundaryState {\n error?: Error\n}\n\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n constructor(props: ErrorBoundaryProps) {\n super(props)\n this.state = { error: undefined }\n }\n\n static getDerivedStateFromError(error: Error) {\n return { error }\n }\n\n override componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n console.error(`${error}: ${errorInfo}`)\n }\n\n override render() {\n if (this.state.error) {\n if (this.props.fallbackWithError) {\n return this.props.fallbackWithError(this.state.error)\n }\n return (\n this.props.fallback ?? (\n <FlexCol>\n <Typography variant=\"h1\">Something went wrong.</Typography>\n <Typography variant=\"body1\">[{this.state.error?.message}]</Typography>\n </FlexCol>\n )\n )\n }\n\n return this.props.children\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ErrorBoundary.tsx"],"sourcesContent":["import { Typography } from '@mui/material'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { Component, ErrorInfo, ReactNode } from 'react'\n\nexport interface ErrorBoundaryProps {\n children: ReactNode\n // fallback as a static ReactNode value\n fallback?: ReactNode\n // fallback element that can receive the error as a prop\n fallbackWithError?: (error: Error) => ReactNode\n}\n\nexport interface ErrorBoundaryState {\n error?: Error\n}\n\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n constructor(props: ErrorBoundaryProps) {\n super(props)\n this.state = { error: undefined }\n }\n\n static getDerivedStateFromError(error: Error) {\n return { error }\n }\n\n override componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n console.error(`${error}: ${errorInfo}`)\n }\n\n override render() {\n if (this.state.error) {\n if (this.props.fallbackWithError) {\n return this.props.fallbackWithError(this.state.error)\n }\n return (\n this.props.fallback ?? (\n <FlexCol>\n <Typography variant=\"h1\">Something went wrong.</Typography>\n <Typography variant=\"body1\">[{this.state.error?.message}]</Typography>\n </FlexCol>\n )\n )\n }\n\n return this.props.children\n }\n}\n"],"mappings":";AAAA,SAAS,kBAAkB;AAC3B,SAAS,eAAe;AACxB,SAAS,iBAAuC;AAoCpC,cACA,YADA;AAtBL,IAAM,gBAAN,cAA4B,UAAkD;AAAA,EACnF,YAAY,OAA2B;AACrC,UAAM,KAAK;AACX,SAAK,QAAQ,EAAE,OAAO,OAAU;AAAA,EAClC;AAAA,EAEA,OAAO,yBAAyB,OAAc;AAC5C,WAAO,EAAE,MAAM;AAAA,EACjB;AAAA,EAES,kBAAkB,OAAc,WAAsB;AAC7D,YAAQ,MAAM,GAAG,KAAK,KAAK,SAAS,EAAE;AAAA,EACxC;AAAA,EAES,SAAS;AAChB,QAAI,KAAK,MAAM,OAAO;AACpB,UAAI,KAAK,MAAM,mBAAmB;AAChC,eAAO,KAAK,MAAM,kBAAkB,KAAK,MAAM,KAAK;AAAA,MACtD;AACA,aACE,KAAK,MAAM,YACT,qBAAC,WACC;AAAA,4BAAC,cAAW,SAAQ,MAAK,mCAAqB;AAAA,QAC9C,qBAAC,cAAW,SAAQ,SAAQ;AAAA;AAAA,UAAE,KAAK,MAAM,OAAO;AAAA,UAAQ;AAAA,WAAC;AAAA,SAC3D;AAAA,IAGN;AAEA,WAAO,KAAK,MAAM;AAAA,EACpB;AACF;","names":[]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
// src/components/ListItemButtonEx.tsx
|
|
2
2
|
import { ListItemButton } from "@mui/material";
|
|
3
3
|
import { useNavigate } from "react-router-dom";
|
|
4
|
-
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
var ListItemButtonExTo = ({ to, toOptions, onClick, ...props }) => {
|
|
5
6
|
const navigate = useNavigate();
|
|
6
7
|
const localOnClick = (event) => {
|
|
7
8
|
onClick?.(event);
|
|
@@ -11,7 +12,7 @@ const ListItemButtonExTo = ({ to, toOptions, onClick, ...props }) => {
|
|
|
11
12
|
};
|
|
12
13
|
return /* @__PURE__ */ jsx(ListItemButton, { onClick: localOnClick, ...props });
|
|
13
14
|
};
|
|
14
|
-
|
|
15
|
+
var ListItemButtonEx = ({ to, ...props }) => {
|
|
15
16
|
if (to) {
|
|
16
17
|
return /* @__PURE__ */ jsx(ListItemButtonExTo, { to, ...props });
|
|
17
18
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/ListItemButtonEx.tsx"],"sourcesContent":["import { ListItemButton, ListItemButtonProps } from '@mui/material'\nimport { MouseEvent } from 'react'\nimport { NavigateOptions, To, useNavigate } from 'react-router-dom'\n\nexport interface ListItemButtonExProps extends ListItemButtonProps {\n target?: string\n to?: To\n toOptions?: NavigateOptions\n}\n\nexport const ListItemButtonExTo: React.FC<ListItemButtonExProps> = ({ to, toOptions, onClick, ...props }) => {\n const navigate = useNavigate()\n const localOnClick = (event: MouseEvent<HTMLDivElement>) => {\n onClick?.(event)\n if (to) {\n navigate(to, toOptions)\n }\n }\n\n return <ListItemButton onClick={localOnClick} {...props} />\n}\n\nexport const ListItemButtonEx: React.FC<ListItemButtonExProps> = ({ to, ...props }) => {\n if (to) {\n return <ListItemButtonExTo to={to} {...props} />\n } else {\n return <ListItemButton {...props} />\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/components/ListItemButtonEx.tsx"],"sourcesContent":["import { ListItemButton, ListItemButtonProps } from '@mui/material'\nimport { MouseEvent } from 'react'\nimport { NavigateOptions, To, useNavigate } from 'react-router-dom'\n\nexport interface ListItemButtonExProps extends ListItemButtonProps {\n target?: string\n to?: To\n toOptions?: NavigateOptions\n}\n\nexport const ListItemButtonExTo: React.FC<ListItemButtonExProps> = ({ to, toOptions, onClick, ...props }) => {\n const navigate = useNavigate()\n const localOnClick = (event: MouseEvent<HTMLDivElement>) => {\n onClick?.(event)\n if (to) {\n navigate(to, toOptions)\n }\n }\n\n return <ListItemButton onClick={localOnClick} {...props} />\n}\n\nexport const ListItemButtonEx: React.FC<ListItemButtonExProps> = ({ to, ...props }) => {\n if (to) {\n return <ListItemButtonExTo to={to} {...props} />\n } else {\n return <ListItemButton {...props} />\n }\n}\n"],"mappings":";AAAA,SAAS,sBAA2C;AAEpD,SAA8B,mBAAmB;AAiBxC;AATF,IAAM,qBAAsD,CAAC,EAAE,IAAI,WAAW,SAAS,GAAG,MAAM,MAAM;AAC3G,QAAM,WAAW,YAAY;AAC7B,QAAM,eAAe,CAAC,UAAsC;AAC1D,cAAU,KAAK;AACf,QAAI,IAAI;AACN,eAAS,IAAI,SAAS;AAAA,IACxB;AAAA,EACF;AAEA,SAAO,oBAAC,kBAAe,SAAS,cAAe,GAAG,OAAO;AAC3D;AAEO,IAAM,mBAAoD,CAAC,EAAE,IAAI,GAAG,MAAM,MAAM;AACrF,MAAI,IAAI;AACN,WAAO,oBAAC,sBAAmB,IAAS,GAAG,OAAO;AAAA,EAChD,OAAO;AACL,WAAO,oBAAC,kBAAgB,GAAG,OAAO;AAAA,EACpC;AACF;","names":[]}
|
|
@@ -1,18 +1,31 @@
|
|
|
1
|
-
|
|
1
|
+
// src/components/LoadResult.tsx
|
|
2
2
|
import { FlexGrowRow } from "@xylabs/react-flexbox";
|
|
3
|
-
|
|
3
|
+
|
|
4
|
+
// src/components/NotFound.tsx
|
|
5
|
+
import { Typography } from "@mui/material";
|
|
6
|
+
import { FlexGrowCol } from "@xylabs/react-flexbox";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
var NotFound = (props) => {
|
|
9
|
+
return /* @__PURE__ */ jsxs(FlexGrowCol, { ...props, children: [
|
|
10
|
+
/* @__PURE__ */ jsx(Typography, { variant: "h2", children: "Sorry!" }),
|
|
11
|
+
/* @__PURE__ */ jsx(Typography, { marginY: 3, variant: "body2", children: "Can't find anything here" })
|
|
12
|
+
] });
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
// src/components/LoadResult.tsx
|
|
16
|
+
import { Fragment, jsx as jsx2 } from "react/jsx-runtime";
|
|
4
17
|
function LoadResult(props) {
|
|
5
18
|
const { notFound, error, searchResult, children } = props;
|
|
6
19
|
if (notFound) {
|
|
7
|
-
return /* @__PURE__ */
|
|
20
|
+
return /* @__PURE__ */ jsx2(NotFound, {});
|
|
8
21
|
}
|
|
9
22
|
if (error) {
|
|
10
|
-
return /* @__PURE__ */
|
|
23
|
+
return /* @__PURE__ */ jsx2(Fragment, { children });
|
|
11
24
|
}
|
|
12
25
|
if (searchResult === void 0) {
|
|
13
|
-
return /* @__PURE__ */
|
|
26
|
+
return /* @__PURE__ */ jsx2(FlexGrowRow, { busy: true, minHeight: "50px" });
|
|
14
27
|
} else {
|
|
15
|
-
return /* @__PURE__ */
|
|
28
|
+
return /* @__PURE__ */ jsx2(Fragment, { children });
|
|
16
29
|
}
|
|
17
30
|
}
|
|
18
31
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/LoadResult.tsx"],"sourcesContent":["import { FlexGrowRow } from '@xylabs/react-flexbox'\nimport { PropsWithChildren } from 'react'\n\nimport { NotFound } from './NotFound'\n\nexport interface LoadResultProps<T> {\n /** @deprecated - use error prop */\n apiError?: Error\n /** Defer error handling to the children and load them */\n error?: boolean\n notFound: boolean\n searchResult: T | undefined\n}\n\nexport function LoadResult<T>(props: PropsWithChildren<LoadResultProps<T>>) {\n const { notFound, error, searchResult, children } = props\n if (notFound) {\n return <NotFound />\n }\n if (error) {\n return <>{children}</>\n }\n if (searchResult === undefined) {\n return <FlexGrowRow busy minHeight=\"50px\" />\n } else {\n return <>{children}</>\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/components/LoadResult.tsx","../../../src/components/NotFound.tsx"],"sourcesContent":["import { FlexGrowRow } from '@xylabs/react-flexbox'\nimport { PropsWithChildren } from 'react'\n\nimport { NotFound } from './NotFound'\n\nexport interface LoadResultProps<T> {\n /** @deprecated - use error prop */\n apiError?: Error\n /** Defer error handling to the children and load them */\n error?: boolean\n notFound: boolean\n searchResult: T | undefined\n}\n\nexport function LoadResult<T>(props: PropsWithChildren<LoadResultProps<T>>) {\n const { notFound, error, searchResult, children } = props\n if (notFound) {\n return <NotFound />\n }\n if (error) {\n return <>{children}</>\n }\n if (searchResult === undefined) {\n return <FlexGrowRow busy minHeight=\"50px\" />\n } else {\n return <>{children}</>\n }\n}\n","import { Typography } from '@mui/material'\nimport { FlexBoxProps, FlexGrowCol } from '@xylabs/react-flexbox'\n\nconst NotFound: React.FC<FlexBoxProps> = (props) => {\n return (\n <FlexGrowCol {...props}>\n <Typography variant=\"h2\">Sorry!</Typography>\n <Typography marginY={3} variant=\"body2\">\n {\"Can't find anything here\"}\n </Typography>\n </FlexGrowCol>\n )\n}\n\nexport { NotFound }\n"],"mappings":";AAAA,SAAS,mBAAmB;;;ACA5B,SAAS,kBAAkB;AAC3B,SAAuB,mBAAmB;AAItC,SACE,KADF;AAFJ,IAAM,WAAmC,CAAC,UAAU;AAClD,SACE,qBAAC,eAAa,GAAG,OACf;AAAA,wBAAC,cAAW,SAAQ,MAAK,oBAAM;AAAA,IAC/B,oBAAC,cAAW,SAAS,GAAG,SAAQ,SAC7B,sCACH;AAAA,KACF;AAEJ;;;ADKW,SAGA,UAHA,OAAAA,YAAA;AAHJ,SAAS,WAAc,OAA8C;AAC1E,QAAM,EAAE,UAAU,OAAO,cAAc,SAAS,IAAI;AACpD,MAAI,UAAU;AACZ,WAAO,gBAAAA,KAAC,YAAS;AAAA,EACnB;AACA,MAAI,OAAO;AACT,WAAO,gBAAAA,KAAA,YAAG,UAAS;AAAA,EACrB;AACA,MAAI,iBAAiB,QAAW;AAC9B,WAAO,gBAAAA,KAAC,eAAY,MAAI,MAAC,WAAU,QAAO;AAAA,EAC5C,OAAO;AACL,WAAO,gBAAAA,KAAA,YAAG,UAAS;AAAA,EACrB;AACF;","names":["jsx"]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
// src/components/NotFound.tsx
|
|
2
2
|
import { Typography } from "@mui/material";
|
|
3
3
|
import { FlexGrowCol } from "@xylabs/react-flexbox";
|
|
4
|
-
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
var NotFound = (props) => {
|
|
5
6
|
return /* @__PURE__ */ jsxs(FlexGrowCol, { ...props, children: [
|
|
6
7
|
/* @__PURE__ */ jsx(Typography, { variant: "h2", children: "Sorry!" }),
|
|
7
8
|
/* @__PURE__ */ jsx(Typography, { marginY: 3, variant: "body2", children: "Can't find anything here" })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/NotFound.tsx"],"sourcesContent":["import { Typography } from '@mui/material'\nimport { FlexBoxProps, FlexGrowCol } from '@xylabs/react-flexbox'\n\nconst NotFound: React.FC<FlexBoxProps> = (props) => {\n return (\n <FlexGrowCol {...props}>\n <Typography variant=\"h2\">Sorry!</Typography>\n <Typography marginY={3} variant=\"body2\">\n {\"Can't find anything here\"}\n </Typography>\n </FlexGrowCol>\n )\n}\n\nexport { NotFound }\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/components/NotFound.tsx"],"sourcesContent":["import { Typography } from '@mui/material'\nimport { FlexBoxProps, FlexGrowCol } from '@xylabs/react-flexbox'\n\nconst NotFound: React.FC<FlexBoxProps> = (props) => {\n return (\n <FlexGrowCol {...props}>\n <Typography variant=\"h2\">Sorry!</Typography>\n <Typography marginY={3} variant=\"body2\">\n {\"Can't find anything here\"}\n </Typography>\n </FlexGrowCol>\n )\n}\n\nexport { NotFound }\n"],"mappings":";AAAA,SAAS,kBAAkB;AAC3B,SAAuB,mBAAmB;AAItC,SACE,KADF;AAFJ,IAAM,WAAmC,CAAC,UAAU;AAClD,SACE,qBAAC,eAAa,GAAG,OACf;AAAA,wBAAC,cAAW,SAAQ,MAAK,oBAAM;AAAA,IAC/B,oBAAC,cAAW,SAAS,GAAG,SAAQ,SAC7B,sCACH;AAAA,KACF;AAEJ;","names":[]}
|