mirror of
https://github.com/logto-io/logto.git
synced 2025-01-27 21:39:16 -05:00
fix(console): ui fixes (#678)
* fix: tabnav border * fix: action menu * fix: copytoclipboard border
This commit is contained in:
parent
19b9db809a
commit
dc976d8248
15 changed files with 53 additions and 109 deletions
|
@ -1,30 +1,3 @@
|
|||
@use '@/scss/underscore' as _;
|
||||
|
||||
.actionMenu {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.content {
|
||||
background: var(--color-on-primary);
|
||||
box-shadow: var(--shadow-light-s2);
|
||||
border-radius: _.unit(2);
|
||||
position: absolute;
|
||||
min-width: 180px;
|
||||
|
||||
.title {
|
||||
padding: _.unit(5) _.unit(4) _.unit(2) _.unit(4);
|
||||
font: var(--font-body-medium);
|
||||
border-bottom: 1px solid var(--color-border);
|
||||
}
|
||||
}
|
||||
|
||||
.overlay {
|
||||
background: transparent;
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
}
|
||||
|
||||
ul.actionList {
|
||||
margin: 0;
|
||||
padding: _.unit(2) 0;
|
||||
min-width: 200px;
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ const ActionMenu = ({ children, buttonProps, title }: Props) => {
|
|||
const anchorReference = useRef<HTMLDivElement>(null);
|
||||
|
||||
return (
|
||||
<div className={styles.actionMenu}>
|
||||
<div>
|
||||
<ActionMenuButton
|
||||
{...buttonProps}
|
||||
ref={anchorReference}
|
||||
|
@ -30,6 +30,7 @@ const ActionMenu = ({ children, buttonProps, title }: Props) => {
|
|||
title={title}
|
||||
anchorRef={anchorReference}
|
||||
isOpen={isOpen}
|
||||
className={styles.content}
|
||||
onClose={() => {
|
||||
setIsOpen(false);
|
||||
}}
|
||||
|
|
|
@ -1,42 +0,0 @@
|
|||
import { RefObject, useCallback, useLayoutEffect, useState } from 'react';
|
||||
|
||||
type Position = {
|
||||
left: number;
|
||||
top: number;
|
||||
};
|
||||
|
||||
const safePadding = 20;
|
||||
const overlayPadding = 4;
|
||||
|
||||
export default function usePosition(
|
||||
anchorReference: RefObject<HTMLElement>,
|
||||
overlayReference: RefObject<HTMLElement>
|
||||
) {
|
||||
const [position, setPosition] = useState<Position>({ left: 0, top: 0 });
|
||||
|
||||
const updatePosition = useCallback(() => {
|
||||
if (anchorReference.current && overlayReference.current) {
|
||||
const anchor = anchorReference.current.getBoundingClientRect();
|
||||
const overlay = overlayReference.current.getBoundingClientRect();
|
||||
const isTopSide =
|
||||
anchor.y + anchor.height + overlay.height > window.innerHeight - safePadding;
|
||||
const isLeftSide = anchor.x + overlay.width > window.innerWidth - safePadding;
|
||||
const left = isLeftSide ? anchor.x + anchor.width - overlay.width : anchor.x;
|
||||
const top = isTopSide
|
||||
? anchor.y - overlay.height - overlayPadding
|
||||
: anchor.y + anchor.height + overlayPadding;
|
||||
setPosition({ left, top });
|
||||
}
|
||||
}, [anchorReference, overlayReference]);
|
||||
|
||||
useLayoutEffect(() => {
|
||||
updatePosition();
|
||||
window.addEventListener('resize', updatePosition);
|
||||
|
||||
return () => {
|
||||
window.removeEventListener('resize', updatePosition);
|
||||
};
|
||||
}, [updatePosition]);
|
||||
|
||||
return { position, mutate: updatePosition };
|
||||
}
|
|
@ -7,11 +7,16 @@
|
|||
font: var(--font-body-medium);
|
||||
cursor: default;
|
||||
|
||||
&.contained {
|
||||
&.contained,
|
||||
&.border {
|
||||
padding: _.unit(2) _.unit(3);
|
||||
background: var(--color-inverse-on-surface);
|
||||
}
|
||||
|
||||
&.border {
|
||||
border: 1px solid var(--color-border);
|
||||
}
|
||||
|
||||
.row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
|
|
@ -8,7 +8,7 @@ import * as styles from './index.module.scss';
|
|||
type Props = {
|
||||
value: string;
|
||||
className?: string;
|
||||
variant?: 'text' | 'contained';
|
||||
variant?: 'text' | 'contained' | 'border';
|
||||
};
|
||||
|
||||
const CopyIcon = forwardRef<SVGSVGElement, SVGProps<SVGSVGElement>>(
|
||||
|
|
|
@ -21,6 +21,6 @@
|
|||
.icon {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-right: _.unit(5);
|
||||
margin-right: _.unit(4);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
}
|
||||
|
||||
.title {
|
||||
padding: _.unit(4) _.unit(4) 0 _.unit(4);
|
||||
font: var(--font-body-medium);
|
||||
padding: _.unit(4) _.unit(3) 0 _.unit(3);
|
||||
font: var(--font-subhead-cap-small);
|
||||
color: var(--color-caption);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,9 +14,18 @@ type Props = {
|
|||
onClose?: () => void;
|
||||
anchorRef: RefObject<HTMLElement>;
|
||||
isFullWidth?: boolean;
|
||||
className?: string;
|
||||
};
|
||||
|
||||
const Dropdown = ({ children, title, isOpen, onClose, anchorRef, isFullWidth }: Props) => {
|
||||
const Dropdown = ({
|
||||
children,
|
||||
title,
|
||||
isOpen,
|
||||
onClose,
|
||||
anchorRef,
|
||||
isFullWidth,
|
||||
className,
|
||||
}: Props) => {
|
||||
const overlayRef = useRef<HTMLDivElement>(null);
|
||||
|
||||
const { position, mutate } = usePosition(anchorRef, overlayRef);
|
||||
|
@ -34,7 +43,7 @@ const Dropdown = ({ children, title, isOpen, onClose, anchorRef, isFullWidth }:
|
|||
}
|
||||
: { visibility: 'hidden' },
|
||||
}}
|
||||
className={classNames(styles.content, position?.isOnTop && styles.onTop)}
|
||||
className={classNames(styles.content, className, position?.isOnTop && styles.onTop)}
|
||||
overlayClassName={styles.overlay}
|
||||
onRequestClose={onClose}
|
||||
onAfterOpen={mutate}
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
.selected {
|
||||
color: var(--color-primary);
|
||||
border-bottom: 1px solid var(--color-primary);
|
||||
border-bottom: 2px solid var(--color-primary);
|
||||
margin-bottom: -1px;
|
||||
|
||||
a {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
@use '@/scss/underscore' as _;
|
||||
|
||||
.nav {
|
||||
border-bottom: 1px solid var(--color-border);
|
||||
border-bottom: 1px solid var(--color-divider);
|
||||
display: flex;
|
||||
margin: _.unit(1) 0;
|
||||
}
|
||||
|
|
|
@ -1,16 +1,9 @@
|
|||
import React, { SVGProps } from 'react';
|
||||
import React from 'react';
|
||||
|
||||
const Delete = (props: SVGProps<SVGSVGElement>) => (
|
||||
<svg
|
||||
width="16"
|
||||
height="18"
|
||||
viewBox="0 0 16 18"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
{...props}
|
||||
>
|
||||
const Delete = () => (
|
||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M6.33333 14.0001C6.55435 14.0001 6.76631 13.9123 6.92259 13.756C7.07887 13.5997 7.16667 13.3878 7.16667 13.1667V8.16675C7.16667 7.94573 7.07887 7.73377 6.92259 7.57749C6.76631 7.42121 6.55435 7.33342 6.33333 7.33342C6.11232 7.33342 5.90036 7.42121 5.74408 7.57749C5.5878 7.73377 5.5 7.94573 5.5 8.16675V13.1667C5.5 13.3878 5.5878 13.5997 5.74408 13.756C5.90036 13.9123 6.11232 14.0001 6.33333 14.0001ZM14.6667 4.00008H11.3333V3.16675C11.3333 2.50371 11.0699 1.86782 10.6011 1.39898C10.1323 0.93014 9.49637 0.666748 8.83333 0.666748H7.16667C6.50363 0.666748 5.86774 0.93014 5.3989 1.39898C4.93006 1.86782 4.66667 2.50371 4.66667 3.16675V4.00008H1.33333C1.11232 4.00008 0.900358 4.08788 0.744078 4.24416C0.587797 4.40044 0.5 4.6124 0.5 4.83342C0.5 5.05443 0.587797 5.26639 0.744078 5.42267C0.900358 5.57895 1.11232 5.66675 1.33333 5.66675H2.16667V14.8334C2.16667 15.4965 2.43006 16.1323 2.8989 16.6012C3.36774 17.07 4.00363 17.3334 4.66667 17.3334H11.3333C11.9964 17.3334 12.6323 17.07 13.1011 16.6012C13.5699 16.1323 13.8333 15.4965 13.8333 14.8334V5.66675H14.6667C14.8877 5.66675 15.0996 5.57895 15.2559 5.42267C15.4122 5.26639 15.5 5.05443 15.5 4.83342C15.5 4.6124 15.4122 4.40044 15.2559 4.24416C15.0996 4.08788 14.8877 4.00008 14.6667 4.00008ZM6.33333 3.16675C6.33333 2.94573 6.42113 2.73377 6.57741 2.57749C6.73369 2.42121 6.94565 2.33341 7.16667 2.33341H8.83333C9.05435 2.33341 9.26631 2.42121 9.42259 2.57749C9.57887 2.73377 9.66667 2.94573 9.66667 3.16675V4.00008H6.33333V3.16675ZM12.1667 14.8334C12.1667 15.0544 12.0789 15.2664 11.9226 15.4227C11.7663 15.579 11.5543 15.6667 11.3333 15.6667H4.66667C4.44565 15.6667 4.23369 15.579 4.07741 15.4227C3.92113 15.2664 3.83333 15.0544 3.83333 14.8334V5.66675H12.1667V14.8334ZM9.66667 14.0001C9.88768 14.0001 10.0996 13.9123 10.2559 13.756C10.4122 13.5997 10.5 13.3878 10.5 13.1667V8.16675C10.5 7.94573 10.4122 7.73377 10.2559 7.57749C10.0996 7.42121 9.88768 7.33342 9.66667 7.33342C9.44565 7.33342 9.23369 7.42121 9.07741 7.57749C8.92113 7.73377 8.83333 7.94573 8.83333 8.16675V13.1667C8.83333 13.3878 8.92113 13.5997 9.07741 13.756C9.23369 13.9123 9.44565 14.0001 9.66667 14.0001Z"
|
||||
d="M8.33333 15.0001C8.55435 15.0001 8.76631 14.9123 8.92259 14.756C9.07887 14.5997 9.16667 14.3878 9.16667 14.1667V9.16675C9.16667 8.94573 9.07887 8.73377 8.92259 8.57749C8.76631 8.42121 8.55435 8.33342 8.33333 8.33342C8.11232 8.33342 7.90036 8.42121 7.74408 8.57749C7.5878 8.73377 7.5 8.94573 7.5 9.16675V14.1667C7.5 14.3878 7.5878 14.5997 7.74408 14.756C7.90036 14.9123 8.11232 15.0001 8.33333 15.0001ZM16.6667 5.00008H13.3333V4.16675C13.3333 3.50371 13.0699 2.86782 12.6011 2.39898C12.1323 1.93014 11.4964 1.66675 10.8333 1.66675H9.16667C8.50363 1.66675 7.86774 1.93014 7.3989 2.39898C6.93006 2.86782 6.66667 3.50371 6.66667 4.16675V5.00008H3.33333C3.11232 5.00008 2.90036 5.08788 2.74408 5.24416C2.5878 5.40044 2.5 5.6124 2.5 5.83342C2.5 6.05443 2.5878 6.26639 2.74408 6.42267C2.90036 6.57895 3.11232 6.66675 3.33333 6.66675H4.16667V15.8334C4.16667 16.4965 4.43006 17.1323 4.8989 17.6012C5.36774 18.07 6.00363 18.3334 6.66667 18.3334H13.3333C13.9964 18.3334 14.6323 18.07 15.1011 17.6012C15.5699 17.1323 15.8333 16.4965 15.8333 15.8334V6.66675H16.6667C16.8877 6.66675 17.0996 6.57895 17.2559 6.42267C17.4122 6.26639 17.5 6.05443 17.5 5.83342C17.5 5.6124 17.4122 5.40044 17.2559 5.24416C17.0996 5.08788 16.8877 5.00008 16.6667 5.00008ZM8.33333 4.16675C8.33333 3.94573 8.42113 3.73377 8.57741 3.57749C8.73369 3.42121 8.94565 3.33341 9.16667 3.33341H10.8333C11.0543 3.33341 11.2663 3.42121 11.4226 3.57749C11.5789 3.73377 11.6667 3.94573 11.6667 4.16675V5.00008H8.33333V4.16675ZM14.1667 15.8334C14.1667 16.0544 14.0789 16.2664 13.9226 16.4227C13.7663 16.579 13.5543 16.6667 13.3333 16.6667H6.66667C6.44565 16.6667 6.23369 16.579 6.07741 16.4227C5.92113 16.2664 5.83333 16.0544 5.83333 15.8334V6.66675H14.1667V15.8334ZM11.6667 15.0001C11.8877 15.0001 12.0996 14.9123 12.2559 14.756C12.4122 14.5997 12.5 14.3878 12.5 14.1667V9.16675C12.5 8.94573 12.4122 8.73377 12.2559 8.57749C12.0996 8.42121 11.8877 8.33342 11.6667 8.33342C11.4457 8.33342 11.2337 8.42121 11.0774 8.57749C10.9211 8.73377 10.8333 8.94573 10.8333 9.16675V14.1667C10.8333 14.3878 10.9211 14.5997 11.0774 14.756C11.2337 14.9123 11.4457 15.0001 11.6667 15.0001Z"
|
||||
fill="#BA1B1B"
|
||||
/>
|
||||
</svg>
|
||||
|
|
|
@ -1,16 +1,9 @@
|
|||
import React, { SVGProps } from 'react';
|
||||
import React from 'react';
|
||||
|
||||
const Reset = (props: SVGProps<SVGSVGElement>) => (
|
||||
<svg
|
||||
width="18"
|
||||
height="18"
|
||||
viewBox="0 0 18 18"
|
||||
fill="none"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
{...props}
|
||||
>
|
||||
const Reset = () => (
|
||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
d="M9.00033 0.666748C6.86398 0.672842 4.81157 1.49918 3.26699 2.97508V1.50008C3.26699 1.27907 3.1792 1.06711 3.02291 0.910826C2.86663 0.754545 2.65467 0.666748 2.43366 0.666748C2.21265 0.666748 2.00068 0.754545 1.8444 0.910826C1.68812 1.06711 1.60033 1.27907 1.60033 1.50008V5.25008C1.60033 5.4711 1.68812 5.68306 1.8444 5.83934C2.00068 5.99562 2.21265 6.08342 2.43366 6.08342H6.18366C6.40467 6.08342 6.61663 5.99562 6.77291 5.83934C6.92919 5.68306 7.01699 5.4711 7.01699 5.25008C7.01699 5.02907 6.92919 4.81711 6.77291 4.66083C6.61663 4.50455 6.40467 4.41675 6.18366 4.41675H4.18366C5.25514 3.29705 6.68325 2.58563 8.22244 2.40481C9.76163 2.22398 11.3157 2.58506 12.6175 3.42595C13.9193 4.26684 14.8875 5.53501 15.3556 7.01241C15.8237 8.48981 15.7624 10.0841 15.1823 11.5212C14.6023 12.9584 13.5396 14.1485 12.1771 14.887C10.8146 15.6255 9.2374 15.8663 7.71662 15.5679C6.19585 15.2695 4.82655 14.4505 3.84415 13.2519C2.86176 12.0533 2.32765 10.5498 2.33366 9.00008C2.33366 8.77907 2.24586 8.56711 2.08958 8.41083C1.9333 8.25455 1.72134 8.16675 1.50033 8.16675C1.27931 8.16675 1.06735 8.25455 0.91107 8.41083C0.75479 8.56711 0.666992 8.77907 0.666992 9.00008C0.666992 10.6483 1.15573 12.2594 2.07141 13.6298C2.98709 15.0002 4.28858 16.0683 5.8113 16.6991C7.33401 17.3298 9.00957 17.4948 10.6261 17.1733C12.2426 16.8517 13.7274 16.0581 14.8929 14.8926C16.0583 13.7272 16.852 12.2423 17.1735 10.6258C17.4951 9.00933 17.3301 7.33377 16.6993 5.81105C16.0686 4.28834 15.0005 2.98685 13.6301 2.07117C12.2597 1.15549 10.6485 0.666748 9.00033 0.666748ZM9.00033 5.66675C8.77931 5.66675 8.56735 5.75455 8.41107 5.91083C8.25479 6.06711 8.16699 6.27907 8.16699 6.50008V9.00008C8.16699 9.2211 8.25479 9.43306 8.41107 9.58934C8.56735 9.74562 8.77931 9.83342 9.00033 9.83342H10.667C10.888 9.83342 11.1 9.74562 11.2562 9.58934C11.4125 9.43306 11.5003 9.2211 11.5003 9.00008C11.5003 8.77907 11.4125 8.56711 11.2562 8.41083C11.1 8.25455 10.888 8.16675 10.667 8.16675H9.83366V6.50008C9.83366 6.27907 9.74586 6.06711 9.58958 5.91083C9.4333 5.75455 9.22134 5.66675 9.00033 5.66675Z"
|
||||
d="M10.0003 1.66675C7.86398 1.67284 5.81157 2.49918 4.26699 3.97508V2.50008C4.26699 2.27907 4.1792 2.06711 4.02291 1.91083C3.86663 1.75455 3.65467 1.66675 3.43366 1.66675C3.21265 1.66675 3.00068 1.75455 2.8444 1.91083C2.68812 2.06711 2.60033 2.27907 2.60033 2.50008V6.25008C2.60033 6.4711 2.68812 6.68306 2.8444 6.83934C3.00068 6.99562 3.21265 7.08342 3.43366 7.08342H7.18366C7.40467 7.08342 7.61663 6.99562 7.77291 6.83934C7.92919 6.68306 8.01699 6.4711 8.01699 6.25008C8.01699 6.02907 7.92919 5.81711 7.77291 5.66083C7.61663 5.50455 7.40467 5.41675 7.18366 5.41675H5.18366C6.25514 4.29705 7.68325 3.58563 9.22244 3.40481C10.7616 3.22398 12.3157 3.58506 13.6175 4.42595C14.9193 5.26684 15.8875 6.53501 16.3556 8.01241C16.8237 9.48981 16.7624 11.0841 16.1823 12.5212C15.6023 13.9584 14.5396 15.1485 13.1771 15.887C11.8146 16.6255 10.2374 16.8663 8.71662 16.5679C7.19585 16.2695 5.82655 15.4505 4.84415 14.2519C3.86176 13.0533 3.32765 11.5498 3.33366 10.0001C3.33366 9.77907 3.24586 9.56711 3.08958 9.41083C2.9333 9.25455 2.72134 9.16675 2.50033 9.16675C2.27931 9.16675 2.06735 9.25455 1.91107 9.41083C1.75479 9.56711 1.66699 9.77907 1.66699 10.0001C1.66699 11.6483 2.15573 13.2594 3.07141 14.6298C3.98709 16.0002 5.28858 17.0683 6.8113 17.6991C8.33401 18.3298 10.0096 18.4948 11.6261 18.1733C13.2426 17.8517 14.7274 17.0581 15.8929 15.8926C17.0583 14.7272 17.852 13.2423 18.1735 11.6258C18.4951 10.0093 18.3301 8.33377 17.6993 6.81105C17.0686 5.28834 16.0005 3.98685 14.6301 3.07117C13.2597 2.15549 11.6485 1.66675 10.0003 1.66675ZM10.0003 6.66675C9.77931 6.66675 9.56735 6.75455 9.41107 6.91083C9.25479 7.06711 9.16699 7.27907 9.16699 7.50008V10.0001C9.16699 10.2211 9.25479 10.4331 9.41107 10.5893C9.56735 10.7456 9.77931 10.8334 10.0003 10.8334H11.667C11.888 10.8334 12.1 10.7456 12.2562 10.5893C12.4125 10.4331 12.5003 10.2211 12.5003 10.0001C12.5003 9.77907 12.4125 9.56711 12.2562 9.41083C12.1 9.25455 11.888 9.16675 11.667 9.16675H10.8337V7.50008C10.8337 7.27907 10.7459 7.06711 10.5896 6.91083C10.4333 6.75455 10.2213 6.66675 10.0003 6.66675Z"
|
||||
fill="#747778"
|
||||
/>
|
||||
</svg>
|
||||
|
|
|
@ -108,7 +108,11 @@ const ApplicationDetails = () => {
|
|||
title="admin_console.application_details.authorization_endpoint"
|
||||
className={styles.textField}
|
||||
>
|
||||
<CopyToClipboard className={styles.textField} value={oidcConfig.authorization_endpoint} />
|
||||
<CopyToClipboard
|
||||
className={styles.textField}
|
||||
value={oidcConfig.authorization_endpoint}
|
||||
variant="border"
|
||||
/>
|
||||
</FormField>
|
||||
<FormField
|
||||
isRequired
|
||||
|
@ -168,10 +172,18 @@ const ApplicationDetails = () => {
|
|||
const AdvancedSettingsPage = oidcConfig && (
|
||||
<>
|
||||
<FormField title="admin_console.application_details.token_endpoint">
|
||||
<CopyToClipboard className={styles.textField} value={oidcConfig.token_endpoint} />
|
||||
<CopyToClipboard
|
||||
className={styles.textField}
|
||||
value={oidcConfig.token_endpoint}
|
||||
variant="border"
|
||||
/>
|
||||
</FormField>
|
||||
<FormField title="admin_console.application_details.user_info_endpoint">
|
||||
<CopyToClipboard className={styles.textField} value={oidcConfig.userinfo_endpoint} />
|
||||
<CopyToClipboard
|
||||
className={styles.textField}
|
||||
value={oidcConfig.userinfo_endpoint}
|
||||
variant="border"
|
||||
/>
|
||||
</FormField>
|
||||
</>
|
||||
);
|
||||
|
|
|
@ -167,7 +167,7 @@ const translation = {
|
|||
token_endpoint: 'Token Endpoint',
|
||||
user_info_endpoint: 'User Info Endpoint',
|
||||
save_changes: 'Save Changes',
|
||||
more_options: 'More Options',
|
||||
more_options: 'MORE OPTIONS',
|
||||
options_delete: 'Delete',
|
||||
reminder: 'Reminder',
|
||||
delete_description:
|
||||
|
@ -190,7 +190,7 @@ const translation = {
|
|||
api_resource_details: {
|
||||
back_to_api_resources: 'Back to my API resources',
|
||||
check_help_guide: 'Check Help Guide',
|
||||
more_options: 'More Options',
|
||||
more_options: 'MORE OPTIONS',
|
||||
options_delete: 'Delete',
|
||||
settings: 'Settings',
|
||||
save_changes: 'Save Changes',
|
||||
|
|
|
@ -165,7 +165,7 @@ const translation = {
|
|||
token_endpoint: 'Token Endpoint',
|
||||
user_info_endpoint: 'User Info Endpoint',
|
||||
save_changes: 'Save Changes',
|
||||
more_options: 'More Options',
|
||||
more_options: 'MORE OPTIONS',
|
||||
options_delete: 'Delete',
|
||||
reminder: 'Reminder',
|
||||
delete_description:
|
||||
|
@ -188,7 +188,7 @@ const translation = {
|
|||
api_resource_details: {
|
||||
back_to_api_resources: 'Back to my API resources',
|
||||
check_help_guide: 'Check Help Guide',
|
||||
more_options: 'More Options',
|
||||
more_options: 'MORE OPTIONS',
|
||||
options_delete: 'Delete',
|
||||
settings: 'Settings',
|
||||
save_changes: 'Save Changes',
|
||||
|
|
Loading…
Add table
Reference in a new issue