+
{communityPolls.length - 1 !== i ?
: null}
diff --git a/src/modules/lite/explorer/components/ProposalTableRow.tsx b/src/modules/lite/explorer/components/ProposalTableRow.tsx
index 26e66120..3119195c 100644
--- a/src/modules/lite/explorer/components/ProposalTableRow.tsx
+++ b/src/modules/lite/explorer/components/ProposalTableRow.tsx
@@ -6,6 +6,7 @@ import { useHistory } from "react-router"
import { Blockie } from "modules/common/Blockie"
import { toShortAddress } from "services/contracts/utils"
import { Poll } from "models/Polls"
+import ReactHtmlParser from "react-html-parser"
export interface ProposalTableRowData {
daoId?: string
@@ -32,7 +33,8 @@ const BlockieContainer = styled(Grid)({
const DescriptionText = styled(Typography)(({ theme }) => ({
fontWeight: 300,
fontSize: 18,
- marginBottom: 25,
+ width: "inherit",
+ wordBreak: "break-word",
[theme.breakpoints.down("sm")]: {
fontSize: 16
}
@@ -76,7 +78,7 @@ export const ProposalTableRow: React.FC<{ poll: Poll; daoId?: string }> = ({ pol
- {poll.description}
+ {ReactHtmlParser(poll.description)}
diff --git a/src/modules/lite/explorer/components/VoteDetails.tsx b/src/modules/lite/explorer/components/VoteDetails.tsx
index ef06c14e..c2ff6886 100644
--- a/src/modules/lite/explorer/components/VoteDetails.tsx
+++ b/src/modules/lite/explorer/components/VoteDetails.tsx
@@ -67,10 +67,7 @@ export const VoteDetails: React.FC<{ poll: Poll | undefined; choices: Choice[];
const handleClickOpen = () => {
setVotes(choices.filter(elem => elem.walletAddresses.length > 0))
-
- if (!isMobile) {
- setOpen(true)
- }
+ setOpen(true)
}
const handleClose = () => {
@@ -155,7 +152,7 @@ export const VoteDetails: React.FC<{ poll: Poll | undefined; choices: Choice[];
handleClickOpen()}>
{getTotalVoters(choices)}
-
+ handleClickOpen()}>
Votes
{isTokenDelegationSupported && turnout ? (
diff --git a/src/modules/lite/explorer/components/VotesDialog.tsx b/src/modules/lite/explorer/components/VotesDialog.tsx
index 2e69a723..d756a796 100644
--- a/src/modules/lite/explorer/components/VotesDialog.tsx
+++ b/src/modules/lite/explorer/components/VotesDialog.tsx
@@ -8,31 +8,56 @@ import {
styled,
Typography,
Button,
- Grid
+ Grid,
+ useTheme,
+ useMediaQuery
} from "@material-ui/core"
import { toShortAddress } from "services/contracts/utils"
import { FileCopyOutlined } from "@material-ui/icons"
import { Choice } from "models/Choice"
import { formatByDecimals, getTotalVoters } from "services/lite/utils"
import { useNotification } from "modules/common/hooks/useNotification"
+import { ResponsiveDialog } from "modules/explorer/components/ResponsiveDialog"
-const CustomContent = styled(DialogContent)({
- padding: "0px 54px 22px 54px !important"
-})
+const CustomContent = styled(DialogContent)(({ theme }) => ({
+ padding: 0,
+ display: "grid",
+ marginTop: 24,
+ [theme.breakpoints.down("sm")]: {
+ marginTop: 0,
+ display: "inline",
+ paddingTop: "0px !important"
+ }
+}))
-const CustomDialogActions = styled(DialogActions)({
- justifyContent: "center !important",
- paddingBottom: 20
-})
+const CustomDialogActions = styled(DialogActions)(({ theme }) => ({
+ justifyContent: "flex-end !important",
+ paddingBottom: 20,
+ [theme.breakpoints.down("sm")]: {
+ marginTop: 46
+ }
+}))
const CopyIcon = styled(FileCopyOutlined)({
marginLeft: 8,
cursor: "pointer"
})
-const CustomTitle = styled(Typography)(({ theme }) => ({
- borderBottom: `0.3px solid ${theme.palette.primary.main}`,
- paddingBottom: 16
+const Row = styled(Grid)(({ theme }) => ({
+ "background": theme.palette.primary.main,
+ "padding": "24px 48px",
+ "paddingBottom": "0px",
+ "borderBottom": "0.3px solid #7D8C8B",
+ "&:last-child": {
+ borderRadius: "0px 0px 8px 8px",
+ borderBottom: "none"
+ },
+ "&:first-child": {
+ borderRadius: "8px 8px 0px 0px"
+ },
+ [theme.breakpoints.down("sm")]: {
+ padding: "12px 24px"
+ }
}))
export const VotesDialog: React.FC<{
@@ -45,6 +70,9 @@ export const VotesDialog: React.FC<{
const descriptionElementRef = React.useRef(null)
const openNotification = useNotification()
+ const theme = useTheme()
+ const isMobileSmall = useMediaQuery(theme.breakpoints.down("sm"))
+
React.useEffect(() => {
if (open) {
const { current: descriptionElement } = descriptionElementRef
@@ -65,56 +93,71 @@ export const VotesDialog: React.FC<{
return (
-
+
)
}
diff --git a/src/modules/lite/explorer/components/tables/RowContainer.tsx b/src/modules/lite/explorer/components/tables/RowContainer.tsx
index 70dd3253..c1f4f713 100644
--- a/src/modules/lite/explorer/components/tables/RowContainer.tsx
+++ b/src/modules/lite/explorer/components/tables/RowContainer.tsx
@@ -5,6 +5,7 @@ export const RowContainer = styled(Grid)(({ theme }) => ({
padding: "44px 38px",
cursor: "pointer",
[theme.breakpoints.down("md")]: {
- padding: "44px 38px"
+ padding: "34px 38px",
+ width: "inherit"
}
}))
diff --git a/src/modules/lite/explorer/hooks/useHolderTotalCount.tsx b/src/modules/lite/explorer/hooks/useHolderTotalCount.tsx
index 871478da..ecf68950 100644
--- a/src/modules/lite/explorer/hooks/useHolderTotalCount.tsx
+++ b/src/modules/lite/explorer/hooks/useHolderTotalCount.tsx
@@ -3,8 +3,9 @@ import React, { useEffect, useState } from "react"
import { useNotification } from "modules/common/hooks/useNotification"
import { Network } from "services/beacon"
import { networkNameMap } from "services/bakingBad"
+import { getTokenHoldersCount } from "services/utils/utils"
-export const useHoldersTotalCount = (network: Network, tokenAddress: string) => {
+export const useHoldersTotalCount = (network: Network, tokenAddress: string, tokenID: number) => {
const [count, setCount] = useState(0)
const openNotification = useNotification()
@@ -12,36 +13,15 @@ export const useHoldersTotalCount = (network: Network, tokenAddress: string) =>
async function fetchTotalCount() {
try {
if (tokenAddress !== "") {
- const url = `https://api.${networkNameMap[network]}.tzkt.io/v1/tokens/balances/?token.contract=${tokenAddress}`
- await fetch(url).then(async response => {
- if (!response.ok) {
- openNotification({
- message: "An error has occurred",
- autoHideDuration: 2000,
- variant: "error"
- })
- return
- }
-
- const record: any[] = await response.json()
-
- const nonZeroBalance = record.filter((item: any) => item.balance !== "0")
- if (!record) {
- return
- }
-
- setCount(nonZeroBalance.length)
- return
- })
+ const holdersCount = await getTokenHoldersCount(network, tokenAddress, tokenID)
+ setCount(holdersCount)
}
- return
} catch (error) {
openNotification({
message: "An error has occurred",
autoHideDuration: 2000,
variant: "error"
})
- return
}
}
fetchTotalCount()
diff --git a/src/modules/lite/explorer/hooks/usePolls.tsx b/src/modules/lite/explorer/hooks/usePolls.tsx
index ee5ecc49..2b9efcab 100644
--- a/src/modules/lite/explorer/hooks/usePolls.tsx
+++ b/src/modules/lite/explorer/hooks/usePolls.tsx
@@ -30,12 +30,12 @@ export const usePolls = (id: any) => {
return
}
- // @TODO Add functinolity if needed for card in proposal list
- // communityPolls.map(community => {
- // community.timeFormatted = isProposalActive(Number(community.endTime))
- // community.isActive = !community.timeFormatted.includes("ago") ? ProposalStatus.ACTIVE : ProposalStatus.CLOSED
- // })
+ communityPolls.map(community => {
+ community.timeFormatted = isProposalActive(Number(community.endTime))
+ community.isActive = !community.timeFormatted.includes("ago") ? ProposalStatus.ACTIVE : ProposalStatus.CLOSED
+ })
+ // @TODO Add functinolity if needed for card in proposal list
// communityPolls.forEach(async poll => {
// if (poll) {
// await fetch(`${getEnv(EnvKey.REACT_APP_LITE_API_URL)}/choices/${poll._id}/votes`).then(async response => {
diff --git a/src/modules/lite/explorer/pages/CreateProposal/index.tsx b/src/modules/lite/explorer/pages/CreateProposal/index.tsx
index 6c9b42fb..96ab1847 100644
--- a/src/modules/lite/explorer/pages/CreateProposal/index.tsx
+++ b/src/modules/lite/explorer/pages/CreateProposal/index.tsx
@@ -9,7 +9,8 @@ import {
withTheme,
TextareaAutosize,
useTheme,
- useMediaQuery
+ useMediaQuery,
+ Tooltip
} from "@material-ui/core"
import { Choices } from "../../components/Choices"
@@ -30,6 +31,12 @@ import { isWebUri } from "valid-url"
import { useDAO } from "services/services/dao/hooks/useDAO"
import { useDAOID } from "modules/explorer/pages/DAO/router"
import { useUserTokenBalance } from "services/contracts/token/hooks/useUserTokenBalance"
+import CodeIcon from "@mui/icons-material/Code"
+import CodeOffIcon from "@mui/icons-material/CodeOff"
+import { ProposalCodeEditorInput } from "modules/explorer/components/ProposalFormInput"
+import Prism, { highlight } from "prismjs"
+import "prism-themes/themes/prism-night-owl.css"
+
dayjs.extend(duration)
const ProposalContainer = styled(Grid)(({ theme }) => ({
@@ -39,6 +46,26 @@ const ProposalContainer = styled(Grid)(({ theme }) => ({
}
}))
+const CodeButton = styled(CodeIcon)(({ theme }) => ({
+ background: theme.palette.primary.main,
+ padding: 3,
+ borderTopLeftRadius: 4,
+ borderTopRightRadius: 4,
+ borderBottom: "0.5px solid",
+ cursor: "pointer",
+ color: theme.palette.secondary.main
+}))
+
+const CodeOffButton = styled(CodeOffIcon)(({ theme }) => ({
+ background: theme.palette.primary.main,
+ padding: 3,
+ borderTopLeftRadius: 4,
+ borderTopRightRadius: 4,
+ borderBottom: "0.5px solid",
+ cursor: "pointer",
+ color: theme.palette.secondary.main
+}))
+
const CustomFormikTextField = withStyles({
root: {
"& .MuiInput-root": {
@@ -47,9 +74,10 @@ const CustomFormikTextField = withStyles({
},
"& .MuiInputBase-input": {
textAlign: "initial",
+ marginTop: 16,
paddingTop: 19,
+ borderRadius: 8,
paddingLeft: 26,
- borderRadius: 4,
paddingBottom: 19,
fontSize: 18,
background: "#2f3438"
@@ -67,6 +95,32 @@ const CustomFormikTextField = withStyles({
disabled: {}
})(FormikTextField)
+const CustomFormikTimeTextField = withStyles({
+ root: {
+ "& .MuiInput-root": {
+ fontWeight: 300,
+ textAlign: "initial"
+ },
+ "& .MuiInputBase-input": {
+ textAlign: "initial",
+ borderRadius: 8,
+ paddingLeft: 30,
+ fontSize: 18,
+ background: "#2f3438"
+ },
+ "& .MuiInput-underline:before": {
+ borderBottom: "none !important"
+ },
+ "& .MuiInput-underline:hover:before": {
+ borderBottom: "none !important"
+ },
+ "& .MuiInput-underline:after": {
+ borderBottom: "none !important"
+ }
+ },
+ disabled: {}
+})(FormikTextField)
+
const PageContainer = styled("div")({
height: "100%",
margin: "auto",
@@ -79,7 +133,7 @@ const PageContainer = styled("div")({
["@media (max-width:1335px)"]: {},
["@media (max-width:1167px)"]: {
- width: "78vw"
+ width: "86vw !important"
},
["@media (max-width:1030px)"]: {},
@@ -102,17 +156,18 @@ const ProposalChoices = styled(Grid)({
})
const CustomTextarea = styled(withTheme(TextareaAutosize))(props => ({
- "minHeight": 117,
+ "minHeight": 192,
"boxSizing": "border-box",
"width": "100%",
"fontWeight": 300,
"paddingTop": 19,
"paddingLeft": 26,
"border": "none",
+ "borderTopRightRadius": 0,
"fontSize": 17,
"color": props.theme.palette.text.primary,
"background": props.theme.palette.primary.main,
- "borderRadius": 4,
+ "borderRadius": 8,
"paddingRight": 40,
"wordBreak": "break-word",
"fontFamily": "Roboto Mono",
@@ -126,7 +181,7 @@ const CommunityLabel = styled(Grid)({
minWidth: 212,
height: 54,
background: "#2F3438",
- borderRadius: 4,
+ borderRadius: 8,
display: "inline-grid",
marginBottom: 25,
width: "fit-content",
@@ -141,25 +196,16 @@ const ErrorText = styled(Typography)({
})
const ErrorTextTime = styled(Typography)({
- marginTop: -18,
marginBottom: 0,
fontSize: 14,
color: "red"
})
-const ErrorTextChoices = styled(Typography)({
- fontSize: 14,
- color: "red",
- marginBottom: -21,
- marginTop: -86
-})
-
const TimeBox = styled(Grid)(({ theme }) => ({
background: theme.palette.primary.main,
borderRadius: 8,
width: 72,
minHeight: 59,
- marginBottom: 16,
display: "grid",
[theme.breakpoints.down("sm")]: {
"width": 172,
@@ -172,10 +218,7 @@ const TimeBox = styled(Grid)(({ theme }) => ({
const TimeContainer = styled(Grid)(({ theme }) => ({
alignItems: "baseline",
marginTop: 0,
- gap: 10,
- [theme.breakpoints.down("md")]: {
- marginTop: 30
- }
+ gap: 10
}))
const TimeContainerMobile = styled(Grid)(({ theme }) => ({
@@ -193,17 +236,6 @@ const hasDuplicates = (options: string[]) => {
return new Set(trimOptions).size !== trimOptions.length
}
-const isValidHttpUrl = (externalLink: string) => {
- let url
- try {
- url = new URL(externalLink)
- } catch (_) {
- return false
- }
-
- return url.protocol === "http:" || url.protocol === "https:"
-}
-
const validateForm = (values: Poll) => {
const errors: FormikErrors = {}
@@ -285,7 +317,27 @@ export const ProposalForm = ({
const { pathname } = useLocation()
+ const codeEditorStyles = {
+ minHeight: 500,
+ fontFamily: "Roboto Mono",
+ fontSize: 14,
+ fontWeight: 400,
+ outlineWidth: 0,
+ color: "white"
+ }
+
const shouldShowBar = pathname.includes("/lite") ? true : false
+ const [isMarkup, setIsMarkup] = useState(false)
+ const grammar = Prism.languages.markup
+ const codeEditorPlaceholder = `
+
+
+ Proposal Description
+
+
+ ...
+
+ `
const hasErrors = errors.endTimeDays || errors.endTimeHours || errors.endTimeMinutes
return (
@@ -301,35 +353,185 @@ export const ProposalForm = ({
New Proposal
>
) : null}
-
-
-
+
+
+
+ Proposal Title
{errors?.name && touched.name ? {errors.name} : null}
-
-
- {() => (
- {
- setFieldValue("description", newValue.target.value)
- }}
- />
+
+ {!isMobileSmall ? (
+ <>
+
+
+ Set Poll Duration
+
+
+ {
+ if (getIn(values, "endTimeDays") === 0) {
+ setFieldValue("endTimeDays", "")
+ setFieldTouched("endTimeDays")
+ }
+ }}
+ onChange={(newValue: any) => {
+ if (newValue.target.value === "") {
+ setFieldValue("endTimeDays", null)
+ } else {
+ setFieldValue("endTimeDays", parseInt(newValue.target.value, 10))
+ }
+ }}
+ />
+
+
+ {
+ if (getIn(values, "endTimeHours") === 0) {
+ setFieldValue("endTimeHours", "")
+ }
+ }}
+ onChange={(newValue: any) => {
+ if (newValue.target.value === "") {
+ setFieldValue("endTimeHours", null)
+ } else {
+ setFieldValue("endTimeHours", parseInt(newValue.target.value, 10))
+ }
+ }}
+ />
+
+
+
+ {
+ if (getIn(values, "endTimeMinutes") === 0) {
+ setFieldValue("endTimeMinutes", "")
+ }
+ }}
+ onChange={(newValue: any) => {
+ if (newValue.target.value === "") {
+ setFieldValue("endTimeMinutes", null)
+ } else {
+ setFieldValue("endTimeMinutes", parseInt(newValue.target.value, 10))
+ }
+ }}
+ />
+
+
+ {getIn(values, "endTimeDays") !== null &&
+ getIn(values, "endTimeHours") !== null &&
+ getIn(values, "endTimeMinutes") !== null &&
+ !hasErrors ? (
+
+
+ End date:
+
+
+ {" "}
+ {dayjs(Number(finalDate)).format("MM/DD/YYYY h:mm A")}
+
+
+ ) : null}
+
+
+ {errors?.endTimeDays && touched.endTimeDays ? (
+ {errors.endTimeDays}
+ ) : null}
+
+
+
+ >
+ ) : null}
+
+
+ Description
+
+ {!isMarkup ? (
+
+
+ setIsMarkup(true)} />
+
+
+ ) : (
+
+
+ setIsMarkup(false)} />
+
+
)}
-
+ {!isMarkup ? (
+
+ {() => (
+ {
+ setFieldValue("description", newValue.target.value)
+ }}
+ />
+ )}
+
+ ) : (
+
+ {() => (
+ {
+ console.log(newValue)
+ setFieldValue("description", newValue)
+ }}
+ highlight={code => highlight(code, grammar, "javascript")}
+ placeholder={codeEditorPlaceholder}
+ />
+ )}
+
+ )}
+
-
+
+
+ External Link
{errors?.externalLink && touched.externalLink ? {errors.externalLink} : null}
@@ -348,7 +550,7 @@ export const ProposalForm = ({
name="endTimeDays"
type="number"
placeholder="DD"
- component={CustomFormikTextField}
+ component={CustomFormikTimeTextField}
inputProps={{ min: 0 }}
onClick={() => {
if (getIn(values, "endTimeDays") === 0) {
@@ -372,7 +574,7 @@ export const ProposalForm = ({
name="endTimeHours"
type="number"
placeholder="HH"
- component={CustomFormikTextField}
+ component={CustomFormikTimeTextField}
inputProps={{ min: 0 }}
onClick={() => {
if (getIn(values, "endTimeHours") === 0) {
@@ -396,7 +598,7 @@ export const ProposalForm = ({
name="endTimeMinutes"
type="number"
placeholder="MM"
- component={CustomFormikTextField}
+ component={CustomFormikTimeTextField}
inputProps={{ min: 0 }}
onClick={() => {
if (getIn(values, "endTimeMinutes") === 0) {
@@ -417,10 +619,10 @@ export const ProposalForm = ({
getIn(values, "endTimeMinutes") !== null &&
!hasErrors ? (
-
+
End date:
-
+
{" "}
{dayjs(Number(finalDate)).format("MM/DD/YYYY h:mm A")}
@@ -442,119 +644,11 @@ export const ProposalForm = ({
submitForm={submitForm}
votingStrategy={getIn(values, "votingStrategy")}
setFieldValue={setFieldValue}
+ touched={touched.choices}
+ errors={errors.choices}
/>
- {errors?.choices && touched.choices ? {errors.choices} : null}
-
- {!isMobileSmall ? (
- <>
-
-
- Set Poll Duration
-
-
- {
- if (getIn(values, "endTimeDays") === 0) {
- setFieldValue("endTimeDays", "")
- setFieldTouched("endTimeDays")
- }
- }}
- onChange={(newValue: any) => {
- if (newValue.target.value === "") {
- setFieldValue("endTimeDays", null)
- } else {
- setFieldValue("endTimeDays", parseInt(newValue.target.value, 10))
- }
- }}
- />
-
-
- {
- if (getIn(values, "endTimeHours") === 0) {
- setFieldValue("endTimeHours", "")
- }
- }}
- onChange={(newValue: any) => {
- if (newValue.target.value === "") {
- setFieldValue("endTimeHours", null)
- } else {
- setFieldValue("endTimeHours", parseInt(newValue.target.value, 10))
- }
- }}
- />
-
-
-
- {
- if (getIn(values, "endTimeMinutes") === 0) {
- setFieldValue("endTimeMinutes", "")
- }
- }}
- onChange={(newValue: any) => {
- if (newValue.target.value === "") {
- setFieldValue("endTimeMinutes", null)
- } else {
- setFieldValue("endTimeMinutes", parseInt(newValue.target.value, 10))
- }
- }}
- />
-
- {getIn(values, "endTimeDays") !== null &&
- getIn(values, "endTimeHours") !== null &&
- getIn(values, "endTimeMinutes") !== null &&
- !hasErrors ? (
-
-
- End date:
-
-
- {" "}
- {dayjs(Number(finalDate)).format("MM/DD/YYYY h:mm A")}
-
-
- ) : null}
-
-
- {errors?.endTimeDays && touched.endTimeDays ? (
- {errors.endTimeDays}
- ) : null}
-
-
- >
- ) : null}
@@ -657,7 +751,7 @@ export const ProposalCreator: React.FC<{ id?: string; onClose?: any }> = props =
return (
-
+
= ({ id }) => {
const theme = useTheme()
const isMobileSmall = useMediaQuery(theme.breakpoints.down("sm"))
const { state } = useLocation<{ poll: Poll; choices: Choice[]; daoId: string }>()
-
+ const navigate = useHistory()
const { data: dao } = useDAO(state?.daoId)
const { account, wallet } = useTezos()
const openNotification = useNotification()
@@ -62,7 +63,10 @@ export const ProposalDetails: React.FC<{ id: string }> = ({ id }) => {
const community = useCommunity(id)
const poll = useSinglePoll(proposalId, id, community)
const choices = usePollChoices(poll, refresh)
- const { data: voteWeight } = useTokenVoteWeight(dao?.data.token.contract, poll?.referenceBlock)
+ const { data: voteWeight } = useTokenVoteWeight(
+ dao?.data.token.contract || community?.tokenAddress,
+ poll?.referenceBlock
+ )
const [selectedVotes, setSelectedVotes] = useState([])
useEffect(() => {
@@ -130,7 +134,15 @@ export const ProposalDetails: React.FC<{ id: string }> = ({ id }) => {
return (
-
+ navigate.push(`/explorer/lite/dao/${id}/community/`)}
+ alignItems="center"
+ >
+
+ Back to community
+
@@ -165,7 +177,7 @@ export const ProposalDetails: React.FC<{ id: string }> = ({ id }) => {
color="secondary"
onClick={() => saveVote()}
>
- Cast your vote
+ {voteWeight?.gt(new BigNumber(0)) ? "Cast your vote" : "No Voting Weight"}
) : null}
diff --git a/src/services/services/lite/lite-services.ts b/src/services/services/lite/lite-services.ts
index 07f0105d..852452d6 100644
--- a/src/services/services/lite/lite-services.ts
+++ b/src/services/services/lite/lite-services.ts
@@ -131,21 +131,6 @@ export const saveLiteCommunity = async (signature: string, publicKey: string | u
return resp
}
-export const joinLiteCommunity = async (signature: string, publicKey: string | undefined, payloadBytes: string) => {
- const resp = await fetch(`${getEnv(EnvKey.REACT_APP_LITE_API_URL)}/daos/join`, {
- method: "POST",
- body: JSON.stringify({
- signature,
- publicKey,
- payloadBytes
- }),
- headers: {
- "Content-Type": "application/json"
- }
- })
- return resp
-}
-
export const saveLiteProposal = async (signature: string, publicKey: string | undefined, payloadBytes: string) => {
const resp = await fetch(`${getEnv(EnvKey.REACT_APP_LITE_API_URL)}/poll/add`, {
method: "POST",
@@ -193,12 +178,9 @@ export const fetchLiteData = async (daoContract: string, network: Network) => {
}
}
-export const updateCount = async (id: string, count: number) => {
+export const updateCount = async (id: string) => {
const resp = await fetch(`${getEnv(EnvKey.REACT_APP_LITE_API_URL)}/daos/count/${id}`, {
method: "POST",
- body: JSON.stringify({
- count
- }),
headers: {
"Content-Type": "application/json"
}
diff --git a/src/theme/index.ts b/src/theme/index.ts
index 376daa07..841a4703 100644
--- a/src/theme/index.ts
+++ b/src/theme/index.ts
@@ -42,7 +42,10 @@ export const theme = createTheme({
}
},
subtitle1: {
- fontSize: 32
+ fontSize: 32,
+ [breakpoints.down("xs")]: {
+ fontSize: 26
+ }
},
subtitle2: {
fontSize: 16,
@@ -70,7 +73,7 @@ export const theme = createTheme({
body1: {
fontSize: 18,
[breakpoints.down("xs")]: {
- fontSize: 14
+ fontSize: 16
}
},
body2: {
@@ -84,6 +87,11 @@ export const theme = createTheme({
}
},
overrides: {
+ MuiSvgIcon: {
+ colorSecondary: {
+ color: "#81FEB7 !important"
+ }
+ },
MuiTypography: {
root: {
letterSpacing: "-0.03em !important"
@@ -181,6 +189,13 @@ export const theme = createTheme({
fill: "#fff"
}
},
+ MuiIconButton: {
+ colorSecondary: {
+ "&:hover": {
+ background: "inherit !important"
+ }
+ }
+ },
MuiInput: {
underline: {
"&:after": {
@@ -207,6 +222,7 @@ export const theme = createTheme({
},
disabled: {}
},
+
MuiButton: {
root: {
"textTransform": "capitalize",
@@ -370,7 +386,7 @@ export const theme = createTheme({
},
MuiTableBody: {
root: {
- "& > *": {
+ "& > *:not(:first-child)": {
borderTop: "0.3px solid rgba(125,140,139, 0.2)",
minHeight: 90
}
diff --git a/yarn.lock b/yarn.lock
index 220ed879..9b63b4fb 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1256,6 +1256,13 @@
dependencies:
regenerator-runtime "^0.13.11"
+"@babel/runtime@^7.23.2":
+ version "7.23.2"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885"
+ integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==
+ dependencies:
+ regenerator-runtime "^0.14.0"
+
"@babel/template@^7.18.10", "@babel/template@^7.20.7", "@babel/template@^7.21.9", "@babel/template@^7.3.3":
version "7.21.9"
resolved "https://registry.npmjs.org/@babel/template/-/template-7.21.9.tgz"
@@ -1521,10 +1528,10 @@
resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz"
integrity sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==
-"@emotion/react@^11.10.4":
- version "11.11.0"
- resolved "https://registry.npmjs.org/@emotion/react/-/react-11.11.0.tgz"
- integrity sha512-ZSK3ZJsNkwfjT3JpDAWJZlrGD81Z3ytNDsxw1LKq1o+xkmO5pnWfr6gmCC8gHEFf3nSSX/09YrG67jybNPxSUw==
+"@emotion/react@^11.11.1":
+ version "11.11.1"
+ resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.11.1.tgz#b2c36afac95b184f73b08da8c214fdf861fa4157"
+ integrity sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==
dependencies:
"@babel/runtime" "^7.18.3"
"@emotion/babel-plugin" "^11.11.0"
@@ -1551,9 +1558,9 @@
resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz"
integrity sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==
-"@emotion/styled@^11.10.4":
+"@emotion/styled@^11.11.0":
version "11.11.0"
- resolved "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz"
+ resolved "https://registry.yarnpkg.com/@emotion/styled/-/styled-11.11.0.tgz#26b75e1b5a1b7a629d7c0a8b708fbf5a9cdce346"
integrity sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==
dependencies:
"@babel/runtime" "^7.18.3"
@@ -1630,6 +1637,33 @@
resolved "https://registry.npmjs.org/@eslint/js/-/js-8.41.0.tgz"
integrity sha512-LxcyMGxwmTh2lY9FwHPGWOHmYFCZvbrFCBZL4FzSSsxsRPuhrYUg/49/0KDfW8tnIEaEHtfmn6+NPN+1DqaNmA==
+"@floating-ui/core@^1.4.2":
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.5.0.tgz#5c05c60d5ae2d05101c3021c1a2a350ddc027f8c"
+ integrity sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==
+ dependencies:
+ "@floating-ui/utils" "^0.1.3"
+
+"@floating-ui/dom@^1.5.1":
+ version "1.5.3"
+ resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.5.3.tgz#54e50efcb432c06c23cd33de2b575102005436fa"
+ integrity sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==
+ dependencies:
+ "@floating-ui/core" "^1.4.2"
+ "@floating-ui/utils" "^0.1.3"
+
+"@floating-ui/react-dom@^2.0.4":
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.0.4.tgz#b076fafbdfeb881e1d86ae748b7ff95150e9f3ec"
+ integrity sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==
+ dependencies:
+ "@floating-ui/dom" "^1.5.1"
+
+"@floating-ui/utils@^0.1.3":
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.1.6.tgz#22958c042e10b67463997bd6ea7115fe28cbcaf9"
+ integrity sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==
+
"@hookform/resolvers@^2.8.1":
version "2.9.11"
resolved "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-2.9.11.tgz"
@@ -2061,82 +2095,88 @@
node-fetch "^2.6.7"
ws "^6.0.0"
-"@mui/base@5.0.0-beta.3":
- version "5.0.0-beta.3"
- resolved "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.3.tgz"
- integrity sha512-ErOMoGNpgf6BF5W+jgXDiRlXJnpSeg8XSRonuY5UCCMHIlOWtKDtt/LS3qDAbFFGb7tV/y6EBddbcMeexx+zHw==
- dependencies:
- "@babel/runtime" "^7.21.0"
- "@emotion/is-prop-valid" "^1.2.1"
- "@mui/types" "^7.2.4"
- "@mui/utils" "^5.13.1"
- "@popperjs/core" "^2.11.7"
- clsx "^1.2.1"
+"@mui/base@5.0.0-beta.24":
+ version "5.0.0-beta.24"
+ resolved "https://registry.yarnpkg.com/@mui/base/-/base-5.0.0-beta.24.tgz#1a0638388291828dacf9547b466bc21fbaad3a2a"
+ integrity sha512-bKt2pUADHGQtqWDZ8nvL2Lvg2GNJyd/ZUgZAJoYzRgmnxBL9j36MSlS3+exEdYkikcnvVafcBtD904RypFKb0w==
+ dependencies:
+ "@babel/runtime" "^7.23.2"
+ "@floating-ui/react-dom" "^2.0.4"
+ "@mui/types" "^7.2.9"
+ "@mui/utils" "^5.14.18"
+ "@popperjs/core" "^2.11.8"
+ clsx "^2.0.0"
prop-types "^15.8.1"
- react-is "^18.2.0"
-
-"@mui/core-downloads-tracker@^5.13.3":
- version "5.13.3"
- resolved "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.13.3.tgz"
- integrity sha512-w4//nRIi9fiMow/MmhkForOezd8nc229EpSZZ5DzwpJNOmAXwypFTapOUVAGTUQiTJyeZXUNbQqYuUIrIs2nbg==
-"@mui/material@^5.10.6":
- version "5.13.3"
- resolved "https://registry.npmjs.org/@mui/material/-/material-5.13.3.tgz"
- integrity sha512-10pek+Bz+PZ4rjUf3KTKfXWjPMUqU1nSnRPf4DAXABhsjzelGGfGW/EICgrLRrttYplTJZhoponWALezAge8ug==
- dependencies:
- "@babel/runtime" "^7.21.0"
- "@mui/base" "5.0.0-beta.3"
- "@mui/core-downloads-tracker" "^5.13.3"
- "@mui/system" "^5.13.2"
- "@mui/types" "^7.2.4"
- "@mui/utils" "^5.13.1"
- "@types/react-transition-group" "^4.4.6"
- clsx "^1.2.1"
+"@mui/core-downloads-tracker@^5.14.18":
+ version "5.14.18"
+ resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.18.tgz#f8b187dc89756fa5c0b7d15aea537a6f73f0c2d8"
+ integrity sha512-yFpF35fEVDV81nVktu0BE9qn2dD/chs7PsQhlyaV3EnTeZi9RZBuvoEfRym1/jmhJ2tcfeWXiRuHG942mQXJJQ==
+
+"@mui/icons-material@^5.14.14":
+ version "5.14.18"
+ resolved "https://registry.yarnpkg.com/@mui/icons-material/-/icons-material-5.14.18.tgz#9e92964cde8c7ba32cf50438a83403dc283f2328"
+ integrity sha512-o2z49R1G4SdBaxZjbMmkn+2OdT1bKymLvAYaB6pH59obM1CYv/0vAVm6zO31IqhwtYwXv6A7sLIwCGYTaVkcdg==
+ dependencies:
+ "@babel/runtime" "^7.23.2"
+
+"@mui/material@^5.14.14":
+ version "5.14.18"
+ resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.14.18.tgz#d0a89be3e27afe90135d542ddbf160b3f34e869c"
+ integrity sha512-y3UiR/JqrkF5xZR0sIKj6y7xwuEiweh9peiN3Zfjy1gXWXhz5wjlaLdoxFfKIEBUFfeQALxr/Y8avlHH+B9lpQ==
+ dependencies:
+ "@babel/runtime" "^7.23.2"
+ "@mui/base" "5.0.0-beta.24"
+ "@mui/core-downloads-tracker" "^5.14.18"
+ "@mui/system" "^5.14.18"
+ "@mui/types" "^7.2.9"
+ "@mui/utils" "^5.14.18"
+ "@types/react-transition-group" "^4.4.8"
+ clsx "^2.0.0"
csstype "^3.1.2"
prop-types "^15.8.1"
react-is "^18.2.0"
react-transition-group "^4.4.5"
-"@mui/private-theming@^5.13.1":
- version "5.13.1"
- resolved "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.13.1.tgz"
- integrity sha512-HW4npLUD9BAkVppOUZHeO1FOKUJWAwbpy0VQoGe3McUYTlck1HezGHQCfBQ5S/Nszi7EViqiimECVl9xi+/WjQ==
+"@mui/private-theming@^5.14.18":
+ version "5.14.18"
+ resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.14.18.tgz#98f97139ea21570493391ab377c1deb47fc6d1a2"
+ integrity sha512-WSgjqRlzfHU+2Rou3HlR2Gqfr4rZRsvFgataYO3qQ0/m6gShJN+lhVEvwEiJ9QYyVzMDvNpXZAcqp8Y2Vl+PAw==
dependencies:
- "@babel/runtime" "^7.21.0"
- "@mui/utils" "^5.13.1"
+ "@babel/runtime" "^7.23.2"
+ "@mui/utils" "^5.14.18"
prop-types "^15.8.1"
-"@mui/styled-engine@^5.13.2":
- version "5.13.2"
- resolved "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.13.2.tgz"
- integrity sha512-VCYCU6xVtXOrIN8lcbuPmoG+u7FYuOERG++fpY74hPpEWkyFQG97F+/XfTQVYzlR2m7nPjnwVUgATcTCMEaMvw==
+"@mui/styled-engine@^5.14.18":
+ version "5.14.18"
+ resolved "https://registry.yarnpkg.com/@mui/styled-engine/-/styled-engine-5.14.18.tgz#82d427bc975b85cecdbab2fd9353ed6c2df7eae1"
+ integrity sha512-pW8bpmF9uCB5FV2IPk6mfbQCjPI5vGI09NOLhtGXPeph/4xIfC3JdIX0TILU0WcTs3aFQqo6s2+1SFgIB9rCXA==
dependencies:
- "@babel/runtime" "^7.21.0"
+ "@babel/runtime" "^7.23.2"
"@emotion/cache" "^11.11.0"
csstype "^3.1.2"
prop-types "^15.8.1"
-"@mui/system@^5.13.2":
- version "5.13.2"
- resolved "https://registry.npmjs.org/@mui/system/-/system-5.13.2.tgz"
- integrity sha512-TPyWmRJPt0JPVxacZISI4o070xEJ7ftxpVtu6LWuYVOUOINlhoGOclam4iV8PDT3EMQEHuUrwU49po34UdWLlw==
- dependencies:
- "@babel/runtime" "^7.21.0"
- "@mui/private-theming" "^5.13.1"
- "@mui/styled-engine" "^5.13.2"
- "@mui/types" "^7.2.4"
- "@mui/utils" "^5.13.1"
- clsx "^1.2.1"
+"@mui/system@^5.14.18":
+ version "5.14.18"
+ resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.14.18.tgz#0f671e8f0a5e8e965b79235d77c50098f54195b5"
+ integrity sha512-hSQQdb3KF72X4EN2hMEiv8EYJZSflfdd1TRaGPoR7CIAG347OxCslpBUwWngYobaxgKvq6xTrlIl+diaactVww==
+ dependencies:
+ "@babel/runtime" "^7.23.2"
+ "@mui/private-theming" "^5.14.18"
+ "@mui/styled-engine" "^5.14.18"
+ "@mui/types" "^7.2.9"
+ "@mui/utils" "^5.14.18"
+ clsx "^2.0.0"
csstype "^3.1.2"
prop-types "^15.8.1"
-"@mui/types@^7.2.4":
- version "7.2.4"
- resolved "https://registry.npmjs.org/@mui/types/-/types-7.2.4.tgz"
- integrity sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA==
+"@mui/types@^7.2.9":
+ version "7.2.9"
+ resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.9.tgz#730ee83a37af292a5973962f78ce5c95f31213a7"
+ integrity sha512-k1lN/PolaRZfNsRdAqXtcR71sTnv3z/VCCGPxU8HfdftDkzi335MdJ6scZxvofMAd/K/9EbzCZTFBmlNpQVdCg==
-"@mui/utils@^5.10.3", "@mui/utils@^5.13.1":
+"@mui/utils@^5.10.3":
version "5.13.1"
resolved "https://registry.npmjs.org/@mui/utils/-/utils-5.13.1.tgz"
integrity sha512-6lXdWwmlUbEU2jUI8blw38Kt+3ly7xkmV9ljzY4Q20WhsJMWiNry9CX8M+TaP/HbtuyR8XKsdMgQW7h7MM3n3A==
@@ -2147,6 +2187,16 @@
prop-types "^15.8.1"
react-is "^18.2.0"
+"@mui/utils@^5.14.18":
+ version "5.14.18"
+ resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.14.18.tgz#d2a46df9b06230423ba6b6317748b27185a56ac3"
+ integrity sha512-HZDRsJtEZ7WMSnrHV9uwScGze4wM/Y+u6pDVo+grUjt5yXzn+wI8QX/JwTHh9YSw/WpnUL80mJJjgCnWj2VrzQ==
+ dependencies:
+ "@babel/runtime" "^7.23.2"
+ "@types/prop-types" "^15.7.10"
+ prop-types "^15.8.1"
+ react-is "^18.2.0"
+
"@mui/x-date-pickers@^5.0.2":
version "5.0.20"
resolved "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-5.0.20.tgz"
@@ -2208,9 +2258,9 @@
schema-utils "^3.0.0"
source-map "^0.7.3"
-"@popperjs/core@^2.11.7":
+"@popperjs/core@^2.11.8":
version "2.11.8"
- resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz"
+ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f"
integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
"@reach/portal@^0.13.0":
@@ -3162,6 +3212,11 @@
resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz"
integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==
+"@types/prop-types@^15.7.10":
+ version "15.7.10"
+ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.10.tgz#892afc9332c4d62a5ea7e897fe48ed2085bbb08a"
+ integrity sha512-mxSnDQxPqsZxmeShFH+uwQ4kO4gcJcGahjjMFeLbKE95IAZiiZyiEepGZjtXJ7hN/yfu0bu9xN2ajcU0JcxX6A==
+
"@types/q@^1.5.1":
version "1.5.5"
resolved "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz"
@@ -3232,13 +3287,20 @@
"@types/history" "^4.7.11"
"@types/react" "*"
-"@types/react-transition-group@^4.2.0", "@types/react-transition-group@^4.4.5", "@types/react-transition-group@^4.4.6":
+"@types/react-transition-group@^4.2.0", "@types/react-transition-group@^4.4.5":
version "4.4.6"
resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz"
integrity sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==
dependencies:
"@types/react" "*"
+"@types/react-transition-group@^4.4.8":
+ version "4.4.9"
+ resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.9.tgz#12a1a1b5b8791067198149867b0823fbace31579"
+ integrity sha512-ZVNmWumUIh5NhH8aMD9CR2hdW0fNuYInlocZHaZ+dgk/1K49j1w/HoAuK1ki+pgscQrOFRTlXeoURtuzEkV3dg==
+ dependencies:
+ "@types/react" "*"
+
"@types/react@*", "@types/react@^17", "@types/react@^17.0.3", "@types/react@~17.0.3":
version "17.0.60"
resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.60.tgz#a4a97dcdbebad76612c188fc06440e4995fd8ad2"
@@ -4482,6 +4544,11 @@ big.js@^5.2.2:
resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz"
integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
+"bignumber.js@^8 || ^9":
+ version "9.1.2"
+ resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c"
+ integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==
+
bignumber.js@^9.0.1, bignumber.js@^9.1.0:
version "9.1.1"
resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz"
@@ -4980,6 +5047,11 @@ clsx@^1.0.4, clsx@^1.1.0, clsx@^1.2.1:
resolved "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz"
integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==
+clsx@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.0.0.tgz#12658f3fd98fafe62075595a5c30e43d18f3d00b"
+ integrity sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==
+
co@^4.6.0:
version "4.6.0"
resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz"
@@ -5794,12 +5866,21 @@ dom-serializer@^1.0.1:
domhandler "^4.2.0"
entities "^2.0.0"
+dom-serializer@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53"
+ integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==
+ dependencies:
+ domelementtype "^2.3.0"
+ domhandler "^5.0.2"
+ entities "^4.2.0"
+
domelementtype@1, domelementtype@^1.3.1:
version "1.3.1"
resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz"
integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
-domelementtype@^2.0.1, domelementtype@^2.2.0:
+domelementtype@^2.0.1, domelementtype@^2.2.0, domelementtype@^2.3.0:
version "2.3.0"
resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz"
integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
@@ -5811,6 +5892,13 @@ domexception@^2.0.1:
dependencies:
webidl-conversions "^5.0.0"
+domhandler@5.0.3, domhandler@^5.0.2, domhandler@^5.0.3:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31"
+ integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==
+ dependencies:
+ domelementtype "^2.3.0"
+
domhandler@^2.3.0, domhandler@^2.4.0:
version "2.4.2"
resolved "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz"
@@ -5842,6 +5930,15 @@ domutils@^2.5.2, domutils@^2.8.0:
domelementtype "^2.2.0"
domhandler "^4.2.0"
+domutils@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e"
+ integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==
+ dependencies:
+ dom-serializer "^2.0.0"
+ domelementtype "^2.3.0"
+ domhandler "^5.0.3"
+
dot-case@^3.0.4:
version "3.0.4"
resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz"
@@ -5972,6 +6069,11 @@ entities@^2.0.0:
resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz"
integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
+entities@^4.2.0, entities@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
+ integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
+
error-ex@^1.3.1:
version "1.3.2"
resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz"
@@ -7322,6 +7424,14 @@ hpack.js@^2.1.6:
readable-stream "^2.0.1"
wbuf "^1.1.0"
+html-dom-parser@5.0.4:
+ version "5.0.4"
+ resolved "https://registry.yarnpkg.com/html-dom-parser/-/html-dom-parser-5.0.4.tgz#2941a762317d088e747db31c8cf290987ec30a55"
+ integrity sha512-azy8THLKd4Ar0OVJpEgX+MSjYvKdNDWlGiRBIlovMqEQYMAnLLXBhhiSwjylDD3RDdcCYT8Utg6uoRDeLHUyHg==
+ dependencies:
+ domhandler "5.0.3"
+ htmlparser2 "9.0.0"
+
html-encoding-sniffer@^2.0.1:
version "2.0.1"
resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz"
@@ -7352,6 +7462,16 @@ html-minifier-terser@^6.0.2:
relateurl "^0.2.7"
terser "^5.10.0"
+html-react-parser@^5.0.6:
+ version "5.0.6"
+ resolved "https://registry.yarnpkg.com/html-react-parser/-/html-react-parser-5.0.6.tgz#ee9e8ae404aa38cfbaf3825cb26fabced46024a1"
+ integrity sha512-aPSzFhO2bK/L/mYQbMwFz+1QG8nhxozbwENt/52HTApasrBvDX87MFD5uSQIjq7Io0bnKzH4uh7PM42zZ4ag9A==
+ dependencies:
+ domhandler "5.0.3"
+ html-dom-parser "5.0.4"
+ react-property "2.0.2"
+ style-to-js "1.1.9"
+
html-void-elements@^2.0.0:
version "2.0.1"
resolved "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz"
@@ -7368,6 +7488,16 @@ html-webpack-plugin@^5.5.0:
pretty-error "^4.0.0"
tapable "^2.0.0"
+htmlparser2@9.0.0:
+ version "9.0.0"
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-9.0.0.tgz#e431142b7eeb1d91672742dea48af8ac7140cddb"
+ integrity sha512-uxbSI98wmFT/G4P2zXx4OVx04qWUmyFPrD2/CNepa2Zo3GPNaCaaxElDgwUrwYWkK1nr9fft0Ya8dws8coDLLQ==
+ dependencies:
+ domelementtype "^2.3.0"
+ domhandler "^5.0.3"
+ domutils "^3.1.0"
+ entities "^4.5.0"
+
htmlparser2@^3.9.0:
version "3.10.1"
resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz"
@@ -7588,6 +7718,11 @@ inline-style-parser@0.1.1:
resolved "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz"
integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==
+inline-style-parser@0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.2.2.tgz#d498b4e6de0373458fc610ff793f6b14ebf45633"
+ integrity sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==
+
internal-slot@^1.0.3, internal-slot@^1.0.4, internal-slot@^1.0.5:
version "1.0.5"
resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz"
@@ -9742,6 +9877,13 @@ nth-check@^2.0.1:
dependencies:
boolbase "^1.0.0"
+numbro@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/numbro/-/numbro-2.4.0.tgz#3cecae307ab2c2d9fd3e1c08249f4abd504bd577"
+ integrity sha512-t6rVkO1CcKvffvOJJu/zMo70VIcQSR6w3AmIhfHGvmk4vHbNe6zHgomB0aWFAPZWM9JBVWBM0efJv9DBiRoSTA==
+ dependencies:
+ bignumber.js "^8 || ^9"
+
nwsapi@^2.2.0:
version "2.2.5"
resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.5.tgz"
@@ -11094,7 +11236,7 @@ react-hook-form@^7.15.4:
react-html-parser@^2.0.2:
version "2.0.2"
- resolved "https://registry.npmjs.org/react-html-parser/-/react-html-parser-2.0.2.tgz"
+ resolved "https://registry.yarnpkg.com/react-html-parser/-/react-html-parser-2.0.2.tgz#6dbe1ddd2cebc1b34ca15215158021db5fc5685e"
integrity sha512-XeerLwCVjTs3njZcgCOeDUqLgNIt/t+6Jgi5/qPsO/krUWl76kWKXMeVs2LhY2gwM6X378DkhLjur0zUQdpz0g==
dependencies:
htmlparser2 "^3.9.0"
@@ -11142,6 +11284,11 @@ react-paginate@^8.2.0:
dependencies:
prop-types "^15"
+react-property@2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/react-property/-/react-property-2.0.2.tgz#d5ac9e244cef564880a610bc8d868bd6f60fdda6"
+ integrity sha512-+PbtI3VuDV0l6CleQMsx2gtK0JZbZKbpdu5ynr+lbsuvtmgbNcS3VM0tuY2QjFNOcWxvXeHjDpy42RO+4U2rug==
+
react-query@^3.13.0:
version "3.39.3"
resolved "https://registry.npmjs.org/react-query/-/react-query-3.39.3.tgz"
@@ -11360,6 +11507,11 @@ regenerator-runtime@^0.13.11, regenerator-runtime@^0.13.9:
resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz"
integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
+regenerator-runtime@^0.14.0:
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45"
+ integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==
+
regenerator-transform@^0.15.1:
version "0.15.1"
resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz"
@@ -12373,6 +12525,20 @@ style-loader@^3.3.1:
resolved "https://registry.npmjs.org/style-loader/-/style-loader-3.3.3.tgz"
integrity sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==
+style-to-js@1.1.9:
+ version "1.1.9"
+ resolved "https://registry.yarnpkg.com/style-to-js/-/style-to-js-1.1.9.tgz#5bdc23ba7624016094a19d6ea90fa3f98bee34c4"
+ integrity sha512-6bkwhOlPOx+wKiHVlPTHjUqM4zDKv9pyccehB8zetZL0hhQ7MVp7UEWUsohjiMdxwhSsEdjMrEve+8qzUVmY4w==
+ dependencies:
+ style-to-object "1.0.4"
+
+style-to-object@1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/style-to-object/-/style-to-object-1.0.4.tgz#496fded508ce520eca13e738e8af33b8b5af98f2"
+ integrity sha512-KyNO6mfijxSnypdvEjeXlhvbGPSh0l1zBJp80n+ncBQvrEbSwBHwZCpo0xz6Q4AKSPfXowWwypCBAUAdfz3rFQ==
+ dependencies:
+ inline-style-parser "0.2.2"
+
style-to-object@^0.4.0:
version "0.4.1"
resolved "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.1.tgz"