UNPKG

@sanity/ui-workshop

Version:

An environment for designing, reviewing, and quality-testing React components.

1 lines 10.9 kB
{"version":3,"file":"plugin-a11y.cjs","sources":["../src/plugin-a11y/A11yContext.ts","../src/plugin-a11y/useA11y.ts","../src/plugin-a11y/A11yInspector.tsx","../src/plugin-a11y/A11yProvider.tsx","../src/plugin-a11y/index.ts"],"sourcesContent":["import {AxeResults} from 'axe-core'\nimport {createContext} from 'react'\n\n/** @internal */\nexport interface A11yContextValue {\n error: {message: string} | null\n results: AxeResults | null\n}\n\n/** @internal */\nexport const A11yContext = createContext<A11yContextValue | null>(null)\n","import {useContext} from 'react'\n\nimport {A11yContext, A11yContextValue} from './A11yContext'\n\n/** @internal */\nexport function useA11y(): A11yContextValue {\n const props = useContext(A11yContext)\n\n if (!props) {\n throw new Error('A11y: missing context value')\n }\n\n return props\n}\n","import {Box, Card, CardTone, Code, Stack, Text} from '@sanity/ui'\nimport axe from 'axe-core'\nimport {memo} from 'react'\n\nimport {useA11y} from './useA11y'\n\n/** @internal */\nexport const A11yInspector = memo(function A11yInspector(): React.ReactNode {\n const {results} = useA11y()\n\n return (\n <Box padding={2}>\n {results && (\n <>\n <Stack space={2}>\n {results.violations.map((violation) => (\n <ResultItem key={violation.id} result={violation} tone=\"critical\" />\n ))}\n\n {results.passes.map((violation) => (\n <ResultItem key={violation.id} result={violation} tone=\"positive\" />\n ))}\n </Stack>\n </>\n )}\n </Box>\n )\n})\n\n/** @internal */\nconst ResultItem = memo(function ResultItem(props: {result: axe.Result; tone?: CardTone}) {\n const {result, tone} = props\n\n return (\n <Card border radius={2} tone={tone}>\n <Stack paddingX={2} paddingY={3} space={3}>\n <Text size={1} weight=\"semibold\">\n {result.help}\n {result.impact && <> ({result.impact})</>}\n </Text>\n <Text muted size={1}>\n {result.description}\n </Text>\n <Text size={1}>\n <a href={result.helpUrl} target=\"_blank\" rel=\"noreferrer\">\n Help URL &rarr;\n </a>\n </Text>\n </Stack>\n <Card borderTop tone=\"inherit\" />\n <Stack padding={2} space={2}>\n {result.nodes.map((node, nodeIndex) => {\n return (\n <Stack key={nodeIndex} space={2}>\n {node.failureSummary && <Text size={1}>{node.failureSummary}</Text>}\n <Card border overflow=\"auto\" padding={2} radius={2} tone=\"inherit\">\n <Code language=\"html\" size={0}>\n {node.html}\n </Code>\n </Card>\n </Stack>\n )\n })}\n </Stack>\n </Card>\n )\n})\n","import {useWorkshop} from '@sanity/ui-workshop'\nimport axe, {AxeResults} from 'axe-core'\nimport {memo, useEffect, useMemo, useState} from 'react'\n\nimport {A11yContext, A11yContextValue} from './A11yContext'\nimport {A11yMsg} from './msg'\n\n/** @internal */\nexport const A11yProvider = memo(function A11yProvider(props: {\n children?: React.ReactNode\n}): React.ReactNode {\n const {children} = props\n const {broadcast, channel, origin, path} = useWorkshop<A11yMsg>()\n const [{error, results}, setState] = useState<{\n error: {message: string} | null\n results: AxeResults | null\n }>({\n error: null,\n results: null,\n })\n\n const a11y: A11yContextValue = useMemo(() => ({error, results}), [error, results])\n\n useEffect(() => {\n if (origin === 'main') return\n\n axe\n .run()\n .then((_results) => {\n broadcast({type: 'workshop/a11y/setResults', path, results: _results})\n })\n .catch((_error) => {\n broadcast({type: 'workshop/a11y/setError', message: _error.message})\n })\n }, [broadcast, origin, path])\n\n useEffect(() => {\n channel.subscribe((msg) => {\n if (msg.type === 'workshop/setPath') {\n setState((s) => ({...s, error: null, results: null}))\n }\n\n if (msg.type === 'workshop/a11y/setResults') {\n setState((s) => ({...s, error: null, results: msg.results}))\n }\n\n if (msg.type === 'workshop/a11y/setError') {\n setState((s) => ({...s, error: {message: msg.message}, results: null}))\n }\n })\n }, [channel])\n\n return <A11yContext.Provider value={a11y}>{children}</A11yContext.Provider>\n})\n","import {WorkshopPlugin} from '@sanity/ui-workshop'\n\nimport {A11yInspector} from './A11yInspector'\nimport {A11yProvider} from './A11yProvider'\n\n/** @internal */\nexport function a11yPlugin(): WorkshopPlugin {\n return {\n name: 'a11y',\n title: 'A11y',\n inspector: A11yInspector,\n provider: A11yProvider,\n }\n}\n"],"names":["A11yContext","createContext","useA11y","props","useContext","Error","A11yInspector","memo","$","_c","results","t0","jsx","Fragment","jsxs","Stack","violations","map","_temp","passes","_temp2","t1","Box","ResultItem","result","tone","impact","help","Text","t2","description","t3","helpUrl","t4","t5","Symbol","for","Card","t6","nodes","_temp3","t7","t8","violation","id","violation_0","node","nodeIndex","failureSummary","Code","html","A11yProvider","children","broadcast","channel","origin","path","useWorkshop","error","setState","useState","a11y","axe","run","then","_results","type","catch","_error","message","useEffect","subscribe","msg","s_0","s","s_1","a11yPlugin","name","title","inspector","provider"],"mappings":"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"}