mirror of
https://github.com/logto-io/logto.git
synced 2024-12-30 20:33:54 -05:00
fix: build and types
This commit is contained in:
parent
9b4683b709
commit
8b515435cd
29 changed files with 82 additions and 82 deletions
|
@ -40,5 +40,12 @@
|
||||||
"html-parse-stringify": "html-parse-stringify/dist/html-parse-stringify.module.js",
|
"html-parse-stringify": "html-parse-stringify/dist/html-parse-stringify.module.js",
|
||||||
"react-hook-form": "react-hook-form/dist/index.esm.mjs",
|
"react-hook-form": "react-hook-form/dist/index.esm.mjs",
|
||||||
"superstruct": "superstruct/lib/index.es.js"
|
"superstruct": "superstruct/lib/index.es.js"
|
||||||
|
},
|
||||||
|
"pnpm": {
|
||||||
|
"peerDependencyRules": {
|
||||||
|
"allowedVersions": {
|
||||||
|
"react": "^18.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,7 @@
|
||||||
"@logto/react": "^1.0.0-beta.0",
|
"@logto/react": "^1.0.0-beta.0",
|
||||||
"@logto/schemas": "^1.0.0-beta.3",
|
"@logto/schemas": "^1.0.0-beta.3",
|
||||||
"@logto/shared": "^1.0.0-beta.3",
|
"@logto/shared": "^1.0.0-beta.3",
|
||||||
"@mdx-js/react": "^2.1.2",
|
"@mdx-js/react": "^1.6.22",
|
||||||
"@parcel/core": "2.6.2",
|
"@parcel/core": "2.6.2",
|
||||||
"@parcel/transformer-mdx": "2.6.2",
|
"@parcel/transformer-mdx": "2.6.2",
|
||||||
"@parcel/transformer-sass": "2.6.2",
|
"@parcel/transformer-sass": "2.6.2",
|
||||||
|
@ -77,7 +77,7 @@
|
||||||
"recharts": "^2.1.13",
|
"recharts": "^2.1.13",
|
||||||
"remark-gfm": "^3.0.1",
|
"remark-gfm": "^3.0.1",
|
||||||
"stylelint": "^14.9.1",
|
"stylelint": "^14.9.1",
|
||||||
"swr": "^1.2.2",
|
"swr": "^1.3.0",
|
||||||
"typescript": "^4.7.4",
|
"typescript": "^4.7.4",
|
||||||
"zod": "^3.14.3"
|
"zod": "^3.14.3"
|
||||||
},
|
},
|
||||||
|
|
2
packages/console/src/assets/index.d.ts
vendored
2
packages/console/src/assets/index.d.ts
vendored
|
@ -1,4 +1,4 @@
|
||||||
interface SvgComponent extends React.StatelessComponent<React.SVGAttributes<SVGElement>> {}
|
interface SvgComponent extends React.FunctionComponent<React.SVGAttributes<SVGElement>> {}
|
||||||
|
|
||||||
declare module '*.svg' {
|
declare module '*.svg' {
|
||||||
const value: SvgComponent;
|
const value: SvgComponent;
|
||||||
|
|
|
@ -7,7 +7,7 @@ import initI18n from '@/i18n/init';
|
||||||
import * as styles from './index.module.scss';
|
import * as styles from './index.module.scss';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
children?: ReactNode;
|
children: ReactNode;
|
||||||
};
|
};
|
||||||
|
|
||||||
const AppBoundary = ({ children }: Props) => {
|
const AppBoundary = ({ children }: Props) => {
|
||||||
|
|
|
@ -31,8 +31,8 @@ const Contact = ({ isOpen, onCancel }: Props) => {
|
||||||
<ContactIcon />
|
<ContactIcon />
|
||||||
</div>
|
</div>
|
||||||
<div className={styles.text}>
|
<div className={styles.text}>
|
||||||
<div className={styles.title}>{t(title)}</div>
|
<div className={styles.title}>{String(t(title))}</div>
|
||||||
<div className={styles.description}>{t(description)}</div>
|
<div className={styles.description}>{String(t(description))}</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<Button
|
<Button
|
||||||
|
|
|
@ -82,7 +82,7 @@ const Button = ({
|
||||||
>
|
>
|
||||||
{showSpinner && <Spinner className={styles.spinner} />}
|
{showSpinner && <Spinner className={styles.spinner} />}
|
||||||
{icon && <span className={styles.icon}>{icon}</span>}
|
{icon && <span className={styles.icon}>{icon}</span>}
|
||||||
{title && (typeof title === 'string' ? <span>{t(title)}</span> : title)}
|
{title && (typeof title === 'string' ? <span>{String(t(title))}</span> : title)}
|
||||||
</button>
|
</button>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -20,10 +20,10 @@ const CardTitle = ({ title, subtitle, size = 'large' }: Props) => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={classNames(styles.container, styles[size])}>
|
<div className={classNames(styles.container, styles[size])}>
|
||||||
<div className={styles.title}>{typeof title === 'string' ? t(title) : title}</div>
|
<div className={styles.title}>{typeof title === 'string' ? String(t(title)) : title}</div>
|
||||||
{subtitle && (
|
{subtitle && (
|
||||||
<div className={styles.subtitle}>
|
<div className={styles.subtitle}>
|
||||||
{typeof subtitle === 'string' ? t(subtitle) : subtitle}
|
{typeof subtitle === 'string' ? String(t(subtitle)) : subtitle}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
import { MouseEvent } from 'react';
|
import React, { MouseEvent, ReactNode } from 'react';
|
||||||
|
|
||||||
import * as styles from './DropdownItem.module.scss';
|
import * as styles from './DropdownItem.module.scss';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
onClick?: (event: MouseEvent<HTMLLIElement>) => void;
|
onClick?: (event: MouseEvent<HTMLLIElement>) => void;
|
||||||
className?: string;
|
className?: string;
|
||||||
children: React.ReactNode;
|
children: ReactNode | Record<string, unknown>;
|
||||||
icon?: React.ReactNode;
|
icon?: ReactNode;
|
||||||
iconClassName?: string;
|
iconClassName?: string;
|
||||||
type?: 'default' | 'danger';
|
type?: 'default' | 'danger';
|
||||||
};
|
};
|
||||||
|
@ -22,7 +22,7 @@ const DropdownItem = ({
|
||||||
}: Props) => (
|
}: Props) => (
|
||||||
<li className={classNames(styles.item, styles[type], className)} onClick={onClick}>
|
<li className={classNames(styles.item, styles[type], className)} onClick={onClick}>
|
||||||
{icon && <span className={classNames(styles.icon, iconClassName)}>{icon}</span>}
|
{icon && <span className={classNames(styles.icon, iconClassName)}>{icon}</span>}
|
||||||
{children}
|
{React.isValidElement(children) ? children : String(children)}
|
||||||
</li>
|
</li>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ const FormField = ({ title, children, isRequired, className, tooltip }: Props) =
|
||||||
return (
|
return (
|
||||||
<div className={classNames(styles.field, className)}>
|
<div className={classNames(styles.field, className)}>
|
||||||
<div className={styles.headline}>
|
<div className={styles.headline}>
|
||||||
<div className={styles.title}>{typeof title === 'string' ? t(title) : title}</div>
|
<div className={styles.title}>{typeof title === 'string' ? String(t(title)) : title}</div>
|
||||||
{tooltip && (
|
{tooltip && (
|
||||||
<div ref={tipRef} className={styles.icon}>
|
<div ref={tipRef} className={styles.icon}>
|
||||||
<Tip />
|
<Tip />
|
||||||
|
|
|
@ -20,7 +20,7 @@ const LinkButton = ({ to, title, icon, className }: Props) => {
|
||||||
return (
|
return (
|
||||||
<Link to={to} className={classNames(styles.linkButton, className)}>
|
<Link to={to} className={classNames(styles.linkButton, className)}>
|
||||||
{icon}
|
{icon}
|
||||||
{typeof title === 'string' ? <span>{t(title)}</span> : title}
|
{typeof title === 'string' ? <span>{String(t(title))}</span> : title}
|
||||||
</Link>
|
</Link>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -76,9 +76,9 @@ const Radio = ({
|
||||||
{type === 'card' && <Check />}
|
{type === 'card' && <Check />}
|
||||||
{children}
|
{children}
|
||||||
{type === 'plain' && <div className={styles.indicator} />}
|
{type === 'plain' && <div className={styles.indicator} />}
|
||||||
{title && t(title)}
|
{title && String(t(title))}
|
||||||
{isDisabled && disabledLabel && (
|
{isDisabled && disabledLabel && (
|
||||||
<div className={styles.disabledLabel}>{t(disabledLabel)}</div>
|
<div className={styles.disabledLabel}>{String(t(disabledLabel))}</div>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
import { ReactNode, RefObject, useEffect, useLayoutEffect, useRef, useState } from 'react';
|
import React, { ReactNode, RefObject, useEffect, useLayoutEffect, useRef, useState } from 'react';
|
||||||
import { createPortal } from 'react-dom';
|
import { createPortal } from 'react-dom';
|
||||||
|
|
||||||
import usePosition, { HorizontalAlignment } from '@/hooks/use-position';
|
import usePosition, { HorizontalAlignment } from '@/hooks/use-position';
|
||||||
|
@ -7,7 +7,7 @@ import usePosition, { HorizontalAlignment } from '@/hooks/use-position';
|
||||||
import * as styles from './index.module.scss';
|
import * as styles from './index.module.scss';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
content: ReactNode;
|
content: ReactNode | Record<string, unknown>;
|
||||||
anchorRef: RefObject<Element>;
|
anchorRef: RefObject<Element>;
|
||||||
className?: string;
|
className?: string;
|
||||||
isKeepOpen?: boolean;
|
isKeepOpen?: boolean;
|
||||||
|
@ -131,7 +131,9 @@ const Tooltip = ({
|
||||||
)}
|
)}
|
||||||
style={{ ...position }}
|
style={{ ...position }}
|
||||||
>
|
>
|
||||||
<div className={styles.content}>{content}</div>
|
<div className={styles.content}>
|
||||||
|
{React.isValidElement(content) ? content : String(content)}
|
||||||
|
</div>
|
||||||
</div>,
|
</div>,
|
||||||
tooltipDom
|
tooltipDom
|
||||||
);
|
);
|
||||||
|
|
|
@ -70,7 +70,7 @@ const useUserPreferences = () => {
|
||||||
|
|
||||||
return {
|
return {
|
||||||
isLoading: !data && !error,
|
isLoading: !data && !error,
|
||||||
isLoaded: data && !error,
|
isLoaded: Boolean(data && !error),
|
||||||
data: userPreferences,
|
data: userPreferences,
|
||||||
update,
|
update,
|
||||||
error,
|
error,
|
||||||
|
|
|
@ -7,11 +7,11 @@ import ArrowRight from '@/assets/images/triangle-right.svg';
|
||||||
import * as styles from './index.module.scss';
|
import * as styles from './index.module.scss';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
children: ReactNode[];
|
children?: ReactNode[] | ReactNode;
|
||||||
};
|
};
|
||||||
|
|
||||||
const DetailsSummary = ({ children }: Props) => {
|
const DetailsSummary = ({ children }: Props) => {
|
||||||
const [summary, details] = children;
|
const [summary, details] = Array.isArray(children) ? children : [children];
|
||||||
const [isExpanded, setIsExpanded] = useState(false);
|
const [isExpanded, setIsExpanded] = useState(false);
|
||||||
const [height, setHeight] = useState<Height>(0);
|
const [height, setHeight] = useState<Height>(0);
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ const ConnectorTabs = ({ target, connectorId }: Props) => {
|
||||||
<ConnectorPlatformIcon platform={connector.platform} />
|
<ConnectorPlatformIcon platform={connector.platform} />
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{connector.platform && t(connectorPlatformLabel[connector.platform])}
|
{connector.platform && String(t(connectorPlatformLabel[connector.platform]))}
|
||||||
</Link>
|
</Link>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -34,7 +34,7 @@ const ConnectorName = ({ type, connectors, onClickSetup }: Props) => {
|
||||||
<ItemPreview
|
<ItemPreview
|
||||||
title={
|
title={
|
||||||
<div className={styles.previewTitle}>
|
<div className={styles.previewTitle}>
|
||||||
<div>{t(connectorTitlePlaceHolder[type])}</div>
|
<div>{String(t(connectorTitlePlaceHolder[type]))}</div>
|
||||||
{type !== ConnectorType.Social && (
|
{type !== ConnectorType.Social && (
|
||||||
<Button title="general.set_up" onClick={onClickSetup} />
|
<Button title="general.set_up" onClick={onClickSetup} />
|
||||||
)}
|
)}
|
||||||
|
@ -63,7 +63,7 @@ const ConnectorName = ({ type, connectors, onClickSetup }: Props) => {
|
||||||
platform && (
|
platform && (
|
||||||
<div key={id} className={styles.platform}>
|
<div key={id} className={styles.platform}>
|
||||||
<ConnectorPlatformIcon platform={platform} />
|
<ConnectorPlatformIcon platform={platform} />
|
||||||
{t(`${connectorPlatformLabel[platform]}`)}
|
{String(t(`${connectorPlatformLabel[platform]}`))}
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
)}
|
)}
|
||||||
|
|
|
@ -36,7 +36,7 @@ const ConnectorRow = ({ type, connectors, onClickSetup }: Props) => {
|
||||||
<td>
|
<td>
|
||||||
<ConnectorName type={type} connectors={connectors} onClickSetup={onClickSetup} />
|
<ConnectorName type={type} connectors={connectors} onClickSetup={onClickSetup} />
|
||||||
</td>
|
</td>
|
||||||
<td>{t(connectorTitlePlaceHolder[type])}</td>
|
<td>{String(t(connectorTitlePlaceHolder[type]))}</td>
|
||||||
<td>
|
<td>
|
||||||
{inUse !== undefined && (
|
{inUse !== undefined && (
|
||||||
<Status status={inUse ? 'enabled' : 'disabled'}>
|
<Status status={inUse ? 'enabled' : 'disabled'}>
|
||||||
|
|
|
@ -99,7 +99,7 @@ const CreateForm = ({ onClose, isOpen: isFormOpen, type }: Props) => {
|
||||||
onClose={onClose}
|
onClose={onClose}
|
||||||
>
|
>
|
||||||
{isLoading && 'Loading...'}
|
{isLoading && 'Loading...'}
|
||||||
{error && error}
|
{error?.message}
|
||||||
{groups && (
|
{groups && (
|
||||||
<RadioGroup name="group" value={activeGroupId} type="card" onChange={handleGroupChange}>
|
<RadioGroup name="group" value={activeGroupId} type="card" onChange={handleGroupChange}>
|
||||||
{groups.map(({ id, name, logo, description, connectors }) => (
|
{groups.map(({ id, name, logo, description, connectors }) => (
|
||||||
|
|
|
@ -29,7 +29,7 @@ const Block = ({ variant = 'default', count, delta, title, tooltip }: Props) =>
|
||||||
return (
|
return (
|
||||||
<Card className={classNames(styles.block, styles[variant])}>
|
<Card className={classNames(styles.block, styles[variant])}>
|
||||||
<div className={styles.title}>
|
<div className={styles.title}>
|
||||||
{t(title)}
|
{String(t(title))}
|
||||||
{tooltip && (
|
{tooltip && (
|
||||||
<div ref={tipRef} className={styles.icon}>
|
<div ref={tipRef} className={styles.icon}>
|
||||||
<Tip />
|
<Tip />
|
||||||
|
|
|
@ -53,8 +53,8 @@ const GetStarted = () => {
|
||||||
{!isComplete && <CardIcon className={styles.icon} />}
|
{!isComplete && <CardIcon className={styles.icon} />}
|
||||||
{isComplete && <CompleteIndicator className={styles.icon} />}
|
{isComplete && <CompleteIndicator className={styles.icon} />}
|
||||||
<div className={styles.wrapper}>
|
<div className={styles.wrapper}>
|
||||||
<div className={styles.title}>{t(title)}</div>
|
<div className={styles.title}>{Boolean(t(title))}</div>
|
||||||
<div className={styles.subtitle}>{t(subtitle)}</div>
|
<div className={styles.subtitle}>{Boolean(t(subtitle))}</div>
|
||||||
</div>
|
</div>
|
||||||
<Button
|
<Button
|
||||||
className={styles.button}
|
className={styles.button}
|
||||||
|
|
|
@ -62,17 +62,17 @@ const Main = () => {
|
||||||
<div className={styles.app}>
|
<div className={styles.app}>
|
||||||
<div className={styles.card}>
|
<div className={styles.card}>
|
||||||
{congratsIcon && <img src={congratsIcon} alt="Congrats" />}
|
{congratsIcon && <img src={congratsIcon} alt="Congrats" />}
|
||||||
<div className={styles.title}>{t('title')}</div>
|
<div className={styles.title}>{String(t('title'))}</div>
|
||||||
<div className={styles.text}>{t('subtitle')}</div>
|
<div className={styles.text}>{String(t('subtitle'))}</div>
|
||||||
<div className={styles.infoCard}>
|
<div className={styles.infoCard}>
|
||||||
{user.username && (
|
{user.username && (
|
||||||
<div>
|
<div>
|
||||||
{t('username')}
|
{String(t('username'))}
|
||||||
<span>{user.username}</span>
|
<span>{user.username}</span>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
<div>
|
<div>
|
||||||
{t('user_id')}
|
{String(t('user_id'))}
|
||||||
<span>{user.sub}</span>
|
<span>{user.sub}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -80,7 +80,7 @@ const Main = () => {
|
||||||
className={styles.button}
|
className={styles.button}
|
||||||
onClick={async () => signOut(`${window.location.origin}/demo-app`)}
|
onClick={async () => signOut(`${window.location.origin}/demo-app`)}
|
||||||
>
|
>
|
||||||
{t('sign_out')}
|
{String(t('sign_out'))}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -37,12 +37,5 @@
|
||||||
"eslintConfig": {
|
"eslintConfig": {
|
||||||
"extends": "@silverhand"
|
"extends": "@silverhand"
|
||||||
},
|
},
|
||||||
"prettier": "@silverhand/eslint-config/.prettierrc",
|
"prettier": "@silverhand/eslint-config/.prettierrc"
|
||||||
"pnpm": {
|
|
||||||
"peerDependencyRules": {
|
|
||||||
"allowedVersions": {
|
|
||||||
"@mdx-js/react": "2.1.2"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
2
packages/ui/src/assets/index.d.ts
vendored
2
packages/ui/src/assets/index.d.ts
vendored
|
@ -1,4 +1,4 @@
|
||||||
interface SvgComponent extends React.StatelessComponent<React.SVGAttributes<SVGElement>> {}
|
interface SvgComponent extends React.FunctionComponent<React.SVGAttributes<SVGElement>> {}
|
||||||
|
|
||||||
declare module '@/assets/icons/*.svg' {
|
declare module '@/assets/icons/*.svg' {
|
||||||
const value: SvgComponent;
|
const value: SvgComponent;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import classNames from 'classnames';
|
import classNames from 'classnames';
|
||||||
import { ReactNode } from 'react';
|
import React, { ReactNode } from 'react';
|
||||||
|
|
||||||
import * as styles from './index.module.scss';
|
import * as styles from './index.module.scss';
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ export type Props = {
|
||||||
htmlType?: 'button' | 'submit' | 'reset';
|
htmlType?: 'button' | 'submit' | 'reset';
|
||||||
isDisabled?: boolean;
|
isDisabled?: boolean;
|
||||||
className?: string;
|
className?: string;
|
||||||
children: ReactNode;
|
children: ReactNode | Record<string, unknown>;
|
||||||
type?: 'primary' | 'secondary' | 'outline';
|
type?: 'primary' | 'secondary' | 'outline';
|
||||||
size?: 'small' | 'large';
|
size?: 'small' | 'large';
|
||||||
onClick?: React.MouseEventHandler;
|
onClick?: React.MouseEventHandler;
|
||||||
|
@ -34,7 +34,7 @@ const Button = ({
|
||||||
type={htmlType}
|
type={htmlType}
|
||||||
onClick={onClick}
|
onClick={onClick}
|
||||||
>
|
>
|
||||||
{children}
|
{React.isValidElement(children) ? children : String(children)}
|
||||||
</button>
|
</button>
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ const Divider = ({ className, label }: Props) => {
|
||||||
return (
|
return (
|
||||||
<div className={classNames(styles.divider, className)}>
|
<div className={classNames(styles.divider, className)}>
|
||||||
<i className={styles.line} />
|
<i className={styles.line} />
|
||||||
{label && t(label)}
|
{label && String(t(label))}
|
||||||
<i className={styles.line} />
|
<i className={styles.line} />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
@ -19,14 +19,14 @@ const TextLink = ({ className, children, text, type = 'primary', to, ...rest }:
|
||||||
if (to) {
|
if (to) {
|
||||||
return (
|
return (
|
||||||
<Link className={classNames(styles.link, styles[type], className)} to={to}>
|
<Link className={classNames(styles.link, styles[type], className)} to={to}>
|
||||||
{children ?? (text ? t(text) : '')}
|
{children ?? (text ? String(t(text)) : '')}
|
||||||
</Link>
|
</Link>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<a className={classNames(styles.link, styles[type], className)} {...rest} rel="noreferrer">
|
<a className={classNames(styles.link, styles[type], className)} {...rest} rel="noreferrer">
|
||||||
{children ?? (text ? t(text) : '')}
|
{children ?? (text ? String(t(text)) : '')}
|
||||||
</a>
|
</a>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -23,7 +23,7 @@ const useBindSocial = () => {
|
||||||
);
|
);
|
||||||
|
|
||||||
const bindRelatedUserHandler = useCallback(
|
const bindRelatedUserHandler = useCallback(
|
||||||
(connectorId) => {
|
(connectorId: string) => {
|
||||||
void asyncBindSocialRelatedUser(connectorId);
|
void asyncBindSocialRelatedUser(connectorId);
|
||||||
},
|
},
|
||||||
[asyncBindSocialRelatedUser]
|
[asyncBindSocialRelatedUser]
|
||||||
|
|
|
@ -24,8 +24,8 @@ const ErrorPage = ({ title = 'description.not_found', message, rawMessage }: Pro
|
||||||
<NavBar />
|
<NavBar />
|
||||||
<div className={styles.container}>
|
<div className={styles.container}>
|
||||||
<ErrorImage />
|
<ErrorImage />
|
||||||
<div className={styles.title}>{t(title)}</div>
|
<div className={styles.title}>{String(t(title))}</div>
|
||||||
{errorMessage && <div className={styles.message}>{errorMessage}</div>}
|
{errorMessage && <div className={styles.message}>{String(errorMessage)}</div>}
|
||||||
</div>
|
</div>
|
||||||
<Button
|
<Button
|
||||||
className={styles.backButton}
|
className={styles.backButton}
|
||||||
|
|
|
@ -782,7 +782,7 @@ importers:
|
||||||
'@logto/react': ^1.0.0-beta.0
|
'@logto/react': ^1.0.0-beta.0
|
||||||
'@logto/schemas': ^1.0.0-beta.3
|
'@logto/schemas': ^1.0.0-beta.3
|
||||||
'@logto/shared': ^1.0.0-beta.3
|
'@logto/shared': ^1.0.0-beta.3
|
||||||
'@mdx-js/react': ^2.1.2
|
'@mdx-js/react': ^1.6.22
|
||||||
'@parcel/core': 2.6.2
|
'@parcel/core': 2.6.2
|
||||||
'@parcel/transformer-mdx': 2.6.2
|
'@parcel/transformer-mdx': 2.6.2
|
||||||
'@parcel/transformer-sass': 2.6.2
|
'@parcel/transformer-sass': 2.6.2
|
||||||
|
@ -836,7 +836,7 @@ importers:
|
||||||
recharts: ^2.1.13
|
recharts: ^2.1.13
|
||||||
remark-gfm: ^3.0.1
|
remark-gfm: ^3.0.1
|
||||||
stylelint: ^14.9.1
|
stylelint: ^14.9.1
|
||||||
swr: ^1.2.2
|
swr: ^1.3.0
|
||||||
typescript: ^4.7.4
|
typescript: ^4.7.4
|
||||||
zod: ^3.14.3
|
zod: ^3.14.3
|
||||||
devDependencies:
|
devDependencies:
|
||||||
|
@ -846,9 +846,9 @@ importers:
|
||||||
'@logto/react': 1.0.0-beta.0_react@18.2.0
|
'@logto/react': 1.0.0-beta.0_react@18.2.0
|
||||||
'@logto/schemas': link:../schemas
|
'@logto/schemas': link:../schemas
|
||||||
'@logto/shared': link:../shared
|
'@logto/shared': link:../shared
|
||||||
'@mdx-js/react': 2.1.2_react@18.2.0
|
'@mdx-js/react': 1.6.22_react@18.2.0
|
||||||
'@parcel/core': 2.6.2
|
'@parcel/core': 2.6.2
|
||||||
'@parcel/transformer-mdx': 2.6.2_6on4ch7ldmuyqgtyiquyfzuvzi
|
'@parcel/transformer-mdx': 2.6.2_vink6i55tfbj7e5e3upc7yifsu
|
||||||
'@parcel/transformer-sass': 2.6.2_@parcel+core@2.6.2
|
'@parcel/transformer-sass': 2.6.2_@parcel+core@2.6.2
|
||||||
'@parcel/transformer-svg-react': 2.6.2_@parcel+core@2.6.2
|
'@parcel/transformer-svg-react': 2.6.2_@parcel+core@2.6.2
|
||||||
'@silverhand/eslint-config': 1.0.0-rc.2_swk2g7ygmfleszo5c33j4vooni
|
'@silverhand/eslint-config': 1.0.0-rc.2_swk2g7ygmfleszo5c33j4vooni
|
||||||
|
@ -900,7 +900,7 @@ importers:
|
||||||
recharts: 2.1.13_v2m5e27vhdewzwhryxwfaorcca
|
recharts: 2.1.13_v2m5e27vhdewzwhryxwfaorcca
|
||||||
remark-gfm: 3.0.1
|
remark-gfm: 3.0.1
|
||||||
stylelint: 14.9.1
|
stylelint: 14.9.1
|
||||||
swr: 1.2.2_react@18.2.0
|
swr: 1.3.0_react@18.2.0
|
||||||
typescript: 4.7.4
|
typescript: 4.7.4
|
||||||
zod: 3.14.3
|
zod: 3.14.3
|
||||||
|
|
||||||
|
@ -3156,7 +3156,7 @@ packages:
|
||||||
/@logto/react/1.0.0-beta.0_react@18.2.0:
|
/@logto/react/1.0.0-beta.0_react@18.2.0:
|
||||||
resolution: {integrity: sha512-K6tg8iYl0XEdvr06+mATSkg2VlFbtwlH63317w4VuDNMDPZVGnr/vGBkFjS97sflz13IAZNYfk7mKWEiJsP8BA==}
|
resolution: {integrity: sha512-K6tg8iYl0XEdvr06+mATSkg2VlFbtwlH63317w4VuDNMDPZVGnr/vGBkFjS97sflz13IAZNYfk7mKWEiJsP8BA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: '>=16.8.0'
|
react: '>=16.8.0 || ^18.0.0'
|
||||||
dependencies:
|
dependencies:
|
||||||
'@logto/browser': 1.0.0-beta.0
|
'@logto/browser': 1.0.0-beta.0
|
||||||
'@silverhand/essentials': 1.1.7
|
'@silverhand/essentials': 1.1.7
|
||||||
|
@ -3207,13 +3207,11 @@ packages:
|
||||||
- supports-color
|
- supports-color
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@mdx-js/react/2.1.2_react@18.2.0:
|
/@mdx-js/react/1.6.22_react@18.2.0:
|
||||||
resolution: {integrity: sha512-52e3DTJBrjsw3U51ZCdZ3N1IBaqnbzLIngCSXpKtiYiGr7PIqp3/P/+kym0MPTwBL/y9ZBmCieD8FyrXuEDrRw==}
|
resolution: {integrity: sha512-TDoPum4SHdfPiGSAaRBw7ECyI8VaHpK8GJugbJIJuqyh6kzw9ZLJZW3HGL3NNrJGxcAixUvqROm+YuQOo5eXtg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: '>=16'
|
react: ^16.13.1 || ^17.0.0 || ^18.0.0
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/mdx': 2.0.1
|
|
||||||
'@types/react': 18.0.15
|
|
||||||
react: 18.2.0
|
react: 18.2.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
@ -4217,14 +4215,14 @@ packages:
|
||||||
- '@parcel/core'
|
- '@parcel/core'
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@parcel/transformer-mdx/2.6.2_6on4ch7ldmuyqgtyiquyfzuvzi:
|
/@parcel/transformer-mdx/2.6.2_vink6i55tfbj7e5e3upc7yifsu:
|
||||||
resolution: {integrity: sha512-1IwMN2CA0N9eSAR5IpgOnMBo3oiUEzR8krY4XFMPy27Vy/4BtVbHFR7B95t68aF6Spwet0eysdwUNUS/uXMx8g==}
|
resolution: {integrity: sha512-1IwMN2CA0N9eSAR5IpgOnMBo3oiUEzR8krY4XFMPy27Vy/4BtVbHFR7B95t68aF6Spwet0eysdwUNUS/uXMx8g==}
|
||||||
engines: {node: '>= 12.0.0', parcel: ^2.6.2}
|
engines: {node: '>= 12.0.0', parcel: ^2.6.2}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@mdx-js/react': ^1.6.22
|
'@mdx-js/react': ^1.6.22
|
||||||
dependencies:
|
dependencies:
|
||||||
'@mdx-js/mdx': 1.6.22
|
'@mdx-js/mdx': 1.6.22
|
||||||
'@mdx-js/react': 2.1.2_react@18.2.0
|
'@mdx-js/react': 1.6.22_react@18.2.0
|
||||||
'@parcel/plugin': 2.6.2_@parcel+core@2.6.2
|
'@parcel/plugin': 2.6.2_@parcel+core@2.6.2
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@parcel/core'
|
- '@parcel/core'
|
||||||
|
@ -13071,7 +13069,7 @@ packages:
|
||||||
resolution: {integrity: sha512-k+mBS8yCzpFp+7BdrHsL5bXd6CO/2bYO2SvRGKfxK+Ss3nzplAJLlgnd6Zhcxe/avdpy/CgcziicFj7pIHgG5g==}
|
resolution: {integrity: sha512-k+mBS8yCzpFp+7BdrHsL5bXd6CO/2bYO2SvRGKfxK+Ss3nzplAJLlgnd6Zhcxe/avdpy/CgcziicFj7pIHgG5g==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: '>=16.8.0'
|
react: '>=16.8.0 || ^18.0.0'
|
||||||
react-dom: '>=16.8.0'
|
react-dom: '>=16.8.0'
|
||||||
dependencies:
|
dependencies:
|
||||||
classnames: 2.3.1
|
classnames: 2.3.1
|
||||||
|
@ -13102,7 +13100,7 @@ packages:
|
||||||
'@types/hoist-non-react-statics': '>= 3.3.1'
|
'@types/hoist-non-react-statics': '>= 3.3.1'
|
||||||
'@types/node': '>= 12'
|
'@types/node': '>= 12'
|
||||||
'@types/react': '>= 16'
|
'@types/react': '>= 16'
|
||||||
react: '>= 16.14'
|
react: '>= 16.14 || ^18.0.0'
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
'@types/hoist-non-react-statics':
|
'@types/hoist-non-react-statics':
|
||||||
optional: true
|
optional: true
|
||||||
|
@ -13123,7 +13121,7 @@ packages:
|
||||||
/react-dom/18.2.0_react@18.2.0:
|
/react-dom/18.2.0_react@18.2.0:
|
||||||
resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
|
resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: ^18.2.0
|
react: ^18.2.0 || ^18.0.0
|
||||||
dependencies:
|
dependencies:
|
||||||
loose-envify: 1.4.0
|
loose-envify: 1.4.0
|
||||||
react: 18.2.0
|
react: 18.2.0
|
||||||
|
@ -13138,7 +13136,7 @@ packages:
|
||||||
resolution: {integrity: sha512-s0/TJ09NVlEk2JPp3yit1WnMuPNBXFmUKEQPulgDi9pYBw/ZmmAFHe6AXWq73Y+kp8ye4OcMf0Jv+i/qLPektg==}
|
resolution: {integrity: sha512-s0/TJ09NVlEk2JPp3yit1WnMuPNBXFmUKEQPulgDi9pYBw/ZmmAFHe6AXWq73Y+kp8ye4OcMf0Jv+i/qLPektg==}
|
||||||
engines: {node: '>=12.22.0'}
|
engines: {node: '>=12.22.0'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: ^16.8.0 || ^17 || ^18
|
react: ^16.8.0 || ^17 || ^18 || ^18.0.0
|
||||||
dependencies:
|
dependencies:
|
||||||
react: 18.2.0
|
react: 18.2.0
|
||||||
dev: true
|
dev: true
|
||||||
|
@ -13147,7 +13145,7 @@ packages:
|
||||||
resolution: {integrity: sha512-248rXw13uhf/6TNDVzagX+y7R8J183rp7MwUMNkcrBRyHj/jWOggfXTGlM8zAOuh701WyVW+eUaWG2LeSufX9g==}
|
resolution: {integrity: sha512-248rXw13uhf/6TNDVzagX+y7R8J183rp7MwUMNkcrBRyHj/jWOggfXTGlM8zAOuh701WyVW+eUaWG2LeSufX9g==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: '>=16'
|
react: '>=16 || ^18.0.0'
|
||||||
react-dom: '>=16'
|
react-dom: '>=16'
|
||||||
dependencies:
|
dependencies:
|
||||||
goober: 2.1.8_csstype@3.0.11
|
goober: 2.1.8_csstype@3.0.11
|
||||||
|
@ -13161,7 +13159,7 @@ packages:
|
||||||
resolution: {integrity: sha512-jKJNAcVcbPGK+yrTcXhLblgPY16n6NbpZZL3Mk8nswj1v3ayIiUBVDU09SgqnT+DluyQBS97hwSvPU5yVFG0yg==}
|
resolution: {integrity: sha512-jKJNAcVcbPGK+yrTcXhLblgPY16n6NbpZZL3Mk8nswj1v3ayIiUBVDU09SgqnT+DluyQBS97hwSvPU5yVFG0yg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
i18next: '>= 19.0.0'
|
i18next: '>= 19.0.0'
|
||||||
react: '>= 16.8.0'
|
react: '>= 16.8.0 || ^18.0.0'
|
||||||
react-dom: '*'
|
react-dom: '*'
|
||||||
react-native: '*'
|
react-native: '*'
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
|
@ -13197,7 +13195,7 @@ packages:
|
||||||
resolution: {integrity: sha512-qbrWpLny6Ef2xHqnYqtot948LXP+4FtC+MWIuaN1kvSnowM+r1qEeEHpSaU0TDBOisQuj+Qe6eFY15cNL3gLAw==}
|
resolution: {integrity: sha512-qbrWpLny6Ef2xHqnYqtot948LXP+4FtC+MWIuaN1kvSnowM+r1qEeEHpSaU0TDBOisQuj+Qe6eFY15cNL3gLAw==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@types/react': '>=16'
|
'@types/react': '>=16'
|
||||||
react: '>=16'
|
react: '>=16 || ^18.0.0'
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/hast': 2.3.4
|
'@types/hast': 2.3.4
|
||||||
'@types/react': 18.0.15
|
'@types/react': 18.0.15
|
||||||
|
@ -13233,7 +13231,7 @@ packages:
|
||||||
resolution: {integrity: sha512-duB9bxOaYg7Zt6TMFldIFxQRtSP+Dg3F1ZX3FXxSUn+3tZZ/9JCgeAQKDg7rhZSAqopq8TFRw3yIbnx77gyFTw==}
|
resolution: {integrity: sha512-duB9bxOaYg7Zt6TMFldIFxQRtSP+Dg3F1ZX3FXxSUn+3tZZ/9JCgeAQKDg7rhZSAqopq8TFRw3yIbnx77gyFTw==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: ^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18
|
react: ^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 || ^18.0.0
|
||||||
react-dom: ^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18
|
react-dom: ^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18
|
||||||
dependencies:
|
dependencies:
|
||||||
exenv: 1.2.2
|
exenv: 1.2.2
|
||||||
|
@ -13247,7 +13245,7 @@ packages:
|
||||||
/react-paginate/8.1.3_react@18.2.0:
|
/react-paginate/8.1.3_react@18.2.0:
|
||||||
resolution: {integrity: sha512-zBp80DBRcaeBnAeHUfbGKD0XHfbGNUolQ+S60Ymfs8o7rusYaJYZMAt1j93ADDNLlzRmJ0tMF/NeTlcdKf7dlQ==}
|
resolution: {integrity: sha512-zBp80DBRcaeBnAeHUfbGKD0XHfbGNUolQ+S60Ymfs8o7rusYaJYZMAt1j93ADDNLlzRmJ0tMF/NeTlcdKf7dlQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: ^16 || ^17 || ^18
|
react: ^16 || ^17 || ^18 || ^18.0.0
|
||||||
dependencies:
|
dependencies:
|
||||||
prop-types: 15.8.1
|
prop-types: 15.8.1
|
||||||
react: 18.2.0
|
react: 18.2.0
|
||||||
|
@ -13284,7 +13282,7 @@ packages:
|
||||||
/react-router-dom/6.3.0_biqbaboplfbrettd7655fr4n2y:
|
/react-router-dom/6.3.0_biqbaboplfbrettd7655fr4n2y:
|
||||||
resolution: {integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==}
|
resolution: {integrity: sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: '>=16.8'
|
react: '>=16.8 || ^18.0.0'
|
||||||
react-dom: '>=16.8'
|
react-dom: '>=16.8'
|
||||||
dependencies:
|
dependencies:
|
||||||
history: 5.3.0
|
history: 5.3.0
|
||||||
|
@ -13305,7 +13303,7 @@ packages:
|
||||||
/react-router/6.3.0_react@18.2.0:
|
/react-router/6.3.0_react@18.2.0:
|
||||||
resolution: {integrity: sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==}
|
resolution: {integrity: sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: '>=16.8'
|
react: '>=16.8 || ^18.0.0'
|
||||||
dependencies:
|
dependencies:
|
||||||
history: 5.3.0
|
history: 5.3.0
|
||||||
react: 18.2.0
|
react: 18.2.0
|
||||||
|
@ -13333,7 +13331,7 @@ packages:
|
||||||
/react-syntax-highlighter/15.5.0_react@18.2.0:
|
/react-syntax-highlighter/15.5.0_react@18.2.0:
|
||||||
resolution: {integrity: sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==}
|
resolution: {integrity: sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: '>= 0.14.0'
|
react: '>= 0.14.0 || ^18.0.0'
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.17.9
|
'@babel/runtime': 7.17.9
|
||||||
highlight.js: 10.7.3
|
highlight.js: 10.7.3
|
||||||
|
@ -13356,7 +13354,7 @@ packages:
|
||||||
/react-transition-group/2.9.0_biqbaboplfbrettd7655fr4n2y:
|
/react-transition-group/2.9.0_biqbaboplfbrettd7655fr4n2y:
|
||||||
resolution: {integrity: sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==}
|
resolution: {integrity: sha512-+HzNTCHpeQyl4MJ/bdE0u6XRMe9+XG/+aL4mCxVN4DnPBQ0/5bfHWPDuOZUzYdMj94daZaZdCCc1Dzt9R/xSSg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: '>=15.0.0'
|
react: '>=15.0.0 || ^18.0.0'
|
||||||
react-dom: '>=15.0.0'
|
react-dom: '>=15.0.0'
|
||||||
dependencies:
|
dependencies:
|
||||||
dom-helpers: 3.4.0
|
dom-helpers: 3.4.0
|
||||||
|
@ -14719,8 +14717,8 @@ packages:
|
||||||
stable: 0.1.8
|
stable: 0.1.8
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/swr/1.2.2_react@18.2.0:
|
/swr/1.3.0_react@18.2.0:
|
||||||
resolution: {integrity: sha512-ky0BskS/V47GpW8d6RU7CPsr6J8cr7mQD6+do5eky3bM0IyJaoi3vO8UhvrzJaObuTlGhPl2szodeB2dUd76Xw==}
|
resolution: {integrity: sha512-dkghQrOl2ORX9HYrMDtPa7LTVHJjCTeZoB1dqTbnnEDlSvN8JEKpYIYurDfvbQFUUS8Cg8PceFVZNkW0KNNYPw==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
react: ^16.11.0 || ^17.0.0 || ^18.0.0
|
react: ^16.11.0 || ^17.0.0 || ^18.0.0
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
Loading…
Reference in a new issue