mirror of
https://github.com/nextui-org/nextui.git
synced 2025-12-08 19:26:11 +00:00
feat(docs): a11y section added
This commit is contained in:
parent
ea70b2783e
commit
9ee03af1d0
210
apps/docs/components/a11y-otb/a11y-otb.tsx
Normal file
210
apps/docs/components/a11y-otb/a11y-otb.tsx
Normal file
@ -0,0 +1,210 @@
|
||||
/* eslint-disable react/display-name */
|
||||
import {
|
||||
Button,
|
||||
Link as NextUILink,
|
||||
Dropdown,
|
||||
DropdownSection,
|
||||
DropdownTrigger,
|
||||
DropdownMenu,
|
||||
DropdownItem,
|
||||
} from "@nextui-org/react";
|
||||
import {motion, useInView} from "framer-motion";
|
||||
import {TRANSITION_EASINGS} from "@nextui-org/framer-transitions";
|
||||
import {clsx} from "@nextui-org/shared-utils";
|
||||
import {
|
||||
AddNoteBulkIcon,
|
||||
CopyDocumentBulkIcon,
|
||||
EditDocumentBulkIcon,
|
||||
DeleteDocumentBulkIcon,
|
||||
} from "@nextui-org/shared-icons";
|
||||
import Link from "next/link";
|
||||
import {useRef} from "react";
|
||||
|
||||
import {FeaturesGrid} from "../features-grid";
|
||||
|
||||
import {title, subtitle, titleWrapper, sectionWrapper} from "@/components/primitives";
|
||||
import {IconSvgProps} from "@/types";
|
||||
|
||||
const a11yItems = [
|
||||
"Keyboard navigation",
|
||||
"Managed focus",
|
||||
"Collision aware",
|
||||
"Alignment control",
|
||||
"Screen reader support",
|
||||
"Typehead support",
|
||||
];
|
||||
|
||||
const MotionTickBoldIcon = ({
|
||||
size = 24,
|
||||
delay = 0,
|
||||
width,
|
||||
height,
|
||||
}: IconSvgProps & {
|
||||
delay?: number;
|
||||
}) => {
|
||||
const ref = useRef<any>(null);
|
||||
const isInView = useInView(ref, {
|
||||
margin: "10px",
|
||||
once: true,
|
||||
});
|
||||
|
||||
const variants = {
|
||||
visible: {
|
||||
scale: 1,
|
||||
opacity: 1,
|
||||
transition: {
|
||||
duration: delay,
|
||||
easing: TRANSITION_EASINGS.spring,
|
||||
},
|
||||
},
|
||||
hidden: {
|
||||
scale: 0,
|
||||
opacity: 0,
|
||||
},
|
||||
};
|
||||
|
||||
return (
|
||||
<motion.svg
|
||||
ref={ref as any}
|
||||
animate={isInView ? "visible" : "hidden"}
|
||||
aria-hidden="true"
|
||||
fill="none"
|
||||
focusable="false"
|
||||
height={size || height}
|
||||
initial={false}
|
||||
role="presentation"
|
||||
variants={variants}
|
||||
viewBox="0 0 24 24"
|
||||
width={size || width}
|
||||
>
|
||||
<path
|
||||
d="M12 2C6.49 2 2 6.49 2 12C2 17.51 6.49 22 12 22C17.51 22 22 17.51 22 12C22 6.49 17.51 2 12 2ZM16.78 9.7L11.11 15.37C10.97 15.51 10.78 15.59 10.58 15.59C10.38 15.59 10.19 15.51 10.05 15.37L7.22 12.54C6.93 12.25 6.93 11.77 7.22 11.48C7.51 11.19 7.99 11.19 8.28 11.48L10.58 13.78L15.72 8.64C16.01 8.35 16.49 8.35 16.78 8.64C17.07 8.93 17.07 9.4 16.78 9.7Z"
|
||||
fill="currentColor"
|
||||
/>
|
||||
</motion.svg>
|
||||
);
|
||||
};
|
||||
|
||||
const iconClasses = "text-2xl text-neutral-500 pointer-events-none flex-shrink-0";
|
||||
|
||||
export const A11yOtb = () => {
|
||||
const ref = useRef<any>(null);
|
||||
const isInView = useInView(ref, {
|
||||
margin: "-10px",
|
||||
});
|
||||
|
||||
return (
|
||||
<section className={sectionWrapper({class: "pb-56"})}>
|
||||
<div className="flex flex-col gap-8">
|
||||
<div>
|
||||
<div className={titleWrapper()}>
|
||||
<h1 className={title({size: "lg"})}>Accessibility</h1>
|
||||
<div>
|
||||
<h1 className={title({color: "green", size: "lg"})}>out of the </h1>
|
||||
<h1 className={title({size: "lg"})}>box.</h1>
|
||||
</div>
|
||||
</div>
|
||||
<p className={subtitle()}>
|
||||
NextUI components are built on top of
|
||||
<NextUILink
|
||||
isExternal
|
||||
className="text-xl text-neutral-500 font-light [&>svg]:ml-1"
|
||||
href="https://react-spectrum.adobe.com/react-aria/"
|
||||
underline="always"
|
||||
>
|
||||
React Aria
|
||||
</NextUILink>
|
||||
ensuring exceptional accessibility support as a top priority.
|
||||
</p>
|
||||
</div>
|
||||
<div className="grid grid-cols-1 lg:grid-cols-2 gap-4">
|
||||
<div className="flex flex-col mt-8 gap-6">
|
||||
<FeaturesGrid
|
||||
classNames={{
|
||||
base: "grid-cols-1 md:grid-cols-2 lg:grid-cols-2 gap-4",
|
||||
header: "pb-3",
|
||||
iconWrapper: "bg-neutral-100 text-neutral-400",
|
||||
}}
|
||||
features={a11yItems.map((item, index) => ({
|
||||
title: item,
|
||||
icon: <MotionTickBoldIcon delay={index * 0.2} />,
|
||||
}))}
|
||||
/>
|
||||
<Button
|
||||
as={Link}
|
||||
className="max-w-fit text-neutral-600"
|
||||
color="neutral"
|
||||
href="/docs/theme/customize-theme"
|
||||
radius="full"
|
||||
size="sm"
|
||||
variant="flat"
|
||||
>
|
||||
Learn more
|
||||
</Button>
|
||||
</div>
|
||||
<div
|
||||
ref={ref}
|
||||
className="w-full h-full min-h-[390px] bg-gradient-to-r rounded-xl flex pt-8 items-start justify-center from-[#4ADE80] to-[#06B6D4]"
|
||||
>
|
||||
{isInView && (
|
||||
<Dropdown isOpen className="shadow-xl" placement="bottom" shouldFlip={false}>
|
||||
<DropdownTrigger>
|
||||
<Button color="success" variant="flat">
|
||||
Actions
|
||||
</Button>
|
||||
</DropdownTrigger>
|
||||
<DropdownMenu
|
||||
aria-label="Actions"
|
||||
closeOnSelect={false}
|
||||
color="neutral"
|
||||
variant="flat"
|
||||
>
|
||||
<DropdownSection title="Actions">
|
||||
<DropdownItem
|
||||
key="new"
|
||||
description="Create a new file"
|
||||
shortcut="⌘N"
|
||||
startContent={<AddNoteBulkIcon className={iconClasses} />}
|
||||
>
|
||||
New file
|
||||
</DropdownItem>
|
||||
<DropdownItem
|
||||
key="copy"
|
||||
description="Copy the file link"
|
||||
shortcut="⌘C"
|
||||
startContent={<CopyDocumentBulkIcon className={iconClasses} />}
|
||||
>
|
||||
Copy link
|
||||
</DropdownItem>
|
||||
<DropdownItem
|
||||
key="edit"
|
||||
description="Allows you to edit the file"
|
||||
shortcut="⌘⇧E"
|
||||
startContent={<EditDocumentBulkIcon className={iconClasses} />}
|
||||
>
|
||||
Edit file
|
||||
</DropdownItem>
|
||||
</DropdownSection>
|
||||
<DropdownSection title="Danger zone">
|
||||
<DropdownItem
|
||||
key="delete"
|
||||
className="text-danger"
|
||||
color="danger"
|
||||
description="Permanently delete the file"
|
||||
shortcut="⌘⇧D"
|
||||
startContent={
|
||||
<DeleteDocumentBulkIcon className={clsx(iconClasses, "!text-danger")} />
|
||||
}
|
||||
>
|
||||
Delete file
|
||||
</DropdownItem>
|
||||
</DropdownSection>
|
||||
</DropdownMenu>
|
||||
</Dropdown>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
};
|
||||
1
apps/docs/components/a11y-otb/index.ts
Normal file
1
apps/docs/components/a11y-otb/index.ts
Normal file
@ -0,0 +1 @@
|
||||
export * from "./a11y-otb";
|
||||
@ -190,7 +190,7 @@ export const CustomThemes = () => {
|
||||
const [selectedTheme, setSelectedTheme] = useState<Theme>(themesTabs[0].id as Theme);
|
||||
|
||||
return (
|
||||
<section className={sectionWrapper({class: "pb-56"})}>
|
||||
<section className={sectionWrapper()}>
|
||||
<div className="flex flex-col gap-8">
|
||||
<div>
|
||||
<div className={titleWrapper()}>
|
||||
@ -205,11 +205,11 @@ export const CustomThemes = () => {
|
||||
themes or create your own.
|
||||
</p>
|
||||
</div>
|
||||
<div className="grid grid-cols-2 gap-4">
|
||||
<div className="grid grid-cols-1 lg:grid-cols-2 gap-4">
|
||||
<CustomThemesExample selectedTheme={selectedTheme} onChangeTheme={setSelectedTheme} />
|
||||
<CodeWindow
|
||||
showWindowIcons
|
||||
className="max-h-[440px] mt-12"
|
||||
className="max-h-[440px] min-h-[390px] mt-12"
|
||||
highlightLines={get(codeHighlights, selectedTheme)}
|
||||
language="jsx"
|
||||
title="tailwind.config.js"
|
||||
|
||||
@ -2,7 +2,7 @@ import {tv, VariantProps} from "tailwind-variants";
|
||||
|
||||
export const shopCartStyles = tv({
|
||||
slots: {
|
||||
wrapper: "overflow-visible h-[240px] dark:border-none",
|
||||
wrapper: "overflow-visible h-auto lg:h-[240px] dark:border-none",
|
||||
imageWrapper: [
|
||||
"flex-none",
|
||||
"w-full",
|
||||
@ -92,7 +92,7 @@ export const shopCartStyles = tv({
|
||||
wrapper: "rounded-3xl",
|
||||
contentWrapper: "ml-3",
|
||||
imageWrapper: [
|
||||
"scale-[1.3]",
|
||||
"lg:scale-[1.3]",
|
||||
"before:rounded-3xl",
|
||||
"before:from-[#870172] before:to-[#18000E]",
|
||||
"shadow-lg",
|
||||
@ -118,7 +118,7 @@ export const shopCartStyles = tv({
|
||||
wrapper: "rounded-md",
|
||||
contentWrapper: "ml-3",
|
||||
imageWrapper: [
|
||||
"scale-[1.3]",
|
||||
"lg:scale-[1.3]",
|
||||
"before:rounded-md",
|
||||
"before:from-[#323232] before:to-[#000000]",
|
||||
"shadow-xl",
|
||||
|
||||
@ -1,20 +1,39 @@
|
||||
import React, {ReactNode} from "react";
|
||||
import {Card, CardHeader, CardBody, LinkProps} from "@nextui-org/react";
|
||||
import React, {ReactNode, useMemo} from "react";
|
||||
import {tv} from "tailwind-variants";
|
||||
import {Card, CardHeader, CardBody, LinkProps, SlotsToClasses} from "@nextui-org/react";
|
||||
import {useRouter} from "next/router";
|
||||
import {LinkIcon} from "@nextui-org/shared-icons";
|
||||
|
||||
const styles = tv({
|
||||
slots: {
|
||||
base: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4",
|
||||
card:
|
||||
"dark:border-none before:bg-white/5 before:backdrop-blur-lg before:backdrop-saturate-[1.8]",
|
||||
header: "gap-2 pb-0",
|
||||
iconWrapper: "flex justify-center p-2 rounded-full items-center bg-secondary-100 text-pink-500",
|
||||
title: "text-base font-semibold",
|
||||
description: "font-light text-base text-neutral-700",
|
||||
},
|
||||
});
|
||||
|
||||
export type FeaturesGridSlots = keyof ReturnType<typeof styles>;
|
||||
|
||||
export interface Feature extends LinkProps {
|
||||
title: string;
|
||||
description: string;
|
||||
icon: ReactNode;
|
||||
description?: string;
|
||||
}
|
||||
|
||||
interface FeaturesGridProps {
|
||||
features: Feature[];
|
||||
classNames?: SlotsToClasses<FeaturesGridSlots>;
|
||||
}
|
||||
|
||||
export const FeaturesGrid: React.FC<FeaturesGridProps> = ({features, ...props}) => {
|
||||
export const FeaturesGrid: React.FC<FeaturesGridProps> = ({features, classNames, ...props}) => {
|
||||
const router = useRouter();
|
||||
|
||||
const slots = useMemo(() => styles(), []);
|
||||
|
||||
const handleClick = (feat: Feature) => {
|
||||
if (!feat.href) {
|
||||
return;
|
||||
@ -29,25 +48,27 @@ export const FeaturesGrid: React.FC<FeaturesGridProps> = ({features, ...props})
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="grid grid-cols-4 gap-4" {...props}>
|
||||
<div className={slots.base({class: classNames?.base})} {...props}>
|
||||
{features.map((feat: Feature, index: number) => (
|
||||
<Card
|
||||
key={`${feat.title}_${index}`}
|
||||
isBlurred
|
||||
className="border-none before:bg-white/5 before:backdrop-blur-lg before:backdrop-saturate-[1.8]"
|
||||
className={slots.card({class: classNames?.card})}
|
||||
isPressable={!!feat.href}
|
||||
onPress={() => handleClick(feat)}
|
||||
>
|
||||
<CardHeader className="gap-2 pb-0">
|
||||
<div className="flex justify-center p-2 rounded-full items-center bg-secondary-100 text-pink-500">
|
||||
{feat.icon}
|
||||
</div>
|
||||
<p className="text-base font-semibold">{feat.title}</p>
|
||||
<CardHeader className={slots.header({class: classNames?.header})}>
|
||||
<div className={slots.iconWrapper({class: classNames?.iconWrapper})}>{feat.icon}</div>
|
||||
<p className={slots.title({class: classNames?.title})}>{feat.title}</p>
|
||||
{feat.isExternal && <LinkIcon className="text-white" height={18} width={18} />}
|
||||
</CardHeader>
|
||||
<CardBody>
|
||||
<p className="font-light text-base text-neutral-700">{feat.description}</p>
|
||||
</CardBody>
|
||||
{feat.description && (
|
||||
<CardBody>
|
||||
<p className={slots.description({class: classNames?.description})}>
|
||||
{feat.description}
|
||||
</p>
|
||||
</CardBody>
|
||||
)}
|
||||
</Card>
|
||||
))}
|
||||
</div>
|
||||
|
||||
@ -17,6 +17,7 @@ import {ArrowRightIcon, MoonFilledIcon, SunFilledIcon} from "@nextui-org/shared-
|
||||
import {useTheme} from "next-themes";
|
||||
import dynamic from "next/dynamic";
|
||||
|
||||
import {useMediaQuery} from "@/hooks/use-media-query";
|
||||
import {title, subtitle} from "@/components/primitives";
|
||||
import {NextUILogo} from "@/components";
|
||||
import {GithubIcon} from "@/components/icons";
|
||||
@ -36,7 +37,7 @@ const FloatingComponents: React.FC<{mounted: boolean}> = ({mounted}) => {
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="flex flex-col relative w-1/2">
|
||||
<div className="hidden lg:flex flex-col relative w-1/2">
|
||||
<Switch
|
||||
classNames={{
|
||||
base:
|
||||
@ -160,6 +161,7 @@ const FloatingComponents: React.FC<{mounted: boolean}> = ({mounted}) => {
|
||||
|
||||
export const Hero = () => {
|
||||
const [mounted, setMounted] = useState(false);
|
||||
const isTablet = useMediaQuery(1024);
|
||||
|
||||
useEffect(() => {
|
||||
setMounted(true);
|
||||
@ -167,7 +169,7 @@ export const Hero = () => {
|
||||
|
||||
return (
|
||||
<section className="flex relative w-full flex-nowrap justify-between items-center h-[calc(100vh_-_64px)] 2xl:h-[calc(84vh_-_64px)]">
|
||||
<div className="flex flex-col gap-6 w-1/2 xl:mt-10">
|
||||
<div className="flex flex-col gap-6 w-full lg:w-1/2 xl:mt-10">
|
||||
<div>
|
||||
<h1 className={title()}>Make </h1>
|
||||
<h1 className={title({color: "violet"})}>beautiful </h1>
|
||||
@ -196,7 +198,7 @@ export const Hero = () => {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<FloatingComponents mounted={mounted} />
|
||||
{!isTablet && <FloatingComponents mounted={mounted} />}
|
||||
|
||||
<DynamicLopperBG
|
||||
className="absolute translate-y-[10%] -z-50 opacity-0 data-[mounted=true]:opacity-100 transition-opacity"
|
||||
|
||||
19
apps/docs/components/icons/tick-bold.tsx
Normal file
19
apps/docs/components/icons/tick-bold.tsx
Normal file
@ -0,0 +1,19 @@
|
||||
import {IconSvgProps} from "@/types";
|
||||
|
||||
export const TickBoldIcon = ({size = 24, width, height, ...props}: IconSvgProps) => (
|
||||
<svg
|
||||
aria-hidden="true"
|
||||
fill="none"
|
||||
focusable="false"
|
||||
height={size || height}
|
||||
role="presentation"
|
||||
viewBox="0 0 24 24"
|
||||
width={size || width}
|
||||
{...props}
|
||||
>
|
||||
<path
|
||||
d="M12 2C6.49 2 2 6.49 2 12C2 17.51 6.49 22 12 22C17.51 22 22 17.51 22 12C22 6.49 17.51 2 12 2ZM16.78 9.7L11.11 15.37C10.97 15.51 10.78 15.59 10.58 15.59C10.38 15.59 10.19 15.51 10.05 15.37L7.22 12.54C6.93 12.25 6.93 11.77 7.22 11.48C7.51 11.19 7.99 11.19 8.28 11.48L10.58 13.78L15.72 8.64C16.01 8.35 16.49 8.35 16.78 8.64C17.07 8.93 17.07 9.4 16.78 9.7Z"
|
||||
fill="currentColor"
|
||||
/>
|
||||
</svg>
|
||||
);
|
||||
@ -6,3 +6,4 @@ export * from "./looper-bg";
|
||||
export * from "./features-grid";
|
||||
export * from "./custom-themes";
|
||||
export * from "./code-window";
|
||||
export * from "./a11y-otb";
|
||||
|
||||
@ -5,7 +5,7 @@ export const titleWrapper = tv({
|
||||
});
|
||||
|
||||
export const title = tv({
|
||||
base: "text-5xl tracking-tight inline font-semibold",
|
||||
base: "tracking-tight inline font-semibold",
|
||||
variants: {
|
||||
color: {
|
||||
violet: "from-[#FF1CF7] to-[#b249f8]",
|
||||
@ -16,9 +16,9 @@ export const title = tv({
|
||||
pink: "from-[#FF4ECD] to-[#F21361]",
|
||||
},
|
||||
size: {
|
||||
sm: "text-3xl",
|
||||
md: "text-5xl",
|
||||
lg: "text-6xl",
|
||||
sm: "text-2xl lg:text-3xl",
|
||||
md: "text-4xl lg:text-5xl",
|
||||
lg: "text-5xl lg:text-6xl",
|
||||
},
|
||||
fullWidth: {
|
||||
true: "w-full block",
|
||||
@ -45,5 +45,5 @@ export const subtitle = tv({
|
||||
});
|
||||
|
||||
export const sectionWrapper = tv({
|
||||
base: "relative z-10 flex flex-col gap-2 w-full my-56",
|
||||
base: "relative z-10 flex flex-col gap-2 w-full mt-56 pb-20",
|
||||
});
|
||||
|
||||
32
apps/docs/hooks/use-media-query.ts
Normal file
32
apps/docs/hooks/use-media-query.ts
Normal file
@ -0,0 +1,32 @@
|
||||
import {useState, useCallback, useEffect} from "react";
|
||||
|
||||
export const useMediaQuery = (width: number): boolean => {
|
||||
const [targetReached, setTargetReached] = useState(false);
|
||||
|
||||
const updateTarget = useCallback((e: MediaQueryListEvent) => {
|
||||
if (e.matches) {
|
||||
setTargetReached(true);
|
||||
} else {
|
||||
setTargetReached(false);
|
||||
}
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
const media = window.matchMedia(`(max-width: ${width}px)`);
|
||||
|
||||
media.addListener(updateTarget);
|
||||
|
||||
// Check on mount (callback is not called until a change occurs)
|
||||
if (media.matches) {
|
||||
setTargetReached(true);
|
||||
}
|
||||
|
||||
return () => media.removeListener(updateTarget);
|
||||
}, []);
|
||||
|
||||
return targetReached;
|
||||
};
|
||||
|
||||
export const useIsMobile = () => {
|
||||
return useMediaQuery(650);
|
||||
};
|
||||
@ -12,13 +12,15 @@
|
||||
"@nextui-org/react": "workspace:*",
|
||||
"@nextui-org/shared-icons": "workspace:*",
|
||||
"@nextui-org/shared-utils": "workspace:*",
|
||||
"@nextui-org/framer-transitions": "workspace:*",
|
||||
"@nextui-org/use-is-mobile": "workspace:*",
|
||||
"@nextui-org/theme": "workspace:*",
|
||||
"@react-aria/visually-hidden": "^3.8.0",
|
||||
"@vercel/analytics": "^0.1.11",
|
||||
"framer-motion": "^10.11.2",
|
||||
"hast-util-to-html": "7.1.2",
|
||||
"lodash": "^4.17.21",
|
||||
"next": "13.3.0",
|
||||
"next": "13.3.2",
|
||||
"next-themes": "^0.2.1",
|
||||
"parse-numeric-range": "1.2.0",
|
||||
"prism-react-renderer": "^1.2.1",
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import {DefaultLayout} from "@/layouts";
|
||||
import {Hero, FeaturesGrid, CustomThemes} from "@/components";
|
||||
import {Hero, FeaturesGrid, CustomThemes, A11yOtb} from "@/components";
|
||||
import landingContent from "@/content/landing";
|
||||
|
||||
const IndexPage = () => {
|
||||
@ -8,6 +8,7 @@ const IndexPage = () => {
|
||||
<Hero />
|
||||
<FeaturesGrid features={landingContent.topFeatures} />
|
||||
<CustomThemes />
|
||||
<A11yOtb />
|
||||
</DefaultLayout>
|
||||
);
|
||||
};
|
||||
|
||||
101
pnpm-lock.yaml
generated
101
pnpm-lock.yaml
generated
@ -269,6 +269,9 @@ importers:
|
||||
|
||||
apps/docs:
|
||||
dependencies:
|
||||
'@nextui-org/framer-transitions':
|
||||
specifier: workspace:*
|
||||
version: link:../../packages/utilities/framer-transitions
|
||||
'@nextui-org/react':
|
||||
specifier: workspace:*
|
||||
version: link:../../packages/core/react
|
||||
@ -281,6 +284,9 @@ importers:
|
||||
'@nextui-org/theme':
|
||||
specifier: workspace:*
|
||||
version: link:../../packages/core/theme
|
||||
'@nextui-org/use-is-mobile':
|
||||
specifier: workspace:*
|
||||
version: link:../../packages/hooks/use-is-mobile
|
||||
'@react-aria/visually-hidden':
|
||||
specifier: ^3.8.0
|
||||
version: 3.8.0(react@18.2.0)
|
||||
@ -297,11 +303,11 @@ importers:
|
||||
specifier: ^4.17.21
|
||||
version: 4.17.21
|
||||
next:
|
||||
specifier: 13.3.0
|
||||
version: 13.3.0(@babel/core@7.21.0)(react-dom@18.2.0)(react@18.2.0)
|
||||
specifier: 13.3.2
|
||||
version: 13.3.2(@babel/core@7.21.0)(react-dom@18.2.0)(react@18.2.0)
|
||||
next-themes:
|
||||
specifier: ^0.2.1
|
||||
version: 0.2.1(next@13.3.0)(react-dom@18.2.0)(react@18.2.0)
|
||||
version: 0.2.1(next@13.3.2)(react-dom@18.2.0)(react@18.2.0)
|
||||
parse-numeric-range:
|
||||
specifier: 1.2.0
|
||||
version: 1.2.0
|
||||
@ -353,10 +359,10 @@ importers:
|
||||
version: 10.4.14(postcss@8.4.21)
|
||||
eslint-config-next:
|
||||
specifier: ^11.0.0
|
||||
version: 11.0.0(eslint-import-resolver-typescript@2.4.0)(eslint@7.29.0)(next@13.3.0)(typescript@4.9.5)
|
||||
version: 11.0.0(eslint-import-resolver-typescript@2.4.0)(eslint@7.29.0)(next@13.3.2)(typescript@4.9.5)
|
||||
next-sitemap:
|
||||
specifier: ^4.0.7
|
||||
version: 4.0.7(@next/env@13.3.2)(next@13.3.0)
|
||||
version: 4.0.7(@next/env@13.3.2)(next@13.3.2)
|
||||
postcss:
|
||||
specifier: ^8.4.21
|
||||
version: 8.4.21
|
||||
@ -5068,83 +5074,79 @@ packages:
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@next/env@13.3.0:
|
||||
resolution: {integrity: sha512-AjppRV4uG3No7L1plinoTQETH+j2F10TEnrMfzbTUYwze5sBUPveeeBAPZPm8OkJZ1epq9OyYKhZrvbD6/9HCQ==}
|
||||
|
||||
/@next/env@13.3.2:
|
||||
resolution: {integrity: sha512-W+RJPtDj8PhOmZFi0MMhFoyWCz4tJeDEm7WtTTKflD+fgvmxpuOwxfQ2RWMz2gwnz6gL6hCuXtCtPpBBHDB7rg==}
|
||||
dev: true
|
||||
|
||||
/@next/eslint-plugin-next@11.0.0:
|
||||
resolution: {integrity: sha512-fPZ0904yY1box6bRpR9rJqIkNxJdvzzxH7doXS+cdjyBAdptMR7wj3mcx1hEikBHzWduU8BOXBvRg2hWc09YDQ==}
|
||||
dev: true
|
||||
|
||||
/@next/swc-darwin-arm64@13.3.0:
|
||||
resolution: {integrity: sha512-DmIQCNq6JtccLPPBzf0dgh2vzMWt5wjxbP71pCi5EWpWYE3MsP6FcRXi4MlAmFNDQOfcFXR2r7kBeG1LpZUh1w==}
|
||||
/@next/swc-darwin-arm64@13.3.2:
|
||||
resolution: {integrity: sha512-Wa5o2EbkBP0NcUM13sEjzGoB86YTZWUfoqbbVB7gs9RJAy8KkIoGNoLV7K55fru7GNgHsRMga3j1FadjJJWQYg==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
requiresBuild: true
|
||||
optional: true
|
||||
|
||||
/@next/swc-darwin-x64@13.3.0:
|
||||
resolution: {integrity: sha512-oQoqFa88OGgwnYlnAGHVct618FRI/749se0N3S8t9Bzdv5CRbscnO0RcX901+YnNK4Q6yeiizfgO3b7kogtsZg==}
|
||||
/@next/swc-darwin-x64@13.3.2:
|
||||
resolution: {integrity: sha512-mSk/rSKIo/VMTQa0t8DMELsNjjyYHMbX0q+MK7+SoWysiA5KrU0MQ2h8DUPf2T5tmQjyaUpX49l4j/dr2jovBA==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
requiresBuild: true
|
||||
optional: true
|
||||
|
||||
/@next/swc-linux-arm64-gnu@13.3.0:
|
||||
resolution: {integrity: sha512-Wzz2p/WqAJUqTVoLo6H18WMeAXo3i+9DkPDae4oQG8LMloJ3if4NEZTnOnTUlro6cq+S/W4pTGa97nWTrOjbGw==}
|
||||
/@next/swc-linux-arm64-gnu@13.3.2:
|
||||
resolution: {integrity: sha512-+5OC61uF33s0GdiGK2D5436Z2BqE8tJnlC6csTcBvCKQyvLsp6H5sPND5A1D2p/Gzh0mIGV/5vqfQ8yy+akOjw==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
optional: true
|
||||
|
||||
/@next/swc-linux-arm64-musl@13.3.0:
|
||||
resolution: {integrity: sha512-xPVrIQOQo9WXJYgmoTlMnAD/HlR/1e1ZIWGbwIzEirXBVBqMARUulBEIKdC19zuvoJ477qZJgBDCKtKEykCpyQ==}
|
||||
/@next/swc-linux-arm64-musl@13.3.2:
|
||||
resolution: {integrity: sha512-TZ7c7iZ3MB8yRBukbNVNzKSX/k9DKtGaEuofIZBWp+o4e29e8iuJaej9UUCNUkN6L/117/AEnlpH1c7yfvSj8Q==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
optional: true
|
||||
|
||||
/@next/swc-linux-x64-gnu@13.3.0:
|
||||
resolution: {integrity: sha512-jOFlpGuPD7W2tuXVJP4wt9a3cpNxWAPcloq5EfMJRiXsBBOjLVFZA7boXYxEBzSVgUiVVr1V9T0HFM7pULJ1qA==}
|
||||
/@next/swc-linux-x64-gnu@13.3.2:
|
||||
resolution: {integrity: sha512-aVoiakznPxGFIMcNlnY4HlZ4Be6oGhthaLSoXiVeplAgHLzHU2UqPMWqB/8/1TfMdWwISmwH4hb6DcdQ/PzTyA==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
optional: true
|
||||
|
||||
/@next/swc-linux-x64-musl@13.3.0:
|
||||
resolution: {integrity: sha512-2OwKlzaBgmuet9XYHc3KwsEilzb04F540rlRXkAcjMHL7eCxB7uZIGtsVvKOnQLvC/elrUegwSw1+5f7WmfyOw==}
|
||||
/@next/swc-linux-x64-musl@13.3.2:
|
||||
resolution: {integrity: sha512-D2CsQZkBq/hcdcQkMXrG2huLJDPhyMuO5J8ZOc5fZtI8D/UxcRjWWK8yw+JgbOdZ3D9IMJSD3cd5QMx4VEI+Kg==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
optional: true
|
||||
|
||||
/@next/swc-win32-arm64-msvc@13.3.0:
|
||||
resolution: {integrity: sha512-OeHiA6YEvndxT46g+rzFK/MQTfftKxJmzslERMu9LDdC6Kez0bdrgEYed5eXFK2Z1viKZJCGRlhd06rBusyztA==}
|
||||
/@next/swc-win32-arm64-msvc@13.3.2:
|
||||
resolution: {integrity: sha512-mjiWKEf9i1JAVePOa0Uw7c5c9Dp5D0LrevwIg31SNEpp8NwTr+ifHQzgf/ELNBWMxMLyiZiywWbYdcIjoa5y4A==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
optional: true
|
||||
|
||||
/@next/swc-win32-ia32-msvc@13.3.0:
|
||||
resolution: {integrity: sha512-4aB7K9mcVK1lYEzpOpqWrXHEZympU3oK65fnNcY1Qc4HLJFLJj8AViuqQd4jjjPNuV4sl8jAwTz3gN5VNGWB7w==}
|
||||
/@next/swc-win32-ia32-msvc@13.3.2:
|
||||
resolution: {integrity: sha512-fee18wB9lfAnyAwJbyqN/PhcXWH1lGpBWJVF0gTB8G8/eUU0Vlq524Qt1RCt0K0pxLsSEhw1wEpGvqYYrAdQTA==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
optional: true
|
||||
|
||||
/@next/swc-win32-x64-msvc@13.3.0:
|
||||
resolution: {integrity: sha512-Reer6rkLLcoOvB0dd66+Y7WrWVFH7sEEkF/4bJCIfsSKnTStTYaHtwIJAwbqnt9I392Tqvku0KkoqZOryWV9LQ==}
|
||||
/@next/swc-win32-x64-msvc@13.3.2:
|
||||
resolution: {integrity: sha512-eE6hPs0vtM08UB3B8YM1KIBOYZHJPF7NtWBdU0EIvRJ+R197+3W3VraaVBMMg0zy0e2e1jKgQPypakxN+vfZcw==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
@ -8471,6 +8473,11 @@ packages:
|
||||
dependencies:
|
||||
tslib: 2.5.0
|
||||
|
||||
/@swc/helpers@0.5.1:
|
||||
resolution: {integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==}
|
||||
dependencies:
|
||||
tslib: 2.5.0
|
||||
|
||||
/@swc/jest@0.2.24(@swc/core@1.3.35):
|
||||
resolution: {integrity: sha512-fwgxQbM1wXzyKzl1+IW0aGrRvAA8k0Y3NxFhKigbPjOJ4mCKnWEcNX9HQS3gshflcxq8YKhadabGUVfdwjCr6Q==}
|
||||
engines: {npm: '>= 7.0.0'}
|
||||
@ -12988,7 +12995,7 @@ packages:
|
||||
object.entries: 1.1.6
|
||||
dev: true
|
||||
|
||||
/eslint-config-next@11.0.0(eslint-import-resolver-typescript@2.4.0)(eslint@7.29.0)(next@13.3.0)(typescript@4.9.5):
|
||||
/eslint-config-next@11.0.0(eslint-import-resolver-typescript@2.4.0)(eslint@7.29.0)(next@13.3.2)(typescript@4.9.5):
|
||||
resolution: {integrity: sha512-pmatg4zqb5Vygu2HrSPxbsCBudXO9OZQUMKQCyrPKRvfL8PJ3lOIOzzwsiW68eMPXOZwOc1yxTRZWKNY8OJT0w==}
|
||||
peerDependencies:
|
||||
eslint: ^7.23.0
|
||||
@ -13007,7 +13014,7 @@ packages:
|
||||
eslint-plugin-jsx-a11y: 6.4.1(eslint@7.29.0)
|
||||
eslint-plugin-react: 7.23.2(eslint@7.29.0)
|
||||
eslint-plugin-react-hooks: 4.6.0(eslint@7.29.0)
|
||||
next: 13.3.0(@babel/core@7.21.0)(react-dom@18.2.0)(react@18.2.0)
|
||||
next: 13.3.2(@babel/core@7.21.0)(react-dom@18.2.0)(react@18.2.0)
|
||||
typescript: 4.9.5
|
||||
transitivePeerDependencies:
|
||||
- eslint-import-resolver-typescript
|
||||
@ -17819,7 +17826,7 @@ packages:
|
||||
resolution: {integrity: sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==}
|
||||
dev: true
|
||||
|
||||
/next-sitemap@4.0.7(@next/env@13.3.2)(next@13.3.0):
|
||||
/next-sitemap@4.0.7(@next/env@13.3.2)(next@13.3.2):
|
||||
resolution: {integrity: sha512-S2g5IwJeO0+ecmFq981fb+Mw9YWmntOuN/qTCxclSkUibOJ8qKIOye0vn6NEJ1S4tKhbY+MTYKgJpNdFZYxLoA==}
|
||||
engines: {node: '>=14.18'}
|
||||
hasBin: true
|
||||
@ -17830,24 +17837,24 @@ packages:
|
||||
'@corex/deepmerge': 4.0.43
|
||||
'@next/env': 13.3.2
|
||||
minimist: 1.2.8
|
||||
next: 13.3.0(@babel/core@7.21.0)(react-dom@18.2.0)(react@18.2.0)
|
||||
next: 13.3.2(@babel/core@7.21.0)(react-dom@18.2.0)(react@18.2.0)
|
||||
dev: true
|
||||
|
||||
/next-themes@0.2.1(next@13.3.0)(react-dom@18.2.0)(react@18.2.0):
|
||||
/next-themes@0.2.1(next@13.3.2)(react-dom@18.2.0)(react@18.2.0):
|
||||
resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==}
|
||||
peerDependencies:
|
||||
next: '*'
|
||||
react: '*'
|
||||
react-dom: '*'
|
||||
dependencies:
|
||||
next: 13.3.0(@babel/core@7.21.0)(react-dom@18.2.0)(react@18.2.0)
|
||||
next: 13.3.2(@babel/core@7.21.0)(react-dom@18.2.0)(react@18.2.0)
|
||||
react: 18.2.0
|
||||
react-dom: 18.2.0(react@18.2.0)
|
||||
dev: false
|
||||
|
||||
/next@13.3.0(@babel/core@7.21.0)(react-dom@18.2.0)(react@18.2.0):
|
||||
resolution: {integrity: sha512-OVTw8MpIPa12+DCUkPqRGPS3thlJPcwae2ZL4xti3iBff27goH024xy4q2lhlsdoYiKOi8Kz6uJoLW/GXwgfOA==}
|
||||
engines: {node: '>=14.6.0'}
|
||||
/next@13.3.2(@babel/core@7.21.0)(react-dom@18.2.0)(react@18.2.0):
|
||||
resolution: {integrity: sha512-82VuWoMGWFqGUwCEWcqkIhGgdRry+VKVBZ9KNte1Uk2byZKvPZrC5c62fYHrIhSf36YKY6m21hxdyDzn6MDHFA==}
|
||||
engines: {node: '>=16.8.0'}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
'@opentelemetry/api': ^1.1.0
|
||||
@ -17866,8 +17873,8 @@ packages:
|
||||
sass:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@next/env': 13.3.0
|
||||
'@swc/helpers': 0.4.14
|
||||
'@next/env': 13.3.2
|
||||
'@swc/helpers': 0.5.1
|
||||
busboy: 1.6.0
|
||||
caniuse-lite: 1.0.30001481
|
||||
postcss: 8.4.14
|
||||
@ -17875,15 +17882,15 @@ packages:
|
||||
react-dom: 18.2.0(react@18.2.0)
|
||||
styled-jsx: 5.1.1(@babel/core@7.21.0)(react@18.2.0)
|
||||
optionalDependencies:
|
||||
'@next/swc-darwin-arm64': 13.3.0
|
||||
'@next/swc-darwin-x64': 13.3.0
|
||||
'@next/swc-linux-arm64-gnu': 13.3.0
|
||||
'@next/swc-linux-arm64-musl': 13.3.0
|
||||
'@next/swc-linux-x64-gnu': 13.3.0
|
||||
'@next/swc-linux-x64-musl': 13.3.0
|
||||
'@next/swc-win32-arm64-msvc': 13.3.0
|
||||
'@next/swc-win32-ia32-msvc': 13.3.0
|
||||
'@next/swc-win32-x64-msvc': 13.3.0
|
||||
'@next/swc-darwin-arm64': 13.3.2
|
||||
'@next/swc-darwin-x64': 13.3.2
|
||||
'@next/swc-linux-arm64-gnu': 13.3.2
|
||||
'@next/swc-linux-arm64-musl': 13.3.2
|
||||
'@next/swc-linux-x64-gnu': 13.3.2
|
||||
'@next/swc-linux-x64-musl': 13.3.2
|
||||
'@next/swc-win32-arm64-msvc': 13.3.2
|
||||
'@next/swc-win32-ia32-msvc': 13.3.2
|
||||
'@next/swc-win32-x64-msvc': 13.3.2
|
||||
transitivePeerDependencies:
|
||||
- '@babel/core'
|
||||
- babel-plugin-macros
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user