chore: Linter issues
This commit is contained in:
parent
ea5b2ec304
commit
ee5e83aaf5
5 changed files with 30 additions and 90 deletions
|
@ -1,11 +1,9 @@
|
||||||
// Dependencies
|
// Dependencies
|
||||||
import { useState, useEffect, useContext } from 'react'
|
import { useState, useEffect } from 'react'
|
||||||
import { useTranslation } from 'next-i18next'
|
import { useTranslation } from 'next-i18next'
|
||||||
import { DateTime } from 'luxon'
|
import { DateTime } from 'luxon'
|
||||||
import { CopyToClipboard } from 'react-copy-to-clipboard'
|
import { CopyToClipboard } from 'react-copy-to-clipboard'
|
||||||
import { shortDate, formatNumber } from 'shared/utils.mjs'
|
import { shortDate, formatNumber } from 'shared/utils.mjs'
|
||||||
// Context
|
|
||||||
import { ModalContext } from 'shared/context/modal-context.mjs'
|
|
||||||
// Hooks
|
// Hooks
|
||||||
import { useAccount } from 'shared/hooks/use-account.mjs'
|
import { useAccount } from 'shared/hooks/use-account.mjs'
|
||||||
import { useBackend } from 'shared/hooks/use-backend.mjs'
|
import { useBackend } from 'shared/hooks/use-backend.mjs'
|
||||||
|
@ -13,12 +11,10 @@ import { useRouter } from 'next/router'
|
||||||
import { useLoadingStatus } from 'shared/hooks/use-loading-status.mjs'
|
import { useLoadingStatus } from 'shared/hooks/use-loading-status.mjs'
|
||||||
import { useApikeyDocs } from 'shared/hooks/use-apikey-docs.mjs'
|
import { useApikeyDocs } from 'shared/hooks/use-apikey-docs.mjs'
|
||||||
// Components
|
// Components
|
||||||
import { BackToAccountButton, Choice, DisplayRow, NumberBullet } from './shared.mjs'
|
import { BackToAccountButton, DisplayRow, NumberBullet } from './shared.mjs'
|
||||||
import { Popout } from 'shared/components/popout/index.mjs'
|
import { Popout } from 'shared/components/popout/index.mjs'
|
||||||
import { LeftIcon, PlusIcon, CopyIcon, RightIcon, TrashIcon } from 'shared/components/icons.mjs'
|
import { LeftIcon, PlusIcon, CopyIcon, RightIcon, TrashIcon } from 'shared/components/icons.mjs'
|
||||||
import { Collapse, useCollapseButton } from 'shared/components/collapse.mjs'
|
import { PageLink, Link } from 'shared/components/link.mjs'
|
||||||
import { ModalWrapper } from 'shared/components/wrappers/modal.mjs'
|
|
||||||
import { PageLink, Link, WebLink } from 'shared/components/link.mjs'
|
|
||||||
import { StringInput, ListInput, FormControl } from 'shared/components/inputs.mjs'
|
import { StringInput, ListInput, FormControl } from 'shared/components/inputs.mjs'
|
||||||
|
|
||||||
export const ns = ['account', 'status']
|
export const ns = ['account', 'status']
|
||||||
|
@ -228,10 +224,8 @@ const NewKey = ({ account, setGenerate, backend, title = true }) => {
|
||||||
// Component for the 'new/apikey' page
|
// Component for the 'new/apikey' page
|
||||||
export const NewApikey = () => {
|
export const NewApikey = () => {
|
||||||
// Hooks
|
// Hooks
|
||||||
const { setLoadingStatus, LoadingStatus } = useLoadingStatus()
|
|
||||||
const { account } = useAccount()
|
const { account } = useAccount()
|
||||||
const backend = useBackend()
|
const backend = useBackend()
|
||||||
const { t } = useTranslation(ns)
|
|
||||||
|
|
||||||
// State
|
// State
|
||||||
const [generate, setGenerate] = useState(false)
|
const [generate, setGenerate] = useState(false)
|
||||||
|
@ -242,7 +236,6 @@ export const NewApikey = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="max-w-2xl xl:pl-4">
|
<div className="max-w-2xl xl:pl-4">
|
||||||
<LoadingStatus />
|
|
||||||
<NewKey
|
<NewKey
|
||||||
{...{
|
{...{
|
||||||
account,
|
account,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// Dependencies
|
// Dependencies
|
||||||
import { useState, useEffect, useContext } from 'react'
|
import { useState, useEffect, Fragment } from 'react'
|
||||||
import { useTranslation } from 'next-i18next'
|
import { useTranslation } from 'next-i18next'
|
||||||
// Hooks
|
// Hooks
|
||||||
import { useBackend } from 'shared/hooks/use-backend.mjs'
|
import { useBackend } from 'shared/hooks/use-backend.mjs'
|
||||||
|
@ -178,7 +178,7 @@ export const Bookmarks = () => {
|
||||||
) : null}
|
) : null}
|
||||||
{types.map((type) =>
|
{types.map((type) =>
|
||||||
perType[type].length > 0 ? (
|
perType[type].length > 0 ? (
|
||||||
<>
|
<Fragment key={type}>
|
||||||
<h2>{t(`${type}Bookmark`)}</h2>
|
<h2>{t(`${type}Bookmark`)}</h2>
|
||||||
<table className="table table-auto">
|
<table className="table table-auto">
|
||||||
<thead className="border border-base-300 border-b-2 border-t-0 border-x-0">
|
<thead className="border border-base-300 border-b-2 border-t-0 border-x-0">
|
||||||
|
@ -225,7 +225,7 @@ export const Bookmarks = () => {
|
||||||
))}
|
))}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</>
|
</Fragment>
|
||||||
) : null
|
) : null
|
||||||
)}
|
)}
|
||||||
<BackToAccountButton />
|
<BackToAccountButton />
|
||||||
|
|
|
@ -1,12 +1,10 @@
|
||||||
// Dependencies
|
// Dependencies
|
||||||
import { useState, useEffect, useContext, useCallback } from 'react'
|
import { useState, useEffect, useContext } from 'react'
|
||||||
import { useTranslation } from 'next-i18next'
|
import { useTranslation } from 'next-i18next'
|
||||||
import orderBy from 'lodash.orderby'
|
|
||||||
import { measurements } from 'config/measurements.mjs'
|
import { measurements } from 'config/measurements.mjs'
|
||||||
import { measurements as designMeasurements } from 'shared/prebuild/data/design-measurements.mjs'
|
import { measurements as designMeasurements } from 'shared/prebuild/data/design-measurements.mjs'
|
||||||
import { freeSewingConfig as conf, controlLevels } from 'shared/config/freesewing.config.mjs'
|
import { freeSewingConfig as conf, controlLevels } from 'shared/config/freesewing.config.mjs'
|
||||||
// Hooks
|
// Hooks
|
||||||
import { useDropzone } from 'react-dropzone'
|
|
||||||
import { useAccount } from 'shared/hooks/use-account.mjs'
|
import { useAccount } from 'shared/hooks/use-account.mjs'
|
||||||
import { useBackend } from 'shared/hooks/use-backend.mjs'
|
import { useBackend } from 'shared/hooks/use-backend.mjs'
|
||||||
import { useToast } from 'shared/hooks/use-toast.mjs'
|
import { useToast } from 'shared/hooks/use-toast.mjs'
|
||||||
|
@ -16,19 +14,14 @@ import { useLoadingStatus } from 'shared/hooks/use-loading-status.mjs'
|
||||||
import { LoadingContext } from 'shared/context/loading-context.mjs'
|
import { LoadingContext } from 'shared/context/loading-context.mjs'
|
||||||
import { ModalContext } from 'shared/context/modal-context.mjs'
|
import { ModalContext } from 'shared/context/modal-context.mjs'
|
||||||
// Components
|
// Components
|
||||||
import { Collapse, useCollapseButton } from 'shared/components/collapse.mjs'
|
import { BackToAccountButton } from './shared.mjs'
|
||||||
import { BackToAccountButton, Choice } from './shared.mjs'
|
|
||||||
import { AnchorLink, PageLink, Link } from 'shared/components/link.mjs'
|
import { AnchorLink, PageLink, Link } from 'shared/components/link.mjs'
|
||||||
import { ModalDesignPicker } from 'shared/components/modal/design-picker.mjs'
|
|
||||||
import {
|
import {
|
||||||
FilterIcon,
|
|
||||||
ClearIcon,
|
|
||||||
OkIcon,
|
OkIcon,
|
||||||
NoIcon,
|
NoIcon,
|
||||||
TrashIcon,
|
TrashIcon,
|
||||||
EditIcon,
|
EditIcon,
|
||||||
UploadIcon,
|
UploadIcon,
|
||||||
CancelIcon,
|
|
||||||
ResetIcon,
|
ResetIcon,
|
||||||
MeasieIcon,
|
MeasieIcon,
|
||||||
CalendarIcon,
|
CalendarIcon,
|
||||||
|
@ -36,14 +29,11 @@ import {
|
||||||
} from 'shared/components/icons.mjs'
|
} from 'shared/components/icons.mjs'
|
||||||
import { ModalWrapper } from 'shared/components/wrappers/modal.mjs'
|
import { ModalWrapper } from 'shared/components/wrappers/modal.mjs'
|
||||||
import Markdown from 'react-markdown'
|
import Markdown from 'react-markdown'
|
||||||
import { Tab } from './bio.mjs'
|
|
||||||
import Timeago from 'react-timeago'
|
import Timeago from 'react-timeago'
|
||||||
import { Spinner } from 'shared/components/spinner.mjs'
|
|
||||||
import { DisplayRow } from './shared.mjs'
|
import { DisplayRow } from './shared.mjs'
|
||||||
import { shortDate, cloudflareImageUrl, formatMm } from 'shared/utils.mjs'
|
import { shortDate, cloudflareImageUrl, formatMm } from 'shared/utils.mjs'
|
||||||
import { useSetDocs } from 'shared/hooks/use-set-docs.mjs'
|
import { useSetDocs } from 'shared/hooks/use-set-docs.mjs'
|
||||||
import { useMeasurementDocs } from 'shared/hooks/use-measurement-docs.mjs'
|
import { useMeasurementDocs } from 'shared/hooks/use-measurement-docs.mjs'
|
||||||
import { Lightbox } from 'shared/components/lightbox.mjs'
|
|
||||||
import { isDegreeMeasurement } from 'config/measurements.mjs'
|
import { isDegreeMeasurement } from 'config/measurements.mjs'
|
||||||
import { TextOnBg } from 'shared/components/text-on-bg.mjs'
|
import { TextOnBg } from 'shared/components/text-on-bg.mjs'
|
||||||
|
|
||||||
|
@ -62,7 +52,6 @@ export const ns = [inputNs, 'account', 'patterns', 'status', 'measurements']
|
||||||
export const NewSet = () => {
|
export const NewSet = () => {
|
||||||
// Hooks
|
// Hooks
|
||||||
const { setLoadingStatus, LoadingStatus } = useLoadingStatus()
|
const { setLoadingStatus, LoadingStatus } = useLoadingStatus()
|
||||||
const { account } = useAccount()
|
|
||||||
const backend = useBackend()
|
const backend = useBackend()
|
||||||
const { t } = useTranslation(ns)
|
const { t } = useTranslation(ns)
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
|
@ -86,6 +75,7 @@ export const NewSet = () => {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="max-w-xl">
|
<div className="max-w-xl">
|
||||||
|
<LoadingStatus />
|
||||||
<h5>{t('name')}</h5>
|
<h5>{t('name')}</h5>
|
||||||
<p>{t('setNameDesc')}</p>
|
<p>{t('setNameDesc')}</p>
|
||||||
<input
|
<input
|
||||||
|
@ -113,7 +103,7 @@ export const MeasieVal = ({ val, m, imperial }) =>
|
||||||
isDegreeMeasurement(m) ? <span>{val}°</span> : <span>{formatMm(val, imperial)}</span>
|
isDegreeMeasurement(m) ? <span>{val}°</span> : <span>{formatMm(val, imperial)}</span>
|
||||||
|
|
||||||
export const MsetBanner = ({ set, control, onClick = false, href = false }) => {
|
export const MsetBanner = ({ set, control, onClick = false, href = false }) => {
|
||||||
const { t, i18n } = useTranslation(ns)
|
const { t } = useTranslation(ns)
|
||||||
const info = []
|
const info = []
|
||||||
if (control > 1)
|
if (control > 1)
|
||||||
info.push([
|
info.push([
|
||||||
|
@ -145,7 +135,10 @@ export const MsetBanner = ({ set, control, onClick = false, href = false }) => {
|
||||||
<TextOnBg txt={set.name} />
|
<TextOnBg txt={set.name} />
|
||||||
</h2>
|
</h2>
|
||||||
{info.map((item) => (
|
{info.map((item) => (
|
||||||
<div className="flex flex-row flex-wrap gap-2 bg-base-100 p-4 rounded bg-opacity-50 py-1 mt-2 rounded-l-none">
|
<div
|
||||||
|
className="flex flex-row flex-wrap gap-2 bg-base-100 p-4 rounded bg-opacity-50 py-1 mt-2 rounded-l-none"
|
||||||
|
key={item[0]}
|
||||||
|
>
|
||||||
{item[0]}
|
{item[0]}
|
||||||
{item[1]}
|
{item[1]}
|
||||||
</div>
|
</div>
|
||||||
|
@ -180,8 +173,6 @@ export const Mset = ({ id, publicOnly = false }) => {
|
||||||
const { setLoadingStatus, LoadingStatus } = useLoadingStatus()
|
const { setLoadingStatus, LoadingStatus } = useLoadingStatus()
|
||||||
const backend = useBackend()
|
const backend = useBackend()
|
||||||
const { t } = useTranslation(ns)
|
const { t } = useTranslation(ns)
|
||||||
const router = useRouter()
|
|
||||||
const { locale } = router
|
|
||||||
const docs = useSetDocs(locale)
|
const docs = useSetDocs(locale)
|
||||||
const measieDocs = useMeasurementDocs(locale)
|
const measieDocs = useMeasurementDocs(locale)
|
||||||
|
|
||||||
|
@ -413,7 +404,7 @@ export const Mset = ({ id, publicOnly = false }) => {
|
||||||
) : null}
|
) : null}
|
||||||
{['public', 'units', 'notes'].map((id) =>
|
{['public', 'units', 'notes'].map((id) =>
|
||||||
account.control >= conf.account.sets[id] ? (
|
account.control >= conf.account.sets[id] ? (
|
||||||
<li>
|
<li key={id}>
|
||||||
<AnchorLink id="units" txt={t(id)} />
|
<AnchorLink id="units" txt={t(id)} />
|
||||||
</li>
|
</li>
|
||||||
) : null
|
) : null
|
||||||
|
@ -582,8 +573,6 @@ export const Sets = ({ title = true }) => {
|
||||||
const backend = useBackend()
|
const backend = useBackend()
|
||||||
const { t, i18n } = useTranslation(ns)
|
const { t, i18n } = useTranslation(ns)
|
||||||
const { setLoadingStatus, LoadingStatus, LoadingProgress } = useLoadingStatus()
|
const { setLoadingStatus, LoadingStatus, LoadingProgress } = useLoadingStatus()
|
||||||
const router = useRouter()
|
|
||||||
const { locale } = router
|
|
||||||
|
|
||||||
// State
|
// State
|
||||||
const [sets, setSets] = useState([])
|
const [sets, setSets] = useState([])
|
||||||
|
|
|
@ -10,9 +10,8 @@ import { useDropzone } from 'react-dropzone'
|
||||||
import { useBackend } from 'shared/hooks/use-backend.mjs'
|
import { useBackend } from 'shared/hooks/use-backend.mjs'
|
||||||
import { useLoadingStatus } from 'shared/hooks/use-loading-status.mjs'
|
import { useLoadingStatus } from 'shared/hooks/use-loading-status.mjs'
|
||||||
// Components
|
// Components
|
||||||
import { Popout } from 'shared/components/popout/index.mjs'
|
|
||||||
import Markdown from 'react-markdown'
|
import Markdown from 'react-markdown'
|
||||||
import { ResetIcon, DocsIcon, HelpIcon, UploadIcon } from 'shared/components/icons.mjs'
|
import { ResetIcon, DocsIcon, UploadIcon } from 'shared/components/icons.mjs'
|
||||||
import { ModalWrapper } from 'shared/components/wrappers/modal.mjs'
|
import { ModalWrapper } from 'shared/components/wrappers/modal.mjs'
|
||||||
import { isDegreeMeasurement } from 'config/measurements.mjs'
|
import { isDegreeMeasurement } from 'config/measurements.mjs'
|
||||||
import { measurementAsMm, formatMm, measurementAsUnits, parseDistanceInput } from 'shared/utils.mjs'
|
import { measurementAsMm, formatMm, measurementAsUnits, parseDistanceInput } from 'shared/utils.mjs'
|
||||||
|
@ -119,27 +118,7 @@ export const StringInput = ({
|
||||||
original, // The original value
|
original, // The original value
|
||||||
placeholder, // The placeholder text
|
placeholder, // The placeholder text
|
||||||
docs = false, // Docs to load, if any
|
docs = false, // Docs to load, if any
|
||||||
}) => {
|
}) => (
|
||||||
const { setModal } = useContext(ModalContext)
|
|
||||||
|
|
||||||
const labelTR = docs ? (
|
|
||||||
<button
|
|
||||||
className="btn btn-secondary btn-outline"
|
|
||||||
onClick={() =>
|
|
||||||
setModal(
|
|
||||||
<ModalWrapper flex="col" justify="top lg:justify-center" slideFrom="left">
|
|
||||||
{docs}
|
|
||||||
</ModalWrapper>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
>
|
|
||||||
<DocsIcon />
|
|
||||||
</button>
|
|
||||||
) : (
|
|
||||||
false
|
|
||||||
)
|
|
||||||
|
|
||||||
return (
|
|
||||||
<FormControl label={label} docs={docs}>
|
<FormControl label={label} docs={docs}>
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
|
@ -147,16 +126,11 @@ export const StringInput = ({
|
||||||
value={current}
|
value={current}
|
||||||
onChange={(evt) => update(evt.target.value)}
|
onChange={(evt) => update(evt.target.value)}
|
||||||
className={`input w-full input-bordered ${
|
className={`input w-full input-bordered ${
|
||||||
current === original
|
current === original ? 'input-secondary' : valid(current) ? 'input-success' : 'input-error'
|
||||||
? 'input-secondary'
|
|
||||||
: valid(current)
|
|
||||||
? 'input-success'
|
|
||||||
: 'input-error'
|
|
||||||
}`}
|
}`}
|
||||||
/>
|
/>
|
||||||
</FormControl>
|
</FormControl>
|
||||||
)
|
)
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Dropdown for designs
|
* Dropdown for designs
|
||||||
|
@ -349,7 +323,6 @@ export const MarkdownInput = ({
|
||||||
placeholder, // The placeholder content
|
placeholder, // The placeholder content
|
||||||
docs = false, // Docs to load, if any
|
docs = false, // Docs to load, if any
|
||||||
}) => {
|
}) => {
|
||||||
const { t } = useTranslation(ns)
|
|
||||||
const [activeTab, setActiveTab] = useState('edit')
|
const [activeTab, setActiveTab] = useState('edit')
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -378,18 +351,6 @@ export const MarkdownInput = ({
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
const Mval = ({ m, val = false, imperial = false, className = '' }) =>
|
|
||||||
val ? (
|
|
||||||
isDegreeMeasurement(m) ? (
|
|
||||||
<span className={className}>{val}°</span>
|
|
||||||
) : (
|
|
||||||
<span
|
|
||||||
dangerouslySetInnerHTML={{ __html: formatMm(val, imperial ? 'imperial' : 'metric') }}
|
|
||||||
className={className}
|
|
||||||
/>
|
|
||||||
)
|
|
||||||
) : null
|
|
||||||
|
|
||||||
export const MeasieInput = ({
|
export const MeasieInput = ({
|
||||||
imperial, // True for imperial, False for metric
|
imperial, // True for imperial, False for metric
|
||||||
m, // The measurement name
|
m, // The measurement name
|
||||||
|
|
|
@ -8,10 +8,8 @@ import { useBackend } from 'shared/hooks/use-backend.mjs'
|
||||||
// Components
|
// Components
|
||||||
import { Popout } from 'shared/components/popout/index.mjs'
|
import { Popout } from 'shared/components/popout/index.mjs'
|
||||||
import {
|
import {
|
||||||
GitHubIcon,
|
|
||||||
HeartIcon,
|
HeartIcon,
|
||||||
ChatIcon,
|
ChatIcon,
|
||||||
EmailIcon,
|
|
||||||
BugIcon,
|
BugIcon,
|
||||||
SettingsIcon,
|
SettingsIcon,
|
||||||
DocsIcon,
|
DocsIcon,
|
||||||
|
@ -31,7 +29,6 @@ import {
|
||||||
import { cloudflareImageUrl } from 'shared/utils.mjs'
|
import { cloudflareImageUrl } from 'shared/utils.mjs'
|
||||||
import { CodeBox } from 'shared/components/code-box.mjs'
|
import { CodeBox } from 'shared/components/code-box.mjs'
|
||||||
import { WebLink } from 'shared/components/link.mjs'
|
import { WebLink } from 'shared/components/link.mjs'
|
||||||
import Markdown from 'react-markdown'
|
|
||||||
|
|
||||||
// Translation namespaces used on this page
|
// Translation namespaces used on this page
|
||||||
export const ns = ['support', 'designs', 'account', 'status']
|
export const ns = ['support', 'designs', 'account', 'status']
|
||||||
|
@ -201,7 +198,7 @@ export const SupportForm = ({ preload }) => {
|
||||||
<>
|
<>
|
||||||
<div className="grid grid-cols-3 gap-2">
|
<div className="grid grid-cols-3 gap-2">
|
||||||
{types.map((_type) => (
|
{types.map((_type) => (
|
||||||
<SupportType type={_type} active={type === _type} update={setType} t={t} />
|
<SupportType type={_type} active={type === _type} update={setType} t={t} key={_type} />
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
<p className="text-right">
|
<p className="text-right">
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue