// Dependencies import { linkClasses, formatNumber, orderBy, clone } from '@freesewing/utils' // Hooks import React, { useState, useEffect } from 'react' import { useBackend } from '@freesewing/react/hooks/useBackend' // Components import { Spinner } from '@freesewing/react/components/Spinner' import { Link as WebLink } from '@freesewing/react/components/Link' import { ChartWrapper } from '@freesewing/react/components/Echart' const meta = { title: 'FreeSewing by numbers', description: 'Some high-level numbers about Freesewing', } const option = { tooltip: { trigger: 'axis', show: true, axisPointer: { type: 'line', lineStyle: { type: 'dashed', }, }, }, title: { left: 'center', }, grid: { left: '40', right: '60', containLabel: true, }, toolbox: { feature: { saveAsImage: {}, magicType: { type: ['line', 'bar'], }, }, }, yAxis: { type: 'value', }, } /** * A component to display generic stats from the FreeSewing backend * * @component * @param {object} props - All component props * @param {React.FC} [props.Link = false] - An optional framework-specific Link component * @returns {JSX.Element} */ export const Stats = ({ Link = false }) => { if (!Link) Link = WebLink const [stats, setStats] = useState() const [error, setError] = useState(false) const backend = useBackend() useEffect(() => { getStats(backend, setStats, setError) }, []) if (!stats) return (