@overmap-ai/blocks 0.0.3-alpha.0 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/Buttons/typings.d.ts +1 -1
- package/dist/blocks.js.map +1 -1
- package/dist/blocks.umd.cjs.map +1 -1
- package/package.json +90 -89
package/README.md
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
# overmap-ai blocks
|
|
2
|
-
|
|
3
|
-
Contains basic components used by overmap-ai libraries.
|
|
1
|
+
# overmap-ai blocks
|
|
2
|
+
|
|
3
|
+
Contains basic components used by overmap-ai libraries.
|
|
@@ -3,7 +3,7 @@ import { Button as RadixButton, MarginProps, Responsive } from "@radix-ui/themes
|
|
|
3
3
|
import { Severity, Size, Variant } from "../typings.ts";
|
|
4
4
|
export type RadixButtonProps = React.ComponentProps<typeof RadixButton>;
|
|
5
5
|
export type ButtonHoverEffect = "spin90Clockwise" | "spin180Clockwise" | "spin360Clockwise";
|
|
6
|
-
export interface ButtonProps extends Omit<RadixButtonProps, "size" | "
|
|
6
|
+
export interface ButtonProps extends Omit<RadixButtonProps, "size" | "variant" | keyof MarginProps> {
|
|
7
7
|
children: RadixButtonProps["children"];
|
|
8
8
|
/** @default false */
|
|
9
9
|
fluid?: boolean;
|
package/dist/blocks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blocks.js","sources":["../node_modules/classnames/index.js","../src/utils.ts","../src/Badge/Badge.tsx","../src/Buttons/constants.ts","../src/constants.ts","../src/ButtonGroup/context.ts","../src/Buttons/Button.tsx","../src/Buttons/IconButton.tsx","../src/ButtonGroup/ButtonGroup.tsx","../src/ButtonGroup/ButtonList.tsx","../src/Dialogs/Dialog/DialogContent.tsx","../src/Dialogs/Dialog/Dialog.tsx","../src/Dialogs/AlertDialog/AlertDialogContent.tsx","../src/Dialogs/AlertDialog/AlertDialog.tsx","../src/Dialogs/AlertDialog/context.tsx","../src/Dialogs/AlertDialog/hooks.ts","../src/DropdownMenu/DropdownMenu.tsx","../src/Select/Select.tsx","../src/MultiSelect/MultiSelectItem.tsx","../src/MultiSelect/MultiSelect.tsx","../src/Switch/Switch.tsx","../src/Sidebar/Sidebar.tsx","../src/Input/Input.tsx","../src/Popover/Popover.tsx","../src/LeftAndRightPanels/LeftAndRightPanels.tsx","../src/TextArea/TextArea.tsx","../src/ToggleGroup/ToggleGroup.tsx","../src/Toast/Toast.tsx","../src/Toast/ToastContext.ts","../src/Toast/ToastProvider.tsx","../src/Text/Text.tsx","../src/Theme/DefaultTheme.tsx","../src/Separator/Separator.tsx"],"sourcesContent":["/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { Responsive, ThemeOptions, useThemeContext } from \"@radix-ui/themes\"\nimport { useMemo } from \"react\"\nimport { Severity } from \"./typings\"\n\n// useResponsiveMapping is a helper function used to map the keys of a Radix Responsive type that can be understood\n// by a Radix component or primitive. The point of this is to leverage our own custom prop names and values while still\n// using Radix's built in Responsiveness functionality.\n/**\n * Returns an object with mapped key values or a single mapped value\n * @param value an object or string\n * @param mapping a Record mapping the object values of param value\n */\nexport function useResponsiveMapping<T extends string, K>(\n\tvalue: Responsive<T> | undefined,\n\tmapping: Record<T, K>,\n): Responsive<K> | undefined {\n\treturn useMemo(() => {\n\t\tif (value === undefined) return undefined\n\t\tif (typeof value === \"object\") {\n\t\t\tif (!(\"initial\" in value)) {\n\t\t\t\t// Responsive objects require an 'initial' property to be set that acts as a default\n\t\t\t\tthrow new Error(\"Expected initial property to be set in Responsive object\")\n\t\t\t}\n\t\t\treturn Object.fromEntries(Object.entries(value).map(([breakpoint, value]) => [breakpoint, mapping[value]]))\n\t\t} else {\n\t\t\treturn mapping[value]\n\t\t}\n\t}, [mapping, value])\n}\n\nconst nonThemeSeverityMapping = {\n\tsuccess: \"green\",\n\tdanger: \"red\",\n\tinfo: \"gray\",\n} as const\n\nexport type AccentColor = ThemeOptions[\"accentColor\"]\n\n/** Performs theme-sensitive mapping of a severity to radix color */\nexport const useSeverityColor = (severity?: Severity): AccentColor | undefined => {\n\tconst theme = useThemeContext()\n\tif (!severity) return undefined\n\tif (severity === \"primary\") return theme.accentColor\n\n\treturn nonThemeSeverityMapping[severity]\n}\n","import { Badge as RadixBadge } from \"@radix-ui/themes\"\nimport { FC, forwardRef, memo, Ref } from \"react\"\nimport { BadgeProps } from \"./typings.ts\"\nimport classNames from \"classnames\"\nimport { useSeverityColor } from \"../utils.ts\"\n\nconst _Badge = forwardRef(function Badge(\n\t{ className, severity = \"primary\", color, children, ...rest }: BadgeProps,\n\tref: Ref<HTMLSpanElement>,\n) {\n\tconst severityColor = useSeverityColor(severity)\n\n\treturn (\n\t\t<RadixBadge\n\t\t\tclassName={classNames(\"overmap-badge\", className)}\n\t\t\tref={ref}\n\t\t\tcolor={color ? color : severityColor}\n\t\t\t{...rest}\n\t\t>\n\t\t\t{children}\n\t\t</RadixBadge>\n\t)\n})\n\n/** The Badge Component is a user interface element that provides visual feedback, typically displaying a small amount\n * of information. It is commonly used to indicate counts, statuses, or labels in a concise and visually appealing\n * manner. This Badge components wraps the Badge component from Radix-ui found here https://www.radix-ui.com/themes/docs/components/badge */\nexport const Badge: FC<BadgeProps> = memo(_Badge)\n","import { ButtonHoverEffect } from \"./typings.ts\"\nimport styles from \"./Button.module.sass\"\n\nexport const hoverEffectClassNameMapping: Record<ButtonHoverEffect, string | undefined> = {\n\tspin90Clockwise: styles.hoverSpin90Clockwise,\n\tspin180Clockwise: styles.hoverSpin180Clockwise,\n\tspin360Clockwise: styles.hoverSpin360Clockwise,\n}\n","import { Size } from \"./typings.ts\"\n\n// Mappings\nexport const SizeMapping: Record<Size, \"1\" | \"2\" | \"3\"> = {\n\tsmall: \"1\",\n\tmedium: \"2\",\n\tlarge: \"3\",\n}\n","import { ButtonProps } from \"../Buttons/typings\"\nimport { createContext, useContext } from \"react\"\n\nexport type ButtonContextType = Pick<ButtonProps, \"variant\" | \"size\" | \"severity\" | \"hoverEffects\" | \"fluid\">\n\nexport const ButtonGroupContext = createContext<ButtonContextType>({})\n\nexport const useButtonGroupContext = () => useContext(ButtonGroupContext)\n","import React, { FC, forwardRef } from \"react\"\nimport { ButtonProps } from \"./typings.ts\"\nimport styles from \"./Button.module.sass\"\nimport classNames from \"classnames\"\nimport { Button as RadixButton } from \"@radix-ui/themes\"\nimport { hoverEffectClassNameMapping } from \"./constants.ts\"\nimport { useResponsiveMapping, useSeverityColor } from \"../utils.ts\"\nimport { SizeMapping } from \"../constants.ts\"\nimport { useButtonGroupContext } from \"../ButtonGroup/context.ts\"\n\nconst _Button = forwardRef(function Button(props: ButtonProps, ref: React.Ref<HTMLButtonElement>) {\n\tconst buttonGroupContext = useButtonGroupContext()\n\tconst {\n\t\tclassName,\n\t\ttype = \"button\",\n\t\tfluid = buttonGroupContext.fluid ?? false,\n\t\tsize = buttonGroupContext.size ?? \"medium\",\n\t\tseverity = buttonGroupContext.severity ?? \"primary\",\n\t\thoverEffects = buttonGroupContext.hoverEffects ?? [],\n\t\tvariant = buttonGroupContext.variant,\n\t\t...rest\n\t} = props\n\tconst color = useSeverityColor(severity)\n\tconst hoverEffectClasses = hoverEffects.map((hoverEffect) => {\n\t\treturn hoverEffectClassNameMapping[hoverEffect]\n\t})\n\n\treturn (\n\t\t<RadixButton\n\t\t\tref={ref}\n\t\t\ttype={type}\n\t\t\tclassName={classNames(className, hoverEffectClasses, {\n\t\t\t\t[styles.fluid!]: fluid,\n\t\t\t})}\n\t\t\tcolor={color}\n\t\t\tsize={useResponsiveMapping(size, SizeMapping)}\n\t\t\tvariant={variant}\n\t\t\t{...rest}\n\t\t/>\n\t)\n})\n\n// using FC so storybook correctly displays the component props\nconst Button: FC<ButtonProps> = React.memo(_Button)\n\nexport default Button\n","import React, { FC, forwardRef } from \"react\"\nimport { ButtonProps } from \"./typings.ts\"\nimport classNames from \"classnames\"\nimport { IconButton as RadixIconButton } from \"@radix-ui/themes\"\nimport { hoverEffectClassNameMapping } from \"./constants.ts\"\nimport { useResponsiveMapping, useSeverityColor } from \"../utils.ts\"\nimport { SizeMapping } from \"../constants.ts\"\nimport { useButtonGroupContext } from \"../ButtonGroup/context.ts\"\n\nimport styles from \"./Button.module.sass\"\n\ninterface IconButtonProps extends ButtonProps {\n\t\"aria-label\": string\n}\n\nconst _Button = forwardRef(function Button(props: IconButtonProps, ref: React.Ref<HTMLButtonElement>) {\n\tconst buttonGroupContext = useButtonGroupContext()\n\tconst {\n\t\tclassName,\n\t\tchildren,\n\t\ttype = \"button\",\n\t\tfluid = buttonGroupContext.fluid ?? false,\n\t\tsize = buttonGroupContext.size ?? \"medium\",\n\t\tseverity = buttonGroupContext.severity ?? \"primary\",\n\t\thoverEffects = buttonGroupContext.hoverEffects ?? [],\n\t\tvariant = buttonGroupContext.variant,\n\t\t...rest\n\t} = props\n\tconst color = useSeverityColor(severity)\n\tconst hoverEffectClasses =\n\t\thoverEffects?.map((hoverEffect) => {\n\t\t\treturn hoverEffectClassNameMapping[hoverEffect]\n\t\t}) || []\n\n\treturn (\n\t\t<RadixIconButton\n\t\t\tclassName={classNames(className, hoverEffectClasses, {\n\t\t\t\t[styles.fluid!]: fluid,\n\t\t\t})}\n\t\t\tref={ref}\n\t\t\tcolor={color}\n\t\t\tsize={useResponsiveMapping(size, SizeMapping)}\n\t\t\tvariant={variant}\n\t\t\ttype={type}\n\t\t\t{...rest}\n\t\t>\n\t\t\t{children}\n\t\t</RadixIconButton>\n\t)\n})\n\n// using FC so storybook correctly displays the component props\n/** The `IconButton` is a `Button` variant specifically designed for single icons. */\nconst IconButton: FC<IconButtonProps> = React.memo(_Button)\n\nexport default IconButton\n","import { FC, forwardRef, memo, Ref } from \"react\"\nimport { Flex } from \"@radix-ui/themes\"\nimport classNames from \"classnames\"\nimport { ButtonGroupProps } from \"./typings.ts\"\n\nimport styles from \"./ButtonGroup.module.sass\"\nimport { Size } from \"../typings.ts\"\nimport { useResponsiveMapping } from \"../utils.ts\"\nimport { ButtonGroupContext } from \"./context.ts\"\n\nconst GhostVariantSizeToGapMapping = {\n\trow: { small: \"4\", medium: \"4\", large: \"5\" },\n\tcolumn: { small: \"2\", medium: \"3\", large: \"4\" },\n} as const satisfies Record<\"row\" | \"column\", Record<Size, ButtonGroupProps[\"gap\"]>>\n\nconst _ButtonGroup = forwardRef(function ButtonGroup(\n\t{\n\t\tclassName,\n\t\tmerged = false,\n\t\tchildren,\n\t\tgap,\n\t\tdirection = \"row\",\n\t\tseverity,\n\t\tsize = \"medium\",\n\t\tvariant,\n\t\thoverEffects,\n\t\tfluid,\n\t\t...rest\n\t}: ButtonGroupProps,\n\tref: Ref<HTMLDivElement>,\n) {\n\tconst ghostSize = useResponsiveMapping(size, GhostVariantSizeToGapMapping[direction])\n\t// without a larger gap, ghost buttons overlap\n\tconst mergedAutoGap = variant === \"ghost\" ? ghostSize : \"0\"\n\treturn (\n\t\t<Flex\n\t\t\tclassName={classNames(\"overmap-button-group\", className, {\n\t\t\t\t[styles.merged!]: merged,\n\t\t\t})}\n\t\t\tref={ref}\n\t\t\tgap={merged ? gap ?? mergedAutoGap : gap ?? \"2\"}\n\t\t\tdirection={direction}\n\t\t\tdata-direction={direction}\n\t\t\t{...rest}\n\t\t>\n\t\t\t<ButtonGroupContext.Provider value={{ size, severity, variant, hoverEffects, fluid }}>\n\t\t\t\t{children}\n\t\t\t</ButtonGroupContext.Provider>\n\t\t</Flex>\n\t)\n})\n\n/** The ButtonGroup Component is a user interface element that groups multiple buttons together for improved user\n * interaction and visual clarity. It is commonly used to present related actions or options in a compact and organized\n * manner. The ButtonGroup supports all props of the RadixUI Flex layout component besides MarginProps,\n * further documentation for the Flex layout component can be found here https://www.radix-ui.com/themes/docs/components/flex */\nexport const ButtonGroup: FC<ButtonGroupProps> = memo(_ButtonGroup)\n","import { Children, FC, ReactNode, forwardRef, memo } from \"react\"\nimport { ButtonGroup, ButtonGroupProps } from \".\"\nimport { ButtonProps } from \"../Buttons/typings\"\nimport { useButtonGroupContext } from \"./context\"\nimport { Button } from \"../Buttons\"\nimport { Box, Card, Flex, Inset, Responsive, Separator, Size } from \"..\"\nimport { useResponsiveMapping } from \"../utils\"\nimport { SizeMapping } from \"../constants\"\n\ninterface ButtonListRootProps extends Pick<ButtonGroupProps, \"size\" | \"variant\" | \"children\"> {\n\t// not including `large` because large ghost buttons have a non-standard margin\n\t/** @default \"medium\" */\n\tsize?: Responsive<Exclude<Size, \"large\">>\n\t// not including solid as it doesn't look good\n\t/** @default outline */\n\tvariant?: Exclude<ButtonGroupProps[\"variant\"], \"solid\">\n\t/** Content to display before the list but within the card */\n\tbefore?: ReactNode\n\t/** Content to display after the list but within the card */\n\tafter?: ReactNode\n\tclassName?: string\n}\n\ninterface ButtonListBorderProps extends Pick<ButtonListRootProps, \"before\" | \"after\" | \"size\" | \"children\"> {\n\tborder: boolean\n}\n\nconst ButtonListBorder = memo(\n\tforwardRef<HTMLDivElement, ButtonListBorderProps>((props, ref) => {\n\t\tconst { children, border, before, after, size } = props\n\t\tconst variant = border ? \"surface\" : \"ghost\"\n\t\tconst radixSize = useResponsiveMapping(size, SizeMapping)\n\n\t\tconst inset =\n\t\t\tbefore && after ? (\n\t\t\t\t<Inset side=\"x\" pt=\"current\" pb=\"current\">\n\t\t\t\t\t{children}\n\t\t\t\t</Inset>\n\t\t\t) : before ? (\n\t\t\t\t<Inset side=\"bottom\" pt=\"current\">\n\t\t\t\t\t{children}\n\t\t\t\t</Inset>\n\t\t\t) : after ? (\n\t\t\t\t<Inset side=\"top\" pb=\"current\">\n\t\t\t\t\t{children}\n\t\t\t\t</Inset>\n\t\t\t) : (\n\t\t\t\t<Inset>{children}</Inset>\n\t\t\t)\n\n\t\tconst ret = (\n\t\t\t<Card ref={ref} size={radixSize} variant={variant}>\n\t\t\t\t{before}\n\t\t\t\t{inset}\n\t\t\t\t{after}\n\t\t\t</Card>\n\t\t)\n\n\t\t// offset negative margin from the ghost card by adding a container\n\t\t// with padding of equal size\n\t\tif (variant === \"ghost\") {\n\t\t\treturn <Box p=\"3\">{ret}</Box>\n\t\t}\n\n\t\treturn ret\n\t}),\n)\n\n/** A specialized version of `ButtonGroup` for vertical list of block-like buttons. */\nexport const ButtonListRoot: FC<ButtonListRootProps> = memo(\n\tforwardRef<HTMLDivElement, ButtonListRootProps>((props, ref) => {\n\t\tconst { children, variant = \"outline\", size, className, ...borderProps } = props\n\t\tconst numChildren = Children.count(children)\n\t\tconst showBorder = variant === \"outline\" || variant === \"surface\"\n\n\t\t// remove the border from the buttons\n\t\t// as the border is handled by the Separator component\n\t\tconst buttonVariant = variant === \"outline\" ? \"ghost\" : variant === \"surface\" ? \"soft\" : variant\n\n\t\treturn (\n\t\t\t<ButtonListBorder {...borderProps} border={showBorder} size={size}>\n\t\t\t\t<ButtonGroup\n\t\t\t\t\tsize={size}\n\t\t\t\t\tseverity=\"info\"\n\t\t\t\t\tvariant={buttonVariant}\n\t\t\t\t\tclassName={className}\n\t\t\t\t\tmerged\n\t\t\t\t\tgap=\"0\"\n\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\tref={ref}\n\t\t\t\t>\n\t\t\t\t\t{Children.map(children, (child, i) => (\n\t\t\t\t\t\t<Flex key={i} direction=\"column\">\n\t\t\t\t\t\t\t{child}\n\t\t\t\t\t\t\t{/* only add a separator between children */}\n\t\t\t\t\t\t\t{i < numChildren - 1 && <Separator size=\"4\" />}\n\t\t\t\t\t\t</Flex>\n\t\t\t\t\t))}\n\t\t\t\t</ButtonGroup>\n\t\t\t</ButtonListBorder>\n\t\t)\n\t}),\n)\n\ninterface ButtonListItemProps extends Omit<ButtonProps, \"size\" | \"variant\" | \"severity\" | \"fluid\"> {}\n\nconst ButtonListItem = memo(\n\tforwardRef<HTMLButtonElement, ButtonListItemProps>((props, ref) => {\n\t\tconst { variant } = useButtonGroupContext()\n\n\t\tconst ret = <Button ref={ref} {...props} variant={variant} />\n\n\t\t// remove the negative margin from the ghost button\n\t\tif (variant === \"ghost\") {\n\t\t\treturn (\n\t\t\t\t<Flex px=\"2\" py=\"1\">\n\t\t\t\t\t<Box grow=\"1\" width=\"100%\" asChild>\n\t\t\t\t\t\t{ret}\n\t\t\t\t\t</Box>\n\t\t\t\t</Flex>\n\t\t\t)\n\t\t}\n\n\t\treturn ret\n\t}),\n)\n\nexport const ButtonList = {\n\tRoot: ButtonListRoot,\n\tItem: ButtonListItem,\n}\n","import { memo } from \"react\"\nimport { Dialog, Flex, IconButton } from \"@radix-ui/themes\"\nimport { Cross1Icon } from \"@radix-ui/react-icons\"\nimport { DialogContentProps } from \"./typings\"\n\nexport const DialogContent = memo(function DialogContent(props: DialogContentProps) {\n\tconst { title, description, content, closeDialog } = props\n\treturn (\n\t\t<Flex direction=\"column\" gap=\"2\">\n\t\t\t<Flex direction=\"column\" gap=\"1\">\n\t\t\t\t<Flex justify=\"between\">\n\t\t\t\t\t<Dialog.Title mb=\"0\">{title}</Dialog.Title>\n\t\t\t\t\t<Dialog.Close>\n\t\t\t\t\t\t<IconButton color=\"gray\" variant=\"ghost\" aria-label=\"Close\">\n\t\t\t\t\t\t\t<Cross1Icon />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</Dialog.Close>\n\t\t\t\t</Flex>\n\t\t\t\t{description && <Dialog.Description>{description}</Dialog.Description>}\n\t\t\t</Flex>\n\t\t\t{content(closeDialog)}\n\t\t</Flex>\n\t)\n})\n","import { memo, useState, useCallback, forwardRef } from \"react\"\nimport { Dialog as RadixDialog } from \"@radix-ui/themes\"\nimport { DialogContent } from \"./DialogContent\"\nimport { CloseDialogWithOptions, DialogProps } from \"./typings\"\n\n/**\n * Display or collect information in a modal. Unlike the `AlertDialog`, the `Dialog`'s can be nested\n * and close when clicking outside of the dialog content.\n */\nexport const Dialog = memo(\n\tforwardRef<HTMLDivElement, DialogProps>((props, ref) => {\n\t\tconst { children, content, title, description, onOpen, defaultOpen, onCloseInterrupt, ...contentProps } = props\n\t\tconst [open, setOpen] = useState(defaultOpen ?? false)\n\n\t\tconst handleOpenChange = useCallback(\n\t\t\t(next: boolean) => {\n\t\t\t\tif (next && onOpen) {\n\t\t\t\t\tonOpen()\n\t\t\t\t} else if (!next && onCloseInterrupt) {\n\t\t\t\t\t// closes the dialog, bypassing the checks in `handleOpenChange`\n\t\t\t\t\tconst confirmClose = () => setOpen(false)\n\n\t\t\t\t\t// if onCloseInterrupt is passed, bypass the standard close behavior and require\n\t\t\t\t\t// the passed `confirmClose` to close the dialog\n\t\t\t\t\treturn onCloseInterrupt(confirmClose)\n\t\t\t\t}\n\n\t\t\t\tsetOpen(next)\n\t\t\t},\n\t\t\t[onOpen, onCloseInterrupt],\n\t\t)\n\n\t\tconst closeDialog = useCallback<CloseDialogWithOptions>(\n\t\t\t(options) => {\n\t\t\t\tif (options?.force) {\n\t\t\t\t\t// bypass the checks in the `handleOpenChange` function\n\t\t\t\t\treturn setOpen(false)\n\t\t\t\t}\n\n\t\t\t\thandleOpenChange(false)\n\t\t\t},\n\t\t\t[handleOpenChange],\n\t\t)\n\n\t\treturn (\n\t\t\t<RadixDialog.Root open={open} onOpenChange={handleOpenChange}>\n\t\t\t\t<RadixDialog.Trigger>{children}</RadixDialog.Trigger>\n\t\t\t\t<RadixDialog.Content ref={ref} {...contentProps}>\n\t\t\t\t\t<DialogContent\n\t\t\t\t\t\tcloseDialog={closeDialog}\n\t\t\t\t\t\tcontent={content}\n\t\t\t\t\t\ttitle={title}\n\t\t\t\t\t\tdescription={description}\n\t\t\t\t\t/>\n\t\t\t\t</RadixDialog.Content>\n\t\t\t</RadixDialog.Root>\n\t\t)\n\t}),\n)\n","import { AlertDialog, Flex } from \"@radix-ui/themes\"\nimport { AlertDialogStandardContent } from \"./typings\"\nimport { Button } from \"../../Buttons\"\n\n// remove the margin-bottom from the title so that Flex works as expected\nexport const Title: typeof AlertDialog.Title = ((props) => (\n\t<AlertDialog.Title mb=\"0\" {...props} />\n)) as typeof AlertDialog.Title\n\nexport const AlertDialogContent = (props: AlertDialogStandardContent) => {\n\tconst { title, description, actionText = \"Confirm\", cancelText = \"Cancel\", onAction, onCancel, severity } = props\n\treturn (\n\t\t<Flex direction=\"column\" gap=\"2\">\n\t\t\t<Flex direction=\"column\" gap=\"1\">\n\t\t\t\t<Title>{title}</Title>\n\t\t\t\t<AlertDialog.Description>{description}</AlertDialog.Description>\n\t\t\t</Flex>\n\n\t\t\t<Flex gap=\"3\" mt=\"4\" justify=\"end\">\n\t\t\t\t<AlertDialog.Cancel>\n\t\t\t\t\t<Button variant=\"soft\" severity=\"info\" onClick={onCancel}>\n\t\t\t\t\t\t{cancelText}\n\t\t\t\t\t</Button>\n\t\t\t\t</AlertDialog.Cancel>\n\t\t\t\t<AlertDialog.Action>\n\t\t\t\t\t<Button variant=\"solid\" severity={severity} onClick={onAction}>\n\t\t\t\t\t\t{actionText}\n\t\t\t\t\t</Button>\n\t\t\t\t</AlertDialog.Action>\n\t\t\t</Flex>\n\t\t</Flex>\n\t)\n}\n","import { memo, useMemo } from \"react\"\nimport { AlertDialog as RadixAlertDialog } from \"@radix-ui/themes\"\nimport { AlertDialogContentHelpers, AlertDialogProps } from \"./typings\"\nimport { AlertDialogContent, Title } from \"./AlertDialogContent\"\n\n/**\n * The AlertDialog is used to confirm an action or prompt the user for a decision.\n * Unlike the Dialog, the AlertDialog is not dismissible by clicking outside of the dialog, nor can it be nested.\n *\n * To use, place the `AlertDialogProvider` at the root of your app and use the `useAlertDialog` hook to open the dialog.\n *\n * To set the content of the dialog, use the `content` prop or pass values for the `title`, `description`, and `onAction` props.\n */\nexport const AlertDialog = memo(function AlertDialog(props: AlertDialogProps) {\n\tconst { open, setOpen, children, ...contentProps } = props\n\n\tconst helpers: AlertDialogContentHelpers = useMemo(() => {\n\t\treturn {\n\t\t\tclose: () => setOpen(false),\n\t\t\tTitle,\n\t\t\tDescription: RadixAlertDialog.Description,\n\t\t}\n\t}, [setOpen])\n\n\treturn (\n\t\t<RadixAlertDialog.Root open={open} onOpenChange={setOpen}>\n\t\t\t<RadixAlertDialog.Content>\n\t\t\t\t{\"content\" in contentProps ? contentProps.content(helpers) : <AlertDialogContent {...contentProps} />}\n\t\t\t</RadixAlertDialog.Content>\n\t\t\t{children}\n\t\t</RadixAlertDialog.Root>\n\t)\n})\n","import { createContext, memo, useState, useCallback } from \"react\"\nimport { AlertDialogContextType, AlertDialogOptions } from \"./typings\"\nimport { AlertDialog } from \"./AlertDialog\"\n\ninterface AlertDialogProviderProps {\n\tchildren: React.ReactNode\n}\n\nexport const AlertDialogContent = createContext<AlertDialogContextType>(() => {\n\tthrow new Error(\"No AlertDialogProvider found\")\n})\n\nconst initialState: AlertDialogOptions = {\n\tcontent: () => null,\n}\n\nexport const AlertDialogProvider = memo(function AlertDialogProvider({ children }: AlertDialogProviderProps) {\n\tconst [open, setOpen] = useState(false)\n\tconst [state, setState] = useState<AlertDialogOptions>(initialState)\n\n\tconst openDialog = useCallback<AlertDialogContextType>(\n\t\t(options) => {\n\t\t\tif (open) throw new Error(\"AlertDialog is already open\")\n\n\t\t\tsetState(options)\n\t\t\tsetOpen(true)\n\t\t},\n\t\t[open],\n\t)\n\n\treturn (\n\t\t<AlertDialog open={open} setOpen={setOpen} {...state}>\n\t\t\t<AlertDialogContent.Provider value={openDialog}>{children}</AlertDialogContent.Provider>\n\t\t</AlertDialog>\n\t)\n})\n","import { useContext } from \"react\"\nimport { AlertDialogContent } from \"./context\"\n\nexport const useAlertDialog = () => {\n\treturn useContext(AlertDialogContent)\n}\n","import { DropdownMenu as RadixDropdownMenu } from \"@radix-ui/themes\"\nimport { FC, memo, useCallback } from \"react\"\nimport {\n\tDropdownMenuItemGroupProps,\n\tDropdownMenuItemProps,\n\tDropdownMenuProps,\n\tDropdownSubMenuProps,\n} from \"./typings.ts\"\nimport { useSeverityColor } from \"../utils.ts\"\n\nconst Item: FC<DropdownMenuItemProps> = memo(function DropdownMenuItem({\n\tseverity,\n\titemContent,\n\tcloseOnSelect = true,\n\tonSelect,\n\t...rest\n}: DropdownMenuItemProps) {\n\tconst severityColor = useSeverityColor(severity)\n\n\tconst handleSelect = useCallback(\n\t\t(event: Event) => {\n\t\t\tif (!closeOnSelect) event.preventDefault()\n\t\t\tif (onSelect) onSelect(event)\n\t\t},\n\t\t[closeOnSelect, onSelect],\n\t)\n\n\treturn (\n\t\t<RadixDropdownMenu.Item onSelect={handleSelect} color={severityColor} {...rest}>\n\t\t\t{itemContent}\n\t\t</RadixDropdownMenu.Item>\n\t)\n})\n\n/** The DropdownMenu component is a user interface element that provides a list of options for the user to choose from.\n * It is commonly used in web applications to present a set of related choices in a compact and organized manner.\n * This DropdownMenu component is a wrapper around the Radix-UI DropdownMenu component that can be found here https://www.radix-ui.com/themes/docs/components/dropdown-menu */\nexport const Root: FC<DropdownMenuProps> = memo(function DropdownMenu({\n\tdefaultOpen,\n\topen,\n\tonOpenChange,\n\tmodal,\n\ttrigger,\n\tlabel,\n\tseverity = \"info\",\n\tchildren,\n\t...rest\n}: DropdownMenuProps) {\n\tconst severityColor = useSeverityColor(severity)\n\treturn (\n\t\t<RadixDropdownMenu.Root defaultOpen={defaultOpen} open={open} onOpenChange={onOpenChange} modal={modal}>\n\t\t\t<RadixDropdownMenu.Trigger>{trigger}</RadixDropdownMenu.Trigger>\n\t\t\t<RadixDropdownMenu.Content color={severityColor} {...rest}>\n\t\t\t\t{label && <RadixDropdownMenu.Label>{label}</RadixDropdownMenu.Label>}\n\t\t\t\t{children}\n\t\t\t</RadixDropdownMenu.Content>\n\t\t</RadixDropdownMenu.Root>\n\t)\n})\n\nconst ItemGroup: FC<DropdownMenuItemGroupProps> = memo(function DropdownMenuItemGroup({\n\tseparatorBelow = false,\n\tseparatorAbove = false,\n\tchildren,\n\t...rest\n}: DropdownMenuItemGroupProps) {\n\treturn (\n\t\t<>\n\t\t\t{separatorAbove && <RadixDropdownMenu.Separator />}\n\t\t\t<RadixDropdownMenu.Group {...rest}>{children}</RadixDropdownMenu.Group>\n\t\t\t{separatorBelow && <RadixDropdownMenu.Separator />}\n\t\t</>\n\t)\n})\n\nconst SubMenu: FC<DropdownSubMenuProps> = memo(function DropdownSubMenu({\n\tdefaultOpen,\n\topen,\n\tonOpenChange,\n\ttrigger,\n\tchildren,\n\t...rest\n}: DropdownSubMenuProps) {\n\treturn (\n\t\t<RadixDropdownMenu.Sub defaultOpen={defaultOpen} open={open} onOpenChange={onOpenChange}>\n\t\t\t<RadixDropdownMenu.SubTrigger>{trigger}</RadixDropdownMenu.SubTrigger>\n\t\t\t<RadixDropdownMenu.SubContent {...rest}>{children}</RadixDropdownMenu.SubContent>\n\t\t</RadixDropdownMenu.Sub>\n\t)\n})\n\nexport const DropdownMenu = {\n\tRoot,\n\tItemGroup,\n\tItem,\n\tSubMenu,\n}\n","import React, { FC, forwardRef } from \"react\"\nimport { Select as RadixSelect } from \"@radix-ui/themes\"\nimport classNames from \"classnames\"\nimport { useResponsiveMapping, useSeverityColor } from \"../utils.ts\"\nimport { SizeMapping } from \"../constants.ts\"\nimport { SelectItemProps, SelectProps } from \"./typings.ts\"\n\nimport styles from \"./Select.module.sass\"\n\nconst _Select = forwardRef(function Select(\n\t{\n\t\tclassName,\n\t\tfluid,\n\t\tsize = \"medium\",\n\t\tvariant = \"surface\",\n\t\tseverity = \"primary\",\n\t\titemSeverity = \"info\",\n\t\tplaceholder = \"Select\",\n\t\tside,\n\t\titems = [],\n\t\tvalue,\n\t\tid,\n\t\t...rest\n\t}: SelectProps,\n\tref: React.Ref<HTMLButtonElement>,\n) {\n\tconst mappedSize = useResponsiveMapping(size, SizeMapping)\n\tconst severityColor = useSeverityColor(severity)\n\tconst itemSeverityColor = useSeverityColor(itemSeverity)\n\n\t// TODO: extend functionality to support grouping of items\n\t// TODO: remove key change based on value once placeholder issue it fixed in radix-ui/themes\n\treturn (\n\t\t<RadixSelect.Root size={mappedSize} {...rest} key={value === undefined ? 1 : 0} value={value}>\n\t\t\t<RadixSelect.Trigger\n\t\t\t\tclassName={classNames(className, {\n\t\t\t\t\t[styles.fluid!]: fluid,\n\t\t\t\t})}\n\t\t\t\tid={id}\n\t\t\t\tref={ref}\n\t\t\t\tvariant={variant}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\tcolor={severityColor}\n\t\t\t/>\n\t\t\t<RadixSelect.Content\n\t\t\t\tside={side}\n\t\t\t\tclassName={styles.contentDefault}\n\t\t\t\tposition=\"popper\"\n\t\t\t\tvariant={variant !== \"surface\" ? \"soft\" : \"solid\"}\n\t\t\t\tcolor={itemSeverityColor}\n\t\t\t>\n\t\t\t\t{items.map(({ itemContent, value, ...rest }: SelectItemProps) => (\n\t\t\t\t\t<RadixSelect.Item className=\"overmap-select-item\" key={value} value={value} {...rest}>\n\t\t\t\t\t\t{itemContent}\n\t\t\t\t\t</RadixSelect.Item>\n\t\t\t\t))}\n\t\t\t</RadixSelect.Content>\n\t\t</RadixSelect.Root>\n\t)\n})\nexport const Select: FC<SelectProps> = React.memo(_Select)\n","import { FC, ReactNode, forwardRef, memo } from \"react\"\nimport { SizeMapping } from \"../constants\"\nimport { Size } from \"../typings\"\nimport { Box, Checkbox, Flex, Responsive, Select } from \"@radix-ui/themes\"\n\nexport interface MultiSelectOption {\n\tlabel: ReactNode\n\tvalue: string\n}\n\ninterface MultiSelectItemProps extends MultiSelectOption {\n\tchecked: boolean\n\tsize?: Responsive<(typeof SizeMapping)[Size]>\n}\n\nexport const MultiSelectItem: FC<MultiSelectItemProps> = memo(\n\tforwardRef<HTMLDivElement, MultiSelectItemProps>((props, ref) => {\n\t\tconst { checked, label, value, size = \"2\" } = props\n\t\treturn (\n\t\t\t<Box asChild px={size}>\n\t\t\t\t<Select.Item value={value} ref={ref}>\n\t\t\t\t\t<Flex gap={size} align=\"center\">\n\t\t\t\t\t\t<Checkbox checked={checked} />\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</Flex>\n\t\t\t\t</Select.Item>\n\t\t\t</Box>\n\t\t)\n\t}),\n)\n","import { Select } from \"@radix-ui/themes\"\nimport { ComponentProps, FC, forwardRef, memo, useCallback, useEffect, useMemo, useState } from \"react\"\nimport { Severity, Size } from \"../typings\"\nimport { useResponsiveMapping, useSeverityColor } from \"../utils\"\nimport { SizeMapping } from \"../constants\"\nimport { MultiSelectItem, MultiSelectOption } from \"./MultiSelectItem\"\n\ntype RadixTriggerProps = ComponentProps<typeof Select.Trigger>\n\nexport interface MultiSelectProps {\n\tvalue: string[]\n\tonValueChange: (value: string[]) => void\n\toptions: MultiSelectOption[]\n\n\t// root props\n\tdisabled?: boolean\n\t/** @default medium */\n\tsize?: Size\n\tname?: string\n\n\t// trigger props\n\tplaceholder?: string\n\tid?: string\n\t/** @default surface */\n\tvariant?: Exclude<RadixTriggerProps[\"variant\"], \"classic\">\n\tradius?: RadixTriggerProps[\"radius\"]\n\t/** @default primary */\n\tseverity?: Severity\n}\n\nconst SELECT_ALL_VALUE = \"__select_all__\"\n\n/**\n * `MultiSelect` does not support being used as an uncontrolled component,\n * hence `onValueChange` and `value` are required.\n */\nexport const MultiSelect: FC<MultiSelectProps> = memo(\n\tforwardRef<HTMLButtonElement, MultiSelectProps>((props, ref) => {\n\t\tconst [open, setOpen] = useState(false)\n\n\t\tconst { placeholder, value, onValueChange, options, disabled, id, radius, variant, name } = props\n\t\tconst size = useResponsiveMapping(props.size, SizeMapping)\n\t\tconst color = useSeverityColor(props.severity)\n\n\t\t// option value => label\n\t\tconst optionsMap = useMemo(() => new Map(options.map((o) => [o.value, o.label])), [options])\n\n\t\t// ex: \"label 1, label 2\" OR \"6 options selected\"\n\t\tconst displayValue =\n\t\t\tvalue.length > 4\n\t\t\t\t? // to ensure the width of the select doesn't get too big\n\t\t\t\t `${value.length} options selected`\n\t\t\t\t: // convert the values to labels\n\t\t\t\t value.map((v) => optionsMap.get(v)).join(\", \")\n\n\t\tconst close = useCallback(() => setOpen(false), [])\n\n\t\tconst handleOpenChange = useCallback((open: boolean) => {\n\t\t\t// dismiss the internal close events\n\t\t\t// require clicking outside of the popup to close or pressing escape\n\t\t\tif (open) setOpen(true)\n\t\t}, [])\n\n\t\tconst handleValueChange = useCallback(\n\t\t\t(selected: string) => {\n\t\t\t\tlet next: string[]\n\t\t\t\tif (selected === SELECT_ALL_VALUE) {\n\t\t\t\t\tconst isAllSelected = value.length === options.length\n\t\t\t\t\tnext = isAllSelected ? [] : options.map((o) => o.value)\n\t\t\t\t} else {\n\t\t\t\t\tnext = value.includes(selected) ? value.filter((v) => v !== selected) : [...value, selected]\n\t\t\t\t}\n\n\t\t\t\tonValueChange(next)\n\t\t\t},\n\t\t\t[onValueChange, options, value],\n\t\t)\n\n\t\tuseEffect(() => {\n\t\t\tif (options.some(({ value }) => value === SELECT_ALL_VALUE)) {\n\t\t\t\tthrow new Error(`Cannot have an option with the value \"${SELECT_ALL_VALUE}\"`)\n\t\t\t}\n\t\t}, [options])\n\n\t\treturn (\n\t\t\t<Select.Root\n\t\t\t\topen={open}\n\t\t\t\tvalue=\"\"\n\t\t\t\tonOpenChange={handleOpenChange}\n\t\t\t\tonValueChange={handleValueChange}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tsize={size}\n\t\t\t\tname={name}\n\t\t\t\tautoComplete=\"off\"\n\t\t\t>\n\t\t\t\t<Select.Trigger\n\t\t\t\t\tref={ref}\n\t\t\t\t\tid={id}\n\t\t\t\t\tradius={radius}\n\t\t\t\t\tvariant={variant}\n\t\t\t\t\tcolor={color}\n\t\t\t\t\tplaceholder={value.length > 0 ? displayValue : placeholder}\n\t\t\t\t\t// remove the placeholder styling when there is a value\n\t\t\t\t\tdata-placeholder={value.length > 0 ? undefined : true}\n\t\t\t\t/>\n\n\t\t\t\t<Select.Content\n\t\t\t\t\tcolor=\"gray\"\n\t\t\t\t\tvariant=\"soft\"\n\t\t\t\t\tposition=\"popper\"\n\t\t\t\t\tonEscapeKeyDown={close}\n\t\t\t\t\tonPointerDownOutside={close}\n\t\t\t\t>\n\t\t\t\t\t<MultiSelectItem\n\t\t\t\t\t\tvalue={SELECT_ALL_VALUE}\n\t\t\t\t\t\tlabel=\"Select all\"\n\t\t\t\t\t\tchecked={value.length === options.length}\n\t\t\t\t\t\tsize={size}\n\t\t\t\t\t/>\n\t\t\t\t\t{options.map((option) => (\n\t\t\t\t\t\t<MultiSelectItem\n\t\t\t\t\t\t\tkey={option.value}\n\t\t\t\t\t\t\t{...option}\n\t\t\t\t\t\t\tchecked={value.includes(option.value)}\n\t\t\t\t\t\t\tsize={size}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</Select.Content>\n\t\t\t</Select.Root>\n\t\t)\n\t}),\n)\n","import { FC, forwardRef, memo, Ref, useCallback, useLayoutEffect, useRef, useState } from \"react\"\nimport { Switch as RadixSwitch, Portal } from \"@radix-ui/themes\"\nimport classNames from \"classnames\"\nimport { SwitchProps } from \"./typings.ts\"\nimport { useSeverityColor } from \"../utils.ts\"\n\nimport styles from \"./Switch.module.sass\"\n\nconst _Switch = forwardRef(function Switch(\n\t{ className, severity = \"primary\", icon, defaultChecked = false, onCheckedChange, ...rest }: SwitchProps,\n\tref: Ref<HTMLButtonElement>,\n) {\n\t// fallbackRef used in case user does not pass in a ref\n\tconst fallbackRef = useRef<HTMLButtonElement>(null)\n\t// uncontrolled state to keep track of whether the Switch is checked or not, not passed to the Switch itself\n\tconst [checked, setChecked] = useState(rest.checked ? rest.checked : defaultChecked)\n\t// iconContainer is used to store the switch Thumb span element so that an Icon can be rendered within it\n\tconst [iconContainer, setIconContainer] = useState<HTMLSpanElement | undefined>()\n\tconst severityColor = useSeverityColor(severity)\n\n\tuseLayoutEffect(() => {\n\t\tconst usedRef = ref ? ref : fallbackRef\n\t\tif (\"current\" in usedRef && usedRef.current) {\n\t\t\tsetIconContainer(usedRef.current?.querySelector(\"span.rt-SwitchThumb\") as HTMLSpanElement)\n\t\t}\n\t}, [ref])\n\n\tconst handleValueChange = useCallback(\n\t\t(checked: boolean) => {\n\t\t\tsetChecked(checked)\n\t\t\tif (onCheckedChange) onCheckedChange(checked)\n\t\t},\n\t\t[onCheckedChange],\n\t)\n\n\tconst _checked = rest.checked ? rest.checked : checked\n\n\treturn (\n\t\t<>\n\t\t\t<RadixSwitch\n\t\t\t\tclassName={classNames(\"overmap-switch\", className, styles.default)}\n\t\t\t\tref={ref ? ref : fallbackRef}\n\t\t\t\tcolor={severityColor}\n\t\t\t\tradius=\"full\"\n\t\t\t\tdefaultChecked={defaultChecked}\n\t\t\t\tonCheckedChange={handleValueChange}\n\t\t\t\t{...rest}\n\t\t\t/>\n\t\t\t<Portal container={iconContainer} asChild>\n\t\t\t\t{icon && \"checked\" in icon ? (_checked ? icon[\"checked\"] : icon[\"unchecked\"]) : icon}\n\t\t\t</Portal>\n\t\t</>\n\t)\n})\n\n/** The Switch Component is a user interface element that allows users to toggle between two states, typically\n * representing \"on\" and \"off\" or \"enabled\" and \"disabled\". It is commonly used for settings, preferences, or any\n * binary options. This Switch component is a wrapper around the Radix-ui Switch component found here https://www.radix-ui.com/themes/docs/components/switch\n */\nexport const Switch: FC<SwitchProps> = memo(_Switch)\n","import { forwardRef, memo, Ref, useEffect, useState } from \"react\"\nimport { Box } from \"@radix-ui/themes\"\nimport { DragHandleDots2Icon } from \"@radix-ui/react-icons\"\nimport * as RadixDialogPrimitive from \"@radix-ui/react-dialog\"\nimport { DialogContentProps } from \"@radix-ui/react-dialog\"\nimport { Resizable } from \"re-resizable\"\nimport classNames from \"classnames\"\n\nimport styles from \"./Sidebar.module.sass\"\n\ninterface SidebarProps extends Omit<DialogContentProps, \"asChild\" | \"forceMount\"> {\n\t/** determines what side the Sidebar appears from within its rendered container */\n\tside?: \"left\" | \"right\"\n\t/** when true, interactions with any elements outside the Sidebar will be disabled */\n\tmodal?: boolean\n\t/** The minimum width to which the Sidebar can be resized to\n\t * @default 300px\n\t * */\n\tminWidth?: number | string\n\t/** The maximum width to which the Sidebar can be resized to\n\t * @default 500px\n\t * */\n\tmaxWidth?: number | string\n\t/** determines if the Sidebar can be resized\n\t * @default true\n\t * */\n\tresizable?: boolean\n\t/** prop to control whether the Sidebar is open or not */\n\topen?: boolean\n\t/** a selector string for the desired container for the Sidebar to render within\n\t * @default '[data-is-root-theme=\"true\"]'\n\t * */\n\tcontainerSelector?: string\n\t/** determine whether the Sidebar also renders with an Overlay*/\n\toverlay?: boolean\n}\n\nconst _Sidebar = forwardRef(function Sidebar(\n\t{\n\t\tside = \"left\",\n\t\tmodal = true,\n\t\tchildren,\n\t\topen,\n\t\tcontainerSelector,\n\t\toverlay = true,\n\t\tresizable = true,\n\t\t// Props related to Resizable\n\t\tminWidth = \"300px\",\n\t\tmaxWidth = \"500px\",\n\t\t...rest\n\t}: SidebarProps,\n\tref: Ref<HTMLDivElement>,\n) {\n\tconst isRight = side === \"right\"\n\tconst isLeft = side === \"left\"\n\tconst [container, setContainer] = useState<HTMLElement>()\n\n\tuseEffect(() => {\n\t\tconst selector = containerSelector ?? '[data-is-root-theme=\"true\"]'\n\t\tconst tempContainer = document.querySelector(selector) as HTMLElement\n\n\t\tif (tempContainer === undefined) {\n\t\t\tthrow new Error(`Could not find a container element using the following selector ${selector}`)\n\t\t}\n\t\tsetContainer(tempContainer)\n\t}, [containerSelector])\n\n\treturn (\n\t\t<RadixDialogPrimitive.Root open={open} modal={modal}>\n\t\t\t<RadixDialogPrimitive.Portal container={container}>\n\t\t\t\t{overlay && <RadixDialogPrimitive.Overlay className={classNames(styles.overlay)} />}\n\t\t\t\t<RadixDialogPrimitive.Content\n\t\t\t\t\tclassName={classNames(\"overmap-sidebar\", \"rt-DialogContent\", styles.sidebarContent, {\n\t\t\t\t\t\t[styles.left!]: isLeft,\n\t\t\t\t\t\t[styles.right!]: isRight,\n\t\t\t\t\t})}\n\t\t\t\t\tref={ref}\n\t\t\t\t\tasChild\n\t\t\t\t\t{...rest}\n\t\t\t\t>\n\t\t\t\t\t<Box width=\"auto\">\n\t\t\t\t\t\t<Resizable\n\t\t\t\t\t\t\tminWidth={minWidth}\n\t\t\t\t\t\t\tmaxWidth={maxWidth}\n\t\t\t\t\t\t\tdefaultSize={{ width: \"300px\", height: \"100%\" }}\n\t\t\t\t\t\t\tenable={{ right: resizable && isLeft, left: resizable && isRight }}\n\t\t\t\t\t\t\thandleClasses={{ left: styles.resizeHandle, right: styles.resizeHandle }}\n\t\t\t\t\t\t\thandleComponent={{\n\t\t\t\t\t\t\t\tright: <DragHandleDots2Icon />,\n\t\t\t\t\t\t\t\tleft: <DragHandleDots2Icon />,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t</Resizable>\n\t\t\t\t\t</Box>\n\t\t\t\t</RadixDialogPrimitive.Content>\n\t\t\t</RadixDialogPrimitive.Portal>\n\t\t</RadixDialogPrimitive.Root>\n\t)\n})\n\nexport const Sidebar = memo(_Sidebar)\n","import React, { FC, forwardRef } from \"react\"\nimport { Text, TextField as RadixTextField } from \"@radix-ui/themes\"\nimport classNames from \"classnames\"\nimport { useResponsiveMapping, useSeverityColor } from \"../utils.ts\"\nimport { SizeMapping } from \"../constants.ts\"\nimport { InputProps } from \"./typings.ts\"\n\nimport styles from \"./Input.module.sass\"\n\nconst _Input = forwardRef(function Input(\n\t{\n\t\tclassName,\n\t\tleftSlot,\n\t\trightSlot,\n\t\tsize = \"medium\",\n\t\tshowInputLength,\n\t\tvalue,\n\t\tvariant,\n\t\tseverity = \"primary\",\n\t\t...rest\n\t}: InputProps,\n\tref: React.Ref<HTMLInputElement>,\n) {\n\tconst computedSize = useResponsiveMapping(size, SizeMapping)\n\n\tconst color = useSeverityColor(severity)\n\n\tconst displayInputLength = showInputLength || (showInputLength === undefined && rest.maxLength !== undefined)\n\tconst valueAsString = value !== undefined ? value.toString() : undefined\n\n\treturn (\n\t\t<RadixTextField.Root\n\t\t\tclassName={classNames(styles.wrapper, {\n\t\t\t\t[styles.accommodateCharCount!]: displayInputLength,\n\t\t\t})}\n\t\t\tsize={computedSize}\n\t\t\tvariant={variant}\n\t\t\tcolor={color}\n\t\t>\n\t\t\t{leftSlot && <RadixTextField.Slot>{leftSlot}</RadixTextField.Slot>}\n\t\t\t<RadixTextField.Input\n\t\t\t\tclassName={classNames(styles.default, className, {\n\t\t\t\t\t[styles.noLeftIcon!]: !leftSlot,\n\t\t\t\t\t[styles.noRightIcon!]: !rightSlot,\n\t\t\t\t})}\n\t\t\t\tref={ref}\n\t\t\t\tsize={computedSize}\n\t\t\t\tvariant={variant}\n\t\t\t\tcolor={color}\n\t\t\t\t{...rest}\n\t\t\t/>\n\t\t\t{rightSlot && <RadixTextField.Slot>{rightSlot}</RadixTextField.Slot>}\n\t\t\t{displayInputLength && (\n\t\t\t\t<Text as=\"p\" className={styles.charCount} size=\"1\" color=\"gray\">\n\t\t\t\t\t{rest.maxLength !== undefined\n\t\t\t\t\t\t? `${valueAsString?.length}/${rest.maxLength}`\n\t\t\t\t\t\t: `${valueAsString?.length}`}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</RadixTextField.Root>\n\t)\n})\nexport const Input: FC<InputProps> = React.memo(_Input)\n","import React, { forwardRef, FC } from \"react\"\nimport { Popover as RadixPopover } from \"@radix-ui/themes\"\nimport { PopoverProps } from \"./typings.ts\"\n\nimport styles from \"./Popover.module.sass\"\nimport classNames from \"classnames\"\n\nconst _Popover = forwardRef(function Popover(\n\t{ className, defaultOpen = false, modal = false, content, children, ...rest }: PopoverProps,\n\tref: React.Ref<HTMLDivElement>,\n) {\n\treturn (\n\t\t<RadixPopover.Root defaultOpen={defaultOpen} modal={modal}>\n\t\t\t<RadixPopover.Trigger>{children}</RadixPopover.Trigger>\n\t\t\t<RadixPopover.Content\n\t\t\t\tref={ref}\n\t\t\t\tclassName={classNames(\"overmap-popover\", className, styles.wrapper)}\n\t\t\t\t{...rest}\n\t\t\t>\n\t\t\t\t{content(RadixPopover.Close)}\n\t\t\t</RadixPopover.Content>\n\t\t</RadixPopover.Root>\n\t)\n})\nexport const Popover: FC<PopoverProps> = React.memo(_Popover)\n","import {\n\tCSSProperties,\n\tFC,\n\tmemo,\n\tuseCallback,\n\tuseEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n\tDispatch,\n\tSetStateAction,\n\tReactNode,\n\tReactElement,\n} from \"react\"\nimport { Box, Flex } from \"@radix-ui/themes\"\nimport { DragHandleDots2Icon } from \"@radix-ui/react-icons\"\nimport { NumberSize, Resizable, ResizeDirection } from \"re-resizable\"\nimport { Transition, TransitionStatus } from \"react-transition-group\"\nimport classNames from \"classnames\"\n\nimport styles from \"./LeftAndRightPanels.module.sass\"\n\nconst DEFAULT_MIN_WIDTH = 200\nconst TRANSITION_DURATION = 150\n\nexport interface LeftAndRightPanelsProps {\n\t/** content to be rendered within the center panel */\n\tchildren: ReactNode\n\t/** state to determine whether to show or hide the left panel*/\n\tshowLeft?: boolean\n\t/** content to be rendered within the left panel*/\n\tleftPanel?: ReactElement\n\t/** minimum width of the left panel when resizing */\n\tleftMinWidth?: number\n\t/** maximum width of the left panel when resizing */\n\tleftMaxWidth?: number\n\t/** state to determine whether to show or hide the right panel*/\n\tshowRight?: boolean\n\t/** content to be rendered within the left panel*/\n\trightPanel?: ReactElement\n\t/** minimum width of the left panel when resizing */\n\trightMinWidth?: number\n\t/** maximum width of the left panel when resizing */\n\trightMaxWidth?: number\n\t/** used to disable or enable resizing on the left and right panels */\n\tresizeable?: { left?: boolean; right?: boolean }\n}\n\n/** Panels are graphical elements that divide a screen or window into distinct sections, each of which can contain\n * different types of content or functionality. They are often used to organize and present information in a structured\n * manner. In many graphical user interfaces (GUIs), panels are draggable and resizable, allowing users to customize\n * the layout to suit their preferences. Panels can be used for a variety of purposes, such as displaying navigation\n * menus, presenting data, providing tools or controls, or hosting multimedia content. LeftAndRightPanels renders main\n * content and provides left and right resizable, toggleable panels. This component can be rendered within any element\n * as its container and the Panels will be scoped to the height and appear to the left and right of that container. */\nexport const LeftAndRightPanels: FC<LeftAndRightPanelsProps> = memo(function Panels({\n\tchildren,\n\tshowLeft,\n\tleftPanel,\n\tleftMinWidth = DEFAULT_MIN_WIDTH,\n\tshowRight,\n\trightPanel,\n\trightMinWidth = DEFAULT_MIN_WIDTH,\n\tresizeable,\n}: LeftAndRightPanelsProps) {\n\tconst wrapperRef = useRef<HTMLDivElement>(null)\n\t// Left panel related state\n\tconst leftPanelRef = useRef<HTMLDivElement>(null)\n\tconst [leftPanelWidth, setLeftPanelWidth] = useState<number>(0)\n\tconst [leftPanelMaxWidth, setLeftPanelMaxWidth] = useState<number>()\n\t// Right panel related state\n\tconst rightPanelRef = useRef<HTMLDivElement>(null)\n\tconst [rightPanelWidth, setRightPanelWidth] = useState<number>(0)\n\tconst [rightPanelMaxWidth, setRightPanelMaxWidth] = useState<number>()\n\n\tconst handleResizePanel = useCallback(\n\t\t(\n\t\t\tresizedPanelWidth: number,\n\t\t\tsetResizedPanelWidth: Dispatch<SetStateAction<number>>,\n\t\t\tsetOtherPanelMaxWidth: Dispatch<SetStateAction<number | undefined>>,\n\t\t) => {\n\t\t\treturn (_event: MouseEvent | TouchEvent, _dir: ResizeDirection, _ref: HTMLElement, delta: NumberSize) => {\n\t\t\t\tif (!wrapperRef.current) return\n\t\t\t\tconst newWidth = resizedPanelWidth + delta.width\n\t\t\t\tsetOtherPanelMaxWidth(wrapperRef.current.clientWidth - newWidth)\n\t\t\t\tsetResizedPanelWidth(() => newWidth)\n\t\t\t}\n\t\t},\n\t\t[],\n\t)\n\n\tconst handleResizeLeftPanel = useCallback(\n\t\t(_event: MouseEvent | TouchEvent, _dir: ResizeDirection, _ref: HTMLElement, delta: NumberSize) =>\n\t\t\thandleResizePanel(leftPanelWidth, setLeftPanelWidth, setRightPanelMaxWidth)(_event, _dir, _ref, delta),\n\t\t[handleResizePanel, leftPanelWidth],\n\t)\n\n\tconst handleResizeRightPanel = useCallback(\n\t\t(_event: MouseEvent | TouchEvent, _dir: ResizeDirection, _ref: HTMLElement, delta: NumberSize) =>\n\t\t\thandleResizePanel(rightPanelWidth, setRightPanelWidth, setLeftPanelMaxWidth)(_event, _dir, _ref, delta),\n\t\t[handleResizePanel, rightPanelWidth],\n\t)\n\n\t// Used to resize and update the other panel when a panel is opened\n\tconst handleResizeOtherPanelOnPanelOpen = useCallback(\n\t\t(\n\t\t\topeningPanelWidth: number,\n\t\t\topeningPanelMinWidth: number,\n\t\t\tsetOpeningPanelWidth: Dispatch<SetStateAction<number>>,\n\t\t\tsetOpeningPanelMaxWidth: Dispatch<SetStateAction<number | undefined>>,\n\t\t\totherPanelWidth: number,\n\t\t\totherPanelOpen: boolean | undefined,\n\t\t\tsetOtherPanelWidth: Dispatch<SetStateAction<number>>,\n\t\t\tsetOtherPanelMaxWidth: Dispatch<SetStateAction<number | undefined>>,\n\t\t) => {\n\t\t\tif (!wrapperRef.current) return\n\t\t\tlet newOpeningPanelWidth = openingPanelWidth\n\n\t\t\t// If first time opening, set its width to the specified min width\n\t\t\tif (newOpeningPanelWidth === 0) {\n\t\t\t\tnewOpeningPanelWidth = openingPanelMinWidth\n\t\t\t\tsetOpeningPanelWidth(newOpeningPanelWidth)\n\t\t\t}\n\n\t\t\tif (otherPanelOpen) {\n\t\t\t\t// calculate the new max width of the other panel based on the opened panels new width\n\t\t\t\tconst newOtherPanelMaxWidth = wrapperRef.current.clientWidth - newOpeningPanelWidth\n\t\t\t\tsetOtherPanelMaxWidth(newOtherPanelMaxWidth)\n\n\t\t\t\t// if the current width of the other panel exceeds its new max, set its width to its new max\n\t\t\t\tif (otherPanelWidth > newOtherPanelMaxWidth) {\n\t\t\t\t\tsetOtherPanelWidth(newOtherPanelMaxWidth)\n\t\t\t\t\t// now update the new max width of the opened panel after other panel has been resized\n\t\t\t\t\tsetOpeningPanelMaxWidth(wrapperRef.current.clientWidth - newOtherPanelMaxWidth)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[],\n\t)\n\n\tconst handleResizeLeftPanelOnRightPanelOpen = useCallback(\n\t\t() =>\n\t\t\thandleResizeOtherPanelOnPanelOpen(\n\t\t\t\trightPanelWidth,\n\t\t\t\trightMinWidth,\n\t\t\t\tsetRightPanelWidth,\n\t\t\t\tsetRightPanelMaxWidth,\n\t\t\t\tleftPanelWidth,\n\t\t\t\tshowLeft,\n\t\t\t\tsetLeftPanelWidth,\n\t\t\t\tsetLeftPanelMaxWidth,\n\t\t\t),\n\t\t[handleResizeOtherPanelOnPanelOpen, leftPanelWidth, rightMinWidth, rightPanelWidth, showLeft],\n\t)\n\n\tconst handleResizeRightPanelOnLeftPanelOpen = useCallback(\n\t\t() =>\n\t\t\thandleResizeOtherPanelOnPanelOpen(\n\t\t\t\tleftPanelWidth,\n\t\t\t\tleftMinWidth,\n\t\t\t\tsetLeftPanelWidth,\n\t\t\t\tsetLeftPanelMaxWidth,\n\t\t\t\trightPanelWidth,\n\t\t\t\tshowRight,\n\t\t\t\tsetRightPanelWidth,\n\t\t\t\tsetRightPanelMaxWidth,\n\t\t\t),\n\t\t[handleResizeOtherPanelOnPanelOpen, leftMinWidth, leftPanelWidth, rightPanelWidth, showRight],\n\t)\n\n\tconst handleResizeOtherPanelOnPanelClose = useCallback(\n\t\t(otherPanelOpen: boolean | undefined, setOtherPanelMaxWidth: Dispatch<SetStateAction<number | undefined>>) => {\n\t\t\tif (!wrapperRef.current) return\n\t\t\t// Allow ability fpr other panel to fill entire wrapper container if open\n\t\t\tif (otherPanelOpen) setOtherPanelMaxWidth(wrapperRef.current.clientWidth)\n\t\t},\n\t\t[],\n\t)\n\n\tconst handleResizeLeftPanelOnRightPanelClose = useCallback(\n\t\t() => handleResizeOtherPanelOnPanelClose(showLeft, setLeftPanelMaxWidth),\n\t\t[handleResizeOtherPanelOnPanelClose, showLeft],\n\t)\n\n\tconst handleResizeRightPanelOnLeftPanelClose = useCallback(\n\t\t() => handleResizeOtherPanelOnPanelClose(showRight, setRightPanelMaxWidth),\n\t\t[handleResizeOtherPanelOnPanelClose, showRight],\n\t)\n\n\tconst resizeObserverCallback: ResizeObserverCallback = useCallback(() => {\n\t\tif (!wrapperRef.current) return\n\t\tsetLeftPanelMaxWidth(wrapperRef.current.clientWidth - (rightPanelRef.current?.clientWidth || 0))\n\t\tsetRightPanelMaxWidth(wrapperRef.current.clientWidth - (leftPanelRef.current?.clientWidth || 0))\n\t\tsetLeftPanelWidth(leftPanelRef.current?.clientWidth || 0)\n\t\tsetRightPanelWidth(rightPanelRef.current?.clientWidth || 0)\n\t}, [])\n\n\t// Set up resize observer on wrapper element to adjust width upon resizing\n\tuseEffect(() => {\n\t\tif (!wrapperRef.current) return\n\t\tconst resizeObserver = new ResizeObserver(resizeObserverCallback)\n\t\tresizeObserver.observe(wrapperRef.current)\n\t\treturn () => {\n\t\t\tresizeObserver.disconnect()\n\t\t}\n\t}, [resizeObserverCallback])\n\n\tconst leftPanelTransitionStyles: Record<TransitionStatus, CSSProperties> = useMemo(() => {\n\t\treturn {\n\t\t\tentering: {\n\t\t\t\ttransform: `translateX(-${leftPanelWidth}px)`,\n\t\t\t\tmarginRight: `-${leftPanelWidth}px`,\n\t\t\t\ttransitionProperty: \"transform, margin-right\",\n\t\t\t\ttransitionDuration: `${TRANSITION_DURATION}ms`,\n\t\t\t\ttransitionTimingFunction: \"linear\",\n\t\t\t},\n\t\t\tentered: {\n\t\t\t\ttransform: `translateX(0)`,\n\t\t\t\tmarginRight: 0,\n\t\t\t\ttransitionProperty: \"transform, margin-right\",\n\t\t\t\ttransitionDuration: `${TRANSITION_DURATION}ms`,\n\t\t\t\ttransitionTimingFunction: \"linear\",\n\t\t\t},\n\t\t\texiting: {\n\t\t\t\ttransform: `translateX(-${leftPanelWidth}px)`,\n\t\t\t\tmarginRight: `-${leftPanelWidth}px`,\n\t\t\t\ttransitionProperty: \"transform, margin-right\",\n\t\t\t\ttransitionDuration: `${TRANSITION_DURATION}ms`,\n\t\t\t\ttransitionTimingFunction: \"linear\",\n\t\t\t},\n\t\t\texited: {},\n\t\t\tunmounted: {},\n\t\t}\n\t}, [leftPanelWidth])\n\n\tconst rightPanelTransitionStyles: Record<TransitionStatus, CSSProperties> = useMemo(() => {\n\t\treturn {\n\t\t\tentering: {\n\t\t\t\ttransform: `translateX(${rightPanelWidth}px)`,\n\t\t\t\tmarginLeft: `${-rightPanelWidth}px`,\n\t\t\t\ttransitionProperty: \"transform, margin-left\",\n\t\t\t\ttransitionDuration: `${TRANSITION_DURATION}ms`,\n\t\t\t\ttransitionTimingFunction: \"linear\",\n\t\t\t},\n\t\t\tentered: {\n\t\t\t\ttransform: `translateX(0)`,\n\t\t\t\tmarginLeft: 0,\n\t\t\t\ttransitionProperty: \"transform, margin-left\",\n\t\t\t\ttransitionDuration: `${TRANSITION_DURATION}ms`,\n\t\t\t\ttransitionTimingFunction: \"linear\",\n\t\t\t},\n\t\t\texiting: {\n\t\t\t\ttransform: `translateX(${rightPanelWidth}px)`,\n\t\t\t\tmarginLeft: `${-rightPanelWidth}px`,\n\t\t\t\ttransitionProperty: \"transform, margin-left\",\n\t\t\t\ttransitionDuration: `${TRANSITION_DURATION}ms`,\n\t\t\t\ttransitionTimingFunction: \"linear\",\n\t\t\t},\n\t\t\texited: {},\n\t\t\tunmounted: {},\n\t\t}\n\t}, [rightPanelWidth])\n\n\treturn (\n\t\t<Flex\n\t\t\tclassName={styles.wrapper}\n\t\t\tstyle={{ minWidth: `${leftMinWidth + rightMinWidth}px` }}\n\t\t\tref={wrapperRef}\n\t\t\twidth=\"100%\"\n\t\t\theight=\"100%\"\n\t\t\tjustify=\"center\"\n\t\t\tm=\"0\"\n\t\t\tp=\"0\"\n\t\t>\n\t\t\t<Transition\n\t\t\t\tnodeRef={leftPanelRef}\n\t\t\t\ttimeout={!showLeft ? TRANSITION_DURATION : 0}\n\t\t\t\tin={showLeft}\n\t\t\t\tunmountOnExit\n\t\t\t\tonEntering={handleResizeRightPanelOnLeftPanelOpen}\n\t\t\t\tonExited={handleResizeRightPanelOnLeftPanelClose}\n\t\t\t>\n\t\t\t\t{(state) => (\n\t\t\t\t\t<Box\n\t\t\t\t\t\tref={leftPanelRef}\n\t\t\t\t\t\tclassName={classNames(styles.panelContent, styles.left)}\n\t\t\t\t\t\tstyle={leftPanelTransitionStyles[state]}\n\t\t\t\t\t\twidth=\"auto\"\n\t\t\t\t\t\theight=\"100%\"\n\t\t\t\t\t\tm=\"0\"\n\t\t\t\t\t\tp=\"0\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Resizable\n\t\t\t\t\t\t\tclassName={styles.resizable}\n\t\t\t\t\t\t\tsize={{\n\t\t\t\t\t\t\t\twidth: leftPanelWidth,\n\t\t\t\t\t\t\t\theight: \"100%\",\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonResizeStop={handleResizeLeftPanel}\n\t\t\t\t\t\t\tenable={{ right: resizeable?.left !== undefined ? resizeable.left : true }}\n\t\t\t\t\t\t\tminWidth={leftMinWidth}\n\t\t\t\t\t\t\tmaxWidth={leftPanelMaxWidth}\n\t\t\t\t\t\t\thandleClasses={{ right: classNames(styles.resizeHandle, styles.left) }}\n\t\t\t\t\t\t\thandleComponent={{\n\t\t\t\t\t\t\t\tright: <DragHandleDots2Icon height=\"14px\" width=\"14px\" />,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{leftPanel}\n\t\t\t\t\t\t</Resizable>\n\t\t\t\t\t</Box>\n\t\t\t\t)}\n\t\t\t</Transition>\n\t\t\t<Box className={styles.panelMainContent} width=\"max-content\">\n\t\t\t\t{children}\n\t\t\t</Box>\n\t\t\t<Transition\n\t\t\t\tnodeRef={rightPanelRef}\n\t\t\t\ttimeout={!showRight ? TRANSITION_DURATION : 0}\n\t\t\t\tin={showRight}\n\t\t\t\tunmountOnExit\n\t\t\t\tonEntering={handleResizeLeftPanelOnRightPanelOpen}\n\t\t\t\tonExited={handleResizeLeftPanelOnRightPanelClose}\n\t\t\t>\n\t\t\t\t{(state) => (\n\t\t\t\t\t<Box\n\t\t\t\t\t\tref={rightPanelRef}\n\t\t\t\t\t\tclassName={classNames(styles.panelContent, styles.right)}\n\t\t\t\t\t\tstyle={rightPanelTransitionStyles[state]}\n\t\t\t\t\t\twidth=\"auto\"\n\t\t\t\t\t\theight=\"100%\"\n\t\t\t\t\t\tm=\"0\"\n\t\t\t\t\t\tp=\"0\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<Resizable\n\t\t\t\t\t\t\tclassName={styles.resizable}\n\t\t\t\t\t\t\tsize={{ width: rightPanelWidth, height: \"100%\" }}\n\t\t\t\t\t\t\tonResizeStop={handleResizeRightPanel}\n\t\t\t\t\t\t\tenable={{ left: resizeable?.right !== undefined ? resizeable.right : true }}\n\t\t\t\t\t\t\tminWidth={rightMinWidth}\n\t\t\t\t\t\t\tmaxWidth={rightPanelMaxWidth}\n\t\t\t\t\t\t\thandleClasses={{ left: classNames(styles.resizeHandle, styles.right) }}\n\t\t\t\t\t\t\thandleComponent={{ left: <DragHandleDots2Icon height=\"14px\" width=\"14px\" /> }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{rightPanel}\n\t\t\t\t\t\t</Resizable>\n\t\t\t\t\t</Box>\n\t\t\t\t)}\n\t\t\t</Transition>\n\t\t</Flex>\n\t)\n})\n","import { FC, forwardRef, memo, Ref, useMemo } from \"react\"\nimport { Text, TextArea as RadixTextArea } from \"@radix-ui/themes\"\nimport classNames from \"classnames\"\nimport { TextAreaProps } from \"./typings.ts\"\n\nimport styles from \"./Textarea.module.sass\"\nimport { useSeverityColor } from \"../utils.ts\"\n\nconst _TextArea = forwardRef(function TextArea(\n\t{ className, showInputLength, inputLengthTemplate, value, severity = \"primary\", resize, ...rest }: TextAreaProps,\n\tref: Ref<HTMLTextAreaElement>,\n) {\n\tconst severityColor = useSeverityColor(severity)\n\tconst infoColor = useSeverityColor(\"info\")\n\n\tconst displayInputLength =\n\t\tshowInputLength ||\n\t\t(showInputLength === undefined && (rest.maxLength !== undefined || rest.minLength !== undefined))\n\tconst valueAsString = value !== undefined ? value.toString() : \"\"\n\n\tconst displayInputLengthValue = useMemo(() => {\n\t\tif (inputLengthTemplate) {\n\t\t\tlet template = inputLengthTemplate.replace(\"{current}\", valueAsString.length.toString())\n\t\t\tif (rest.minLength !== undefined) {\n\t\t\t\ttemplate = template.replace(\"{min}\", rest.minLength.toString())\n\t\t\t}\n\t\t\tif (rest.maxLength !== undefined) {\n\t\t\t\ttemplate = template.replace(\"{max}\", rest.maxLength.toString())\n\t\t\t}\n\t\t\treturn template\n\t\t}\n\t\treturn valueAsString.length\n\t}, [inputLengthTemplate, rest.maxLength, rest.minLength, valueAsString.length])\n\n\treturn (\n\t\t<>\n\t\t\t<RadixTextArea\n\t\t\t\tclassName={classNames(\"overmap-textarea\", className)}\n\t\t\t\tstyle={{ resize: resize }}\n\t\t\t\tref={ref}\n\t\t\t\tvalue={value}\n\t\t\t\tcolor={severityColor}\n\t\t\t\t{...rest}\n\t\t\t/>\n\t\t\t{displayInputLength && (\n\t\t\t\t<Text as=\"p\" className={styles.charCount} color={infoColor} align=\"right\">\n\t\t\t\t\t{displayInputLengthValue}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</>\n\t)\n})\n\n/** The TextArea Component is a user interface element that allows users to input and edit multi-line text.\n It is commonly used in forms, chat applications, and other scenarios where longer text inputs are required.\n This TextArea is a wrapper of the RadixUI TextArea component found here https://www.radix-ui.com/themes/docs/components/text-area.\n */\nexport const TextArea: FC<TextAreaProps> = memo(_TextArea)\n","import { FC, forwardRef, memo, Ref } from \"react\"\nimport { Item, Root } from \"@radix-ui/react-toggle-group\"\nimport { ToggleGroupItemProps, ToggleGroupSingleProps } from \"./typings.ts\"\nimport { IconButton } from \"../Buttons\"\nimport classNames from \"classnames\"\nimport { ButtonGroup } from \"../ButtonGroup\"\n\nconst _ToggleGroup = forwardRef(function ToggleGroup(\n\t{\n\t\t// ToggleGroup Primitive Props\n\t\tloop,\n\t\ttype,\n\t\trovingFocus,\n\t\tvalue,\n\t\tonValueChange,\n\t\tdefaultValue,\n\t\tdisabled,\n\t\titems,\n\t\t// ButtonGroup Props\n\t\tclassName,\n\t\tdirection = \"row\",\n\t\t...rest\n\t}: ToggleGroupSingleProps,\n\tref: Ref<HTMLDivElement>,\n) {\n\treturn (\n\t\t<Root\n\t\t\ttype={type}\n\t\t\tclassName={classNames(\"overmap-toggle-group\", className)}\n\t\t\tref={ref}\n\t\t\tvalue={value}\n\t\t\tonValueChange={onValueChange}\n\t\t\tdisabled={disabled}\n\t\t\torientation={direction === \"column\" ? \"vertical\" : \"horizontal\"}\n\t\t\tloop={loop}\n\t\t\trovingFocus={rovingFocus}\n\t\t\tdefaultValue={defaultValue}\n\t\t\tasChild\n\t\t>\n\t\t\t<ButtonGroup direction={direction} {...rest}>\n\t\t\t\t{items.map(({ children, ...rest }: ToggleGroupItemProps) => (\n\t\t\t\t\t<Item asChild {...rest} key={rest.value}>\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tclassName={classNames(\"overmap-toggle-group-button\")}\n\t\t\t\t\t\t\taria-label={rest.value}\n\t\t\t\t\t\t\tvariant={rest.value === value ? \"solid\" : \"soft\"}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</Item>\n\t\t\t\t))}\n\t\t\t</ButtonGroup>\n\t\t</Root>\n\t)\n})\n\n/** The Toggle Group Component is a user interface element that allows users to select a single option from a set of\n * mutually exclusive choices. It is commonly used in situations where users need to make a single selection from a\n * predefined list of options. This component is built using the ButtonGroup and IconButton components in combination\n * with the Radix Toggle Group primitive found here https://www.radix-ui.com/primitives/docs/components/toggle-group */\nexport const ToggleGroup: FC<ToggleGroupSingleProps> = memo(_ToggleGroup)\n","import { FC, forwardRef, memo, useCallback, useState } from \"react\"\nimport * as RadixToast from \"@radix-ui/react-toast\"\nimport { Callout, Flex } from \"@radix-ui/themes\"\nimport { Cross2Icon, InfoCircledIcon } from \"@radix-ui/react-icons\"\nimport { IconButton } from \"../Buttons\"\nimport { ToastProps } from \"./typings\"\nimport { useSeverityColor } from \"../utils\"\n\nimport styles from \"./Toast.module.sass\"\n\nconst _Toast = forwardRef<HTMLLIElement, ToastProps>(function Toast(\n\t{ title, description, icon, severity = \"primary\", size, onClose, sensitivity, ...rest },\n\tref,\n) {\n\tconst [open, setOpen] = useState(true)\n\tconst color = useSeverityColor(severity)\n\n\tconst handleOpenChange = useCallback(\n\t\t(open: boolean) => {\n\t\t\tif (!open && onClose) onClose()\n\t\t\tsetOpen(open)\n\t\t},\n\t\t[onClose],\n\t)\n\n\treturn (\n\t\t<RadixToast.Root asChild ref={ref} {...rest} open={open} type={sensitivity} onOpenChange={handleOpenChange}>\n\t\t\t<Callout.Root className={styles.ToastRoot} variant=\"surface\" color={color} size={size}>\n\t\t\t\t<Flex width=\"100%\" align=\"center\" gap=\"4\" justify=\"between\">\n\t\t\t\t\t<Flex align=\"center\" gap=\"4\">\n\t\t\t\t\t\t<Callout.Icon>{icon || <InfoCircledIcon />}</Callout.Icon>\n\t\t\t\t\t\t<Flex direction=\"column\" gap=\"0\">\n\t\t\t\t\t\t\t<RadixToast.Title asChild>\n\t\t\t\t\t\t\t\t<Callout.Text weight=\"medium\">{title}</Callout.Text>\n\t\t\t\t\t\t\t</RadixToast.Title>\n\t\t\t\t\t\t\t<RadixToast.Description asChild>\n\t\t\t\t\t\t\t\t<Callout.Text weight=\"light\">{description}</Callout.Text>\n\t\t\t\t\t\t\t</RadixToast.Description>\n\t\t\t\t\t\t</Flex>\n\t\t\t\t\t</Flex>\n\t\t\t\t\t<RadixToast.Close asChild>\n\t\t\t\t\t\t<IconButton aria-label=\"Close\" variant=\"ghost\" size=\"small\" severity={severity}>\n\t\t\t\t\t\t\t<Cross2Icon />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</RadixToast.Close>\n\t\t\t\t</Flex>\n\t\t\t</Callout.Root>\n\t\t</RadixToast.Root>\n\t)\n})\n\nexport const Toast: FC<ToastProps> = memo(_Toast)\n","import { createContext, useContext } from \"react\"\nimport { IToastContext } from \"./typings\"\n\nexport const ToastContext = createContext({} as IToastContext)\n\nexport const useToast = (): IToastContext => {\n\tconst context = useContext(ToastContext)\n\n\tif (!context) {\n\t\tthrow new Error(\"useToast must be used within a ToastProvider\")\n\t}\n\n\treturn context\n}\n","import { memo, useState, FC, useMemo, useCallback, useEffect } from \"react\"\nimport { IToastContext, SimpleToastProps, ToastContextProviderProps, ToastProps } from \"./typings\"\nimport { Toast } from \"./Toast\"\nimport { ToastProvider as RadixToastProvider, ToastViewport } from \"@radix-ui/react-toast\"\nimport { ToastContext } from \"./ToastContext\"\nimport styles from \"./Toast.module.sass\"\nimport classNames from \"classnames\"\n\ninterface ToastArgs extends ToastProps {\n\tid: string\n\ttimeout: NodeJS.Timeout\n}\n\n// average reading speed is 240 words per minute\nconst WORDS_PER_SECOND = 240 / 60\n// 5 seconds is the minimum duration for a toast\nconst MIN_DURATION = 5000\n\nenum CloseReason {\n\tManual,\n\tTimeout,\n}\n\nconst calculatedDuration = (toast: ToastProps) => {\n\t// if the user has passed a duration valid, use that instead\n\tif (toast.duration && toast.duration >= MIN_DURATION) return toast.duration\n\n\t// error messages should be displayed for longer\n\tconst severityFactor = toast.severity === \"danger\" ? 1.5 : 1\n\t// count the number of words in the title and description\n\tconst words = toast.description.split(\" \").length + toast.title.split(\" \").length\n\t// calculate the duration based on the number of words and the severity\n\tconst duration = (MIN_DURATION + words / WORDS_PER_SECOND) * severityFactor\n\treturn duration\n}\n\n/** Toasts will be displayed in the top-right handle corner of the screen */\nexport const ToastProvider: FC<ToastContextProviderProps> = memo(function ToastContextProvider({\n\tchildren,\n\t// Use this class to change where the viewport for the toasts should be\n\tclassName,\n\thotkey,\n\t...rest\n}: ToastContextProviderProps) {\n\tconst [toasts, setToasts] = useState<ToastArgs[]>([])\n\n\tconst handleCloseToast = useCallback((id: string, reason: CloseReason, callback?: () => void) => {\n\t\tsetToasts((prevToasts) => {\n\t\t\tconst toast = prevToasts.find((toast) => toast.id === id)\n\t\t\t// clear the timeout if the toast is being closed manually\n\t\t\tif (toast && reason === CloseReason.Manual) clearTimeout(toast.timeout)\n\n\t\t\treturn prevToasts.filter((toast) => toast.id !== id)\n\t\t})\n\n\t\tif (callback) callback()\n\t}, [])\n\n\tconst toastContextValue = useMemo<IToastContext>(() => {\n\t\tlet counter = 0\n\n\t\tconst showToast = (toastProps: ToastProps) => {\n\t\t\tconst duration = calculatedDuration(toastProps)\n\t\t\tconst id = counter.toString()\n\t\t\tcounter += 1 // increment the counter so that ids are unique\n\n\t\t\t// manually close the toast after the duration has passed\n\t\t\t// this is necessary because the duration prop is reset on re-render\n\t\t\tconst pending = setTimeout(() => handleCloseToast(id, CloseReason.Timeout, toastProps.onClose), duration)\n\n\t\t\tsetToasts((prevToasts) => [...prevToasts, { ...toastProps, timeout: pending, duration, id }])\n\t\t}\n\t\tconst showPrimary = (toastProps: SimpleToastProps) => showToast({ ...toastProps, severity: \"primary\" })\n\t\tconst showSuccess = (toastProps: SimpleToastProps) => showToast({ ...toastProps, severity: \"success\" })\n\t\tconst showError = (toastProps: SimpleToastProps) => showToast({ ...toastProps, severity: \"danger\" })\n\t\tconst showInfo = (toastProps: SimpleToastProps) => showToast({ ...toastProps, severity: \"info\" })\n\n\t\treturn {\n\t\t\tshowToast,\n\t\t\tshowPrimary,\n\t\t\tshowSuccess,\n\t\t\tshowError,\n\t\t\tshowInfo,\n\t\t}\n\t}, [handleCloseToast])\n\n\t// clear all timeouts when the component unmounts\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tfor (const { timeout } of toasts) clearTimeout(timeout)\n\t\t}\n\t\t// only run this effect when the component unmounts\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [])\n\n\treturn (\n\t\t<ToastContext.Provider value={toastContextValue}>\n\t\t\t<RadixToastProvider {...rest}>\n\t\t\t\t{children}\n\n\t\t\t\t<ToastViewport className={classNames(className, styles.ToastViewport)} hotkey={hotkey} />\n\n\t\t\t\t{toasts.map(({ id, onClose, ...toastProps }) => (\n\t\t\t\t\t<Toast key={id} {...toastProps} onClose={() => handleCloseToast(id, CloseReason.Manual, onClose)} />\n\t\t\t\t))}\n\t\t\t</RadixToastProvider>\n\t\t</ToastContext.Provider>\n\t)\n})\n","import { ElementRef, FC, ForwardRefExoticComponent, forwardRef, memo } from \"react\"\nimport { MarginProps, Text as RadixText } from \"@radix-ui/themes\"\nimport classNames from \"classnames\"\nimport styles from \"./ Text.module.sass\"\nimport { Severity } from \"../typings\"\nimport { useSeverityColor } from \"..\"\n\ntype RadixTextProps = typeof RadixText extends ForwardRefExoticComponent<infer P> ? P : never\n\nexport type TextProps = Omit<RadixTextProps, keyof MarginProps | \"ref\" | \"asChild\" | \"color\"> & {\n\t/** If true, the text will not wrap, but instead will truncate with a text overflow ellipsis.\n\t * @default false\n\t */\n\tnoWrap?: boolean\n\tseverity?: Severity\n\t/** @default span */\n\tas?: RadixTextProps[\"as\"]\n\t/** @default 3 */\n\tsize?: RadixTextProps[\"size\"]\n}\n\n/**\n * A foundational text primitive.\n *\n * Use the `as` prop to render text as a `p`, `label`, `div` or `span`. This prop is purely semantic and does not alter visual appearance.\n *\n * For the complete documentation, refer to https://www.radix-ui.com/themes/docs/components/text.\n */\nexport const Text: FC<TextProps> = memo(\n\tforwardRef<ElementRef<\"span\">, TextProps>(({ className, noWrap, severity, as, ...props }, ref) => {\n\t\tconst color = useSeverityColor(severity)\n\t\treturn (\n\t\t\t<RadixText\n\t\t\t\tref={ref}\n\t\t\t\t// bypassing incorrect TS error\n\t\t\t\tas={as as undefined}\n\t\t\t\tclassName={classNames(className, { [styles.noWrap!]: noWrap })}\n\t\t\t\tcolor={color}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t)\n\t}),\n)\n","import { Theme } from \"@radix-ui/themes\"\nimport { ComponentProps, FC, forwardRef, memo } from \"react\"\n// css file contains updates to the default radix tokens\nimport \"./DefaultTheme.css\"\n\nexport type DefaultThemeProps = ComponentProps<typeof Theme>\n\nexport const DefaultTheme: FC<DefaultThemeProps> = memo(\n\tforwardRef<HTMLDivElement, DefaultThemeProps>((props, ref) => {\n\t\tconst { panelBackground = \"solid\", radius = \"full\", ...rest } = props\n\t\treturn <Theme panelBackground={panelBackground} radius={radius} ref={ref} {...rest} />\n\t}),\n)\n","import { FC, forwardRef, memo } from \"react\"\nimport { Separator as RadixSeparator, Text, Flex } from \"@radix-ui/themes\"\nimport { SeparatorProps } from \"./typings.ts\"\nimport { useResponsiveMapping, useSeverityColor } from \"../utils.ts\"\n\n/** This mapping is required to ensure that size \"4\" of the Radix-UI Separator has the same functionality in this\n * Separator component, that is, to fill all space in its container */\nconst SeparatorSizeMapping: Record<\"1\" | \"2\" | \"3\" | \"4\", \"max-content\" | \"100%\"> = {\n\t\"1\": \"max-content\",\n\t\"2\": \"max-content\",\n\t\"3\": \"max-content\",\n\t\"4\": \"100%\",\n}\n\nconst _Separator = forwardRef(function Separator({\n\tseverity = \"info\",\n\tweight = \"light\",\n\tgap = \"1\",\n\ttext,\n\torientation = \"horizontal\",\n\tsize,\n\t...rest\n}: SeparatorProps) {\n\tconst computedSizing = useResponsiveMapping(size, SeparatorSizeMapping)\n\tconst severityColor = useSeverityColor(severity)\n\treturn (\n\t\t<>\n\t\t\t<Flex\n\t\t\t\twidth={orientation === \"horizontal\" ? computedSizing : \"max-content\"}\n\t\t\t\theight={orientation === \"vertical\" ? computedSizing : \"max-content\"}\n\t\t\t\tdirection={orientation === \"vertical\" ? \"column\" : \"row\"}\n\t\t\t\talign=\"center\"\n\t\t\t\tgap={gap}\n\t\t\t>\n\t\t\t\t<RadixSeparator size={size} orientation={orientation} color={severityColor} {...rest} />\n\t\t\t\t{text && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<Text as=\"span\" size=\"1\" weight={weight} color={severityColor}>\n\t\t\t\t\t\t\t{text}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t<RadixSeparator size={size} orientation={orientation} color={severityColor} {...rest} />\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</Flex>\n\t\t</>\n\t)\n})\n\nexport const Separator: FC<SeparatorProps> = memo(_Separator)\n"],"names":["hasOwn","classNames","classes","i","arg","argType","inner","key","module","useResponsiveMapping","value","mapping","useMemo","breakpoint","nonThemeSeverityMapping","useSeverityColor","severity","theme","useThemeContext","_Badge","forwardRef","className","color","children","rest","ref","severityColor","jsx","RadixBadge","Badge","memo","hoverEffectClassNameMapping","styles","SizeMapping","ButtonGroupContext","createContext","useButtonGroupContext","useContext","_Button","props","buttonGroupContext","type","fluid","size","hoverEffects","variant","hoverEffectClasses","hoverEffect","RadixButton","Button","React","RadixIconButton","IconButton","GhostVariantSizeToGapMapping","_ButtonGroup","merged","gap","direction","ghostSize","mergedAutoGap","Flex","ButtonGroup","ButtonListBorder","border","before","after","radixSize","ret","jsxs","Card","Inset","Box","ButtonListRoot","borderProps","numChildren","Children","child","Separator","ButtonListItem","ButtonList","DialogContent","title","description","content","closeDialog","Dialog","Cross1Icon","onOpen","defaultOpen","onCloseInterrupt","contentProps","open","setOpen","useState","handleOpenChange","useCallback","next","options","RadixDialog","Title","AlertDialog","AlertDialogContent","actionText","cancelText","onAction","onCancel","helpers","RadixAlertDialog","initialState","AlertDialogProvider","state","setState","openDialog","useAlertDialog","Item","itemContent","closeOnSelect","onSelect","handleSelect","event","RadixDropdownMenu","Root","onOpenChange","modal","trigger","label","ItemGroup","separatorBelow","separatorAbove","Fragment","SubMenu","DropdownMenu","_Select","itemSeverity","placeholder","side","items","id","mappedSize","itemSeverityColor","createElement","RadixSelect","Select","MultiSelectItem","checked","Checkbox","SELECT_ALL_VALUE","MultiSelect","onValueChange","disabled","radius","name","optionsMap","o","displayValue","v","close","handleValueChange","selected","useEffect","option","_Switch","icon","defaultChecked","onCheckedChange","fallbackRef","useRef","setChecked","iconContainer","setIconContainer","useLayoutEffect","usedRef","_a","_checked","RadixSwitch","Portal","Switch","_Sidebar","containerSelector","overlay","resizable","minWidth","maxWidth","isRight","isLeft","container","setContainer","selector","tempContainer","RadixDialogPrimitive","Resizable","DragHandleDots2Icon","Sidebar","_Input","leftSlot","rightSlot","showInputLength","computedSize","displayInputLength","valueAsString","RadixTextField","Text","Input","_Popover","RadixPopover","Popover","DEFAULT_MIN_WIDTH","TRANSITION_DURATION","LeftAndRightPanels","showLeft","leftPanel","leftMinWidth","showRight","rightPanel","rightMinWidth","resizeable","wrapperRef","leftPanelRef","leftPanelWidth","setLeftPanelWidth","leftPanelMaxWidth","setLeftPanelMaxWidth","rightPanelRef","rightPanelWidth","setRightPanelWidth","rightPanelMaxWidth","setRightPanelMaxWidth","handleResizePanel","resizedPanelWidth","setResizedPanelWidth","setOtherPanelMaxWidth","_event","_dir","_ref","delta","newWidth","handleResizeLeftPanel","handleResizeRightPanel","handleResizeOtherPanelOnPanelOpen","openingPanelWidth","openingPanelMinWidth","setOpeningPanelWidth","setOpeningPanelMaxWidth","otherPanelWidth","otherPanelOpen","setOtherPanelWidth","newOpeningPanelWidth","newOtherPanelMaxWidth","handleResizeLeftPanelOnRightPanelOpen","handleResizeRightPanelOnLeftPanelOpen","handleResizeOtherPanelOnPanelClose","handleResizeLeftPanelOnRightPanelClose","handleResizeRightPanelOnLeftPanelClose","resizeObserverCallback","_b","_c","_d","resizeObserver","leftPanelTransitionStyles","rightPanelTransitionStyles","Transition","_TextArea","inputLengthTemplate","resize","infoColor","displayInputLengthValue","template","RadixTextArea","TextArea","_ToggleGroup","loop","rovingFocus","defaultValue","ToggleGroup","_Toast","onClose","sensitivity","RadixToast","Callout","InfoCircledIcon","Cross2Icon","Toast","ToastContext","useToast","context","WORDS_PER_SECOND","MIN_DURATION","calculatedDuration","toast","severityFactor","words","ToastProvider","hotkey","toasts","setToasts","handleCloseToast","reason","callback","prevToasts","toastContextValue","counter","showToast","toastProps","duration","pending","timeout","RadixToastProvider","ToastViewport","noWrap","as","RadixText","DefaultTheme","panelBackground","Theme","SeparatorSizeMapping","_Separator","weight","text","orientation","computedSizing","RadixSeparator"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"blocks.js","sources":["../node_modules/classnames/index.js","../src/utils.ts","../src/Badge/Badge.tsx","../src/Buttons/constants.ts","../src/constants.ts","../src/ButtonGroup/context.ts","../src/Buttons/Button.tsx","../src/Buttons/IconButton.tsx","../src/ButtonGroup/ButtonGroup.tsx","../src/ButtonGroup/ButtonList.tsx","../src/Dialogs/Dialog/DialogContent.tsx","../src/Dialogs/Dialog/Dialog.tsx","../src/Dialogs/AlertDialog/AlertDialogContent.tsx","../src/Dialogs/AlertDialog/AlertDialog.tsx","../src/Dialogs/AlertDialog/context.tsx","../src/Dialogs/AlertDialog/hooks.ts","../src/DropdownMenu/DropdownMenu.tsx","../src/Select/Select.tsx","../src/MultiSelect/MultiSelectItem.tsx","../src/MultiSelect/MultiSelect.tsx","../src/Switch/Switch.tsx","../src/Sidebar/Sidebar.tsx","../src/Input/Input.tsx","../src/Popover/Popover.tsx","../src/LeftAndRightPanels/LeftAndRightPanels.tsx","../src/TextArea/TextArea.tsx","../src/ToggleGroup/ToggleGroup.tsx","../src/Toast/Toast.tsx","../src/Toast/ToastContext.ts","../src/Toast/ToastProvider.tsx","../src/Text/Text.tsx","../src/Theme/DefaultTheme.tsx","../src/Separator/Separator.tsx"],"sourcesContent":["/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import { Responsive, ThemeOptions, useThemeContext } from \"@radix-ui/themes\"\r\nimport { useMemo } from \"react\"\r\nimport { Severity } from \"./typings\"\r\n\r\n// useResponsiveMapping is a helper function used to map the keys of a Radix Responsive type that can be understood\r\n// by a Radix component or primitive. The point of this is to leverage our own custom prop names and values while still\r\n// using Radix's built in Responsiveness functionality.\r\n/**\r\n * Returns an object with mapped key values or a single mapped value\r\n * @param value an object or string\r\n * @param mapping a Record mapping the object values of param value\r\n */\r\nexport function useResponsiveMapping<T extends string, K>(\r\n\tvalue: Responsive<T> | undefined,\r\n\tmapping: Record<T, K>,\r\n): Responsive<K> | undefined {\r\n\treturn useMemo(() => {\r\n\t\tif (value === undefined) return undefined\r\n\t\tif (typeof value === \"object\") {\r\n\t\t\tif (!(\"initial\" in value)) {\r\n\t\t\t\t// Responsive objects require an 'initial' property to be set that acts as a default\r\n\t\t\t\tthrow new Error(\"Expected initial property to be set in Responsive object\")\r\n\t\t\t}\r\n\t\t\treturn Object.fromEntries(Object.entries(value).map(([breakpoint, value]) => [breakpoint, mapping[value]]))\r\n\t\t} else {\r\n\t\t\treturn mapping[value]\r\n\t\t}\r\n\t}, [mapping, value])\r\n}\r\n\r\nconst nonThemeSeverityMapping = {\r\n\tsuccess: \"green\",\r\n\tdanger: \"red\",\r\n\tinfo: \"gray\",\r\n} as const\r\n\r\nexport type AccentColor = ThemeOptions[\"accentColor\"]\r\n\r\n/** Performs theme-sensitive mapping of a severity to radix color */\r\nexport const useSeverityColor = (severity?: Severity): AccentColor | undefined => {\r\n\tconst theme = useThemeContext()\r\n\tif (!severity) return undefined\r\n\tif (severity === \"primary\") return theme.accentColor\r\n\r\n\treturn nonThemeSeverityMapping[severity]\r\n}\r\n","import { Badge as RadixBadge } from \"@radix-ui/themes\"\nimport { FC, forwardRef, memo, Ref } from \"react\"\nimport { BadgeProps } from \"./typings.ts\"\nimport classNames from \"classnames\"\nimport { useSeverityColor } from \"../utils.ts\"\n\nconst _Badge = forwardRef(function Badge(\n\t{ className, severity = \"primary\", color, children, ...rest }: BadgeProps,\n\tref: Ref<HTMLSpanElement>,\n) {\n\tconst severityColor = useSeverityColor(severity)\n\n\treturn (\n\t\t<RadixBadge\n\t\t\tclassName={classNames(\"overmap-badge\", className)}\n\t\t\tref={ref}\n\t\t\tcolor={color ? color : severityColor}\n\t\t\t{...rest}\n\t\t>\n\t\t\t{children}\n\t\t</RadixBadge>\n\t)\n})\n\n/** The Badge Component is a user interface element that provides visual feedback, typically displaying a small amount\n * of information. It is commonly used to indicate counts, statuses, or labels in a concise and visually appealing\n * manner. This Badge components wraps the Badge component from Radix-ui found here https://www.radix-ui.com/themes/docs/components/badge */\nexport const Badge: FC<BadgeProps> = memo(_Badge)\n","import { ButtonHoverEffect } from \"./typings.ts\"\r\nimport styles from \"./Button.module.sass\"\r\n\r\nexport const hoverEffectClassNameMapping: Record<ButtonHoverEffect, string | undefined> = {\r\n\tspin90Clockwise: styles.hoverSpin90Clockwise,\r\n\tspin180Clockwise: styles.hoverSpin180Clockwise,\r\n\tspin360Clockwise: styles.hoverSpin360Clockwise,\r\n}\r\n","import { Size } from \"./typings.ts\"\r\n\r\n// Mappings\r\nexport const SizeMapping: Record<Size, \"1\" | \"2\" | \"3\"> = {\r\n\tsmall: \"1\",\r\n\tmedium: \"2\",\r\n\tlarge: \"3\",\r\n}\r\n","import { ButtonProps } from \"../Buttons/typings\"\nimport { createContext, useContext } from \"react\"\n\nexport type ButtonContextType = Pick<ButtonProps, \"variant\" | \"size\" | \"severity\" | \"hoverEffects\" | \"fluid\">\n\nexport const ButtonGroupContext = createContext<ButtonContextType>({})\n\nexport const useButtonGroupContext = () => useContext(ButtonGroupContext)\n","import React, { FC, forwardRef } from \"react\"\nimport { ButtonProps } from \"./typings.ts\"\nimport styles from \"./Button.module.sass\"\nimport classNames from \"classnames\"\nimport { Button as RadixButton } from \"@radix-ui/themes\"\nimport { hoverEffectClassNameMapping } from \"./constants.ts\"\nimport { useResponsiveMapping, useSeverityColor } from \"../utils.ts\"\nimport { SizeMapping } from \"../constants.ts\"\nimport { useButtonGroupContext } from \"../ButtonGroup/context.ts\"\n\nconst _Button = forwardRef(function Button(props: ButtonProps, ref: React.Ref<HTMLButtonElement>) {\n\tconst buttonGroupContext = useButtonGroupContext()\n\tconst {\n\t\tclassName,\n\t\ttype = \"button\",\n\t\tfluid = buttonGroupContext.fluid ?? false,\n\t\tsize = buttonGroupContext.size ?? \"medium\",\n\t\tseverity = buttonGroupContext.severity ?? \"primary\",\n\t\thoverEffects = buttonGroupContext.hoverEffects ?? [],\n\t\tvariant = buttonGroupContext.variant,\n\t\t...rest\n\t} = props\n\tconst color = useSeverityColor(severity)\n\tconst hoverEffectClasses = hoverEffects.map((hoverEffect) => {\n\t\treturn hoverEffectClassNameMapping[hoverEffect]\n\t})\n\n\treturn (\n\t\t<RadixButton\n\t\t\tref={ref}\n\t\t\ttype={type}\n\t\t\tclassName={classNames(className, hoverEffectClasses, {\n\t\t\t\t[styles.fluid!]: fluid,\n\t\t\t})}\n\t\t\tcolor={color}\n\t\t\tsize={useResponsiveMapping(size, SizeMapping)}\n\t\t\tvariant={variant}\n\t\t\t{...rest}\n\t\t/>\n\t)\n})\n\n// using FC so storybook correctly displays the component props\nconst Button: FC<ButtonProps> = React.memo(_Button)\n\nexport default Button\n","import React, { FC, forwardRef } from \"react\"\nimport { ButtonProps } from \"./typings.ts\"\nimport classNames from \"classnames\"\nimport { IconButton as RadixIconButton } from \"@radix-ui/themes\"\nimport { hoverEffectClassNameMapping } from \"./constants.ts\"\nimport { useResponsiveMapping, useSeverityColor } from \"../utils.ts\"\nimport { SizeMapping } from \"../constants.ts\"\nimport { useButtonGroupContext } from \"../ButtonGroup/context.ts\"\n\nimport styles from \"./Button.module.sass\"\n\ninterface IconButtonProps extends ButtonProps {\n\t\"aria-label\": string\n}\n\nconst _Button = forwardRef(function Button(props: IconButtonProps, ref: React.Ref<HTMLButtonElement>) {\n\tconst buttonGroupContext = useButtonGroupContext()\n\tconst {\n\t\tclassName,\n\t\tchildren,\n\t\ttype = \"button\",\n\t\tfluid = buttonGroupContext.fluid ?? false,\n\t\tsize = buttonGroupContext.size ?? \"medium\",\n\t\tseverity = buttonGroupContext.severity ?? \"primary\",\n\t\thoverEffects = buttonGroupContext.hoverEffects ?? [],\n\t\tvariant = buttonGroupContext.variant,\n\t\t...rest\n\t} = props\n\tconst color = useSeverityColor(severity)\n\tconst hoverEffectClasses =\n\t\thoverEffects?.map((hoverEffect) => {\n\t\t\treturn hoverEffectClassNameMapping[hoverEffect]\n\t\t}) || []\n\n\treturn (\n\t\t<RadixIconButton\n\t\t\tclassName={classNames(className, hoverEffectClasses, {\n\t\t\t\t[styles.fluid!]: fluid,\n\t\t\t})}\n\t\t\tref={ref}\n\t\t\tcolor={color}\n\t\t\tsize={useResponsiveMapping(size, SizeMapping)}\n\t\t\tvariant={variant}\n\t\t\ttype={type}\n\t\t\t{...rest}\n\t\t>\n\t\t\t{children}\n\t\t</RadixIconButton>\n\t)\n})\n\n// using FC so storybook correctly displays the component props\n/** The `IconButton` is a `Button` variant specifically designed for single icons. */\nconst IconButton: FC<IconButtonProps> = React.memo(_Button)\n\nexport default IconButton\n","import { FC, forwardRef, memo, Ref } from \"react\"\nimport { Flex } from \"@radix-ui/themes\"\nimport classNames from \"classnames\"\nimport { ButtonGroupProps } from \"./typings.ts\"\n\nimport styles from \"./ButtonGroup.module.sass\"\nimport { Size } from \"../typings.ts\"\nimport { useResponsiveMapping } from \"../utils.ts\"\nimport { ButtonGroupContext } from \"./context.ts\"\n\nconst GhostVariantSizeToGapMapping = {\n\trow: { small: \"4\", medium: \"4\", large: \"5\" },\n\tcolumn: { small: \"2\", medium: \"3\", large: \"4\" },\n} as const satisfies Record<\"row\" | \"column\", Record<Size, ButtonGroupProps[\"gap\"]>>\n\nconst _ButtonGroup = forwardRef(function ButtonGroup(\n\t{\n\t\tclassName,\n\t\tmerged = false,\n\t\tchildren,\n\t\tgap,\n\t\tdirection = \"row\",\n\t\tseverity,\n\t\tsize = \"medium\",\n\t\tvariant,\n\t\thoverEffects,\n\t\tfluid,\n\t\t...rest\n\t}: ButtonGroupProps,\n\tref: Ref<HTMLDivElement>,\n) {\n\tconst ghostSize = useResponsiveMapping(size, GhostVariantSizeToGapMapping[direction])\n\t// without a larger gap, ghost buttons overlap\n\tconst mergedAutoGap = variant === \"ghost\" ? ghostSize : \"0\"\n\treturn (\n\t\t<Flex\n\t\t\tclassName={classNames(\"overmap-button-group\", className, {\n\t\t\t\t[styles.merged!]: merged,\n\t\t\t})}\n\t\t\tref={ref}\n\t\t\tgap={merged ? gap ?? mergedAutoGap : gap ?? \"2\"}\n\t\t\tdirection={direction}\n\t\t\tdata-direction={direction}\n\t\t\t{...rest}\n\t\t>\n\t\t\t<ButtonGroupContext.Provider value={{ size, severity, variant, hoverEffects, fluid }}>\n\t\t\t\t{children}\n\t\t\t</ButtonGroupContext.Provider>\n\t\t</Flex>\n\t)\n})\n\n/** The ButtonGroup Component is a user interface element that groups multiple buttons together for improved user\n * interaction and visual clarity. It is commonly used to present related actions or options in a compact and organized\n * manner. The ButtonGroup supports all props of the RadixUI Flex layout component besides MarginProps,\n * further documentation for the Flex layout component can be found here https://www.radix-ui.com/themes/docs/components/flex */\nexport const ButtonGroup: FC<ButtonGroupProps> = memo(_ButtonGroup)\n","import { Children, FC, ReactNode, forwardRef, memo } from \"react\"\r\nimport { ButtonGroup, ButtonGroupProps } from \".\"\r\nimport { ButtonProps } from \"../Buttons/typings\"\r\nimport { useButtonGroupContext } from \"./context\"\r\nimport { Button } from \"../Buttons\"\r\nimport { Box, Card, Flex, Inset, Responsive, Separator, Size } from \"..\"\r\nimport { useResponsiveMapping } from \"../utils\"\r\nimport { SizeMapping } from \"../constants\"\r\n\r\ninterface ButtonListRootProps extends Pick<ButtonGroupProps, \"size\" | \"variant\" | \"children\"> {\r\n\t// not including `large` because large ghost buttons have a non-standard margin\r\n\t/** @default \"medium\" */\r\n\tsize?: Responsive<Exclude<Size, \"large\">>\r\n\t// not including solid as it doesn't look good\r\n\t/** @default outline */\r\n\tvariant?: Exclude<ButtonGroupProps[\"variant\"], \"solid\">\r\n\t/** Content to display before the list but within the card */\r\n\tbefore?: ReactNode\r\n\t/** Content to display after the list but within the card */\r\n\tafter?: ReactNode\r\n\tclassName?: string\r\n}\r\n\r\ninterface ButtonListBorderProps extends Pick<ButtonListRootProps, \"before\" | \"after\" | \"size\" | \"children\"> {\r\n\tborder: boolean\r\n}\r\n\r\nconst ButtonListBorder = memo(\r\n\tforwardRef<HTMLDivElement, ButtonListBorderProps>((props, ref) => {\r\n\t\tconst { children, border, before, after, size } = props\r\n\t\tconst variant = border ? \"surface\" : \"ghost\"\r\n\t\tconst radixSize = useResponsiveMapping(size, SizeMapping)\r\n\r\n\t\tconst inset =\r\n\t\t\tbefore && after ? (\r\n\t\t\t\t<Inset side=\"x\" pt=\"current\" pb=\"current\">\r\n\t\t\t\t\t{children}\r\n\t\t\t\t</Inset>\r\n\t\t\t) : before ? (\r\n\t\t\t\t<Inset side=\"bottom\" pt=\"current\">\r\n\t\t\t\t\t{children}\r\n\t\t\t\t</Inset>\r\n\t\t\t) : after ? (\r\n\t\t\t\t<Inset side=\"top\" pb=\"current\">\r\n\t\t\t\t\t{children}\r\n\t\t\t\t</Inset>\r\n\t\t\t) : (\r\n\t\t\t\t<Inset>{children}</Inset>\r\n\t\t\t)\r\n\r\n\t\tconst ret = (\r\n\t\t\t<Card ref={ref} size={radixSize} variant={variant}>\r\n\t\t\t\t{before}\r\n\t\t\t\t{inset}\r\n\t\t\t\t{after}\r\n\t\t\t</Card>\r\n\t\t)\r\n\r\n\t\t// offset negative margin from the ghost card by adding a container\r\n\t\t// with padding of equal size\r\n\t\tif (variant === \"ghost\") {\r\n\t\t\treturn <Box p=\"3\">{ret}</Box>\r\n\t\t}\r\n\r\n\t\treturn ret\r\n\t}),\r\n)\r\n\r\n/** A specialized version of `ButtonGroup` for vertical list of block-like buttons. */\r\nexport const ButtonListRoot: FC<ButtonListRootProps> = memo(\r\n\tforwardRef<HTMLDivElement, ButtonListRootProps>((props, ref) => {\r\n\t\tconst { children, variant = \"outline\", size, className, ...borderProps } = props\r\n\t\tconst numChildren = Children.count(children)\r\n\t\tconst showBorder = variant === \"outline\" || variant === \"surface\"\r\n\r\n\t\t// remove the border from the buttons\r\n\t\t// as the border is handled by the Separator component\r\n\t\tconst buttonVariant = variant === \"outline\" ? \"ghost\" : variant === \"surface\" ? \"soft\" : variant\r\n\r\n\t\treturn (\r\n\t\t\t<ButtonListBorder {...borderProps} border={showBorder} size={size}>\r\n\t\t\t\t<ButtonGroup\r\n\t\t\t\t\tsize={size}\r\n\t\t\t\t\tseverity=\"info\"\r\n\t\t\t\t\tvariant={buttonVariant}\r\n\t\t\t\t\tclassName={className}\r\n\t\t\t\t\tmerged\r\n\t\t\t\t\tgap=\"0\"\r\n\t\t\t\t\tdirection=\"column\"\r\n\t\t\t\t\tref={ref}\r\n\t\t\t\t>\r\n\t\t\t\t\t{Children.map(children, (child, i) => (\r\n\t\t\t\t\t\t<Flex key={i} direction=\"column\">\r\n\t\t\t\t\t\t\t{child}\r\n\t\t\t\t\t\t\t{/* only add a separator between children */}\r\n\t\t\t\t\t\t\t{i < numChildren - 1 && <Separator size=\"4\" />}\r\n\t\t\t\t\t\t</Flex>\r\n\t\t\t\t\t))}\r\n\t\t\t\t</ButtonGroup>\r\n\t\t\t</ButtonListBorder>\r\n\t\t)\r\n\t}),\r\n)\r\n\r\ninterface ButtonListItemProps extends Omit<ButtonProps, \"size\" | \"variant\" | \"severity\" | \"fluid\"> {}\r\n\r\nconst ButtonListItem = memo(\r\n\tforwardRef<HTMLButtonElement, ButtonListItemProps>((props, ref) => {\r\n\t\tconst { variant } = useButtonGroupContext()\r\n\r\n\t\tconst ret = <Button ref={ref} {...props} variant={variant} />\r\n\r\n\t\t// remove the negative margin from the ghost button\r\n\t\tif (variant === \"ghost\") {\r\n\t\t\treturn (\r\n\t\t\t\t<Flex px=\"2\" py=\"1\">\r\n\t\t\t\t\t<Box grow=\"1\" width=\"100%\" asChild>\r\n\t\t\t\t\t\t{ret}\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</Flex>\r\n\t\t\t)\r\n\t\t}\r\n\r\n\t\treturn ret\r\n\t}),\r\n)\r\n\r\nexport const ButtonList = {\r\n\tRoot: ButtonListRoot,\r\n\tItem: ButtonListItem,\r\n}\r\n","import { memo } from \"react\"\r\nimport { Dialog, Flex, IconButton } from \"@radix-ui/themes\"\r\nimport { Cross1Icon } from \"@radix-ui/react-icons\"\r\nimport { DialogContentProps } from \"./typings\"\r\n\r\nexport const DialogContent = memo(function DialogContent(props: DialogContentProps) {\r\n\tconst { title, description, content, closeDialog } = props\r\n\treturn (\r\n\t\t<Flex direction=\"column\" gap=\"2\">\r\n\t\t\t<Flex direction=\"column\" gap=\"1\">\r\n\t\t\t\t<Flex justify=\"between\">\r\n\t\t\t\t\t<Dialog.Title mb=\"0\">{title}</Dialog.Title>\r\n\t\t\t\t\t<Dialog.Close>\r\n\t\t\t\t\t\t<IconButton color=\"gray\" variant=\"ghost\" aria-label=\"Close\">\r\n\t\t\t\t\t\t\t<Cross1Icon />\r\n\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t</Dialog.Close>\r\n\t\t\t\t</Flex>\r\n\t\t\t\t{description && <Dialog.Description>{description}</Dialog.Description>}\r\n\t\t\t</Flex>\r\n\t\t\t{content(closeDialog)}\r\n\t\t</Flex>\r\n\t)\r\n})\r\n","import { memo, useState, useCallback, forwardRef } from \"react\"\r\nimport { Dialog as RadixDialog } from \"@radix-ui/themes\"\r\nimport { DialogContent } from \"./DialogContent\"\r\nimport { CloseDialogWithOptions, DialogProps } from \"./typings\"\r\n\r\n/**\r\n * Display or collect information in a modal. Unlike the `AlertDialog`, the `Dialog`'s can be nested\r\n * and close when clicking outside of the dialog content.\r\n */\r\nexport const Dialog = memo(\r\n\tforwardRef<HTMLDivElement, DialogProps>((props, ref) => {\r\n\t\tconst { children, content, title, description, onOpen, defaultOpen, onCloseInterrupt, ...contentProps } = props\r\n\t\tconst [open, setOpen] = useState(defaultOpen ?? false)\r\n\r\n\t\tconst handleOpenChange = useCallback(\r\n\t\t\t(next: boolean) => {\r\n\t\t\t\tif (next && onOpen) {\r\n\t\t\t\t\tonOpen()\r\n\t\t\t\t} else if (!next && onCloseInterrupt) {\r\n\t\t\t\t\t// closes the dialog, bypassing the checks in `handleOpenChange`\r\n\t\t\t\t\tconst confirmClose = () => setOpen(false)\r\n\r\n\t\t\t\t\t// if onCloseInterrupt is passed, bypass the standard close behavior and require\r\n\t\t\t\t\t// the passed `confirmClose` to close the dialog\r\n\t\t\t\t\treturn onCloseInterrupt(confirmClose)\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsetOpen(next)\r\n\t\t\t},\r\n\t\t\t[onOpen, onCloseInterrupt],\r\n\t\t)\r\n\r\n\t\tconst closeDialog = useCallback<CloseDialogWithOptions>(\r\n\t\t\t(options) => {\r\n\t\t\t\tif (options?.force) {\r\n\t\t\t\t\t// bypass the checks in the `handleOpenChange` function\r\n\t\t\t\t\treturn setOpen(false)\r\n\t\t\t\t}\r\n\r\n\t\t\t\thandleOpenChange(false)\r\n\t\t\t},\r\n\t\t\t[handleOpenChange],\r\n\t\t)\r\n\r\n\t\treturn (\r\n\t\t\t<RadixDialog.Root open={open} onOpenChange={handleOpenChange}>\r\n\t\t\t\t<RadixDialog.Trigger>{children}</RadixDialog.Trigger>\r\n\t\t\t\t<RadixDialog.Content ref={ref} {...contentProps}>\r\n\t\t\t\t\t<DialogContent\r\n\t\t\t\t\t\tcloseDialog={closeDialog}\r\n\t\t\t\t\t\tcontent={content}\r\n\t\t\t\t\t\ttitle={title}\r\n\t\t\t\t\t\tdescription={description}\r\n\t\t\t\t\t/>\r\n\t\t\t\t</RadixDialog.Content>\r\n\t\t\t</RadixDialog.Root>\r\n\t\t)\r\n\t}),\r\n)\r\n","import { AlertDialog, Flex } from \"@radix-ui/themes\"\r\nimport { AlertDialogStandardContent } from \"./typings\"\r\nimport { Button } from \"../../Buttons\"\r\n\r\n// remove the margin-bottom from the title so that Flex works as expected\r\nexport const Title: typeof AlertDialog.Title = ((props) => (\r\n\t<AlertDialog.Title mb=\"0\" {...props} />\r\n)) as typeof AlertDialog.Title\r\n\r\nexport const AlertDialogContent = (props: AlertDialogStandardContent) => {\r\n\tconst { title, description, actionText = \"Confirm\", cancelText = \"Cancel\", onAction, onCancel, severity } = props\r\n\treturn (\r\n\t\t<Flex direction=\"column\" gap=\"2\">\r\n\t\t\t<Flex direction=\"column\" gap=\"1\">\r\n\t\t\t\t<Title>{title}</Title>\r\n\t\t\t\t<AlertDialog.Description>{description}</AlertDialog.Description>\r\n\t\t\t</Flex>\r\n\r\n\t\t\t<Flex gap=\"3\" mt=\"4\" justify=\"end\">\r\n\t\t\t\t<AlertDialog.Cancel>\r\n\t\t\t\t\t<Button variant=\"soft\" severity=\"info\" onClick={onCancel}>\r\n\t\t\t\t\t\t{cancelText}\r\n\t\t\t\t\t</Button>\r\n\t\t\t\t</AlertDialog.Cancel>\r\n\t\t\t\t<AlertDialog.Action>\r\n\t\t\t\t\t<Button variant=\"solid\" severity={severity} onClick={onAction}>\r\n\t\t\t\t\t\t{actionText}\r\n\t\t\t\t\t</Button>\r\n\t\t\t\t</AlertDialog.Action>\r\n\t\t\t</Flex>\r\n\t\t</Flex>\r\n\t)\r\n}\r\n","import { memo, useMemo } from \"react\"\r\nimport { AlertDialog as RadixAlertDialog } from \"@radix-ui/themes\"\r\nimport { AlertDialogContentHelpers, AlertDialogProps } from \"./typings\"\r\nimport { AlertDialogContent, Title } from \"./AlertDialogContent\"\r\n\r\n/**\r\n * The AlertDialog is used to confirm an action or prompt the user for a decision.\r\n * Unlike the Dialog, the AlertDialog is not dismissible by clicking outside of the dialog, nor can it be nested.\r\n *\r\n * To use, place the `AlertDialogProvider` at the root of your app and use the `useAlertDialog` hook to open the dialog.\r\n *\r\n * To set the content of the dialog, use the `content` prop or pass values for the `title`, `description`, and `onAction` props.\r\n */\r\nexport const AlertDialog = memo(function AlertDialog(props: AlertDialogProps) {\r\n\tconst { open, setOpen, children, ...contentProps } = props\r\n\r\n\tconst helpers: AlertDialogContentHelpers = useMemo(() => {\r\n\t\treturn {\r\n\t\t\tclose: () => setOpen(false),\r\n\t\t\tTitle,\r\n\t\t\tDescription: RadixAlertDialog.Description,\r\n\t\t}\r\n\t}, [setOpen])\r\n\r\n\treturn (\r\n\t\t<RadixAlertDialog.Root open={open} onOpenChange={setOpen}>\r\n\t\t\t<RadixAlertDialog.Content>\r\n\t\t\t\t{\"content\" in contentProps ? contentProps.content(helpers) : <AlertDialogContent {...contentProps} />}\r\n\t\t\t</RadixAlertDialog.Content>\r\n\t\t\t{children}\r\n\t\t</RadixAlertDialog.Root>\r\n\t)\r\n})\r\n","import { createContext, memo, useState, useCallback } from \"react\"\r\nimport { AlertDialogContextType, AlertDialogOptions } from \"./typings\"\r\nimport { AlertDialog } from \"./AlertDialog\"\r\n\r\ninterface AlertDialogProviderProps {\r\n\tchildren: React.ReactNode\r\n}\r\n\r\nexport const AlertDialogContent = createContext<AlertDialogContextType>(() => {\r\n\tthrow new Error(\"No AlertDialogProvider found\")\r\n})\r\n\r\nconst initialState: AlertDialogOptions = {\r\n\tcontent: () => null,\r\n}\r\n\r\nexport const AlertDialogProvider = memo(function AlertDialogProvider({ children }: AlertDialogProviderProps) {\r\n\tconst [open, setOpen] = useState(false)\r\n\tconst [state, setState] = useState<AlertDialogOptions>(initialState)\r\n\r\n\tconst openDialog = useCallback<AlertDialogContextType>(\r\n\t\t(options) => {\r\n\t\t\tif (open) throw new Error(\"AlertDialog is already open\")\r\n\r\n\t\t\tsetState(options)\r\n\t\t\tsetOpen(true)\r\n\t\t},\r\n\t\t[open],\r\n\t)\r\n\r\n\treturn (\r\n\t\t<AlertDialog open={open} setOpen={setOpen} {...state}>\r\n\t\t\t<AlertDialogContent.Provider value={openDialog}>{children}</AlertDialogContent.Provider>\r\n\t\t</AlertDialog>\r\n\t)\r\n})\r\n","import { useContext } from \"react\"\r\nimport { AlertDialogContent } from \"./context\"\r\n\r\nexport const useAlertDialog = () => {\r\n\treturn useContext(AlertDialogContent)\r\n}\r\n","import { DropdownMenu as RadixDropdownMenu } from \"@radix-ui/themes\"\r\nimport { FC, memo, useCallback } from \"react\"\r\nimport {\r\n\tDropdownMenuItemGroupProps,\r\n\tDropdownMenuItemProps,\r\n\tDropdownMenuProps,\r\n\tDropdownSubMenuProps,\r\n} from \"./typings.ts\"\r\nimport { useSeverityColor } from \"../utils.ts\"\r\n\r\nconst Item: FC<DropdownMenuItemProps> = memo(function DropdownMenuItem({\r\n\tseverity,\r\n\titemContent,\r\n\tcloseOnSelect = true,\r\n\tonSelect,\r\n\t...rest\r\n}: DropdownMenuItemProps) {\r\n\tconst severityColor = useSeverityColor(severity)\r\n\r\n\tconst handleSelect = useCallback(\r\n\t\t(event: Event) => {\r\n\t\t\tif (!closeOnSelect) event.preventDefault()\r\n\t\t\tif (onSelect) onSelect(event)\r\n\t\t},\r\n\t\t[closeOnSelect, onSelect],\r\n\t)\r\n\r\n\treturn (\r\n\t\t<RadixDropdownMenu.Item onSelect={handleSelect} color={severityColor} {...rest}>\r\n\t\t\t{itemContent}\r\n\t\t</RadixDropdownMenu.Item>\r\n\t)\r\n})\r\n\r\n/** The DropdownMenu component is a user interface element that provides a list of options for the user to choose from.\r\n * It is commonly used in web applications to present a set of related choices in a compact and organized manner.\r\n * This DropdownMenu component is a wrapper around the Radix-UI DropdownMenu component that can be found here https://www.radix-ui.com/themes/docs/components/dropdown-menu */\r\nexport const Root: FC<DropdownMenuProps> = memo(function DropdownMenu({\r\n\tdefaultOpen,\r\n\topen,\r\n\tonOpenChange,\r\n\tmodal,\r\n\ttrigger,\r\n\tlabel,\r\n\tseverity = \"info\",\r\n\tchildren,\r\n\t...rest\r\n}: DropdownMenuProps) {\r\n\tconst severityColor = useSeverityColor(severity)\r\n\treturn (\r\n\t\t<RadixDropdownMenu.Root defaultOpen={defaultOpen} open={open} onOpenChange={onOpenChange} modal={modal}>\r\n\t\t\t<RadixDropdownMenu.Trigger>{trigger}</RadixDropdownMenu.Trigger>\r\n\t\t\t<RadixDropdownMenu.Content color={severityColor} {...rest}>\r\n\t\t\t\t{label && <RadixDropdownMenu.Label>{label}</RadixDropdownMenu.Label>}\r\n\t\t\t\t{children}\r\n\t\t\t</RadixDropdownMenu.Content>\r\n\t\t</RadixDropdownMenu.Root>\r\n\t)\r\n})\r\n\r\nconst ItemGroup: FC<DropdownMenuItemGroupProps> = memo(function DropdownMenuItemGroup({\r\n\tseparatorBelow = false,\r\n\tseparatorAbove = false,\r\n\tchildren,\r\n\t...rest\r\n}: DropdownMenuItemGroupProps) {\r\n\treturn (\r\n\t\t<>\r\n\t\t\t{separatorAbove && <RadixDropdownMenu.Separator />}\r\n\t\t\t<RadixDropdownMenu.Group {...rest}>{children}</RadixDropdownMenu.Group>\r\n\t\t\t{separatorBelow && <RadixDropdownMenu.Separator />}\r\n\t\t</>\r\n\t)\r\n})\r\n\r\nconst SubMenu: FC<DropdownSubMenuProps> = memo(function DropdownSubMenu({\r\n\tdefaultOpen,\r\n\topen,\r\n\tonOpenChange,\r\n\ttrigger,\r\n\tchildren,\r\n\t...rest\r\n}: DropdownSubMenuProps) {\r\n\treturn (\r\n\t\t<RadixDropdownMenu.Sub defaultOpen={defaultOpen} open={open} onOpenChange={onOpenChange}>\r\n\t\t\t<RadixDropdownMenu.SubTrigger>{trigger}</RadixDropdownMenu.SubTrigger>\r\n\t\t\t<RadixDropdownMenu.SubContent {...rest}>{children}</RadixDropdownMenu.SubContent>\r\n\t\t</RadixDropdownMenu.Sub>\r\n\t)\r\n})\r\n\r\nexport const DropdownMenu = {\r\n\tRoot,\r\n\tItemGroup,\r\n\tItem,\r\n\tSubMenu,\r\n}\r\n","import React, { FC, forwardRef } from \"react\"\r\nimport { Select as RadixSelect } from \"@radix-ui/themes\"\r\nimport classNames from \"classnames\"\r\nimport { useResponsiveMapping, useSeverityColor } from \"../utils.ts\"\r\nimport { SizeMapping } from \"../constants.ts\"\r\nimport { SelectItemProps, SelectProps } from \"./typings.ts\"\r\n\r\nimport styles from \"./Select.module.sass\"\r\n\r\nconst _Select = forwardRef(function Select(\r\n\t{\r\n\t\tclassName,\r\n\t\tfluid,\r\n\t\tsize = \"medium\",\r\n\t\tvariant = \"surface\",\r\n\t\tseverity = \"primary\",\r\n\t\titemSeverity = \"info\",\r\n\t\tplaceholder = \"Select\",\r\n\t\tside,\r\n\t\titems = [],\r\n\t\tvalue,\r\n\t\tid,\r\n\t\t...rest\r\n\t}: SelectProps,\r\n\tref: React.Ref<HTMLButtonElement>,\r\n) {\r\n\tconst mappedSize = useResponsiveMapping(size, SizeMapping)\r\n\tconst severityColor = useSeverityColor(severity)\r\n\tconst itemSeverityColor = useSeverityColor(itemSeverity)\r\n\r\n\t// TODO: extend functionality to support grouping of items\r\n\t// TODO: remove key change based on value once placeholder issue it fixed in radix-ui/themes\r\n\treturn (\r\n\t\t<RadixSelect.Root size={mappedSize} {...rest} key={value === undefined ? 1 : 0} value={value}>\r\n\t\t\t<RadixSelect.Trigger\r\n\t\t\t\tclassName={classNames(className, {\r\n\t\t\t\t\t[styles.fluid!]: fluid,\r\n\t\t\t\t})}\r\n\t\t\t\tid={id}\r\n\t\t\t\tref={ref}\r\n\t\t\t\tvariant={variant}\r\n\t\t\t\tplaceholder={placeholder}\r\n\t\t\t\tcolor={severityColor}\r\n\t\t\t/>\r\n\t\t\t<RadixSelect.Content\r\n\t\t\t\tside={side}\r\n\t\t\t\tclassName={styles.contentDefault}\r\n\t\t\t\tposition=\"popper\"\r\n\t\t\t\tvariant={variant !== \"surface\" ? \"soft\" : \"solid\"}\r\n\t\t\t\tcolor={itemSeverityColor}\r\n\t\t\t>\r\n\t\t\t\t{items.map(({ itemContent, value, ...rest }: SelectItemProps) => (\r\n\t\t\t\t\t<RadixSelect.Item className=\"overmap-select-item\" key={value} value={value} {...rest}>\r\n\t\t\t\t\t\t{itemContent}\r\n\t\t\t\t\t</RadixSelect.Item>\r\n\t\t\t\t))}\r\n\t\t\t</RadixSelect.Content>\r\n\t\t</RadixSelect.Root>\r\n\t)\r\n})\r\nexport const Select: FC<SelectProps> = React.memo(_Select)\r\n","import { FC, ReactNode, forwardRef, memo } from \"react\"\nimport { SizeMapping } from \"../constants\"\nimport { Size } from \"../typings\"\nimport { Box, Checkbox, Flex, Responsive, Select } from \"@radix-ui/themes\"\n\nexport interface MultiSelectOption {\n\tlabel: ReactNode\n\tvalue: string\n}\n\ninterface MultiSelectItemProps extends MultiSelectOption {\n\tchecked: boolean\n\tsize?: Responsive<(typeof SizeMapping)[Size]>\n}\n\nexport const MultiSelectItem: FC<MultiSelectItemProps> = memo(\n\tforwardRef<HTMLDivElement, MultiSelectItemProps>((props, ref) => {\n\t\tconst { checked, label, value, size = \"2\" } = props\n\t\treturn (\n\t\t\t<Box asChild px={size}>\n\t\t\t\t<Select.Item value={value} ref={ref}>\n\t\t\t\t\t<Flex gap={size} align=\"center\">\n\t\t\t\t\t\t<Checkbox checked={checked} />\n\t\t\t\t\t\t{label}\n\t\t\t\t\t</Flex>\n\t\t\t\t</Select.Item>\n\t\t\t</Box>\n\t\t)\n\t}),\n)\n","import { Select } from \"@radix-ui/themes\"\nimport { ComponentProps, FC, forwardRef, memo, useCallback, useEffect, useMemo, useState } from \"react\"\nimport { Severity, Size } from \"../typings\"\nimport { useResponsiveMapping, useSeverityColor } from \"../utils\"\nimport { SizeMapping } from \"../constants\"\nimport { MultiSelectItem, MultiSelectOption } from \"./MultiSelectItem\"\n\ntype RadixTriggerProps = ComponentProps<typeof Select.Trigger>\n\nexport interface MultiSelectProps {\n\tvalue: string[]\n\tonValueChange: (value: string[]) => void\n\toptions: MultiSelectOption[]\n\n\t// root props\n\tdisabled?: boolean\n\t/** @default medium */\n\tsize?: Size\n\tname?: string\n\n\t// trigger props\n\tplaceholder?: string\n\tid?: string\n\t/** @default surface */\n\tvariant?: Exclude<RadixTriggerProps[\"variant\"], \"classic\">\n\tradius?: RadixTriggerProps[\"radius\"]\n\t/** @default primary */\n\tseverity?: Severity\n}\n\nconst SELECT_ALL_VALUE = \"__select_all__\"\n\n/**\n * `MultiSelect` does not support being used as an uncontrolled component,\n * hence `onValueChange` and `value` are required.\n */\nexport const MultiSelect: FC<MultiSelectProps> = memo(\n\tforwardRef<HTMLButtonElement, MultiSelectProps>((props, ref) => {\n\t\tconst [open, setOpen] = useState(false)\n\n\t\tconst { placeholder, value, onValueChange, options, disabled, id, radius, variant, name } = props\n\t\tconst size = useResponsiveMapping(props.size, SizeMapping)\n\t\tconst color = useSeverityColor(props.severity)\n\n\t\t// option value => label\n\t\tconst optionsMap = useMemo(() => new Map(options.map((o) => [o.value, o.label])), [options])\n\n\t\t// ex: \"label 1, label 2\" OR \"6 options selected\"\n\t\tconst displayValue =\n\t\t\tvalue.length > 4\n\t\t\t\t? // to ensure the width of the select doesn't get too big\n\t\t\t\t `${value.length} options selected`\n\t\t\t\t: // convert the values to labels\n\t\t\t\t value.map((v) => optionsMap.get(v)).join(\", \")\n\n\t\tconst close = useCallback(() => setOpen(false), [])\n\n\t\tconst handleOpenChange = useCallback((open: boolean) => {\n\t\t\t// dismiss the internal close events\n\t\t\t// require clicking outside of the popup to close or pressing escape\n\t\t\tif (open) setOpen(true)\n\t\t}, [])\n\n\t\tconst handleValueChange = useCallback(\n\t\t\t(selected: string) => {\n\t\t\t\tlet next: string[]\n\t\t\t\tif (selected === SELECT_ALL_VALUE) {\n\t\t\t\t\tconst isAllSelected = value.length === options.length\n\t\t\t\t\tnext = isAllSelected ? [] : options.map((o) => o.value)\n\t\t\t\t} else {\n\t\t\t\t\tnext = value.includes(selected) ? value.filter((v) => v !== selected) : [...value, selected]\n\t\t\t\t}\n\n\t\t\t\tonValueChange(next)\n\t\t\t},\n\t\t\t[onValueChange, options, value],\n\t\t)\n\n\t\tuseEffect(() => {\n\t\t\tif (options.some(({ value }) => value === SELECT_ALL_VALUE)) {\n\t\t\t\tthrow new Error(`Cannot have an option with the value \"${SELECT_ALL_VALUE}\"`)\n\t\t\t}\n\t\t}, [options])\n\n\t\treturn (\n\t\t\t<Select.Root\n\t\t\t\topen={open}\n\t\t\t\tvalue=\"\"\n\t\t\t\tonOpenChange={handleOpenChange}\n\t\t\t\tonValueChange={handleValueChange}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tsize={size}\n\t\t\t\tname={name}\n\t\t\t\tautoComplete=\"off\"\n\t\t\t>\n\t\t\t\t<Select.Trigger\n\t\t\t\t\tref={ref}\n\t\t\t\t\tid={id}\n\t\t\t\t\tradius={radius}\n\t\t\t\t\tvariant={variant}\n\t\t\t\t\tcolor={color}\n\t\t\t\t\tplaceholder={value.length > 0 ? displayValue : placeholder}\n\t\t\t\t\t// remove the placeholder styling when there is a value\n\t\t\t\t\tdata-placeholder={value.length > 0 ? undefined : true}\n\t\t\t\t/>\n\n\t\t\t\t<Select.Content\n\t\t\t\t\tcolor=\"gray\"\n\t\t\t\t\tvariant=\"soft\"\n\t\t\t\t\tposition=\"popper\"\n\t\t\t\t\tonEscapeKeyDown={close}\n\t\t\t\t\tonPointerDownOutside={close}\n\t\t\t\t>\n\t\t\t\t\t<MultiSelectItem\n\t\t\t\t\t\tvalue={SELECT_ALL_VALUE}\n\t\t\t\t\t\tlabel=\"Select all\"\n\t\t\t\t\t\tchecked={value.length === options.length}\n\t\t\t\t\t\tsize={size}\n\t\t\t\t\t/>\n\t\t\t\t\t{options.map((option) => (\n\t\t\t\t\t\t<MultiSelectItem\n\t\t\t\t\t\t\tkey={option.value}\n\t\t\t\t\t\t\t{...option}\n\t\t\t\t\t\t\tchecked={value.includes(option.value)}\n\t\t\t\t\t\t\tsize={size}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</Select.Content>\n\t\t\t</Select.Root>\n\t\t)\n\t}),\n)\n","import { FC, forwardRef, memo, Ref, useCallback, useLayoutEffect, useRef, useState } from \"react\"\nimport { Switch as RadixSwitch, Portal } from \"@radix-ui/themes\"\nimport classNames from \"classnames\"\nimport { SwitchProps } from \"./typings.ts\"\nimport { useSeverityColor } from \"../utils.ts\"\n\nimport styles from \"./Switch.module.sass\"\n\nconst _Switch = forwardRef(function Switch(\n\t{ className, severity = \"primary\", icon, defaultChecked = false, onCheckedChange, ...rest }: SwitchProps,\n\tref: Ref<HTMLButtonElement>,\n) {\n\t// fallbackRef used in case user does not pass in a ref\n\tconst fallbackRef = useRef<HTMLButtonElement>(null)\n\t// uncontrolled state to keep track of whether the Switch is checked or not, not passed to the Switch itself\n\tconst [checked, setChecked] = useState(rest.checked ? rest.checked : defaultChecked)\n\t// iconContainer is used to store the switch Thumb span element so that an Icon can be rendered within it\n\tconst [iconContainer, setIconContainer] = useState<HTMLSpanElement | undefined>()\n\tconst severityColor = useSeverityColor(severity)\n\n\tuseLayoutEffect(() => {\n\t\tconst usedRef = ref ? ref : fallbackRef\n\t\tif (\"current\" in usedRef && usedRef.current) {\n\t\t\tsetIconContainer(usedRef.current?.querySelector(\"span.rt-SwitchThumb\") as HTMLSpanElement)\n\t\t}\n\t}, [ref])\n\n\tconst handleValueChange = useCallback(\n\t\t(checked: boolean) => {\n\t\t\tsetChecked(checked)\n\t\t\tif (onCheckedChange) onCheckedChange(checked)\n\t\t},\n\t\t[onCheckedChange],\n\t)\n\n\tconst _checked = rest.checked ? rest.checked : checked\n\n\treturn (\n\t\t<>\n\t\t\t<RadixSwitch\n\t\t\t\tclassName={classNames(\"overmap-switch\", className, styles.default)}\n\t\t\t\tref={ref ? ref : fallbackRef}\n\t\t\t\tcolor={severityColor}\n\t\t\t\tradius=\"full\"\n\t\t\t\tdefaultChecked={defaultChecked}\n\t\t\t\tonCheckedChange={handleValueChange}\n\t\t\t\t{...rest}\n\t\t\t/>\n\t\t\t<Portal container={iconContainer} asChild>\n\t\t\t\t{icon && \"checked\" in icon ? (_checked ? icon[\"checked\"] : icon[\"unchecked\"]) : icon}\n\t\t\t</Portal>\n\t\t</>\n\t)\n})\n\n/** The Switch Component is a user interface element that allows users to toggle between two states, typically\n * representing \"on\" and \"off\" or \"enabled\" and \"disabled\". It is commonly used for settings, preferences, or any\n * binary options. This Switch component is a wrapper around the Radix-ui Switch component found here https://www.radix-ui.com/themes/docs/components/switch\n */\nexport const Switch: FC<SwitchProps> = memo(_Switch)\n","import { forwardRef, memo, Ref, useEffect, useState } from \"react\"\r\nimport { Box } from \"@radix-ui/themes\"\r\nimport { DragHandleDots2Icon } from \"@radix-ui/react-icons\"\r\nimport * as RadixDialogPrimitive from \"@radix-ui/react-dialog\"\r\nimport { DialogContentProps } from \"@radix-ui/react-dialog\"\r\nimport { Resizable } from \"re-resizable\"\r\nimport classNames from \"classnames\"\r\n\r\nimport styles from \"./Sidebar.module.sass\"\r\n\r\ninterface SidebarProps extends Omit<DialogContentProps, \"asChild\" | \"forceMount\"> {\r\n\t/** determines what side the Sidebar appears from within its rendered container */\r\n\tside?: \"left\" | \"right\"\r\n\t/** when true, interactions with any elements outside the Sidebar will be disabled */\r\n\tmodal?: boolean\r\n\t/** The minimum width to which the Sidebar can be resized to\r\n\t * @default 300px\r\n\t * */\r\n\tminWidth?: number | string\r\n\t/** The maximum width to which the Sidebar can be resized to\r\n\t * @default 500px\r\n\t * */\r\n\tmaxWidth?: number | string\r\n\t/** determines if the Sidebar can be resized\r\n\t * @default true\r\n\t * */\r\n\tresizable?: boolean\r\n\t/** prop to control whether the Sidebar is open or not */\r\n\topen?: boolean\r\n\t/** a selector string for the desired container for the Sidebar to render within\r\n\t * @default '[data-is-root-theme=\"true\"]'\r\n\t * */\r\n\tcontainerSelector?: string\r\n\t/** determine whether the Sidebar also renders with an Overlay*/\r\n\toverlay?: boolean\r\n}\r\n\r\nconst _Sidebar = forwardRef(function Sidebar(\r\n\t{\r\n\t\tside = \"left\",\r\n\t\tmodal = true,\r\n\t\tchildren,\r\n\t\topen,\r\n\t\tcontainerSelector,\r\n\t\toverlay = true,\r\n\t\tresizable = true,\r\n\t\t// Props related to Resizable\r\n\t\tminWidth = \"300px\",\r\n\t\tmaxWidth = \"500px\",\r\n\t\t...rest\r\n\t}: SidebarProps,\r\n\tref: Ref<HTMLDivElement>,\r\n) {\r\n\tconst isRight = side === \"right\"\r\n\tconst isLeft = side === \"left\"\r\n\tconst [container, setContainer] = useState<HTMLElement>()\r\n\r\n\tuseEffect(() => {\r\n\t\tconst selector = containerSelector ?? '[data-is-root-theme=\"true\"]'\r\n\t\tconst tempContainer = document.querySelector(selector) as HTMLElement\r\n\r\n\t\tif (tempContainer === undefined) {\r\n\t\t\tthrow new Error(`Could not find a container element using the following selector ${selector}`)\r\n\t\t}\r\n\t\tsetContainer(tempContainer)\r\n\t}, [containerSelector])\r\n\r\n\treturn (\r\n\t\t<RadixDialogPrimitive.Root open={open} modal={modal}>\r\n\t\t\t<RadixDialogPrimitive.Portal container={container}>\r\n\t\t\t\t{overlay && <RadixDialogPrimitive.Overlay className={classNames(styles.overlay)} />}\r\n\t\t\t\t<RadixDialogPrimitive.Content\r\n\t\t\t\t\tclassName={classNames(\"overmap-sidebar\", \"rt-DialogContent\", styles.sidebarContent, {\r\n\t\t\t\t\t\t[styles.left!]: isLeft,\r\n\t\t\t\t\t\t[styles.right!]: isRight,\r\n\t\t\t\t\t})}\r\n\t\t\t\t\tref={ref}\r\n\t\t\t\t\tasChild\r\n\t\t\t\t\t{...rest}\r\n\t\t\t\t>\r\n\t\t\t\t\t<Box width=\"auto\">\r\n\t\t\t\t\t\t<Resizable\r\n\t\t\t\t\t\t\tminWidth={minWidth}\r\n\t\t\t\t\t\t\tmaxWidth={maxWidth}\r\n\t\t\t\t\t\t\tdefaultSize={{ width: \"300px\", height: \"100%\" }}\r\n\t\t\t\t\t\t\tenable={{ right: resizable && isLeft, left: resizable && isRight }}\r\n\t\t\t\t\t\t\thandleClasses={{ left: styles.resizeHandle, right: styles.resizeHandle }}\r\n\t\t\t\t\t\t\thandleComponent={{\r\n\t\t\t\t\t\t\t\tright: <DragHandleDots2Icon />,\r\n\t\t\t\t\t\t\t\tleft: <DragHandleDots2Icon />,\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{children}\r\n\t\t\t\t\t\t</Resizable>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</RadixDialogPrimitive.Content>\r\n\t\t\t</RadixDialogPrimitive.Portal>\r\n\t\t</RadixDialogPrimitive.Root>\r\n\t)\r\n})\r\n\r\nexport const Sidebar = memo(_Sidebar)\r\n","import React, { FC, forwardRef } from \"react\"\nimport { Text, TextField as RadixTextField } from \"@radix-ui/themes\"\nimport classNames from \"classnames\"\nimport { useResponsiveMapping, useSeverityColor } from \"../utils.ts\"\nimport { SizeMapping } from \"../constants.ts\"\nimport { InputProps } from \"./typings.ts\"\n\nimport styles from \"./Input.module.sass\"\n\nconst _Input = forwardRef(function Input(\n\t{\n\t\tclassName,\n\t\tleftSlot,\n\t\trightSlot,\n\t\tsize = \"medium\",\n\t\tshowInputLength,\n\t\tvalue,\n\t\tvariant,\n\t\tseverity = \"primary\",\n\t\t...rest\n\t}: InputProps,\n\tref: React.Ref<HTMLInputElement>,\n) {\n\tconst computedSize = useResponsiveMapping(size, SizeMapping)\n\n\tconst color = useSeverityColor(severity)\n\n\tconst displayInputLength = showInputLength || (showInputLength === undefined && rest.maxLength !== undefined)\n\tconst valueAsString = value !== undefined ? value.toString() : undefined\n\n\treturn (\n\t\t<RadixTextField.Root\n\t\t\tclassName={classNames(styles.wrapper, {\n\t\t\t\t[styles.accommodateCharCount!]: displayInputLength,\n\t\t\t})}\n\t\t\tsize={computedSize}\n\t\t\tvariant={variant}\n\t\t\tcolor={color}\n\t\t>\n\t\t\t{leftSlot && <RadixTextField.Slot>{leftSlot}</RadixTextField.Slot>}\n\t\t\t<RadixTextField.Input\n\t\t\t\tclassName={classNames(styles.default, className, {\n\t\t\t\t\t[styles.noLeftIcon!]: !leftSlot,\n\t\t\t\t\t[styles.noRightIcon!]: !rightSlot,\n\t\t\t\t})}\n\t\t\t\tref={ref}\n\t\t\t\tsize={computedSize}\n\t\t\t\tvariant={variant}\n\t\t\t\tcolor={color}\n\t\t\t\t{...rest}\n\t\t\t/>\n\t\t\t{rightSlot && <RadixTextField.Slot>{rightSlot}</RadixTextField.Slot>}\n\t\t\t{displayInputLength && (\n\t\t\t\t<Text as=\"p\" className={styles.charCount} size=\"1\" color=\"gray\">\n\t\t\t\t\t{rest.maxLength !== undefined\n\t\t\t\t\t\t? `${valueAsString?.length}/${rest.maxLength}`\n\t\t\t\t\t\t: `${valueAsString?.length}`}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</RadixTextField.Root>\n\t)\n})\nexport const Input: FC<InputProps> = React.memo(_Input)\n","import React, { forwardRef, FC } from \"react\"\r\nimport { Popover as RadixPopover } from \"@radix-ui/themes\"\r\nimport { PopoverProps } from \"./typings.ts\"\r\n\r\nimport styles from \"./Popover.module.sass\"\r\nimport classNames from \"classnames\"\r\n\r\nconst _Popover = forwardRef(function Popover(\r\n\t{ className, defaultOpen = false, modal = false, content, children, ...rest }: PopoverProps,\r\n\tref: React.Ref<HTMLDivElement>,\r\n) {\r\n\treturn (\r\n\t\t<RadixPopover.Root defaultOpen={defaultOpen} modal={modal}>\r\n\t\t\t<RadixPopover.Trigger>{children}</RadixPopover.Trigger>\r\n\t\t\t<RadixPopover.Content\r\n\t\t\t\tref={ref}\r\n\t\t\t\tclassName={classNames(\"overmap-popover\", className, styles.wrapper)}\r\n\t\t\t\t{...rest}\r\n\t\t\t>\r\n\t\t\t\t{content(RadixPopover.Close)}\r\n\t\t\t</RadixPopover.Content>\r\n\t\t</RadixPopover.Root>\r\n\t)\r\n})\r\nexport const Popover: FC<PopoverProps> = React.memo(_Popover)\r\n","import {\r\n\tCSSProperties,\r\n\tFC,\r\n\tmemo,\r\n\tuseCallback,\r\n\tuseEffect,\r\n\tuseMemo,\r\n\tuseRef,\r\n\tuseState,\r\n\tDispatch,\r\n\tSetStateAction,\r\n\tReactNode,\r\n\tReactElement,\r\n} from \"react\"\r\nimport { Box, Flex } from \"@radix-ui/themes\"\r\nimport { DragHandleDots2Icon } from \"@radix-ui/react-icons\"\r\nimport { NumberSize, Resizable, ResizeDirection } from \"re-resizable\"\r\nimport { Transition, TransitionStatus } from \"react-transition-group\"\r\nimport classNames from \"classnames\"\r\n\r\nimport styles from \"./LeftAndRightPanels.module.sass\"\r\n\r\nconst DEFAULT_MIN_WIDTH = 200\r\nconst TRANSITION_DURATION = 150\r\n\r\nexport interface LeftAndRightPanelsProps {\r\n\t/** content to be rendered within the center panel */\r\n\tchildren: ReactNode\r\n\t/** state to determine whether to show or hide the left panel*/\r\n\tshowLeft?: boolean\r\n\t/** content to be rendered within the left panel*/\r\n\tleftPanel?: ReactElement\r\n\t/** minimum width of the left panel when resizing */\r\n\tleftMinWidth?: number\r\n\t/** maximum width of the left panel when resizing */\r\n\tleftMaxWidth?: number\r\n\t/** state to determine whether to show or hide the right panel*/\r\n\tshowRight?: boolean\r\n\t/** content to be rendered within the left panel*/\r\n\trightPanel?: ReactElement\r\n\t/** minimum width of the left panel when resizing */\r\n\trightMinWidth?: number\r\n\t/** maximum width of the left panel when resizing */\r\n\trightMaxWidth?: number\r\n\t/** used to disable or enable resizing on the left and right panels */\r\n\tresizeable?: { left?: boolean; right?: boolean }\r\n}\r\n\r\n/** Panels are graphical elements that divide a screen or window into distinct sections, each of which can contain\r\n * different types of content or functionality. They are often used to organize and present information in a structured\r\n * manner. In many graphical user interfaces (GUIs), panels are draggable and resizable, allowing users to customize\r\n * the layout to suit their preferences. Panels can be used for a variety of purposes, such as displaying navigation\r\n * menus, presenting data, providing tools or controls, or hosting multimedia content. LeftAndRightPanels renders main\r\n * content and provides left and right resizable, toggleable panels. This component can be rendered within any element\r\n * as its container and the Panels will be scoped to the height and appear to the left and right of that container. */\r\nexport const LeftAndRightPanels: FC<LeftAndRightPanelsProps> = memo(function Panels({\r\n\tchildren,\r\n\tshowLeft,\r\n\tleftPanel,\r\n\tleftMinWidth = DEFAULT_MIN_WIDTH,\r\n\tshowRight,\r\n\trightPanel,\r\n\trightMinWidth = DEFAULT_MIN_WIDTH,\r\n\tresizeable,\r\n}: LeftAndRightPanelsProps) {\r\n\tconst wrapperRef = useRef<HTMLDivElement>(null)\r\n\t// Left panel related state\r\n\tconst leftPanelRef = useRef<HTMLDivElement>(null)\r\n\tconst [leftPanelWidth, setLeftPanelWidth] = useState<number>(0)\r\n\tconst [leftPanelMaxWidth, setLeftPanelMaxWidth] = useState<number>()\r\n\t// Right panel related state\r\n\tconst rightPanelRef = useRef<HTMLDivElement>(null)\r\n\tconst [rightPanelWidth, setRightPanelWidth] = useState<number>(0)\r\n\tconst [rightPanelMaxWidth, setRightPanelMaxWidth] = useState<number>()\r\n\r\n\tconst handleResizePanel = useCallback(\r\n\t\t(\r\n\t\t\tresizedPanelWidth: number,\r\n\t\t\tsetResizedPanelWidth: Dispatch<SetStateAction<number>>,\r\n\t\t\tsetOtherPanelMaxWidth: Dispatch<SetStateAction<number | undefined>>,\r\n\t\t) => {\r\n\t\t\treturn (_event: MouseEvent | TouchEvent, _dir: ResizeDirection, _ref: HTMLElement, delta: NumberSize) => {\r\n\t\t\t\tif (!wrapperRef.current) return\r\n\t\t\t\tconst newWidth = resizedPanelWidth + delta.width\r\n\t\t\t\tsetOtherPanelMaxWidth(wrapperRef.current.clientWidth - newWidth)\r\n\t\t\t\tsetResizedPanelWidth(() => newWidth)\r\n\t\t\t}\r\n\t\t},\r\n\t\t[],\r\n\t)\r\n\r\n\tconst handleResizeLeftPanel = useCallback(\r\n\t\t(_event: MouseEvent | TouchEvent, _dir: ResizeDirection, _ref: HTMLElement, delta: NumberSize) =>\r\n\t\t\thandleResizePanel(leftPanelWidth, setLeftPanelWidth, setRightPanelMaxWidth)(_event, _dir, _ref, delta),\r\n\t\t[handleResizePanel, leftPanelWidth],\r\n\t)\r\n\r\n\tconst handleResizeRightPanel = useCallback(\r\n\t\t(_event: MouseEvent | TouchEvent, _dir: ResizeDirection, _ref: HTMLElement, delta: NumberSize) =>\r\n\t\t\thandleResizePanel(rightPanelWidth, setRightPanelWidth, setLeftPanelMaxWidth)(_event, _dir, _ref, delta),\r\n\t\t[handleResizePanel, rightPanelWidth],\r\n\t)\r\n\r\n\t// Used to resize and update the other panel when a panel is opened\r\n\tconst handleResizeOtherPanelOnPanelOpen = useCallback(\r\n\t\t(\r\n\t\t\topeningPanelWidth: number,\r\n\t\t\topeningPanelMinWidth: number,\r\n\t\t\tsetOpeningPanelWidth: Dispatch<SetStateAction<number>>,\r\n\t\t\tsetOpeningPanelMaxWidth: Dispatch<SetStateAction<number | undefined>>,\r\n\t\t\totherPanelWidth: number,\r\n\t\t\totherPanelOpen: boolean | undefined,\r\n\t\t\tsetOtherPanelWidth: Dispatch<SetStateAction<number>>,\r\n\t\t\tsetOtherPanelMaxWidth: Dispatch<SetStateAction<number | undefined>>,\r\n\t\t) => {\r\n\t\t\tif (!wrapperRef.current) return\r\n\t\t\tlet newOpeningPanelWidth = openingPanelWidth\r\n\r\n\t\t\t// If first time opening, set its width to the specified min width\r\n\t\t\tif (newOpeningPanelWidth === 0) {\r\n\t\t\t\tnewOpeningPanelWidth = openingPanelMinWidth\r\n\t\t\t\tsetOpeningPanelWidth(newOpeningPanelWidth)\r\n\t\t\t}\r\n\r\n\t\t\tif (otherPanelOpen) {\r\n\t\t\t\t// calculate the new max width of the other panel based on the opened panels new width\r\n\t\t\t\tconst newOtherPanelMaxWidth = wrapperRef.current.clientWidth - newOpeningPanelWidth\r\n\t\t\t\tsetOtherPanelMaxWidth(newOtherPanelMaxWidth)\r\n\r\n\t\t\t\t// if the current width of the other panel exceeds its new max, set its width to its new max\r\n\t\t\t\tif (otherPanelWidth > newOtherPanelMaxWidth) {\r\n\t\t\t\t\tsetOtherPanelWidth(newOtherPanelMaxWidth)\r\n\t\t\t\t\t// now update the new max width of the opened panel after other panel has been resized\r\n\t\t\t\t\tsetOpeningPanelMaxWidth(wrapperRef.current.clientWidth - newOtherPanelMaxWidth)\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\t[],\r\n\t)\r\n\r\n\tconst handleResizeLeftPanelOnRightPanelOpen = useCallback(\r\n\t\t() =>\r\n\t\t\thandleResizeOtherPanelOnPanelOpen(\r\n\t\t\t\trightPanelWidth,\r\n\t\t\t\trightMinWidth,\r\n\t\t\t\tsetRightPanelWidth,\r\n\t\t\t\tsetRightPanelMaxWidth,\r\n\t\t\t\tleftPanelWidth,\r\n\t\t\t\tshowLeft,\r\n\t\t\t\tsetLeftPanelWidth,\r\n\t\t\t\tsetLeftPanelMaxWidth,\r\n\t\t\t),\r\n\t\t[handleResizeOtherPanelOnPanelOpen, leftPanelWidth, rightMinWidth, rightPanelWidth, showLeft],\r\n\t)\r\n\r\n\tconst handleResizeRightPanelOnLeftPanelOpen = useCallback(\r\n\t\t() =>\r\n\t\t\thandleResizeOtherPanelOnPanelOpen(\r\n\t\t\t\tleftPanelWidth,\r\n\t\t\t\tleftMinWidth,\r\n\t\t\t\tsetLeftPanelWidth,\r\n\t\t\t\tsetLeftPanelMaxWidth,\r\n\t\t\t\trightPanelWidth,\r\n\t\t\t\tshowRight,\r\n\t\t\t\tsetRightPanelWidth,\r\n\t\t\t\tsetRightPanelMaxWidth,\r\n\t\t\t),\r\n\t\t[handleResizeOtherPanelOnPanelOpen, leftMinWidth, leftPanelWidth, rightPanelWidth, showRight],\r\n\t)\r\n\r\n\tconst handleResizeOtherPanelOnPanelClose = useCallback(\r\n\t\t(otherPanelOpen: boolean | undefined, setOtherPanelMaxWidth: Dispatch<SetStateAction<number | undefined>>) => {\r\n\t\t\tif (!wrapperRef.current) return\r\n\t\t\t// Allow ability fpr other panel to fill entire wrapper container if open\r\n\t\t\tif (otherPanelOpen) setOtherPanelMaxWidth(wrapperRef.current.clientWidth)\r\n\t\t},\r\n\t\t[],\r\n\t)\r\n\r\n\tconst handleResizeLeftPanelOnRightPanelClose = useCallback(\r\n\t\t() => handleResizeOtherPanelOnPanelClose(showLeft, setLeftPanelMaxWidth),\r\n\t\t[handleResizeOtherPanelOnPanelClose, showLeft],\r\n\t)\r\n\r\n\tconst handleResizeRightPanelOnLeftPanelClose = useCallback(\r\n\t\t() => handleResizeOtherPanelOnPanelClose(showRight, setRightPanelMaxWidth),\r\n\t\t[handleResizeOtherPanelOnPanelClose, showRight],\r\n\t)\r\n\r\n\tconst resizeObserverCallback: ResizeObserverCallback = useCallback(() => {\r\n\t\tif (!wrapperRef.current) return\r\n\t\tsetLeftPanelMaxWidth(wrapperRef.current.clientWidth - (rightPanelRef.current?.clientWidth || 0))\r\n\t\tsetRightPanelMaxWidth(wrapperRef.current.clientWidth - (leftPanelRef.current?.clientWidth || 0))\r\n\t\tsetLeftPanelWidth(leftPanelRef.current?.clientWidth || 0)\r\n\t\tsetRightPanelWidth(rightPanelRef.current?.clientWidth || 0)\r\n\t}, [])\r\n\r\n\t// Set up resize observer on wrapper element to adjust width upon resizing\r\n\tuseEffect(() => {\r\n\t\tif (!wrapperRef.current) return\r\n\t\tconst resizeObserver = new ResizeObserver(resizeObserverCallback)\r\n\t\tresizeObserver.observe(wrapperRef.current)\r\n\t\treturn () => {\r\n\t\t\tresizeObserver.disconnect()\r\n\t\t}\r\n\t}, [resizeObserverCallback])\r\n\r\n\tconst leftPanelTransitionStyles: Record<TransitionStatus, CSSProperties> = useMemo(() => {\r\n\t\treturn {\r\n\t\t\tentering: {\r\n\t\t\t\ttransform: `translateX(-${leftPanelWidth}px)`,\r\n\t\t\t\tmarginRight: `-${leftPanelWidth}px`,\r\n\t\t\t\ttransitionProperty: \"transform, margin-right\",\r\n\t\t\t\ttransitionDuration: `${TRANSITION_DURATION}ms`,\r\n\t\t\t\ttransitionTimingFunction: \"linear\",\r\n\t\t\t},\r\n\t\t\tentered: {\r\n\t\t\t\ttransform: `translateX(0)`,\r\n\t\t\t\tmarginRight: 0,\r\n\t\t\t\ttransitionProperty: \"transform, margin-right\",\r\n\t\t\t\ttransitionDuration: `${TRANSITION_DURATION}ms`,\r\n\t\t\t\ttransitionTimingFunction: \"linear\",\r\n\t\t\t},\r\n\t\t\texiting: {\r\n\t\t\t\ttransform: `translateX(-${leftPanelWidth}px)`,\r\n\t\t\t\tmarginRight: `-${leftPanelWidth}px`,\r\n\t\t\t\ttransitionProperty: \"transform, margin-right\",\r\n\t\t\t\ttransitionDuration: `${TRANSITION_DURATION}ms`,\r\n\t\t\t\ttransitionTimingFunction: \"linear\",\r\n\t\t\t},\r\n\t\t\texited: {},\r\n\t\t\tunmounted: {},\r\n\t\t}\r\n\t}, [leftPanelWidth])\r\n\r\n\tconst rightPanelTransitionStyles: Record<TransitionStatus, CSSProperties> = useMemo(() => {\r\n\t\treturn {\r\n\t\t\tentering: {\r\n\t\t\t\ttransform: `translateX(${rightPanelWidth}px)`,\r\n\t\t\t\tmarginLeft: `${-rightPanelWidth}px`,\r\n\t\t\t\ttransitionProperty: \"transform, margin-left\",\r\n\t\t\t\ttransitionDuration: `${TRANSITION_DURATION}ms`,\r\n\t\t\t\ttransitionTimingFunction: \"linear\",\r\n\t\t\t},\r\n\t\t\tentered: {\r\n\t\t\t\ttransform: `translateX(0)`,\r\n\t\t\t\tmarginLeft: 0,\r\n\t\t\t\ttransitionProperty: \"transform, margin-left\",\r\n\t\t\t\ttransitionDuration: `${TRANSITION_DURATION}ms`,\r\n\t\t\t\ttransitionTimingFunction: \"linear\",\r\n\t\t\t},\r\n\t\t\texiting: {\r\n\t\t\t\ttransform: `translateX(${rightPanelWidth}px)`,\r\n\t\t\t\tmarginLeft: `${-rightPanelWidth}px`,\r\n\t\t\t\ttransitionProperty: \"transform, margin-left\",\r\n\t\t\t\ttransitionDuration: `${TRANSITION_DURATION}ms`,\r\n\t\t\t\ttransitionTimingFunction: \"linear\",\r\n\t\t\t},\r\n\t\t\texited: {},\r\n\t\t\tunmounted: {},\r\n\t\t}\r\n\t}, [rightPanelWidth])\r\n\r\n\treturn (\r\n\t\t<Flex\r\n\t\t\tclassName={styles.wrapper}\r\n\t\t\tstyle={{ minWidth: `${leftMinWidth + rightMinWidth}px` }}\r\n\t\t\tref={wrapperRef}\r\n\t\t\twidth=\"100%\"\r\n\t\t\theight=\"100%\"\r\n\t\t\tjustify=\"center\"\r\n\t\t\tm=\"0\"\r\n\t\t\tp=\"0\"\r\n\t\t>\r\n\t\t\t<Transition\r\n\t\t\t\tnodeRef={leftPanelRef}\r\n\t\t\t\ttimeout={!showLeft ? TRANSITION_DURATION : 0}\r\n\t\t\t\tin={showLeft}\r\n\t\t\t\tunmountOnExit\r\n\t\t\t\tonEntering={handleResizeRightPanelOnLeftPanelOpen}\r\n\t\t\t\tonExited={handleResizeRightPanelOnLeftPanelClose}\r\n\t\t\t>\r\n\t\t\t\t{(state) => (\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tref={leftPanelRef}\r\n\t\t\t\t\t\tclassName={classNames(styles.panelContent, styles.left)}\r\n\t\t\t\t\t\tstyle={leftPanelTransitionStyles[state]}\r\n\t\t\t\t\t\twidth=\"auto\"\r\n\t\t\t\t\t\theight=\"100%\"\r\n\t\t\t\t\t\tm=\"0\"\r\n\t\t\t\t\t\tp=\"0\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<Resizable\r\n\t\t\t\t\t\t\tclassName={styles.resizable}\r\n\t\t\t\t\t\t\tsize={{\r\n\t\t\t\t\t\t\t\twidth: leftPanelWidth,\r\n\t\t\t\t\t\t\t\theight: \"100%\",\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\tonResizeStop={handleResizeLeftPanel}\r\n\t\t\t\t\t\t\tenable={{ right: resizeable?.left !== undefined ? resizeable.left : true }}\r\n\t\t\t\t\t\t\tminWidth={leftMinWidth}\r\n\t\t\t\t\t\t\tmaxWidth={leftPanelMaxWidth}\r\n\t\t\t\t\t\t\thandleClasses={{ right: classNames(styles.resizeHandle, styles.left) }}\r\n\t\t\t\t\t\t\thandleComponent={{\r\n\t\t\t\t\t\t\t\tright: <DragHandleDots2Icon height=\"14px\" width=\"14px\" />,\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{leftPanel}\r\n\t\t\t\t\t\t</Resizable>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t)}\r\n\t\t\t</Transition>\r\n\t\t\t<Box className={styles.panelMainContent} width=\"max-content\">\r\n\t\t\t\t{children}\r\n\t\t\t</Box>\r\n\t\t\t<Transition\r\n\t\t\t\tnodeRef={rightPanelRef}\r\n\t\t\t\ttimeout={!showRight ? TRANSITION_DURATION : 0}\r\n\t\t\t\tin={showRight}\r\n\t\t\t\tunmountOnExit\r\n\t\t\t\tonEntering={handleResizeLeftPanelOnRightPanelOpen}\r\n\t\t\t\tonExited={handleResizeLeftPanelOnRightPanelClose}\r\n\t\t\t>\r\n\t\t\t\t{(state) => (\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tref={rightPanelRef}\r\n\t\t\t\t\t\tclassName={classNames(styles.panelContent, styles.right)}\r\n\t\t\t\t\t\tstyle={rightPanelTransitionStyles[state]}\r\n\t\t\t\t\t\twidth=\"auto\"\r\n\t\t\t\t\t\theight=\"100%\"\r\n\t\t\t\t\t\tm=\"0\"\r\n\t\t\t\t\t\tp=\"0\"\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<Resizable\r\n\t\t\t\t\t\t\tclassName={styles.resizable}\r\n\t\t\t\t\t\t\tsize={{ width: rightPanelWidth, height: \"100%\" }}\r\n\t\t\t\t\t\t\tonResizeStop={handleResizeRightPanel}\r\n\t\t\t\t\t\t\tenable={{ left: resizeable?.right !== undefined ? resizeable.right : true }}\r\n\t\t\t\t\t\t\tminWidth={rightMinWidth}\r\n\t\t\t\t\t\t\tmaxWidth={rightPanelMaxWidth}\r\n\t\t\t\t\t\t\thandleClasses={{ left: classNames(styles.resizeHandle, styles.right) }}\r\n\t\t\t\t\t\t\thandleComponent={{ left: <DragHandleDots2Icon height=\"14px\" width=\"14px\" /> }}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t{rightPanel}\r\n\t\t\t\t\t\t</Resizable>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t)}\r\n\t\t\t</Transition>\r\n\t\t</Flex>\r\n\t)\r\n})\r\n","import { FC, forwardRef, memo, Ref, useMemo } from \"react\"\r\nimport { Text, TextArea as RadixTextArea } from \"@radix-ui/themes\"\r\nimport classNames from \"classnames\"\r\nimport { TextAreaProps } from \"./typings.ts\"\r\n\r\nimport styles from \"./Textarea.module.sass\"\r\nimport { useSeverityColor } from \"../utils.ts\"\r\n\r\nconst _TextArea = forwardRef(function TextArea(\r\n\t{ className, showInputLength, inputLengthTemplate, value, severity = \"primary\", resize, ...rest }: TextAreaProps,\r\n\tref: Ref<HTMLTextAreaElement>,\r\n) {\r\n\tconst severityColor = useSeverityColor(severity)\r\n\tconst infoColor = useSeverityColor(\"info\")\r\n\r\n\tconst displayInputLength =\r\n\t\tshowInputLength ||\r\n\t\t(showInputLength === undefined && (rest.maxLength !== undefined || rest.minLength !== undefined))\r\n\tconst valueAsString = value !== undefined ? value.toString() : \"\"\r\n\r\n\tconst displayInputLengthValue = useMemo(() => {\r\n\t\tif (inputLengthTemplate) {\r\n\t\t\tlet template = inputLengthTemplate.replace(\"{current}\", valueAsString.length.toString())\r\n\t\t\tif (rest.minLength !== undefined) {\r\n\t\t\t\ttemplate = template.replace(\"{min}\", rest.minLength.toString())\r\n\t\t\t}\r\n\t\t\tif (rest.maxLength !== undefined) {\r\n\t\t\t\ttemplate = template.replace(\"{max}\", rest.maxLength.toString())\r\n\t\t\t}\r\n\t\t\treturn template\r\n\t\t}\r\n\t\treturn valueAsString.length\r\n\t}, [inputLengthTemplate, rest.maxLength, rest.minLength, valueAsString.length])\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<RadixTextArea\r\n\t\t\t\tclassName={classNames(\"overmap-textarea\", className)}\r\n\t\t\t\tstyle={{ resize: resize }}\r\n\t\t\t\tref={ref}\r\n\t\t\t\tvalue={value}\r\n\t\t\t\tcolor={severityColor}\r\n\t\t\t\t{...rest}\r\n\t\t\t/>\r\n\t\t\t{displayInputLength && (\r\n\t\t\t\t<Text as=\"p\" className={styles.charCount} color={infoColor} align=\"right\">\r\n\t\t\t\t\t{displayInputLengthValue}\r\n\t\t\t\t</Text>\r\n\t\t\t)}\r\n\t\t</>\r\n\t)\r\n})\r\n\r\n/** The TextArea Component is a user interface element that allows users to input and edit multi-line text.\r\n It is commonly used in forms, chat applications, and other scenarios where longer text inputs are required.\r\n This TextArea is a wrapper of the RadixUI TextArea component found here https://www.radix-ui.com/themes/docs/components/text-area.\r\n */\r\nexport const TextArea: FC<TextAreaProps> = memo(_TextArea)\r\n","import { FC, forwardRef, memo, Ref } from \"react\"\nimport { Item, Root } from \"@radix-ui/react-toggle-group\"\nimport { ToggleGroupItemProps, ToggleGroupSingleProps } from \"./typings.ts\"\nimport { IconButton } from \"../Buttons\"\nimport classNames from \"classnames\"\nimport { ButtonGroup } from \"../ButtonGroup\"\n\nconst _ToggleGroup = forwardRef(function ToggleGroup(\n\t{\n\t\t// ToggleGroup Primitive Props\n\t\tloop,\n\t\ttype,\n\t\trovingFocus,\n\t\tvalue,\n\t\tonValueChange,\n\t\tdefaultValue,\n\t\tdisabled,\n\t\titems,\n\t\t// ButtonGroup Props\n\t\tclassName,\n\t\tdirection = \"row\",\n\t\t...rest\n\t}: ToggleGroupSingleProps,\n\tref: Ref<HTMLDivElement>,\n) {\n\treturn (\n\t\t<Root\n\t\t\ttype={type}\n\t\t\tclassName={classNames(\"overmap-toggle-group\", className)}\n\t\t\tref={ref}\n\t\t\tvalue={value}\n\t\t\tonValueChange={onValueChange}\n\t\t\tdisabled={disabled}\n\t\t\torientation={direction === \"column\" ? \"vertical\" : \"horizontal\"}\n\t\t\tloop={loop}\n\t\t\trovingFocus={rovingFocus}\n\t\t\tdefaultValue={defaultValue}\n\t\t\tasChild\n\t\t>\n\t\t\t<ButtonGroup direction={direction} {...rest}>\n\t\t\t\t{items.map(({ children, ...rest }: ToggleGroupItemProps) => (\n\t\t\t\t\t<Item asChild {...rest} key={rest.value}>\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tclassName={classNames(\"overmap-toggle-group-button\")}\n\t\t\t\t\t\t\taria-label={rest.value}\n\t\t\t\t\t\t\tvariant={rest.value === value ? \"solid\" : \"soft\"}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</Item>\n\t\t\t\t))}\n\t\t\t</ButtonGroup>\n\t\t</Root>\n\t)\n})\n\n/** The Toggle Group Component is a user interface element that allows users to select a single option from a set of\n * mutually exclusive choices. It is commonly used in situations where users need to make a single selection from a\n * predefined list of options. This component is built using the ButtonGroup and IconButton components in combination\n * with the Radix Toggle Group primitive found here https://www.radix-ui.com/primitives/docs/components/toggle-group */\nexport const ToggleGroup: FC<ToggleGroupSingleProps> = memo(_ToggleGroup)\n","import { FC, forwardRef, memo, useCallback, useState } from \"react\"\r\nimport * as RadixToast from \"@radix-ui/react-toast\"\r\nimport { Callout, Flex } from \"@radix-ui/themes\"\r\nimport { Cross2Icon, InfoCircledIcon } from \"@radix-ui/react-icons\"\r\nimport { IconButton } from \"../Buttons\"\r\nimport { ToastProps } from \"./typings\"\r\nimport { useSeverityColor } from \"../utils\"\r\n\r\nimport styles from \"./Toast.module.sass\"\r\n\r\nconst _Toast = forwardRef<HTMLLIElement, ToastProps>(function Toast(\r\n\t{ title, description, icon, severity = \"primary\", size, onClose, sensitivity, ...rest },\r\n\tref,\r\n) {\r\n\tconst [open, setOpen] = useState(true)\r\n\tconst color = useSeverityColor(severity)\r\n\r\n\tconst handleOpenChange = useCallback(\r\n\t\t(open: boolean) => {\r\n\t\t\tif (!open && onClose) onClose()\r\n\t\t\tsetOpen(open)\r\n\t\t},\r\n\t\t[onClose],\r\n\t)\r\n\r\n\treturn (\r\n\t\t<RadixToast.Root asChild ref={ref} {...rest} open={open} type={sensitivity} onOpenChange={handleOpenChange}>\r\n\t\t\t<Callout.Root className={styles.ToastRoot} variant=\"surface\" color={color} size={size}>\r\n\t\t\t\t<Flex width=\"100%\" align=\"center\" gap=\"4\" justify=\"between\">\r\n\t\t\t\t\t<Flex align=\"center\" gap=\"4\">\r\n\t\t\t\t\t\t<Callout.Icon>{icon || <InfoCircledIcon />}</Callout.Icon>\r\n\t\t\t\t\t\t<Flex direction=\"column\" gap=\"0\">\r\n\t\t\t\t\t\t\t<RadixToast.Title asChild>\r\n\t\t\t\t\t\t\t\t<Callout.Text weight=\"medium\">{title}</Callout.Text>\r\n\t\t\t\t\t\t\t</RadixToast.Title>\r\n\t\t\t\t\t\t\t<RadixToast.Description asChild>\r\n\t\t\t\t\t\t\t\t<Callout.Text weight=\"light\">{description}</Callout.Text>\r\n\t\t\t\t\t\t\t</RadixToast.Description>\r\n\t\t\t\t\t\t</Flex>\r\n\t\t\t\t\t</Flex>\r\n\t\t\t\t\t<RadixToast.Close asChild>\r\n\t\t\t\t\t\t<IconButton aria-label=\"Close\" variant=\"ghost\" size=\"small\" severity={severity}>\r\n\t\t\t\t\t\t\t<Cross2Icon />\r\n\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t</RadixToast.Close>\r\n\t\t\t\t</Flex>\r\n\t\t\t</Callout.Root>\r\n\t\t</RadixToast.Root>\r\n\t)\r\n})\r\n\r\nexport const Toast: FC<ToastProps> = memo(_Toast)\r\n","import { createContext, useContext } from \"react\"\r\nimport { IToastContext } from \"./typings\"\r\n\r\nexport const ToastContext = createContext({} as IToastContext)\r\n\r\nexport const useToast = (): IToastContext => {\r\n\tconst context = useContext(ToastContext)\r\n\r\n\tif (!context) {\r\n\t\tthrow new Error(\"useToast must be used within a ToastProvider\")\r\n\t}\r\n\r\n\treturn context\r\n}\r\n","import { memo, useState, FC, useMemo, useCallback, useEffect } from \"react\"\r\nimport { IToastContext, SimpleToastProps, ToastContextProviderProps, ToastProps } from \"./typings\"\r\nimport { Toast } from \"./Toast\"\r\nimport { ToastProvider as RadixToastProvider, ToastViewport } from \"@radix-ui/react-toast\"\r\nimport { ToastContext } from \"./ToastContext\"\r\nimport styles from \"./Toast.module.sass\"\r\nimport classNames from \"classnames\"\r\n\r\ninterface ToastArgs extends ToastProps {\r\n\tid: string\r\n\ttimeout: NodeJS.Timeout\r\n}\r\n\r\n// average reading speed is 240 words per minute\r\nconst WORDS_PER_SECOND = 240 / 60\r\n// 5 seconds is the minimum duration for a toast\r\nconst MIN_DURATION = 5000\r\n\r\nenum CloseReason {\r\n\tManual,\r\n\tTimeout,\r\n}\r\n\r\nconst calculatedDuration = (toast: ToastProps) => {\r\n\t// if the user has passed a duration valid, use that instead\r\n\tif (toast.duration && toast.duration >= MIN_DURATION) return toast.duration\r\n\r\n\t// error messages should be displayed for longer\r\n\tconst severityFactor = toast.severity === \"danger\" ? 1.5 : 1\r\n\t// count the number of words in the title and description\r\n\tconst words = toast.description.split(\" \").length + toast.title.split(\" \").length\r\n\t// calculate the duration based on the number of words and the severity\r\n\tconst duration = (MIN_DURATION + words / WORDS_PER_SECOND) * severityFactor\r\n\treturn duration\r\n}\r\n\r\n/** Toasts will be displayed in the top-right handle corner of the screen */\r\nexport const ToastProvider: FC<ToastContextProviderProps> = memo(function ToastContextProvider({\r\n\tchildren,\r\n\t// Use this class to change where the viewport for the toasts should be\r\n\tclassName,\r\n\thotkey,\r\n\t...rest\r\n}: ToastContextProviderProps) {\r\n\tconst [toasts, setToasts] = useState<ToastArgs[]>([])\r\n\r\n\tconst handleCloseToast = useCallback((id: string, reason: CloseReason, callback?: () => void) => {\r\n\t\tsetToasts((prevToasts) => {\r\n\t\t\tconst toast = prevToasts.find((toast) => toast.id === id)\r\n\t\t\t// clear the timeout if the toast is being closed manually\r\n\t\t\tif (toast && reason === CloseReason.Manual) clearTimeout(toast.timeout)\r\n\r\n\t\t\treturn prevToasts.filter((toast) => toast.id !== id)\r\n\t\t})\r\n\r\n\t\tif (callback) callback()\r\n\t}, [])\r\n\r\n\tconst toastContextValue = useMemo<IToastContext>(() => {\r\n\t\tlet counter = 0\r\n\r\n\t\tconst showToast = (toastProps: ToastProps) => {\r\n\t\t\tconst duration = calculatedDuration(toastProps)\r\n\t\t\tconst id = counter.toString()\r\n\t\t\tcounter += 1 // increment the counter so that ids are unique\r\n\r\n\t\t\t// manually close the toast after the duration has passed\r\n\t\t\t// this is necessary because the duration prop is reset on re-render\r\n\t\t\tconst pending = setTimeout(() => handleCloseToast(id, CloseReason.Timeout, toastProps.onClose), duration)\r\n\r\n\t\t\tsetToasts((prevToasts) => [...prevToasts, { ...toastProps, timeout: pending, duration, id }])\r\n\t\t}\r\n\t\tconst showPrimary = (toastProps: SimpleToastProps) => showToast({ ...toastProps, severity: \"primary\" })\r\n\t\tconst showSuccess = (toastProps: SimpleToastProps) => showToast({ ...toastProps, severity: \"success\" })\r\n\t\tconst showError = (toastProps: SimpleToastProps) => showToast({ ...toastProps, severity: \"danger\" })\r\n\t\tconst showInfo = (toastProps: SimpleToastProps) => showToast({ ...toastProps, severity: \"info\" })\r\n\r\n\t\treturn {\r\n\t\t\tshowToast,\r\n\t\t\tshowPrimary,\r\n\t\t\tshowSuccess,\r\n\t\t\tshowError,\r\n\t\t\tshowInfo,\r\n\t\t}\r\n\t}, [handleCloseToast])\r\n\r\n\t// clear all timeouts when the component unmounts\r\n\tuseEffect(() => {\r\n\t\treturn () => {\r\n\t\t\tfor (const { timeout } of toasts) clearTimeout(timeout)\r\n\t\t}\r\n\t\t// only run this effect when the component unmounts\r\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\r\n\t}, [])\r\n\r\n\treturn (\r\n\t\t<ToastContext.Provider value={toastContextValue}>\r\n\t\t\t<RadixToastProvider {...rest}>\r\n\t\t\t\t{children}\r\n\r\n\t\t\t\t<ToastViewport className={classNames(className, styles.ToastViewport)} hotkey={hotkey} />\r\n\r\n\t\t\t\t{toasts.map(({ id, onClose, ...toastProps }) => (\r\n\t\t\t\t\t<Toast key={id} {...toastProps} onClose={() => handleCloseToast(id, CloseReason.Manual, onClose)} />\r\n\t\t\t\t))}\r\n\t\t\t</RadixToastProvider>\r\n\t\t</ToastContext.Provider>\r\n\t)\r\n})\r\n","import { ElementRef, FC, ForwardRefExoticComponent, forwardRef, memo } from \"react\"\nimport { MarginProps, Text as RadixText } from \"@radix-ui/themes\"\nimport classNames from \"classnames\"\nimport styles from \"./ Text.module.sass\"\nimport { Severity } from \"../typings\"\nimport { useSeverityColor } from \"..\"\n\ntype RadixTextProps = typeof RadixText extends ForwardRefExoticComponent<infer P> ? P : never\n\nexport type TextProps = Omit<RadixTextProps, keyof MarginProps | \"ref\" | \"asChild\" | \"color\"> & {\n\t/** If true, the text will not wrap, but instead will truncate with a text overflow ellipsis.\n\t * @default false\n\t */\n\tnoWrap?: boolean\n\tseverity?: Severity\n\t/** @default span */\n\tas?: RadixTextProps[\"as\"]\n\t/** @default 3 */\n\tsize?: RadixTextProps[\"size\"]\n}\n\n/**\n * A foundational text primitive.\n *\n * Use the `as` prop to render text as a `p`, `label`, `div` or `span`. This prop is purely semantic and does not alter visual appearance.\n *\n * For the complete documentation, refer to https://www.radix-ui.com/themes/docs/components/text.\n */\nexport const Text: FC<TextProps> = memo(\n\tforwardRef<ElementRef<\"span\">, TextProps>(({ className, noWrap, severity, as, ...props }, ref) => {\n\t\tconst color = useSeverityColor(severity)\n\t\treturn (\n\t\t\t<RadixText\n\t\t\t\tref={ref}\n\t\t\t\t// bypassing incorrect TS error\n\t\t\t\tas={as as undefined}\n\t\t\t\tclassName={classNames(className, { [styles.noWrap!]: noWrap })}\n\t\t\t\tcolor={color}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t)\n\t}),\n)\n","import { Theme } from \"@radix-ui/themes\"\r\nimport { ComponentProps, FC, forwardRef, memo } from \"react\"\r\n// css file contains updates to the default radix tokens\r\nimport \"./DefaultTheme.css\"\r\n\r\nexport type DefaultThemeProps = ComponentProps<typeof Theme>\r\n\r\nexport const DefaultTheme: FC<DefaultThemeProps> = memo(\r\n\tforwardRef<HTMLDivElement, DefaultThemeProps>((props, ref) => {\r\n\t\tconst { panelBackground = \"solid\", radius = \"full\", ...rest } = props\r\n\t\treturn <Theme panelBackground={panelBackground} radius={radius} ref={ref} {...rest} />\r\n\t}),\r\n)\r\n","import { FC, forwardRef, memo } from \"react\"\r\nimport { Separator as RadixSeparator, Text, Flex } from \"@radix-ui/themes\"\r\nimport { SeparatorProps } from \"./typings.ts\"\r\nimport { useResponsiveMapping, useSeverityColor } from \"../utils.ts\"\r\n\r\n/** This mapping is required to ensure that size \"4\" of the Radix-UI Separator has the same functionality in this\r\n * Separator component, that is, to fill all space in its container */\r\nconst SeparatorSizeMapping: Record<\"1\" | \"2\" | \"3\" | \"4\", \"max-content\" | \"100%\"> = {\r\n\t\"1\": \"max-content\",\r\n\t\"2\": \"max-content\",\r\n\t\"3\": \"max-content\",\r\n\t\"4\": \"100%\",\r\n}\r\n\r\nconst _Separator = forwardRef(function Separator({\r\n\tseverity = \"info\",\r\n\tweight = \"light\",\r\n\tgap = \"1\",\r\n\ttext,\r\n\torientation = \"horizontal\",\r\n\tsize,\r\n\t...rest\r\n}: SeparatorProps) {\r\n\tconst computedSizing = useResponsiveMapping(size, SeparatorSizeMapping)\r\n\tconst severityColor = useSeverityColor(severity)\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<Flex\r\n\t\t\t\twidth={orientation === \"horizontal\" ? computedSizing : \"max-content\"}\r\n\t\t\t\theight={orientation === \"vertical\" ? computedSizing : \"max-content\"}\r\n\t\t\t\tdirection={orientation === \"vertical\" ? \"column\" : \"row\"}\r\n\t\t\t\talign=\"center\"\r\n\t\t\t\tgap={gap}\r\n\t\t\t>\r\n\t\t\t\t<RadixSeparator size={size} orientation={orientation} color={severityColor} {...rest} />\r\n\t\t\t\t{text && (\r\n\t\t\t\t\t<>\r\n\t\t\t\t\t\t<Text as=\"span\" size=\"1\" weight={weight} color={severityColor}>\r\n\t\t\t\t\t\t\t{text}\r\n\t\t\t\t\t\t</Text>\r\n\t\t\t\t\t\t<RadixSeparator size={size} orientation={orientation} color={severityColor} {...rest} />\r\n\t\t\t\t\t</>\r\n\t\t\t\t)}\r\n\t\t\t</Flex>\r\n\t\t</>\r\n\t)\r\n})\r\n\r\nexport const Separator: FC<SeparatorProps> = memo(_Separator)\r\n"],"names":["hasOwn","classNames","classes","i","arg","argType","inner","key","module","useResponsiveMapping","value","mapping","useMemo","breakpoint","nonThemeSeverityMapping","useSeverityColor","severity","theme","useThemeContext","_Badge","forwardRef","className","color","children","rest","ref","severityColor","jsx","RadixBadge","Badge","memo","hoverEffectClassNameMapping","styles","SizeMapping","ButtonGroupContext","createContext","useButtonGroupContext","useContext","_Button","props","buttonGroupContext","type","fluid","size","hoverEffects","variant","hoverEffectClasses","hoverEffect","RadixButton","Button","React","RadixIconButton","IconButton","GhostVariantSizeToGapMapping","_ButtonGroup","merged","gap","direction","ghostSize","mergedAutoGap","Flex","ButtonGroup","ButtonListBorder","border","before","after","radixSize","ret","jsxs","Card","Inset","Box","ButtonListRoot","borderProps","numChildren","Children","child","Separator","ButtonListItem","ButtonList","DialogContent","title","description","content","closeDialog","Dialog","Cross1Icon","onOpen","defaultOpen","onCloseInterrupt","contentProps","open","setOpen","useState","handleOpenChange","useCallback","next","options","RadixDialog","Title","AlertDialog","AlertDialogContent","actionText","cancelText","onAction","onCancel","helpers","RadixAlertDialog","initialState","AlertDialogProvider","state","setState","openDialog","useAlertDialog","Item","itemContent","closeOnSelect","onSelect","handleSelect","event","RadixDropdownMenu","Root","onOpenChange","modal","trigger","label","ItemGroup","separatorBelow","separatorAbove","Fragment","SubMenu","DropdownMenu","_Select","itemSeverity","placeholder","side","items","id","mappedSize","itemSeverityColor","createElement","RadixSelect","Select","MultiSelectItem","checked","Checkbox","SELECT_ALL_VALUE","MultiSelect","onValueChange","disabled","radius","name","optionsMap","o","displayValue","v","close","handleValueChange","selected","useEffect","option","_Switch","icon","defaultChecked","onCheckedChange","fallbackRef","useRef","setChecked","iconContainer","setIconContainer","useLayoutEffect","usedRef","_a","_checked","RadixSwitch","Portal","Switch","_Sidebar","containerSelector","overlay","resizable","minWidth","maxWidth","isRight","isLeft","container","setContainer","selector","tempContainer","RadixDialogPrimitive","Resizable","DragHandleDots2Icon","Sidebar","_Input","leftSlot","rightSlot","showInputLength","computedSize","displayInputLength","valueAsString","RadixTextField","Text","Input","_Popover","RadixPopover","Popover","DEFAULT_MIN_WIDTH","TRANSITION_DURATION","LeftAndRightPanels","showLeft","leftPanel","leftMinWidth","showRight","rightPanel","rightMinWidth","resizeable","wrapperRef","leftPanelRef","leftPanelWidth","setLeftPanelWidth","leftPanelMaxWidth","setLeftPanelMaxWidth","rightPanelRef","rightPanelWidth","setRightPanelWidth","rightPanelMaxWidth","setRightPanelMaxWidth","handleResizePanel","resizedPanelWidth","setResizedPanelWidth","setOtherPanelMaxWidth","_event","_dir","_ref","delta","newWidth","handleResizeLeftPanel","handleResizeRightPanel","handleResizeOtherPanelOnPanelOpen","openingPanelWidth","openingPanelMinWidth","setOpeningPanelWidth","setOpeningPanelMaxWidth","otherPanelWidth","otherPanelOpen","setOtherPanelWidth","newOpeningPanelWidth","newOtherPanelMaxWidth","handleResizeLeftPanelOnRightPanelOpen","handleResizeRightPanelOnLeftPanelOpen","handleResizeOtherPanelOnPanelClose","handleResizeLeftPanelOnRightPanelClose","handleResizeRightPanelOnLeftPanelClose","resizeObserverCallback","_b","_c","_d","resizeObserver","leftPanelTransitionStyles","rightPanelTransitionStyles","Transition","_TextArea","inputLengthTemplate","resize","infoColor","displayInputLengthValue","template","RadixTextArea","TextArea","_ToggleGroup","loop","rovingFocus","defaultValue","ToggleGroup","_Toast","onClose","sensitivity","RadixToast","Callout","InfoCircledIcon","Cross2Icon","Toast","ToastContext","useToast","context","WORDS_PER_SECOND","MIN_DURATION","calculatedDuration","toast","severityFactor","words","ToastProvider","hotkey","toasts","setToasts","handleCloseToast","reason","callback","prevToasts","toastContextValue","counter","showToast","toastProps","duration","pending","timeout","RadixToastProvider","ToastViewport","noWrap","as","RadixText","DefaultTheme","panelBackground","Theme","SeparatorSizeMapping","_Separator","weight","text","orientation","computedSizing","RadixSeparator"],"mappings":"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","x_google_ignoreList":[0]}
|