From 5eec18e38359250b7a3604ee769fc8179a37c49b Mon Sep 17 00:00:00 2001 From: Patrick Hulin Date: Wed, 20 Nov 2024 09:51:39 -0500 Subject: [PATCH 1/6] incomplete chakra 3 update. --- package.json | 8 +- src/App.tsx | 61 +- src/Layout.tsx | 24 +- src/components/AdviceTip.tsx | 28 +- src/components/AdviceTooltip.tsx | 15 +- src/components/AdviceTooltipIcon.tsx | 26 +- src/components/AsyncButton.tsx | 25 +- src/components/AsyncLink.tsx | 19 +- src/components/AutocompleteInput.tsx | 19 +- src/components/BrandHeading.tsx | 8 +- src/components/ChatButton.tsx | 8 +- src/components/Chevrons.tsx | 16 +- src/components/ChevronsListIcon.tsx | 19 +- src/components/HeaderButton.tsx | 2 +- src/components/Line.tsx | 2 +- src/components/LinkBlock.tsx | 2 +- src/components/Monsters.tsx | 10 +- src/components/PrefsButton.tsx | 6 +- src/components/RefreshButton.tsx | 10 +- src/components/Section.tsx | 8 +- src/components/SkillButtons.tsx | 2 +- src/components/Tile.tsx | 32 +- src/components/ui/button.tsx | 40 + src/components/ui/close-button.tsx | 18 + src/components/ui/field.tsx | 33 + src/components/ui/toaster.tsx | 43 + src/components/ui/tooltip.tsx | 46 + src/prefs/App.tsx | 4 +- src/prefs/components/Layout.tsx | 2 +- src/prefs/components/OverrideRow.tsx | 14 +- src/prefs/components/OverrideTable.tsx | 10 +- src/prefs/components/ValidatedInput.tsx | 71 +- src/sections/NagSection.tsx | 20 +- src/sections/Timeline.tsx | 42 +- src/sections/misc/FreeFights.tsx | 4 +- src/sections/misc/Leveling.tsx | 28 +- src/sections/misc/LuckyAdventures.tsx | 6 +- src/sections/quests/Delay.tsx | 12 +- src/sections/quests/HeroKeys.tsx | 14 +- src/sections/quests/Level13.tsx | 4 +- src/sections/quests/Level6.tsx | 12 +- src/sections/quests/Level7.tsx | 18 +- src/sections/quests/Manor.tsx | 22 +- src/sections/quests/level11/HiddenCity.tsx | 2 +- src/sections/quests/level12/Farm.tsx | 12 +- src/sections/resources/2016/Thanksgarden.tsx | 6 +- src/sections/resources/2020/Cartography.tsx | 18 +- src/sections/resources/2020/Melodramedary.tsx | 12 +- src/sections/resources/2021/EmotionChip.tsx | 13 +- .../2021/IndustrialFireExtinguisher.tsx | 26 +- src/sections/resources/2022/Autumnaton.tsx | 16 +- .../resources/2022/CombatLoversLocket.tsx | 8 +- src/sections/resources/2022/Cookbookbat.tsx | 18 +- .../resources/2022/CosmicBowlingBall.tsx | 2 +- .../resources/2022/DesignerSweatpants.tsx | 18 +- src/sections/resources/2022/JuneCleaver.tsx | 20 +- src/sections/resources/2022/ModelTrainSet.tsx | 12 +- src/sections/resources/2022/TinyStillsuit.tsx | 34 +- .../resources/2023/AGuideToBurningLeaves.tsx | 26 +- src/sections/resources/2023/AugustScepter.tsx | 46 +- .../resources/2023/CandyCaneSwordCane.tsx | 40 +- src/sections/resources/2023/CinchoDeMayo.tsx | 18 +- .../resources/2023/ClosedCircuitPayPhone.tsx | 8 +- .../resources/2023/CursedMonkeyPaw.tsx | 16 +- .../resources/2023/MrStore2002Catalog.tsx | 32 +- .../resources/2023/PatrioticEagle.tsx | 8 +- src/sections/resources/2023/RockGarden.tsx | 22 +- .../resources/2024/AprilingBandHelmet.tsx | 18 +- src/sections/resources/2024/BatWings.tsx | 10 +- src/sections/resources/2024/MayamCalendar.tsx | 16 +- src/sections/resources/2024/MiniKiwi.tsx | 2 +- .../resources/2024/SeptEmberCenser.tsx | 18 +- src/sections/resources/path/AvantGuard.tsx | 8 +- src/sections/resources/skill/Numberology.tsx | 10 +- src/theme.ts | 24 + yarn.lock | 1387 ++++++++++++----- 76 files changed, 1794 insertions(+), 945 deletions(-) create mode 100644 src/components/ui/button.tsx create mode 100644 src/components/ui/close-button.tsx create mode 100644 src/components/ui/field.tsx create mode 100644 src/components/ui/toaster.tsx create mode 100644 src/components/ui/tooltip.tsx create mode 100644 src/theme.ts diff --git a/package.json b/package.json index d2f8e187..22f84647 100644 --- a/package.json +++ b/package.json @@ -5,11 +5,9 @@ "type": "module", "packageManager": "yarn@4.5.1", "dependencies": { - "@chakra-ui/icons": "^2.1.1", - "@chakra-ui/react": "^2.8.2", + "@chakra-ui/react": "^3.1.2", "@chakra-ui/system": "^2.6.2", "@emotion/react": "^11.13.3", - "@emotion/styled": "^11.13.0", "@eslint/compat": "^1.1.1", "@vitejs/plugin-react": "^4.3.1", "dataloader": "^2.2.2", @@ -18,16 +16,18 @@ "eslint-plugin-libram": "^0.4.17", "eslint-plugin-react-hooks": "^5.0.0", "eslint-plugin-unused-imports": "^4.1.4", - "framer-motion": "^11.3.29", "globals": "^15.9.0", "html-entities": "^2.5.2", "kolmafia": "npm:tome-kolmafia-mock@5.28118.0", "libram": "^0.9.18", + "lucide-react": "^0.460.0", + "next-themes": "^0.4.3", "postcss": "^8.4.41", "prettier": "^3.3.3", "react": "^18.3.1", "react-dom": "^18.3.1", "react-error-boundary": "^4.0.13", + "react-icons": "^5.3.0", "react-router-dom": "^6.26.1", "tome-kolmafia-lib": "^5.28118.0", "tome-kolmafia-react": "^0.2.5", diff --git a/src/App.tsx b/src/App.tsx index e7d6383c..4e5b9f68 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,48 +1,33 @@ -import { ChakraProvider, extendTheme } from "@chakra-ui/react"; +import { ChakraProvider } from "@chakra-ui/react"; import { RefreshContextProvider } from "tome-kolmafia-react"; import NagContextProvider from "./contexts/NagContextProvider"; import Layout from "./Layout"; +import { system } from "./theme"; -const bulleted = { - container: { - paddingTop: "0.125rem", - paddingLeft: "1.25rem", - }, - item: { - textIndent: "-0.375rem", - _before: { - content: '"●"', - verticalAlign: "middle", - fontFamily: "Arial, Helvetica, sans-serif", - fontSize: "0.75rem", - lineHeight: 0, - display: "inline-block", - width: "0.375rem", - // This is a hackish tweak... - marginTop: "-3px", - }, - }, -}; - -const theme = extendTheme({ - lineHeights: { - none: 1, - shorter: 1.05, - short: 1.1, - base: 1.15, - tall: 1.25, - taller: 1.5, - }, - components: { - List: { - variants: { bulleted }, - }, - }, -}); +// const bulleted = { +// container: { +// paddingTop: "0.125rem", +// paddingLeft: "1.25rem", +// }, +// item: { +// textIndent: "-0.375rem", +// _before: { +// content: '"●"', +// verticalAlign: "middle", +// fontFamily: "Arial, Helvetica, sans-serif", +// fontSize: "0.75rem", +// lineHeight: 0, +// display: "inline-block", +// width: "0.375rem", +// // This is a hackish tweak... +// marginTop: "-3px", +// }, +// }, +// }; const App = () => ( - + diff --git a/src/Layout.tsx b/src/Layout.tsx index fc3359a1..d51f985b 100644 --- a/src/Layout.tsx +++ b/src/Layout.tsx @@ -1,11 +1,4 @@ -import { - Box, - Container, - Divider, - Flex, - Stack, - useToast, -} from "@chakra-ui/react"; +import { Box, Container, Flex, Separator, Stack } from "@chakra-ui/react"; import { useCallback, useContext, useEffect, useState } from "react"; import { setGlobalErrorHandler } from "tome-kolmafia-lib"; import { RefreshContext } from "tome-kolmafia-react"; @@ -15,6 +8,7 @@ import ChatButton from "./components/ChatButton"; import LocationBar from "./components/LocationBar"; import PrefsButton from "./components/PrefsButton"; import RefreshButton from "./components/RefreshButton"; +import { toaster, Toaster } from "./components/ui/toaster"; import { addDevelopmentListeners } from "./prefs/addListeners"; import NagSection from "./sections/NagSection"; import QuestSection from "./sections/QuestSection"; @@ -52,26 +46,23 @@ const Layout = () => { } }, [triggerHardRefresh]); - const toast = useToast(); useEffect(() => { setGlobalErrorHandler((err) => { console.error(err); - toast({ + toaster.error({ title: "Error updating.", description: err !== null && (typeof err === "object" || typeof err === "string") ? err.toString() : "Unknown error.", - status: "error", duration: 10000, - isClosable: true, - containerStyle: { maxW: "95vw" }, }); }); - }, [toast]); + }, []); return ( { { - + @@ -109,6 +100,7 @@ const Layout = () => { /> + ); }; diff --git a/src/components/AdviceTip.tsx b/src/components/AdviceTip.tsx index 5e37a905..9cb3a0f6 100644 --- a/src/components/AdviceTip.tsx +++ b/src/components/AdviceTip.tsx @@ -1,19 +1,21 @@ -import { Tooltip, TooltipProps } from "@chakra-ui/react"; import { FC } from "react"; -const AdviceTip: FC = ({ ...props }) => ( +import { Tooltip, TooltipProps } from "./ui/tooltip"; + +const AdviceTip: FC = ({ content, ...props }) => ( ); diff --git a/src/components/AdviceTooltip.tsx b/src/components/AdviceTooltip.tsx index 53467255..56fb03d9 100644 --- a/src/components/AdviceTooltip.tsx +++ b/src/components/AdviceTooltip.tsx @@ -1,11 +1,12 @@ -import { Box, Text, TooltipProps } from "@chakra-ui/react"; +import { Box, Text } from "@chakra-ui/react"; import { FC, ReactNode } from "react"; import AdviceTip from "./AdviceTip"; +import { TooltipProps } from "./ui/tooltip"; interface AdviceTooltipProps extends Omit { text: string | JSX.Element; - label: ReactNode; + content: ReactNode; } /** * A tooltip generated on text for a quick descriptive tooltip. @@ -14,23 +15,23 @@ interface AdviceTooltipProps extends Omit { * @returns A FC Tooltip object where the label generates the tooltip on hoverover. */ -const AdviceTooltip: FC = ({ text, label, ...props }) => { +const AdviceTooltip: FC = ({ text, content, ...props }) => { const toolTip = ( - + {typeof text === "string" ? {text} : text} ); return ( - + - {label} + {content} ); diff --git a/src/components/AdviceTooltipIcon.tsx b/src/components/AdviceTooltipIcon.tsx index d64e5719..845b3175 100644 --- a/src/components/AdviceTooltipIcon.tsx +++ b/src/components/AdviceTooltipIcon.tsx @@ -1,19 +1,12 @@ -import { InfoIcon, Text } from "@chakra-ui/icons"; -import { - ComponentWithAs, - HStack, - Icon, - IconProps, - Image, - VStack, -} from "@chakra-ui/react"; +import { HStack, Icon, Image, Text, VStack } from "@chakra-ui/react"; +import { Info } from "lucide-react"; import { FC } from "react"; import AdviceTip from "./AdviceTip"; interface AdviceTooltipIconProps { text: string; - icon?: ComponentWithAs<"svg", IconProps>; + icon?: typeof Info; } /** * A tooltip generated on an icon hoverover with a skull that states whatever text you want for the player. @@ -22,7 +15,10 @@ interface AdviceTooltipIconProps { * @returns A FC Tooltip object where the displayed icon generates the tooltip on hoverover. */ -const AdviceTooltipIcon: FC = ({ text, icon }) => { +const AdviceTooltipIcon: FC = ({ + text, + icon: TooltipIcon = Info, +}) => { const toolTip = ( = ({ text, icon }) => { boxSize="30px" fit="contain" /> - + {text} @@ -40,8 +36,10 @@ const AdviceTooltipIcon: FC = ({ text, icon }) => { ); return ( - - + + + + ); }; diff --git a/src/components/AsyncButton.tsx b/src/components/AsyncButton.tsx index f13e179c..9cbd1c86 100644 --- a/src/components/AsyncButton.tsx +++ b/src/components/AsyncButton.tsx @@ -1,6 +1,6 @@ -import { ButtonProps, forwardRef, Tooltip, useToast } from "@chakra-ui/react"; +import { ButtonProps } from "@chakra-ui/react"; import { - FC, + forwardRef, MouseEvent, useCallback, useContext, @@ -11,17 +11,18 @@ import { remoteCliExecute } from "tome-kolmafia-lib"; import { RefreshContext } from "tome-kolmafia-react"; import HeaderButton from "./HeaderButton"; +import { toaster } from "./ui/toaster"; +import { Tooltip } from "./ui/tooltip"; export interface AsyncButtonProps extends ButtonProps { href?: string; command?: string; } -const AsyncButton: FC = forwardRef( +const AsyncButton = forwardRef( ({ href, command, onClick, children, ...props }, ref) => { const { triggerHardRefresh } = useContext(RefreshContext); const [isLoading, setIsLoading] = useState(false); - const toast = useToast(); const onClickWithCommand = useMemo( () => @@ -29,17 +30,15 @@ const AsyncButton: FC = forwardRef( ? async () => { const result = await remoteCliExecute(command); if (result === false) { - toast({ + toaster.error({ title: "Command failed.", description: `Failed to execute "${command}".`, - status: "error", duration: 5000, - isClosable: true, }); } } : onClick, - [command, onClick, toast], + [command, onClick], ); const handleClick = useCallback( @@ -57,19 +56,13 @@ const AsyncButton: FC = forwardRef( return ( - {command ? ( - - {children} - - ) : ( - children - )} + {command ? {children} : children} ); }, diff --git a/src/components/AsyncLink.tsx b/src/components/AsyncLink.tsx index e015ff99..4ff83b1d 100644 --- a/src/components/AsyncLink.tsx +++ b/src/components/AsyncLink.tsx @@ -1,6 +1,5 @@ -import { Link, LinkProps, Spinner, Tooltip, useToast } from "@chakra-ui/react"; +import { Link, LinkProps, Spinner } from "@chakra-ui/react"; import { - FC, forwardRef, MouseEvent, useCallback, @@ -11,16 +10,18 @@ import { import { remoteCliExecute } from "tome-kolmafia-lib"; import { RefreshContext } from "tome-kolmafia-react"; +import { toaster } from "./ui/toaster"; +import { Tooltip } from "./ui/tooltip"; + export interface AsyncLinkProps extends Omit { href?: string; command?: string; } -const AsyncLink: FC = forwardRef( +const AsyncLink = forwardRef( ({ href, command, onClick, children, ...props }, ref) => { const { triggerHardRefresh } = useContext(RefreshContext); const [isLoading, setIsLoading] = useState(false); - const toast = useToast(); const onClickWithCommand = useMemo( () => @@ -28,17 +29,15 @@ const AsyncLink: FC = forwardRef( ? async () => { const result = await remoteCliExecute(command); if (result === false) { - toast({ + toaster.error({ title: "Command failed.", description: `Failed to execute "${command}".`, - status: "error", duration: 5000, - isClosable: true, }); } } : onClick, - [command, onClick, toast], + [command, onClick], ); const handleClick = useCallback( @@ -70,9 +69,7 @@ const AsyncLink: FC = forwardRef( {children} ) : command ? ( - - {link} - + {link} ) : ( link ); diff --git a/src/components/AutocompleteInput.tsx b/src/components/AutocompleteInput.tsx index 5f30d01e..684c86e1 100644 --- a/src/components/AutocompleteInput.tsx +++ b/src/components/AutocompleteInput.tsx @@ -2,10 +2,9 @@ import { Input, InputProps, List, - ListItem, - Popover, PopoverBody, PopoverContent, + PopoverRoot, PopoverTrigger, } from "@chakra-ui/react"; import { @@ -106,10 +105,10 @@ const AutocompleteInput = forwardRef( ); return ( - = 3 && matchingValues.length > 0} + = 3 && matchingValues.length > 0} autoFocus={false} - placement="top" + positioning={{ placement: "top" }} > ( - + {matchingValues.map((name, index) => { const highlight = autoIndex !== null && mod(autoIndex, matchingValues.length) === index; return ( - ( borderRadius="3px" > {name} - + ); })} - + - + ); }, ); diff --git a/src/components/BrandHeading.tsx b/src/components/BrandHeading.tsx index d7a9087d..8526d307 100644 --- a/src/components/BrandHeading.tsx +++ b/src/components/BrandHeading.tsx @@ -2,16 +2,16 @@ import { Heading, Image } from "@chakra-ui/react"; import { FC } from "react"; const BrandHeading: FC = () => ( - + Y O diff --git a/src/components/ChatButton.tsx b/src/components/ChatButton.tsx index e97a5ea8..ed825146 100644 --- a/src/components/ChatButton.tsx +++ b/src/components/ChatButton.tsx @@ -1,4 +1,4 @@ -import { ChevronLeftIcon, ChevronRightIcon } from "@chakra-ui/icons"; +import { ChevronLeft, ChevronRight } from "lucide-react"; import { ButtonProps, IconButton } from "@chakra-ui/react"; import { FC } from "react"; @@ -8,14 +8,16 @@ export interface ChatButtonProps extends ButtonProps { const ChatButton: FC = ({ direction, ...props }) => ( : } + asChild aria-label="Refresh" size="xs" fontSize="20px" variant="outline" backgroundColor="white" {...props} - /> + > + {direction === "left" ? : } + ); export default ChatButton; diff --git a/src/components/Chevrons.tsx b/src/components/Chevrons.tsx index de6c9ce2..21efa2a5 100644 --- a/src/components/Chevrons.tsx +++ b/src/components/Chevrons.tsx @@ -1,28 +1,30 @@ -import { ChevronRightIcon } from "@chakra-ui/icons"; -import { Text, TextProps } from "@chakra-ui/react"; +import { Icon, Text, TextProps } from "@chakra-ui/react"; +import { ChevronRight } from "lucide-react"; import { FC } from "react"; -interface ChevronProps extends TextProps { +export interface ChevronsProps extends TextProps { usesLeft: number; totalUses: number; } /** * Generate fading chevrons to describe # of a resource left out of total casts - * @returns Three objects colored by availability of the resource + * @returns Three objects colored by availability of the resource * @param usesLeft How many casts/uses you have left of the resource * @param totalUses Total number of uses the users has */ -const Chevrons: FC = ({ usesLeft, totalUses, ...props }) => { +const Chevrons: FC = ({ usesLeft, totalUses, ...props }) => { return ( {new Array(totalUses).fill(null).map((_, index) => ( - + > + + ))} ); diff --git a/src/components/ChevronsListIcon.tsx b/src/components/ChevronsListIcon.tsx index bfb5d37e..c6f2762e 100644 --- a/src/components/ChevronsListIcon.tsx +++ b/src/components/ChevronsListIcon.tsx @@ -1,21 +1,22 @@ -import { IconProps, ListIcon } from "@chakra-ui/react"; +import { List } from "@chakra-ui/react"; import { FC } from "react"; -import Chevrons from "./Chevrons"; +import Chevrons, { ChevronsProps } from "./Chevrons"; -interface ChevronsListIconProps extends IconProps { +interface ChevronsListProps extends ChevronsProps { usesLeft: number; totalUses: number; } -const ChevronsListIcon: FC = (props) => ( - = (props) => ( + + > + + ); -export default ChevronsListIcon; +export default ChevronsList; diff --git a/src/components/HeaderButton.tsx b/src/components/HeaderButton.tsx index 169795b9..5a241728 100644 --- a/src/components/HeaderButton.tsx +++ b/src/components/HeaderButton.tsx @@ -1,7 +1,7 @@ -import { Button, ButtonProps } from "@chakra-ui/react"; import { forwardRef } from "react"; import MainLink from "./MainLink"; +import { Button, ButtonProps } from "./ui/button"; interface HeaderButtonProps extends ButtonProps { href?: string; diff --git a/src/components/Line.tsx b/src/components/Line.tsx index 6c80ce57..39b84659 100644 --- a/src/components/Line.tsx +++ b/src/components/Line.tsx @@ -29,7 +29,7 @@ const Line: FC = ({ command = `equip ${equipItem.identifierString}`; } return ( - + {command ? ( {children} ) : href ? ( diff --git a/src/components/LinkBlock.tsx b/src/components/LinkBlock.tsx index 0535559d..02530222 100644 --- a/src/components/LinkBlock.tsx +++ b/src/components/LinkBlock.tsx @@ -5,7 +5,7 @@ import MainLink, { MainLinkProps } from "./MainLink"; const LinkBlock: FC = ({ children, ...props }) => ( - {children} + {children} ); diff --git a/src/components/Monsters.tsx b/src/components/Monsters.tsx index ec6ce129..a98f0845 100644 --- a/src/components/Monsters.tsx +++ b/src/components/Monsters.tsx @@ -1,4 +1,4 @@ -import { Text, Tooltip } from "@chakra-ui/react"; +import { Text } from "@chakra-ui/react"; import { appearanceRates, getMonsters, @@ -13,6 +13,8 @@ import { FC } from "react"; import { separate } from "../util/text"; +import { Tooltip } from "./ui/tooltip"; + export interface MonstersLineProps { location: Location; target?: Monster | Monster[]; @@ -62,11 +64,7 @@ const Monsters: FC = ({ location, target = [] }) => { return targets.includes(monster) ? ( {text} ) : banisher ? ( - + {text} diff --git a/src/components/PrefsButton.tsx b/src/components/PrefsButton.tsx index c059f32f..734c353e 100644 --- a/src/components/PrefsButton.tsx +++ b/src/components/PrefsButton.tsx @@ -1,4 +1,4 @@ -import { EditIcon } from "@chakra-ui/icons"; +import { EditIcon } from "lucide-react"; import { IconButton } from "@chakra-ui/react"; import { FC } from "react"; @@ -11,14 +11,14 @@ const PrefsButton: FC = () => { mainpane.location.href = "http://localhost:3000/yorick/prefs"; } }} - icon={} + asChild aria-label="Open Overrides" size="xs" fontSize="15px" variant="outline" backgroundColor="white" > - overrides + ); }; diff --git a/src/components/RefreshButton.tsx b/src/components/RefreshButton.tsx index 33f59e7e..eeb6960d 100644 --- a/src/components/RefreshButton.tsx +++ b/src/components/RefreshButton.tsx @@ -1,17 +1,19 @@ -import { RepeatIcon } from "@chakra-ui/icons"; import { ButtonProps, IconButton } from "@chakra-ui/react"; +import { RepeatIcon } from "lucide-react"; import { FC } from "react"; const RefreshButton: FC = (props) => ( } + asChild aria-label="Refresh" size="xs" - fontSize="15px" + p={1.5} variant="outline" backgroundColor="white" {...props} - /> + > + + ); export default RefreshButton; diff --git a/src/components/Section.tsx b/src/components/Section.tsx index 09052c05..c2bd0fd4 100644 --- a/src/components/Section.tsx +++ b/src/components/Section.tsx @@ -7,12 +7,10 @@ export interface SectionProps extends StackProps { } const Section: FC = ({ name, children, ...props }) => ( - - - {name} - + + {name} = ({ return ( cast diff --git a/src/components/Tile.tsx b/src/components/Tile.tsx index 4f44c925..f161886e 100644 --- a/src/components/Tile.tsx +++ b/src/components/Tile.tsx @@ -1,4 +1,3 @@ -import { ChevronDownIcon, ChevronUpIcon } from "@chakra-ui/icons"; import { Box, Heading, @@ -9,6 +8,7 @@ import { } from "@chakra-ui/react"; import { decode } from "html-entities"; import { Familiar, Item, Skill } from "kolmafia"; +import { ChevronDown, ChevronUp } from "lucide-react"; import { FC, ReactNode, useState } from "react"; import useLocalStorage from "../hooks/useLocalStorage"; @@ -89,9 +89,9 @@ const Tile: FC = ({ const imageSize = collapsed || disabled ? "20px" : "30px"; const tileContents = ( - <> - - + + + {!collapsed && !disabled && !linkEntireTile && href ? ( {heading} ) : ( @@ -99,7 +99,7 @@ const Tile: FC = ({ )} = ({ {!collapsed && extraLinks} {disabled || nonCollapsible || ( : } + asChild aria-label="Collapse" h={4} minW={4} fontSize="20px" variant="ghost" onClick={() => setCollapsed((collapsed) => !collapsed)} - /> + > + {collapsed ? : } + )} {!collapsed && !disabled && children} - + ); return ( = ({ /> )} - - {!collapsed && !disabled && linkEntireTile ? ( - {tileContents} - ) : ( - tileContents - )} - + {!collapsed && !disabled && linkEntireTile ? ( + {tileContents} + ) : ( + tileContents + )} ); }; diff --git a/src/components/ui/button.tsx b/src/components/ui/button.tsx new file mode 100644 index 00000000..cd9eddf9 --- /dev/null +++ b/src/components/ui/button.tsx @@ -0,0 +1,40 @@ +import type { ButtonProps as ChakraButtonProps } from "@chakra-ui/react"; +import { + AbsoluteCenter, + Button as ChakraButton, + Span, + Spinner, +} from "@chakra-ui/react"; +import * as React from "react"; + +interface ButtonLoadingProps { + loading?: boolean; + loadingText?: React.ReactNode; +} + +export interface ButtonProps extends ChakraButtonProps, ButtonLoadingProps {} + +export const Button = React.forwardRef( + (props, ref) => { + const { loading, disabled, loadingText, children, ...rest } = props; + return ( + + {loading && !loadingText ? ( + <> + + + + {children} + + ) : loading && loadingText ? ( + <> + + {loadingText} + + ) : ( + children + )} + + ); + }, +); diff --git a/src/components/ui/close-button.tsx b/src/components/ui/close-button.tsx new file mode 100644 index 00000000..abbc5f9a --- /dev/null +++ b/src/components/ui/close-button.tsx @@ -0,0 +1,18 @@ +import type { ButtonProps as ChakraCloseButtonProps } from "@chakra-ui/react"; +import { IconButton as ChakraIconButton } from "@chakra-ui/react"; +import * as React from "react"; +import { LuX } from "react-icons/lu"; + +// eslint-disable-next-line @typescript-eslint/no-empty-object-type +export interface CloseButtonProps extends ChakraCloseButtonProps {} + +export const CloseButton = React.forwardRef< + HTMLButtonElement, + CloseButtonProps +>((props, ref) => { + return ( + + {props.children ?? } + + ); +}); diff --git a/src/components/ui/field.tsx b/src/components/ui/field.tsx new file mode 100644 index 00000000..c600795f --- /dev/null +++ b/src/components/ui/field.tsx @@ -0,0 +1,33 @@ +import { Field as ChakraField } from "@chakra-ui/react"; +import * as React from "react"; + +export interface FieldProps extends Omit { + label?: React.ReactNode; + helperText?: React.ReactNode; + errorText?: React.ReactNode; + optionalText?: React.ReactNode; +} + +export const Field = React.forwardRef( + (props, ref) => { + const { label, children, helperText, errorText, optionalText, ...rest } = + props; + return ( + + {label && ( + + {label} + + + )} + {children} + {helperText && ( + {helperText} + )} + {errorText && ( + {errorText} + )} + + ); + }, +); diff --git a/src/components/ui/toaster.tsx b/src/components/ui/toaster.tsx new file mode 100644 index 00000000..6cf1f567 --- /dev/null +++ b/src/components/ui/toaster.tsx @@ -0,0 +1,43 @@ +"use client"; + +import { + createToaster, + Portal, + Spinner, + Stack, + Toast, + Toaster as ChakraToaster, +} from "@chakra-ui/react"; + +export const toaster = createToaster({ + placement: "bottom-end", + pauseOnPageIdle: true, +}); + +export const Toaster = () => { + return ( + + + {(toast) => ( + + {toast.type === "loading" ? ( + + ) : ( + + )} + + {toast.title && {toast.title}} + {toast.description && ( + {toast.description} + )} + + {toast.action && ( + {toast.action.label} + )} + {toast.meta?.closable && } + + )} + + + ); +}; diff --git a/src/components/ui/tooltip.tsx b/src/components/ui/tooltip.tsx new file mode 100644 index 00000000..daa6dc2d --- /dev/null +++ b/src/components/ui/tooltip.tsx @@ -0,0 +1,46 @@ +import { Portal, Tooltip as ChakraTooltip } from "@chakra-ui/react"; +import * as React from "react"; + +export interface TooltipProps extends ChakraTooltip.RootProps { + showArrow?: boolean; + portalled?: boolean; + portalRef?: React.RefObject; + content: React.ReactNode; + contentProps?: ChakraTooltip.ContentProps; + disabled?: boolean; +} + +export const Tooltip = React.forwardRef( + (props, ref) => { + const { + showArrow, + children, + disabled, + portalled, + content, + contentProps, + portalRef, + ...rest + } = props; + + if (disabled) return children; + + return ( + + {children} + + + + {showArrow && ( + + + + )} + {content} + + + + + ); + }, +); diff --git a/src/prefs/App.tsx b/src/prefs/App.tsx index a64714a6..189736e9 100644 --- a/src/prefs/App.tsx +++ b/src/prefs/App.tsx @@ -1,4 +1,4 @@ -import { ChakraProvider } from "@chakra-ui/react"; +import { ChakraProvider, defaultSystem } from "@chakra-ui/react"; import { RefreshContextProvider } from "tome-kolmafia-react"; import Layout from "./components/Layout"; @@ -8,7 +8,7 @@ import Layout from "./components/Layout"; // egrep -Roh '(get|getProperty|questStep|questStarted|questFinished)\("([_a-zA-Z0-9]+)"\)' src | sed -E 's/.*"([_a-zA-Z0-9]+)".*/\1/' | tr -d '`' | sort -f | uniq | jq -R . | jq -s . > src/prefs/preferences.json const App = () => ( - + diff --git a/src/prefs/components/Layout.tsx b/src/prefs/components/Layout.tsx index 1d6179e6..022c71c9 100644 --- a/src/prefs/components/Layout.tsx +++ b/src/prefs/components/Layout.tsx @@ -112,7 +112,7 @@ const Layout = () => { } return ( - + YORICK Development Overrides = ({ label, override, current }) => { const valid = validValue(validity, value); return ( - - + + {label ?? override} - - + + = ({ label, override, current }) => { minW="6rem" placeholder={current} /> - - + + ); }; diff --git a/src/prefs/components/OverrideTable.tsx b/src/prefs/components/OverrideTable.tsx index 3fc03673..0a44f85c 100644 --- a/src/prefs/components/OverrideTable.tsx +++ b/src/prefs/components/OverrideTable.tsx @@ -1,4 +1,4 @@ -import { Heading, Table, Tbody } from "@chakra-ui/react"; +import { Heading, Table } from "@chakra-ui/react"; import { FC } from "react"; import OverrideRow from "./OverrideRow"; @@ -22,8 +22,8 @@ const OverrideTable: FC = ({ {heading} - - + + {data .filter((item) => !filterRegex || filterRegex.test(getOverride(item))) .map((item) => ( @@ -34,8 +34,8 @@ const OverrideTable: FC = ({ current={getCurrent(item)} /> ))} - -
+ + ); diff --git a/src/prefs/components/ValidatedInput.tsx b/src/prefs/components/ValidatedInput.tsx index 0589d4c1..e574e6f5 100644 --- a/src/prefs/components/ValidatedInput.tsx +++ b/src/prefs/components/ValidatedInput.tsx @@ -1,12 +1,8 @@ -import { CheckIcon, WarningIcon } from "@chakra-ui/icons"; -import { - CloseButton, - Input, - InputGroup, - InputProps, - InputRightElement, - Stack, -} from "@chakra-ui/react"; +import { Group, Input, InputAddon, InputProps, Stack } from "@chakra-ui/react"; +import { Check, CircleAlert } from "lucide-react"; + +import { CloseButton } from "../../components/ui/close-button"; +import { Field } from "../../components/ui/field"; interface ValidatedInputProps extends InputProps { valid: boolean; @@ -23,38 +19,39 @@ const ValidatedInput = ({ const iconProps = props.size === "sm" ? { w: 8, h: 8 } : {}; return ( - - + + + + {valid && nonEmpty && ( - - - + + + )} {!valid && nonEmpty && ( - - - + + + )} - + {setValue && setValue("")} />} ); diff --git a/src/sections/NagSection.tsx b/src/sections/NagSection.tsx index b64c2c13..91223708 100644 --- a/src/sections/NagSection.tsx +++ b/src/sections/NagSection.tsx @@ -1,10 +1,11 @@ -import { Heading, Stack, Tooltip } from "@chakra-ui/react"; +import { Heading, Stack } from "@chakra-ui/react"; import { myDaycount, myTurncount } from "kolmafia"; import { useContext } from "react"; import Section from "../components/Section"; import TileErrorBoundary from "../components/TileErrorBoundary"; import TileImage from "../components/TileImage"; +import { Tooltip } from "../components/ui/tooltip"; import NagContext from "../contexts/NagContext"; import Timeline from "./Timeline"; @@ -43,12 +44,15 @@ const NagSection = () => { .map(([id, { imageUrl, node }]) => ( @@ -57,7 +61,7 @@ const NagSection = () => { )} ) : ( - + Day {myDaycount()} / Turn {myTurncount()} )} diff --git a/src/sections/Timeline.tsx b/src/sections/Timeline.tsx index 97d06117..9fafdea0 100644 --- a/src/sections/Timeline.tsx +++ b/src/sections/Timeline.tsx @@ -1,11 +1,4 @@ -import { - Badge, - BadgeProps, - Stack, - StackProps, - Text, - Tooltip, -} from "@chakra-ui/react"; +import { Badge, BadgeProps, Stack, StackProps, Text } from "@chakra-ui/react"; import { getWorkshed, haveEffect, @@ -23,21 +16,24 @@ import { import { FC, forwardRef } from "react"; import MainLink from "../components/MainLink"; +import { Tooltip } from "../components/ui/tooltip"; import { haveUnrestricted } from "../util/available"; import { inDevMode } from "../util/env"; import { plural } from "../util/text"; -const Pill: FC = forwardRef(({ children, ...props }, ref) => ( - - {children} - -)); +const Pill = forwardRef( + ({ children, ...props }, ref) => ( + + {children} + + ), +); const ENV_COLORS: Record = { X: "gray.600", @@ -73,8 +69,8 @@ const CMCTimeline: FC = () => { counts[maxEnvironment] >= 11 ? ENV_RESULTS[maxEnvironment] : ENV_RESULTS.X; return ( - - + + {environments.map((c, index) => ( { ))} - + {turnsToConsult > 0 ? ( plural(turnsToConsult, "turn") @@ -211,7 +207,7 @@ const Timeline: FC = (props) => { } > {elementsFiltered.map(({ name, turns, color, label }) => ( - + {name} {turns} diff --git a/src/sections/misc/FreeFights.tsx b/src/sections/misc/FreeFights.tsx index 753edf20..1cf3bc5d 100644 --- a/src/sections/misc/FreeFights.tsx +++ b/src/sections/misc/FreeFights.tsx @@ -1,4 +1,3 @@ -import { QuestionOutlineIcon } from "@chakra-ui/icons"; import { availableAmount, canAdventure, @@ -7,6 +6,7 @@ import { myPath, } from "kolmafia"; import { $item, $location, $path, $skill, get } from "libram"; +import { CircleHelp } from "lucide-react"; import { FC } from "react"; import AdviceTooltipIcon from "../../components/AdviceTooltipIcon"; @@ -138,7 +138,7 @@ const FreeFights: FC = () => { decrement your effects. Many of them are scaling fights; by stacking large +mainstat% modifiers, they will give increasing amounts of stats and allow you to level very quickly!`} - icon={QuestionOutlineIcon} + icon={CircleHelp} /> } > diff --git a/src/sections/misc/Leveling.tsx b/src/sections/misc/Leveling.tsx index fc563688..11f90ebe 100644 --- a/src/sections/misc/Leveling.tsx +++ b/src/sections/misc/Leveling.tsx @@ -1,4 +1,4 @@ -import { ListItem, UnorderedList } from "@chakra-ui/react"; +import { List } from "@chakra-ui/react"; import { availableAmount, canInteract, @@ -104,10 +104,10 @@ const Leveling: React.FC = () => { remaining: () => Math.min(3, get("skillLevel144")) - get("_universeCalculated"), render: ({ remaining }) => ( - + {plural(remaining, "numberology use")} ({(multiplier * 89).toFixed(0)}{" "} mainstat). - + ), }, { @@ -116,11 +116,11 @@ const Leveling: React.FC = () => { +haveUnrestricted($item`Bastille Battalion control rig`) - get("_bastilleGames"), render: () => ( - + 1 Bastille use ({(multiplier * 250).toFixed(0)} mainstat). - + ), }, { @@ -137,13 +137,13 @@ const Leveling: React.FC = () => { ); return ( - + {myLevel() >= 9 && !have($item`strange leaflet`) ? ( {text} ) : ( text )} - + ); }, }, @@ -159,7 +159,7 @@ const Leveling: React.FC = () => { const verb = haveBean ? "Plant" : "Find and plant"; const text = `${verb} an enchanted bean${myLevel() >= 10 ? "" : " (at level 10)"}.`; return ( - + {myLevel() >= 10 && haveBean ? ( haveEquipped($item`spring shoes`) ? ( { ) : ( text )} - + ); }, }, @@ -308,25 +308,25 @@ const Leveling: React.FC = () => { )} Can get more cold res from: - + {coldResSources .filter(({ available }) => available()) .map(({ thing, value }) => ( - + {thing.identifierString}{" "} (+ {value ? value() : getModifier("Cold Resistance", thing)}) - + ))} - + )} {total > 0 && ( <> Additional stat sources: - {rendered} + {rendered} )} diff --git a/src/sections/misc/LuckyAdventures.tsx b/src/sections/misc/LuckyAdventures.tsx index 1415cc23..8205ecfc 100644 --- a/src/sections/misc/LuckyAdventures.tsx +++ b/src/sections/misc/LuckyAdventures.tsx @@ -1,4 +1,4 @@ -import { ListItem, UnorderedList } from "@chakra-ui/react"; +import { List } from "@chakra-ui/react"; import { availableAmount, toItem } from "kolmafia"; import { $effect, @@ -210,7 +210,7 @@ const LuckyAdventures: FC = () => { const renderedUses = luckyAdventureUses.map(([name, use]) => { const rendered = use(); - return rendered ? {rendered} : false; + return rendered ? {rendered} : false; }); return ( @@ -223,7 +223,7 @@ const LuckyAdventures: FC = () => { {renderedUses.some((use) => use) ? ( <> Ideas for uses: - {renderedUses} + {renderedUses} ) : ( No ideas for how to use these. Get creative! diff --git a/src/sections/quests/Delay.tsx b/src/sections/quests/Delay.tsx index 12353441..60643246 100644 --- a/src/sections/quests/Delay.tsx +++ b/src/sections/quests/Delay.tsx @@ -1,4 +1,4 @@ -import { ListItem, UnorderedList } from "@chakra-ui/react"; +import { List } from "@chakra-ui/react"; import { canAdventure, Location } from "kolmafia"; import { sum } from "libram"; import { FC } from "react"; @@ -16,18 +16,18 @@ type Details = { zone: Location; remaining: number; available: boolean }; const ZoneList: FC<{ zones: Details[]; }> = ({ zones }) => ( - + {zones.map(({ zone, remaining, available }) => ( - {plural(remaining, "turn")} in {zone.identifierString}. - + ))} - + ); const Delay: FC = () => { @@ -63,7 +63,7 @@ const Delay: FC = () => { } - label="Later zones." + content="Later zones." /> )} diff --git a/src/sections/quests/HeroKeys.tsx b/src/sections/quests/HeroKeys.tsx index 97ef8ff6..25c14035 100644 --- a/src/sections/quests/HeroKeys.tsx +++ b/src/sections/quests/HeroKeys.tsx @@ -1,4 +1,4 @@ -import { Link, ListItem, UnorderedList } from "@chakra-ui/react"; +import { Link, List } from "@chakra-ui/react"; import { availableAmount, canEquip, @@ -169,18 +169,18 @@ const HeroKeys: FC = () => { . You have {skeletonKeyAvailable} keys ({looseTeethCount} teeth,{" "} {skeletonBoneCount} bones). - + {looseTeethSources.map((source, index) => ( - + {source.count} teeth from {source.name}. - + ))} {skeletonBoneSources.map((source, index) => ( - + {source.count} bones from {source.name}. - + ))} - + ), [ diff --git a/src/sections/quests/Level13.tsx b/src/sections/quests/Level13.tsx index cc2aa63e..05d3d6fa 100644 --- a/src/sections/quests/Level13.tsx +++ b/src/sections/quests/Level13.tsx @@ -135,7 +135,7 @@ const Level13: FC = () => { @@ -231,7 +231,7 @@ const Level13: FC = () => { diff --git a/src/sections/quests/Level6.tsx b/src/sections/quests/Level6.tsx index 4e12cbe6..e9e135db 100644 --- a/src/sections/quests/Level6.tsx +++ b/src/sections/quests/Level6.tsx @@ -1,9 +1,9 @@ -import { List, ListIcon, ListItem, Text } from "@chakra-ui/react"; +import { List, Text } from "@chakra-ui/react"; import { combatRateModifier, myHash, myLocation } from "kolmafia"; import { $location, $skill, have, questStep } from "libram"; import { FC } from "react"; -import Chevrons from "../../components/Chevrons"; +import ChevronsListIcon from "../../components/ChevronsListIcon"; import Line from "../../components/Line"; import QuestTile from "../../components/QuestTile"; import { turnsToSeeSingleNoncombatCapped } from "../../util/calc"; @@ -48,11 +48,11 @@ const Level6: FC = () => { expectedThisNc + Math.max(0, 3 - ncCompleted) * turnsToSeeSingleNoncombatCapped(95, 5); return ( - - + + {zoneName}:{" "} {`${zoneQueue.length}/4 NCs (~${expected.toFixed(1)} turns remaining)`} - + ); }); @@ -81,7 +81,7 @@ const Level6: FC = () => { Your -combat% is less than 25%, you want more! )} - {listItems} + {listItems} , ], [2, Conduct the ritual to finish the quest.], diff --git a/src/sections/quests/Level7.tsx b/src/sections/quests/Level7.tsx index db4b8808..ffdc7ddd 100644 --- a/src/sections/quests/Level7.tsx +++ b/src/sections/quests/Level7.tsx @@ -1,10 +1,4 @@ -import { - Divider, - ListItem, - Stack, - Text, - UnorderedList, -} from "@chakra-ui/react"; +import { List, Separator, Stack, Text } from "@chakra-ui/react"; import { availableAmount, equippedItem, @@ -65,14 +59,14 @@ const getZoneDisplay = ( {evil > 13 && ( - - + + {zoneStrategy.map((strat, index) => ( - + {strat} - + ))} - + )} diff --git a/src/sections/quests/Manor.tsx b/src/sections/quests/Manor.tsx index 56d86202..da942b20 100644 --- a/src/sections/quests/Manor.tsx +++ b/src/sections/quests/Manor.tsx @@ -1,4 +1,4 @@ -import { ListItem, Text, UnorderedList } from "@chakra-ui/react"; +import { List, Text } from "@chakra-ui/react"; import { combatRateModifier, equippedAmount, @@ -125,37 +125,37 @@ const HauntedBilliardsRoom: FC = () => { {estimatedPoolSkill} pool skill. {estimatedPoolSkill < 18 && ( - + {myInebriety() < 10 && inebrietyLimit() >= 10 && ( - Drink to 10 inebrierty for +pool skill. + Drink to 10 inebrierty for +pool skill. )} {have($item`Staff of Ed, almost`) && ( - Untinker the Staff of Ed, almost. + Untinker the Staff of Ed, almost. )} {have($item`[7964]Staff of Fats`) && !haveEquipped($item`[7964]Staff of Fats`) && ( - Equip the Staff of Fats for +pool skill. + Equip the Staff of Fats for +pool skill. )} - {!have($item`pool cue`) && Find pool cue.} + {!have($item`pool cue`) && Find pool cue.} {have($item`pool cue`) && !equippedAmount($item`pool cue`) && myPath() !== $path`Gelatinous Noob` && ( - + Equip pool cue for +pool skill. - + )} {!haveEffect($effect`Chalky Hand`) && have($item`handful of hand chalk`) && ( - + Use handful of hand chalk for +pool skill and faster pool skill training. - + )} - + )} ); diff --git a/src/sections/quests/level11/HiddenCity.tsx b/src/sections/quests/level11/HiddenCity.tsx index e72de523..8b493c12 100644 --- a/src/sections/quests/level11/HiddenCity.tsx +++ b/src/sections/quests/level11/HiddenCity.tsx @@ -226,7 +226,7 @@ const Office = () => { [ Step.STARTED, - + Hidden Office Building {needToUseClip ? ( { )} Remember to: - - Make a fence out of the barbed wire - Knock over the lantern - Dump out the drum - + + Make a fence out of the barbed wire + Knock over the lantern + Dump out the drum + )} diff --git a/src/sections/resources/2016/Thanksgarden.tsx b/src/sections/resources/2016/Thanksgarden.tsx index 50137cf9..41f83841 100644 --- a/src/sections/resources/2016/Thanksgarden.tsx +++ b/src/sections/resources/2016/Thanksgarden.tsx @@ -70,7 +70,7 @@ const Thanksgarden = () => { {commaSeparate([ { />, { "various foods", , ])} diff --git a/src/sections/resources/2020/Cartography.tsx b/src/sections/resources/2020/Cartography.tsx index ef859d2d..b6f9affe 100644 --- a/src/sections/resources/2020/Cartography.tsx +++ b/src/sections/resources/2020/Cartography.tsx @@ -1,4 +1,4 @@ -import { ListItem, UnorderedList } from "@chakra-ui/react"; +import { List } from "@chakra-ui/react"; import { Location, myLevel } from "kolmafia"; import { $item, $skill, get, have } from "libram"; import { FC } from "react"; @@ -58,10 +58,10 @@ interface MapTargetProps { } /** - * Returns a enumerating a MapTarget. Includes GROP handling. + * Returns a enumerating a MapTarget. Includes GROP handling. * @param myLevel() User's current level (as number) * @param target A "MapTarget" entry. - * @returns covering monster, zone, & accessibility. + * @returns covering monster, zone, & accessibility. */ const MapTargetItem: FC = ({ target }) => { if (!target.accessible()) return <>; @@ -72,21 +72,21 @@ const MapTargetItem: FC = ({ target }) => { // - Grops are available in X turns, in which case it just lets you know they'll be ready in X turns. return ( - + {`Green Ops Soldier ${ target.turnsTilGROPs > 0 ? `(possible in ${plural(target.turnsTilGROPs, "war turn")})` : `@ ${target.zone}` }`} - + ); } else { return ( - + {`${target.monster} @ ${target.zone}`} - + ); } }; @@ -165,11 +165,11 @@ const Cartography = () => { imageUrl="/images/itemimages/cccbook.gif" > {_mapUses} maps remaining. Some map suggestions: - + {recommendations.slice(0, 3).map((recc) => ( ))} - + ); }; diff --git a/src/sections/resources/2020/Melodramedary.tsx b/src/sections/resources/2020/Melodramedary.tsx index 40bc23d5..5aded48c 100644 --- a/src/sections/resources/2020/Melodramedary.tsx +++ b/src/sections/resources/2020/Melodramedary.tsx @@ -1,4 +1,4 @@ -import { Badge, Flex, ListItem, UnorderedList } from "@chakra-ui/react"; +import { Badge, Flex, List } from "@chakra-ui/react"; import { haveEquipped, myAscensions, myFamiliar, myLevel } from "kolmafia"; import { $familiar, $item, get, have } from "libram"; import { FC } from "react"; @@ -14,13 +14,13 @@ interface SpitTargetProps { target: SpitTarget; } -// Generates a ListItem for a given spit target +// Generates a List.Item for a given spit target const SpitTargetItem: FC = ({ userLevel, target }) => { if (!target.accessible(userLevel)) return <>; return ( - {`${target.monster} via ${target.zone}`} + >{`${target.monster} via ${target.zone}`} ); }; @@ -220,7 +220,7 @@ const Melodramedary = () => { )} {spitProgress === 100 && recommendations.length > 0 && ( - + {recommendations.slice(0, 2).map((recc) => ( { target={recc} /> ))} - + )} {spitProgress === 100 && nostalgiaUses < 3 && ( diff --git a/src/sections/resources/2021/EmotionChip.tsx b/src/sections/resources/2021/EmotionChip.tsx index f4c756a0..67e8db36 100644 --- a/src/sections/resources/2021/EmotionChip.tsx +++ b/src/sections/resources/2021/EmotionChip.tsx @@ -1,8 +1,8 @@ -import { List, ListIcon, ListItem } from "@chakra-ui/react"; +import { List } from "@chakra-ui/react"; import { getProperty } from "kolmafia"; import { $skill, get } from "libram"; -import Chevrons from "../../../components/Chevrons"; +import ChevronsListIcon from "../../../components/ChevronsListIcon"; import MainLink from "../../../components/MainLink"; import Tile from "../../../components/Tile"; import { haveUnrestricted } from "../../../util/available"; @@ -37,14 +37,13 @@ const EmotionChip = () => { }`; const skillName = `Feel ${skillDescription.split(" ")[0]}`; return ( - - { {text} )} - + ); }, ); @@ -76,7 +75,7 @@ const EmotionChip = () => { // - My lean is to not include hatred and leave it for the banish tile I'm making. return ( - {listItems} + {listItems} ); }; diff --git a/src/sections/resources/2021/IndustrialFireExtinguisher.tsx b/src/sections/resources/2021/IndustrialFireExtinguisher.tsx index 81640c66..bd09507e 100644 --- a/src/sections/resources/2021/IndustrialFireExtinguisher.tsx +++ b/src/sections/resources/2021/IndustrialFireExtinguisher.tsx @@ -1,4 +1,4 @@ -import { ListItem, Text, UnorderedList } from "@chakra-ui/react"; +import { Text, List } from "@chakra-ui/react"; import { $item, get, have, questStep } from "libram"; import Line from "../../../components/Line"; @@ -65,34 +65,34 @@ const IndustrialFireExtinguisher = () => { vortices).`} {foam >= 20 && ( - + {showBat && ( - + Constricted Blast: Unlock a Bat Hole chamber. - + )} {showKnob && ( - + Foam the Place: Obtain the Knob Harem Outfit. - + )} {showCyrpt && ( - + Replace the Chill: Reduce evil by 10 in a zone. - + )} {showBlech && ( - + Cool it Down: 73% Blech House progress. - + )} {showDesert && ( - + Take a Drink: 15 turns of Ultrahydrated. - + )} - + )} ); diff --git a/src/sections/resources/2022/Autumnaton.tsx b/src/sections/resources/2022/Autumnaton.tsx index 9860d2ca..ed45935c 100644 --- a/src/sections/resources/2022/Autumnaton.tsx +++ b/src/sections/resources/2022/Autumnaton.tsx @@ -1,10 +1,4 @@ -import { - Heading, - ListItem, - Text, - UnorderedList, - VStack, -} from "@chakra-ui/react"; +import { Heading, List, Text, VStack } from "@chakra-ui/react"; import { availableAmount, canAdventure, @@ -171,11 +165,11 @@ const Autumnaton = () => { )} {upgradesToGet.length > 0 && ( - + {upgradesToGet.map((text) => ( - {text} + {text} ))} - + )} {potentialTargets.length > 0 && ( { ))}
} - label="Potential Autumnaton Targets" + content="Potential Autumnaton Targets" /> )} diff --git a/src/sections/resources/2022/CombatLoversLocket.tsx b/src/sections/resources/2022/CombatLoversLocket.tsx index 43a9b95a..61a6ca44 100644 --- a/src/sections/resources/2022/CombatLoversLocket.tsx +++ b/src/sections/resources/2022/CombatLoversLocket.tsx @@ -1,4 +1,4 @@ -import { ListItem, Text, UnorderedList } from "@chakra-ui/react"; +import { Text, List } from "@chakra-ui/react"; import { $item, CombatLoversLocket as CombatLoversLocketLibram, @@ -217,11 +217,11 @@ const CombatLoversLocket: FC = () => { {locketEnchantment} {options.length > 0 && ( - + {options.map((option) => ( - {option} + {option} ))} - + )} ) diff --git a/src/sections/resources/2022/Cookbookbat.tsx b/src/sections/resources/2022/Cookbookbat.tsx index 946c1f29..f26e0a59 100644 --- a/src/sections/resources/2022/Cookbookbat.tsx +++ b/src/sections/resources/2022/Cookbookbat.tsx @@ -1,4 +1,4 @@ -import { ListItem, Text, UnorderedList } from "@chakra-ui/react"; +import { Text, List } from "@chakra-ui/react"; import { availableAmount, fullnessLimit, @@ -129,22 +129,22 @@ const Cookbookbat = () => { You currently have {wheyAmount} whey, {vegAmount} veg, and{" "} {yeastAmount} yeast. Make: - - + + {borisBreadCraftable}x Boris's Bread: +100% meat. - - + + {roastedVegCraftable}x Roasted Vegetable of Jarlsberg: {" "} +100% item. - - + + {focacciaCraftable}x Roasted Vegetable Focaccia:{" "} +10 fam XP. - - + + {freeCooksRemaining > 0 && ( diff --git a/src/sections/resources/2022/CosmicBowlingBall.tsx b/src/sections/resources/2022/CosmicBowlingBall.tsx index e99395ed..f7562e76 100644 --- a/src/sections/resources/2022/CosmicBowlingBall.tsx +++ b/src/sections/resources/2022/CosmicBowlingBall.tsx @@ -91,7 +91,7 @@ const CosmicBowlingBall = () => { Your Bowling Ball will return in{" "} . diff --git a/src/sections/resources/2022/DesignerSweatpants.tsx b/src/sections/resources/2022/DesignerSweatpants.tsx index 3f77d140..9e0fa705 100644 --- a/src/sections/resources/2022/DesignerSweatpants.tsx +++ b/src/sections/resources/2022/DesignerSweatpants.tsx @@ -1,4 +1,4 @@ -import { LinkProps, ListItem, Text, UnorderedList } from "@chakra-ui/react"; +import { LinkProps, Text, List } from "@chakra-ui/react"; import { haveEquipped, myInebriety } from "kolmafia"; import { $item, $skill, get } from "libram"; import { FC } from "react"; @@ -32,20 +32,20 @@ const DesignerSweatpants = () => { id="designer-sweatpants-tile" linkedContent={designerSweatpants} > - - + + Sweat Sip (5% sweat): Regain 50 MP - - + + Drench Yourself in Sweat (15% sweat): +100% Initiative - + {boozeSweatsLeft > 0 && ( - + Sweat Out Some Booze (25% sweat): @@ -56,9 +56,9 @@ const DesignerSweatpants = () => { {` -1 Drunkenness. ${plural(boozeSweatsLeft, "use")} left for today.`} {myInebriety() === 0 && " Drink some booze first."} - + )} - + ); }; diff --git a/src/sections/resources/2022/JuneCleaver.tsx b/src/sections/resources/2022/JuneCleaver.tsx index 0add87f7..68199f06 100644 --- a/src/sections/resources/2022/JuneCleaver.tsx +++ b/src/sections/resources/2022/JuneCleaver.tsx @@ -1,4 +1,4 @@ -import { ListItem, OrderedList, UnorderedList } from "@chakra-ui/react"; +import { List } from "@chakra-ui/react"; import { $item, get } from "libram"; import AdviceTooltip from "../../../components/AdviceTooltip"; @@ -86,21 +86,21 @@ const JuneCleaver = () => { .filter((entry) => !cleaverQueue.includes(entry.choice)) .map(({ option1, option2, option3, name, choice }) => { return ( - + Choices: - - {option1} - {option2} - {option3} - + + {option1} + {option2} + {option3} + } - label={name} + content={name} /> - + ); }); @@ -121,7 +121,7 @@ const JuneCleaver = () => { )} Possible upcoming NCs: - {availableChoices} + {availableChoices} ); }; diff --git a/src/sections/resources/2022/ModelTrainSet.tsx b/src/sections/resources/2022/ModelTrainSet.tsx index 21457a25..24a688fe 100644 --- a/src/sections/resources/2022/ModelTrainSet.tsx +++ b/src/sections/resources/2022/ModelTrainSet.tsx @@ -1,4 +1,4 @@ -import { ListItem, Text, UnorderedList } from "@chakra-ui/react"; +import { Text, List } from "@chakra-ui/react"; import { availableAmount, myLevel, myPrimestat } from "kolmafia"; import { $item, $stat, get, have } from "libram"; @@ -255,20 +255,20 @@ const ModelTrainSet = () => { Train station cycle - + {Array.from({ length: 8 }, (_, i) => { const station = stationDescriptions[stations[(trainPosition + i) % 8]]; return ( - + {station.name}: {station.description} - + ); })} - + } - label="Full train cycle" + content="Full train cycle" /> ); diff --git a/src/sections/resources/2022/TinyStillsuit.tsx b/src/sections/resources/2022/TinyStillsuit.tsx index c99c8ad9..556ad55d 100644 --- a/src/sections/resources/2022/TinyStillsuit.tsx +++ b/src/sections/resources/2022/TinyStillsuit.tsx @@ -1,4 +1,4 @@ -import { ListItem, Text, UnorderedList } from "@chakra-ui/react"; +import { List, Text } from "@chakra-ui/react"; import { haveEquipped, inebrietyLimit, @@ -175,43 +175,41 @@ const TinyStillsuit = () => { )} + {Object.entries(advDramsTable).map( ([advs, drams]) => drams > familiarSweat && ( - + {advs} advs: {drams} drams ({drams - familiarSweat} more sweat) - + ), )} {familiarSweat > 553 && ( - + {" "} 13 advs: ... y'know, you should probably just drink it, buddy. - + )} - + } - label="Sweat/Advs" + content="Sweat/Advs" />{" "} •{" "} - Cubeling / Stomping Boots: +item - + + Cubeling / Stomping Boots: +item + Levitating Potato / Candy Carnie / Flan: +item and +food - - + + Star Starfish / Emilio / Globmule / Waifuton: +item and +sleaze - - + + } - label="Suggested Familiars" + content="Suggested Familiars" /> diff --git a/src/sections/resources/2023/AGuideToBurningLeaves.tsx b/src/sections/resources/2023/AGuideToBurningLeaves.tsx index 2226cce1..1c3c2849 100644 --- a/src/sections/resources/2023/AGuideToBurningLeaves.tsx +++ b/src/sections/resources/2023/AGuideToBurningLeaves.tsx @@ -1,4 +1,4 @@ -import { ListItem, Text, UnorderedList } from "@chakra-ui/react"; +import { List, Text } from "@chakra-ui/react"; import { availableAmount, getCampground, myLevel } from "kolmafia"; import { $effect, $familiar, $item, $skill, get, have } from "libram"; import { FC } from "react"; @@ -207,7 +207,7 @@ const AGuideToBurningLeaves: FC = () => { > Item Summons: - + {LEAFY_SUMMONS.map((summon) => { if ( ((canUseShorty || canUseCrab) && summon.leafCost === 37) || @@ -225,7 +225,7 @@ const AGuideToBurningLeaves: FC = () => { const hasEnoughLeaves = leafCount >= summon.leafCost; return ( - @@ -237,17 +237,17 @@ const AGuideToBurningLeaves: FC = () => { (melting) )} - + ); })} - + {fightsRemaining > 0 && ( <> Fight Summons: - + {LEAFY_FIGHTS.map((fight) => { if ( inRun && @@ -259,7 +259,7 @@ const AGuideToBurningLeaves: FC = () => { const hasEnoughLeaves = leafCount >= fight.leafCost; return ( - @@ -271,31 +271,31 @@ const AGuideToBurningLeaves: FC = () => { (also, drops {fight.extraDrops}) )} - + ); })} - + {leafCount >= 111 * fightsRemaining ? ( ) : leafCount >= 11 * fightsRemaining ? ( ) : leafCount >= 11 ? ( ) : ( )} diff --git a/src/sections/resources/2023/AugustScepter.tsx b/src/sections/resources/2023/AugustScepter.tsx index e87ba303..060a6cca 100644 --- a/src/sections/resources/2023/AugustScepter.tsx +++ b/src/sections/resources/2023/AugustScepter.tsx @@ -1,4 +1,4 @@ -import { Table, Tbody, Td, Text, Tr } from "@chakra-ui/react"; +import { Table, Text } from "@chakra-ui/react"; import { availableAmount, myLevel, @@ -99,7 +99,7 @@ const AugustScepter: FC = () => { 1, <> +2-5 turns{" "} - + (spend turns @ the Goatlet) , @@ -192,7 +192,7 @@ const AugustScepter: FC = () => { 28, <> +10 weight familiar equipment{" "} - + (melting) , @@ -205,18 +205,18 @@ const AugustScepter: FC = () => { .map(([day, reason]) => { const skillName = `Aug. ${ordinal(day)}: ${ALL_SKILLS.get(day)?.[0]}`; return ( - - + + {day} - - + + {skillName ? ( {reason} ) : ( reason )} - - + + ); }); @@ -225,8 +225,8 @@ const AugustScepter: FC = () => { Well, you asked for it! - - + + {[...ALL_SKILLS.entries()] .sort(([a], [b]) => a - b) .map(([skillNumber, [, skillDesc]]) => { @@ -234,8 +234,8 @@ const AugustScepter: FC = () => { ? "gray.500" : "black"; return ( - - - - + + ); })} - -
+ { color={lineColor} > {skillNumber} - + + {skillDesc} -
+ + ); @@ -266,12 +266,12 @@ const AugustScepter: FC = () => { get valuable benefits. {table.length > 0 && ( - - {table} -
+ + {table} + )} diff --git a/src/sections/resources/2023/CandyCaneSwordCane.tsx b/src/sections/resources/2023/CandyCaneSwordCane.tsx index 70fd0533..ca2f27aa 100644 --- a/src/sections/resources/2023/CandyCaneSwordCane.tsx +++ b/src/sections/resources/2023/CandyCaneSwordCane.tsx @@ -1,4 +1,4 @@ -import { ListItem, Text, UnorderedList } from "@chakra-ui/react"; +import { Text, List } from "@chakra-ui/react"; import { canAdventure, haveEquipped, @@ -31,7 +31,7 @@ const CandyCaneSwordCane = () => { { available: !get("_candyCaneSwordLyle"), node: ( - + { > Bonus: Lyle's Monorail Buff (+40% init). - + ), location: null, }, @@ -49,18 +49,18 @@ const CandyCaneSwordCane = () => { available: !get("candyCaneSwordBlackForest") && questStep("questL11Black") < 2, node: ( - + Bonus: The Black Forest (+8 exploration). - + ), location: $location`The Black Forest`, }, { available: !get("candyCaneSwordDailyDungeon") && !get("dailyDungeonDone"), node: ( - + Bonus: Daily Dungeon (+1 fat loot token). - + ), location: $location`The Daily Dungeon`, }, @@ -69,7 +69,9 @@ const CandyCaneSwordCane = () => { !get("candyCaneSwordApartmentBuilding") && get("hiddenApartmentProgress") < 8, node: ( - Bonus: Hidden Apartment (+1 Curse). + + Bonus: Hidden Apartment (+1 Curse). + ), location: $location`The Hidden Apartment Building`, }, @@ -78,9 +80,9 @@ const CandyCaneSwordCane = () => { !get("candyCaneSwordBowlingAlley") && get("hiddenBowlingAlleyProgress") < 7, node: ( - + Bonus: Hidden Bowling Alley (+1 free bowl). - + ), location: $location`The Hidden Bowling Alley`, }, @@ -88,9 +90,9 @@ const CandyCaneSwordCane = () => { available: !get("candyCaneSwordShore") && get("lastIslandUnlock") < myAscensions(), node: ( - + Alternate: Shore (2 scrips for the price of 1). - + ), location: $location`The Shore, Inc. Travel Agency`, }, @@ -100,22 +102,22 @@ const CandyCaneSwordCane = () => { canAdventure(l), ) && questStep("questL12War") < 1, node: ( - + Alternate: Hippy Camp (Redirect to the War Start NC). - + ), location: $location`Wartime Hippy Camp`, }, { available: get("zeppelinProtestors") < 80, node: ( - + Alternate: Zeppelin Protesters{" "} (double Sleaze damage!) . - + ), location: $location`A Mob of Zeppelin Protesters`, }, @@ -188,14 +190,12 @@ const CandyCaneSwordCane = () => { linkedContent={candyCaneSwordCane} > Ensure your CCSC is equipped for useful NCs: - - {availableOptions.map(({ node }) => node)} - + {availableOptions.map(({ node }) => node)} {!ccscEquipped && ( )} diff --git a/src/sections/resources/2023/CinchoDeMayo.tsx b/src/sections/resources/2023/CinchoDeMayo.tsx index 9ad42f40..51d11870 100644 --- a/src/sections/resources/2023/CinchoDeMayo.tsx +++ b/src/sections/resources/2023/CinchoDeMayo.tsx @@ -1,4 +1,4 @@ -import { ListItem, Text, UnorderedList } from "@chakra-ui/react"; +import { Text, List } from "@chakra-ui/react"; import { getDwelling, myAscensions, totalFreeRests } from "kolmafia"; import { $item, @@ -87,26 +87,26 @@ const CinchoDeMayo = () => { {totalCinch % 60}% cinch left over. )} - + {totalCinch > 25 && ( - + Party Soundtrack (25%): 30 advs of +5 fam weight. - + )} {totalCinch > 5 && ( <> - + Confetti Extravaganza (5%): 2x stats, in-combat - - + + Projectile Piñata (5%): complex candy, in-combat - + )} - + You have {totalCinch}% more cinch available, accounting for your{" "} {plural(freeRestsRemaining, "remaining free rest")}. diff --git a/src/sections/resources/2023/ClosedCircuitPayPhone.tsx b/src/sections/resources/2023/ClosedCircuitPayPhone.tsx index 8887fa87..b6af5391 100644 --- a/src/sections/resources/2023/ClosedCircuitPayPhone.tsx +++ b/src/sections/resources/2023/ClosedCircuitPayPhone.tsx @@ -1,4 +1,4 @@ -import { Text, UnorderedList } from "@chakra-ui/react"; +import { Text, List } from "@chakra-ui/react"; import { availableAmount, canAdventure, haveEffect } from "kolmafia"; import { $effect, $item, $location, get } from "libram"; @@ -54,7 +54,7 @@ const ClosedCircuitPayPhone = () => { const getShadowBrickLocationTooltip = () => { return ( - + {shadowBrickLocations.map((location, index) => ( { {location.zoneName} {location.extraItems} ))} - + ); }; @@ -128,7 +128,7 @@ const ClosedCircuitPayPhone = () => { )} diff --git a/src/sections/resources/2023/CursedMonkeyPaw.tsx b/src/sections/resources/2023/CursedMonkeyPaw.tsx index 5f43b7f6..a1cc246b 100644 --- a/src/sections/resources/2023/CursedMonkeyPaw.tsx +++ b/src/sections/resources/2023/CursedMonkeyPaw.tsx @@ -1,4 +1,4 @@ -import { ListItem, Text, UnorderedList } from "@chakra-ui/react"; +import { List, Text } from "@chakra-ui/react"; import { availableAmount, canAdventure, @@ -311,10 +311,10 @@ function showWish({ const color = currentlyAccessible ? "black" : "gray.500"; return ( - + {target.name} {additionalDescription && <>: {additionalDescription}} - + ); } @@ -361,20 +361,20 @@ const CursedMonkeysPaw = () => { {options.length > 0 && ( <> Possible wishes: - {options} + {options} )} Monkey skills: - + {monkeySkills().map((skill) => ( - + {plural(skill.fingerCount, "finger", "fingers")}: {" "} {skill.description} - + ))} - + {monkeyWishesLeft === 5 && ( <> { {mr2002Credits > 0 && ( <> Spend credits on prehistoric IotMs! - + {!have(flashLiquidizerUltraDousingAccessory) && ( - + Flash Liquidizer Ultra Dousing Accessory: +3 BLARTpockets - + )} {!have(proSkateboard) && ( - Pro skateboard: +1 duplicate + Pro skateboard: +1 duplicate )} {!have($item`Letter from Carrie Bradshaw`) && !have($item`red-soled high heels`) && ( - + Letter from Carrie Bradshaw: +50% booze drop accessory - + )} {availableAmount(loathingIdolMicrophone) < 69420 && ( - + Loathing Idol Microphone: +100% init, +50% items, +5% combat; 4 uses - + )} {availableAmount(spookyVHSTape) < 69420 && ( - + Spooky VHS Tape: wandering freekill YR of the monster you used it on; try GROPs! - + )} - + )} {availableVHSes > 0 && haveUnrestricted(spookyVHSTape) && ( @@ -106,11 +106,11 @@ const MrStore2002Catalog = () => { Have {availableVHSes} VHS tapes. Use to free-copy into delay & guarantee drops from: - + {vhsOptions.map((option, index) => ( - {option} + {option} ))} - + )} {have(loathingIdolMicrophone) && ( @@ -144,7 +144,7 @@ const MrStore2002Catalog = () => { ) : ( )} diff --git a/src/sections/resources/2023/PatrioticEagle.tsx b/src/sections/resources/2023/PatrioticEagle.tsx index 3bd53e89..a529ac05 100644 --- a/src/sections/resources/2023/PatrioticEagle.tsx +++ b/src/sections/resources/2023/PatrioticEagle.tsx @@ -1,4 +1,4 @@ -import { Heading, ListItem, Text, UnorderedList } from "@chakra-ui/react"; +import { Heading, List, Text } from "@chakra-ui/react"; import { canAdventure, canEquip, @@ -93,10 +93,10 @@ const generatePhylumOptions = ( ); return ( available.length > 0 && ( - + {phylum}:{" "} {available.map(([name]) => name).join(", ")} - + ) ); }; @@ -270,7 +270,7 @@ const PatrioticEagle = () => { )} - {phylumOptions} + {phylumOptions} )} {showPledge && ( diff --git a/src/sections/resources/2023/RockGarden.tsx b/src/sections/resources/2023/RockGarden.tsx index c16c4b15..6c611dd2 100644 --- a/src/sections/resources/2023/RockGarden.tsx +++ b/src/sections/resources/2023/RockGarden.tsx @@ -1,4 +1,4 @@ -import { ListItem, Text, UnorderedList } from "@chakra-ui/react"; +import { Text, List } from "@chakra-ui/react"; import { availableAmount, getCampground } from "kolmafia"; import { $item, get, have } from "libram"; @@ -72,17 +72,17 @@ const RockGarden = () => { (availableMilestones > 0 && desertProgress < 100)) && ( <> Inventory: - + {availableGravels > 0 && ( - {gravelMessage(availableGravels)} + {gravelMessage(availableGravels)} )} {availableWhetStones && ( - {whetStoneMessage(availableWhetStones)} + {whetStoneMessage(availableWhetStones)} )} {availableMilestones && desertProgress < 100 && ( - {milestoneMessage(availableMilestones)} + {milestoneMessage(availableMilestones)} )} - + )} {(gardenGravels > 0 || @@ -90,17 +90,17 @@ const RockGarden = () => { (gardenMilestones > 0 && desertProgress < 100)) && ( <> Harvest from your garden: - + {gardenGravels > 0 && ( - {gravelMessage(gardenGravels)} + {gravelMessage(gardenGravels)} )} {gardenWhetstones > 0 && ( - {whetStoneMessage(gardenWhetstones)} + {whetStoneMessage(gardenWhetstones)} )} {gardenMilestones > 0 && desertProgress < 100 && ( - {milestoneMessage(gardenMilestones)} + {milestoneMessage(gardenMilestones)} )} - + )} diff --git a/src/sections/resources/2024/AprilingBandHelmet.tsx b/src/sections/resources/2024/AprilingBandHelmet.tsx index 0b688812..e21d0ed2 100644 --- a/src/sections/resources/2024/AprilingBandHelmet.tsx +++ b/src/sections/resources/2024/AprilingBandHelmet.tsx @@ -1,4 +1,4 @@ -import { ListItem, Text, UnorderedList } from "@chakra-ui/react"; +import { Text, List } from "@chakra-ui/react"; import { myLocation, totalTurnsPlayed } from "kolmafia"; import { $effect, $item, $location, get, have } from "libram"; @@ -76,17 +76,17 @@ const AprilingBandHelmet = () => { You can change your tune! - - + + -10% Combat Frequency - - + + +10% Combat Frequency - - + + +25% booze, +50% food, +100% candy - - + + ) : ( diff --git a/src/sections/resources/2024/BatWings.tsx b/src/sections/resources/2024/BatWings.tsx index 672d50a2..c11f3957 100644 --- a/src/sections/resources/2024/BatWings.tsx +++ b/src/sections/resources/2024/BatWings.tsx @@ -1,4 +1,4 @@ -import { ListItem, UnorderedList } from "@chakra-ui/react"; +import { List } from "@chakra-ui/react"; import { canAdventure, haveEquipped } from "kolmafia"; import { $item, $location, get } from "libram"; import { FC } from "react"; @@ -72,13 +72,13 @@ const BatWings: FC = () => { Visit the Bat Hole zones{" "} {!batWingsEquipped && "with bat wings equipped "}to get: - + {availableZones.map(({ location, reward }) => ( - + {location.identifierString}: {reward.name} - + ))} - + )} diff --git a/src/sections/resources/2024/MayamCalendar.tsx b/src/sections/resources/2024/MayamCalendar.tsx index f7deced5..bf12b12d 100644 --- a/src/sections/resources/2024/MayamCalendar.tsx +++ b/src/sections/resources/2024/MayamCalendar.tsx @@ -1,4 +1,4 @@ -import { ListItem, OrderedList, Text, UnorderedList } from "@chakra-ui/react"; +import { List, Text } from "@chakra-ui/react"; import { canAdventure, myAscensions, myLevel } from "kolmafia"; import { $effect, $item, $location, get, have } from "libram"; import { FC } from "react"; @@ -148,10 +148,10 @@ const MayamCalendar: FC = () => { const ringDescriptions = [1, 2, 3, 4].map((ring) => { const ringSymbols = unusedSymbols.filter((symbol) => symbol.ring === ring); return ( - + {`${ring}${["st", "nd", "rd", "th"][ring - 1]} ring:`}{" "} {ringSymbols.map((symbol) => symbol.friendlyName).join(", ")} - + ); }); @@ -183,17 +183,17 @@ const MayamCalendar: FC = () => { imageUrl="/images/itemimages/yamcal.gif" linkedContent={mayamCalendar} > - {ringDescriptions} + {ringDescriptions} {availableResonances.length > 0 && ( Cool Mayam combos! )} - + {availableResonances.map((resonance, index) => ( - + {resonance.name}: {resonance.combo.join(" + ")} - + ))} - + {templeResetAvailable && ( { At {Math.floor(kiwiWeight)} weight, you have a{" "} {" "} chance of a mini-kiwi each fight. diff --git a/src/sections/resources/2024/SeptEmberCenser.tsx b/src/sections/resources/2024/SeptEmberCenser.tsx index 10b2516a..b7fb8a97 100644 --- a/src/sections/resources/2024/SeptEmberCenser.tsx +++ b/src/sections/resources/2024/SeptEmberCenser.tsx @@ -1,4 +1,4 @@ -import { ListItem, Text, UnorderedList } from "@chakra-ui/react"; +import { Text, List } from "@chakra-ui/react"; import { availableAmount, myPrimestat, numericModifier } from "kolmafia"; import { $item, get, have } from "libram"; @@ -48,11 +48,11 @@ const SeptEmberCenser = () => {
{" "} Sept-Embers to make stuff with! - - + + 1 embers: +5 cold res accessory (you have {bembershootCount}). - - + + 2 embers: mouthwash for{" "} {mainstatGain} @@ -62,14 +62,14 @@ const SeptEmberCenser = () => { {mouthwashCount} ). - + {!have(structuralEmber) && ( - 4 embers: +5/5 bridge parts (1/day). + 4 embers: +5/5 bridge parts (1/day). )} {!hulkFought && !have(miniEmberingHulk) && ( - 6 embers: embering hulk (1/day). + 6 embers: embering hulk (1/day). )} - + )} {!structureUsed && have(structuralEmber) && ( diff --git a/src/sections/resources/path/AvantGuard.tsx b/src/sections/resources/path/AvantGuard.tsx index e581d1c4..2b985ad2 100644 --- a/src/sections/resources/path/AvantGuard.tsx +++ b/src/sections/resources/path/AvantGuard.tsx @@ -1,4 +1,4 @@ -import { ListItem, UnorderedList } from "@chakra-ui/react"; +import { List } from "@chakra-ui/react"; import { Monster, myFamiliar, myPath } from "kolmafia"; import { $familiar, @@ -93,11 +93,11 @@ const AvantGuard: FC = () => { Your bodyguard is ready to talk to you. {bodyguardOut && " Take them with you."} Recommended chats: - + {recommended.map((monster) => ( - {monster.name} + {monster.name} ))} - + ) : monster ? ( { imageUrl="/images/itemimages/abacus.gif" > Enter these values to cast Calculate the Universe: - + {desiredDigits.map(({ digit, reason }) => ( - + {outputs.has(digit) ? ( <> Enter {outputs.get(digit)} for {digit} ={" "} @@ -154,9 +154,9 @@ const Numberology = () => { ) : ( `Cannot currently calculate for ${reason}.` )} - + ))} - + ); }; diff --git a/src/theme.ts b/src/theme.ts new file mode 100644 index 00000000..9fb03675 --- /dev/null +++ b/src/theme.ts @@ -0,0 +1,24 @@ +import { createSystem, defaultConfig, defineConfig } from "@chakra-ui/react"; + +const config = defineConfig({ + globalCss: { + html: { + lineHeight: 1.15, + }, + }, + theme: { + tokens: { + lineHeights: { + none: { value: 1 }, + shorter: { value: 1.05 }, + short: { value: 1.1 }, + moderate: { value: 1.15 }, + default: { value: 1.15 }, + tall: { value: 1.25 }, + taller: { value: 1.5 }, + }, + }, + }, +}); + +export const system = createSystem(defaultConfig, config); diff --git a/yarn.lock b/yarn.lock index 75066b08..a56394c8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15,6 +15,67 @@ __metadata: languageName: node linkType: hard +"@ark-ui/react@npm:4.4.3": + version: 4.4.3 + resolution: "@ark-ui/react@npm:4.4.3" + dependencies: + "@internationalized/date": "npm:3.5.6" + "@zag-js/accordion": "npm:0.77.1" + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/auto-resize": "npm:0.77.1" + "@zag-js/avatar": "npm:0.77.1" + "@zag-js/carousel": "npm:0.77.1" + "@zag-js/checkbox": "npm:0.77.1" + "@zag-js/clipboard": "npm:0.77.1" + "@zag-js/collapsible": "npm:0.77.1" + "@zag-js/collection": "npm:0.77.1" + "@zag-js/color-picker": "npm:0.77.1" + "@zag-js/color-utils": "npm:0.77.1" + "@zag-js/combobox": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/date-picker": "npm:0.77.1" + "@zag-js/date-utils": "npm:0.77.1" + "@zag-js/dialog": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/editable": "npm:0.77.1" + "@zag-js/file-upload": "npm:0.77.1" + "@zag-js/file-utils": "npm:0.77.1" + "@zag-js/highlight-word": "npm:0.77.1" + "@zag-js/hover-card": "npm:0.77.1" + "@zag-js/i18n-utils": "npm:0.77.1" + "@zag-js/menu": "npm:0.77.1" + "@zag-js/number-input": "npm:0.77.1" + "@zag-js/pagination": "npm:0.77.1" + "@zag-js/pin-input": "npm:0.77.1" + "@zag-js/popover": "npm:0.77.1" + "@zag-js/presence": "npm:0.77.1" + "@zag-js/progress": "npm:0.77.1" + "@zag-js/qr-code": "npm:0.77.1" + "@zag-js/radio-group": "npm:0.77.1" + "@zag-js/rating-group": "npm:0.77.1" + "@zag-js/react": "npm:0.77.1" + "@zag-js/select": "npm:0.77.1" + "@zag-js/signature-pad": "npm:0.77.1" + "@zag-js/slider": "npm:0.77.1" + "@zag-js/splitter": "npm:0.77.1" + "@zag-js/steps": "npm:0.77.1" + "@zag-js/switch": "npm:0.77.1" + "@zag-js/tabs": "npm:0.77.1" + "@zag-js/tags-input": "npm:0.77.1" + "@zag-js/time-picker": "npm:0.77.1" + "@zag-js/timer": "npm:0.77.1" + "@zag-js/toast": "npm:0.77.1" + "@zag-js/toggle-group": "npm:0.77.1" + "@zag-js/tooltip": "npm:0.77.1" + "@zag-js/tree-view": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + peerDependencies: + react: ">=18.0.0" + react-dom: ">=18.0.0" + checksum: 10c0/0af98e7aca4b02fa42a93729155dc754edbf568673abab1eba2d51efbfd217b532b1e38dc3cada92fd8aab8ad80b278a0ae91a361b8d78454590b01b3ba8c1f3 + languageName: node + linkType: hard + "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0": version: 7.26.0 resolution: "@babel/code-frame@npm:7.26.0" @@ -176,7 +237,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.12.13, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.3": +"@babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.3": version: 7.26.0 resolution: "@babel/runtime@npm:7.26.0" dependencies: @@ -228,13 +289,6 @@ __metadata: languageName: node linkType: hard -"@chakra-ui/anatomy@npm:2.3.4": - version: 2.3.4 - resolution: "@chakra-ui/anatomy@npm:2.3.4" - checksum: 10c0/1cfa7521c10cdace81c098b77ef31a5598ea3e5a47f14d117b63af51ddb2b74c9e83adea1c5e6d59154ba64f776dcad4568eb0cb698a26283bb489c2889d771c - languageName: node - linkType: hard - "@chakra-ui/color-mode@npm:2.2.0": version: 2.2.0 resolution: "@chakra-ui/color-mode@npm:2.2.0" @@ -246,30 +300,6 @@ __metadata: languageName: node linkType: hard -"@chakra-ui/hooks@npm:2.4.2": - version: 2.4.2 - resolution: "@chakra-ui/hooks@npm:2.4.2" - dependencies: - "@chakra-ui/utils": "npm:2.2.2" - "@zag-js/element-size": "npm:0.31.1" - copy-to-clipboard: "npm:3.3.3" - framesync: "npm:6.1.2" - peerDependencies: - react: ">=18" - checksum: 10c0/192879bdb73eee35e5659507de61b72fe0ffd145590fb62dce76b5b61bb0673dcd84121a66f912c701dc20b437610c79db89e6a81052e1da8d6e3b1a0ca69237 - languageName: node - linkType: hard - -"@chakra-ui/icons@npm:^2.1.1": - version: 2.2.4 - resolution: "@chakra-ui/icons@npm:2.2.4" - peerDependencies: - "@chakra-ui/react": ">=2.0.0" - react: ">=18" - checksum: 10c0/db1aa925e9e22efe12d2417df2b21337f4cb6e6de0a2ba641bc4c3c36dbebb39ec6e6ce9b82f79f3a5d85e988779784468f8b604614170dee1b57c66ea400f9e - languageName: node - linkType: hard - "@chakra-ui/object-utils@npm:2.1.0": version: 2.1.0 resolution: "@chakra-ui/object-utils@npm:2.1.0" @@ -297,27 +327,22 @@ __metadata: languageName: node linkType: hard -"@chakra-ui/react@npm:^2.8.2": - version: 2.10.3 - resolution: "@chakra-ui/react@npm:2.10.3" - dependencies: - "@chakra-ui/hooks": "npm:2.4.2" - "@chakra-ui/styled-system": "npm:2.12.0" - "@chakra-ui/theme": "npm:3.4.6" - "@chakra-ui/utils": "npm:2.2.2" - "@popperjs/core": "npm:^2.11.8" - "@zag-js/focus-visible": "npm:^0.31.1" - aria-hidden: "npm:^1.2.3" - react-fast-compare: "npm:3.2.2" - react-focus-lock: "npm:^2.9.6" - react-remove-scroll: "npm:^2.5.7" +"@chakra-ui/react@npm:^3.1.2": + version: 3.1.2 + resolution: "@chakra-ui/react@npm:3.1.2" + dependencies: + "@ark-ui/react": "npm:4.4.3" + "@emotion/is-prop-valid": "npm:1.3.1" + "@emotion/serialize": "npm:1.3.2" + "@emotion/use-insertion-effect-with-fallbacks": "npm:1.1.0" + "@emotion/utils": "npm:1.4.1" + "@pandacss/is-valid-prop": "npm:0.41.0" + csstype: "npm:3.1.3" peerDependencies: "@emotion/react": ">=11" - "@emotion/styled": ">=11" - framer-motion: ">=4.0.0" react: ">=18" react-dom: ">=18" - checksum: 10c0/da16af60a170afc99a37e201de4692dcb441f2054315c84fc9e562f8529b6fb4e53e9c5a64f4488031030dc0fdc6031da0d6fbe5479e3d5dbc76fccec73b7902 + checksum: 10c0/6bfb484452214d4377b484a6ecff03b11c495f39077f55b1ebc7358d4b0c7eee6c1cbc0b2bc93c44b2e21bab711f0fb2ed0ee07078ae9c948b1dd7f14afffb05 languageName: node linkType: hard @@ -328,16 +353,6 @@ __metadata: languageName: node linkType: hard -"@chakra-ui/styled-system@npm:2.12.0": - version: 2.12.0 - resolution: "@chakra-ui/styled-system@npm:2.12.0" - dependencies: - "@chakra-ui/utils": "npm:2.2.2" - csstype: "npm:^3.1.2" - checksum: 10c0/6ca37dbacb923b6ee57ad8a6deafa7b24bb1131e642737139874bd03e561c95a7810306c83e404156c4502d557aed9b8acf2a2025661e84e05008d249e54eb53 - languageName: node - linkType: hard - "@chakra-ui/styled-system@npm:2.9.2": version: 2.9.2 resolution: "@chakra-ui/styled-system@npm:2.9.2" @@ -381,19 +396,6 @@ __metadata: languageName: node linkType: hard -"@chakra-ui/theme-tools@npm:2.2.6": - version: 2.2.6 - resolution: "@chakra-ui/theme-tools@npm:2.2.6" - dependencies: - "@chakra-ui/anatomy": "npm:2.3.4" - "@chakra-ui/utils": "npm:2.2.2" - color2k: "npm:^2.0.2" - peerDependencies: - "@chakra-ui/styled-system": ">=2.0.0" - checksum: 10c0/9155b07358a6c4a3a09f792663bd194cfe668d244c5089d49de3af9de4025e3294cd292a7ed85ce9caafbc19dab7ba62ade920a96d675ab1cf6b29cac53fcee0 - languageName: node - linkType: hard - "@chakra-ui/theme-utils@npm:2.0.21": version: 2.0.21 resolution: "@chakra-ui/theme-utils@npm:2.0.21" @@ -419,19 +421,6 @@ __metadata: languageName: node linkType: hard -"@chakra-ui/theme@npm:3.4.6": - version: 3.4.6 - resolution: "@chakra-ui/theme@npm:3.4.6" - dependencies: - "@chakra-ui/anatomy": "npm:2.3.4" - "@chakra-ui/theme-tools": "npm:2.2.6" - "@chakra-ui/utils": "npm:2.2.2" - peerDependencies: - "@chakra-ui/styled-system": ">=2.8.0" - checksum: 10c0/b04919a2520482e857be5ccde5b35457850e5b677f882237b6f8978159333288f268fa4c6ad55aabd2bfd878b85144a966616de933e6bf57a3a5990d89c7e346 - languageName: node - linkType: hard - "@chakra-ui/utils@npm:2.0.15": version: 2.0.15 resolution: "@chakra-ui/utils@npm:2.0.15" @@ -444,18 +433,6 @@ __metadata: languageName: node linkType: hard -"@chakra-ui/utils@npm:2.2.2": - version: 2.2.2 - resolution: "@chakra-ui/utils@npm:2.2.2" - dependencies: - "@types/lodash.mergewith": "npm:4.6.9" - lodash.mergewith: "npm:4.6.2" - peerDependencies: - react: ">=16.8.0" - checksum: 10c0/78a55702a547929f70d03b3976ec0981008ad41c533be2daaf696c4fc4fd1854c3f5f637348d5f0a16c74319cd484857d287c5e6c71ce168bc71be2609f26a7d - languageName: node - linkType: hard - "@emotion/babel-plugin@npm:^11.12.0": version: 11.12.0 resolution: "@emotion/babel-plugin@npm:11.12.0" @@ -495,7 +472,7 @@ __metadata: languageName: node linkType: hard -"@emotion/is-prop-valid@npm:^1.3.0": +"@emotion/is-prop-valid@npm:1.3.1": version: 1.3.1 resolution: "@emotion/is-prop-valid@npm:1.3.1" dependencies: @@ -532,7 +509,7 @@ __metadata: languageName: node linkType: hard -"@emotion/serialize@npm:^1.2.0, @emotion/serialize@npm:^1.3.0, @emotion/serialize@npm:^1.3.1": +"@emotion/serialize@npm:1.3.2, @emotion/serialize@npm:^1.2.0, @emotion/serialize@npm:^1.3.1": version: 1.3.2 resolution: "@emotion/serialize@npm:1.3.2" dependencies: @@ -552,26 +529,6 @@ __metadata: languageName: node linkType: hard -"@emotion/styled@npm:^11.13.0": - version: 11.13.0 - resolution: "@emotion/styled@npm:11.13.0" - dependencies: - "@babel/runtime": "npm:^7.18.3" - "@emotion/babel-plugin": "npm:^11.12.0" - "@emotion/is-prop-valid": "npm:^1.3.0" - "@emotion/serialize": "npm:^1.3.0" - "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.1.0" - "@emotion/utils": "npm:^1.4.0" - peerDependencies: - "@emotion/react": ^11.0.0-rc.0 - react: ">=16.8.0" - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/5e2cc85c8a2f6e7bd012731cf0b6da3aef5906225e87e8d4a5c19da50572e24d9aaf92615aa36aa863f0fe6b62a121033356e1cad62617c48bfdaa2c3cf0d8a4 - languageName: node - linkType: hard - "@emotion/unitless@npm:^0.10.0": version: 0.10.0 resolution: "@emotion/unitless@npm:0.10.0" @@ -579,7 +536,7 @@ __metadata: languageName: node linkType: hard -"@emotion/use-insertion-effect-with-fallbacks@npm:^1.1.0": +"@emotion/use-insertion-effect-with-fallbacks@npm:1.1.0, @emotion/use-insertion-effect-with-fallbacks@npm:^1.1.0": version: 1.1.0 resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.1.0" peerDependencies: @@ -588,7 +545,7 @@ __metadata: languageName: node linkType: hard -"@emotion/utils@npm:^1.4.0, @emotion/utils@npm:^1.4.1": +"@emotion/utils@npm:1.4.1, @emotion/utils@npm:^1.4.0, @emotion/utils@npm:^1.4.1": version: 1.4.1 resolution: "@emotion/utils@npm:1.4.1" checksum: 10c0/f4704e0bdf48062fd6eb9c64771c88f521aab1e108a48cb23d65b6438597c63a6945301cef4c43611e79e0e76a304ec5481c31025ea8f573d7ad5423d747602c @@ -851,6 +808,32 @@ __metadata: languageName: node linkType: hard +"@floating-ui/core@npm:^1.6.0": + version: 1.6.8 + resolution: "@floating-ui/core@npm:1.6.8" + dependencies: + "@floating-ui/utils": "npm:^0.2.8" + checksum: 10c0/d6985462aeccae7b55a2d3f40571551c8c42bf820ae0a477fc40ef462e33edc4f3f5b7f11b100de77c9b58ecb581670c5c3f46d0af82b5e30aa185c735257eb9 + languageName: node + linkType: hard + +"@floating-ui/dom@npm:1.6.12": + version: 1.6.12 + resolution: "@floating-ui/dom@npm:1.6.12" + dependencies: + "@floating-ui/core": "npm:^1.6.0" + "@floating-ui/utils": "npm:^0.2.8" + checksum: 10c0/c67b39862175b175c6ac299ea970f17a22c7482cfdf3b1bc79313407bf0880188b022b878953fa69d3ce166ff2bd9ae57c86043e5dd800c262b470d877591b7d + languageName: node + linkType: hard + +"@floating-ui/utils@npm:^0.2.8": + version: 0.2.8 + resolution: "@floating-ui/utils@npm:0.2.8" + checksum: 10c0/a8cee5f17406c900e1c3ef63e3ca89b35e7a2ed645418459a73627b93b7377477fc888081011c6cd177cac45ec2b92a6cab018c14ea140519465498dddd2d3f9 + languageName: node + linkType: hard + "@humanfs/core@npm:^0.19.1": version: 0.19.1 resolution: "@humanfs/core@npm:0.19.1" @@ -882,6 +865,24 @@ __metadata: languageName: node linkType: hard +"@internationalized/date@npm:3.5.6": + version: 3.5.6 + resolution: "@internationalized/date@npm:3.5.6" + dependencies: + "@swc/helpers": "npm:^0.5.0" + checksum: 10c0/25d3150247175892705aeaf8e1a78295717d420c37cb3065a766c4058a1aed460a69dc5362f7073425c95095c27036c7ed65f0ce5fbb32b20f917132e8dc543f + languageName: node + linkType: hard + +"@internationalized/number@npm:3.5.4": + version: 3.5.4 + resolution: "@internationalized/number@npm:3.5.4" + dependencies: + "@swc/helpers": "npm:^0.5.0" + checksum: 10c0/d01a1845ad9815756ceb59eeb75792ee89105d073ce232350c0644453a3470e3ebaffc2b00ebd2dd8238957b0ae12d1551633308897fa9c332dda82f2af8c5cf + languageName: node + linkType: hard + "@isaacs/cliui@npm:^8.0.2": version: 8.0.2 resolution: "@isaacs/cliui@npm:8.0.2" @@ -987,6 +988,13 @@ __metadata: languageName: node linkType: hard +"@pandacss/is-valid-prop@npm:0.41.0": + version: 0.41.0 + resolution: "@pandacss/is-valid-prop@npm:0.41.0" + checksum: 10c0/338df67002ad6fc4beafcb096864720f937793db1e32e30568607997cee2d62ea84ad83e85436948b2c51196fbe16ed3eeae601ff8ca7ae0581806fc35b23c37 + languageName: node + linkType: hard + "@pkgjs/parseargs@npm:^0.11.0": version: 0.11.0 resolution: "@pkgjs/parseargs@npm:0.11.0" @@ -994,13 +1002,6 @@ __metadata: languageName: node linkType: hard -"@popperjs/core@npm:^2.11.8": - version: 2.11.8 - resolution: "@popperjs/core@npm:2.11.8" - checksum: 10c0/4681e682abc006d25eb380d0cf3efc7557043f53b6aea7a5057d0d1e7df849a00e281cd8ea79c902a35a414d7919621fc2ba293ecec05f413598e0b23d5a1e63 - languageName: node - linkType: hard - "@remix-run/router@npm:1.20.0": version: 1.20.0 resolution: "@remix-run/router@npm:1.20.0" @@ -1141,6 +1142,15 @@ __metadata: languageName: node linkType: hard +"@swc/helpers@npm:^0.5.0": + version: 0.5.15 + resolution: "@swc/helpers@npm:0.5.15" + dependencies: + tslib: "npm:^2.8.0" + checksum: 10c0/33002f74f6f885f04c132960835fdfc474186983ea567606db62e86acd0680ca82f34647e8e610f4e1e422d1c16fce729dde22cd3b797ab1fd9061a825dabca4 + languageName: node + linkType: hard + "@ts-morph/common@npm:~0.25.0": version: 0.25.0 resolution: "@ts-morph/common@npm:0.25.0" @@ -1223,15 +1233,6 @@ __metadata: languageName: node linkType: hard -"@types/lodash.mergewith@npm:4.6.9": - version: 4.6.9 - resolution: "@types/lodash.mergewith@npm:4.6.9" - dependencies: - "@types/lodash": "npm:*" - checksum: 10c0/d245cb8c66f88251a6251f93eaec9e876f8c967ef7dac67d7da75eec2a8049e37342478dbe5ae163a566c233b2a1ecd494b180ccaa8603bef58d4ca6a803d2cf - languageName: node - linkType: hard - "@types/lodash@npm:*": version: 4.17.12 resolution: "@types/lodash@npm:4.17.12" @@ -1412,26 +1413,830 @@ __metadata: languageName: node linkType: hard -"@zag-js/dom-query@npm:0.31.1": - version: 0.31.1 - resolution: "@zag-js/dom-query@npm:0.31.1" - checksum: 10c0/a7346f832ec1a005a5c516ef822f32b6a06ebdf95b5aed37630b268767c4f6f2bd59d1cbb8bf80dca51daddc5b13f2c0131e3b37a981f86f1cd13f30c6409f60 +"@zag-js/accordion@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/accordion@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dom-event": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/5c1fa39527c1500d8940fd4e33f03307c4d4f7019e2f76d8fc5cde8b3bcb0fa2f8641e69ce96d6de383c86a11d31fa48a27120140e3b50463d1a0960d9d6e63c + languageName: node + linkType: hard + +"@zag-js/anatomy@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/anatomy@npm:0.77.1" + checksum: 10c0/594e3d67d6ca74491de93b07859d004949413b63b8e8e49e272162a7eb41116831200548e376c9d0b14f8c5531297427edea395bd8bed48f1a6b58bbf4762020 + languageName: node + linkType: hard + +"@zag-js/aria-hidden@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/aria-hidden@npm:0.77.1" + dependencies: + aria-hidden: "npm:1.2.4" + checksum: 10c0/736726a17dca8c6a8168a4ceae349022c80ee67301fc84e3881459077c726328aadf2d28680412189e7ca740ce6011db47d5dd1fddcd72ff37bcb14b9348c305 + languageName: node + linkType: hard + +"@zag-js/auto-resize@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/auto-resize@npm:0.77.1" + dependencies: + "@zag-js/dom-query": "npm:0.77.1" + checksum: 10c0/ca42ed3136dbd4ff694be522d1694d94946d83eec6a9eb5b3b4e2f8f40e8b3d1e73a6dcc7fbf9d764b261cb0539738a63f7d4a1c47c46656c07d4fe8ecf2fd4c + languageName: node + linkType: hard + +"@zag-js/avatar@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/avatar@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/7452335c8bbeb2957a5a1d0f8dfdf2f4d7f7d4239d3c2389918ceaf5ee8af2b8c35bcfdac503ad1ad6fbbbfea112f9a6544038f58c31f5167cdf89e353198ad7 + languageName: node + linkType: hard + +"@zag-js/carousel@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/carousel@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/b2159995c2d5d55b6d7974c35442b89f38760ed38757c83de9d8d982cfc7a58aa38caa28d98a819530849a479ceed245f1a576a8f6a8e964e5e6dba294712ed5 + languageName: node + linkType: hard + +"@zag-js/checkbox@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/checkbox@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dom-event": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/focus-visible": "npm:0.77.1" + "@zag-js/form-utils": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/36c3193e6579aa75cfa7f14650412f689bd9959705b495440095a7fd86511a35d88f6e30785ab2a703f9d240b023ebf4e524ae07cabc4b80bdb139ee3f3de109 + languageName: node + linkType: hard + +"@zag-js/clipboard@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/clipboard@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/730a65a391375c639253ae2ef101879f84b79d4f146d16534b2f8e368a05be7d8bdb5e059f753517103f8d9980c7c96be0a3928a481379736666f5b603f44077 + languageName: node + linkType: hard + +"@zag-js/collapsible@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/collapsible@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/2fb64ccd5a8cbd50355ac9ee93da1e614f3dc8f33d14cd81bf6a4dda5537aa4fca624b2bb88f990264636a8b1cbdb97f00467f3fb6325508f30046b96b97eca7 + languageName: node + linkType: hard + +"@zag-js/collection@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/collection@npm:0.77.1" + dependencies: + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/b2f415981ce303ce8f0f6c3062b0e33d8c888adc38fd74c88c690b3afca2271a1d062c404080d3360023204028b25e43a48ae45182a191401c666c9d40e8a154 + languageName: node + linkType: hard + +"@zag-js/color-picker@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/color-picker@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/color-utils": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dismissable": "npm:0.77.1" + "@zag-js/dom-event": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/form-utils": "npm:0.77.1" + "@zag-js/popper": "npm:0.77.1" + "@zag-js/text-selection": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/aa6a4601f81fad2457ae3c4af30dfa591f0975ea8e9701382a95b59b5baadbcb3a980e4902ec07440501dfdd6b98f114601a09e1d6121b2a7df9a8c523288de6 + languageName: node + linkType: hard + +"@zag-js/color-utils@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/color-utils@npm:0.77.1" + dependencies: + "@zag-js/numeric-range": "npm:0.77.1" + checksum: 10c0/324160b956226395acaca68e02090e5989d4b650c305614c4ec1795dacddec9ef344d2b2f7ebb221ac1bf964462d76f3e74b3c252ac51ec7f2d82c100729f227 + languageName: node + linkType: hard + +"@zag-js/combobox@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/combobox@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/aria-hidden": "npm:0.77.1" + "@zag-js/collection": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dismissable": "npm:0.77.1" + "@zag-js/dom-event": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/popper": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/cade989fc00115c4c4229bae67ad94b6f312b390999ef83c0eac43883b2f7b7d2ec79c2071b6602122c375cd4ccfe678a07df9649b32c3f715fb46eb715f5a8a + languageName: node + linkType: hard + +"@zag-js/core@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/core@npm:0.77.1" + dependencies: + "@zag-js/store": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + klona: "npm:2.0.6" + checksum: 10c0/3cdc3aa6b9a3e6f74c4604a382ed1b04274a1d4e0bf75c5d96d253409cb88e5d147bfe5f14409f50c45e88daf312b7f7568f95d814de560200dd1ab0a49b93b3 + languageName: node + linkType: hard + +"@zag-js/date-picker@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/date-picker@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/date-utils": "npm:0.77.1" + "@zag-js/dismissable": "npm:0.77.1" + "@zag-js/dom-event": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/form-utils": "npm:0.77.1" + "@zag-js/live-region": "npm:0.77.1" + "@zag-js/popper": "npm:0.77.1" + "@zag-js/text-selection": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + peerDependencies: + "@internationalized/date": ">=3.0.0" + checksum: 10c0/a8da1471bf9204ee9c46d8e4228624aecb99992280ec10979022f02bfa12a87c89558e578ee81825b8d986fc28fda3e34b797dd7b215b7bb54f93a7e7a4ff4f9 + languageName: node + linkType: hard + +"@zag-js/date-utils@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/date-utils@npm:0.77.1" + peerDependencies: + "@internationalized/date": ">=3.0.0" + checksum: 10c0/e053c60782cff0b59b37cdbb17439798ba2e6187dc8d6afafcb3ce38058870e05ffc9486e616216aa6aeea9e45a9f3dcbcf7a10b0c6a9e43bc41136ce09b138a + languageName: node + linkType: hard + +"@zag-js/dialog@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/dialog@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/aria-hidden": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dismissable": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/remove-scroll": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + focus-trap: "npm:7.6.0" + checksum: 10c0/630c2e3f7a78361d6084e8c2f34d7ad64c98e21ee070527f94aca3c39be3740586901aade6545c0182d2f63651eb546f8e4d5d8fb3eacd45413dd9fd6c53d410 + languageName: node + linkType: hard + +"@zag-js/dismissable@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/dismissable@npm:0.77.1" + dependencies: + "@zag-js/dom-event": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/interact-outside": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/3b2f59be6b23595ec6602fb2f0b2b29e55cc8ef4f3e4ee77b604f82e90842213123b6279530a686f52799c02dbf3addf949d0b3b43ab8941b73a74a762ec7751 + languageName: node + linkType: hard + +"@zag-js/dom-event@npm:0.77.1, @zag-js/dom-event@npm:^0.77.1": + version: 0.77.1 + resolution: "@zag-js/dom-event@npm:0.77.1" + dependencies: + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/text-selection": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + checksum: 10c0/2e95a375b62eb75edba2bd3a8e6c1bb05ed6fb1d3823fd6427a3b60697715840dd50847fd82e674fc1123da5a096a1e4a76c99a3acb4157bc0236c867d7ae660 + languageName: node + linkType: hard + +"@zag-js/dom-query@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/dom-query@npm:0.77.1" + checksum: 10c0/825beebe732f213f11bb23c0f48eae0032f91e7fccd0fd3f2636062684e5c82a862ed37b1e2a3278ab603d9f588dd8957b438a499b803aa6d730ac710a1cd0bc + languageName: node + linkType: hard + +"@zag-js/editable@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/editable@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dom-event": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/form-utils": "npm:0.77.1" + "@zag-js/interact-outside": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/c40539c3b88690e00d48ff49018542a7a97bf315594bbd29280c6d26eae2eb685d3849318399c4bf214ce635286acd20143a1d1404d56fdef8da82cf93e4b3d7 + languageName: node + linkType: hard + +"@zag-js/element-rect@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/element-rect@npm:0.77.1" + checksum: 10c0/c0d6c5423f5aad3e62d5882517f64b96702da125ed5514d041fc7e48c76d40de47568c9f8e066e35cad1743f1e5463b4bf43cccacbf04b17fb4b4b1e032e5c6c + languageName: node + linkType: hard + +"@zag-js/element-size@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/element-size@npm:0.77.1" + checksum: 10c0/7617928bdfb8347be5fd5838f97237244eb6c1105f86fd777de8b3637b972caff844f99e350851df281ce3c8e79cf71d2cea1d3ea4cb10ee4fe750b2f01d7e52 + languageName: node + linkType: hard + +"@zag-js/file-upload@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/file-upload@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/file-utils": "npm:0.77.1" + "@zag-js/i18n-utils": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/9540cac47f4ea971a00602c6718f9c594b4a6d78fb5772d731adc1d1e2f9fd051eff64862c4d9a8836263bec38c0a08cc56a6654af44f78316d10db895dc2da6 + languageName: node + linkType: hard + +"@zag-js/file-utils@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/file-utils@npm:0.77.1" + dependencies: + "@zag-js/i18n-utils": "npm:0.77.1" + checksum: 10c0/a73998b328c8c6b249882825f07f96f67dfc2d070cfd7faa118c49284041a16ed68fe19e76b6bd701ab3c1ed891caf3aa4ab0ce70d0f13116a7efcc44827e135 + languageName: node + linkType: hard + +"@zag-js/focus-visible@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/focus-visible@npm:0.77.1" + dependencies: + "@zag-js/dom-query": "npm:0.77.1" + checksum: 10c0/2ac69ad911bbe2f4f6eb12c5e8f6f1cbf6ea32766045e191e2a3b92d3d837cebf52c7be000a747033c7e27111ced74690f9a548877cf877faea02389d1c33fd0 + languageName: node + linkType: hard + +"@zag-js/form-utils@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/form-utils@npm:0.77.1" + checksum: 10c0/56ad1636e030c9190d9b7a04cd3844f3fb8cb5629b357d18f48a5d6d6cdeab1b4dd935ad4631a95e357fc5a2d1043302bf8dc8825154a192c7cf323f2e5b2dbf + languageName: node + linkType: hard + +"@zag-js/highlight-word@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/highlight-word@npm:0.77.1" + checksum: 10c0/d1775c57bf8ac5e8b7236003c978f0f93db86f54c16ed7327bff533bdb7716700935be3578d6136d7fe00006e2cbf145f0146b43ef2f9ab6ada55870c7aea225 + languageName: node + linkType: hard + +"@zag-js/hover-card@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/hover-card@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dismissable": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/popper": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/247b0454bf627f34f9beb68e96c4a181af2711b4cc0482b29e0130f4245e4121deac1cea3a887d9795d979a9209f6ab0e7cc77522fa82cb8afade8d9f60b8d0f languageName: node linkType: hard -"@zag-js/element-size@npm:0.31.1": - version: 0.31.1 - resolution: "@zag-js/element-size@npm:0.31.1" - checksum: 10c0/cb81bad07ab3d8176a81fe24e55e61c88473a93875264133aa0a4c4f790585885fce5bd771c0b8f8970952ef4a5c67e0c03f698fd21db55707298c3ed8f93fed +"@zag-js/i18n-utils@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/i18n-utils@npm:0.77.1" + dependencies: + "@zag-js/dom-query": "npm:0.77.1" + checksum: 10c0/41a880bb22e94d94fcdddd06b8b4e29a16ee3046cc679bd8cd2e788dd2186c9f930fe614b440175514e9a2c98d2236d85fdb0270bcca44146211192d83511b1e languageName: node linkType: hard -"@zag-js/focus-visible@npm:^0.31.1": - version: 0.31.1 - resolution: "@zag-js/focus-visible@npm:0.31.1" +"@zag-js/interact-outside@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/interact-outside@npm:0.77.1" dependencies: - "@zag-js/dom-query": "npm:0.31.1" - checksum: 10c0/7c6e0db4cf8ca4bba1814bf56ca6367fda10f6223078181db6bf8629bd3059485df0ad7a53665e2fb77d4dfa99ae6d1b5dc987bd3f88b5fca5134c6fa874d37a + "@zag-js/dom-event": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/b91830785edad305a53be9063d73df0d15bb464d4e59d38aad32b4ef79679c1fd151a821b00272f604ae4eb337422585a69571cf0bda1b97bd4d3586aa80a386 + languageName: node + linkType: hard + +"@zag-js/live-region@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/live-region@npm:0.77.1" + checksum: 10c0/b41f9340dd2148d6c077e28e315de655eaaf797d6585de3810689e34ca3103df441610a568af954f37f4389c8dd7b45730666e8ceab0d7383fb30667b820727d + languageName: node + linkType: hard + +"@zag-js/menu@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/menu@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dismissable": "npm:0.77.1" + "@zag-js/dom-event": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/popper": "npm:0.77.1" + "@zag-js/rect-utils": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/21bfc155ce4fed5910ec7899cb8b86767dedfb3f5f4d900e680462fff0ec710318d52e3d918281c8779d3ab755958fdbfad5db424c59546888c9d629744041c4 + languageName: node + linkType: hard + +"@zag-js/number-input@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/number-input@npm:0.77.1" + dependencies: + "@internationalized/number": "npm:3.5.4" + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dom-event": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/form-utils": "npm:0.77.1" + "@zag-js/number-utils": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/6d4ea9f2ccb1ccf1515d40b067d5ac228208b56b47b2c45d23ef1d699e4471de9a90de9b7e2e6be207f00d9cd3d6a781b858c07c1bd44ce2013d12f8bb2f86f0 + languageName: node + linkType: hard + +"@zag-js/number-utils@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/number-utils@npm:0.77.1" + checksum: 10c0/80b11fbdefc23254726ce4e19552437841c05e6d8ef50b7a080663e479622c143b867549d3deb52929c1b7bbace9f05a575d4fc0934dc09b256a435df2e93fc4 + languageName: node + linkType: hard + +"@zag-js/numeric-range@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/numeric-range@npm:0.77.1" + checksum: 10c0/edbc56b17908d57d7fbac1b93df914980b0b96a2576845e35afeba161fb649342cd9a0fc215a582ee9ff5d07393037cd63c7d66d3d0e7f25972520a73b9c1e43 + languageName: node + linkType: hard + +"@zag-js/pagination@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/pagination@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/9d153063b221f4c1e2183df961fd3a9f8329cbb458b74e240a2d1266144857d6d7a9df0dd6c05cf150e4cbc52c8ee9c167819706b77cb68b1b7344c7a191add5 + languageName: node + linkType: hard + +"@zag-js/pin-input@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/pin-input@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dom-event": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/form-utils": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/527be55cdca7e75eb03e0f947ef5e0f23c7d2b9f9cd5984731305c652f287e2b53a588d721d10f4a4fea45c49325999f93bd999d1608d6ed78c93cbde2d0effa + languageName: node + linkType: hard + +"@zag-js/popover@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/popover@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/aria-hidden": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dismissable": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/popper": "npm:0.77.1" + "@zag-js/remove-scroll": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + focus-trap: "npm:7.6.0" + checksum: 10c0/51ef68aad2a3842385333e045d35849b9fac9be5dfa982c141077b4366484c2cfdaee4879bbc187a0c8c3a9242b913dd674cd472921ed84165ad2ee3788599a4 + languageName: node + linkType: hard + +"@zag-js/popper@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/popper@npm:0.77.1" + dependencies: + "@floating-ui/dom": "npm:1.6.12" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/21e6fc488577ce8f8b3ed95f0075b07f150c0fab59b7ecdec91f52c6490004beaf679f2a0251eef49655848c6dfc59d3916aa9ee2142a96b3498e263af191355 + languageName: node + linkType: hard + +"@zag-js/presence@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/presence@npm:0.77.1" + dependencies: + "@zag-js/core": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + checksum: 10c0/6131e0fefbb8acfb8f460dbf7dd5718545cd57f449a112870ec5eba58c198d69218f47f3ef0bf62e970a1de43f049386b18fe49a2da97bdde50d327b3ed15d29 + languageName: node + linkType: hard + +"@zag-js/progress@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/progress@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/df5c6d30675de563866be4309384f27ab26525c8cee823f7ff3aee31ebd1814fa25b2ed2c1138aba8f087f02401f0409663cf2880e7fe19c030637ed8dd80ca0 + languageName: node + linkType: hard + +"@zag-js/qr-code@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/qr-code@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + proxy-memoize: "npm:3.0.1" + uqr: "npm:0.1.2" + checksum: 10c0/dd93831521fbd01ad2486a5220493a36829db878b35392254f04046a49d69980ec15543880c17262b67761d4de8ea9f660a9663098b61ea3e24393f59fcd1a8e + languageName: node + linkType: hard + +"@zag-js/radio-group@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/radio-group@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/element-rect": "npm:0.77.1" + "@zag-js/focus-visible": "npm:0.77.1" + "@zag-js/form-utils": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/ac7eb1e28d6e6c083d7855126236b374e1510bf784b0e4cac4029ababdbe529199e581f30ad3509a58410c48bd50377dca97fa3d6fd5077465578a7ca0fd7bcf + languageName: node + linkType: hard + +"@zag-js/rating-group@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/rating-group@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dom-event": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/form-utils": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/85bc123456075ffbb6418c46cd9cbd39721ab97267ac989a09c6f780f84601279940b19a2c440a0879c9162868584cbb0bcc99adec1f147d552da581fb5ccc08 + languageName: node + linkType: hard + +"@zag-js/react@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/react@npm:0.77.1" + dependencies: + "@zag-js/core": "npm:0.77.1" + "@zag-js/store": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + proxy-compare: "npm:3.0.0" + peerDependencies: + react: ">=18.0.0" + react-dom: ">=18.0.0" + checksum: 10c0/68093bd7cea4b2c163b3ff77418dd55bf5602f0f5070ae9338c78d63b448bd6ffd87def4bb5d881d7ec51807d8c00bf6fa70ac050cd5467381e7bada32fc2902 + languageName: node + linkType: hard + +"@zag-js/rect-utils@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/rect-utils@npm:0.77.1" + checksum: 10c0/58d0b6c6d2f151cac2a1e36a5e4674503cdc57a7e58932753dbbe576c50a6b80bdeb62cdefabbc2a91a1c39159994a77b79b77b9ac0fae8b9a64d0c68a7134dd + languageName: node + linkType: hard + +"@zag-js/remove-scroll@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/remove-scroll@npm:0.77.1" + dependencies: + "@zag-js/dom-query": "npm:0.77.1" + checksum: 10c0/b039ca6a631ba557626b6e01d9a12fcfcde9e76e82eb01967f4990a1161e6f74ade4ea62bab279ccde87b902d2191b1b4132f91517a6799e6cb7ce4e58ebcde1 + languageName: node + linkType: hard + +"@zag-js/select@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/select@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/collection": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dismissable": "npm:0.77.1" + "@zag-js/dom-event": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/form-utils": "npm:0.77.1" + "@zag-js/popper": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/cba930dad784e1389d6f48dc4a55a1c767539238bc44732d29f4f57f08fde9f2a69b53d67d74e40f0b737c58038da75120a350cf44b642343327d138ef85c164 + languageName: node + linkType: hard + +"@zag-js/signature-pad@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/signature-pad@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dom-event": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + perfect-freehand: "npm:^1.2.2" + checksum: 10c0/4a8a9de984d03fc19c9b0e99dd1622864b40a35e56098e75d873408b20382be08a7a48a8edc250cf0e4a9a34c54fcd0e4a4fbef5e335a5b077d528e54b2f1cce + languageName: node + linkType: hard + +"@zag-js/slider@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/slider@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dom-event": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/element-size": "npm:0.77.1" + "@zag-js/form-utils": "npm:0.77.1" + "@zag-js/numeric-range": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/70271f40e9ada2c9807a85023a573e815c5640a94073707132d246c5ee57b7465605ecf3510bf25c2edd5431323dc503089af396c9006d33dbde80bc59e5f7e7 + languageName: node + linkType: hard + +"@zag-js/splitter@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/splitter@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dom-event": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/number-utils": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/a31d0f76542c2aa884ea81a8fcafb9bafa52cea3f31c5bcf22e9ffe827bffb268d38003f00cc655697c5ce8bdd558ce11c6adc02d35b0b828e41aee41c768ff5 + languageName: node + linkType: hard + +"@zag-js/steps@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/steps@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/99bab09e96b538c46e0a38d2b22d2c97e682a49b2266a80c1924c82191221b3f1625e34d1ba718543f6090f319dfc36bcbdc3ce0f7e55aa9b3466b3abd382337 + languageName: node + linkType: hard + +"@zag-js/store@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/store@npm:0.77.1" + dependencies: + proxy-compare: "npm:3.0.0" + checksum: 10c0/cd08fc00137b9ade6518bfb201380da229f3cd6f54996df1bda7628e701d4e942e600278ba49f83c6c7c5f286182a09fa910e6d44bfaf23606ebed8c4f17b0a4 + languageName: node + linkType: hard + +"@zag-js/switch@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/switch@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dom-event": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/focus-visible": "npm:0.77.1" + "@zag-js/form-utils": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/dc7ffc3ad80b0512aed23973f392b1bb4b26dcac41706d586049ba55573f237b4b444d8cdbb48d63e5304486f837f59b8fb6805266301ceb75a5dd1a931a225c + languageName: node + linkType: hard + +"@zag-js/tabs@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/tabs@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dom-event": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/element-rect": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/31561255fd94785e943ed90ee9090110d299ce36006d6cb8f1785f37ff73e9e65c13d67a5f4fb7045267690224a163ec196356eb99750aa0e9a54d2e328b9425 + languageName: node + linkType: hard + +"@zag-js/tags-input@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/tags-input@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/auto-resize": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dom-event": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/form-utils": "npm:0.77.1" + "@zag-js/interact-outside": "npm:0.77.1" + "@zag-js/live-region": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/58780192f147e9724fd2d4f29cfcb601f5e62e59950d39284cac5ac6ce5d9d768e5c1d53766e2621bbd07d785e5a7392b625912a4006b64bcd0550c0c909b101 + languageName: node + linkType: hard + +"@zag-js/text-selection@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/text-selection@npm:0.77.1" + dependencies: + "@zag-js/dom-query": "npm:0.77.1" + checksum: 10c0/f8ca9a3d644bd82c0a025f8faceaa438a453c4a160a38a49d947a72a8d8f3988a2902959efb19cf4210ebb1a58b4fa7bb3bc7d06682af4dd96c98188c2e5cb58 + languageName: node + linkType: hard + +"@zag-js/time-picker@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/time-picker@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dismissable": "npm:0.77.1" + "@zag-js/dom-event": "npm:^0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/popper": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + peerDependencies: + "@internationalized/date": ">=3.0.0" + checksum: 10c0/11fcd37f16ccdc916752b5c839d368c5623a138f665b4186c881734fa709585be4514d23e2d603acac26f3a5153dca5d8160221c64ada5621418da93a67f6daf + languageName: node + linkType: hard + +"@zag-js/timer@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/timer@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/96e94b42ae753d9c70e9c2a4b4750d443bb174021fac15ede9d14088a41ad59ff919430e532e07e43fdc3b115c80477fdc57829378ba9356bb2eb0a5d2932b76 + languageName: node + linkType: hard + +"@zag-js/toast@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/toast@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dismissable": "npm:0.77.1" + "@zag-js/dom-event": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/41e2514b67c65b4c61e58697e9d247b616d0846d7f16fc783ebff32e513d3f07ecc3d42dda222e4eb56a6a00007938f418b9b09940a982b393be7eb12161b525 + languageName: node + linkType: hard + +"@zag-js/toggle-group@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/toggle-group@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dom-event": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/5e4ec217d40807a8d989c0086b222d5ffae5ead7ef0cd39f658eee2a2833583ee240a59ff74deec8f54aa3d422439b578cdea23ded80211cb496dff51f046ff0 + languageName: node + linkType: hard + +"@zag-js/tooltip@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/tooltip@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dom-event": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/focus-visible": "npm:0.77.1" + "@zag-js/popper": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/89c07f2efe8179f91f4154eee8eb6420cb74e827137dfd6639a0962b2a238b30b028d35855b6e8ff539a8a766fb9c9ade861b9a4a6a4b4b6de63df85f58dcba5 + languageName: node + linkType: hard + +"@zag-js/tree-view@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/tree-view@npm:0.77.1" + dependencies: + "@zag-js/anatomy": "npm:0.77.1" + "@zag-js/collection": "npm:0.77.1" + "@zag-js/core": "npm:0.77.1" + "@zag-js/dom-event": "npm:0.77.1" + "@zag-js/dom-query": "npm:0.77.1" + "@zag-js/types": "npm:0.77.1" + "@zag-js/utils": "npm:0.77.1" + checksum: 10c0/b5dd99b113fda0047d53e5da01d2e8dc0ecea60977c99914495ee043a536bfc49354eee88350d967e34f996947ca1aa293543fe8716da52ec27ce41c390db1b9 + languageName: node + linkType: hard + +"@zag-js/types@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/types@npm:0.77.1" + dependencies: + csstype: "npm:3.1.3" + checksum: 10c0/978fd9056e79a11fb34449879c8dbc78411b7b37a7c1cfbb36417328be15d219d60f5022b7bc304bb5a6042e14c4e52f75936e455da2e0d7fea65c50fb8dd9d6 + languageName: node + linkType: hard + +"@zag-js/utils@npm:0.77.1": + version: 0.77.1 + resolution: "@zag-js/utils@npm:0.77.1" + checksum: 10c0/ff428509a0fe595dbc4a9a53aab4c30cc4a1915a6d4c70c63a76f4fce86b2f736519d2bcf41170b87b2a6400e9a510493e957be651f90356cc034234c9e5ff03 languageName: node linkType: hard @@ -1528,7 +2333,7 @@ __metadata: languageName: node linkType: hard -"aria-hidden@npm:^1.2.3": +"aria-hidden@npm:1.2.4": version: 1.2.4 resolution: "aria-hidden@npm:1.2.4" dependencies: @@ -1813,15 +2618,6 @@ __metadata: languageName: node linkType: hard -"copy-to-clipboard@npm:3.3.3": - version: 3.3.3 - resolution: "copy-to-clipboard@npm:3.3.3" - dependencies: - toggle-selection: "npm:^1.0.6" - checksum: 10c0/3ebf5e8ee00601f8c440b83ec08d838e8eabb068c1fae94a9cda6b42f288f7e1b552f3463635f419af44bf7675afc8d0390d30876cf5c2d5d35f86d9c56a3e5f - languageName: node - linkType: hard - "cosmiconfig@npm:^7.0.0": version: 7.1.0 resolution: "cosmiconfig@npm:7.1.0" @@ -1855,7 +2651,7 @@ __metadata: languageName: node linkType: hard -"csstype@npm:^3.0.2, csstype@npm:^3.1.2": +"csstype@npm:3.1.3, csstype@npm:^3.0.2, csstype@npm:^3.1.2": version: 3.1.3 resolution: "csstype@npm:3.1.3" checksum: 10c0/80c089d6f7e0c5b2bd83cf0539ab41474198579584fa10d86d0cafe0642202343cbc119e076a0b1aece191989477081415d66c9fefbf3c957fc2fc4b7009f248 @@ -1952,13 +2748,6 @@ __metadata: languageName: node linkType: hard -"detect-node-es@npm:^1.1.0": - version: 1.1.0 - resolution: "detect-node-es@npm:1.1.0" - checksum: 10c0/e562f00de23f10c27d7119e1af0e7388407eb4b06596a25f6d79a360094a109ff285de317f02b090faae093d314cf6e73ac3214f8a5bb3a0def5bece94557fbe - languageName: node - linkType: hard - "doctrine@npm:^2.1.0": version: 2.1.0 resolution: "doctrine@npm:2.1.0" @@ -2547,12 +3336,12 @@ __metadata: languageName: node linkType: hard -"focus-lock@npm:^1.3.5": - version: 1.3.5 - resolution: "focus-lock@npm:1.3.5" +"focus-trap@npm:7.6.0": + version: 7.6.0 + resolution: "focus-trap@npm:7.6.0" dependencies: - tslib: "npm:^2.0.3" - checksum: 10c0/240fe013c2945200d3391856789d381bf3e09f488342a7965e00d0933de93ac2e8b0ccfa7da6353c11a30e369035f3b7e54cac9b0ebaf6825252a9ffc6445978 + tabbable: "npm:^6.2.0" + checksum: 10c0/5d1cdefdc11ae97f2c7bcced5c0facfa9794e1ec7a9d8b6547f3f03b51de0423ab572666371f6632b2165613470ec8245daea836160319d52d7a6434e6847a23 languageName: node linkType: hard @@ -2575,26 +3364,6 @@ __metadata: languageName: node linkType: hard -"framer-motion@npm:^11.3.29": - version: 11.11.10 - resolution: "framer-motion@npm:11.11.10" - dependencies: - tslib: "npm:^2.4.0" - peerDependencies: - "@emotion/is-prop-valid": "*" - react: ^18.0.0 - react-dom: ^18.0.0 - peerDependenciesMeta: - "@emotion/is-prop-valid": - optional: true - react: - optional: true - react-dom: - optional: true - checksum: 10c0/0f8cdcfad0b1bb371db70a93605da17f191484b47e197387349c5f30b848f799d35e51ec8b54245756e5652903607a051c718fc16997616cf0cd97b1ee642871 - languageName: node - linkType: hard - "framesync@npm:6.1.2": version: 6.1.2 resolution: "framesync@npm:6.1.2" @@ -2687,13 +3456,6 @@ __metadata: languageName: node linkType: hard -"get-nonce@npm:^1.0.0": - version: 1.0.1 - resolution: "get-nonce@npm:1.0.1" - checksum: 10c0/2d7df55279060bf0568549e1ffc9b84bc32a32b7541675ca092dce56317cdd1a59a98dcc4072c9f6a980779440139a3221d7486f52c488e69dc0fd27b1efb162 - languageName: node - linkType: hard - "get-symbol-description@npm:^1.0.2": version: 1.0.2 resolution: "get-symbol-description@npm:1.0.2" @@ -2942,15 +3704,6 @@ __metadata: languageName: node linkType: hard -"invariant@npm:^2.2.4": - version: 2.2.4 - resolution: "invariant@npm:2.2.4" - dependencies: - loose-envify: "npm:^1.0.0" - checksum: 10c0/5af133a917c0bcf65e84e7f23e779e7abc1cd49cb7fdc62d00d1de74b0d8c1b5ee74ac7766099fb3be1b05b26dfc67bab76a17030d2fe7ea2eef867434362dfc - languageName: node - linkType: hard - "ip-address@npm:^9.0.5": version: 9.0.5 resolution: "ip-address@npm:9.0.5" @@ -3264,6 +4017,13 @@ __metadata: languageName: node linkType: hard +"klona@npm:2.0.6": + version: 2.0.6 + resolution: "klona@npm:2.0.6" + checksum: 10c0/94eed2c6c2ce99f409df9186a96340558897b3e62a85afdc1ee39103954d2ebe1c1c4e9fe2b0952771771fa96d70055ede8b27962a7021406374fdb695fd4d01 + languageName: node + linkType: hard + "kolmafia@npm:tome-kolmafia-mock@5.28118.0": version: 5.28118.0 resolution: "tome-kolmafia-mock@npm:5.28118.0" @@ -3324,7 +4084,7 @@ __metadata: languageName: node linkType: hard -"loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0": +"loose-envify@npm:^1.1.0": version: 1.4.0 resolution: "loose-envify@npm:1.4.0" dependencies: @@ -3351,6 +4111,15 @@ __metadata: languageName: node linkType: hard +"lucide-react@npm:^0.460.0": + version: 0.460.0 + resolution: "lucide-react@npm:0.460.0" + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc + checksum: 10c0/7f54cbc1ab88276f79cfb8c3ac440de9db013d76e386abc68deda4b04ea51e826f1ad5df22983619b970adff7430d892d4e990dbdf6eceb7243eb2e9a2762704 + languageName: node + linkType: hard + "make-fetch-happen@npm:^13.0.0": version: 13.0.1 resolution: "make-fetch-happen@npm:13.0.1" @@ -3536,6 +4305,16 @@ __metadata: languageName: node linkType: hard +"next-themes@npm:^0.4.3": + version: 0.4.3 + resolution: "next-themes@npm:0.4.3" + peerDependencies: + react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + checksum: 10c0/81dbe9efed2b10169e4ecd2ff59f3dedc091518c92a79354b863ccdcc444a061125de975af5c0c123ce9a1ebd7b20b05a1fdbfcf2aaeeb337fec03fe38fd8cb0 + languageName: node + linkType: hard + "node-gyp@npm:latest": version: 10.2.0 resolution: "node-gyp@npm:10.2.0" @@ -3574,13 +4353,6 @@ __metadata: languageName: node linkType: hard -"object-assign@npm:^4.1.1": - version: 4.1.1 - resolution: "object-assign@npm:4.1.1" - checksum: 10c0/1f4df9945120325d041ccf7b86f31e8bcc14e73d29171e37a7903050e96b81323784ec59f93f102ec635bcf6fa8034ba3ea0a8c7e69fa202b87ae3b6cec5a414 - languageName: node - linkType: hard - "object-inspect@npm:^1.13.1": version: 1.13.2 resolution: "object-inspect@npm:1.13.2" @@ -3762,6 +4534,13 @@ __metadata: languageName: node linkType: hard +"perfect-freehand@npm:^1.2.2": + version: 1.2.2 + resolution: "perfect-freehand@npm:1.2.2" + checksum: 10c0/8f7ae1cd24bdd91b51b06eb8a02bee1b4ecef361df9e3ef9a56aa942e14f59820cccff919eb33831493e12af2a6b7f8617cbdc59bf0b11723f4ffdc8fe325f1a + languageName: node + linkType: hard + "picocolors@npm:^1.0.0, picocolors@npm:^1.1.0": version: 1.1.1 resolution: "picocolors@npm:1.1.1" @@ -3834,14 +4613,19 @@ __metadata: languageName: node linkType: hard -"prop-types@npm:^15.6.2": - version: 15.8.1 - resolution: "prop-types@npm:15.8.1" +"proxy-compare@npm:3.0.0, proxy-compare@npm:^3.0.0": + version: 3.0.0 + resolution: "proxy-compare@npm:3.0.0" + checksum: 10c0/9740af3709496b16ba18ebc337df5ca4c103f345436a8c0ec2e09217b7a06e119c145bedfe7fc4ad50b77b30fa804efaa6a7fe147eafb61aaf7ef44e387710f5 + languageName: node + linkType: hard + +"proxy-memoize@npm:3.0.1": + version: 3.0.1 + resolution: "proxy-memoize@npm:3.0.1" dependencies: - loose-envify: "npm:^1.4.0" - object-assign: "npm:^4.1.1" - react-is: "npm:^16.13.1" - checksum: 10c0/59ece7ca2fb9838031d73a48d4becb9a7cc1ed10e610517c7d8f19a1e02fa47f7c27d557d8a5702bec3cfeccddc853579832b43f449e54635803f277b1c78077 + proxy-compare: "npm:^3.0.0" + checksum: 10c0/cfdd442365fb7081dcba427ded75a8a9b68af17e72eef8098aa2e6d625914ac4152021832c631f071660d2f61ec18aaaa07ec77142abaa50b12dcaa845de8e4c languageName: node linkType: hard @@ -3859,17 +4643,6 @@ __metadata: languageName: node linkType: hard -"react-clientside-effect@npm:^1.2.6": - version: 1.2.6 - resolution: "react-clientside-effect@npm:1.2.6" - dependencies: - "@babel/runtime": "npm:^7.12.13" - peerDependencies: - react: ^15.3.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 - checksum: 10c0/aba0adb666018e5c64657c31f4914a8558be73f71d6e2210fa871ebfcab94d786c83082868d7c7fa66feddc2aec19e375745cf0903e0619f2efffef08b92d941 - languageName: node - linkType: hard - "react-dom@npm:^18.3.1": version: 18.3.1 resolution: "react-dom@npm:18.3.1" @@ -3900,27 +4673,16 @@ __metadata: languageName: node linkType: hard -"react-focus-lock@npm:^2.9.6": - version: 2.13.2 - resolution: "react-focus-lock@npm:2.13.2" - dependencies: - "@babel/runtime": "npm:^7.0.0" - focus-lock: "npm:^1.3.5" - prop-types: "npm:^15.6.2" - react-clientside-effect: "npm:^1.2.6" - use-callback-ref: "npm:^1.3.2" - use-sidecar: "npm:^1.1.2" +"react-icons@npm:^5.3.0": + version: 5.3.0 + resolution: "react-icons@npm:5.3.0" peerDependencies: - "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/6d4539e9ec5943de8a7eb856df7ab97c3da751ce6515512ca337dfb2bd06499ebc1051f8c96b142ad093637825a0ddcceb884282c1ec246dd02f293a8aafa688 + react: "*" + checksum: 10c0/a53af0de558f0e2bacfbafc973aa8ca1e6a429006a2f83d70becad5be431726a691e096336c95949bb0d967587b145264c5046d2bc1518969dbae731855d0712 languageName: node linkType: hard -"react-is@npm:^16.13.1, react-is@npm:^16.7.0": +"react-is@npm:^16.7.0": version: 16.13.1 resolution: "react-is@npm:16.13.1" checksum: 10c0/33977da7a5f1a287936a0c85639fec6ca74f4f15ef1e59a6bc20338fc73dc69555381e211f7a3529b8150a1f71e4225525b41b60b52965bda53ce7d47377ada1 @@ -3934,41 +4696,6 @@ __metadata: languageName: node linkType: hard -"react-remove-scroll-bar@npm:^2.3.6": - version: 2.3.6 - resolution: "react-remove-scroll-bar@npm:2.3.6" - dependencies: - react-style-singleton: "npm:^2.2.1" - tslib: "npm:^2.0.0" - peerDependencies: - "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/4e32ee04bf655a8bd3b4aacf6ffc596ae9eb1b9ba27eef83f7002632ee75371f61516ae62250634a9eae4b2c8fc6f6982d9b182de260f6c11841841e6e2e7515 - languageName: node - linkType: hard - -"react-remove-scroll@npm:^2.5.7": - version: 2.6.0 - resolution: "react-remove-scroll@npm:2.6.0" - dependencies: - react-remove-scroll-bar: "npm:^2.3.6" - react-style-singleton: "npm:^2.2.1" - tslib: "npm:^2.1.0" - use-callback-ref: "npm:^1.3.0" - use-sidecar: "npm:^1.1.2" - peerDependencies: - "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/c5881c537477d986e8d25d2588a9b6f7fe1254e05946fb4f4b55baeead502b0e1875fc3c42bb6f82736772cd96a50266e41d84e3c4cd25e9525bdfe2d838e96d - languageName: node - linkType: hard - "react-router-dom@npm:^6.26.1": version: 6.27.0 resolution: "react-router-dom@npm:6.27.0" @@ -3993,23 +4720,6 @@ __metadata: languageName: node linkType: hard -"react-style-singleton@npm:^2.2.1": - version: 2.2.1 - resolution: "react-style-singleton@npm:2.2.1" - dependencies: - get-nonce: "npm:^1.0.0" - invariant: "npm:^2.2.4" - tslib: "npm:^2.0.0" - peerDependencies: - "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/6d66f3bdb65e1ec79089f80314da97c9a005087a04ee034255a5de129a4c0d9fd0bf99fa7bf642781ac2dc745ca687aae3de082bd8afdd0d117bc953241e15ad - languageName: node - linkType: hard - "react@npm:^18.3.1": version: 18.3.1 resolution: "react@npm:18.3.1" @@ -4457,6 +5167,13 @@ __metadata: languageName: node linkType: hard +"tabbable@npm:^6.2.0": + version: 6.2.0 + resolution: "tabbable@npm:6.2.0" + checksum: 10c0/ced8b38f05f2de62cd46836d77c2646c42b8c9713f5bd265daf0e78ff5ac73d3ba48a7ca45f348bafeef29b23da7187c72250742d37627883ef89cbd7fa76898 + languageName: node + linkType: hard + "tar@npm:^6.1.11, tar@npm:^6.2.1": version: 6.2.1 resolution: "tar@npm:6.2.1" @@ -4504,13 +5221,6 @@ __metadata: languageName: node linkType: hard -"toggle-selection@npm:^1.0.6": - version: 1.0.6 - resolution: "toggle-selection@npm:1.0.6" - checksum: 10c0/f2cf1f2c70f374fd87b0cdc8007453ba9e981c4305a8bf4eac10a30e62ecdfd28bca7d18f8f15b15a506bf8a7bfb20dbe3539f0fcf2a2c8396c1a78d53e1f179 - languageName: node - linkType: hard - "tome-kolmafia-lib@npm:^5.28118.0": version: 5.28118.0 resolution: "tome-kolmafia-lib@npm:5.28118.0" @@ -4567,13 +5277,20 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.0.0, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.4.0": +"tslib@npm:^2.0.0": version: 2.8.0 resolution: "tslib@npm:2.8.0" checksum: 10c0/31e4d14dc1355e9b89e4d3c893a18abb7f90b6886b089c2da91224d0a7752c79f3ddc41bc1aa0a588ac895bd97bb99c5bc2bfdb2f86de849f31caeb3ba79bbe5 languageName: node linkType: hard +"tslib@npm:^2.8.0": + version: 2.8.1 + resolution: "tslib@npm:2.8.1" + checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 + languageName: node + linkType: hard + "type-check@npm:^0.4.0, type-check@npm:~0.4.0": version: 0.4.0 resolution: "type-check@npm:0.4.0" @@ -4720,6 +5437,13 @@ __metadata: languageName: node linkType: hard +"uqr@npm:0.1.2": + version: 0.1.2 + resolution: "uqr@npm:0.1.2" + checksum: 10c0/40cd81b4c13f1764d52ec28da2d58e60816e6fae54d4eb75b32fbf3137937f438eff16c766139fb0faec5d248a5314591f5a0dbd694e569d419eed6f3bd80242 + languageName: node + linkType: hard + "uri-js@npm:^4.2.2": version: 4.4.1 resolution: "uri-js@npm:4.4.1" @@ -4729,37 +5453,6 @@ __metadata: languageName: node linkType: hard -"use-callback-ref@npm:^1.3.0, use-callback-ref@npm:^1.3.2": - version: 1.3.2 - resolution: "use-callback-ref@npm:1.3.2" - dependencies: - tslib: "npm:^2.0.0" - peerDependencies: - "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/d232c37160fe3970c99255da19b5fb5299fb5926a5d6141d928a87feb47732c323d29be2f8137d3b1e5499c70d284cd1d9cfad703cc58179db8be24d7dd8f1f2 - languageName: node - linkType: hard - -"use-sidecar@npm:^1.1.2": - version: 1.1.2 - resolution: "use-sidecar@npm:1.1.2" - dependencies: - detect-node-es: "npm:^1.1.0" - tslib: "npm:^2.0.0" - peerDependencies: - "@types/react": ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/89f0018fd9aee1fc17c85ac18c4bf8944d460d453d0d0e04ddbc8eaddf3fa591e9c74a1f8a438a1bff368a7a2417fab380bdb3df899d2194c4375b0982736de0 - languageName: node - linkType: hard - "vite-node@npm:^2.1.4": version: 2.1.4 resolution: "vite-node@npm:2.1.4" @@ -4926,11 +5619,9 @@ __metadata: version: 0.0.0-use.local resolution: "yorick@workspace:." dependencies: - "@chakra-ui/icons": "npm:^2.1.1" - "@chakra-ui/react": "npm:^2.8.2" + "@chakra-ui/react": "npm:^3.1.2" "@chakra-ui/system": "npm:^2.6.2" "@emotion/react": "npm:^11.13.3" - "@emotion/styled": "npm:^11.13.0" "@eslint/compat": "npm:^1.1.1" "@types/node": "npm:^22.5.0" "@types/react": "npm:^18.3.4" @@ -4942,16 +5633,18 @@ __metadata: eslint-plugin-libram: "npm:^0.4.17" eslint-plugin-react-hooks: "npm:^5.0.0" eslint-plugin-unused-imports: "npm:^4.1.4" - framer-motion: "npm:^11.3.29" globals: "npm:^15.9.0" html-entities: "npm:^2.5.2" kolmafia: "npm:tome-kolmafia-mock@5.28118.0" libram: "npm:^0.9.18" + lucide-react: "npm:^0.460.0" + next-themes: "npm:^0.4.3" postcss: "npm:^8.4.41" prettier: "npm:^3.3.3" react: "npm:^18.3.1" react-dom: "npm:^18.3.1" react-error-boundary: "npm:^4.0.13" + react-icons: "npm:^5.3.0" react-router-dom: "npm:^6.26.1" tome-kolmafia-lib: "npm:^5.28118.0" tome-kolmafia-react: "npm:^0.2.5" From 3f7131b2ac6647737b05b5f1ebb4b81e76fa9efc Mon Sep 17 00:00:00 2001 From: Patrick Hulin Date: Wed, 20 Nov 2024 19:57:10 -0500 Subject: [PATCH 2/6] Restructure tooltip stuff. --- src/App.tsx | 21 ------- src/components/AdviceTip.tsx | 23 -------- src/components/AdviceTooltip.tsx | 55 +++++++------------ src/components/AdviceTooltipIcon.tsx | 12 ++-- src/components/AdviceTooltipText.tsx | 43 +++++++++++++++ src/components/AsyncButton.tsx | 14 ++++- src/components/ChatButton.tsx | 2 +- src/components/Chevrons.tsx | 17 ++++-- src/components/PrefsButton.tsx | 2 +- src/components/ui/tooltip.tsx | 1 + src/sections/NagSection.tsx | 36 ++++++------ src/sections/misc/FreeFights.tsx | 2 +- src/sections/quests/Delay.tsx | 8 +-- src/sections/quests/Level13.tsx | 16 +++--- src/sections/quests/level11/Copperhead.tsx | 2 +- src/sections/quests/level11/Zeppelin.tsx | 2 +- src/sections/resources/2016/Thanksgarden.tsx | 20 +++---- src/sections/resources/2022/Autumnaton.tsx | 8 +-- .../resources/2022/CosmicBowlingBall.tsx | 8 +-- src/sections/resources/2022/JuneCleaver.tsx | 8 +-- src/sections/resources/2022/ModelTrainSet.tsx | 10 ++-- src/sections/resources/2022/TinyStillsuit.tsx | 14 ++--- .../resources/2023/AGuideToBurningLeaves.tsx | 26 ++++----- src/sections/resources/2023/AugustScepter.tsx | 8 +-- src/sections/resources/2023/BookOfFacts.tsx | 2 +- .../resources/2023/CandyCaneSwordCane.tsx | 10 ++-- .../resources/2023/ClosedCircuitPayPhone.tsx | 10 ++-- .../resources/2023/MrStore2002Catalog.tsx | 8 +-- src/sections/resources/2024/MiniKiwi.tsx | 8 +-- src/theme.ts | 2 +- 30 files changed, 201 insertions(+), 197 deletions(-) delete mode 100644 src/components/AdviceTip.tsx create mode 100644 src/components/AdviceTooltipText.tsx diff --git a/src/App.tsx b/src/App.tsx index 4e5b9f68..91c47883 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -5,27 +5,6 @@ import NagContextProvider from "./contexts/NagContextProvider"; import Layout from "./Layout"; import { system } from "./theme"; -// const bulleted = { -// container: { -// paddingTop: "0.125rem", -// paddingLeft: "1.25rem", -// }, -// item: { -// textIndent: "-0.375rem", -// _before: { -// content: '"●"', -// verticalAlign: "middle", -// fontFamily: "Arial, Helvetica, sans-serif", -// fontSize: "0.75rem", -// lineHeight: 0, -// display: "inline-block", -// width: "0.375rem", -// // This is a hackish tweak... -// marginTop: "-3px", -// }, -// }, -// }; - const App = () => ( diff --git a/src/components/AdviceTip.tsx b/src/components/AdviceTip.tsx deleted file mode 100644 index 9cb3a0f6..00000000 --- a/src/components/AdviceTip.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { FC } from "react"; - -import { Tooltip, TooltipProps } from "./ui/tooltip"; - -const AdviceTip: FC = ({ content, ...props }) => ( - -); - -export default AdviceTip; diff --git a/src/components/AdviceTooltip.tsx b/src/components/AdviceTooltip.tsx index 56fb03d9..ca710dd1 100644 --- a/src/components/AdviceTooltip.tsx +++ b/src/components/AdviceTooltip.tsx @@ -1,40 +1,23 @@ -import { Box, Text } from "@chakra-ui/react"; -import { FC, ReactNode } from "react"; +import { FC } from "react"; -import AdviceTip from "./AdviceTip"; -import { TooltipProps } from "./ui/tooltip"; +import { Tooltip, TooltipProps } from "./ui/tooltip"; -interface AdviceTooltipProps extends Omit { - text: string | JSX.Element; - content: ReactNode; -} -/** - * A tooltip generated on text for a quick descriptive tooltip. - * @param text The text you want displayed inside this tooltip. - * @param label The text you want displayed that users hover over to get the tooltip - * @returns A FC Tooltip object where the label generates the tooltip on hoverover. - */ - -const AdviceTooltip: FC = ({ text, content, ...props }) => { - const toolTip = ( - - {typeof text === "string" ? {text} : text} - - ); - - return ( - - - {content} - - - ); -}; +const AdviceTooltip: FC = ({ content, ...props }) => ( + +); export default AdviceTooltip; diff --git a/src/components/AdviceTooltipIcon.tsx b/src/components/AdviceTooltipIcon.tsx index 845b3175..3c02280a 100644 --- a/src/components/AdviceTooltipIcon.tsx +++ b/src/components/AdviceTooltipIcon.tsx @@ -2,10 +2,10 @@ import { HStack, Icon, Image, Text, VStack } from "@chakra-ui/react"; import { Info } from "lucide-react"; import { FC } from "react"; -import AdviceTip from "./AdviceTip"; +import AdviceTooltip from "./AdviceTooltip"; interface AdviceTooltipIconProps { - text: string; + advice: string; icon?: typeof Info; } /** @@ -16,7 +16,7 @@ interface AdviceTooltipIconProps { */ const AdviceTooltipIcon: FC = ({ - text, + advice, icon: TooltipIcon = Info, }) => { const toolTip = ( @@ -29,18 +29,18 @@ const AdviceTooltipIcon: FC = ({ /> - {text} + {advice}
); return ( - + - + ); }; diff --git a/src/components/AdviceTooltipText.tsx b/src/components/AdviceTooltipText.tsx new file mode 100644 index 00000000..744ca452 --- /dev/null +++ b/src/components/AdviceTooltipText.tsx @@ -0,0 +1,43 @@ +import { Box, Text } from "@chakra-ui/react"; +import { FC } from "react"; + +import AdviceTooltip from "./AdviceTooltip"; +import { TooltipProps } from "./ui/tooltip"; + +interface AdviceTooltipProps extends Omit { + advice: string | JSX.Element; +} +/** + * A tooltip generated on text for a quick descriptive tooltip. + * @param text The text you want displayed inside this tooltip. + * @param label The text you want displayed that users hover over to get the tooltip + * @returns A FC Tooltip object where the label generates the tooltip on hoverover. + */ + +const AdviceTooltipText: FC = ({ + advice, + children, + ...props +}) => { + const toolTip = ( + + {typeof advice === "string" ? {advice} : advice} + + ); + + return ( + + + {children} + + + ); +}; + +export default AdviceTooltipText; diff --git a/src/components/AsyncButton.tsx b/src/components/AsyncButton.tsx index 9cbd1c86..89b01b8d 100644 --- a/src/components/AsyncButton.tsx +++ b/src/components/AsyncButton.tsx @@ -1,4 +1,4 @@ -import { ButtonProps } from "@chakra-ui/react"; +import { ButtonProps, Text } from "@chakra-ui/react"; import { forwardRef, MouseEvent, @@ -62,7 +62,17 @@ const AsyncButton = forwardRef( ref={ref} {...props} > - {command ? {children} : children} + {command ? ( + + {typeof children === "string" ? ( + {children} + ) : ( + children + )} + + ) : ( + children + )} ); }, diff --git a/src/components/ChatButton.tsx b/src/components/ChatButton.tsx index ed825146..64ebbd82 100644 --- a/src/components/ChatButton.tsx +++ b/src/components/ChatButton.tsx @@ -1,5 +1,5 @@ -import { ChevronLeft, ChevronRight } from "lucide-react"; import { ButtonProps, IconButton } from "@chakra-ui/react"; +import { ChevronLeft, ChevronRight } from "lucide-react"; import { FC } from "react"; export interface ChatButtonProps extends ButtonProps { diff --git a/src/components/Chevrons.tsx b/src/components/Chevrons.tsx index 21efa2a5..d77bf345 100644 --- a/src/components/Chevrons.tsx +++ b/src/components/Chevrons.tsx @@ -1,6 +1,6 @@ import { Icon, Text, TextProps } from "@chakra-ui/react"; import { ChevronRight } from "lucide-react"; -import { FC } from "react"; +import { FC, forwardRef } from "react"; export interface ChevronsProps extends TextProps { usesLeft: number; @@ -13,9 +13,18 @@ export interface ChevronsProps extends TextProps { * @param usesLeft How many casts/uses you have left of the resource * @param totalUses Total number of uses the users has */ -const Chevrons: FC = ({ usesLeft, totalUses, ...props }) => { +const Chevrons: FC = forwardRef< + HTMLParagraphElement, + ChevronsProps +>(({ usesLeft, totalUses, ...props }, ref) => { return ( - + {new Array(totalUses).fill(null).map((_, index) => ( = ({ usesLeft, totalUses, ...props }) => { ))} ); -}; +}); export default Chevrons; diff --git a/src/components/PrefsButton.tsx b/src/components/PrefsButton.tsx index 734c353e..f070ac30 100644 --- a/src/components/PrefsButton.tsx +++ b/src/components/PrefsButton.tsx @@ -1,5 +1,5 @@ -import { EditIcon } from "lucide-react"; import { IconButton } from "@chakra-ui/react"; +import { EditIcon } from "lucide-react"; import { FC } from "react"; const PrefsButton: FC = () => { diff --git a/src/components/ui/tooltip.tsx b/src/components/ui/tooltip.tsx index daa6dc2d..cbf150ad 100644 --- a/src/components/ui/tooltip.tsx +++ b/src/components/ui/tooltip.tsx @@ -5,6 +5,7 @@ export interface TooltipProps extends ChakraTooltip.RootProps { showArrow?: boolean; portalled?: boolean; portalRef?: React.RefObject; + children: React.ReactNode; content: React.ReactNode; contentProps?: ChakraTooltip.ContentProps; disabled?: boolean; diff --git a/src/sections/NagSection.tsx b/src/sections/NagSection.tsx index 91223708..60d536d7 100644 --- a/src/sections/NagSection.tsx +++ b/src/sections/NagSection.tsx @@ -1,4 +1,4 @@ -import { Heading, Stack } from "@chakra-ui/react"; +import { Box, Heading, Stack } from "@chakra-ui/react"; import { myDaycount, myTurncount } from "kolmafia"; import { useContext } from "react"; @@ -41,22 +41,24 @@ const NagSection = () => { {nagsList .slice(NAG_DISPLAY_LIMIT) - .map(([id, { imageUrl, node }]) => ( - - - - ))} + .map(([id, { imageUrl, node }]) => { + return ( + {node}
} + > + +
+ ); + })} )} diff --git a/src/sections/misc/FreeFights.tsx b/src/sections/misc/FreeFights.tsx index 1cf3bc5d..fe879125 100644 --- a/src/sections/misc/FreeFights.tsx +++ b/src/sections/misc/FreeFights.tsx @@ -134,7 +134,7 @@ const FreeFights: FC = () => { imageUrl="/images/adventureimages/eldtentacle.gif" tooltip={ { {truncated.length > 0 && ( - } - content="Later zones." + } + children="Later zones." /> )} diff --git a/src/sections/quests/Level13.tsx b/src/sections/quests/Level13.tsx index 05d3d6fa..b0947bf3 100644 --- a/src/sections/quests/Level13.tsx +++ b/src/sections/quests/Level13.tsx @@ -1,5 +1,6 @@ import { haveEquipped, + initiativeModifier, Modifier, myBuffedstat, myPath, @@ -8,7 +9,7 @@ import { import { $item, $path, $skill, $stat, get, have, questStep } from "libram"; import { FC } from "react"; -import AdviceTooltip from "../../components/AdviceTooltip"; +import AdviceTooltipText from "../../components/AdviceTooltipText"; import Line from "../../components/Line"; import QuestTile from "../../components/QuestTile"; import Tile from "../../components/Tile"; @@ -133,9 +134,9 @@ const Level13: FC = () => { > Defeat the Wall of Meat. - @@ -229,10 +230,9 @@ const Level13: FC = () => { > Fight your shadow. - + + Current initiative: {initiativeModifier().toFixed(0)}. + ); diff --git a/src/sections/quests/level11/Copperhead.tsx b/src/sections/quests/level11/Copperhead.tsx index 71522225..91e86d8b 100644 --- a/src/sections/quests/level11/Copperhead.tsx +++ b/src/sections/quests/level11/Copperhead.tsx @@ -85,7 +85,7 @@ const Copperhead: FC = () => { Or work on burning {14 - (3 - shenMeetings) - copperheadTurns}{" "} turns of delay in the Copperhead Club.{" "} - + )} {copperheadTurns === 14 && shenMeetings === 3 && ( diff --git a/src/sections/quests/level11/Zeppelin.tsx b/src/sections/quests/level11/Zeppelin.tsx index 14174120..1d666bab 100644 --- a/src/sections/quests/level11/Zeppelin.tsx +++ b/src/sections/quests/level11/Zeppelin.tsx @@ -43,7 +43,7 @@ const Zeppelin = () => { imageUrl="/images/itemimages/scharm.gif" href="/place.php?whichplace=zeppelin" tooltip={ - tooltip && + tooltip && } disabled={!questFinished("questL11Black")} > diff --git a/src/sections/resources/2016/Thanksgarden.tsx b/src/sections/resources/2016/Thanksgarden.tsx index 41f83841..ebd400d9 100644 --- a/src/sections/resources/2016/Thanksgarden.tsx +++ b/src/sections/resources/2016/Thanksgarden.tsx @@ -7,7 +7,7 @@ import { } from "kolmafia"; import { $item, $location, get, have } from "libram"; -import AdviceTooltip from "../../../components/AdviceTooltip"; +import AdviceTooltipText from "../../../components/AdviceTooltipText"; import Line from "../../../components/Line"; import Tile from "../../../components/Tile"; import { inventoryLink } from "../../../util/links"; @@ -68,27 +68,27 @@ const Thanksgarden = () => { Could make into{" "} {commaSeparate([ - , - , "various foods", - , ])} . diff --git a/src/sections/resources/2022/Autumnaton.tsx b/src/sections/resources/2022/Autumnaton.tsx index ed45935c..b37e4bfd 100644 --- a/src/sections/resources/2022/Autumnaton.tsx +++ b/src/sections/resources/2022/Autumnaton.tsx @@ -17,7 +17,7 @@ import { questStep, } from "libram"; -import AdviceTooltip from "../../../components/AdviceTooltip"; +import AdviceTooltipText from "../../../components/AdviceTooltipText"; import ItemButtons from "../../../components/ItemButtons"; import Line from "../../../components/Line"; import Tile from "../../../components/Tile"; @@ -172,8 +172,8 @@ const Autumnaton = () => { )} {potentialTargets.length > 0 && ( - Potential Targets {potentialTargets.map(([item, location], index) => ( @@ -183,7 +183,7 @@ const Autumnaton = () => { ))} } - content="Potential Autumnaton Targets" + children="Potential Autumnaton Targets" /> )} diff --git a/src/sections/resources/2022/CosmicBowlingBall.tsx b/src/sections/resources/2022/CosmicBowlingBall.tsx index f7562e76..c69b9fdb 100644 --- a/src/sections/resources/2022/CosmicBowlingBall.tsx +++ b/src/sections/resources/2022/CosmicBowlingBall.tsx @@ -1,7 +1,7 @@ import { Text } from "@chakra-ui/react"; import { $item, $location, get } from "libram"; -import AdviceTooltip from "../../../components/AdviceTooltip"; +import AdviceTooltipText from "../../../components/AdviceTooltipText"; import Line from "../../../components/Line"; import Tile from "../../../components/Tile"; import { NagPriority } from "../../../contexts/NagContext"; @@ -89,9 +89,9 @@ const CosmicBowlingBall = () => { {returnCombats > 0 && ( Your Bowling Ball will return in{" "} - . diff --git a/src/sections/resources/2022/JuneCleaver.tsx b/src/sections/resources/2022/JuneCleaver.tsx index 68199f06..91766f26 100644 --- a/src/sections/resources/2022/JuneCleaver.tsx +++ b/src/sections/resources/2022/JuneCleaver.tsx @@ -1,7 +1,7 @@ import { List } from "@chakra-ui/react"; import { $item, get } from "libram"; -import AdviceTooltip from "../../../components/AdviceTooltip"; +import AdviceTooltipText from "../../../components/AdviceTooltipText"; import Line from "../../../components/Line"; import Tile from "../../../components/Tile"; import { haveUnrestricted } from "../../../util/available"; @@ -87,8 +87,8 @@ const JuneCleaver = () => { .map(({ option1, option2, option3, name, choice }) => { return ( - Choices: @@ -98,7 +98,7 @@ const JuneCleaver = () => { } - content={name} + children={name} /> ); diff --git a/src/sections/resources/2022/ModelTrainSet.tsx b/src/sections/resources/2022/ModelTrainSet.tsx index 24a688fe..51ecb3ab 100644 --- a/src/sections/resources/2022/ModelTrainSet.tsx +++ b/src/sections/resources/2022/ModelTrainSet.tsx @@ -1,8 +1,8 @@ -import { Text, List } from "@chakra-ui/react"; +import { List, Text } from "@chakra-ui/react"; import { availableAmount, myLevel, myPrimestat } from "kolmafia"; import { $item, $stat, get, have } from "libram"; -import AdviceTooltip from "../../../components/AdviceTooltip"; +import AdviceTooltipText from "../../../components/AdviceTooltipText"; import Line from "../../../components/Line"; import Tile from "../../../components/Tile"; import { NagPriority } from "../../../contexts/NagContext"; @@ -249,8 +249,8 @@ const ModelTrainSet = () => { Next station: {nextStation.name} -{" "} {nextStation.description} - Train station cycle @@ -268,7 +268,7 @@ const ModelTrainSet = () => { } - content="Full train cycle" + children="Full train cycle" /> ); diff --git a/src/sections/resources/2022/TinyStillsuit.tsx b/src/sections/resources/2022/TinyStillsuit.tsx index 556ad55d..6731e878 100644 --- a/src/sections/resources/2022/TinyStillsuit.tsx +++ b/src/sections/resources/2022/TinyStillsuit.tsx @@ -8,7 +8,7 @@ import { import { $item, get } from "libram"; import { getHashIfAvailable } from "tome-kolmafia-lib"; -import AdviceTooltip from "../../../components/AdviceTooltip"; +import AdviceTooltipText from "../../../components/AdviceTooltipText"; import Line from "../../../components/Line"; import Tile from "../../../components/Tile"; import { NagPriority } from "../../../contexts/NagContext"; @@ -174,8 +174,8 @@ const TinyStillsuit = () => { )} - {Object.entries(advDramsTable).map( ([advs, drams]) => @@ -194,11 +194,11 @@ const TinyStillsuit = () => { )} } - content="Sweat/Advs" + children="Sweat/Advs" />{" "} •{" "} - Cubeling / Stomping Boots: +item @@ -209,7 +209,7 @@ const TinyStillsuit = () => { } - content="Suggested Familiars" + children="Suggested Familiars" /> diff --git a/src/sections/resources/2023/AGuideToBurningLeaves.tsx b/src/sections/resources/2023/AGuideToBurningLeaves.tsx index 1c3c2849..78e9718b 100644 --- a/src/sections/resources/2023/AGuideToBurningLeaves.tsx +++ b/src/sections/resources/2023/AGuideToBurningLeaves.tsx @@ -3,7 +3,7 @@ import { availableAmount, getCampground, myLevel } from "kolmafia"; import { $effect, $familiar, $item, $skill, get, have } from "libram"; import { FC } from "react"; -import AdviceTooltip from "../../../components/AdviceTooltip"; +import AdviceTooltipText from "../../../components/AdviceTooltipText"; import Line from "../../../components/Line"; import LinkBlock from "../../../components/LinkBlock"; import Tile from "../../../components/Tile"; @@ -278,24 +278,24 @@ const AGuideToBurningLeaves: FC = () => { {leafCount >= 111 * fightsRemaining ? ( - ) : leafCount >= 11 * fightsRemaining ? ( - ) : leafCount >= 11 ? ( - ) : ( - )} diff --git a/src/sections/resources/2023/AugustScepter.tsx b/src/sections/resources/2023/AugustScepter.tsx index 060a6cca..a3866a23 100644 --- a/src/sections/resources/2023/AugustScepter.tsx +++ b/src/sections/resources/2023/AugustScepter.tsx @@ -18,7 +18,7 @@ import { } from "libram"; import { FC, ReactNode } from "react"; -import AdviceTooltip from "../../../components/AdviceTooltip"; +import AdviceTooltipText from "../../../components/AdviceTooltipText"; import Line from "../../../components/Line"; import MainLink from "../../../components/MainLink"; import Tile from "../../../components/Tile"; @@ -270,9 +270,9 @@ const AugustScepter: FC = () => { {table} )} - ); diff --git a/src/sections/resources/2023/BookOfFacts.tsx b/src/sections/resources/2023/BookOfFacts.tsx index a349fb69..b94b212d 100644 --- a/src/sections/resources/2023/BookOfFacts.tsx +++ b/src/sections/resources/2023/BookOfFacts.tsx @@ -48,7 +48,7 @@ const BookOfFacts = () => { Appears as a wandering monster in any zone. Try a place with few competing monsters{olfactionString}. {eagleUsable && ( - + )} {eaglePhylumBanished === habitatMonsterPhylum && ( diff --git a/src/sections/resources/2023/CandyCaneSwordCane.tsx b/src/sections/resources/2023/CandyCaneSwordCane.tsx index ca2f27aa..b6b901c7 100644 --- a/src/sections/resources/2023/CandyCaneSwordCane.tsx +++ b/src/sections/resources/2023/CandyCaneSwordCane.tsx @@ -1,4 +1,4 @@ -import { Text, List } from "@chakra-ui/react"; +import { List, Text } from "@chakra-ui/react"; import { canAdventure, haveEquipped, @@ -8,7 +8,7 @@ import { } from "kolmafia"; import { $item, $location, $locations, get, have, questStep } from "libram"; -import AdviceTooltip from "../../../components/AdviceTooltip"; +import AdviceTooltipText from "../../../components/AdviceTooltipText"; import Line from "../../../components/Line"; import MainLink from "../../../components/MainLink"; import Tile from "../../../components/Tile"; @@ -193,9 +193,9 @@ const CandyCaneSwordCane = () => { {availableOptions.map(({ node }) => node)} {!ccscEquipped && ( - )} diff --git a/src/sections/resources/2023/ClosedCircuitPayPhone.tsx b/src/sections/resources/2023/ClosedCircuitPayPhone.tsx index b6af5391..df3efd0f 100644 --- a/src/sections/resources/2023/ClosedCircuitPayPhone.tsx +++ b/src/sections/resources/2023/ClosedCircuitPayPhone.tsx @@ -1,8 +1,8 @@ -import { Text, List } from "@chakra-ui/react"; +import { List, Text } from "@chakra-ui/react"; import { availableAmount, canAdventure, haveEffect } from "kolmafia"; import { $effect, $item, $location, get } from "libram"; -import AdviceTooltip from "../../../components/AdviceTooltip"; +import AdviceTooltipText from "../../../components/AdviceTooltipText"; import Line from "../../../components/Line"; import Tile from "../../../components/Tile"; import { NagPriority } from "../../../contexts/NagContext"; @@ -126,9 +126,9 @@ const ClosedCircuitPayPhone = () => { Optionally call Rufus again for another (turn-taking) quest. )} - diff --git a/src/sections/resources/2023/MrStore2002Catalog.tsx b/src/sections/resources/2023/MrStore2002Catalog.tsx index afb25298..39e01ba4 100644 --- a/src/sections/resources/2023/MrStore2002Catalog.tsx +++ b/src/sections/resources/2023/MrStore2002Catalog.tsx @@ -2,7 +2,7 @@ import { List, Text } from "@chakra-ui/react"; import { availableAmount, myHash, totalTurnsPlayed } from "kolmafia"; import { $item, get, getTodaysHolidayWanderers, have } from "libram"; -import AdviceTooltip from "../../../components/AdviceTooltip"; +import AdviceTooltipText from "../../../components/AdviceTooltipText"; import Line from "../../../components/Line"; import Tile from "../../../components/Tile"; import { haveUnrestricted } from "../../../util/available"; @@ -142,9 +142,9 @@ const MrStore2002Catalog = () => { Spooky VHS: {imageName.name} in 1 more adv ) : ( - )} diff --git a/src/sections/resources/2024/MiniKiwi.tsx b/src/sections/resources/2024/MiniKiwi.tsx index ed0b9655..0665dd77 100644 --- a/src/sections/resources/2024/MiniKiwi.tsx +++ b/src/sections/resources/2024/MiniKiwi.tsx @@ -6,7 +6,7 @@ import { } from "kolmafia"; import { $familiar, $item, $path, get, have } from "libram"; -import AdviceTooltip from "../../../components/AdviceTooltip"; +import AdviceTooltipText from "../../../components/AdviceTooltipText"; import Line from "../../../components/Line"; import Tile from "../../../components/Tile"; import { haveUnrestricted } from "../../../util/available"; @@ -45,9 +45,9 @@ const MiniKiwi = () => { > At {Math.floor(kiwiWeight)} weight, you have a{" "} - {" "} chance of a mini-kiwi each fight. diff --git a/src/theme.ts b/src/theme.ts index 9fb03675..dd870883 100644 --- a/src/theme.ts +++ b/src/theme.ts @@ -3,7 +3,7 @@ import { createSystem, defaultConfig, defineConfig } from "@chakra-ui/react"; const config = defineConfig({ globalCss: { html: { - lineHeight: 1.15, + lineHeight: "moderate", }, }, theme: { From 80f0262d591a1e56780bd33fa7450867daf4beb4 Mon Sep 17 00:00:00 2001 From: Patrick Hulin Date: Wed, 20 Nov 2024 20:22:28 -0500 Subject: [PATCH 3/6] Update color names. --- src/components/AdviceTooltip.tsx | 7 ++--- src/components/AdviceTooltipIcon.tsx | 4 +-- src/components/AdviceTooltipText.tsx | 4 +-- src/components/AsyncLink.tsx | 6 ++-- src/components/Chevrons.tsx | 2 +- src/components/ElementName.tsx | 10 +++---- src/components/HeaderButton.tsx | 2 +- src/components/LocationBar.tsx | 4 +-- src/components/Monsters.tsx | 2 +- src/components/Tile.tsx | 2 +- src/components/TileErrorBoundary.tsx | 4 +-- src/prefs/components/ValidatedInput.tsx | 14 +++++----- src/sections/NagSection.tsx | 2 +- src/sections/Timeline.tsx | 28 +++++++++---------- src/sections/misc/FreeKills.tsx | 2 +- src/sections/misc/FreeRuns.tsx | 2 +- src/sections/misc/LuckyAdventures.tsx | 2 +- src/sections/misc/NoncombatForces.tsx | 2 +- src/sections/quests/Delay.tsx | 11 +++----- src/sections/quests/HiddenTemple.tsx | 2 +- src/sections/quests/Level10.tsx | 4 +-- src/sections/quests/Level13.tsx | 2 +- src/sections/quests/Level6.tsx | 2 +- src/sections/quests/StarKey.tsx | 4 +-- src/sections/quests/level11/BlackForest.tsx | 2 +- src/sections/quests/level11/HiddenCity.tsx | 14 +++++----- .../quests/level11/LordSpookyraven.tsx | 2 +- src/sections/quests/level12/Junkyard.tsx | 2 +- .../2016/ProtonicAcceleratorPack.tsx | 6 ++-- src/sections/resources/2017/AsdonMartin.tsx | 4 +-- src/sections/resources/2017/TunnelOfLove.tsx | 6 ++-- .../resources/2019/KramcoSausageOMatic.tsx | 6 ++-- src/sections/resources/2020/PowerfulGlove.tsx | 2 +- src/sections/resources/2021/BackupCamera.tsx | 4 +-- src/sections/resources/2021/EmotionChip.tsx | 2 +- src/sections/resources/2022/Autumnaton.tsx | 6 ++-- .../resources/2022/CombatLoversLocket.tsx | 20 ++++++------- .../resources/2022/CosmicBowlingBall.tsx | 6 ++-- .../resources/2022/DesignerSweatpants.tsx | 2 +- src/sections/resources/2022/GreyGoose.tsx | 18 ++++++------ src/sections/resources/2022/JurassicParka.tsx | 10 +++---- src/sections/resources/2022/ModelTrainSet.tsx | 10 +++---- src/sections/resources/2022/TinyStillsuit.tsx | 22 +++++++-------- .../resources/2023/AGuideToBurningLeaves.tsx | 8 +++--- src/sections/resources/2023/AugustScepter.tsx | 18 ++++++------ src/sections/resources/2023/BookOfFacts.tsx | 4 +-- .../resources/2023/CandyCaneSwordCane.tsx | 18 ++++++------ src/sections/resources/2023/CinchoDeMayo.tsx | 2 +- .../resources/2023/ClosedCircuitPayPhone.tsx | 8 +++--- .../resources/2023/CursedMonkeyPaw.tsx | 16 +++++------ .../resources/2023/MrStore2002Catalog.tsx | 6 ++-- .../resources/2023/PatrioticEagle.tsx | 14 +++++----- .../resources/2023/SITCourseCertificate.tsx | 4 ++- src/sections/resources/2024/BatWings.tsx | 4 +-- .../resources/2024/EverfullDartHolster.tsx | 12 ++++---- .../resources/2024/RomanCandelabra.tsx | 10 +++---- .../resources/2024/SeptEmberCenser.tsx | 6 ++-- src/sections/resources/2024/SpringShoes.tsx | 4 +-- 58 files changed, 202 insertions(+), 200 deletions(-) diff --git a/src/components/AdviceTooltip.tsx b/src/components/AdviceTooltip.tsx index ca710dd1..e6c1de4a 100644 --- a/src/components/AdviceTooltip.tsx +++ b/src/components/AdviceTooltip.tsx @@ -6,10 +6,9 @@ const AdviceTooltip: FC = ({ content, ...props }) => ( = ({ fit="contain" /> - + {advice} @@ -37,7 +37,7 @@ const AdviceTooltipIcon: FC = ({ return ( - + diff --git a/src/components/AdviceTooltipText.tsx b/src/components/AdviceTooltipText.tsx index 744ca452..d6bd07a7 100644 --- a/src/components/AdviceTooltipText.tsx +++ b/src/components/AdviceTooltipText.tsx @@ -20,7 +20,7 @@ const AdviceTooltipText: FC = ({ ...props }) => { const toolTip = ( - + {typeof advice === "string" ? {advice} : advice} ); @@ -30,7 +30,7 @@ const AdviceTooltipText: FC = ({ diff --git a/src/components/AsyncLink.tsx b/src/components/AsyncLink.tsx index 4ff83b1d..89245156 100644 --- a/src/components/AsyncLink.tsx +++ b/src/components/AsyncLink.tsx @@ -64,12 +64,14 @@ const AsyncLink = forwardRef( {...props} textDecoration="none !important" pointerEvents="none" - color="gray.500" + color="gray.solid" > {children} ) : command ? ( - {link} + + {link} + ) : ( link ); diff --git a/src/components/Chevrons.tsx b/src/components/Chevrons.tsx index d77bf345..d783aa47 100644 --- a/src/components/Chevrons.tsx +++ b/src/components/Chevrons.tsx @@ -28,7 +28,7 @@ const Chevrons: FC = forwardRef< {new Array(totalUses).fill(null).map((_, index) => ( diff --git a/src/components/ElementName.tsx b/src/components/ElementName.tsx index b31c159d..0fd62fb4 100644 --- a/src/components/ElementName.tsx +++ b/src/components/ElementName.tsx @@ -9,11 +9,11 @@ export interface ElementNameProps { const ElementName: FC = ({ element, children }) => { const elementColors: Record = { - cold: "blue.500", - hot: "red.500", - spooky: "gray.500", - stench: "green.500", - sleaze: "purple.500", + cold: "blue.solid", + hot: "red.solid", + spooky: "gray.solid", + stench: "green.solid", + sleaze: "purple.solid", }; return ( diff --git a/src/components/HeaderButton.tsx b/src/components/HeaderButton.tsx index 5a241728..54f28523 100644 --- a/src/components/HeaderButton.tsx +++ b/src/components/HeaderButton.tsx @@ -12,7 +12,7 @@ const HeaderButton = forwardRef( const button = (