feat(graph): update headlessui v2 (#29586)
This PR updates `headlessui/react` to v2 so that it is compatible with the new graph library. This also bumps `preact` to `10.25` for `useId` compat.
This commit is contained in:
parent
a352c81876
commit
669af5559f
@ -1,4 +1,10 @@
|
|||||||
import { Menu, Transition } from '@headlessui/react';
|
import {
|
||||||
|
Menu,
|
||||||
|
MenuButton,
|
||||||
|
MenuItem,
|
||||||
|
MenuItems,
|
||||||
|
Transition,
|
||||||
|
} from '@headlessui/react';
|
||||||
import {
|
import {
|
||||||
ComputerDesktopIcon,
|
ComputerDesktopIcon,
|
||||||
MoonIcon,
|
MoonIcon,
|
||||||
@ -28,7 +34,7 @@ export function ThemePanel({
|
|||||||
return (
|
return (
|
||||||
<Menu as="div" className="relative inline-block text-left">
|
<Menu as="div" className="relative inline-block text-left">
|
||||||
<div>
|
<div>
|
||||||
<Menu.Button
|
<MenuButton
|
||||||
className="inline-flex w-full justify-center rounded-md p-2 text-sm font-medium focus:outline-none focus-visible:ring-2 focus-visible:ring-white focus-visible:ring-opacity-75 dark:text-sky-500"
|
className="inline-flex w-full justify-center rounded-md p-2 text-sm font-medium focus:outline-none focus-visible:ring-2 focus-visible:ring-white focus-visible:ring-opacity-75 dark:text-sky-500"
|
||||||
data-cy="theme-open-modal-button"
|
data-cy="theme-open-modal-button"
|
||||||
>
|
>
|
||||||
@ -42,7 +48,7 @@ export function ThemePanel({
|
|||||||
{theme === 'dark' && (
|
{theme === 'dark' && (
|
||||||
<MoonIcon className="h-4 w-4" aria-hidden="true" />
|
<MoonIcon className="h-4 w-4" aria-hidden="true" />
|
||||||
)}
|
)}
|
||||||
</Menu.Button>
|
</MenuButton>
|
||||||
</div>
|
</div>
|
||||||
<Transition
|
<Transition
|
||||||
as={Fragment}
|
as={Fragment}
|
||||||
@ -53,15 +59,15 @@ export function ThemePanel({
|
|||||||
leaveFrom="transform opacity-100 scale-100"
|
leaveFrom="transform opacity-100 scale-100"
|
||||||
leaveTo="transform opacity-0 scale-95"
|
leaveTo="transform opacity-0 scale-95"
|
||||||
>
|
>
|
||||||
<Menu.Items className="absolute right-0 z-50 mt-2 w-36 origin-top-right rounded-md bg-white text-slate-500 shadow-lg ring-1 ring-slate-900/10 ring-opacity-5 focus:outline-none dark:bg-slate-800 dark:text-slate-400 dark:ring-0">
|
<MenuItems className="absolute right-0 z-50 mt-2 w-36 origin-top-right rounded-md bg-white text-slate-500 shadow-lg ring-1 ring-slate-900/10 ring-opacity-5 focus:outline-none dark:bg-slate-800 dark:text-slate-400 dark:ring-0">
|
||||||
<div className="px-1 py-1">
|
<div className="px-1 py-1">
|
||||||
<Menu.Item>
|
<MenuItem>
|
||||||
{({ active }) => (
|
{({ focus }) => (
|
||||||
<button
|
<button
|
||||||
data-cy="system-theme-button"
|
data-cy="system-theme-button"
|
||||||
className={classNames(
|
className={classNames(
|
||||||
theme === 'system' ? 'text-blue-500 dark:text-sky-500' : '',
|
theme === 'system' ? 'text-blue-500 dark:text-sky-500' : '',
|
||||||
active ? 'bg-slate-50 dark:bg-slate-600/30' : '',
|
focus ? 'bg-slate-50 dark:bg-slate-600/30' : '',
|
||||||
'group flex w-full items-center rounded-md px-2 py-2 text-sm'
|
'group flex w-full items-center rounded-md px-2 py-2 text-sm'
|
||||||
)}
|
)}
|
||||||
onClick={() => setTheme('system')}
|
onClick={() => setTheme('system')}
|
||||||
@ -73,14 +79,14 @@ export function ThemePanel({
|
|||||||
System
|
System
|
||||||
</button>
|
</button>
|
||||||
)}
|
)}
|
||||||
</Menu.Item>
|
</MenuItem>
|
||||||
<Menu.Item>
|
<MenuItem>
|
||||||
{({ active }) => (
|
{({ focus }) => (
|
||||||
<button
|
<button
|
||||||
data-cy="light-theme-button"
|
data-cy="light-theme-button"
|
||||||
className={classNames(
|
className={classNames(
|
||||||
theme === 'light' ? 'text-blue-500 dark:text-sky-500' : '',
|
theme === 'light' ? 'text-blue-500 dark:text-sky-500' : '',
|
||||||
active ? 'bg-slate-50 dark:bg-slate-600/30' : '',
|
focus ? 'bg-slate-50 dark:bg-slate-600/30' : '',
|
||||||
'group flex w-full items-center rounded-md px-2 py-2 text-sm'
|
'group flex w-full items-center rounded-md px-2 py-2 text-sm'
|
||||||
)}
|
)}
|
||||||
onClick={() => setTheme('light')}
|
onClick={() => setTheme('light')}
|
||||||
@ -89,14 +95,14 @@ export function ThemePanel({
|
|||||||
Light
|
Light
|
||||||
</button>
|
</button>
|
||||||
)}
|
)}
|
||||||
</Menu.Item>
|
</MenuItem>
|
||||||
<Menu.Item>
|
<MenuItem>
|
||||||
{({ active }) => (
|
{({ focus }) => (
|
||||||
<button
|
<button
|
||||||
data-cy="dark-theme-button"
|
data-cy="dark-theme-button"
|
||||||
className={classNames(
|
className={classNames(
|
||||||
theme === 'dark' ? 'text-blue-500 dark:text-sky-500' : '',
|
theme === 'dark' ? 'text-blue-500 dark:text-sky-500' : '',
|
||||||
active ? 'bg-slate-50 dark:bg-slate-600/30' : '',
|
focus ? 'bg-slate-50 dark:bg-slate-600/30' : '',
|
||||||
'group flex w-full items-center rounded-md px-2 py-2 text-sm'
|
'group flex w-full items-center rounded-md px-2 py-2 text-sm'
|
||||||
)}
|
)}
|
||||||
onClick={() => setTheme('dark')}
|
onClick={() => setTheme('dark')}
|
||||||
@ -105,9 +111,9 @@ export function ThemePanel({
|
|||||||
Dark
|
Dark
|
||||||
</button>
|
</button>
|
||||||
)}
|
)}
|
||||||
</Menu.Item>
|
</MenuItem>
|
||||||
</div>
|
</div>
|
||||||
</Menu.Items>
|
</MenuItems>
|
||||||
</Transition>
|
</Transition>
|
||||||
</Menu>
|
</Menu>
|
||||||
);
|
);
|
||||||
|
|||||||
@ -1,4 +1,11 @@
|
|||||||
import { Dialog, Transition } from '@headlessui/react';
|
import {
|
||||||
|
Description,
|
||||||
|
Dialog,
|
||||||
|
DialogPanel,
|
||||||
|
DialogTitle,
|
||||||
|
Transition,
|
||||||
|
TransitionChild,
|
||||||
|
} from '@headlessui/react';
|
||||||
import { ChangeEvent, Fragment, useMemo, useState } from 'react';
|
import { ChangeEvent, Fragment, useMemo, useState } from 'react';
|
||||||
import { GithubIcon } from '@nx/nx-dev/ui-common';
|
import { GithubIcon } from '@nx/nx-dev/ui-common';
|
||||||
import { cx } from '@nx/nx-dev/ui-primitives';
|
import { cx } from '@nx/nx-dev/ui-primitives';
|
||||||
@ -58,7 +65,7 @@ function FeedbackDialog({
|
|||||||
return (
|
return (
|
||||||
<Transition appear show={isOpen} as={Fragment}>
|
<Transition appear show={isOpen} as={Fragment}>
|
||||||
<Dialog open={isOpen} onClose={closeDialog} className="relative z-50">
|
<Dialog open={isOpen} onClose={closeDialog} className="relative z-50">
|
||||||
<Transition.Child
|
<TransitionChild
|
||||||
as={Fragment}
|
as={Fragment}
|
||||||
enter="ease-out duration-300"
|
enter="ease-out duration-300"
|
||||||
enterFrom="opacity-0"
|
enterFrom="opacity-0"
|
||||||
@ -72,12 +79,12 @@ function FeedbackDialog({
|
|||||||
className="fixed inset-0 bg-black/10 backdrop-blur-sm dark:bg-white/10"
|
className="fixed inset-0 bg-black/10 backdrop-blur-sm dark:bg-white/10"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
/>
|
/>
|
||||||
</Transition.Child>
|
</TransitionChild>
|
||||||
|
|
||||||
{/* This is the modal */}
|
{/* This is the modal */}
|
||||||
<div className="fixed inset-0 w-full overflow-y-auto">
|
<div className="fixed inset-0 w-full overflow-y-auto">
|
||||||
<div className="flex min-h-full items-center justify-center p-4">
|
<div className="flex min-h-full items-center justify-center p-4">
|
||||||
<Transition.Child
|
<TransitionChild
|
||||||
as={Fragment}
|
as={Fragment}
|
||||||
enter="ease-out duration-300"
|
enter="ease-out duration-300"
|
||||||
enterFrom="opacity-0 scale-95"
|
enterFrom="opacity-0 scale-95"
|
||||||
@ -86,8 +93,8 @@ function FeedbackDialog({
|
|||||||
leaveFrom="opacity-100 scale-100"
|
leaveFrom="opacity-100 scale-100"
|
||||||
leaveTo="opacity-0 scale-95"
|
leaveTo="opacity-0 scale-95"
|
||||||
>
|
>
|
||||||
<Dialog.Panel className="relative w-full max-w-2xl transform overflow-hidden rounded-2xl bg-white p-6 text-left align-middle shadow-xl transition-all dark:bg-slate-900">
|
<DialogPanel className="relative w-full max-w-2xl transform overflow-hidden rounded-2xl bg-white p-6 text-left align-middle shadow-xl transition-all dark:bg-slate-900">
|
||||||
<Dialog.Title
|
<DialogTitle
|
||||||
as="h3"
|
as="h3"
|
||||||
className="bg-white p-4 text-center text-lg font-medium leading-6 text-slate-700 dark:bg-slate-900 dark:text-slate-400"
|
className="bg-white p-4 text-center text-lg font-medium leading-6 text-slate-700 dark:bg-slate-900 dark:text-slate-400"
|
||||||
>
|
>
|
||||||
@ -95,7 +102,7 @@ function FeedbackDialog({
|
|||||||
<button className={styles.closebutton} onClick={closeDialog}>
|
<button className={styles.closebutton} onClick={closeDialog}>
|
||||||
×
|
×
|
||||||
</button>
|
</button>
|
||||||
</Dialog.Title>
|
</DialogTitle>
|
||||||
|
|
||||||
{/* The anatomy here should be
|
{/* The anatomy here should be
|
||||||
|
|
||||||
@ -217,11 +224,11 @@ function FeedbackDialog({
|
|||||||
</ul>
|
</ul>
|
||||||
{isIdea && (
|
{isIdea && (
|
||||||
<div className={styles.fadeinout}>
|
<div className={styles.fadeinout}>
|
||||||
<Dialog.Description>
|
<Description>
|
||||||
We are always looking to improve our documentation. If you
|
We are always looking to improve our documentation. If you
|
||||||
have any suggestions, please let us know.
|
have any suggestions, please let us know.
|
||||||
</Dialog.Description>
|
</Description>
|
||||||
<Dialog.Description className="pt-4">
|
<Description className="pt-4">
|
||||||
<textarea
|
<textarea
|
||||||
rows={5}
|
rows={5}
|
||||||
className="box-border w-full rounded dark:bg-gray-800"
|
className="box-border w-full rounded dark:bg-gray-800"
|
||||||
@ -229,8 +236,8 @@ function FeedbackDialog({
|
|||||||
value={feedback}
|
value={feedback}
|
||||||
onChange={updateFeedback}
|
onChange={updateFeedback}
|
||||||
></textarea>
|
></textarea>
|
||||||
</Dialog.Description>
|
</Description>
|
||||||
<Dialog.Description className="relative mt-4 flex justify-end rounded-l-md">
|
<Description className="relative mt-4 flex justify-end rounded-l-md">
|
||||||
<button
|
<button
|
||||||
onClick={submitFeedback}
|
onClick={submitFeedback}
|
||||||
disabled={formDisabled}
|
disabled={formDisabled}
|
||||||
@ -245,11 +252,11 @@ function FeedbackDialog({
|
|||||||
>
|
>
|
||||||
Done
|
Done
|
||||||
</button>
|
</button>
|
||||||
</Dialog.Description>
|
</Description>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
</Dialog.Panel>
|
</DialogPanel>
|
||||||
</Transition.Child>
|
</TransitionChild>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
|
|||||||
@ -4,7 +4,13 @@ import { FC, Fragment, SVGProps, useEffect, useState } from 'react';
|
|||||||
import { usePathname, useSearchParams } from 'next/navigation';
|
import { usePathname, useSearchParams } from 'next/navigation';
|
||||||
import { ChevronDownIcon } from '@heroicons/react/24/outline';
|
import { ChevronDownIcon } from '@heroicons/react/24/outline';
|
||||||
|
|
||||||
import { Menu, Transition } from '@headlessui/react';
|
import {
|
||||||
|
Menu,
|
||||||
|
MenuButton,
|
||||||
|
MenuItem,
|
||||||
|
MenuItems,
|
||||||
|
Transition,
|
||||||
|
} from '@headlessui/react';
|
||||||
import { cx } from '@nx/nx-dev/ui-primitives';
|
import { cx } from '@nx/nx-dev/ui-primitives';
|
||||||
import { BlogPostDataEntry } from '@nx/nx-dev/data-access-documents/node-only';
|
import { BlogPostDataEntry } from '@nx/nx-dev/data-access-documents/node-only';
|
||||||
|
|
||||||
@ -102,7 +108,7 @@ export function Filters({
|
|||||||
{/* MOBILE */}
|
{/* MOBILE */}
|
||||||
<div className="relative lg:hidden">
|
<div className="relative lg:hidden">
|
||||||
<Menu as="div" className="inline-block text-left">
|
<Menu as="div" className="inline-block text-left">
|
||||||
<Menu.Button
|
<MenuButton
|
||||||
className="inline-flex w-full justify-center rounded-md border border-slate-400 bg-white px-4 py-2 text-sm font-medium text-slate-700 shadow-sm transition hover:bg-slate-50 hover:text-slate-600 dark:border-slate-700 dark:bg-slate-800 dark:text-slate-200 dark:hover:bg-slate-700"
|
className="inline-flex w-full justify-center rounded-md border border-slate-400 bg-white px-4 py-2 text-sm font-medium text-slate-700 shadow-sm transition hover:bg-slate-50 hover:text-slate-600 dark:border-slate-700 dark:bg-slate-800 dark:text-slate-200 dark:hover:bg-slate-700"
|
||||||
aria-label="Select filter topic"
|
aria-label="Select filter topic"
|
||||||
>
|
>
|
||||||
@ -111,7 +117,7 @@ export function Filters({
|
|||||||
className="-mr-1 ml-2 h-5 w-5 text-violet-200 hover:text-violet-100"
|
className="-mr-1 ml-2 h-5 w-5 text-violet-200 hover:text-violet-100"
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
/>
|
/>
|
||||||
</Menu.Button>
|
</MenuButton>
|
||||||
<Transition
|
<Transition
|
||||||
as={Fragment}
|
as={Fragment}
|
||||||
enter="transition ease-out duration-100"
|
enter="transition ease-out duration-100"
|
||||||
@ -121,13 +127,13 @@ export function Filters({
|
|||||||
leaveFrom="transform opacity-100 scale-100"
|
leaveFrom="transform opacity-100 scale-100"
|
||||||
leaveTo="transform opacity-0 scale-95"
|
leaveTo="transform opacity-0 scale-95"
|
||||||
>
|
>
|
||||||
<Menu.Items
|
<MenuItems
|
||||||
as="ul"
|
as="ul"
|
||||||
className="absolute right-0 z-[31] mt-2 flex w-56 origin-top-right flex-col gap-4 rounded-md bg-white p-4 shadow-lg ring-1 ring-black/5 focus:outline-none dark:bg-slate-800 dark:text-white"
|
className="absolute right-0 z-[31] mt-2 flex w-56 origin-top-right flex-col gap-4 rounded-md bg-white p-4 shadow-lg ring-1 ring-black/5 focus:outline-none dark:bg-slate-800 dark:text-white"
|
||||||
aria-label="Filter topics"
|
aria-label="Filter topics"
|
||||||
>
|
>
|
||||||
{filters.map((filter) => (
|
{filters.map((filter) => (
|
||||||
<Menu.Item as="li" className="text-lg" key={filter.value}>
|
<MenuItem as="li" className="text-lg" key={filter.value}>
|
||||||
<Link
|
<Link
|
||||||
className={cx('flex items-center gap-2')}
|
className={cx('flex items-center gap-2')}
|
||||||
href={updateFilter(filter.value)}
|
href={updateFilter(filter.value)}
|
||||||
@ -141,9 +147,9 @@ export function Filters({
|
|||||||
)}
|
)}
|
||||||
{filter.label}
|
{filter.label}
|
||||||
</Link>
|
</Link>
|
||||||
</Menu.Item>
|
</MenuItem>
|
||||||
))}
|
))}
|
||||||
</Menu.Items>
|
</MenuItems>
|
||||||
</Transition>
|
</Transition>
|
||||||
</Menu>
|
</Menu>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -1,5 +1,10 @@
|
|||||||
'use client';
|
'use client';
|
||||||
import { Dialog, Transition } from '@headlessui/react';
|
import {
|
||||||
|
Dialog,
|
||||||
|
DialogPanel,
|
||||||
|
Transition,
|
||||||
|
TransitionChild,
|
||||||
|
} from '@headlessui/react';
|
||||||
import { cx } from '@nx/nx-dev/ui-primitives';
|
import { cx } from '@nx/nx-dev/ui-primitives';
|
||||||
import { PlayIcon } from '@heroicons/react/24/outline';
|
import { PlayIcon } from '@heroicons/react/24/outline';
|
||||||
import { motion } from 'framer-motion';
|
import { motion } from 'framer-motion';
|
||||||
@ -92,7 +97,7 @@ export function Hero(): JSX.Element {
|
|||||||
onClose={() => setIsOpen(false)}
|
onClose={() => setIsOpen(false)}
|
||||||
className="relative z-10"
|
className="relative z-10"
|
||||||
>
|
>
|
||||||
<Transition.Child
|
<TransitionChild
|
||||||
as={Fragment}
|
as={Fragment}
|
||||||
enter="ease-out duration-300"
|
enter="ease-out duration-300"
|
||||||
enterFrom="opacity-0"
|
enterFrom="opacity-0"
|
||||||
@ -102,10 +107,10 @@ export function Hero(): JSX.Element {
|
|||||||
leaveTo="opacity-0"
|
leaveTo="opacity-0"
|
||||||
>
|
>
|
||||||
<div className="fixed inset-0 bg-black/25 backdrop-blur-sm" />
|
<div className="fixed inset-0 bg-black/25 backdrop-blur-sm" />
|
||||||
</Transition.Child>
|
</TransitionChild>
|
||||||
<div className="fixed inset-0 overflow-y-auto">
|
<div className="fixed inset-0 overflow-y-auto">
|
||||||
<div className="flex min-h-full items-center justify-center p-4 text-center">
|
<div className="flex min-h-full items-center justify-center p-4 text-center">
|
||||||
<Transition.Child
|
<TransitionChild
|
||||||
as={Fragment}
|
as={Fragment}
|
||||||
enter="ease-out duration-300"
|
enter="ease-out duration-300"
|
||||||
enterFrom="opacity-0 scale-95"
|
enterFrom="opacity-0 scale-95"
|
||||||
@ -114,7 +119,7 @@ export function Hero(): JSX.Element {
|
|||||||
leaveFrom="opacity-100 scale-100"
|
leaveFrom="opacity-100 scale-100"
|
||||||
leaveTo="opacity-0 scale-95"
|
leaveTo="opacity-0 scale-95"
|
||||||
>
|
>
|
||||||
<Dialog.Panel className="relative w-auto transform overflow-hidden rounded-2xl border border-slate-600 text-left align-middle shadow-xl transition-all focus:outline-none dark:border-slate-800">
|
<DialogPanel className="relative w-auto transform overflow-hidden rounded-2xl border border-slate-600 text-left align-middle shadow-xl transition-all focus:outline-none dark:border-slate-800">
|
||||||
<iframe
|
<iframe
|
||||||
width="812"
|
width="812"
|
||||||
height="468"
|
height="468"
|
||||||
@ -125,8 +130,8 @@ export function Hero(): JSX.Element {
|
|||||||
allowFullScreen
|
allowFullScreen
|
||||||
className="max-w-full"
|
className="max-w-full"
|
||||||
/>
|
/>
|
||||||
</Dialog.Panel>
|
</DialogPanel>
|
||||||
</Transition.Child>
|
</TransitionChild>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
|
|||||||
@ -11,7 +11,12 @@ import cx from 'classnames';
|
|||||||
import Link from 'next/link';
|
import Link from 'next/link';
|
||||||
import { useRouter } from 'next/router';
|
import { useRouter } from 'next/router';
|
||||||
import { ButtonLink } from '../button';
|
import { ButtonLink } from '../button';
|
||||||
import { Popover, Transition } from '@headlessui/react';
|
import {
|
||||||
|
Popover,
|
||||||
|
PopoverButton,
|
||||||
|
PopoverPanel,
|
||||||
|
Transition,
|
||||||
|
} from '@headlessui/react';
|
||||||
import { resourceMenuItems } from './menu-items';
|
import { resourceMenuItems } from './menu-items';
|
||||||
import { SectionsMenu } from './sections-menu';
|
import { SectionsMenu } from './sections-menu';
|
||||||
import { DiscordIcon } from '../discord-icon';
|
import { DiscordIcon } from '../discord-icon';
|
||||||
@ -248,7 +253,7 @@ export function DocumentationHeader({
|
|||||||
<Popover className="relative">
|
<Popover className="relative">
|
||||||
{({ open }) => (
|
{({ open }) => (
|
||||||
<>
|
<>
|
||||||
<Popover.Button
|
<PopoverButton
|
||||||
className={cx(
|
className={cx(
|
||||||
open ? 'text-blue-500 dark:text-sky-500' : '',
|
open ? 'text-blue-500 dark:text-sky-500' : '',
|
||||||
'group inline-flex items-center px-3 py-2 font-medium leading-tight outline-0 dark:text-slate-200'
|
'group inline-flex items-center px-3 py-2 font-medium leading-tight outline-0 dark:text-slate-200'
|
||||||
@ -266,7 +271,7 @@ export function DocumentationHeader({
|
|||||||
)}
|
)}
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
/>
|
/>
|
||||||
</Popover.Button>
|
</PopoverButton>
|
||||||
|
|
||||||
<Transition
|
<Transition
|
||||||
as={Fragment}
|
as={Fragment}
|
||||||
@ -277,9 +282,9 @@ export function DocumentationHeader({
|
|||||||
leaveFrom="opacity-100 translate-y-0"
|
leaveFrom="opacity-100 translate-y-0"
|
||||||
leaveTo="opacity-0 translate-y-1"
|
leaveTo="opacity-0 translate-y-1"
|
||||||
>
|
>
|
||||||
<Popover.Panel className="absolute left-60 z-30 mt-3 w-max max-w-2xl -translate-x-1/2 transform lg:left-20">
|
<PopoverPanel className="absolute left-60 z-30 mt-3 w-max max-w-2xl -translate-x-1/2 transform lg:left-20">
|
||||||
<SectionsMenu sections={resourceMenuItems} />
|
<SectionsMenu sections={resourceMenuItems} />
|
||||||
</Popover.Panel>
|
</PopoverPanel>
|
||||||
</Transition>
|
</Transition>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@ -1,5 +1,15 @@
|
|||||||
'use client';
|
'use client';
|
||||||
import { Dialog, Disclosure, Popover, Transition } from '@headlessui/react';
|
import {
|
||||||
|
Dialog,
|
||||||
|
DialogPanel,
|
||||||
|
DialogTitle,
|
||||||
|
Disclosure,
|
||||||
|
DisclosureButton,
|
||||||
|
Popover,
|
||||||
|
PopoverButton,
|
||||||
|
Transition,
|
||||||
|
TransitionChild,
|
||||||
|
} from '@headlessui/react';
|
||||||
import {
|
import {
|
||||||
Bars4Icon,
|
Bars4Icon,
|
||||||
ChevronDownIcon,
|
ChevronDownIcon,
|
||||||
@ -97,7 +107,7 @@ export function Header({ ctaButtons }: HeaderProps): ReactElement {
|
|||||||
<Popover className="relative">
|
<Popover className="relative">
|
||||||
{({ open }) => (
|
{({ open }) => (
|
||||||
<>
|
<>
|
||||||
<Popover.Button
|
<PopoverButton
|
||||||
className={cx(
|
className={cx(
|
||||||
open ? 'text-blue-500 dark:text-sky-500' : '',
|
open ? 'text-blue-500 dark:text-sky-500' : '',
|
||||||
'group inline-flex items-center px-3 py-2 font-medium leading-tight outline-0 dark:text-slate-200'
|
'group inline-flex items-center px-3 py-2 font-medium leading-tight outline-0 dark:text-slate-200'
|
||||||
@ -115,7 +125,7 @@ export function Header({ ctaButtons }: HeaderProps): ReactElement {
|
|||||||
)}
|
)}
|
||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
/>
|
/>
|
||||||
</Popover.Button>
|
</PopoverButton>
|
||||||
|
|
||||||
<Transition
|
<Transition
|
||||||
as={Fragment}
|
as={Fragment}
|
||||||
@ -228,7 +238,7 @@ export function Header({ ctaButtons }: HeaderProps): ReactElement {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<Transition.Root show={isOpen} as={Fragment}>
|
<Transition show={isOpen} as={Fragment}>
|
||||||
<Dialog
|
<Dialog
|
||||||
as="div"
|
as="div"
|
||||||
className="relative z-10"
|
className="relative z-10"
|
||||||
@ -238,7 +248,7 @@ export function Header({ ctaButtons }: HeaderProps): ReactElement {
|
|||||||
<div className="fixed inset-0 overflow-hidden">
|
<div className="fixed inset-0 overflow-hidden">
|
||||||
<div className="absolute inset-0 overflow-hidden">
|
<div className="absolute inset-0 overflow-hidden">
|
||||||
<div className="pointer-events-none fixed inset-y-0 right-0 flex max-w-full">
|
<div className="pointer-events-none fixed inset-y-0 right-0 flex max-w-full">
|
||||||
<Transition.Child
|
<TransitionChild
|
||||||
as={Fragment}
|
as={Fragment}
|
||||||
enter="transform transition ease-in-out duration-250 sm:duration-500"
|
enter="transform transition ease-in-out duration-250 sm:duration-500"
|
||||||
enterFrom="translate-x-full"
|
enterFrom="translate-x-full"
|
||||||
@ -247,11 +257,11 @@ export function Header({ ctaButtons }: HeaderProps): ReactElement {
|
|||||||
leaveFrom="translate-x-0"
|
leaveFrom="translate-x-0"
|
||||||
leaveTo="translate-x-full"
|
leaveTo="translate-x-full"
|
||||||
>
|
>
|
||||||
<Dialog.Panel className="pointer-events-auto w-screen">
|
<DialogPanel className="pointer-events-auto w-screen">
|
||||||
<div className="flex h-full flex-col overflow-y-scroll bg-white py-6 shadow-xl dark:bg-slate-900">
|
<div className="flex h-full flex-col overflow-y-scroll bg-white py-6 shadow-xl dark:bg-slate-900">
|
||||||
<div className="px-4 sm:px-6">
|
<div className="px-4 sm:px-6">
|
||||||
<div className="flex items-start justify-between">
|
<div className="flex items-start justify-between">
|
||||||
<Dialog.Title>
|
<DialogTitle>
|
||||||
<Link
|
<Link
|
||||||
href="/"
|
href="/"
|
||||||
className="flex items-center text-slate-900 dark:text-white"
|
className="flex items-center text-slate-900 dark:text-white"
|
||||||
@ -269,7 +279,7 @@ export function Header({ ctaButtons }: HeaderProps): ReactElement {
|
|||||||
</svg>
|
</svg>
|
||||||
<span className="sr-only">Nx</span>
|
<span className="sr-only">Nx</span>
|
||||||
</Link>
|
</Link>
|
||||||
</Dialog.Title>
|
</DialogTitle>
|
||||||
<div className="ml-3 flex h-7 items-center">
|
<div className="ml-3 flex h-7 items-center">
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
@ -321,7 +331,7 @@ export function Header({ ctaButtons }: HeaderProps): ReactElement {
|
|||||||
<Disclosure as="div">
|
<Disclosure as="div">
|
||||||
{({ open }) => (
|
{({ open }) => (
|
||||||
<>
|
<>
|
||||||
<Disclosure.Button
|
<DisclosureButton
|
||||||
className={cx(
|
className={cx(
|
||||||
open
|
open
|
||||||
? 'text-blue-500 dark:text-sky-500'
|
? 'text-blue-500 dark:text-sky-500'
|
||||||
@ -339,7 +349,7 @@ export function Header({ ctaButtons }: HeaderProps): ReactElement {
|
|||||||
'h-3 w-3 transition duration-150 ease-in-out group-hover:text-blue-500 dark:group-hover:text-sky-500'
|
'h-3 w-3 transition duration-150 ease-in-out group-hover:text-blue-500 dark:group-hover:text-sky-500'
|
||||||
)}
|
)}
|
||||||
/>
|
/>
|
||||||
</Disclosure.Button>
|
</DisclosureButton>
|
||||||
<Disclosure.Panel
|
<Disclosure.Panel
|
||||||
as="ul"
|
as="ul"
|
||||||
className="space-y-1 pb-2"
|
className="space-y-1 pb-2"
|
||||||
@ -399,13 +409,13 @@ export function Header({ ctaButtons }: HeaderProps): ReactElement {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Dialog.Panel>
|
</DialogPanel>
|
||||||
</Transition.Child>
|
</TransitionChild>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</Transition.Root>
|
</Transition>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,10 @@
|
|||||||
'use client';
|
'use client';
|
||||||
import { Dialog, Transition } from '@headlessui/react';
|
import {
|
||||||
|
Dialog,
|
||||||
|
DialogPanel,
|
||||||
|
Transition,
|
||||||
|
TransitionChild,
|
||||||
|
} from '@headlessui/react';
|
||||||
import { XMarkIcon } from '@heroicons/react/24/outline';
|
import { XMarkIcon } from '@heroicons/react/24/outline';
|
||||||
import { AlgoliaSearch } from '@nx/nx-dev/feature-search';
|
import { AlgoliaSearch } from '@nx/nx-dev/feature-search';
|
||||||
import { Menu, MenuItem, MenuSection } from '@nx/nx-dev/models-menu';
|
import { Menu, MenuItem, MenuSection } from '@nx/nx-dev/models-menu';
|
||||||
@ -257,10 +262,10 @@ export function SidebarMobile({
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Transition.Root show={navIsOpen} as={Fragment}>
|
<Transition show={navIsOpen} as={Fragment}>
|
||||||
<Dialog as="div" className="relative z-40" onClose={() => void 0}>
|
<Dialog as="div" className="relative z-40" onClose={() => void 0}>
|
||||||
<div className="fixed inset-0 z-40 flex">
|
<div className="fixed inset-0 z-40 flex">
|
||||||
<Transition.Child
|
<TransitionChild
|
||||||
as={Fragment}
|
as={Fragment}
|
||||||
enter="transition ease-in-out duration-300 transform"
|
enter="transition ease-in-out duration-300 transform"
|
||||||
enterFrom="-translate-x-full"
|
enterFrom="-translate-x-full"
|
||||||
@ -269,7 +274,7 @@ export function SidebarMobile({
|
|||||||
leaveFrom="translate-x-0"
|
leaveFrom="translate-x-0"
|
||||||
leaveTo="-translate-x-full"
|
leaveTo="-translate-x-full"
|
||||||
>
|
>
|
||||||
<Dialog.Panel className="relative flex w-full flex-col overflow-y-auto bg-white dark:bg-slate-900">
|
<DialogPanel className="relative flex w-full flex-col overflow-y-auto bg-white dark:bg-slate-900">
|
||||||
{/*HEADER*/}
|
{/*HEADER*/}
|
||||||
<div className="flex w-full items-center border-b border-slate-200 bg-slate-50 p-4 lg:hidden dark:border-slate-700 dark:bg-slate-800/60">
|
<div className="flex w-full items-center border-b border-slate-200 bg-slate-50 p-4 lg:hidden dark:border-slate-700 dark:bg-slate-800/60">
|
||||||
{/*CLOSE BUTTON*/}
|
{/*CLOSE BUTTON*/}
|
||||||
@ -354,10 +359,10 @@ export function SidebarMobile({
|
|||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Dialog.Panel>
|
</DialogPanel>
|
||||||
</Transition.Child>
|
</TransitionChild>
|
||||||
</div>
|
</div>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
</Transition.Root>
|
</Transition>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,11 @@
|
|||||||
'use client';
|
'use client';
|
||||||
import { Listbox, Transition } from '@headlessui/react';
|
import {
|
||||||
|
Listbox,
|
||||||
|
ListboxButton,
|
||||||
|
ListboxOption,
|
||||||
|
ListboxOptions,
|
||||||
|
Transition,
|
||||||
|
} from '@headlessui/react';
|
||||||
import { ChevronUpDownIcon } from '@heroicons/react/24/solid';
|
import { ChevronUpDownIcon } from '@heroicons/react/24/solid';
|
||||||
import Link from 'next/link';
|
import Link from 'next/link';
|
||||||
import { Fragment, JSX, useState } from 'react';
|
import { Fragment, JSX, useState } from 'react';
|
||||||
@ -33,7 +39,7 @@ export function VersionPicker(): JSX.Element {
|
|||||||
<Listbox value={selected}>
|
<Listbox value={selected}>
|
||||||
{({ open }) => (
|
{({ open }) => (
|
||||||
<div className="relative">
|
<div className="relative">
|
||||||
<Listbox.Button
|
<ListboxButton
|
||||||
className={
|
className={
|
||||||
'relative w-full cursor-pointer rounded-lg border border-slate-200 py-2 pl-3 pr-10 text-left font-medium focus:outline-none focus-visible:border-blue-500 focus-visible:ring-2 focus-visible:ring-white focus-visible:ring-opacity-75 focus-visible:ring-offset-2 focus-visible:ring-offset-blue-300 sm:text-sm dark:border-slate-700'
|
'relative w-full cursor-pointer rounded-lg border border-slate-200 py-2 pl-3 pr-10 text-left font-medium focus:outline-none focus-visible:border-blue-500 focus-visible:ring-2 focus-visible:ring-white focus-visible:ring-opacity-75 focus-visible:ring-offset-2 focus-visible:ring-offset-blue-300 sm:text-sm dark:border-slate-700'
|
||||||
}
|
}
|
||||||
@ -45,7 +51,7 @@ export function VersionPicker(): JSX.Element {
|
|||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
/>
|
/>
|
||||||
</span>
|
</span>
|
||||||
</Listbox.Button>
|
</ListboxButton>
|
||||||
<Transition
|
<Transition
|
||||||
show={open}
|
show={open}
|
||||||
as={Fragment}
|
as={Fragment}
|
||||||
@ -56,14 +62,14 @@ export function VersionPicker(): JSX.Element {
|
|||||||
leaveFrom="transform scale-100 opacity-100"
|
leaveFrom="transform scale-100 opacity-100"
|
||||||
leaveTo="transform scale-95 opacity-0"
|
leaveTo="transform scale-95 opacity-0"
|
||||||
>
|
>
|
||||||
<Listbox.Options
|
<ListboxOptions
|
||||||
static
|
static
|
||||||
className="absolute z-10 mt-1 max-h-60 w-full overflow-auto rounded-sm bg-white py-1 pl-0 text-base shadow-md focus:outline-none sm:text-sm dark:bg-slate-800/90 dark:focus-within:ring-sky-500"
|
className="absolute z-10 mt-1 max-h-60 w-full overflow-auto rounded-sm bg-white py-1 pl-0 text-base shadow-md focus:outline-none sm:text-sm dark:bg-slate-800/90 dark:focus-within:ring-sky-500"
|
||||||
>
|
>
|
||||||
{versionOptions.map((item, idx) => (
|
{versionOptions.map((item, idx) => (
|
||||||
<Listbox.Option
|
<ListboxOption
|
||||||
key={idx}
|
key={idx}
|
||||||
className={({ active }) =>
|
className={() =>
|
||||||
`relative cursor-pointer select-none list-none hover:bg-slate-50 dark:hover:bg-slate-800`
|
`relative cursor-pointer select-none list-none hover:bg-slate-50 dark:hover:bg-slate-800`
|
||||||
}
|
}
|
||||||
value={item}
|
value={item}
|
||||||
@ -80,9 +86,9 @@ export function VersionPicker(): JSX.Element {
|
|||||||
{item.label}
|
{item.label}
|
||||||
</Link>
|
</Link>
|
||||||
)}
|
)}
|
||||||
</Listbox.Option>
|
</ListboxOption>
|
||||||
))}
|
))}
|
||||||
</Listbox.Options>
|
</ListboxOptions>
|
||||||
</Transition>
|
</Transition>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@ -7,7 +7,12 @@ import {
|
|||||||
SVGProps,
|
SVGProps,
|
||||||
type ReactElement,
|
type ReactElement,
|
||||||
} from 'react';
|
} from 'react';
|
||||||
import { Dialog, Transition } from '@headlessui/react';
|
import {
|
||||||
|
Dialog,
|
||||||
|
DialogPanel,
|
||||||
|
Transition,
|
||||||
|
TransitionChild,
|
||||||
|
} from '@headlessui/react';
|
||||||
import {
|
import {
|
||||||
ChevronLeftIcon,
|
ChevronLeftIcon,
|
||||||
ChevronRightIcon,
|
ChevronRightIcon,
|
||||||
@ -377,7 +382,7 @@ export function CustomerTestimonialCarousel(): ReactElement {
|
|||||||
onClose={() => setIsOpen(false)}
|
onClose={() => setIsOpen(false)}
|
||||||
className="relative z-50"
|
className="relative z-50"
|
||||||
>
|
>
|
||||||
<Transition.Child
|
<TransitionChild
|
||||||
as={Fragment}
|
as={Fragment}
|
||||||
enter="ease-out duration-300"
|
enter="ease-out duration-300"
|
||||||
enterFrom="opacity-0"
|
enterFrom="opacity-0"
|
||||||
@ -387,11 +392,11 @@ export function CustomerTestimonialCarousel(): ReactElement {
|
|||||||
leaveTo="opacity-0"
|
leaveTo="opacity-0"
|
||||||
>
|
>
|
||||||
<div className="fixed inset-0 bg-black/70 backdrop-blur-sm" />
|
<div className="fixed inset-0 bg-black/70 backdrop-blur-sm" />
|
||||||
</Transition.Child>
|
</TransitionChild>
|
||||||
|
|
||||||
<div className="fixed inset-0 overflow-y-auto">
|
<div className="fixed inset-0 overflow-y-auto">
|
||||||
<div className="flex min-h-full items-center justify-center p-4">
|
<div className="flex min-h-full items-center justify-center p-4">
|
||||||
<Transition.Child
|
<TransitionChild
|
||||||
as={Fragment}
|
as={Fragment}
|
||||||
enter="ease-out duration-300"
|
enter="ease-out duration-300"
|
||||||
enterFrom="opacity-0 scale-95"
|
enterFrom="opacity-0 scale-95"
|
||||||
@ -400,7 +405,7 @@ export function CustomerTestimonialCarousel(): ReactElement {
|
|||||||
leaveFrom="opacity-100 scale-100"
|
leaveFrom="opacity-100 scale-100"
|
||||||
leaveTo="opacity-0 scale-95"
|
leaveTo="opacity-0 scale-95"
|
||||||
>
|
>
|
||||||
<Dialog.Panel className="w-full max-w-4xl overflow-hidden rounded-2xl bg-black shadow-2xl">
|
<DialogPanel className="w-full max-w-4xl overflow-hidden rounded-2xl bg-black shadow-2xl">
|
||||||
<div className="aspect-video">
|
<div className="aspect-video">
|
||||||
<iframe
|
<iframe
|
||||||
width="100%"
|
width="100%"
|
||||||
@ -412,8 +417,8 @@ export function CustomerTestimonialCarousel(): ReactElement {
|
|||||||
className="h-full w-full"
|
className="h-full w-full"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</Dialog.Panel>
|
</DialogPanel>
|
||||||
</Transition.Child>
|
</TransitionChild>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
|
|||||||
@ -1,4 +1,9 @@
|
|||||||
import { Dialog, Transition } from '@headlessui/react';
|
import {
|
||||||
|
Dialog,
|
||||||
|
DialogPanel,
|
||||||
|
Transition,
|
||||||
|
TransitionChild,
|
||||||
|
} from '@headlessui/react';
|
||||||
import { Fragment, ReactElement } from 'react';
|
import { Fragment, ReactElement } from 'react';
|
||||||
|
|
||||||
export interface VideoModalProps {
|
export interface VideoModalProps {
|
||||||
@ -22,7 +27,7 @@ export function VideoModal({
|
|||||||
onClose={onClose}
|
onClose={onClose}
|
||||||
className="relative z-50"
|
className="relative z-50"
|
||||||
>
|
>
|
||||||
<Transition.Child
|
<TransitionChild
|
||||||
as={Fragment}
|
as={Fragment}
|
||||||
enter="ease-out duration-300"
|
enter="ease-out duration-300"
|
||||||
enterFrom="opacity-0"
|
enterFrom="opacity-0"
|
||||||
@ -32,10 +37,10 @@ export function VideoModal({
|
|||||||
leaveTo="opacity-0"
|
leaveTo="opacity-0"
|
||||||
>
|
>
|
||||||
<div className="fixed inset-0 bg-black/70 backdrop-blur-sm" />
|
<div className="fixed inset-0 bg-black/70 backdrop-blur-sm" />
|
||||||
</Transition.Child>
|
</TransitionChild>
|
||||||
<div className="fixed inset-0 overflow-y-auto">
|
<div className="fixed inset-0 overflow-y-auto">
|
||||||
<div className="flex min-h-full items-center justify-center p-4 text-center">
|
<div className="flex min-h-full items-center justify-center p-4 text-center">
|
||||||
<Transition.Child
|
<TransitionChild
|
||||||
as={Fragment}
|
as={Fragment}
|
||||||
enter="ease-out duration-300"
|
enter="ease-out duration-300"
|
||||||
enterFrom="opacity-0 scale-95"
|
enterFrom="opacity-0 scale-95"
|
||||||
@ -44,7 +49,7 @@ export function VideoModal({
|
|||||||
leaveFrom="opacity-100 scale-100"
|
leaveFrom="opacity-100 scale-100"
|
||||||
leaveTo="opacity-0 scale-95"
|
leaveTo="opacity-0 scale-95"
|
||||||
>
|
>
|
||||||
<Dialog.Panel className="relative w-auto transform overflow-hidden rounded-2xl border border-white/10 bg-black text-left align-middle shadow-xl transition-all focus:outline-none">
|
<DialogPanel className="relative w-auto transform overflow-hidden rounded-2xl border border-white/10 bg-black text-left align-middle shadow-xl transition-all focus:outline-none">
|
||||||
<iframe
|
<iframe
|
||||||
width="808"
|
width="808"
|
||||||
height="454"
|
height="454"
|
||||||
@ -55,8 +60,8 @@ export function VideoModal({
|
|||||||
allowFullScreen
|
allowFullScreen
|
||||||
className="max-w-full"
|
className="max-w-full"
|
||||||
/>
|
/>
|
||||||
</Dialog.Panel>
|
</DialogPanel>
|
||||||
</Transition.Child>
|
</TransitionChild>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
|
|||||||
@ -1,4 +1,10 @@
|
|||||||
import { Listbox, Transition } from '@headlessui/react';
|
import {
|
||||||
|
Listbox,
|
||||||
|
ListboxButton,
|
||||||
|
ListboxOption,
|
||||||
|
ListboxOptions,
|
||||||
|
Transition,
|
||||||
|
} from '@headlessui/react';
|
||||||
import { ChevronUpDownIcon } from '@heroicons/react/24/solid';
|
import { ChevronUpDownIcon } from '@heroicons/react/24/solid';
|
||||||
import { Fragment, JSX } from 'react';
|
import { Fragment, JSX } from 'react';
|
||||||
|
|
||||||
@ -20,7 +26,7 @@ export function Selector<T = {}>(props: SelectorProps<T>): JSX.Element {
|
|||||||
{({ open }) => (
|
{({ open }) => (
|
||||||
<>
|
<>
|
||||||
<div className="relative">
|
<div className="relative">
|
||||||
<Listbox.Button
|
<ListboxButton
|
||||||
className={
|
className={
|
||||||
'relative w-full cursor-pointer border border-slate-200 py-2 pl-3 pr-10 text-left font-medium focus:outline-none focus-visible:border-blue-500 focus-visible:ring-2 focus-visible:ring-white focus-visible:ring-opacity-75 focus-visible:ring-offset-2 focus-visible:ring-offset-blue-300 sm:text-sm dark:border-slate-700' +
|
'relative w-full cursor-pointer border border-slate-200 py-2 pl-3 pr-10 text-left font-medium focus:outline-none focus-visible:border-blue-500 focus-visible:ring-2 focus-visible:ring-white focus-visible:ring-opacity-75 focus-visible:ring-offset-2 focus-visible:ring-offset-blue-300 sm:text-sm dark:border-slate-700' +
|
||||||
(props.className ? ` ${props.className}` : '')
|
(props.className ? ` ${props.className}` : '')
|
||||||
@ -38,7 +44,7 @@ export function Selector<T = {}>(props: SelectorProps<T>): JSX.Element {
|
|||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
/>
|
/>
|
||||||
</span>
|
</span>
|
||||||
</Listbox.Button>
|
</ListboxButton>
|
||||||
<Transition
|
<Transition
|
||||||
show={open}
|
show={open}
|
||||||
as={Fragment}
|
as={Fragment}
|
||||||
@ -49,28 +55,26 @@ export function Selector<T = {}>(props: SelectorProps<T>): JSX.Element {
|
|||||||
leaveFrom="transform scale-100 opacity-100"
|
leaveFrom="transform scale-100 opacity-100"
|
||||||
leaveTo="transform scale-95 opacity-0"
|
leaveTo="transform scale-95 opacity-0"
|
||||||
>
|
>
|
||||||
<Listbox.Options
|
<ListboxOptions
|
||||||
static
|
static
|
||||||
className="absolute z-10 mt-1 max-h-60 w-full overflow-auto rounded-sm bg-white py-1 pl-0 text-base shadow-md focus:outline-none sm:text-sm dark:bg-slate-800/60 dark:focus-within:ring-sky-500"
|
className="absolute z-10 mt-1 max-h-60 w-full overflow-auto rounded-sm bg-white py-1 pl-0 text-base shadow-md focus:outline-none sm:text-sm dark:bg-slate-800/60 dark:focus-within:ring-sky-500"
|
||||||
>
|
>
|
||||||
{props.items.map((item, personIdx) => (
|
{props.items.map((item, personIdx) => (
|
||||||
<Listbox.Option
|
<ListboxOption
|
||||||
key={personIdx}
|
key={personIdx}
|
||||||
className={({ active }) =>
|
className={() =>
|
||||||
`relative cursor-pointer select-none list-none px-3 py-2 hover:bg-slate-50 dark:hover:bg-slate-800`
|
`relative cursor-pointer select-none list-none px-3 py-2 hover:bg-slate-50 dark:hover:bg-slate-800`
|
||||||
}
|
}
|
||||||
value={item}
|
value={item}
|
||||||
>
|
>
|
||||||
{({ selected, active }) => (
|
{() => (
|
||||||
<>
|
<span className={'block truncate font-medium'}>
|
||||||
<span className={'block truncate font-medium'}>
|
{item.label}
|
||||||
{item.label}
|
</span>
|
||||||
</span>
|
|
||||||
</>
|
|
||||||
)}
|
)}
|
||||||
</Listbox.Option>
|
</ListboxOption>
|
||||||
))}
|
))}
|
||||||
</Listbox.Options>
|
</ListboxOptions>
|
||||||
</Transition>
|
</Transition>
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
|
|||||||
@ -1,4 +1,9 @@
|
|||||||
import { Dialog, Transition } from '@headlessui/react';
|
import {
|
||||||
|
Dialog,
|
||||||
|
DialogPanel,
|
||||||
|
Transition,
|
||||||
|
TransitionChild,
|
||||||
|
} from '@headlessui/react';
|
||||||
import { PlayIcon } from '@heroicons/react/24/outline';
|
import { PlayIcon } from '@heroicons/react/24/outline';
|
||||||
import { AnimateValue, Marquee } from '@nx/nx-dev/ui-animations';
|
import { AnimateValue, Marquee } from '@nx/nx-dev/ui-animations';
|
||||||
import {
|
import {
|
||||||
@ -197,7 +202,7 @@ export function ApplicationCard(): JSX.Element {
|
|||||||
onClose={() => setIsOpen(false)}
|
onClose={() => setIsOpen(false)}
|
||||||
className="relative z-10"
|
className="relative z-10"
|
||||||
>
|
>
|
||||||
<Transition.Child
|
<TransitionChild
|
||||||
as={Fragment}
|
as={Fragment}
|
||||||
enter="ease-out duration-300"
|
enter="ease-out duration-300"
|
||||||
enterFrom="opacity-0"
|
enterFrom="opacity-0"
|
||||||
@ -207,10 +212,10 @@ export function ApplicationCard(): JSX.Element {
|
|||||||
leaveTo="opacity-0"
|
leaveTo="opacity-0"
|
||||||
>
|
>
|
||||||
<div className="fixed inset-0 bg-black/25 backdrop-blur-sm" />
|
<div className="fixed inset-0 bg-black/25 backdrop-blur-sm" />
|
||||||
</Transition.Child>
|
</TransitionChild>
|
||||||
<div className="fixed inset-0 overflow-y-auto">
|
<div className="fixed inset-0 overflow-y-auto">
|
||||||
<div className="flex min-h-full items-center justify-center p-4 text-center">
|
<div className="flex min-h-full items-center justify-center p-4 text-center">
|
||||||
<Transition.Child
|
<TransitionChild
|
||||||
as={Fragment}
|
as={Fragment}
|
||||||
enter="ease-out duration-300"
|
enter="ease-out duration-300"
|
||||||
enterFrom="opacity-0 scale-95"
|
enterFrom="opacity-0 scale-95"
|
||||||
@ -219,7 +224,7 @@ export function ApplicationCard(): JSX.Element {
|
|||||||
leaveFrom="opacity-100 scale-100"
|
leaveFrom="opacity-100 scale-100"
|
||||||
leaveTo="opacity-0 scale-95"
|
leaveTo="opacity-0 scale-95"
|
||||||
>
|
>
|
||||||
<Dialog.Panel className="relative w-auto transform overflow-hidden rounded-2xl border border-slate-600 text-left align-middle shadow-xl transition-all focus:outline-none dark:border-slate-800">
|
<DialogPanel className="relative w-auto transform overflow-hidden rounded-2xl border border-slate-600 text-left align-middle shadow-xl transition-all focus:outline-none dark:border-slate-800">
|
||||||
<iframe
|
<iframe
|
||||||
width="812"
|
width="812"
|
||||||
height="468"
|
height="468"
|
||||||
@ -230,8 +235,8 @@ export function ApplicationCard(): JSX.Element {
|
|||||||
allowFullScreen
|
allowFullScreen
|
||||||
className="max-w-full"
|
className="max-w-full"
|
||||||
/>
|
/>
|
||||||
</Dialog.Panel>
|
</DialogPanel>
|
||||||
</Transition.Child>
|
</TransitionChild>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
'use client';
|
'use client';
|
||||||
import { ButtonLink, SectionHeading, Strong } from '@nx/nx-dev/ui-common';
|
import { ButtonLink, SectionHeading, Strong } from '@nx/nx-dev/ui-common';
|
||||||
import { ReactElement, useState, useEffect } from 'react';
|
import { ReactElement, useState, useEffect } from 'react';
|
||||||
import { Dialog, Transition } from '@headlessui/react';
|
import { Dialog, DialogPanel, Transition } from '@headlessui/react';
|
||||||
import Link from 'next/link';
|
import Link from 'next/link';
|
||||||
|
|
||||||
const MOBILE_BREAKPOINT = 768;
|
const MOBILE_BREAKPOINT = 768;
|
||||||
@ -85,7 +85,7 @@ export function Hero(): ReactElement {
|
|||||||
<div className="fixed inset-0 bg-black/25 backdrop-blur-sm" />
|
<div className="fixed inset-0 bg-black/25 backdrop-blur-sm" />
|
||||||
<div className="fixed inset-0 overflow-y-auto">
|
<div className="fixed inset-0 overflow-y-auto">
|
||||||
<div className="flex min-h-full items-center justify-center p-4 text-center">
|
<div className="flex min-h-full items-center justify-center p-4 text-center">
|
||||||
<Dialog.Panel className="relative w-auto transform overflow-hidden rounded-2xl border border-slate-600 text-left align-middle shadow-xl transition-all focus:outline-none dark:border-slate-800">
|
<DialogPanel className="relative w-auto transform overflow-hidden rounded-2xl border border-slate-600 text-left align-middle shadow-xl transition-all focus:outline-none dark:border-slate-800">
|
||||||
<iframe
|
<iframe
|
||||||
width="812"
|
width="812"
|
||||||
height="456"
|
height="456"
|
||||||
@ -95,7 +95,7 @@ export function Hero(): ReactElement {
|
|||||||
allowFullScreen
|
allowFullScreen
|
||||||
className="max-w-full"
|
className="max-w-full"
|
||||||
/>
|
/>
|
||||||
</Dialog.Panel>
|
</DialogPanel>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</Dialog>
|
</Dialog>
|
||||||
|
|||||||
@ -1,5 +1,10 @@
|
|||||||
'use client';
|
'use client';
|
||||||
import { Disclosure, Transition } from '@headlessui/react';
|
import {
|
||||||
|
Disclosure,
|
||||||
|
DisclosureButton,
|
||||||
|
DisclosurePanel,
|
||||||
|
Transition,
|
||||||
|
} from '@headlessui/react';
|
||||||
import { ChevronDownIcon } from '@heroicons/react/24/outline';
|
import { ChevronDownIcon } from '@heroicons/react/24/outline';
|
||||||
import { SectionHeading } from '@nx/nx-dev/ui-common';
|
import { SectionHeading } from '@nx/nx-dev/ui-common';
|
||||||
import { cx } from '@nx/nx-dev/ui-primitives';
|
import { cx } from '@nx/nx-dev/ui-primitives';
|
||||||
@ -145,7 +150,7 @@ export function Faq(): ReactElement {
|
|||||||
{({ open }) => (
|
{({ open }) => (
|
||||||
<>
|
<>
|
||||||
<dt className="text-lg">
|
<dt className="text-lg">
|
||||||
<Disclosure.Button className="flex w-full items-start justify-between text-left text-slate-400">
|
<DisclosureButton className="flex w-full items-start justify-between text-left text-slate-400">
|
||||||
<span className="font-medium text-slate-800 dark:text-slate-300">
|
<span className="font-medium text-slate-800 dark:text-slate-300">
|
||||||
{faq.question}
|
{faq.question}
|
||||||
</span>
|
</span>
|
||||||
@ -158,7 +163,7 @@ export function Faq(): ReactElement {
|
|||||||
aria-hidden="true"
|
aria-hidden="true"
|
||||||
/>
|
/>
|
||||||
</span>
|
</span>
|
||||||
</Disclosure.Button>
|
</DisclosureButton>
|
||||||
</dt>
|
</dt>
|
||||||
<Transition
|
<Transition
|
||||||
enter="transition duration-100 ease-out"
|
enter="transition duration-100 ease-out"
|
||||||
@ -168,11 +173,11 @@ export function Faq(): ReactElement {
|
|||||||
leaveFrom="transform translate-y-0 opacity-100"
|
leaveFrom="transform translate-y-0 opacity-100"
|
||||||
leaveTo="transform -translate-y-6 opacity-0"
|
leaveTo="transform -translate-y-6 opacity-0"
|
||||||
>
|
>
|
||||||
<Disclosure.Panel as="dd" className="mt-2 pr-12">
|
<DisclosurePanel as="dd" className="mt-2 pr-12">
|
||||||
<p className="text-base text-slate-500 dark:text-slate-400">
|
<p className="text-base text-slate-500 dark:text-slate-400">
|
||||||
{faq.answer}
|
{faq.answer}
|
||||||
</p>
|
</p>
|
||||||
</Disclosure.Panel>
|
</DisclosurePanel>
|
||||||
</Transition>
|
</Transition>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@ -1,5 +1,12 @@
|
|||||||
'use client';
|
'use client';
|
||||||
import { Listbox, Transition } from '@headlessui/react';
|
import {
|
||||||
|
Label,
|
||||||
|
Listbox,
|
||||||
|
ListboxButton,
|
||||||
|
ListboxOption,
|
||||||
|
ListboxOptions,
|
||||||
|
Transition,
|
||||||
|
} from '@headlessui/react';
|
||||||
import {
|
import {
|
||||||
ComputerDesktopIcon,
|
ComputerDesktopIcon,
|
||||||
MoonIcon,
|
MoonIcon,
|
||||||
@ -48,8 +55,8 @@ export function ThemeSwitcher(): JSX.Element {
|
|||||||
<div className="inline-block">
|
<div className="inline-block">
|
||||||
<div className="group relative flex h-full w-full items-center px-1">
|
<div className="group relative flex h-full w-full items-center px-1">
|
||||||
<Listbox value={theme} onChange={setTheme}>
|
<Listbox value={theme} onChange={setTheme}>
|
||||||
<Listbox.Label className="sr-only">Theme</Listbox.Label>
|
<Label className="sr-only">Theme</Label>
|
||||||
<Listbox.Button
|
<ListboxButton
|
||||||
type="button"
|
type="button"
|
||||||
className={cx(
|
className={cx(
|
||||||
'inline-flex p-2 text-sm font-medium opacity-60 transition-opacity group-hover:opacity-100',
|
'inline-flex p-2 text-sm font-medium opacity-60 transition-opacity group-hover:opacity-100',
|
||||||
@ -57,7 +64,7 @@ export function ThemeSwitcher(): JSX.Element {
|
|||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
{themeMap[theme].icon}
|
{themeMap[theme].icon}
|
||||||
</Listbox.Button>
|
</ListboxButton>
|
||||||
|
|
||||||
<Transition
|
<Transition
|
||||||
as={Fragment}
|
as={Fragment}
|
||||||
@ -68,17 +75,17 @@ export function ThemeSwitcher(): JSX.Element {
|
|||||||
leaveFrom="transform opacity-100 scale-100"
|
leaveFrom="transform opacity-100 scale-100"
|
||||||
leaveTo="transform opacity-0 scale-95"
|
leaveTo="transform opacity-0 scale-95"
|
||||||
>
|
>
|
||||||
<Listbox.Options className="absolute -right-10 top-full z-50 mt-2 w-36 origin-top-right divide-y divide-slate-100 rounded-md bg-white shadow-lg ring-1 ring-black/5 focus:outline-none dark:divide-slate-800 dark:bg-slate-900 dark:ring-white/5">
|
<ListboxOptions className="absolute -right-10 top-full z-50 mt-2 w-36 origin-top-right divide-y divide-slate-100 rounded-md bg-white shadow-lg ring-1 ring-black/5 focus:outline-none dark:divide-slate-800 dark:bg-slate-900 dark:ring-white/5">
|
||||||
{availableThemes.map((t) => (
|
{availableThemes.map((t) => (
|
||||||
<Listbox.Option key={t.value} value={t.value} as={Fragment}>
|
<ListboxOption key={t.value} value={t.value} as={Fragment}>
|
||||||
{({ active, selected }) => (
|
{({ focus, selected }) => (
|
||||||
<li
|
<li
|
||||||
className={cx(
|
className={cx(
|
||||||
'flex cursor-pointer items-center gap-2 px-4 py-2 text-sm',
|
'flex cursor-pointer items-center gap-2 px-4 py-2 text-sm',
|
||||||
{
|
{
|
||||||
'bg-slate-100 dark:bg-slate-800/60': active,
|
'bg-slate-100 dark:bg-slate-800/60': focus,
|
||||||
'text-blue-500 dark:text-sky-500': active || selected,
|
'text-blue-500 dark:text-sky-500': focus || selected,
|
||||||
'text-slate-700 dark:text-slate-400': !active,
|
'text-slate-700 dark:text-slate-400': !focus,
|
||||||
}
|
}
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
@ -86,9 +93,9 @@ export function ThemeSwitcher(): JSX.Element {
|
|||||||
{t.label}
|
{t.label}
|
||||||
</li>
|
</li>
|
||||||
)}
|
)}
|
||||||
</Listbox.Option>
|
</ListboxOption>
|
||||||
))}
|
))}
|
||||||
</Listbox.Options>
|
</ListboxOptions>
|
||||||
</Transition>
|
</Transition>
|
||||||
</Listbox>
|
</Listbox>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -326,7 +326,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@docsearch/react": "^3.3.0",
|
"@docsearch/react": "^3.3.0",
|
||||||
"@headlessui/react": "^1.7.19",
|
"@headlessui/react": "^2.2.0",
|
||||||
"@heroicons/react": "^2.1.4",
|
"@heroicons/react": "^2.1.4",
|
||||||
"@markdoc/markdoc": "0.2.2",
|
"@markdoc/markdoc": "0.2.2",
|
||||||
"@monaco-editor/react": "^4.4.6",
|
"@monaco-editor/react": "^4.4.6",
|
||||||
@ -359,7 +359,7 @@
|
|||||||
"next-seo": "^5.13.0",
|
"next-seo": "^5.13.0",
|
||||||
"node-machine-id": "1.1.12",
|
"node-machine-id": "1.1.12",
|
||||||
"npm-run-path": "^4.0.1",
|
"npm-run-path": "^4.0.1",
|
||||||
"preact": "10.6.4",
|
"preact": "10.25.4",
|
||||||
"react": "18.3.1",
|
"react": "18.3.1",
|
||||||
"react-copy-to-clipboard": "^5.1.0",
|
"react-copy-to-clipboard": "^5.1.0",
|
||||||
"react-dom": "18.3.1",
|
"react-dom": "18.3.1",
|
||||||
|
|||||||
121
pnpm-lock.yaml
generated
121
pnpm-lock.yaml
generated
@ -16,8 +16,8 @@ importers:
|
|||||||
specifier: ^3.3.0
|
specifier: ^3.3.0
|
||||||
version: 3.6.1(@algolia/client-search@5.5.2)(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.2)
|
version: 3.6.1(@algolia/client-search@5.5.2)(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.17.2)
|
||||||
'@headlessui/react':
|
'@headlessui/react':
|
||||||
specifier: ^1.7.19
|
specifier: ^2.2.0
|
||||||
version: 1.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
version: 2.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
'@heroicons/react':
|
'@heroicons/react':
|
||||||
specifier: ^2.1.4
|
specifier: ^2.1.4
|
||||||
version: 2.1.5(react@18.3.1)
|
version: 2.1.5(react@18.3.1)
|
||||||
@ -115,8 +115,8 @@ importers:
|
|||||||
specifier: ^4.0.1
|
specifier: ^4.0.1
|
||||||
version: 4.0.1
|
version: 4.0.1
|
||||||
preact:
|
preact:
|
||||||
specifier: 10.6.4
|
specifier: 10.25.4
|
||||||
version: 10.6.4
|
version: 10.25.4
|
||||||
react:
|
react:
|
||||||
specifier: 18.3.1
|
specifier: 18.3.1
|
||||||
version: 18.3.1
|
version: 18.3.1
|
||||||
@ -3698,6 +3698,12 @@ packages:
|
|||||||
react: '>=16.8.0'
|
react: '>=16.8.0'
|
||||||
react-dom: '>=16.8.0'
|
react-dom: '>=16.8.0'
|
||||||
|
|
||||||
|
'@floating-ui/react@0.26.28':
|
||||||
|
resolution: {integrity: sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.8.0'
|
||||||
|
react-dom: '>=16.8.0'
|
||||||
|
|
||||||
'@floating-ui/react@0.26.6':
|
'@floating-ui/react@0.26.6':
|
||||||
resolution: {integrity: sha512-FFDAuSlRwb8CY4/VvYio/wwk/0339B257yRpKwNOjcHWNYL/fgjl1KUvT3K6ZZ4WDbBWYc7Km4ITMuPZrS8omg==}
|
resolution: {integrity: sha512-FFDAuSlRwb8CY4/VvYio/wwk/0339B257yRpKwNOjcHWNYL/fgjl1KUvT3K6ZZ4WDbBWYc7Km4ITMuPZrS8omg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -3714,6 +3720,13 @@ packages:
|
|||||||
react: ^16 || ^17 || ^18
|
react: ^16 || ^17 || ^18
|
||||||
react-dom: ^16 || ^17 || ^18
|
react-dom: ^16 || ^17 || ^18
|
||||||
|
|
||||||
|
'@headlessui/react@2.2.0':
|
||||||
|
resolution: {integrity: sha512-RzCEg+LXsuI7mHiSomsu/gBJSjpupm6A1qIZ5sWjd7JhARNlMiSA4kKfJpCKwU9tE+zMRterhhrP74PvfJrpXQ==}
|
||||||
|
engines: {node: '>=10'}
|
||||||
|
peerDependencies:
|
||||||
|
react: ^18 || ^19 || ^19.0.0-rc
|
||||||
|
react-dom: ^18 || ^19 || ^19.0.0-rc
|
||||||
|
|
||||||
'@heroicons/react@2.1.5':
|
'@heroicons/react@2.1.5':
|
||||||
resolution: {integrity: sha512-FuzFN+BsHa+7OxbvAERtgBTNeZpUjgM/MIizfVkSCL2/edriN0Hx/DWRCR//aPYwO5QX/YlgLGXk+E3PcfZwjA==}
|
resolution: {integrity: sha512-FuzFN+BsHa+7OxbvAERtgBTNeZpUjgM/MIizfVkSCL2/edriN0Hx/DWRCR//aPYwO5QX/YlgLGXk+E3PcfZwjA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -5631,6 +5644,27 @@ packages:
|
|||||||
'@popperjs/core@2.11.8':
|
'@popperjs/core@2.11.8':
|
||||||
resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
|
resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
|
||||||
|
|
||||||
|
'@react-aria/focus@3.19.0':
|
||||||
|
resolution: {integrity: sha512-hPF9EXoUQeQl1Y21/rbV2H4FdUR2v+4/I0/vB+8U3bT1CJ+1AFj1hc/rqx2DqEwDlEwOHN+E4+mRahQmlybq0A==}
|
||||||
|
peerDependencies:
|
||||||
|
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
|
||||||
|
|
||||||
|
'@react-aria/interactions@3.22.5':
|
||||||
|
resolution: {integrity: sha512-kMwiAD9E0TQp+XNnOs13yVJghiy8ET8L0cbkeuTgNI96sOAp/63EJ1FSrDf17iD8sdjt41LafwX/dKXW9nCcLQ==}
|
||||||
|
peerDependencies:
|
||||||
|
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
|
||||||
|
|
||||||
|
'@react-aria/ssr@3.9.7':
|
||||||
|
resolution: {integrity: sha512-GQygZaGlmYjmYM+tiNBA5C6acmiDWF52Nqd40bBp0Znk4M4hP+LTmI0lpI1BuKMw45T8RIhrAsICIfKwZvi2Gg==}
|
||||||
|
engines: {node: '>= 12'}
|
||||||
|
peerDependencies:
|
||||||
|
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
|
||||||
|
|
||||||
|
'@react-aria/utils@3.26.0':
|
||||||
|
resolution: {integrity: sha512-LkZouGSjjQ0rEqo4XJosS4L3YC/zzQkfRM3KoqK6fUOmUJ9t0jQ09WjiF+uOoG9u+p30AVg3TrZRUWmoTS+koQ==}
|
||||||
|
peerDependencies:
|
||||||
|
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
|
||||||
|
|
||||||
'@react-spring/animated@9.6.1':
|
'@react-spring/animated@9.6.1':
|
||||||
resolution: {integrity: sha512-ls/rJBrAqiAYozjLo5EPPLLOb1LM0lNVQcXODTC1SMtS6DbuBCPaKco5svFUQFMP2dso3O+qcC4k9FsKc0KxMQ==}
|
resolution: {integrity: sha512-ls/rJBrAqiAYozjLo5EPPLLOb1LM0lNVQcXODTC1SMtS6DbuBCPaKco5svFUQFMP2dso3O+qcC4k9FsKc0KxMQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -5687,6 +5721,11 @@ packages:
|
|||||||
'@react-spring/types@9.7.4':
|
'@react-spring/types@9.7.4':
|
||||||
resolution: {integrity: sha512-iQVztO09ZVfsletMiY+DpT/JRiBntdsdJ4uqk3UJFhrhS8mIC9ZOZbmfGSRs/kdbNPQkVyzucceDicQ/3Mlj9g==}
|
resolution: {integrity: sha512-iQVztO09ZVfsletMiY+DpT/JRiBntdsdJ4uqk3UJFhrhS8mIC9ZOZbmfGSRs/kdbNPQkVyzucceDicQ/3Mlj9g==}
|
||||||
|
|
||||||
|
'@react-stately/utils@3.10.5':
|
||||||
|
resolution: {integrity: sha512-iMQSGcpaecghDIh3mZEpZfoFH3ExBwTtuBEcvZ2XnGzCgQjeYXcMdIUwAfVQLXFTdHUHGF6Gu6/dFrYsCzySBQ==}
|
||||||
|
peerDependencies:
|
||||||
|
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
|
||||||
|
|
||||||
'@react-three/drei@9.112.0':
|
'@react-three/drei@9.112.0':
|
||||||
resolution: {integrity: sha512-te+4tcNiRv3QizD04cg25oX51uUMVG5Y3iUaIX8tKi8aW3j7UM6XCFSKVYNOiT6P+d5h/ruSd5naX7oFvp3QOQ==}
|
resolution: {integrity: sha512-te+4tcNiRv3QizD04cg25oX51uUMVG5Y3iUaIX8tKi8aW3j7UM6XCFSKVYNOiT6P+d5h/ruSd5naX7oFvp3QOQ==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -5723,6 +5762,11 @@ packages:
|
|||||||
react-native:
|
react-native:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
'@react-types/shared@3.26.0':
|
||||||
|
resolution: {integrity: sha512-6FuPqvhmjjlpEDLTiYx29IJCbCNWPlsyO+ZUmCUXzhUv2ttShOXfw8CmeHWHftT/b2KweAWuzqSlfeXPR76jpw==}
|
||||||
|
peerDependencies:
|
||||||
|
react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
|
||||||
|
|
||||||
'@reduxjs/toolkit@1.9.0':
|
'@reduxjs/toolkit@1.9.0':
|
||||||
resolution: {integrity: sha512-ak11IrjYcUXRqlhNPwnz6AcvA2ynJTu8PzDbbqQw4a3xR4KZtgiqbNblQD+10CRbfK4+5C79SOyxnT9dhBqFnA==}
|
resolution: {integrity: sha512-ak11IrjYcUXRqlhNPwnz6AcvA2ynJTu8PzDbbqQw4a3xR4KZtgiqbNblQD+10CRbfK4+5C79SOyxnT9dhBqFnA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@ -8675,6 +8719,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
|
resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
|
||||||
engines: {node: '>=0.8'}
|
engines: {node: '>=0.8'}
|
||||||
|
|
||||||
|
clsx@2.1.1:
|
||||||
|
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
|
||||||
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
cluster-key-slot@1.1.2:
|
cluster-key-slot@1.1.2:
|
||||||
resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==}
|
resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
@ -14503,8 +14551,8 @@ packages:
|
|||||||
potpack@1.0.2:
|
potpack@1.0.2:
|
||||||
resolution: {integrity: sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==}
|
resolution: {integrity: sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==}
|
||||||
|
|
||||||
preact@10.6.4:
|
preact@10.25.4:
|
||||||
resolution: {integrity: sha512-WyosM7pxGcndU8hY0OQlLd54tOU+qmG45QXj2dAYrL11HoyU/EzOSTlpJsirbBr1QW7lICxSsVJJmcmUglovHQ==}
|
resolution: {integrity: sha512-jLdZDb+Q+odkHJ+MpW/9U5cODzqnB+fy2EiHSZES7ldV5LK7yjlVzTp7R8Xy6W6y75kfK8iWYtFVH7lvjwrCMA==}
|
||||||
|
|
||||||
prelude-ls@1.2.1:
|
prelude-ls@1.2.1:
|
||||||
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
|
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
|
||||||
@ -20539,6 +20587,14 @@ snapshots:
|
|||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
react-dom: 18.3.1(react@18.3.1)
|
react-dom: 18.3.1(react@18.3.1)
|
||||||
|
|
||||||
|
'@floating-ui/react@0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
|
||||||
|
dependencies:
|
||||||
|
'@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
|
'@floating-ui/utils': 0.2.8
|
||||||
|
react: 18.3.1
|
||||||
|
react-dom: 18.3.1(react@18.3.1)
|
||||||
|
tabbable: 6.2.0
|
||||||
|
|
||||||
'@floating-ui/react@0.26.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
|
'@floating-ui/react@0.26.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
'@floating-ui/react-dom': 2.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
@ -20556,6 +20612,15 @@ snapshots:
|
|||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
react-dom: 18.3.1(react@18.3.1)
|
react-dom: 18.3.1(react@18.3.1)
|
||||||
|
|
||||||
|
'@headlessui/react@2.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
|
||||||
|
dependencies:
|
||||||
|
'@floating-ui/react': 0.26.28(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
|
'@react-aria/focus': 3.19.0(react@18.3.1)
|
||||||
|
'@react-aria/interactions': 3.22.5(react@18.3.1)
|
||||||
|
'@tanstack/react-virtual': 3.10.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||||
|
react: 18.3.1
|
||||||
|
react-dom: 18.3.1(react@18.3.1)
|
||||||
|
|
||||||
'@heroicons/react@2.1.5(react@18.3.1)':
|
'@heroicons/react@2.1.5(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
react: 18.3.1
|
react: 18.3.1
|
||||||
@ -23358,6 +23423,37 @@ snapshots:
|
|||||||
|
|
||||||
'@popperjs/core@2.11.8': {}
|
'@popperjs/core@2.11.8': {}
|
||||||
|
|
||||||
|
'@react-aria/focus@3.19.0(react@18.3.1)':
|
||||||
|
dependencies:
|
||||||
|
'@react-aria/interactions': 3.22.5(react@18.3.1)
|
||||||
|
'@react-aria/utils': 3.26.0(react@18.3.1)
|
||||||
|
'@react-types/shared': 3.26.0(react@18.3.1)
|
||||||
|
'@swc/helpers': 0.5.11
|
||||||
|
clsx: 2.1.1
|
||||||
|
react: 18.3.1
|
||||||
|
|
||||||
|
'@react-aria/interactions@3.22.5(react@18.3.1)':
|
||||||
|
dependencies:
|
||||||
|
'@react-aria/ssr': 3.9.7(react@18.3.1)
|
||||||
|
'@react-aria/utils': 3.26.0(react@18.3.1)
|
||||||
|
'@react-types/shared': 3.26.0(react@18.3.1)
|
||||||
|
'@swc/helpers': 0.5.11
|
||||||
|
react: 18.3.1
|
||||||
|
|
||||||
|
'@react-aria/ssr@3.9.7(react@18.3.1)':
|
||||||
|
dependencies:
|
||||||
|
'@swc/helpers': 0.5.11
|
||||||
|
react: 18.3.1
|
||||||
|
|
||||||
|
'@react-aria/utils@3.26.0(react@18.3.1)':
|
||||||
|
dependencies:
|
||||||
|
'@react-aria/ssr': 3.9.7(react@18.3.1)
|
||||||
|
'@react-stately/utils': 3.10.5(react@18.3.1)
|
||||||
|
'@react-types/shared': 3.26.0(react@18.3.1)
|
||||||
|
'@swc/helpers': 0.5.11
|
||||||
|
clsx: 2.1.1
|
||||||
|
react: 18.3.1
|
||||||
|
|
||||||
'@react-spring/animated@9.6.1(react@18.3.1)':
|
'@react-spring/animated@9.6.1(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@react-spring/shared': 9.6.1(react@18.3.1)
|
'@react-spring/shared': 9.6.1(react@18.3.1)
|
||||||
@ -23425,6 +23521,11 @@ snapshots:
|
|||||||
|
|
||||||
'@react-spring/types@9.7.4': {}
|
'@react-spring/types@9.7.4': {}
|
||||||
|
|
||||||
|
'@react-stately/utils@3.10.5(react@18.3.1)':
|
||||||
|
dependencies:
|
||||||
|
'@swc/helpers': 0.5.11
|
||||||
|
react: 18.3.1
|
||||||
|
|
||||||
'@react-three/drei@9.112.0(@react-three/fiber@8.17.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.166.1))(@types/react@18.3.1)(@types/three@0.166.0)(immer@9.0.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.166.1)':
|
'@react-three/drei@9.112.0(@react-three/fiber@8.17.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.166.1))(@types/react@18.3.1)(@types/three@0.166.0)(immer@9.0.21)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(three@0.166.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.25.6
|
'@babel/runtime': 7.25.6
|
||||||
@ -23479,6 +23580,10 @@ snapshots:
|
|||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
react-dom: 18.3.1(react@18.3.1)
|
react-dom: 18.3.1(react@18.3.1)
|
||||||
|
|
||||||
|
'@react-types/shared@3.26.0(react@18.3.1)':
|
||||||
|
dependencies:
|
||||||
|
react: 18.3.1
|
||||||
|
|
||||||
'@reduxjs/toolkit@1.9.0(react-redux@8.0.5(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1)':
|
'@reduxjs/toolkit@1.9.0(react-redux@8.0.5(@types/react-dom@18.3.0)(@types/react@18.3.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(redux@4.2.1))(react@18.3.1)':
|
||||||
dependencies:
|
dependencies:
|
||||||
immer: 9.0.21
|
immer: 9.0.21
|
||||||
@ -27174,6 +27279,8 @@ snapshots:
|
|||||||
|
|
||||||
clone@1.0.4: {}
|
clone@1.0.4: {}
|
||||||
|
|
||||||
|
clsx@2.1.1: {}
|
||||||
|
|
||||||
cluster-key-slot@1.1.2: {}
|
cluster-key-slot@1.1.2: {}
|
||||||
|
|
||||||
co@4.6.0: {}
|
co@4.6.0: {}
|
||||||
@ -34582,7 +34689,7 @@ snapshots:
|
|||||||
|
|
||||||
potpack@1.0.2: {}
|
potpack@1.0.2: {}
|
||||||
|
|
||||||
preact@10.6.4: {}
|
preact@10.25.4: {}
|
||||||
|
|
||||||
prelude-ls@1.2.1: {}
|
prelude-ls@1.2.1: {}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user