@voxel51/voodo 0.0.38 → 0.0.39
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/dist/components/Icons/Icon.d.ts.map +1 -1
- package/dist/components/Menu/styles.d.ts +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts +3 -1
- package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/Tree/TreeBody.d.ts +37 -0
- package/dist/components/Tree/TreeBody.d.ts.map +1 -0
- package/dist/components/{TreeSelect/TreeSelectNode.d.ts → Tree/TreeItem.d.ts} +7 -6
- package/dist/components/Tree/TreeItem.d.ts.map +1 -0
- package/dist/components/{TreeSelect/TreeSelectSearchInput.d.ts → Tree/TreeSearchInput.d.ts} +5 -5
- package/dist/components/Tree/TreeSearchInput.d.ts.map +1 -0
- package/dist/components/Tree/TreeSelect.d.ts.map +1 -0
- package/dist/components/{TreeSelect → Tree}/TreeSelectPanel.d.ts +8 -1
- package/dist/components/Tree/TreeSelectPanel.d.ts.map +1 -0
- package/dist/components/Tree/TreeSelectTrigger.d.ts.map +1 -0
- package/dist/components/Tree/TreeView.d.ts +32 -0
- package/dist/components/Tree/TreeView.d.ts.map +1 -0
- package/dist/components/Tree/index.d.ts +5 -0
- package/dist/components/Tree/index.d.ts.map +1 -0
- package/dist/components/{TreeSelect → Tree}/tree.d.ts +1 -1
- package/dist/components/Tree/tree.d.ts.map +1 -0
- package/dist/components/{TreeSelect → Tree}/types.d.ts +99 -34
- package/dist/components/Tree/types.d.ts.map +1 -0
- package/dist/{util → components/Tree}/useTree.d.ts +13 -6
- package/dist/components/Tree/useTree.d.ts.map +1 -0
- package/dist/components/Tree/useTreeViewState.d.ts +59 -0
- package/dist/components/Tree/useTreeViewState.d.ts.map +1 -0
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +2580 -2400
- package/dist/index.js.map +1 -1
- package/dist/types/icons.d.ts +4 -0
- package/dist/types/icons.d.ts.map +1 -1
- package/dist/voodo.css +1 -1
- package/package.json +1 -1
- package/dist/components/TreeSelect/TreeSelect.d.ts.map +0 -1
- package/dist/components/TreeSelect/TreeSelectNode.d.ts.map +0 -1
- package/dist/components/TreeSelect/TreeSelectPanel.d.ts.map +0 -1
- package/dist/components/TreeSelect/TreeSelectSearchInput.d.ts.map +0 -1
- package/dist/components/TreeSelect/TreeSelectTrigger.d.ts.map +0 -1
- package/dist/components/TreeSelect/index.d.ts +0 -4
- package/dist/components/TreeSelect/index.d.ts.map +0 -1
- package/dist/components/TreeSelect/tree.d.ts.map +0 -1
- package/dist/components/TreeSelect/types.d.ts.map +0 -1
- package/dist/util/useTree.d.ts.map +0 -1
- /package/dist/components/{TreeSelect → Tree}/TreeSelect.d.ts +0 -0
- /package/dist/components/{TreeSelect → Tree}/TreeSelectTrigger.d.ts +0 -0
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/components/Icons/DragHandle.tsx","../src/components/Icons/Spinner.tsx","../src/types/align.ts","../src/types/anchor.ts","../src/types/element.ts","../src/types/color.ts","../src/types/zIndex.ts","../src/types/heading.ts","../src/types/icons.ts","../src/types/justify.ts","../src/types/orientation.ts","../src/types/radius.ts","../src/types/shadow.ts","../src/types/size.ts","../src/types/spacing.ts","../src/types/text.ts","../src/types/transition.ts","../src/types/variant.ts","../src/util/classes.ts","../src/components/Spinner/Spinner.tsx","../src/img/AI.svg?react","../src/img/Activity.svg?react","../src/img/Add.svg?react","../src/img/Annotate.svg?react","../src/img/ArrowDown.svg?react","../src/img/ArrowLeft.svg?react","../src/img/ArrowRight.svg?react","../src/img/ArrowUp.svg?react","../src/img/ArrowUpRight.svg?react","../src/img/Blocks.svg?react","../src/img/Boxes.svg?react","../src/img/CalendarClock.svg?react","../src/img/CaretDown.svg?react","../src/img/Check.svg?react","../src/img/Checkbox.svg?react","../src/img/Checklist.svg?react","../src/img/ChevronBottom.svg?react","../src/img/ChevronLeft.svg?react","../src/img/ChevronRight.svg?react","../src/img/ChevronTop.svg?react","../src/img/Circle.svg?react","../src/img/CircleUser.svg?react","../src/img/Close.svg?react","../src/img/Cloud.svg?react","../src/img/CloudCog.svg?react","../src/img/Code.svg?react","../src/img/Cog.svg?react","../src/img/Contact.svg?react","../src/img/ContentCopy.svg?react","../src/img/Database.svg?react","../src/img/DateRange.svg?react","../src/img/Delete.svg?react","../src/img/Detection.svg?react","../src/img/Download.svg?react","../src/img/Drag.svg?react","../src/img/Draw.svg?react","../src/img/Edit.svg?react","../src/img/Embeddings.svg?react","../src/img/Enter.svg?react","../src/img/Error.svg?react","../src/img/ExitWorkspace.svg?react","../src/img/ExternalLink.svg?react","../src/img/FileClock.svg?react","../src/img/FineTune.svg?react","../src/img/Fingerprint.svg?react","../src/img/Fullscreen.svg?react","../src/img/GridView.svg?react","../src/img/History.svg?react","../src/img/IdCard.svg?react","../src/img/ImageSearch.svg?react","../src/img/Info.svg?react","../src/img/Insights.svg?react","../src/img/Inspect.svg?react","../src/img/JSON.svg?react","../src/img/Key.svg?react","../src/img/KeyRound.svg?react","../src/img/KeySquare.svg?react","../src/img/Label.svg?react","../src/img/Lock.svg?react","../src/img/Logs.svg?react","../src/img/Menu.svg?react","../src/img/MoreHorizontal.svg?react","../src/img/MoreVertical.svg?react","../src/img/Move.svg?react","../src/img/NotebookPen.svg?react","../src/img/Notes.svg?react","../src/img/Orchestrator.svg?react","../src/img/Pencil.svg?react","../src/img/Pin.svg?react","../src/img/Polyline.svg?react","../src/img/Puzzle.svg?react","../src/img/Radio.svg?react","../src/img/Redo.svg?react","../src/img/Refresh.svg?react","../src/img/Remove.svg?react","../src/img/Review.svg?react","../src/img/Search.svg?react","../src/img/Server.svg?react","../src/img/Settings.svg?react","../src/img/ShieldCheck.svg?react","../src/img/Slider.svg?react","../src/img/Sliders.svg?react","../src/img/Tag.svg?react","../src/img/Text.svg?react","../src/img/Toggle.svg?react","../src/img/Undo.svg?react","../src/img/UnfoldMore.svg?react","../src/img/Unlock.svg?react","../src/img/Unsupported.svg?react","../src/img/Upload.svg?react","../src/img/User.svg?react","../src/img/Users.svg?react","../src/img/UsersRound.svg?react","../src/img/VAL.svg?react","../src/img/Warning.svg?react","../src/img/Waypoints.svg?react","../src/img/Workflow.svg?react","../src/img/Workspaces.svg?react","../src/img/Zap.svg?react","../src/components/Icons/Icon.tsx","../src/components/Icons/IconWrapper.tsx","../src/styles/text.ts","../src/components/Text/Text.tsx","../src/components/ToastContainer/ToastContainer.tsx","../src/styles/radius.ts","../src/components/ActivityToast/ActivityToast.tsx","../src/components/Button/Button.tsx","../src/styles/shadow.ts","../src/components/Card/Card.tsx","../src/components/Stack/Stack.tsx","../src/components/Card/RichCard.tsx","../src/util/type-check.ts","../src/components/UnsetHint/UnsetHint.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Clickable/Clickable.tsx","../src/util/useControllableState.ts","../src/util/useDisclosure.ts","../src/components/Collapsible/Collapsible.tsx","../src/components/Menu/MenuCheckItem.tsx","../src/components/Menu/MenuIconTextItem.tsx","../src/components/Menu/MenuSectionTitle.tsx","../src/components/Menu/MenuSeparator.tsx","../src/components/Menu/MenuTextItem.tsx","../src/components/Menu/styles.ts","../src/components/ContextMenu/ContextMenu.tsx","../src/components/Input/styles.ts","../src/components/Datepicker/DatepickerIconButton.tsx","../src/components/Datepicker/DatepickerInput.tsx","../src/components/Datepicker/DatePicker.tsx","../src/components/Divider/Divider.tsx","../src/util/useLatest.ts","../src/util/useDragDelta.ts","../src/util/useElementSize.ts","../src/util/useResizableDrawer.ts","../src/components/Drawer/Drawer.tsx","../src/components/Dropdown/Dropdown.tsx","../src/components/Dropdown/DropdownTrigger.tsx","../src/components/EmptyState/EmptyState.tsx","../src/components/FormField/FormField.tsx","../src/components/FormFieldGroup/FormFieldGroup.tsx","../src/components/Heading/Heading.tsx","../src/components/ImageList/ImageList.tsx","../src/components/Input/InputIcon.tsx","../src/components/Input/Input.tsx","../src/components/ListItem/ListItem.tsx","../src/components/Pill/Pill.tsx","../src/components/Icons/RadioDot.tsx","../src/components/Radio/Radio.tsx","../src/util/random.ts","../src/components/Radio/RadioGroup.tsx","../src/components/RichButton/RichButton.tsx","../src/components/RichButtonGroup/RichButtonGroup.tsx","../src/components/RichList/SortableListItem.tsx","../src/components/RichList/RichList.tsx","../src/components/Select/Option.tsx","../src/components/Select/Select.tsx","../src/components/Slider/SliderKnob.tsx","../src/util/math.ts","../src/components/Slider/SliderBar.tsx","../src/components/Slider/SliderLabels.tsx","../src/util/useDebouncedCallback.ts","../src/util/validators.ts","../src/components/Slider/Slider.tsx","../src/components/Table/Table.tsx","../src/components/TextArea/TextArea.tsx","../src/components/TextBadge/TextBadge.tsx","../src/components/Toast/Toast.tsx","../src/components/Toggle/Toggle.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/ToggleSwitch/ToggleSwitch.tsx","../src/util/useDraggable.ts","../src/components/Toolbar/context.ts","../src/components/Toolbar/Toolbar.tsx","../src/components/Toolbar/ToolbarAction.tsx","../src/components/Toolbar/ToolbarGroup.tsx","../src/components/TreeSelect/tree.ts","../src/util/useTree.ts","../src/components/TreeSelect/TreeSelectNode.tsx","../src/components/TreeSelect/TreeSelectSearchInput.tsx","../src/components/TreeSelect/TreeSelectPanel.tsx","../src/components/TreeSelect/TreeSelectTrigger.tsx","../src/components/TreeSelect/TreeSelect.tsx","../src/theme/tokens/transitions.ts"],"sourcesContent":["import clsx from \"clsx\";\nimport type { FC } from \"react\";\n\nimport { IconProps } from \"@/components/Icons/types\";\n\n/**\n * A drag-handle icon.\n *\n * @param className `class` overrides to apply to the component.\n * @param props Additional HTML properties to apply to the component.\n *\n * @internal For use by the {@link ListItem} component.\n */\nexport const DragHandleIcon: FC<IconProps> = ({ className, ...props }) => {\n return (\n <svg\n className={clsx(className)}\n width=\"8\"\n height=\"13\"\n viewBox=\"0 0 8 13\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M1.6 13C1.16 13 0.783333 12.8409 0.47 12.5227C0.156667 12.2044 0 11.8219 0 11.375C0 10.9281 0.156667 10.5456 0.47 10.2273C0.783333 9.90911 1.16 9.75 1.6 9.75C2.04 9.75 2.41667 9.90911 2.73 10.2273C3.04333 10.5456 3.2 10.9281 3.2 11.375C3.2 11.8219 3.04333 12.2044 2.73 12.5227C2.41667 12.8409 2.04 13 1.6 13ZM6.4 13C5.96 13 5.58333 12.8409 5.27 12.5227C4.95667 12.2044 4.8 11.8219 4.8 11.375C4.8 10.9281 4.95667 10.5456 5.27 10.2273C5.58333 9.90911 5.96 9.75 6.4 9.75C6.84 9.75 7.21667 9.90911 7.53 10.2273C7.84333 10.5456 8 10.9281 8 11.375C8 11.8219 7.84333 12.2044 7.53 12.5227C7.21667 12.8409 6.84 13 6.4 13ZM1.6 8.125C1.16 8.125 0.783333 7.96589 0.47 7.64766C0.156667 7.32943 0 6.94687 0 6.5C0 6.05312 0.156667 5.67057 0.47 5.35234C0.783333 5.03411 1.16 4.875 1.6 4.875C2.04 4.875 2.41667 5.03411 2.73 5.35234C3.04333 5.67057 3.2 6.05312 3.2 6.5C3.2 6.94687 3.04333 7.32943 2.73 7.64766C2.41667 7.96589 2.04 8.125 1.6 8.125ZM6.4 8.125C5.96 8.125 5.58333 7.96589 5.27 7.64766C4.95667 7.32943 4.8 6.94687 4.8 6.5C4.8 6.05312 4.95667 5.67057 5.27 5.35234C5.58333 5.03411 5.96 4.875 6.4 4.875C6.84 4.875 7.21667 5.03411 7.53 5.35234C7.84333 5.67057 8 6.05312 8 6.5C8 6.94687 7.84333 7.32943 7.53 7.64766C7.21667 7.96589 6.84 8.125 6.4 8.125ZM1.6 3.25C1.16 3.25 0.783333 3.09089 0.47 2.77266C0.156667 2.45443 0 2.07187 0 1.625C0 1.17812 0.156667 0.795573 0.47 0.477344C0.783333 0.159115 1.16 0 1.6 0C2.04 0 2.41667 0.159115 2.73 0.477344C3.04333 0.795573 3.2 1.17812 3.2 1.625C3.2 2.07187 3.04333 2.45443 2.73 2.77266C2.41667 3.09089 2.04 3.25 1.6 3.25ZM6.4 3.25C5.96 3.25 5.58333 3.09089 5.27 2.77266C4.95667 2.45443 4.8 2.07187 4.8 1.625C4.8 1.17812 4.95667 0.795573 5.27 0.477344C5.58333 0.159115 5.96 0 6.4 0C6.84 0 7.21667 0.159115 7.53 0.477344C7.84333 0.795573 8 1.17812 8 1.625C8 2.07187 7.84333 2.45443 7.53 2.77266C7.21667 3.09089 6.84 3.25 6.4 3.25Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n\nDragHandleIcon.displayName = \"DragHandleIcon\";\n","import type { FC } from \"react\";\n\nimport { IconProps } from \"@/components/Icons/types\";\n\nexport const SpinnerIcon: FC<IconProps> = ({ className, ...props }) => (\n <svg\n className={className}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n {...props}\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n);\n\nSpinnerIcon.displayName = \"SpinnerIcon\";\n","export enum Align {\n Baseline = \"baseline\",\n Center = \"center\",\n End = \"end\",\n Start = \"start\",\n}\n","export enum Anchor {\n TopLeft = \"top-left\",\n Top = \"top\",\n TopRight = \"top-right\",\n Right = \"right\",\n BottomRight = \"bottom-right\",\n Bottom = \"bottom\",\n BottomLeft = \"bottom-left\",\n Left = \"left\",\n}\n\nexport default Anchor;\n","export enum ElementState {\n Active = \"data-active\",\n AutoFocus = \"data-autofocus\",\n Checked = \"data-checked\",\n Disabled = \"disabled\",\n Dragging = \"data-dragging\",\n Focus = \"data-focus\",\n Hover = \"hover\",\n None = \"none\",\n Open = \"data-open\",\n Selected = \"data-selected\",\n}\n\nexport const withElementState = (\n cssClass: string,\n state: ElementState = ElementState.None\n): string => {\n if (state === ElementState.None) {\n return cssClass;\n }\n\n return `${state}:${cssClass}`;\n};\n","import { ElementState, withElementState } from \"@/types/element\";\n\nexport enum ActionColor {\n PrimaryDefault = \"action-primary-primary\",\n PrimaryHover = \"action-primary-secondary\",\n PrimaryFocus = \"action-primary-tertiary\",\n PrimaryText = \"action-primary-text\",\n SecondaryDefault = \"action-secondary-primary\",\n SecondaryHover = \"action-secondary-secondary\",\n SecondaryFocus = \"action-secondary-tertiary\",\n SecondaryText = \"action-secondary-text\",\n SuccessDefault = \"action-success-primary\",\n SuccessHover = \"action-success-secondary\",\n SuccessFocus = \"action-success-tertiary\",\n SuccessText = \"action-success-text\",\n DangerDefault = \"action-danger-primary\",\n DangerHover = \"action-danger-secondary\",\n DangerFocus = \"action-danger-tertiary\",\n DangerText = \"action-danger-text\",\n IconDefault = \"action-icon-default\",\n}\n\nexport enum BackgroundColor {\n Transparent = \"bg-transparent\",\n Background = \"bg-background\",\n Card1 = \"bg-card-1\",\n Card2 = \"bg-card-2\",\n CardElevated = \"bg-card-elevated\",\n Muted = \"bg-muted\",\n Popover = \"bg-popover\",\n Selected = \"bg-selected\",\n Secondary = \"bg-secondary\",\n}\n\nexport enum BorderColor {\n Default = \"border-default\",\n Strong = \"border-strong\",\n Hover = \"border-hover\",\n Focus = \"border-focus\",\n Subtle = \"border-subtle\",\n Active = \"border-active\",\n Error = \"border-error\",\n Success = \"border-success\",\n Warning = \"border-warning\",\n Disabled = \"border-disabled\",\n CardElevated = \"bg-card-elevated\",\n}\n\nexport enum BrandColor {\n Primary = \"brand-primary\",\n Accent = \"brand-accent\",\n}\n\nexport enum IconColor {\n Default = \"icon-default\",\n Subtle = \"icon-subtle\",\n Emphasis = \"icon-emphasis\",\n Muted = \"icon-muted\",\n Disabled = \"icon-disabled\",\n Decorative = \"icon-decorative\",\n Brand = \"icon-brand\",\n BrandAccent = \"icon-brand-accent\",\n Success = \"icon-success\",\n Destructive = \"icon-destructive\",\n Warning = \"icon-warning\",\n Info = \"icon-info\",\n}\n\nexport enum SemanticColor {\n Success = \"semantic-success\",\n Destructive = \"semantic-destructive\",\n Info = \"semantic-info\",\n Warning = \"semantic-warning\",\n}\n\nexport enum StatusColor {\n Approved = \"status-approved\",\n Review = \"status-review\",\n Progress = \"status-progress\",\n Default = \"status-default\",\n Failed = \"status-failed\",\n}\n\nexport enum TextColor {\n Fg = \"text-fg\",\n Primary = \"text-primary\",\n Secondary = \"text-secondary\",\n Tertiary = \"text-tertiary\",\n Muted = \"text-muted\",\n Placeholder = \"text-placeholder\",\n Success = \"text-success\",\n Destructive = \"text-destructive\",\n Warning = \"text-warning\",\n Info = \"text-info\",\n}\n\nexport type Color =\n | ActionColor\n | BackgroundColor\n | BrandColor\n | IconColor\n | SemanticColor\n | StatusColor\n | TextColor;\n\nconst textColorMap: Record<Color, string> = {\n [ActionColor.IconDefault]: \"text-content-text-secondary\",\n [ActionColor.PrimaryDefault]: \"text-action-primary-primary\",\n [ActionColor.PrimaryHover]: \"text-action-primary-secondary\",\n [ActionColor.PrimaryFocus]: \"text-action-primary-tertiary\",\n [ActionColor.PrimaryText]: \"text-action-primary-text\",\n [ActionColor.SecondaryDefault]: \"text-action-secondary-primary\",\n [ActionColor.SecondaryHover]: \"text-action-secondary-secondary\",\n [ActionColor.SecondaryFocus]: \"text-action-secondary-tertiary\",\n [ActionColor.SecondaryText]: \"text-action-secondary-text\",\n [ActionColor.SuccessDefault]: \"text-action-success-primary\",\n [ActionColor.SuccessHover]: \"text-action-success-secondary\",\n [ActionColor.SuccessFocus]: \"text-action-success-tertiary\",\n [ActionColor.SuccessText]: \"text-action-success-text\",\n [ActionColor.DangerDefault]: \"text-action-danger-primary\",\n [ActionColor.DangerHover]: \"text-action-danger-secondary\",\n [ActionColor.DangerFocus]: \"text-action-danger-tertiary\",\n [ActionColor.DangerText]: \"text-action-danger-text\",\n\n [BackgroundColor.Background]: \"text-content-bg-background\",\n [BackgroundColor.Card1]: \"text-content-bg-card-1\",\n [BackgroundColor.Card2]: \"text-content-bg-card-2\",\n [BackgroundColor.CardElevated]: \"text-content-bg-card-elevated\",\n [BackgroundColor.Muted]: \"text-content-bg-muted\",\n [BackgroundColor.Popover]: \"text-content-bg-popover\",\n [BackgroundColor.Secondary]: \"text-content-bg-secondary\",\n [BackgroundColor.Selected]: \"text-content-bg-selected\",\n [BackgroundColor.Transparent]: \"text-transparent\",\n\n [BrandColor.Accent]: \"text-brand-accent\",\n [BrandColor.Primary]: \"text-brand-primary\",\n\n [IconColor.Brand]: \"text-content-icon-brand\",\n [IconColor.BrandAccent]: \"text-content-icon-brand-accent\",\n [IconColor.Decorative]: \"text-content-icon-decorative\",\n [IconColor.Default]: \"text-content-icon-default\",\n [IconColor.Destructive]: \"text-content-icon-destructive\",\n [IconColor.Disabled]: \"text-content-icon-disabled\",\n [IconColor.Emphasis]: \"text-content-icon-emphasis\",\n [IconColor.Info]: \"text-content-icon-info\",\n [IconColor.Muted]: \"text-content-icon-muted\",\n [IconColor.Subtle]: \"text-content-icon-subtle\",\n [IconColor.Success]: \"text-content-icon-success\",\n [IconColor.Warning]: \"text-content-icon-warning\",\n\n [SemanticColor.Destructive]: \"text-semantic-destructive\",\n [SemanticColor.Info]: \"text-semantic-info\",\n [SemanticColor.Success]: \"text-semantic-success\",\n [SemanticColor.Warning]: \"text-semantic-warning\",\n\n [StatusColor.Approved]: \"text-content-status-approved\",\n [StatusColor.Default]: \"text-content-status-default\",\n [StatusColor.Failed]: \"text-content-status-failed\",\n [StatusColor.Progress]: \"text-content-status-progress\",\n [StatusColor.Review]: \"text-content-status-review\",\n\n [TextColor.Destructive]: \"text-content-text-destructive\",\n [TextColor.Fg]: \"text-content-text-fg\",\n [TextColor.Info]: \"text-content-text-info\",\n [TextColor.Muted]: \"text-content-text-muted\",\n [TextColor.Placeholder]: \"text-content-text-placeholder\",\n [TextColor.Primary]: \"text-content-text-primary\",\n [TextColor.Secondary]: \"text-content-text-secondary\",\n [TextColor.Success]: \"text-content-text-success\",\n [TextColor.Tertiary]: \"text-content-text-tertiary\",\n [TextColor.Warning]: \"text-content-text-warning\",\n};\n\nconst backgroundColorMap: Record<Color, string> = {\n [BackgroundColor.Transparent]: \"bg-transparent\",\n [ActionColor.IconDefault]: \"bg-transparent\",\n [ActionColor.PrimaryDefault]: \"bg-action-primary-primary\",\n [ActionColor.PrimaryHover]: \"bg-action-primary-secondary\",\n [ActionColor.PrimaryFocus]: \"bg-action-primary-tertiary\",\n [ActionColor.PrimaryText]: \"bg-action-primary-text\",\n [ActionColor.SecondaryDefault]: \"bg-action-secondary-primary\",\n [ActionColor.SecondaryHover]: \"bg-action-secondary-secondary\",\n [ActionColor.SecondaryFocus]: \"bg-action-secondary-tertiary\",\n [ActionColor.SecondaryText]: \"bg-action-secondary-text\",\n [ActionColor.SuccessDefault]: \"bg-action-success-primary\",\n [ActionColor.SuccessHover]: \"bg-action-success-secondary\",\n [ActionColor.SuccessFocus]: \"bg-action-success-tertiary\",\n [ActionColor.SuccessText]: \"bg-action-success-text\",\n [ActionColor.DangerDefault]: \"bg-action-danger-primary\",\n [ActionColor.DangerHover]: \"bg-action-danger-secondary\",\n [ActionColor.DangerFocus]: \"bg-action-danger-tertiary\",\n [ActionColor.DangerText]: \"bg-action-danger-text\",\n\n [BackgroundColor.Background]: \"bg-content-bg-background\",\n [BackgroundColor.Card1]: \"bg-content-bg-card-1\",\n [BackgroundColor.Card2]: \"bg-content-bg-card-2\",\n [BackgroundColor.CardElevated]: \"bg-content-bg-card-elevated\",\n [BackgroundColor.Muted]: \"bg-content-bg-muted\",\n [BackgroundColor.Popover]: \"bg-content-bg-popover\",\n [BackgroundColor.Secondary]: \"bg-content-bg-secondary\",\n [BackgroundColor.Selected]: \"bg-content-bg-selected\",\n\n [BrandColor.Accent]: \"bg-brand-accent\",\n [BrandColor.Primary]: \"bg-brand-primary\",\n\n [IconColor.Brand]: \"bg-content-icon-brand\",\n [IconColor.BrandAccent]: \"bg-content-icon-brand-accent\",\n [IconColor.Decorative]: \"bg-content-icon-decorative\",\n [IconColor.Default]: \"bg-content-icon-default\",\n [IconColor.Destructive]: \"bg-content-icon-destructive\",\n [IconColor.Disabled]: \"bg-content-icon-disabled\",\n [IconColor.Emphasis]: \"bg-content-icon-emphasis\",\n [IconColor.Info]: \"bg-content-icon-info\",\n [IconColor.Muted]: \"bg-content-icon-muted\",\n [IconColor.Subtle]: \"bg-content-icon-subtle\",\n [IconColor.Success]: \"bg-content-icon-success\",\n [IconColor.Warning]: \"bg-content-icon-warning\",\n\n [SemanticColor.Destructive]: \"bg-semantic-destructive\",\n [SemanticColor.Info]: \"bg-semantic-info\",\n [SemanticColor.Success]: \"bg-semantic-success\",\n [SemanticColor.Warning]: \"bg-semantic-warning\",\n\n [StatusColor.Approved]: \"bg-content-status-approved\",\n [StatusColor.Default]: \"bg-content-status-default\",\n [StatusColor.Failed]: \"bg-content-status-failed\",\n [StatusColor.Progress]: \"bg-content-status-progress\",\n [StatusColor.Review]: \"bg-content-status-review\",\n\n [TextColor.Destructive]: \"bg-content-text-destructive\",\n [TextColor.Fg]: \"bg-content-text-fg\",\n [TextColor.Info]: \"bg-content-text-info\",\n [TextColor.Muted]: \"bg-content-text-muted\",\n [TextColor.Placeholder]: \"bg-content-text-placeholder\",\n [TextColor.Primary]: \"bg-content-text-primary\",\n [TextColor.Secondary]: \"bg-content-text-secondary\",\n [TextColor.Success]: \"bg-content-text-success\",\n [TextColor.Tertiary]: \"bg-content-text-tertiary\",\n [TextColor.Warning]: \"bg-content-text-warning\",\n};\n\nconst borderColorMap: Record<BorderColor, string> = {\n [BorderColor.CardElevated]: \"border-content-bg-card-elevated\",\n [BorderColor.Active]: \"border-content-border-active\",\n [BorderColor.Default]: \"border-content-border-default\",\n [BorderColor.Disabled]: \"border-content-border-disabled\",\n [BorderColor.Error]: \"border-content-border-error\",\n [BorderColor.Focus]: \"border-content-border-focus\",\n [BorderColor.Hover]: \"border-content-border-hover\",\n [BorderColor.Strong]: \"border-content-border-strong\",\n [BorderColor.Subtle]: \"border-content-border-subtle\",\n [BorderColor.Success]: \"border-content-border-success\",\n [BorderColor.Warning]: \"border-content-border-warning\",\n};\n\nexport const bgColorClass = (\n color: Color,\n elementState: ElementState = ElementState.None\n): string => {\n if (elementState === ElementState.None) {\n return backgroundColorMap[color];\n }\n\n return withElementState(`bg-[var(${getColorCssVar(color)})]`, elementState);\n};\n\nexport const getColorCssVar = (color: Color | BorderColor): string => {\n if (\n isEnumValue(color, BrandColor) ||\n isEnumValue(color, SemanticColor) ||\n isEnumValue(color, ActionColor)\n ) {\n return `--color-${color}`;\n }\n\n return `--color-content-${color}`;\n};\n\nconst isEnumValue = <T extends Record<string, string>>(\n value: unknown,\n enumType: T\n): value is T[keyof T] => {\n return Object.values(enumType).includes(value as string);\n};\n\nexport const borderColorClass = (\n color: BorderColor,\n elementState: ElementState = ElementState.None\n): string => {\n if (elementState === ElementState.None) {\n return borderColorMap[color];\n }\n\n return withElementState(\n `border-[var(${getColorCssVar(color)})]`,\n elementState\n );\n};\n\nexport const textColorClass = (\n color: Color,\n elementState: ElementState = ElementState.None\n): string => {\n if (elementState === ElementState.None) {\n return textColorMap[color];\n }\n\n return withElementState(`text-[var(${getColorCssVar(color)})]`, elementState);\n};\n","/**\n * Named z-index values for stacking context.\n * Use when a component needs to control its layering relative to modals, dropdowns, etc.\n */\nexport enum ZIndex {\n /** No explicit stacking; uses document flow (z-index: auto). */\n Default = \"default\",\n /** Low stacking (e.g. dropdowns in page context). */\n Low = \"low\",\n /** Medium stacking (e.g. popovers, tooltips). */\n Medium = \"medium\",\n /** High stacking (e.g. dropdowns above other overlays). */\n High = \"high\",\n /** Above modal; for portaled content that must appear over modals. */\n AboveModal = \"above-modal\",\n}\n\n/**\n * Numeric z-index values for each named value.\n * Used by theme CSS variables (e.g. --z-low, --z-above-modal).\n */\nexport const Z_INDEX_VALUES: Record<ZIndex, number | \"auto\"> = {\n [ZIndex.Default]: \"auto\",\n [ZIndex.Low]: 10,\n [ZIndex.Medium]: 100,\n [ZIndex.High]: 1000,\n [ZIndex.AboveModal]: 10010,\n};\n\n/**\n * Returns the Tailwind z-index class for the given z-index.\n * Default uses \"z-auto\"; others use the theme CSS variable (e.g. z-[var(--z-above-modal)]).\n */\nexport function zIndexStyles(zIndex: ZIndex): string {\n if (zIndex === ZIndex.Default) {\n return \"z-auto\";\n }\n const varName = `--z-${zIndex}`;\n return `z-[var(${varName})]`;\n}\n\nexport default ZIndex;\n","export enum HeadingLevel {\n H1 = \"h1\",\n H2 = \"h2\",\n H3 = \"h3\",\n H4 = \"h4\",\n}\n\nexport default HeadingLevel;\n","export enum IconName {\n Activity = \"Activity\",\n Add = \"Add\",\n AI = \"AI\",\n Annotate = \"Annotate\",\n ArrowDown = \"ArrowDown\",\n ArrowLeft = \"ArrowLeft\",\n ArrowRight = \"ArrowRight\",\n ArrowUp = \"ArrowUp\",\n ArrowUpRight = \"ArrowUpRight\",\n Blocks = \"Blocks\",\n Boxes = \"Boxes\",\n CalendarClock = \"CalendarClock\",\n CaretDown = \"CaretDown\",\n Check = \"Check\",\n Checkbox = \"Checkbox\",\n Checklist = \"Checklist\",\n ChevronBottom = \"ChevronBottom\",\n ChevronLeft = \"ChevronLeft\",\n ChevronRight = \"ChevronRight\",\n ChevronTop = \"ChevronTop\",\n Circle = \"Circle\",\n CircleUser = \"CircleUser\",\n Close = \"Close\",\n Cloud = \"Cloud\",\n CloudCog = \"CloudCog\",\n Code = \"Code\",\n Cog = \"Cog\",\n Contact = \"Contact\",\n ContentCopy = \"ContentCopy\",\n Database = \"Database\",\n DateRange = \"DateRange\",\n Draw = \"Draw\",\n Delete = \"Delete\",\n Detection = \"Detection\",\n Download = \"Download\",\n Drag = \"Drag\",\n Edit = \"Edit\",\n Embeddings = \"Embeddings\",\n Enter = \"Enter\",\n Error = \"Error\",\n ExitWorkspace = \"ExitWorkspace\",\n ExternalLink = \"ExternalLink\",\n FileClock = \"FileClock\",\n FineTune = \"FineTune\",\n Fingerprint = \"Fingerprint\",\n Fullscreen = \"Fullscreen\",\n GridView = \"GridView\",\n History = \"History\",\n IdCard = \"IdCard\",\n ImageSearch = \"ImageSearch\",\n Info = \"Info\",\n Insights = \"Insights\",\n Inspect = \"Inspect\",\n JSON = \"JSON\",\n Key = \"Key\",\n KeyRound = \"KeyRound\",\n KeySquare = \"KeySquare\",\n Label = \"Label\",\n Lock = \"Lock\",\n Logs = \"Logs\",\n Menu = \"Menu\",\n MoreHorizontal = \"MoreHorizontal\",\n MoreVertical = \"MoreVertical\",\n Move = \"Move\",\n NotebookPen = \"NotebookPen\",\n Notes = \"Notes\",\n Orchestrator = \"Orchestrator\",\n Pencil = \"Pencil\",\n Pin = \"Pin\",\n Polyline = \"Polyline\",\n Puzzle = \"Puzzle\",\n Radio = \"Radio\",\n Redo = \"Redo\",\n Refresh = \"Refresh\",\n Remove = \"Remove\",\n Review = \"Review\",\n Search = \"Search\",\n Server = \"Server\",\n Settings = \"Settings\",\n ShieldCheck = \"ShieldCheck\",\n Slider = \"Slider\",\n Sliders = \"Sliders\",\n Spinner = \"Spinner\",\n Tag = \"Tag\",\n Text = \"Text\",\n Toggle = \"Toggle\",\n Undo = \"Undo\",\n UnfoldMore = \"UnfoldMore\",\n Unlock = \"Unlock\",\n Unsupported = \"Unsupported\",\n Upload = \"Upload\",\n User = \"User\",\n Users = \"Users\",\n UsersRound = \"UsersRound\",\n VAL = \"VAL\",\n Warning = \"Warning\",\n Waypoints = \"Waypoints\",\n Workflow = \"Workflow\",\n Workspaces = \"Workspaces\",\n Zap = \"Zap\",\n}\n\nexport default IconName;\n","export enum Justify {\n Around = \"around\",\n Between = \"between\",\n Center = \"center\",\n End = \"end\",\n Evenly = \"evenly\",\n Start = \"start\",\n}\n","export enum Orientation {\n Row = \"row\",\n Column = \"col\",\n}\n\nexport default Orientation;\n","export enum Radius {\n Full = \"full\",\n Xl = \"xl\",\n Lg = \"lg\",\n Md = \"md\",\n Sm = \"sm\",\n Xs = \"xs\",\n None = \"none\",\n}\n\nexport default Radius;\n","export enum Shadow {\n None = \"none\",\n Xl = \"xl\",\n Lg = \"lg\",\n Md = \"md\",\n Sm = \"sm\",\n Xs = \"xs\",\n}\n\nexport default Shadow;\n","export enum Size {\n Xs = \"xs\",\n Sm = \"sm\",\n Md = \"md\",\n Lg = \"lg\",\n Xl = \"xl\",\n}\n\nexport default Size;\n","export enum Spacing {\n None = \"none\",\n Xs = \"xs\",\n Sm = \"sm\",\n Md = \"md\",\n Lg = \"lg\",\n Xl = \"xl\",\n}\n\nexport default Spacing;\n","export enum TextVariant {\n Xxs = \"xxs\",\n Xs = \"xs\",\n Sm = \"sm\",\n Md = \"md\",\n Lg = \"lg\",\n Xl = \"xl\",\n Xxl = \"xxl\",\n Label = \"label\",\n Caption = \"caption\",\n}\n\nexport default TextVariant;\n","/**\n * Transition type system for the VOODO design system.\n *\n * Three enums map to the three layers of CSS custom properties generated\n * from `src/theme/tokens/transitions.ts`:\n *\n * TransitionDuration → --transition-duration-{name}\n * TransitionEasing → --transition-easing-{name}\n * TransitionPreset → --transition-preset-{name}\n *\n * The helper functions return Tailwind arbitrary-value classes that\n * reference those variables, keeping component code declarative:\n *\n * @example\n * ```tsx\n * // Individual duration + easing\n * <div className={cn(\n * transitionDuration(TransitionDuration.Normal),\n * transitionEasing(TransitionEasing.Out),\n * \"transition-transform\"\n * )} />\n *\n * // Pre-composed preset\n * <div style={{ transition: transitionPresetValue(TransitionPreset.Panel) }} />\n * ```\n */\n\n/**\n * Semantic names for how long a transition takes.\n * Maps to `--transition-duration-{name}` CSS variables.\n */\nexport enum TransitionDuration {\n /** 0ms — truly immediate, no perceivable animation. */\n Instant = \"instant\",\n /** 100ms — micro-interactions: hover highlights, icon swaps. */\n Fast = \"fast\",\n /** 200ms — default for color, border, and opacity changes. */\n Normal = \"normal\",\n /** 300ms — panel reveals, tooltips, slightly heavier state changes. */\n Moderate = \"moderate\",\n /** 500ms — drawers, slide-in sheets. */\n Slow = \"slow\",\n /** 700ms — page-level or dramatic reveal transitions. */\n Deliberate = \"deliberate\",\n}\n\n/**\n * Timing-curve tokens that control how a transition accelerates.\n * Maps to `--transition-easing-{name}` CSS variables.\n */\nexport enum TransitionEasing {\n /** Constant speed. Suits progress bars and loaders. */\n Linear = \"linear\",\n /** Starts slow, accelerates. Best for elements *leaving* the screen. */\n In = \"in\",\n /** Starts fast, decelerates. Best for elements *arriving* on screen. */\n Out = \"out\",\n /** Slow start and end. Best for general UI state changes. */\n InOut = \"in-out\",\n /** Slight overshoot then settles. Adds energy to interactive elements. */\n Spring = \"spring\",\n /** Quick in, gradual out. Crisp, snappy feel for menus and overlays. */\n Sharp = \"sharp\",\n}\n\n/**\n * Pre-composed transition shorthands for common UI patterns.\n * Bakes in the right duration + easing so component authors pick semantics,\n * not numbers. Maps to `--transition-preset-{name}` CSS variables.\n */\nexport enum TransitionPreset {\n /** Background, text, border, fill, and stroke color changes. */\n Colors = \"colors\",\n /** Fade in / fade out. */\n Opacity = \"opacity\",\n /** Scale, translate, and rotate. */\n Transform = \"transform\",\n /** Box-shadow elevation changes. */\n Shadow = \"shadow\",\n /** Dropdown / context menu appear and disappear. */\n Menu = \"menu\",\n /** Drawers and slide-in sheets. */\n Panel = \"panel\",\n /** Modal backdrop fade. */\n Overlay = \"overlay\",\n /** General-purpose catch-all. */\n All = \"all\",\n}\n\n/**\n * Returns a Tailwind `duration-[var(...)]` class for the given duration token.\n *\n * @example\n * ```tsx\n * <div className={cn(\"transition-colors\", transitionDuration(TransitionDuration.Fast))} />\n * // → \"transition-colors duration-[var(--transition-duration-fast)]\"\n * ```\n */\nexport function transitionDuration(duration: TransitionDuration): string {\n return `duration-[var(--transition-duration-${duration})]`;\n}\n\n/**\n * Returns a Tailwind `ease-[var(...)]` class for the given easing token.\n *\n * @example\n * ```tsx\n * <div className={cn(\"transition-transform\", transitionEasing(TransitionEasing.Out))} />\n * // → \"transition-transform ease-[var(--transition-easing-out)]\"\n * ```\n */\nexport function transitionEasing(easing: TransitionEasing): string {\n return `ease-[var(--transition-easing-${easing})]`;\n}\n\n/**\n * Returns a Tailwind `transition-[var(...)]` class for the given preset token.\n * The preset encodes both the property list, duration, and easing in one token.\n *\n * @example\n * ```tsx\n * <div className={transitionPreset(TransitionPreset.Colors)} />\n * // → \"transition-[var(--transition-preset-colors)]\"\n * ```\n */\nexport function transitionPreset(preset: TransitionPreset): string {\n return `transition-[var(--transition-preset-${preset})]`;\n}\n\n/**\n * Returns the raw CSS `var(--transition-preset-{name})` string for use in\n * `style` props or inline CSS where a Tailwind class is not appropriate.\n *\n * @example\n * ```tsx\n * <div style={{ transition: transitionPresetValue(TransitionPreset.Panel) }} />\n * ```\n */\nexport function transitionPresetValue(preset: TransitionPreset): string {\n return `var(--transition-preset-${preset})`;\n}\n","export enum Variant {\n Primary = \"primary\",\n Secondary = \"secondary\",\n Success = \"success\",\n Danger = \"danger\",\n Icon = \"icon\",\n Borderless = \"borderless\",\n}\n\nexport default Variant;\n","import clsx from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Helper function which aggregates and deduplicates class names.\n *\n * This method supports the same syntax as {@link clsx}; each\n * argument can be a single class or a space-delimited list of classes.\n *\n * Deduplication is handled left-to-right, so later entries will always\n * take precedence over earlier entries. TL;DR - put your overrides at the end.\n *\n * @example\n * ```typescript jsx\n * <Button className={cn(\"border-1 rounded-sm\", \"border-0 bg-red\")}>\n * Click me\n * </Button>\n * // resolves to className=\"rounded-sm border-0 bg-red\"\n * ```\n *\n * @param classes Classes to apply\n */\nexport const cn = (\n ...classes: (string | boolean | null | undefined)[]\n): string => {\n return twMerge(clsx(...classes));\n};\n","import type { FC, HTMLAttributes } from \"react\";\n\nimport { SpinnerIcon } from \"@/components/Icons/Spinner\";\nimport { Size, TextColor, textColorClass } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport interface SpinnerProps extends HTMLAttributes<HTMLDivElement> {\n size?: Size;\n}\n\nconst sizeStyles: Record<Size, string> = {\n [Size.Xs]: \"size-3\",\n [Size.Sm]: \"size-4\",\n [Size.Md]: \"size-5\",\n [Size.Lg]: \"size-6\",\n [Size.Xl]: \"size-7\",\n};\n\n/**\n * An animated spinner component.\n *\n * Note that this component is also available via the {@link Icon} component with {@link IconName.Spinner}.\n *\n * @example\n * ```tsx\n * <Spinner size={Size.Md} />\n * ```\n *\n * @param className `class` overrides to apply to the component.\n * @param size Size of the component. See {@link Size}.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const Spinner: FC<SpinnerProps> = ({\n className,\n size = Size.Md,\n ...props\n}) => (\n <div\n className={cn(\n sizeStyles[size],\n textColorClass(TextColor.Primary),\n className\n )}\n {...props}\n >\n <SpinnerIcon className=\"animate-spin\" />\n </div>\n);\n\nSpinner.displayName = \"Spinner\";\n","import * as React from \"react\";\nconst SvgAi = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M12.613 10.0501L10.685 13.1439C10.5206 13.398 10.2927 13.5026 10.0012 13.4578C9.70976 13.413 9.52668 13.2411 9.45195 12.9422L8.82421 10.4312L2.70384 16.5516C2.53943 16.716 2.33393 16.802 2.08732 16.8094C1.84071 16.8169 1.62773 16.731 1.44838 16.5516C1.28397 16.3872 1.20177 16.178 1.20177 15.9239C1.20177 15.6698 1.28397 15.4606 1.44838 15.2962L7.56875 9.15337L5.05783 8.52564C4.75891 8.45091 4.58703 8.26782 4.54219 7.97637C4.49736 7.68492 4.60198 7.457 4.85606 7.29259L7.94988 5.38698L7.68085 1.73269C7.65096 1.43377 7.77052 1.21706 8.03955 1.08254C8.30858 0.948029 8.55519 0.977921 8.77938 1.17222L11.5817 3.52621L14.967 2.15865C15.251 2.03908 15.4976 2.08392 15.7068 2.29317C15.9161 2.50241 15.9609 2.74902 15.8413 3.03299L14.4738 6.41825L16.8278 9.1982C17.0221 9.42239 17.052 9.669 16.9175 9.93803C16.7829 10.2071 16.5662 10.3266 16.2673 10.2967L12.613 10.0501ZM1.13451 4.04184C1.04484 3.95217 1 3.84755 1 3.72798C1 3.60841 1.04484 3.50379 1.13451 3.41411L2.3003 2.24833C2.38998 2.15865 2.4946 2.11381 2.61416 2.11381C2.73373 2.11381 2.83835 2.15865 2.92803 2.24833L4.09382 3.41411C4.18349 3.50379 4.22833 3.60841 4.22833 3.72798C4.22833 3.84755 4.18349 3.95217 4.09382 4.04184L2.92803 5.20763C2.83835 5.29731 2.73373 5.34214 2.61416 5.34214C2.4946 5.34214 2.38998 5.29731 2.3003 5.20763L1.13451 4.04184ZM10.5729 9.93803L11.649 8.16693L13.734 8.32386L12.3888 6.73212L13.1735 4.80409L11.2455 5.58875L9.65372 4.26603L9.81065 6.32858L8.03955 7.42711L10.0573 7.92032L10.5729 9.93803ZM13.9582 16.8655L12.7924 15.6997C12.7027 15.61 12.6579 15.5054 12.6579 15.3858C12.6579 15.2663 12.7027 15.1616 12.7924 15.072L13.9582 13.9062C14.0478 13.8165 14.1525 13.7717 14.272 13.7717C14.3916 13.7717 14.4962 13.8165 14.5859 13.9062L15.7517 15.072C15.8413 15.1616 15.8862 15.2663 15.8862 15.3858C15.8862 15.5054 15.8413 15.61 15.7517 15.6997L14.5859 16.8655C14.4962 16.9552 14.3916 17 14.272 17C14.1525 17 14.0478 16.9552 13.9582 16.8655Z\", fill: \"currentColor\" }));\nexport default SvgAi;\n","import * as React from \"react\";\nconst SvgActivity = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2\" }));\nexport default SvgActivity;\n","import * as React from \"react\";\nconst SvgAdd = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M7.92857 10.0714H2.57143C2.26786 10.0714 2.01339 9.96875 1.80804 9.76339C1.60268 9.55804 1.5 9.30357 1.5 9C1.5 8.69643 1.60268 8.44196 1.80804 8.23661C2.01339 8.03125 2.26786 7.92857 2.57143 7.92857H7.92857V2.57143C7.92857 2.26786 8.03125 2.01339 8.23661 1.80804C8.44196 1.60268 8.69643 1.5 9 1.5C9.30357 1.5 9.55804 1.60268 9.76339 1.80804C9.96875 2.01339 10.0714 2.26786 10.0714 2.57143V7.92857H15.4286C15.7321 7.92857 15.9866 8.03125 16.192 8.23661C16.3973 8.44196 16.5 8.69643 16.5 9C16.5 9.30357 16.3973 9.55804 16.192 9.76339C15.9866 9.96875 15.7321 10.0714 15.4286 10.0714H10.0714V15.4286C10.0714 15.7321 9.96875 15.9866 9.76339 16.192C9.55804 16.3973 9.30357 16.5 9 16.5C8.69643 16.5 8.44196 16.3973 8.23661 16.192C8.03125 15.9866 7.92857 15.7321 7.92857 15.4286V10.0714Z\", fill: \"currentColor\" }));\nexport default SvgAdd;\n","import * as React from \"react\";\nconst SvgAnnotate = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M11.7807 15.9698C11.6401 16.1104 11.4494 16.1894 11.2505 16.1894C11.0516 16.1894 10.8609 16.1104 10.7202 15.9698L9.5307 14.7803C9.3901 14.6396 9.3111 14.4489 9.3111 14.25C9.3111 14.0512 9.3901 13.8604 9.5307 13.7198L13.7202 9.5303C13.8609 9.3897 14.0516 9.3107 14.2505 9.3107C14.4493 9.3107 14.6401 9.3897 14.7807 9.5303L15.9702 10.7198C16.1108 10.8604 16.1898 11.0512 16.1898 11.25C16.1898 11.4489 16.1108 11.6396 15.9702 11.7803L11.7807 15.9698Z\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M13.4994 9.75L12.4682 4.5945C12.4401 4.4542 12.3725 4.3249 12.2734 4.2218C12.1743 4.1187 12.0477 4.046 11.9087 4.0125L2.4257 1.521C2.3007 1.4908 2.1702 1.4932 2.0464 1.528C1.9227 1.5627 1.81 1.6287 1.7191 1.7196C1.6282 1.8105 1.5622 1.9232 1.5274 2.047C1.4926 2.1707 1.4902 2.3013 1.5204 2.4262L4.0119 11.9092C4.0455 12.0483 4.1181 12.1748 4.2212 12.274C4.3243 12.3731 4.4537 12.4407 4.5939 12.4687L9.7494 13.5\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M1.7244 1.725L7.1889 7.1895\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M8.25 9.75C9.0784 9.75 9.75 9.0784 9.75 8.25C9.75 7.4216 9.0784 6.75 8.25 6.75C7.4216 6.75 6.75 7.4216 6.75 8.25C6.75 9.0784 7.4216 9.75 8.25 9.75Z\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }));\nexport default SvgAnnotate;\n","import * as React from \"react\";\nconst SvgArrowDown = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M7.74439 12.6825V2.26984C7.74439 1.91005 7.86472 1.60847 8.10538 1.36508C8.34604 1.12169 8.64425 1 9 1C9.35575 1 9.65396 1.12169 9.89462 1.36508C10.1353 1.60847 10.2556 1.91005 10.2556 2.26984V12.6825L13.8969 9C14.1271 8.7672 14.42 8.65079 14.7758 8.65079C15.1315 8.65079 15.4245 8.7672 15.6547 9C15.8849 9.2328 16 9.5291 16 9.88889C16 10.2487 15.8849 10.545 15.6547 10.7778L9.87892 16.619C9.6278 16.873 9.33483 17 9 17C8.66517 17 8.3722 16.873 8.12108 16.619L2.34529 10.7778C2.1151 10.545 2 10.2487 2 9.88889C2 9.5291 2.1151 9.2328 2.34529 9C2.57549 8.7672 2.86846 8.65079 3.22422 8.65079C3.57997 8.65079 3.87294 8.7672 4.10314 9L7.74439 12.6825Z\", fill: \"currentColor\" }));\nexport default SvgArrowDown;\n","import * as React from \"react\";\nconst SvgArrowLeft = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M5.31746 7.74439H15.7302C16.0899 7.74439 16.3915 7.86472 16.6349 8.10538C16.8783 8.34604 17 8.64425 17 9C17 9.35575 16.8783 9.65396 16.6349 9.89462C16.3915 10.1353 16.0899 10.2556 15.7302 10.2556H5.31746L9 13.8969C9.2328 14.1271 9.34921 14.42 9.34921 14.7758C9.34921 15.1315 9.2328 15.4245 9 15.6547C8.7672 15.8849 8.4709 16 8.11111 16C7.75132 16 7.45503 15.8849 7.22222 15.6547L1.38095 9.87892C1.12698 9.6278 1 9.33483 1 9C1 8.66517 1.12698 8.3722 1.38095 8.12108L7.22222 2.34529C7.45503 2.1151 7.75132 2 8.11111 2C8.4709 2 8.7672 2.1151 9 2.34529C9.2328 2.57549 9.34921 2.86846 9.34921 3.22422C9.34921 3.57997 9.2328 3.87294 9 4.10314L5.31746 7.74439Z\", fill: \"currentColor\" }));\nexport default SvgArrowLeft;\n","import * as React from \"react\";\nconst SvgArrowRight = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M12.6825 10.2556H2.26984C1.91005 10.2556 1.60847 10.1353 1.36508 9.89462C1.12169 9.65396 1 9.35575 1 9C1 8.64425 1.12169 8.34604 1.36508 8.10538C1.60847 7.86472 1.91005 7.74439 2.26984 7.74439H12.6825L9 4.10314C8.7672 3.87294 8.65079 3.57997 8.65079 3.22422C8.65079 2.86846 8.7672 2.57549 9 2.34529C9.2328 2.1151 9.5291 2 9.88889 2C10.2487 2 10.545 2.1151 10.7778 2.34529L16.619 8.12108C16.873 8.3722 17 8.66517 17 9C17 9.33483 16.873 9.6278 16.619 9.87892L10.7778 15.6547C10.545 15.8849 10.2487 16 9.88889 16C9.5291 16 9.2328 15.8849 9 15.6547C8.7672 15.4245 8.65079 15.1315 8.65079 14.7758C8.65079 14.42 8.7672 14.1271 9 13.8969L12.6825 10.2556Z\", fill: \"currentColor\" }));\nexport default SvgArrowRight;\n","import * as React from \"react\";\nconst SvgArrowUp = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M10.2556 5.31746V15.7302C10.2556 16.0899 10.1353 16.3915 9.89462 16.6349C9.65396 16.8783 9.35575 17 9 17C8.64425 17 8.34604 16.8783 8.10538 16.6349C7.86472 16.3915 7.74439 16.0899 7.74439 15.7302V5.31746L4.10314 9C3.87294 9.2328 3.57997 9.34921 3.22422 9.34921C2.86846 9.34921 2.57549 9.2328 2.34529 9C2.1151 8.7672 2 8.4709 2 8.11111C2 7.75132 2.1151 7.45503 2.34529 7.22222L8.12108 1.38095C8.3722 1.12698 8.66517 1 9 1C9.33483 1 9.6278 1.12698 9.87892 1.38095L15.6547 7.22222C15.8849 7.45503 16 7.75132 16 8.11111C16 8.4709 15.8849 8.7672 15.6547 9C15.4245 9.2328 15.1315 9.34921 14.7758 9.34921C14.42 9.34921 14.1271 9.2328 13.8969 9L10.2556 5.31746Z\", fill: \"currentColor\" }));\nexport default SvgArrowUp;\n","import * as React from \"react\";\nconst SvgArrowUpRight = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"-1.127 -1.127 11.266 11.266\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M8.1123 0C8.22001 5.72273e-06 8.32319 0.0189777 8.41895 0.0537109C8.43161 0.0582843 8.44455 0.062224 8.45703 0.0673828C8.46672 0.0714021 8.47584 0.0767102 8.48535 0.0810547C8.50372 0.0894105 8.52215 0.0977682 8.54004 0.107422C8.57602 0.126889 8.60976 0.149815 8.64258 0.173828C8.67951 0.200856 8.71566 0.230309 8.74902 0.263672C8.80075 0.315433 8.84339 0.37276 8.87988 0.432617C8.91939 0.497328 8.95233 0.566534 8.97461 0.640625C8.99995 0.72522 9.01273 0.8128 9.0127 0.900391V8.1123C9.01246 8.60915 8.60919 9.01267 8.1123 9.0127C7.6154 9.01269 7.21215 8.60916 7.21191 8.1123V3.07422L1.53711 8.74902C1.18569 9.1002 0.615087 9.10021 0.263672 8.74902C-0.0877261 8.39763 -0.0875785 7.82708 0.263672 7.47559L5.93848 1.80078H0.900391C0.403467 1.80078 0.000206874 1.39727 0 0.900391C0 0.403338 0.40334 6.19339e-06 0.900391 0H8.1123Z\", fill: \"currentColor\" }));\nexport default SvgArrowUpRight;\n","import * as React from \"react\";\nconst SvgBlocks = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M10 22V7a1 1 0 0 0-1-1H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-5a1 1 0 0 0-1-1H2\" }), /* @__PURE__ */ React.createElement(\"rect\", { x: 14, y: 2, width: 8, height: 8, rx: 1 }));\nexport default SvgBlocks;\n","import * as React from \"react\";\nconst SvgBoxes = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m7 16.5-4.74-2.85\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m7 16.5 5-3\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M7 16.5v5.17\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m17 16.5-5-3\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m17 16.5 4.74-2.85\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M17 16.5v5.17\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M12 8 7.26 5.15\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m12 8 4.74-2.85\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M12 13.5V8\" }));\nexport default SvgBoxes;\n","import * as React from \"react\";\nconst SvgCalendarClock = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M16 14v2.2l1.6 1\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M16 2v4\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M3 10h5\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M8 2v4\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 16, cy: 16, r: 6 }));\nexport default SvgCalendarClock;\n","import * as React from \"react\";\nconst SvgCaretDown = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M8.32849 11.718L3.69186 7.08135C3.62791 7.0174 3.57994 6.94811 3.54797 6.8735C3.51599 6.79889 3.5 6.71895 3.5 6.63368C3.5 6.46313 3.55862 6.31391 3.67587 6.186C3.79312 6.05809 3.94767 5.99414 4.13953 5.99414H13.8605C14.0523 5.99414 14.2069 6.05809 14.3241 6.186C14.4414 6.31391 14.5 6.46313 14.5 6.63368C14.5 6.67631 14.436 6.82554 14.3081 7.08135L9.67151 11.718C9.56492 11.8246 9.45833 11.8992 9.35174 11.9418C9.24516 11.9845 9.12791 12.0058 9 12.0058C8.87209 12.0058 8.75485 11.9845 8.64826 11.9418C8.54167 11.8992 8.43508 11.8246 8.32849 11.718Z\", fill: \"currentColor\" }));\nexport default SvgCaretDown;\n","import * as React from \"react\";\nconst SvgCheck = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M6.48879 11.4213L13.8969 3.85277C14.1271 3.61759 14.42 3.5 14.7758 3.5C15.1315 3.5 15.4245 3.61759 15.6547 3.85277C15.8849 4.08795 16 4.38727 16 4.75073C16 5.11419 15.8849 5.41351 15.6547 5.64869L7.36771 14.1152C7.11659 14.3717 6.82362 14.5 6.48879 14.5C6.15396 14.5 5.86099 14.3717 5.60987 14.1152L2.34529 10.7799C2.1151 10.5447 2 10.2454 2 9.88192C2 9.51846 2.1151 9.21914 2.34529 8.98396C2.57549 8.74879 2.86846 8.6312 3.22422 8.6312C3.57997 8.6312 3.87294 8.74879 4.10314 8.98396L6.48879 11.4213Z\", fill: \"currentColor\" }));\nexport default SvgCheck;\n","import * as React from \"react\";\nconst SvgCheckbox = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M7.75556 10.2444L5.84444 8.33333C5.68148 8.17037 5.47407 8.08889 5.22222 8.08889C4.97037 8.08889 4.76296 8.17037 4.6 8.33333C4.43704 8.4963 4.35556 8.7037 4.35556 8.95556C4.35556 9.20741 4.43704 9.41481 4.6 9.57778L7.13333 12.1111C7.31111 12.2889 7.51852 12.3778 7.75556 12.3778C7.99259 12.3778 8.2 12.2889 8.37778 12.1111L13.4 7.08889C13.563 6.92593 13.6444 6.71852 13.6444 6.46667C13.6444 6.21482 13.563 6.00741 13.4 5.84444C13.237 5.68148 13.0296 5.6 12.7778 5.6C12.5259 5.6 12.3185 5.68148 12.1556 5.84444L7.75556 10.2444ZM2.77778 17C2.28889 17 1.87037 16.8259 1.52222 16.4778C1.17407 16.1296 1 15.7111 1 15.2222V2.77778C1 2.28889 1.17407 1.87037 1.52222 1.52222C1.87037 1.17407 2.28889 1 2.77778 1H15.2222C15.7111 1 16.1296 1.17407 16.4778 1.52222C16.8259 1.87037 17 2.28889 17 2.77778V15.2222C17 15.7111 16.8259 16.1296 16.4778 16.4778C16.1296 16.8259 15.7111 17 15.2222 17H2.77778ZM2.77778 15.2222H15.2222V2.77778H2.77778V15.2222Z\", fill: \"currentColor\" }));\nexport default SvgCheckbox;\n","import * as React from \"react\";\nconst SvgChecklist = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M5.8 16.5C6.24 16.5 6.61667 16.3368 6.93 16.0104C7.24333 15.684 7.4 15.2917 7.4 14.8333V11.5C7.4 11.0417 7.24333 10.6493 6.93 10.3229C6.61667 9.99653 6.24 9.83333 5.8 9.83333H2.6C2.16 9.83333 1.78333 9.99653 1.47 10.3229C1.15667 10.6493 1 11.0417 1 11.5V14.8333C1 15.2917 1.15667 15.684 1.47 16.0104C1.78333 16.3368 2.16 16.5 2.6 16.5H5.8ZM5.8 14.8333H2.6V11.5H5.8V14.8333ZM16.2 14C16.4267 14 16.6167 13.9201 16.77 13.7604C16.9233 13.6007 17 13.4028 17 13.1667C17 12.9306 16.9233 12.7326 16.77 12.5729C16.6167 12.4132 16.4267 12.3333 16.2 12.3333H10.6C10.3733 12.3333 10.1833 12.4132 10.03 12.5729C9.87667 12.7326 9.8 12.9306 9.8 13.1667C9.8 13.4028 9.87667 13.6007 10.03 13.7604C10.1833 13.9201 10.3733 14 10.6 14H16.2ZM5.8 8.16667C6.24 8.16667 6.61667 8.00347 6.93 7.67708C7.24333 7.35069 7.4 6.95833 7.4 6.5V3.16667C7.4 2.70833 7.24333 2.31597 6.93 1.98958C6.61667 1.66319 6.24 1.5 5.8 1.5H2.6C2.16 1.5 1.78333 1.66319 1.47 1.98958C1.15667 2.31597 1 2.70833 1 3.16667V6.5C1 6.95833 1.15667 7.35069 1.47 7.67708C1.78333 8.00347 2.16 8.16667 2.6 8.16667H5.8ZM5.8 6.5H2.6V3.16667H5.8V6.5ZM16.2 5.66667C16.4267 5.66667 16.6167 5.58681 16.77 5.42708C16.9233 5.26736 17 5.06944 17 4.83333C17 4.59722 16.9233 4.39931 16.77 4.23958C16.6167 4.07986 16.4267 4 16.2 4H10.6C10.3733 4 10.1833 4.07986 10.03 4.23958C9.87667 4.39931 9.8 4.59722 9.8 4.83333C9.8 5.06944 9.87667 5.26736 10.03 5.42708C10.1833 5.58681 10.3733 5.66667 10.6 5.66667H16.2Z\", fill: \"currentColor\" }));\nexport default SvgChecklist;\n","import * as React from \"react\";\nconst SvgChevronBottom = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9 9.82443L12.4978 6.25191C12.6622 6.08397 12.8714 6 13.1256 6C13.3797 6 13.5889 6.08397 13.7534 6.25191C13.9178 6.41985 14 6.63359 14 6.89313C14 7.15267 13.9178 7.36641 13.7534 7.53435L9.6278 11.7481C9.53812 11.8397 9.44096 11.9046 9.33632 11.9427C9.23169 11.9809 9.11958 12 9 12C8.88042 12 8.76831 11.9809 8.66368 11.9427C8.55904 11.9046 8.46188 11.8397 8.3722 11.7481L4.24664 7.53435C4.08221 7.36641 4 7.15267 4 6.89313C4 6.63359 4.08221 6.41985 4.24664 6.25191C4.41106 6.08397 4.62033 6 4.87444 6C5.12855 6 5.33782 6.08397 5.50224 6.25191L9 9.82443Z\", fill: \"currentColor\" }));\nexport default SvgChevronBottom;\n","import * as React from \"react\";\nconst SvgChevronLeft = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M7.76336 9L13.1221 4.10314C13.374 3.87294 13.5 3.57997 13.5 3.22422C13.5 2.86846 13.374 2.57549 13.1221 2.34529C12.8702 2.1151 12.5496 2 12.1603 2C11.771 2 11.4504 2.1151 11.1985 2.34529L4.87786 8.12108C4.74046 8.24664 4.64313 8.38266 4.58588 8.52915C4.52863 8.67564 4.5 8.83259 4.5 9C4.5 9.16741 4.52863 9.32436 4.58588 9.47085C4.64313 9.61734 4.74046 9.75336 4.87786 9.87892L11.1985 15.6547C11.4504 15.8849 11.771 16 12.1603 16C12.5496 16 12.8702 15.8849 13.1221 15.6547C13.374 15.4245 13.5 15.1315 13.5 14.7758C13.5 14.42 13.374 14.1271 13.1221 13.8969L7.76336 9Z\", fill: \"currentColor\" }));\nexport default SvgChevronLeft;\n","import * as React from \"react\";\nconst SvgChevronRight = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M10.0992 9L5.33588 4.10314C5.11196 3.87294 5 3.57997 5 3.22422C5 2.86846 5.11196 2.57549 5.33588 2.34529C5.5598 2.1151 5.84478 2 6.19084 2C6.5369 2 6.82188 2.1151 7.0458 2.34529L12.6641 8.12108C12.7863 8.24664 12.8728 8.38266 12.9237 8.52915C12.9746 8.67564 13 8.83259 13 9C13 9.16741 12.9746 9.32436 12.9237 9.47085C12.8728 9.61734 12.7863 9.75336 12.6641 9.87892L7.0458 15.6547C6.82188 15.8849 6.5369 16 6.19084 16C5.84478 16 5.5598 15.8849 5.33588 15.6547C5.11196 15.4245 5 15.1315 5 14.7758C5 14.42 5.11196 14.1271 5.33588 13.8969L10.0992 9Z\", fill: \"currentColor\" }));\nexport default SvgChevronRight;\n","import * as React from \"react\";\nconst SvgChevronTop = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9 8.17557L12.4978 11.7481C12.6622 11.916 12.8714 12 13.1256 12C13.3797 12 13.5889 11.916 13.7534 11.7481C13.9178 11.5802 14 11.3664 14 11.1069C14 10.8473 13.9178 10.6336 13.7534 10.4656L9.6278 6.25191C9.53812 6.1603 9.44096 6.09542 9.33632 6.05725C9.23169 6.01908 9.11958 6 9 6C8.88042 6 8.76831 6.01908 8.66368 6.05725C8.55904 6.09542 8.46188 6.1603 8.3722 6.25191L4.24664 10.4656C4.08221 10.6336 4 10.8473 4 11.1069C4 11.3664 4.08221 11.5802 4.24664 11.7481C4.41106 11.916 4.62033 12 4.87444 12C5.12855 12 5.33782 11.916 5.50224 11.7481L9 8.17557Z\", fill: \"currentColor\" }));\nexport default SvgChevronTop;\n","import * as React from \"react\";\nconst SvgCircle = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", className: \"mr-1\", ...props }, /* @__PURE__ */ React.createElement(\"circle\", { cx: 9, cy: 9, r: 6, fill: \"currentColor\" }));\nexport default SvgCircle;\n","import * as React from \"react\";\nconst SvgCircleUser = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M17.925 20.056a6 6 0 0 0-11.851.001\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 12, cy: 11, r: 4 }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 12, cy: 12, r: 10 }));\nexport default SvgCircleUser;\n","import * as React from \"react\";\nconst SvgClose = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9 10.4905L3.78327 15.7072C3.58809 15.9024 3.33967 16 3.03802 16C2.73638 16 2.48796 15.9024 2.29278 15.7072C2.09759 15.512 2 15.2636 2 14.962C2 14.6603 2.09759 14.4119 2.29278 14.2167L7.50951 9L2.29278 3.78327C2.09759 3.58809 2 3.33967 2 3.03802C2 2.73638 2.09759 2.48796 2.29278 2.29278C2.48796 2.09759 2.73638 2 3.03802 2C3.33967 2 3.58809 2.09759 3.78327 2.29278L9 7.50951L14.2167 2.29278C14.4119 2.09759 14.6603 2 14.962 2C15.2636 2 15.512 2.09759 15.7072 2.29278C15.9024 2.48796 16 2.73638 16 3.03802C16 3.33967 15.9024 3.58809 15.7072 3.78327L10.4905 9L15.7072 14.2167C15.9024 14.4119 16 14.6603 16 14.962C16 15.2636 15.9024 15.512 15.7072 15.7072C15.512 15.9024 15.2636 16 14.962 16C14.6603 16 14.4119 15.9024 14.2167 15.7072L9 10.4905Z\", fill: \"currentColor\" }));\nexport default SvgClose;\n","import * as React from \"react\";\nconst SvgCloud = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z\" }));\nexport default SvgCloud;\n","import * as React from \"react\";\nconst SvgCloudCog = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"m10.852 19.772-.383.924\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m13.148 14.228.383-.923\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M13.148 19.772a3 3 0 1 0-2.296-5.544l-.383-.923\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m13.53 20.696-.382-.924a3 3 0 1 1-2.296-5.544\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m14.772 15.852.923-.383\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m14.772 18.148.923.383\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M4.2 15.1a7 7 0 1 1 9.93-9.858A7 7 0 0 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.2\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m9.228 15.852-.923-.383\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m9.228 18.148-.923.383\" }));\nexport default SvgCloudCog;\n","import * as React from \"react\";\nconst SvgCode = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M2.25587 9.03048L5.89817 12.8404C6.0705 13.0206 6.15666 13.25 6.15666 13.5286C6.15666 13.8072 6.0705 14.0366 5.89817 14.2168C5.72585 14.3971 5.50653 14.4872 5.24021 14.4872C4.97389 14.4872 4.75457 14.3971 4.58225 14.2168L0.258486 9.69414C0.164491 9.59582 0.0979112 9.4893 0.0587467 9.3746C0.0195822 9.25989 0 9.13699 0 9.0059C0 8.87481 0.0195822 8.75191 0.0587467 8.6372C0.0979112 8.52249 0.164491 8.41598 0.258486 8.31766L4.58225 3.79496C4.77024 3.59832 4.99347 3.5 5.25196 3.5C5.51044 3.5 5.73368 3.59832 5.92167 3.79496C6.10966 3.9916 6.20366 4.22511 6.20366 4.49549C6.20366 4.76587 6.10966 4.99937 5.92167 5.19601L2.25587 9.03048ZM15.7441 8.98132L12.1018 5.17143C11.9295 4.99118 11.8433 4.76177 11.8433 4.4832C11.8433 4.20462 11.9295 3.97521 12.1018 3.79496C12.2742 3.61471 12.4935 3.52458 12.7598 3.52458C13.0261 3.52458 13.2454 3.61471 13.4178 3.79496L17.7415 8.31766C17.8355 8.41598 17.9021 8.52249 17.9413 8.6372C17.9804 8.75191 18 8.87481 18 9.0059C18 9.13699 17.9804 9.25989 17.9413 9.3746C17.9021 9.4893 17.8355 9.59582 17.7415 9.69414L13.4178 14.2168C13.2298 14.4135 13.0104 14.5077 12.7598 14.4995C12.5091 14.4913 12.2898 14.3889 12.1018 14.1923C11.9138 13.9956 11.8198 13.7621 11.8198 13.4917C11.8198 13.2214 11.9138 12.9878 12.1018 12.7912L15.7441 8.98132Z\", fill: \"currentColor\" }));\nexport default SvgCode;\n","import * as React from \"react\";\nconst SvgCog = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M11 10.27 7 3.34\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m11 13.73-4 6.93\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M12 22v-2\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M12 2v2\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M14 12h8\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m17 20.66-1-1.73\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m17 3.34-1 1.73\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M2 12h2\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m20.66 17-1.73-1\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m20.66 7-1.73 1\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m3.34 17 1.73-1\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m3.34 7 1.73 1\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 12, cy: 12, r: 2 }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 12, cy: 12, r: 8 }));\nexport default SvgCog;\n","import * as React from \"react\";\nconst SvgContact = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M16 2v2\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M7 22v-2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v2\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M8 2v2\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 12, cy: 11, r: 3 }), /* @__PURE__ */ React.createElement(\"rect\", { x: 3, y: 4, width: 18, height: 18, rx: 2 }));\nexport default SvgContact;\n","import * as React from \"react\";\nconst SvgContentCopy = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2m0 16H8V7h11z\", fill: \"currentColor\" }));\nexport default SvgContentCopy;\n","import * as React from \"react\";\nconst SvgDatabase = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"ellipse\", { cx: 12, cy: 5, rx: 9, ry: 3 }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M3 5V19A9 3 0 0 0 21 19V5\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M3 12A9 3 0 0 0 21 12\" }));\nexport default SvgDatabase;\n","import * as React from \"react\";\nconst SvgDateRange = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M5.88889 10.6C5.66852 10.6 5.4838 10.5233 5.33472 10.37C5.18565 10.2167 5.11111 10.0267 5.11111 9.8C5.11111 9.57333 5.18565 9.38333 5.33472 9.23C5.4838 9.07667 5.66852 9 5.88889 9C6.10926 9 6.29398 9.07667 6.44306 9.23C6.59213 9.38333 6.66667 9.57333 6.66667 9.8C6.66667 10.0267 6.59213 10.2167 6.44306 10.37C6.29398 10.5233 6.10926 10.6 5.88889 10.6ZM9 10.6C8.77963 10.6 8.59491 10.5233 8.44583 10.37C8.29676 10.2167 8.22222 10.0267 8.22222 9.8C8.22222 9.57333 8.29676 9.38333 8.44583 9.23C8.59491 9.07667 8.77963 9 9 9C9.22037 9 9.40509 9.07667 9.55417 9.23C9.70324 9.38333 9.77778 9.57333 9.77778 9.8C9.77778 10.0267 9.70324 10.2167 9.55417 10.37C9.40509 10.5233 9.22037 10.6 9 10.6ZM12.1111 10.6C11.8907 10.6 11.706 10.5233 11.5569 10.37C11.4079 10.2167 11.3333 10.0267 11.3333 9.8C11.3333 9.57333 11.4079 9.38333 11.5569 9.23C11.706 9.07667 11.8907 9 12.1111 9C12.3315 9 12.5162 9.07667 12.6653 9.23C12.8144 9.38333 12.8889 9.57333 12.8889 9.8C12.8889 10.0267 12.8144 10.2167 12.6653 10.37C12.5162 10.5233 12.3315 10.6 12.1111 10.6ZM3.55556 17C3.12778 17 2.76157 16.8433 2.45694 16.53C2.15231 16.2167 2 15.84 2 15.4V4.2C2 3.76 2.15231 3.38333 2.45694 3.07C2.76157 2.75667 3.12778 2.6 3.55556 2.6H4.33333V1.8C4.33333 1.57333 4.40787 1.38333 4.55694 1.23C4.70602 1.07667 4.89074 1 5.11111 1C5.33148 1 5.5162 1.07667 5.66528 1.23C5.81435 1.38333 5.88889 1.57333 5.88889 1.8V2.6H12.1111V1.8C12.1111 1.57333 12.1856 1.38333 12.3347 1.23C12.4838 1.07667 12.6685 1 12.8889 1C13.1093 1 13.294 1.07667 13.4431 1.23C13.5921 1.38333 13.6667 1.57333 13.6667 1.8V2.6H14.4444C14.8722 2.6 15.2384 2.75667 15.5431 3.07C15.8477 3.38333 16 3.76 16 4.2V15.4C16 15.84 15.8477 16.2167 15.5431 16.53C15.2384 16.8433 14.8722 17 14.4444 17H3.55556ZM3.55556 15.4H14.4444V7.4H3.55556V15.4ZM3.55556 5.8H14.4444V4.2H3.55556V5.8Z\", fill: \"currentColor\" }));\nexport default SvgDateRange;\n","import * as React from \"react\";\nconst SvgDelete = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M4.9375 16.5C4.49062 16.5 4.10807 16.3368 3.78984 16.0104C3.47161 15.684 3.3125 15.2917 3.3125 14.8333V4C3.08229 4 2.88932 3.92014 2.73359 3.76042C2.57786 3.60069 2.5 3.40278 2.5 3.16667C2.5 2.93056 2.57786 2.73264 2.73359 2.57292C2.88932 2.41319 3.08229 2.33333 3.3125 2.33333H6.5625C6.5625 2.09722 6.64036 1.89931 6.79609 1.73958C6.95182 1.57986 7.14479 1.5 7.375 1.5H10.625C10.8552 1.5 11.0482 1.57986 11.2039 1.73958C11.3596 1.89931 11.4375 2.09722 11.4375 2.33333H14.6875C14.9177 2.33333 15.1107 2.41319 15.2664 2.57292C15.4221 2.73264 15.5 2.93056 15.5 3.16667C15.5 3.40278 15.4221 3.60069 15.2664 3.76042C15.1107 3.92014 14.9177 4 14.6875 4V14.8333C14.6875 15.2917 14.5284 15.684 14.2102 16.0104C13.8919 16.3368 13.5094 16.5 13.0625 16.5H4.9375ZM13.0625 4H4.9375V14.8333H13.0625V4ZM7.375 13.1667C7.60521 13.1667 7.79818 13.0868 7.95391 12.9271C8.10964 12.7674 8.1875 12.5694 8.1875 12.3333V6.5C8.1875 6.26389 8.10964 6.06597 7.95391 5.90625C7.79818 5.74653 7.60521 5.66667 7.375 5.66667C7.14479 5.66667 6.95182 5.74653 6.79609 5.90625C6.64036 6.06597 6.5625 6.26389 6.5625 6.5V12.3333C6.5625 12.5694 6.64036 12.7674 6.79609 12.9271C6.95182 13.0868 7.14479 13.1667 7.375 13.1667ZM10.625 13.1667C10.8552 13.1667 11.0482 13.0868 11.2039 12.9271C11.3596 12.7674 11.4375 12.5694 11.4375 12.3333V6.5C11.4375 6.26389 11.3596 6.06597 11.2039 5.90625C11.0482 5.74653 10.8552 5.66667 10.625 5.66667C10.3948 5.66667 10.2018 5.74653 10.0461 5.90625C9.89036 6.06597 9.8125 6.26389 9.8125 6.5V12.3333C9.8125 12.5694 9.89036 12.7674 10.0461 12.9271C10.2018 13.0868 10.3948 13.1667 10.625 13.1667Z\", fill: \"currentColor\" }));\nexport default SvgDelete;\n","import * as React from \"react\";\nconst SvgDetection = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M1 16.2727V13.3636C1 13.1576 1.0697 12.9848 1.20909 12.8455C1.34848 12.7061 1.52121 12.6364 1.72727 12.6364H2.45455V5.36364H1.72727C1.52121 5.36364 1.34848 5.29394 1.20909 5.15455C1.0697 5.01515 1 4.84242 1 4.63636V1.72727C1 1.52121 1.0697 1.34848 1.20909 1.20909C1.34848 1.0697 1.52121 1 1.72727 1H4.63636C4.84242 1 5.01515 1.0697 5.15455 1.20909C5.29394 1.34848 5.36364 1.52121 5.36364 1.72727V2.45455H12.6364V1.72727C12.6364 1.52121 12.7061 1.34848 12.8455 1.20909C12.9848 1.0697 13.1576 1 13.3636 1H16.2727C16.4788 1 16.6515 1.0697 16.7909 1.20909C16.9303 1.34848 17 1.52121 17 1.72727V4.63636C17 4.84242 16.9303 5.01515 16.7909 5.15455C16.6515 5.29394 16.4788 5.36364 16.2727 5.36364H15.5455V12.6364H16.2727C16.4788 12.6364 16.6515 12.7061 16.7909 12.8455C16.9303 12.9848 17 13.1576 17 13.3636V16.2727C17 16.4788 16.9303 16.6515 16.7909 16.7909C16.6515 16.9303 16.4788 17 16.2727 17H13.3636C13.1576 17 12.9848 16.9303 12.8455 16.7909C12.7061 16.6515 12.6364 16.4788 12.6364 16.2727V15.5455H5.36364V16.2727C5.36364 16.4788 5.29394 16.6515 5.15455 16.7909C5.01515 16.9303 4.84242 17 4.63636 17H1.72727C1.52121 17 1.34848 16.9303 1.20909 16.7909C1.0697 16.6515 1 16.4788 1 16.2727ZM5.36364 14.0909H12.6364V13.3636C12.6364 13.1576 12.7061 12.9848 12.8455 12.8455C12.9848 12.7061 13.1576 12.6364 13.3636 12.6364H14.0909V5.36364H13.3636C13.1576 5.36364 12.9848 5.29394 12.8455 5.15455C12.7061 5.01515 12.6364 4.84242 12.6364 4.63636V3.90909H5.36364V4.63636C5.36364 4.84242 5.29394 5.01515 5.15455 5.15455C5.01515 5.29394 4.84242 5.36364 4.63636 5.36364H3.90909V12.6364H4.63636C4.84242 12.6364 5.01515 12.7061 5.15455 12.8455C5.29394 12.9848 5.36364 13.1576 5.36364 13.3636V14.0909ZM2.45455 3.90909H3.90909V2.45455H2.45455V3.90909ZM14.0909 3.90909H15.5455V2.45455H14.0909V3.90909ZM14.0909 15.5455H15.5455V14.0909H14.0909V15.5455ZM2.45455 15.5455H3.90909V14.0909H2.45455V15.5455Z\", fill: \"currentColor\" }));\nexport default SvgDetection;\n","import * as React from \"react\";\nconst SvgDownload = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 -2.5 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M8.18182 6.58176V1.63522C7.14545 1.826 6.34091 2.32678 5.76818 3.13758C5.19545 3.94838 4.90909 4.78302 4.90909 5.64151H4.5C3.70909 5.64151 3.03409 5.92086 2.475 6.47956C1.91591 7.03826 1.63636 7.71279 1.63636 8.50315C1.63636 9.2935 1.91591 9.96803 2.475 10.5267C3.03409 11.0854 3.70909 11.3648 4.5 11.3648H14.3182C14.8909 11.3648 15.375 11.1672 15.7705 10.772C16.1659 10.3768 16.3636 9.89308 16.3636 9.32076C16.3636 8.74843 16.1659 8.26468 15.7705 7.8695C15.375 7.47432 14.8909 7.27673 14.3182 7.27673H13.0909V5.64151C13.0909 4.98742 12.9409 4.37762 12.6409 3.81211C12.3409 3.24659 11.9455 2.76625 11.4545 2.37107V0.470126C12.4636 0.947065 13.2614 1.65225 13.8477 2.58569C14.4341 3.51913 14.7273 4.53774 14.7273 5.64151C15.6682 5.75052 16.4489 6.15592 17.0693 6.8577C17.6898 7.55949 18 8.3805 18 9.32076C18 10.3428 17.642 11.2115 16.9261 11.9269C16.2102 12.6423 15.3409 13 14.3182 13H4.5C3.25909 13 2.19886 12.5708 1.31932 11.7123C0.439773 10.8538 0 9.80451 0 8.56447C0 7.50157 0.320455 6.55451 0.961364 5.72327C1.60227 4.89203 2.44091 4.36059 3.47727 4.12893C3.70909 3.1478 4.28864 2.21436 5.21591 1.32862C6.14318 0.442872 7.13182 0 8.18182 0C8.63182 0 9.01705 0.160115 9.3375 0.480346C9.65795 0.800577 9.81818 1.18553 9.81818 1.63522V6.58176L10.5545 5.86635C10.7045 5.71646 10.892 5.64151 11.117 5.64151C11.342 5.64151 11.5364 5.72327 11.7 5.88679C11.85 6.03669 11.925 6.22746 11.925 6.45912C11.925 6.69078 11.85 6.88155 11.7 7.03145L9.57273 9.15723C9.40909 9.32076 9.21818 9.40252 9 9.40252C8.78182 9.40252 8.59091 9.32076 8.42727 9.15723L6.3 7.03145C6.15 6.88155 6.07159 6.69418 6.06477 6.46934C6.05795 6.2445 6.13636 6.05031 6.3 5.88679C6.45 5.7369 6.6375 5.65854 6.8625 5.65173C7.0875 5.64492 7.28182 5.71646 7.44545 5.86635L8.18182 6.58176Z\", fill: \"currentColor\" }));\nexport default SvgDownload;\n","import * as React from \"react\";\nconst SvgDrag = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M6.3 16.5C5.805 16.5 5.38125 16.3164 5.02875 15.9492C4.67625 15.582 4.5 15.1406 4.5 14.625C4.5 14.1094 4.67625 13.668 5.02875 13.3008C5.38125 12.9336 5.805 12.75 6.3 12.75C6.795 12.75 7.21875 12.9336 7.57125 13.3008C7.92375 13.668 8.1 14.1094 8.1 14.625C8.1 15.1406 7.92375 15.582 7.57125 15.9492C7.21875 16.3164 6.795 16.5 6.3 16.5ZM11.7 16.5C11.205 16.5 10.7813 16.3164 10.4288 15.9492C10.0763 15.582 9.9 15.1406 9.9 14.625C9.9 14.1094 10.0763 13.668 10.4288 13.3008C10.7813 12.9336 11.205 12.75 11.7 12.75C12.195 12.75 12.6188 12.9336 12.9713 13.3008C13.3238 13.668 13.5 14.1094 13.5 14.625C13.5 15.1406 13.3238 15.582 12.9713 15.9492C12.6188 16.3164 12.195 16.5 11.7 16.5ZM6.3 10.875C5.805 10.875 5.38125 10.6914 5.02875 10.3242C4.67625 9.95703 4.5 9.51562 4.5 9C4.5 8.48438 4.67625 8.04297 5.02875 7.67578C5.38125 7.30859 5.805 7.125 6.3 7.125C6.795 7.125 7.21875 7.30859 7.57125 7.67578C7.92375 8.04297 8.1 8.48438 8.1 9C8.1 9.51562 7.92375 9.95703 7.57125 10.3242C7.21875 10.6914 6.795 10.875 6.3 10.875ZM11.7 10.875C11.205 10.875 10.7813 10.6914 10.4288 10.3242C10.0763 9.95703 9.9 9.51562 9.9 9C9.9 8.48438 10.0763 8.04297 10.4288 7.67578C10.7813 7.30859 11.205 7.125 11.7 7.125C12.195 7.125 12.6188 7.30859 12.9713 7.67578C13.3238 8.04297 13.5 8.48438 13.5 9C13.5 9.51562 13.3238 9.95703 12.9713 10.3242C12.6188 10.6914 12.195 10.875 11.7 10.875ZM6.3 5.25C5.805 5.25 5.38125 5.06641 5.02875 4.69922C4.67625 4.33203 4.5 3.89062 4.5 3.375C4.5 2.85938 4.67625 2.41797 5.02875 2.05078C5.38125 1.68359 5.805 1.5 6.3 1.5C6.795 1.5 7.21875 1.68359 7.57125 2.05078C7.92375 2.41797 8.1 2.85938 8.1 3.375C8.1 3.89062 7.92375 4.33203 7.57125 4.69922C7.21875 5.06641 6.795 5.25 6.3 5.25ZM11.7 5.25C11.205 5.25 10.7813 5.06641 10.4288 4.69922C10.0763 4.33203 9.9 3.89062 9.9 3.375C9.9 2.85938 10.0763 2.41797 10.4288 2.05078C10.7813 1.68359 11.205 1.5 11.7 1.5C12.195 1.5 12.6188 1.68359 12.9713 2.05078C13.3238 2.41797 13.5 2.85938 13.5 3.375C13.5 3.89062 13.3238 4.33203 12.9713 4.69922C12.6188 5.06641 12.195 5.25 11.7 5.25Z\", fill: \"currentColor\" }));\nexport default SvgDrag;\n","import * as React from \"react\";\nconst SvgDraw = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 32 32\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M6.66667 28C6.28889 28 5.97222 27.8722 5.71667 27.6167C5.46111 27.3611 5.33333 27.0444 5.33333 26.6667V23.4333C5.33333 23.0778 5.4 22.7389 5.53333 22.4167C5.66667 22.0944 5.85556 21.8111 6.1 21.5667L22.9 4.8C23.1667 4.53333 23.4667 4.33333 23.8 4.2C24.1333 4.06667 24.4667 4 24.8 4C25.1556 4 25.4944 4.06667 25.8167 4.2C26.1389 4.33333 26.4222 4.53333 26.6667 4.8L28.5333 6.66667C28.8 6.91111 29 7.19444 29.1333 7.51667C29.2667 7.83889 29.3333 8.17778 29.3333 8.53333C29.3333 8.86667 29.2667 9.2 29.1333 9.53333C29 9.86667 28.8 10.1667 28.5333 10.4333L11.7667 27.2333C11.5222 27.4778 11.2389 27.6667 10.9167 27.8C10.5944 27.9333 10.2556 28 9.9 28H6.66667ZM8 25.3333H9.86667L22.9667 12.2667L22.0333 11.3L21.0667 10.3667L8 23.4667V25.3333ZM22.0333 11.3L21.0667 10.3667L22.9667 12.2667L22.0333 11.3ZM18.6667 28C20.3111 28 21.8333 27.5889 23.2333 26.7667C24.6333 25.9444 25.3333 24.8 25.3333 23.3333C25.3333 22.6222 25.1556 22.0056 24.8 21.4833C24.4444 20.9611 23.9778 20.4778 23.4 20.0333C23.0889 19.8111 22.7556 19.7 22.4 19.7C22.0444 19.7 21.7444 19.8333 21.5 20.1C21.2556 20.3667 21.1333 20.6944 21.1333 21.0833C21.1333 21.4722 21.2889 21.7778 21.6 22C21.9111 22.2444 22.1667 22.4667 22.3667 22.6667C22.5667 22.8667 22.6667 23.0889 22.6667 23.3333C22.6667 23.8444 22.2611 24.3056 21.45 24.7167C20.6389 25.1278 19.7111 25.3333 18.6667 25.3333C18.2889 25.3333 17.9722 25.4611 17.7167 25.7167C17.4611 25.9722 17.3333 26.2889 17.3333 26.6667C17.3333 27.0444 17.4611 27.3611 17.7167 27.6167C17.9722 27.8722 18.2889 28 18.6667 28ZM12 8C12 8.31111 11.8056 8.59444 11.4167 8.85C11.0278 9.10556 10.1333 9.55556 8.73333 10.2C6.95556 10.9778 5.72222 11.6833 5.03333 12.3167C4.34444 12.95 4 13.7333 4 14.6667C4 15.2444 4.13333 15.7556 4.4 16.2C4.66667 16.6444 5.01111 17.0333 5.43333 17.3667C5.72222 17.6111 6.04444 17.7167 6.4 17.6833C6.75556 17.65 7.05556 17.4889 7.3 17.2C7.54444 16.9111 7.65556 16.5889 7.63333 16.2333C7.61111 15.8778 7.45556 15.5778 7.16667 15.3333C7.01111 15.2222 6.88889 15.1111 6.8 15C6.71111 14.8889 6.66667 14.7778 6.66667 14.6667C6.66667 14.4 6.86667 14.1333 7.26667 13.8667C7.66667 13.6 8.51111 13.1889 9.8 12.6333C11.7556 11.7889 13.0556 11.0222 13.7 10.3333C14.3444 9.64444 14.6667 8.86667 14.6667 8C14.6667 6.77778 14.1778 5.80556 13.2 5.08333C12.2222 4.36111 10.9333 4 9.33333 4C8.33333 4 7.43889 4.17778 6.65 4.53333C5.86111 4.88889 5.25556 5.32222 4.83333 5.83333C4.58889 6.12222 4.48889 6.44444 4.53333 6.8C4.57778 7.15556 4.74444 7.44444 5.03333 7.66667C5.32222 7.91111 5.64444 8.01111 6 7.96667C6.35556 7.92222 6.65556 7.77778 6.9 7.53333C7.21111 7.22222 7.55556 7 7.93333 6.86667C8.31111 6.73333 8.77778 6.66667 9.33333 6.66667C10.2444 6.66667 10.9167 6.8 11.35 7.06667C11.7833 7.33333 12 7.64444 12 8Z\", fill: \"currentColor\" }));\nexport default SvgDraw;\n","import * as React from \"react\";\nconst SvgEdit = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M3.16667 14.8333H4.35417L12.5 6.6875L11.3125 5.5L3.16667 13.6458V14.8333ZM2.33333 16.5C2.09722 16.5 1.89931 16.4201 1.73958 16.2604C1.57986 16.1007 1.5 15.9028 1.5 15.6667V13.6458C1.5 13.4236 1.54167 13.2118 1.625 13.0104C1.70833 12.809 1.82639 12.6319 1.97917 12.4792L12.5 1.97917C12.6667 1.82639 12.8507 1.70833 13.0521 1.625C13.2535 1.54167 13.4653 1.5 13.6875 1.5C13.9097 1.5 14.125 1.54167 14.3333 1.625C14.5417 1.70833 14.7222 1.83333 14.875 2L16.0208 3.16667C16.1875 3.31944 16.309 3.5 16.3854 3.70833C16.4618 3.91667 16.5 4.125 16.5 4.33333C16.5 4.55556 16.4618 4.76736 16.3854 4.96875C16.309 5.17014 16.1875 5.35417 16.0208 5.52083L5.52083 16.0208C5.36806 16.1736 5.19097 16.2917 4.98958 16.375C4.78819 16.4583 4.57639 16.5 4.35417 16.5H2.33333ZM11.8958 6.10417L11.3125 5.5L12.5 6.6875L11.8958 6.10417Z\", fill: \"currentColor\" }));\nexport default SvgEdit;\n","import * as React from \"react\";\nconst SvgEmbeddings = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M3.66667 16.5C2.92593 16.5 2.2963 16.2266 1.77778 15.6797C1.25926 15.1328 1 14.4688 1 13.6875C1 12.9062 1.25926 12.2422 1.77778 11.6953C2.2963 11.1484 2.92593 10.875 3.66667 10.875C4.40741 10.875 5.03704 11.1484 5.55556 11.6953C6.07407 12.2422 6.33333 12.9062 6.33333 13.6875C6.33333 14.4688 6.07407 15.1328 5.55556 15.6797C5.03704 16.2266 4.40741 16.5 3.66667 16.5ZM14.3333 16.5C13.5926 16.5 12.963 16.2266 12.4444 15.6797C11.9259 15.1328 11.6667 14.4688 11.6667 13.6875C11.6667 12.9062 11.9259 12.2422 12.4444 11.6953C12.963 11.1484 13.5926 10.875 14.3333 10.875C15.0741 10.875 15.7037 11.1484 16.2222 11.6953C16.7407 12.2422 17 12.9062 17 13.6875C17 14.4688 16.7407 15.1328 16.2222 15.6797C15.7037 16.2266 15.0741 16.5 14.3333 16.5ZM9 7.125C8.25926 7.125 7.62963 6.85156 7.11111 6.30469C6.59259 5.75781 6.33333 5.09375 6.33333 4.3125C6.33333 3.53125 6.59259 2.86719 7.11111 2.32031C7.62963 1.77344 8.25926 1.5 9 1.5C9.74074 1.5 10.3704 1.77344 10.8889 2.32031C11.4074 2.86719 11.6667 3.53125 11.6667 4.3125C11.6667 5.09375 11.4074 5.75781 10.8889 6.30469C10.3704 6.85156 9.74074 7.125 9 7.125Z\", fill: \"currentColor\" }));\nexport default SvgEmbeddings;\n","import * as React from \"react\";\nconst SvgEnter = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M13.4815 10.0786H2.02729C1.73622 10.0786 1.49224 9.97519 1.29535 9.76847C1.09845 9.56175 1 9.30559 1 9C1 8.69441 1.09845 8.43825 1.29535 8.23153C1.49224 8.02481 1.73622 7.92145 2.02729 7.92145H13.4815L10.5538 4.84756C10.3483 4.63185 10.2499 4.38019 10.2584 4.09258C10.267 3.80496 10.3654 3.5533 10.5538 3.33759C10.7592 3.12188 11.0032 3.00953 11.2857 3.00054C11.5682 2.99155 11.8122 3.09491 12.0177 3.31062L16.7175 8.24501C16.8202 8.35287 16.893 8.46971 16.9358 8.59554C16.9786 8.72137 17 8.85619 17 9C17 9.14381 16.9786 9.27863 16.9358 9.40446C16.893 9.53029 16.8202 9.64713 16.7175 9.75499L12.0177 14.6894C11.8122 14.9051 11.5682 15.0084 11.2857 14.9995C11.0032 14.9905 10.7592 14.8781 10.5538 14.6624C10.3654 14.4467 10.267 14.195 10.2584 13.9074C10.2499 13.6198 10.3483 13.3681 10.5538 13.1524L13.4815 10.0786Z\", fill: \"currentColor\" }));\nexport default SvgEnter;\n","import * as React from \"react\";\nconst SvgError = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9 13C9.22667 13 9.41667 12.9233 9.57 12.77C9.72333 12.6167 9.8 12.4267 9.8 12.2C9.8 11.9733 9.72333 11.7833 9.57 11.63C9.41667 11.4767 9.22667 11.4 9 11.4C8.77333 11.4 8.58333 11.4767 8.43 11.63C8.27667 11.7833 8.2 11.9733 8.2 12.2C8.2 12.4267 8.27667 12.6167 8.43 12.77C8.58333 12.9233 8.77333 13 9 13ZM9 9.8C9.22667 9.8 9.41667 9.72333 9.57 9.57C9.72333 9.41667 9.8 9.22667 9.8 9V5.8C9.8 5.57333 9.72333 5.38333 9.57 5.23C9.41667 5.07667 9.22667 5 9 5C8.77333 5 8.58333 5.07667 8.43 5.23C8.27667 5.38333 8.2 5.57333 8.2 5.8V9C8.2 9.22667 8.27667 9.41667 8.43 9.57C8.58333 9.72333 8.77333 9.8 9 9.8ZM9 17C7.89333 17 6.85333 16.79 5.88 16.37C4.90667 15.95 4.06 15.38 3.34 14.66C2.62 13.94 2.05 13.0933 1.63 12.12C1.21 11.1467 1 10.1067 1 9C1 7.89333 1.21 6.85333 1.63 5.88C2.05 4.90667 2.62 4.06 3.34 3.34C4.06 2.62 4.90667 2.05 5.88 1.63C6.85333 1.21 7.89333 1 9 1C10.1067 1 11.1467 1.21 12.12 1.63C13.0933 2.05 13.94 2.62 14.66 3.34C15.38 4.06 15.95 4.90667 16.37 5.88C16.79 6.85333 17 7.89333 17 9C17 10.1067 16.79 11.1467 16.37 12.12C15.95 13.0933 15.38 13.94 14.66 14.66C13.94 15.38 13.0933 15.95 12.12 16.37C11.1467 16.79 10.1067 17 9 17ZM9 15.4C10.7867 15.4 12.3 14.78 13.54 13.54C14.78 12.3 15.4 10.7867 15.4 9C15.4 7.21333 14.78 5.7 13.54 4.46C12.3 3.22 10.7867 2.6 9 2.6C7.21333 2.6 5.7 3.22 4.46 4.46C3.22 5.7 2.6 7.21333 2.6 9C2.6 10.7867 3.22 12.3 4.46 13.54C5.7 14.78 7.21333 15.4 9 15.4Z\", fill: \"currentColor\" }));\nexport default SvgError;\n","import * as React from \"react\";\nconst SvgExitWorkspace = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M8.42442 13.15L4.81395 9.7C4.60465 9.5 4.5 9.26667 4.5 9C4.5 8.73333 4.60465 8.5 4.81395 8.3L8.42442 4.85C8.59884 4.68333 8.7907 4.64167 9 4.725C9.2093 4.80833 9.31395 4.96667 9.31395 5.2V12.8C9.31395 13.0333 9.2093 13.1917 9 13.275C8.7907 13.3583 8.59884 13.3167 8.42442 13.15ZM11.407 17V1C11.407 0.716667 11.5073 0.479167 11.7078 0.2875C11.9084 0.0958333 12.157 0 12.4535 0C12.75 0 12.9985 0.0958333 13.1991 0.2875C13.3997 0.479167 13.5 0.716667 13.5 1V17C13.5 17.2833 13.3997 17.5208 13.1991 17.7125C12.9985 17.9042 12.75 18 12.4535 18C12.157 18 11.9084 17.9042 11.7078 17.7125C11.5073 17.5208 11.407 17.2833 11.407 17Z\", fill: \"currentColor\" }));\nexport default SvgExitWorkspace;\n","import * as React from \"react\";\nconst SvgExternalLink = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M3.94444 15.5C3.54722 15.5 3.20718 15.3586 2.92431 15.0757C2.64144 14.7928 2.5 14.4528 2.5 14.0556V3.94444C2.5 3.54722 2.64144 3.20718 2.92431 2.92431C3.20718 2.64144 3.54722 2.5 3.94444 2.5H8.27778C8.48241 2.5 8.65394 2.56921 8.79236 2.70764C8.93079 2.84606 9 3.01759 9 3.22222C9 3.42685 8.93079 3.59838 8.79236 3.73681C8.65394 3.87523 8.48241 3.94444 8.27778 3.94444H3.94444V14.0556H14.0556V9.72222C14.0556 9.51759 14.1248 9.34607 14.2632 9.20764C14.4016 9.06921 14.5731 9 14.7778 9C14.9824 9 15.1539 9.06921 15.2924 9.20764C15.4308 9.34607 15.5 9.51759 15.5 9.72222V14.0556C15.5 14.4528 15.3586 14.7928 15.0757 15.0757C14.7928 15.3586 14.4528 15.5 14.0556 15.5H3.94444ZM14.0556 4.95556L7.84444 11.1667C7.71204 11.2991 7.54352 11.3653 7.33889 11.3653C7.13426 11.3653 6.96574 11.2991 6.83333 11.1667C6.70093 11.0343 6.63472 10.8657 6.63472 10.6611C6.63472 10.4565 6.70093 10.288 6.83333 10.1556L13.0444 3.94444H11.1667C10.962 3.94444 10.7905 3.87523 10.6521 3.73681C10.5137 3.59838 10.4444 3.42685 10.4444 3.22222C10.4444 3.01759 10.5137 2.84606 10.6521 2.70764C10.7905 2.56921 10.962 2.5 11.1667 2.5H14.7778C14.9824 2.5 15.1539 2.56921 15.2924 2.70764C15.4308 2.84606 15.5 3.01759 15.5 3.22222V6.83333C15.5 7.03796 15.4308 7.20949 15.2924 7.34792C15.1539 7.48634 14.9824 7.55556 14.7778 7.55556C14.5731 7.55556 14.4016 7.48634 14.2632 7.34792C14.1248 7.20949 14.0556 7.03796 14.0556 6.83333V4.95556Z\", fill: \"currentColor\" }));\nexport default SvgExternalLink;\n","import * as React from \"react\";\nconst SvgFileClock = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M16 22h2a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v2.85\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M8 14v2.2l1.6 1\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 8, cy: 16, r: 6 }));\nexport default SvgFileClock;\n","import * as React from \"react\";\nconst SvgFineTune = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9 17C8.74815 17 8.53704 16.9148 8.36667 16.7444C8.1963 16.5741 8.11111 16.363 8.11111 16.1111V12.5556C8.11111 12.3037 8.1963 12.0926 8.36667 11.9222C8.53704 11.7519 8.74815 11.6667 9 11.6667C9.25185 11.6667 9.46296 11.7519 9.63333 11.9222C9.8037 12.0926 9.88889 12.3037 9.88889 12.5556V13.4444H16.1111C16.363 13.4444 16.5741 13.5296 16.7444 13.7C16.9148 13.8704 17 14.0815 17 14.3333C17 14.5852 16.9148 14.7963 16.7444 14.9667C16.5741 15.137 16.363 15.2222 16.1111 15.2222H9.88889V16.1111C9.88889 16.363 9.8037 16.5741 9.63333 16.7444C9.46296 16.9148 9.25185 17 9 17ZM1.88889 15.2222C1.63704 15.2222 1.42593 15.137 1.25556 14.9667C1.08519 14.7963 1 14.5852 1 14.3333C1 14.0815 1.08519 13.8704 1.25556 13.7C1.42593 13.5296 1.63704 13.4444 1.88889 13.4444H5.44444C5.6963 13.4444 5.90741 13.5296 6.07778 13.7C6.24815 13.8704 6.33333 14.0815 6.33333 14.3333C6.33333 14.5852 6.24815 14.7963 6.07778 14.9667C5.90741 15.137 5.6963 15.2222 5.44444 15.2222H1.88889ZM5.44444 11.6667C5.19259 11.6667 4.98148 11.5815 4.81111 11.4111C4.64074 11.2407 4.55556 11.0296 4.55556 10.7778V9.88889H1.88889C1.63704 9.88889 1.42593 9.8037 1.25556 9.63333C1.08519 9.46296 1 9.25185 1 9C1 8.74815 1.08519 8.53704 1.25556 8.36667C1.42593 8.1963 1.63704 8.11111 1.88889 8.11111H4.55556V7.22222C4.55556 6.97037 4.64074 6.75926 4.81111 6.58889C4.98148 6.41852 5.19259 6.33333 5.44444 6.33333C5.6963 6.33333 5.90741 6.41852 6.07778 6.58889C6.24815 6.75926 6.33333 6.97037 6.33333 7.22222V10.7778C6.33333 11.0296 6.24815 11.2407 6.07778 11.4111C5.90741 11.5815 5.6963 11.6667 5.44444 11.6667ZM9 9.88889C8.74815 9.88889 8.53704 9.8037 8.36667 9.63333C8.1963 9.46296 8.11111 9.25185 8.11111 9C8.11111 8.74815 8.1963 8.53704 8.36667 8.36667C8.53704 8.1963 8.74815 8.11111 9 8.11111H16.1111C16.363 8.11111 16.5741 8.1963 16.7444 8.36667C16.9148 8.53704 17 8.74815 17 9C17 9.25185 16.9148 9.46296 16.7444 9.63333C16.5741 9.8037 16.363 9.88889 16.1111 9.88889H9ZM12.5556 6.33333C12.3037 6.33333 12.0926 6.24815 11.9222 6.07778C11.7519 5.90741 11.6667 5.6963 11.6667 5.44444V1.88889C11.6667 1.63704 11.7519 1.42593 11.9222 1.25556C12.0926 1.08519 12.3037 1 12.5556 1C12.8074 1 13.0185 1.08519 13.1889 1.25556C13.3593 1.42593 13.4444 1.63704 13.4444 1.88889V2.77778H16.1111C16.363 2.77778 16.5741 2.86296 16.7444 3.03333C16.9148 3.2037 17 3.41481 17 3.66667C17 3.91852 16.9148 4.12963 16.7444 4.3C16.5741 4.47037 16.363 4.55556 16.1111 4.55556H13.4444V5.44444C13.4444 5.6963 13.3593 5.90741 13.1889 6.07778C13.0185 6.24815 12.8074 6.33333 12.5556 6.33333ZM1.88889 4.55556C1.63704 4.55556 1.42593 4.47037 1.25556 4.3C1.08519 4.12963 1 3.91852 1 3.66667C1 3.41481 1.08519 3.2037 1.25556 3.03333C1.42593 2.86296 1.63704 2.77778 1.88889 2.77778H9C9.25185 2.77778 9.46296 2.86296 9.63333 3.03333C9.8037 3.2037 9.88889 3.41481 9.88889 3.66667C9.88889 3.91852 9.8037 4.12963 9.63333 4.3C9.46296 4.47037 9.25185 4.55556 9 4.55556H1.88889Z\", fill: \"currentColor\" }));\nexport default SvgFineTune;\n","import * as React from \"react\";\nconst SvgFingerprint = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M14 13.12c0 2.38 0 6.38-1 8.88\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M17.29 21.02c.12-.6.43-2.3.5-3.02\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M2 12a10 10 0 0 1 18-6\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M2 16h.01\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M21.8 16c.2-2 .131-5.354 0-6\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M8.65 22c.21-.66.45-1.32.57-2\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M9 6.8a6 6 0 0 1 9 5.2v2\" }));\nexport default SvgFingerprint;\n","import * as React from \"react\";\nconst SvgFullscreen = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M3.55556 14.4444H5.11111C5.33148 14.4444 5.5162 14.519 5.66528 14.6681C5.81435 14.8171 5.88889 15.0019 5.88889 15.2222C5.88889 15.4426 5.81435 15.6273 5.66528 15.7764C5.5162 15.9255 5.33148 16 5.11111 16H2.77778C2.55741 16 2.37269 15.9255 2.22361 15.7764C2.07454 15.6273 2 15.4426 2 15.2222V12.8889C2 12.6685 2.07454 12.4838 2.22361 12.3347C2.37269 12.1856 2.55741 12.1111 2.77778 12.1111C2.99815 12.1111 3.18287 12.1856 3.33194 12.3347C3.48102 12.4838 3.55556 12.6685 3.55556 12.8889V14.4444ZM14.4444 14.4444V12.8889C14.4444 12.6685 14.519 12.4838 14.6681 12.3347C14.8171 12.1856 15.0019 12.1111 15.2222 12.1111C15.4426 12.1111 15.6273 12.1856 15.7764 12.3347C15.9255 12.4838 16 12.6685 16 12.8889V15.2222C16 15.4426 15.9255 15.6273 15.7764 15.7764C15.6273 15.9255 15.4426 16 15.2222 16H12.8889C12.6685 16 12.4838 15.9255 12.3347 15.7764C12.1856 15.6273 12.1111 15.4426 12.1111 15.2222C12.1111 15.0019 12.1856 14.8171 12.3347 14.6681C12.4838 14.519 12.6685 14.4444 12.8889 14.4444H14.4444ZM3.55556 3.55556V5.11111C3.55556 5.33148 3.48102 5.5162 3.33194 5.66528C3.18287 5.81435 2.99815 5.88889 2.77778 5.88889C2.55741 5.88889 2.37269 5.81435 2.22361 5.66528C2.07454 5.5162 2 5.33148 2 5.11111V2.77778C2 2.55741 2.07454 2.37269 2.22361 2.22361C2.37269 2.07454 2.55741 2 2.77778 2H5.11111C5.33148 2 5.5162 2.07454 5.66528 2.22361C5.81435 2.37269 5.88889 2.55741 5.88889 2.77778C5.88889 2.99815 5.81435 3.18287 5.66528 3.33194C5.5162 3.48102 5.33148 3.55556 5.11111 3.55556H3.55556ZM14.4444 3.55556H12.8889C12.6685 3.55556 12.4838 3.48102 12.3347 3.33194C12.1856 3.18287 12.1111 2.99815 12.1111 2.77778C12.1111 2.55741 12.1856 2.37269 12.3347 2.22361C12.4838 2.07454 12.6685 2 12.8889 2H15.2222C15.4426 2 15.6273 2.07454 15.7764 2.22361C15.9255 2.37269 16 2.55741 16 2.77778V5.11111C16 5.33148 15.9255 5.5162 15.7764 5.66528C15.6273 5.81435 15.4426 5.88889 15.2222 5.88889C15.0019 5.88889 14.8171 5.81435 14.6681 5.66528C14.519 5.5162 14.4444 5.33148 14.4444 5.11111V3.55556Z\", fill: \"currentColor\" }));\nexport default SvgFullscreen;\n","import * as React from \"react\";\nconst SvgGridView = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", d: \"M3 3v8h8V3zm6 6H5V5h4zm-6 4v8h8v-8zm6 6H5v-4h4zm4-16v8h8V3zm6 6h-4V5h4zm-6 4v8h8v-8zm6 6h-4v-4h4z\", fill: \"currentColor\" }));\nexport default SvgGridView;\n","import * as React from \"react\";\nconst SvgHistory = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"-1.748 -1.748 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M7.25195 0C8.68616 0 10.0887 0.424975 11.2812 1.22168C12.4738 2.01848 13.4032 3.15154 13.9521 4.47656C14.5011 5.80168 14.6451 7.26025 14.3652 8.66699C14.0854 10.0736 13.394 11.3658 12.3799 12.3799C11.3657 13.3939 10.0736 14.0845 8.66699 14.3643C7.26027 14.644 5.80166 14.501 4.47656 13.9521C3.15171 13.4033 2.01946 12.4735 1.22266 11.2812C0.425809 10.0887 1.21933e-05 8.68621 0 7.25195C0 6.8378 0.335873 6.50206 0.75 6.50195C1.16421 6.50195 1.5 6.83774 1.5 7.25195C1.50001 8.38951 1.83772 9.5014 2.46973 10.4473C3.10175 11.3931 3.99977 12.131 5.05078 12.5664C6.10167 13.0017 7.25839 13.1153 8.37402 12.8936C9.48969 12.6716 10.5149 12.1236 11.3193 11.3193C12.1238 10.5149 12.6716 9.48975 12.8936 8.37402C13.1155 7.25826 13.0018 6.10181 12.5664 5.05078C12.1311 3.99992 11.394 3.10174 10.4482 2.46973C9.50253 1.83788 8.3903 1.50015 7.25293 1.5C5.62962 1.50669 4.07149 2.14034 2.9043 3.26855L2.56055 3.6123H4.3623C4.77652 3.6123 5.1123 3.94809 5.1123 4.3623C5.11222 4.77644 4.77646 5.1123 4.3623 5.1123H0.75L0.673828 5.1084C0.654293 5.10642 0.635274 5.10208 0.616211 5.09863C0.61168 5.09781 0.607057 5.09758 0.602539 5.09668C0.58278 5.09273 0.564087 5.08555 0.544922 5.08008C0.517429 5.07224 0.489517 5.06572 0.462891 5.05469C0.412002 5.03354 0.364814 5.00591 0.320312 4.97461C0.285432 4.95007 0.25092 4.92376 0.219727 4.89258C0.187716 4.86056 0.159776 4.82593 0.134766 4.79004C0.104127 4.74604 0.0783773 4.69861 0.0576172 4.64844C0.0368248 4.59806 0.021064 4.54616 0.0117188 4.49316C0.00422992 4.45066 9.53184e-06 4.40695 0 4.3623V0.75C0 0.33585 0.335873 0.000102231 0.75 0C1.16421 0 1.5 0.335786 1.5 0.75V2.55176L1.86133 2.19043C3.30727 0.79265 5.23792 0.00769922 7.24902 0H7.25195ZM7.25195 2.88965C7.66617 2.88965 8.00195 3.22543 8.00195 3.63965V6.78809L10.4775 8.02637C10.8477 8.21175 10.9977 8.66189 10.8125 9.03223C10.6272 9.40247 10.177 9.55234 9.80664 9.36719L6.91699 7.92285C6.66312 7.79577 6.502 7.53587 6.50195 7.25195V3.63965C6.50195 3.22557 6.83793 2.88987 7.25195 2.88965Z\", fill: \"currentColor\" }));\nexport default SvgHistory;\n","import * as React from \"react\";\nconst SvgIdCard = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M16 10h2\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M16 14h2\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M6.17 15a3 3 0 0 1 5.66 0\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 9, cy: 11, r: 2 }), /* @__PURE__ */ React.createElement(\"rect\", { x: 2, y: 5, width: 20, height: 14, rx: 2 }));\nexport default SvgIdCard;\n","import * as React from \"react\";\nconst SvgImageSearch = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M18 13v7H4V6h5.02c.05-.71.22-1.38.48-2H4c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-5zm-1.5 5h-11l2.75-3.53 1.96 2.36 2.75-3.54zm2.8-9.11c.44-.7.7-1.51.7-2.39C20 4.01 17.99 2 15.5 2S11 4.01 11 6.5s2.01 4.5 4.49 4.5c.88 0 1.7-.26 2.39-.7L21 13.42 22.42 12zM15.5 9C14.12 9 13 7.88 13 6.5S14.12 4 15.5 4 18 5.12 18 6.5 16.88 9 15.5 9\", fill: \"currentColor\" }));\nexport default SvgImageSearch;\n","import * as React from \"react\";\nconst SvgInfo = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9 13C9.22667 13 9.41667 12.9233 9.57 12.77C9.72333 12.6167 9.8 12.4267 9.8 12.2V9C9.8 8.77333 9.72333 8.58333 9.57 8.43C9.41667 8.27667 9.22667 8.2 9 8.2C8.77333 8.2 8.58333 8.27667 8.43 8.43C8.27667 8.58333 8.2 8.77333 8.2 9V12.2C8.2 12.4267 8.27667 12.6167 8.43 12.77C8.58333 12.9233 8.77333 13 9 13ZM9 6.6C9.22667 6.6 9.41667 6.52333 9.57 6.37C9.72333 6.21667 9.8 6.02667 9.8 5.8C9.8 5.57333 9.72333 5.38333 9.57 5.23C9.41667 5.07667 9.22667 5 9 5C8.77333 5 8.58333 5.07667 8.43 5.23C8.27667 5.38333 8.2 5.57333 8.2 5.8C8.2 6.02667 8.27667 6.21667 8.43 6.37C8.58333 6.52333 8.77333 6.6 9 6.6ZM9 17C7.89333 17 6.85333 16.79 5.88 16.37C4.90667 15.95 4.06 15.38 3.34 14.66C2.62 13.94 2.05 13.0933 1.63 12.12C1.21 11.1467 1 10.1067 1 9C1 7.89333 1.21 6.85333 1.63 5.88C2.05 4.90667 2.62 4.06 3.34 3.34C4.06 2.62 4.90667 2.05 5.88 1.63C6.85333 1.21 7.89333 1 9 1C10.1067 1 11.1467 1.21 12.12 1.63C13.0933 2.05 13.94 2.62 14.66 3.34C15.38 4.06 15.95 4.90667 16.37 5.88C16.79 6.85333 17 7.89333 17 9C17 10.1067 16.79 11.1467 16.37 12.12C15.95 13.0933 15.38 13.94 14.66 14.66C13.94 15.38 13.0933 15.95 12.12 16.37C11.1467 16.79 10.1067 17 9 17ZM9 15.4C10.7867 15.4 12.3 14.78 13.54 13.54C14.78 12.3 15.4 10.7867 15.4 9C15.4 7.21333 14.78 5.7 13.54 4.46C12.3 3.22 10.7867 2.6 9 2.6C7.21333 2.6 5.7 3.22 4.46 4.46C3.22 5.7 2.6 7.21333 2.6 9C2.6 10.7867 3.22 12.3 4.46 13.54C5.7 14.78 7.21333 15.4 9 15.4Z\", fill: \"currentColor\" }));\nexport default SvgInfo;\n","import * as React from \"react\";\nconst SvgInsights = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"-1 -1.5 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M0 10.1573C0 10.0047 0.0333333 9.86361 0.1 9.73393C0.166667 9.60424 0.259259 9.50126 0.377778 9.42498L1.46667 8.624C1.80741 8.36464 2.19259 8.25403 2.62222 8.29217C3.05185 8.33031 3.42222 8.50195 3.73333 8.80708L8.11111 13.1781L11.3333 10.5235C11.4963 10.4014 11.6704 10.3022 11.8556 10.226C12.0407 10.1497 12.237 10.1115 12.4444 10.1115H15.1111C15.363 10.1115 15.5741 10.1993 15.7444 10.3747C15.9148 10.5502 16 10.7676 16 11.0269C16 11.2863 15.9148 11.5037 15.7444 11.6792C15.5741 11.8546 15.363 11.9423 15.1111 11.9423H12.4444L9.22222 14.597C8.88148 14.8869 8.48519 15.0204 8.03333 14.9975C7.58148 14.9746 7.19259 14.803 6.86667 14.4826L2.48889 10.1115L1.4 10.9125C1.1037 11.1261 0.796296 11.149 0.477778 10.9812C0.159259 10.8133 0 10.5387 0 10.1573ZM0 4.642C0 4.48944 0.0296296 4.35213 0.0888889 4.23007C0.148148 4.10802 0.237037 4.00122 0.355556 3.90968L3.06667 1.87291C3.42222 1.61355 3.81481 1.49912 4.24444 1.52964C4.67407 1.56015 5.04444 1.7356 5.35556 2.05599L8.17778 4.96239L14.6 0.179419C14.8963 -0.034175 15.2037 -0.0570601 15.5222 0.110764C15.8407 0.278587 16 0.553208 16 0.934625C16 1.08719 15.9667 1.2245 15.9 1.34656C15.8333 1.46861 15.7407 1.57541 15.6222 1.66695L9.22222 6.44992C8.86667 6.70929 8.47407 6.82371 8.04444 6.7932C7.61481 6.76268 7.24444 6.58723 6.93333 6.26684L4.11111 3.36044L1.4 5.39721C1.1037 5.6108 0.796296 5.63369 0.477778 5.46586C0.159259 5.29804 0 5.02342 0 4.642Z\", fill: \"currentColor\" }));\nexport default SvgInsights;\n","import * as React from \"react\";\nconst SvgInspect = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M10.557 10.557L8.19671 16.4259C8.11165 16.6172 7.9947 16.7608 7.84585 16.8565C7.697 16.9522 7.53752 17 7.36741 17C7.1973 17 7.03516 16.9495 6.881 16.8485C6.72683 16.7475 6.60722 16.6013 6.52217 16.4099L1.06795 2.2481C0.993528 2.06736 0.980238 1.88927 1.02808 1.71385C1.07593 1.53842 1.15832 1.39223 1.27528 1.27528C1.39223 1.15832 1.53842 1.07593 1.71385 1.02808C1.88927 0.980238 2.06736 0.993528 2.2481 1.06795L16.4099 6.52217C16.6013 6.60722 16.7475 6.72683 16.8485 6.881C16.9495 7.03516 17 7.1973 17 7.36741C17 7.53752 16.9522 7.697 16.8565 7.84585C16.7608 7.9947 16.6172 8.11165 16.4259 8.19671L10.557 10.557ZM7.36741 13.619L9.15359 9.15359L13.619 7.36741L3.4761 3.4761L7.36741 13.619Z\", fill: \"currentColor\" }));\nexport default SvgInspect;\n","import * as React from \"react\";\nconst SvgJson = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M11.7 16.5C11.445 16.5 11.2313 16.4102 11.0588 16.2305C10.8863 16.0508 10.8 15.8281 10.8 15.5625C10.8 15.2969 10.8863 15.0742 11.0588 14.8945C11.2313 14.7148 11.445 14.625 11.7 14.625H13.5C13.755 14.625 13.9688 14.5352 14.1413 14.3555C14.3138 14.1758 14.4 13.9531 14.4 13.6875V11.8125C14.4 11.2188 14.565 10.6797 14.895 10.1953C15.225 9.71094 15.66 9.36719 16.2 9.16406V8.83594C15.66 8.63281 15.225 8.28906 14.895 7.80469C14.565 7.32031 14.4 6.78125 14.4 6.1875V4.3125C14.4 4.04688 14.3138 3.82422 14.1413 3.64453C13.9688 3.46484 13.755 3.375 13.5 3.375H11.7C11.445 3.375 11.2313 3.28516 11.0588 3.10547C10.8863 2.92578 10.8 2.70312 10.8 2.4375C10.8 2.17188 10.8863 1.94922 11.0588 1.76953C11.2313 1.58984 11.445 1.5 11.7 1.5H13.5C14.25 1.5 14.8875 1.77344 15.4125 2.32031C15.9375 2.86719 16.2 3.53125 16.2 4.3125V6.1875C16.2 6.45312 16.2863 6.67578 16.4587 6.85547C16.6313 7.03516 16.845 7.125 17.1 7.125C17.355 7.125 17.5688 7.21484 17.7413 7.39453C17.9138 7.57422 18 7.79688 18 8.0625V9.9375C18 10.2031 17.9138 10.4258 17.7413 10.6055C17.5688 10.7852 17.355 10.875 17.1 10.875C16.845 10.875 16.6313 10.9648 16.4587 11.1445C16.2863 11.3242 16.2 11.5469 16.2 11.8125V13.6875C16.2 14.4688 15.9375 15.1328 15.4125 15.6797C14.8875 16.2266 14.25 16.5 13.5 16.5H11.7ZM4.5 16.5C3.75 16.5 3.1125 16.2266 2.5875 15.6797C2.0625 15.1328 1.8 14.4688 1.8 13.6875V11.8125C1.8 11.5469 1.71375 11.3242 1.54125 11.1445C1.36875 10.9648 1.155 10.875 0.9 10.875C0.645 10.875 0.43125 10.7852 0.25875 10.6055C0.08625 10.4258 0 10.2031 0 9.9375V8.0625C0 7.79688 0.08625 7.57422 0.25875 7.39453C0.43125 7.21484 0.645 7.125 0.9 7.125C1.155 7.125 1.36875 7.03516 1.54125 6.85547C1.71375 6.67578 1.8 6.45312 1.8 6.1875V4.3125C1.8 3.53125 2.0625 2.86719 2.5875 2.32031C3.1125 1.77344 3.75 1.5 4.5 1.5H6.3C6.555 1.5 6.76875 1.58984 6.94125 1.76953C7.11375 1.94922 7.2 2.17188 7.2 2.4375C7.2 2.70312 7.11375 2.92578 6.94125 3.10547C6.76875 3.28516 6.555 3.375 6.3 3.375H4.5C4.245 3.375 4.03125 3.46484 3.85875 3.64453C3.68625 3.82422 3.6 4.04688 3.6 4.3125V6.1875C3.6 6.78125 3.435 7.32031 3.105 7.80469C2.775 8.28906 2.34 8.63281 1.8 8.83594V9.16406C2.34 9.36719 2.775 9.71094 3.105 10.1953C3.435 10.6797 3.6 11.2188 3.6 11.8125V13.6875C3.6 13.9531 3.68625 14.1758 3.85875 14.3555C4.03125 14.5352 4.245 14.625 4.5 14.625H6.3C6.555 14.625 6.76875 14.7148 6.94125 14.8945C7.11375 15.0742 7.2 15.2969 7.2 15.5625C7.2 15.8281 7.11375 16.0508 6.94125 16.2305C6.76875 16.4102 6.555 16.5 6.3 16.5H4.5Z\", fill: \"currentColor\" }));\nexport default SvgJson;\n","import * as React from \"react\";\nconst SvgKey = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 16.5, cy: 7.5, r: 0.5, fill: \"currentColor\" }));\nexport default SvgKey;\n","import * as React from \"react\";\nconst SvgKeyRound = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 16.5, cy: 7.5, r: 0.5, fill: \"currentColor\" }));\nexport default SvgKeyRound;\n","import * as React from \"react\";\nconst SvgKeySquare = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M12.4 2.7a2.5 2.5 0 0 1 3.4 0l5.5 5.5a2.5 2.5 0 0 1 0 3.4l-3.7 3.7a2.5 2.5 0 0 1-3.4 0L8.7 9.8a2.5 2.5 0 0 1 0-3.4z\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m14 7 3 3\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m9.4 10.6-6.814 6.814A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814\" }));\nexport default SvgKeySquare;\n","import * as React from \"react\";\nconst SvgLabel = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"-0.3 -2.74 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M11.6017 1.41239C11.457 1.37678 11.2959 1.37283 10.7779 1.37283H3.90803C3.35187 1.37283 2.96996 1.37328 2.6739 1.3975C2.38468 1.42117 2.22931 1.46456 2.11688 1.52195C1.85981 1.65312 1.65084 1.86245 1.51987 2.11989C1.46257 2.23252 1.41924 2.38813 1.39561 2.6778C1.37141 2.97432 1.37096 3.35682 1.37096 3.91384V8.60497C1.37096 9.162 1.37141 9.54451 1.39561 9.84103C1.41924 10.1307 1.46257 10.2863 1.51987 10.3989C1.65084 10.6564 1.85981 10.8657 2.11688 10.9969C2.22931 11.0543 2.38468 11.0977 2.6739 11.1213C2.96996 11.1456 3.35187 11.146 3.90803 11.146H10.7779C11.2959 11.146 11.457 11.1421 11.6017 11.1064C11.7441 11.0714 11.88 11.0135 12.0041 10.9352C12.1301 10.8556 12.2448 10.7422 12.6043 10.3688L14.8625 8.02323C15.2362 7.63514 15.4921 7.36874 15.6745 7.14599C15.8524 6.92871 15.9278 6.79083 15.9652 6.67275C16.0503 6.40379 16.0503 6.11503 15.9652 5.84608C15.9278 5.728 15.8524 5.59012 15.6745 5.37284C15.4921 5.15009 15.2362 4.88369 14.8625 4.4956L12.6043 2.15003C12.2448 1.77664 12.1301 1.66319 12.0041 1.58364C11.88 1.50529 11.7441 1.44746 11.6017 1.41239ZM10.8419 0.200025C11.2694 0.199849 11.5815 0.199712 11.8812 0.27352C12.1458 0.338648 12.3981 0.446036 12.6286 0.591559C12.8896 0.756413 13.1062 0.981529 13.4028 1.28985C13.4174 1.30502 13.4322 1.32039 13.4472 1.33596L15.7221 3.69883C16.075 4.06538 16.364 4.36556 16.5799 4.62908C16.8035 4.9022 16.9807 5.17325 17.0815 5.49178C17.2395 5.99131 17.2395 6.52752 17.0815 7.02705C16.9807 7.34558 16.8035 7.61663 16.5799 7.88975C16.364 8.15327 16.075 8.45345 15.7221 8.81998L13.4472 11.1829C13.4322 11.1984 13.4174 11.2138 13.4028 11.229C13.1062 11.5373 12.8896 11.7624 12.6286 11.9273C12.3981 12.0728 12.1458 12.1802 11.8812 12.2453C11.5815 12.3191 11.2694 12.319 10.8419 12.3188C10.8209 12.3188 10.7996 12.3188 10.7779 12.3188H3.8835C3.35784 12.3188 2.92794 12.3188 2.57855 12.2902C2.21692 12.2606 1.8903 12.1975 1.58526 12.0418C1.10788 11.7982 0.719763 11.4095 0.476526 10.9314C0.321107 10.6259 0.258082 10.2987 0.228535 9.93653C0.199989 9.58661 0.199994 9.15602 0.2 8.62954V3.88929C0.199994 3.36281 0.199989 2.93222 0.228535 2.5823C0.258082 2.22009 0.321107 1.89296 0.476526 1.58747C0.719763 1.10934 1.10788 0.720604 1.58526 0.476998C1.8903 0.32133 2.21692 0.258215 2.57855 0.228622C2.92794 0.200025 3.35784 0.200025 3.8835 0.200045H10.7779C10.7996 0.200045 10.8209 0.200025 10.8419 0.200025Z\", fill: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M6.52244 6.61995C6.18776 6.49611 6.18776 6.02272 6.52244 5.89888C7.36426 5.58738 8.02797 4.92367 8.33946 4.08187C8.46331 3.74717 8.93669 3.74717 9.06054 4.08187C9.37203 4.92367 10.0357 5.58738 10.8776 5.89888C11.2122 6.02272 11.2122 6.49611 10.8776 6.61995C10.0357 6.93145 9.37203 7.59516 9.06054 8.43696C8.93669 8.77166 8.46331 8.77166 8.33946 8.43696C8.02797 7.59516 7.36426 6.93145 6.52244 6.61995Z\", fill: \"currentColor\" }));\nexport default SvgLabel;\n","import * as React from \"react\";\nconst SvgLock = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M4.125 17C3.67812 17 3.29557 16.8508 2.97734 16.5524C2.65911 16.254 2.5 15.8952 2.5 15.4762V7.85714C2.5 7.4381 2.65911 7.07937 2.97734 6.78095C3.29557 6.48254 3.67812 6.33333 4.125 6.33333H4.9375V4.80952C4.9375 3.75556 5.33359 2.85714 6.12578 2.11429C6.91797 1.37143 7.87604 1 9 1C10.124 1 11.082 1.37143 11.8742 2.11429C12.6664 2.85714 13.0625 3.75556 13.0625 4.80952V6.33333H13.875C14.3219 6.33333 14.7044 6.48254 15.0227 6.78095C15.3409 7.07937 15.5 7.4381 15.5 7.85714V15.4762C15.5 15.8952 15.3409 16.254 15.0227 16.5524C14.7044 16.8508 14.3219 17 13.875 17H4.125ZM4.125 15.4762H13.875V7.85714H4.125V15.4762ZM9 13.1905C9.44687 13.1905 9.82943 13.0413 10.1477 12.7429C10.4659 12.4444 10.625 12.0857 10.625 11.6667C10.625 11.2476 10.4659 10.8889 10.1477 10.5905C9.82943 10.2921 9.44687 10.1429 9 10.1429C8.55312 10.1429 8.17057 10.2921 7.85234 10.5905C7.53411 10.8889 7.375 11.2476 7.375 11.6667C7.375 12.0857 7.53411 12.4444 7.85234 12.7429C8.17057 13.0413 8.55312 13.1905 9 13.1905ZM6.5625 6.33333H11.4375V4.80952C11.4375 4.1746 11.2005 3.63492 10.7266 3.19048C10.2526 2.74603 9.67708 2.52381 9 2.52381C8.32292 2.52381 7.7474 2.74603 7.27344 3.19048C6.79948 3.63492 6.5625 4.1746 6.5625 4.80952V6.33333Z\", fill: \"currentColor\" }));\nexport default SvgLock;\n","import * as React from \"react\";\nconst SvgLogs = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M4.125 17C3.67812 17 3.29557 16.8433 2.97734 16.53C2.65911 16.2167 2.5 15.84 2.5 15.4V2.6C2.5 2.16 2.65911 1.78333 2.97734 1.47C3.29557 1.15667 3.67812 1 4.125 1H10.6859C10.9297 1 11.1599 1.05 11.3766 1.15C11.5932 1.25 11.776 1.39333 11.925 1.58L15.1141 5.36C15.2359 5.50667 15.3307 5.66667 15.3984 5.84C15.4661 6.01333 15.5 6.19333 15.5 6.38V15.4C15.5 15.76 15.3341 16.0067 15.0023 16.14C14.6706 16.2733 14.376 16.2133 14.1187 15.96L10.625 12.56C10.3948 12.7067 10.1443 12.8167 9.87344 12.89C9.6026 12.9633 9.31146 13 9 13C8.10625 13 7.34115 12.6867 6.70469 12.06C6.06823 11.4333 5.75 10.68 5.75 9.8C5.75 8.92 6.06823 8.16667 6.70469 7.54C7.34115 6.91333 8.10625 6.6 9 6.6C9.89375 6.6 10.6589 6.91333 11.2953 7.54C11.9318 8.16667 12.25 8.92 12.25 9.8C12.25 10.1067 12.2128 10.3933 12.1383 10.66C12.0638 10.9267 11.9521 11.1733 11.8031 11.4L13.875 13.48V6.36L10.6656 2.6H4.125V15.4H10.8891C11.1599 15.4 11.363 15.4833 11.4984 15.65C11.6339 15.8167 11.7016 16 11.7016 16.2C11.7016 16.4 11.6339 16.5833 11.4984 16.75C11.363 16.9167 11.1599 17 10.8891 17H4.125ZM9 11.4C9.44687 11.4 9.82943 11.2433 10.1477 10.93C10.4659 10.6167 10.625 10.24 10.625 9.8C10.625 9.36 10.4659 8.98333 10.1477 8.67C9.82943 8.35667 9.44687 8.2 9 8.2C8.55312 8.2 8.17057 8.35667 7.85234 8.67C7.53411 8.98333 7.375 9.36 7.375 9.8C7.375 10.24 7.53411 10.6167 7.85234 10.93C8.17057 11.2433 8.55312 11.4 9 11.4Z\", fill: \"currentColor\" }));\nexport default SvgLogs;\n","import * as React from \"react\";\nconst SvgMenu = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M2.33333 14C2.09722 14 1.89931 13.9201 1.73958 13.7604C1.57986 13.6007 1.5 13.4028 1.5 13.1667C1.5 12.9306 1.57986 12.7326 1.73958 12.5729C1.89931 12.4132 2.09722 12.3333 2.33333 12.3333H15.6667C15.9028 12.3333 16.1007 12.4132 16.2604 12.5729C16.4201 12.7326 16.5 12.9306 16.5 13.1667C16.5 13.4028 16.4201 13.6007 16.2604 13.7604C16.1007 13.9201 15.9028 14 15.6667 14H2.33333ZM2.33333 9.83333C2.09722 9.83333 1.89931 9.75347 1.73958 9.59375C1.57986 9.43403 1.5 9.23611 1.5 9C1.5 8.76389 1.57986 8.56597 1.73958 8.40625C1.89931 8.24653 2.09722 8.16667 2.33333 8.16667H15.6667C15.9028 8.16667 16.1007 8.24653 16.2604 8.40625C16.4201 8.56597 16.5 8.76389 16.5 9C16.5 9.23611 16.4201 9.43403 16.2604 9.59375C16.1007 9.75347 15.9028 9.83333 15.6667 9.83333H2.33333ZM2.33333 5.66667C2.09722 5.66667 1.89931 5.58681 1.73958 5.42708C1.57986 5.26736 1.5 5.06944 1.5 4.83333C1.5 4.59722 1.57986 4.39931 1.73958 4.23958C1.89931 4.07986 2.09722 4 2.33333 4H15.6667C15.9028 4 16.1007 4.07986 16.2604 4.23958C16.4201 4.39931 16.5 4.59722 16.5 4.83333C16.5 5.06944 16.4201 5.26736 16.2604 5.42708C16.1007 5.58681 15.9028 5.66667 15.6667 5.66667H2.33333Z\", fill: \"currentColor\" }));\nexport default SvgMenu;\n","import * as React from \"react\";\nconst SvgMoreHorizontal = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M3.375 10.875C2.85938 10.875 2.41797 10.6914 2.05078 10.3242C1.68359 9.95703 1.5 9.51562 1.5 9C1.5 8.48438 1.68359 8.04297 2.05078 7.67578C2.41797 7.30859 2.85938 7.125 3.375 7.125C3.89062 7.125 4.33203 7.30859 4.69922 7.67578C5.06641 8.04297 5.25 8.48438 5.25 9C5.25 9.51562 5.06641 9.95703 4.69922 10.3242C4.33203 10.6914 3.89062 10.875 3.375 10.875ZM9 10.875C8.48438 10.875 8.04297 10.6914 7.67578 10.3242C7.30859 9.95703 7.125 9.51562 7.125 9C7.125 8.48438 7.30859 8.04297 7.67578 7.67578C8.04297 7.30859 8.48438 7.125 9 7.125C9.51562 7.125 9.95703 7.30859 10.3242 7.67578C10.6914 8.04297 10.875 8.48438 10.875 9C10.875 9.51562 10.6914 9.95703 10.3242 10.3242C9.95703 10.6914 9.51562 10.875 9 10.875ZM14.625 10.875C14.1094 10.875 13.668 10.6914 13.3008 10.3242C12.9336 9.95703 12.75 9.51562 12.75 9C12.75 8.48438 12.9336 8.04297 13.3008 7.67578C13.668 7.30859 14.1094 7.125 14.625 7.125C15.1406 7.125 15.582 7.30859 15.9492 7.67578C16.3164 8.04297 16.5 8.48438 16.5 9C16.5 9.51562 16.3164 9.95703 15.9492 10.3242C15.582 10.6914 15.1406 10.875 14.625 10.875Z\", fill: \"currentColor\" }));\nexport default SvgMoreHorizontal;\n","import * as React from \"react\";\nconst SvgMoreVertical = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9 16.5C8.48438 16.5 8.04297 16.3164 7.67578 15.9492C7.30859 15.582 7.125 15.1406 7.125 14.625C7.125 14.1094 7.30859 13.668 7.67578 13.3008C8.04297 12.9336 8.48438 12.75 9 12.75C9.51562 12.75 9.95703 12.9336 10.3242 13.3008C10.6914 13.668 10.875 14.1094 10.875 14.625C10.875 15.1406 10.6914 15.582 10.3242 15.9492C9.95703 16.3164 9.51562 16.5 9 16.5ZM9 10.875C8.48438 10.875 8.04297 10.6914 7.67578 10.3242C7.30859 9.95703 7.125 9.51562 7.125 9C7.125 8.48438 7.30859 8.04297 7.67578 7.67578C8.04297 7.30859 8.48438 7.125 9 7.125C9.51562 7.125 9.95703 7.30859 10.3242 7.67578C10.6914 8.04297 10.875 8.48438 10.875 9C10.875 9.51562 10.6914 9.95703 10.3242 10.3242C9.95703 10.6914 9.51562 10.875 9 10.875ZM9 5.25C8.48438 5.25 8.04297 5.06641 7.67578 4.69922C7.30859 4.33203 7.125 3.89062 7.125 3.375C7.125 2.85938 7.30859 2.41797 7.67578 2.05078C8.04297 1.68359 8.48438 1.5 9 1.5C9.51562 1.5 9.95703 1.68359 10.3242 2.05078C10.6914 2.41797 10.875 2.85938 10.875 3.375C10.875 3.89062 10.6914 4.33203 10.3242 4.69922C9.95703 5.06641 9.51562 5.25 9 5.25Z\", fill: \"currentColor\" }));\nexport default SvgMoreVertical;\n","import * as React from \"react\";\nconst SvgMove = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M8.16449 14.1384V11.5065C8.16449 11.2698 8.24456 11.0714 8.4047 10.9112C8.56484 10.7511 8.76327 10.671 9 10.671C9.23673 10.671 9.43516 10.7511 9.5953 10.9112C9.75544 11.0714 9.83551 11.2698 9.83551 11.5065V14.1175L10.7337 13.1984C10.9008 13.0313 11.1027 12.9478 11.3394 12.9478C11.5762 12.9478 11.7781 13.0313 11.9452 13.1984C12.1123 13.3655 12.1958 13.5675 12.1958 13.8042C12.1958 14.0409 12.1123 14.2428 11.9452 14.4099L9.58486 16.7702C9.50131 16.8538 9.41079 16.913 9.31332 16.9478C9.21584 16.9826 9.1114 17 9 17C8.8886 17 8.78416 16.9826 8.68668 16.9478C8.58921 16.913 8.49869 16.8538 8.41514 16.7702L6.03394 14.389C5.86684 14.2219 5.78677 14.0235 5.79373 13.7937C5.8007 13.564 5.88773 13.3655 6.05483 13.1984C6.22193 13.0313 6.42037 12.9478 6.65013 12.9478C6.8799 12.9478 7.07833 13.0313 7.24543 13.1984L8.16449 14.1384ZM3.88251 9.83551L4.80157 10.7337C4.96867 10.9008 5.05222 11.1027 5.05222 11.3394C5.05222 11.5762 4.96867 11.7781 4.80157 11.9452C4.63446 12.1123 4.43255 12.1958 4.19582 12.1958C3.9591 12.1958 3.75718 12.1123 3.59008 11.9452L1.22977 9.58486C1.14621 9.50131 1.08703 9.41079 1.05222 9.31332C1.01741 9.21584 1 9.1114 1 9C1 8.8886 1.01741 8.78416 1.05222 8.68668C1.08703 8.58921 1.14621 8.49869 1.22977 8.41514L3.59008 6.05483C3.75718 5.88773 3.95561 5.80418 4.18538 5.80418C4.41514 5.80418 4.61358 5.88773 4.78068 6.05483C4.94778 6.22193 5.03133 6.42037 5.03133 6.65013C5.03133 6.8799 4.94778 7.07833 4.78068 7.24543L3.86162 8.16449H6.49347C6.7302 8.16449 6.92863 8.24456 7.08877 8.4047C7.24891 8.56484 7.32898 8.76327 7.32898 9C7.32898 9.23673 7.24891 9.43516 7.08877 9.5953C6.92863 9.75544 6.7302 9.83551 6.49347 9.83551H3.88251ZM14.1384 9.83551H11.5065C11.2698 9.83551 11.0714 9.75544 10.9112 9.5953C10.7511 9.43516 10.671 9.23673 10.671 9C10.671 8.76327 10.7511 8.56484 10.9112 8.4047C11.0714 8.24456 11.2698 8.16449 11.5065 8.16449H14.1175L13.1984 7.26632C13.0313 7.09922 12.9478 6.8973 12.9478 6.66057C12.9478 6.42385 13.0313 6.22193 13.1984 6.05483C13.3655 5.88773 13.5675 5.80418 13.8042 5.80418C14.0409 5.80418 14.2428 5.88773 14.4099 6.05483L16.7702 8.41514C16.8538 8.49869 16.913 8.58921 16.9478 8.68668C16.9826 8.78416 17 8.8886 17 9C17 9.1114 16.9826 9.21584 16.9478 9.31332C16.913 9.41079 16.8538 9.50131 16.7702 9.58486L14.389 11.9661C14.2219 12.1332 14.027 12.2132 13.8042 12.2063C13.5814 12.1993 13.3864 12.1123 13.2193 11.9452C13.0522 11.7781 12.9687 11.5796 12.9687 11.3499C12.9687 11.1201 13.0522 10.9217 13.2193 10.7546L14.1384 9.83551ZM8.16449 3.86162L7.22454 4.80157C7.05744 4.96867 6.86249 5.05222 6.63969 5.05222C6.41688 5.05222 6.22193 4.96867 6.05483 4.80157C5.88773 4.63446 5.80418 4.43603 5.80418 4.20627C5.80418 3.9765 5.88773 3.77807 6.05483 3.61097L8.41514 1.22977C8.49869 1.14621 8.58921 1.08703 8.68668 1.05222C8.78416 1.01741 8.8886 1 9 1C9.1114 1 9.21584 1.01741 9.31332 1.05222C9.41079 1.08703 9.50131 1.14621 9.58486 1.22977L11.9661 3.61097C12.1332 3.77807 12.2167 3.97302 12.2167 4.19582C12.2167 4.41862 12.1332 4.61358 11.9661 4.78068C11.799 4.94778 11.6005 5.03133 11.3708 5.03133C11.141 5.03133 10.9426 4.94778 10.7755 4.78068L9.83551 3.86162V6.49347C9.83551 6.7302 9.75544 6.92863 9.5953 7.08877C9.43516 7.24891 9.23673 7.32898 9 7.32898C8.76327 7.32898 8.56484 7.24891 8.4047 7.08877C8.24456 6.92863 8.16449 6.7302 8.16449 6.49347V3.86162Z\", fill: \"currentColor\" }));\nexport default SvgMove;\n","import * as React from \"react\";\nconst SvgNotebookPen = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M13.4 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7.4\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M2 6h4\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M2 10h4\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M2 14h4\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M2 18h4\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M21.378 5.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z\" }));\nexport default SvgNotebookPen;\n","import * as React from \"react\";\nconst SvgNotes = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M1.88889 14.5C1.63704 14.5 1.42593 14.4122 1.25556 14.2365C1.08519 14.0608 1 13.8431 1 13.5833C1 13.3236 1.08519 13.1059 1.25556 12.9302C1.42593 12.7545 1.63704 12.6667 1.88889 12.6667H10.7778C11.0296 12.6667 11.2407 12.7545 11.4111 12.9302C11.5815 13.1059 11.6667 13.3236 11.6667 13.5833C11.6667 13.8431 11.5815 14.0608 11.4111 14.2365C11.2407 14.4122 11.0296 14.5 10.7778 14.5H1.88889ZM1.88889 9.91667C1.63704 9.91667 1.42593 9.82882 1.25556 9.65313C1.08519 9.47743 1 9.25972 1 9C1 8.74028 1.08519 8.52257 1.25556 8.34688C1.42593 8.17118 1.63704 8.08333 1.88889 8.08333H16.1111C16.363 8.08333 16.5741 8.17118 16.7444 8.34688C16.9148 8.52257 17 8.74028 17 9C17 9.25972 16.9148 9.47743 16.7444 9.65313C16.5741 9.82882 16.363 9.91667 16.1111 9.91667H1.88889ZM1.88889 5.33333C1.63704 5.33333 1.42593 5.24549 1.25556 5.06979C1.08519 4.8941 1 4.67639 1 4.41667C1 4.15694 1.08519 3.93924 1.25556 3.76354C1.42593 3.58785 1.63704 3.5 1.88889 3.5H16.1111C16.363 3.5 16.5741 3.58785 16.7444 3.76354C16.9148 3.93924 17 4.15694 17 4.41667C17 4.67639 16.9148 4.8941 16.7444 5.06979C16.5741 5.24549 16.363 5.33333 16.1111 5.33333H1.88889Z\", fill: \"currentColor\" }));\nexport default SvgNotes;\n","import * as React from \"react\";\nconst SvgOrchestrator = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 17\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M2.90625 16.3533C2.46875 15.9221 2.25 15.3986 2.25 14.7826C2.25 14.1667 2.46875 13.6431 2.90625 13.212C3.34375 12.7808 3.875 12.5652 4.5 12.5652C4.675 12.5652 4.8375 12.5837 4.9875 12.6207C5.1375 12.6576 5.28125 12.7069 5.41875 12.7685L6.4875 11.4565C6.1375 11.0746 5.89375 10.6435 5.75625 10.163C5.61875 9.68261 5.5875 9.20217 5.6625 8.72174L4.14375 8.22283C3.93125 8.5308 3.6625 8.77717 3.3375 8.96196C3.0125 9.14674 2.65 9.23913 2.25 9.23913C1.625 9.23913 1.09375 9.02355 0.65625 8.59239C0.21875 8.16123 0 7.63768 0 7.02174C0 6.4058 0.21875 5.88225 0.65625 5.45109C1.09375 5.01993 1.625 4.80435 2.25 4.80435C2.875 4.80435 3.40625 5.01993 3.84375 5.45109C4.28125 5.88225 4.5 6.4058 4.5 7.02174V7.16957L6.01875 7.68696C6.26875 7.24348 6.60313 6.86775 7.02188 6.55978C7.44063 6.25181 7.9125 6.05471 8.4375 5.96848V4.36087C7.95 4.22536 7.54688 3.96359 7.22813 3.57554C6.90938 3.1875 6.75 2.73478 6.75 2.21739C6.75 1.60145 6.96875 1.0779 7.40625 0.646739C7.84375 0.21558 8.375 0 9 0C9.625 0 10.1562 0.21558 10.5938 0.646739C11.0312 1.0779 11.25 1.60145 11.25 2.21739C11.25 2.73478 11.0875 3.1875 10.7625 3.57554C10.4375 3.96359 10.0375 4.22536 9.5625 4.36087V5.96848C10.0875 6.05471 10.5594 6.25181 10.9781 6.55978C11.3969 6.86775 11.7313 7.24348 11.9813 7.68696L13.5 7.16957V7.02174C13.5 6.4058 13.7188 5.88225 14.1563 5.45109C14.5938 5.01993 15.125 4.80435 15.75 4.80435C16.375 4.80435 16.9062 5.01993 17.3438 5.45109C17.7812 5.88225 18 6.4058 18 7.02174C18 7.63768 17.7812 8.16123 17.3438 8.59239C16.9062 9.02355 16.375 9.23913 15.75 9.23913C15.35 9.23913 14.9844 9.14674 14.6531 8.96196C14.3219 8.77717 14.0563 8.5308 13.8563 8.22283L12.3375 8.72174C12.4125 9.20217 12.3813 9.67953 12.2438 10.1538C12.1063 10.6281 11.8625 11.0623 11.5125 11.4565L12.5813 12.75C12.7188 12.6884 12.8625 12.6422 13.0125 12.6114C13.1625 12.5806 13.325 12.5652 13.5 12.5652C14.125 12.5652 14.6563 12.7808 15.0938 13.212C15.5313 13.6431 15.75 14.1667 15.75 14.7826C15.75 15.3986 15.5313 15.9221 15.0938 16.3533C14.6563 16.7844 14.125 17 13.5 17C12.875 17 12.3438 16.7844 11.9062 16.3533C11.4688 15.9221 11.25 15.3986 11.25 14.7826C11.25 14.5362 11.2906 14.2991 11.3719 14.0712C11.4531 13.8433 11.5625 13.637 11.7 13.4522L10.6313 12.1402C10.1188 12.4236 9.57188 12.5652 8.99063 12.5652C8.40938 12.5652 7.8625 12.4236 7.35 12.1402L6.3 13.4522C6.4375 13.637 6.54688 13.8433 6.62813 14.0712C6.70938 14.2991 6.75 14.5362 6.75 14.7826C6.75 15.3986 6.53125 15.9221 6.09375 16.3533C5.65625 16.7844 5.125 17 4.5 17C3.875 17 3.34375 16.7844 2.90625 16.3533ZM2.25 7.76087C2.4625 7.76087 2.64062 7.69004 2.78438 7.54837C2.92813 7.4067 3 7.23116 3 7.02174C3 6.81232 2.92813 6.63678 2.78438 6.49511C2.64062 6.35344 2.4625 6.28261 2.25 6.28261C2.0375 6.28261 1.85938 6.35344 1.71563 6.49511C1.57188 6.63678 1.5 6.81232 1.5 7.02174C1.5 7.23116 1.57188 7.4067 1.71563 7.54837C1.85938 7.69004 2.0375 7.76087 2.25 7.76087ZM5.03438 15.3092C5.17813 15.1676 5.25 14.992 5.25 14.7826C5.25 14.5732 5.17813 14.3976 5.03438 14.256C4.89062 14.1143 4.7125 14.0435 4.5 14.0435C4.2875 14.0435 4.10938 14.1143 3.96563 14.256C3.82188 14.3976 3.75 14.5732 3.75 14.7826C3.75 14.992 3.82188 15.1676 3.96563 15.3092C4.10938 15.4509 4.2875 15.5217 4.5 15.5217C4.7125 15.5217 4.89062 15.4509 5.03438 15.3092ZM9.53438 2.74402C9.67813 2.60236 9.75 2.42681 9.75 2.21739C9.75 2.00797 9.67813 1.83243 9.53438 1.69076C9.39062 1.54909 9.2125 1.47826 9 1.47826C8.7875 1.47826 8.60938 1.54909 8.46563 1.69076C8.32188 1.83243 8.25 2.00797 8.25 2.21739C8.25 2.42681 8.32188 2.60236 8.46563 2.74402C8.60938 2.88569 8.7875 2.95652 9 2.95652C9.2125 2.95652 9.39062 2.88569 9.53438 2.74402ZM9 11.087C9.525 11.087 9.96875 10.9083 10.3313 10.5511C10.6938 10.1938 10.875 9.75652 10.875 9.23913C10.875 8.72174 10.6938 8.28442 10.3313 7.92717C9.96875 7.56993 9.525 7.3913 9 7.3913C8.475 7.3913 8.03125 7.56993 7.66875 7.92717C7.30625 8.28442 7.125 8.72174 7.125 9.23913C7.125 9.75652 7.30625 10.1938 7.66875 10.5511C8.03125 10.9083 8.475 11.087 9 11.087ZM14.0344 15.3092C14.1781 15.1676 14.25 14.992 14.25 14.7826C14.25 14.5732 14.1781 14.3976 14.0344 14.256C13.8906 14.1143 13.7125 14.0435 13.5 14.0435C13.2875 14.0435 13.1094 14.1143 12.9656 14.256C12.8219 14.3976 12.75 14.5732 12.75 14.7826C12.75 14.992 12.8219 15.1676 12.9656 15.3092C13.1094 15.4509 13.2875 15.5217 13.5 15.5217C13.7125 15.5217 13.8906 15.4509 14.0344 15.3092ZM16.2844 7.54837C16.4281 7.4067 16.5 7.23116 16.5 7.02174C16.5 6.81232 16.4281 6.63678 16.2844 6.49511C16.1406 6.35344 15.9625 6.28261 15.75 6.28261C15.5375 6.28261 15.3594 6.35344 15.2156 6.49511C15.0719 6.63678 15 6.81232 15 7.02174C15 7.23116 15.0719 7.4067 15.2156 7.54837C15.3594 7.69004 15.5375 7.76087 15.75 7.76087C15.9625 7.76087 16.1406 7.69004 16.2844 7.54837Z\", fill: \"currentColor\" }));\nexport default SvgOrchestrator;\n","import * as React from \"react\";\nconst SvgPencil = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"-0.25 -0.25 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M0.750015 0.750015L12.35 3.55002L13.55 9.55002L9.55002 13.55L3.55002 12.35L0.750015 0.750015ZM0.750015 0.750015L6.81882 6.81882M8.75002 14.35L14.35 8.75002L16.75 11.15L11.15 16.75L8.75002 14.35ZM9.55002 7.95002C9.55002 8.83367 8.83367 9.55002 7.95002 9.55002C7.06636 9.55002 6.35002 8.83367 6.35002 7.95002C6.35002 7.06636 7.06636 6.35002 7.95002 6.35002C8.83367 6.35002 9.55002 7.06636 9.55002 7.95002Z\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }));\nexport default SvgPencil;\n","import * as React from \"react\";\nconst SvgPin = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M13 2.61209V8.25441L14.7 9.62468C14.8 9.70529 14.875 9.79597 14.925 9.89672C14.975 9.99748 15 10.1016 15 10.2091V10.6725C15 10.9009 14.9042 11.0924 14.7125 11.2469C14.5208 11.4013 14.2833 11.4786 14 11.4786H10V16.194C10 16.4223 9.90417 16.6138 9.7125 16.7683C9.52083 16.9228 9.28333 17 9 17C8.71667 17 8.47917 16.9228 8.2875 16.7683C8.09583 16.6138 8 16.4223 8 16.194V11.4786H4C3.71667 11.4786 3.47917 11.4013 3.2875 11.2469C3.09583 11.0924 3 10.9009 3 10.6725V10.2091C3 10.1016 3.025 9.99748 3.075 9.89672C3.125 9.79597 3.2 9.70529 3.3 9.62468L5 8.25441V2.61209C4.71667 2.61209 4.47917 2.53484 4.2875 2.38035C4.09583 2.22586 4 2.03442 4 1.80605C4 1.57767 4.09583 1.38623 4.2875 1.23174C4.47917 1.07725 4.71667 1 5 1H13C13.2833 1 13.5208 1.07725 13.7125 1.23174C13.9042 1.38623 14 1.57767 14 1.80605C14 2.03442 13.9042 2.22586 13.7125 2.38035C13.5208 2.53484 13.2833 2.61209 13 2.61209ZM5.85 9.8665H12.15L11 8.93955V2.61209H7V8.93955L5.85 9.8665Z\", fill: \"currentColor\" }));\nexport default SvgPin;\n","import * as React from \"react\";\nconst SvgPolyline = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9 3.9H10.6667V2.2H9V3.9ZM3.16667 10.7H4.83333V9H3.16667V10.7ZM13.1667 15.8H14.8333V14.1H13.1667V15.8ZM11.5 15.8V15.375L5.66667 12.4H3.16667C2.70833 12.4 2.31597 12.2335 1.98958 11.9006C1.66319 11.5677 1.5 11.1675 1.5 10.7V9C1.5 8.5325 1.66319 8.13229 1.98958 7.79938C2.31597 7.46646 2.70833 7.3 3.16667 7.3H5.08333L7.33333 4.665V2.2C7.33333 1.7325 7.49653 1.33229 7.82292 0.999375C8.14931 0.666458 8.54167 0.5 9 0.5H10.6667C11.125 0.5 11.5174 0.666458 11.8438 0.999375C12.1701 1.33229 12.3333 1.7325 12.3333 2.2V3.9C12.3333 4.3675 12.1701 4.76771 11.8438 5.10063C11.5174 5.43354 11.125 5.6 10.6667 5.6H8.75L6.5 8.235V10.9125L11.6042 13.505C11.7153 13.1792 11.9132 12.9135 12.1979 12.7081C12.4826 12.5027 12.8056 12.4 13.1667 12.4H14.8333C15.2917 12.4 15.684 12.5665 16.0104 12.8994C16.3368 13.2323 16.5 13.6325 16.5 14.1V15.8C16.5 16.2675 16.3368 16.6677 16.0104 17.0006C15.684 17.3335 15.2917 17.5 14.8333 17.5H13.1667C12.7083 17.5 12.316 17.3335 11.9896 17.0006C11.6632 16.6677 11.5 16.2675 11.5 15.8Z\", fill: \"currentColor\" }));\nexport default SvgPolyline;\n","import * as React from \"react\";\nconst SvgPuzzle = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z\" }));\nexport default SvgPuzzle;\n","import * as React from \"react\";\nconst SvgRadio = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9 13C10.1067 13 11.05 12.61 11.83 11.83C12.61 11.05 13 10.1067 13 9C13 7.89333 12.61 6.95 11.83 6.17C11.05 5.39 10.1067 5 9 5C7.89333 5 6.95 5.39 6.17 6.17C5.39 6.95 5 7.89333 5 9C5 10.1067 5.39 11.05 6.17 11.83C6.95 12.61 7.89333 13 9 13ZM9 17C7.89333 17 6.85333 16.79 5.88 16.37C4.90667 15.95 4.06 15.38 3.34 14.66C2.62 13.94 2.05 13.0933 1.63 12.12C1.21 11.1467 1 10.1067 1 9C1 7.89333 1.21 6.85333 1.63 5.88C2.05 4.90667 2.62 4.06 3.34 3.34C4.06 2.62 4.90667 2.05 5.88 1.63C6.85333 1.21 7.89333 1 9 1C10.1067 1 11.1467 1.21 12.12 1.63C13.0933 2.05 13.94 2.62 14.66 3.34C15.38 4.06 15.95 4.90667 16.37 5.88C16.79 6.85333 17 7.89333 17 9C17 10.1067 16.79 11.1467 16.37 12.12C15.95 13.0933 15.38 13.94 14.66 14.66C13.94 15.38 13.0933 15.95 12.12 16.37C11.1467 16.79 10.1067 17 9 17ZM9 15.4C10.7867 15.4 12.3 14.78 13.54 13.54C14.78 12.3 15.4 10.7867 15.4 9C15.4 7.21333 14.78 5.7 13.54 4.46C12.3 3.22 10.7867 2.6 9 2.6C7.21333 2.6 5.7 3.22 4.46 4.46C3.22 5.7 2.6 7.21333 2.6 9C2.6 10.7867 3.22 12.3 4.46 13.54C5.7 14.78 7.21333 15.4 9 15.4Z\", fill: \"currentColor\" }));\nexport default SvgRadio;\n","import * as React from \"react\";\nconst SvgRedo = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M13.057 16C13.3299 16 13.5586 15.9079 13.7432 15.7238C13.9278 15.5397 14.0201 15.3116 14.0201 15.0395C14.0201 14.7673 13.9278 14.5392 13.7432 14.3551C13.5586 14.171 13.3299 14.0789 13.057 14.0789H7.18218C6.17095 14.0789 5.29214 13.7587 4.54575 13.1184C3.79936 12.478 3.42616 11.6775 3.42616 10.717C3.42616 9.75643 3.79936 8.95598 4.54575 8.31561C5.29214 7.67524 6.17095 7.35506 7.18218 7.35506H13.2496L11.4197 9.1801C11.2432 9.3562 11.1549 9.58033 11.1549 9.85249C11.1549 10.1246 11.2432 10.3488 11.4197 10.5249C11.5963 10.701 11.821 10.789 12.0939 10.789C12.3668 10.789 12.5915 10.701 12.7681 10.5249L16.2352 7.0669C16.3315 6.97084 16.3997 6.86678 16.4398 6.75472C16.4799 6.64265 16.5 6.52258 16.5 6.39451C16.5 6.26644 16.4799 6.14637 16.4398 6.03431C16.3997 5.92224 16.3315 5.81818 16.2352 5.72213L12.7681 2.26415C12.5915 2.08805 12.3668 2 12.0939 2C11.821 2 11.5963 2.08805 11.4197 2.26415C11.2432 2.44025 11.1549 2.66438 11.1549 2.93654C11.1549 3.20869 11.2432 3.43282 11.4197 3.60892L13.2496 5.43396H7.18218C5.6252 5.43396 4.28892 5.93825 3.17336 6.94683C2.05779 7.9554 1.5 9.21212 1.5 10.717C1.5 12.2218 2.05779 13.4786 3.17336 14.4871C4.28892 15.4957 5.6252 16 7.18218 16H13.057Z\", fill: \"currentColor\" }));\nexport default SvgRedo;\n","import * as React from \"react\";\nconst SvgRefresh = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M4.125 9.04019C4.125 9.25453 4.13854 9.46552 4.16562 9.67317C4.19271 9.88081 4.2401 10.0851 4.30781 10.2861C4.37552 10.5138 4.36875 10.7315 4.2875 10.9391C4.20625 11.1468 4.06406 11.2975 3.86094 11.3913C3.64427 11.4984 3.43099 11.5085 3.22109 11.4214C3.0112 11.3343 2.8724 11.1769 2.80469 10.9492C2.69635 10.6411 2.61849 10.3262 2.57109 10.0047C2.5237 9.68322 2.5 9.3617 2.5 9.04019C2.5 7.24507 3.12969 5.71789 4.38906 4.45863C5.64844 3.19937 7.18542 2.56974 9 2.56974H9.14219L8.41094 1.84634C8.26198 1.69898 8.1875 1.51143 8.1875 1.28369C8.1875 1.05595 8.26198 0.8684 8.41094 0.72104C8.5599 0.57368 8.74948 0.5 8.97969 0.5C9.2099 0.5 9.39948 0.57368 9.54844 0.72104L11.6609 2.81087C11.8234 2.97163 11.9047 3.15918 11.9047 3.37352C11.9047 3.58786 11.8234 3.77541 11.6609 3.93617L9.54844 6.026C9.39948 6.17336 9.2099 6.24705 8.97969 6.24705C8.74948 6.24705 8.5599 6.17336 8.41094 6.026C8.26198 5.87864 8.1875 5.6911 8.1875 5.46336C8.1875 5.23562 8.26198 5.04807 8.41094 4.90071L9.14219 4.1773H9C7.64583 4.1773 6.49479 4.64953 5.54688 5.59397C4.59896 6.53842 4.125 7.68716 4.125 9.04019ZM13.875 8.95981C13.875 8.74547 13.8615 8.53448 13.8344 8.32683C13.8073 8.11919 13.7599 7.91489 13.6922 7.71395C13.6245 7.48621 13.6312 7.26852 13.7125 7.06087C13.7937 6.85323 13.9359 6.70252 14.1391 6.60875C14.3557 6.50158 14.569 6.49153 14.7789 6.57861C14.9888 6.66568 15.1276 6.82309 15.1953 7.05083C15.3036 7.35894 15.3815 7.67376 15.4289 7.99527C15.4763 8.31678 15.5 8.6383 15.5 8.95981C15.5 10.7549 14.8703 12.2821 13.6109 13.5414C12.3516 14.8006 10.8146 15.4303 9 15.4303H8.85781L9.58906 16.1537C9.73802 16.301 9.8125 16.4886 9.8125 16.7163C9.8125 16.944 9.73802 17.1316 9.58906 17.279C9.4401 17.4263 9.25052 17.5 9.02031 17.5C8.7901 17.5 8.60052 17.4263 8.45156 17.279L6.33906 15.1891C6.17656 15.0284 6.09531 14.8408 6.09531 14.6265C6.09531 14.4121 6.17656 14.2246 6.33906 14.0638L8.45156 11.974C8.60052 11.8266 8.7901 11.753 9.02031 11.753C9.25052 11.753 9.4401 11.8266 9.58906 11.974C9.73802 12.1214 9.8125 12.3089 9.8125 12.5366C9.8125 12.7644 9.73802 12.9519 9.58906 13.0993L8.85781 13.8227H9C10.3542 13.8227 11.5052 13.3505 12.4531 12.406C13.401 11.4616 13.875 10.3128 13.875 8.95981Z\", fill: \"currentColor\" }));\nexport default SvgRefresh;\n","import * as React from \"react\";\nconst SvgRemove = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M2.57143 10C2.26786 10 2.01339 9.90417 1.80804 9.7125C1.60268 9.52083 1.5 9.28333 1.5 9C1.5 8.71667 1.60268 8.47917 1.80804 8.2875C2.01339 8.09583 2.26786 8 2.57143 8H15.4286C15.7321 8 15.9866 8.09583 16.192 8.2875C16.3973 8.47917 16.5 8.71667 16.5 9C16.5 9.28333 16.3973 9.52083 16.192 9.7125C15.9866 9.90417 15.7321 10 15.4286 10H2.57143Z\", fill: \"currentColor\" }));\nexport default SvgRemove;\n","import * as React from \"react\";\nconst SvgReview = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M11.2494 1.5H6.7494C6.3352 1.5 5.9994 1.8357 5.9994 2.25V3.75C5.9994 4.1642 6.3352 4.5 6.7494 4.5H11.2494C11.6636 4.5 11.9994 4.1642 11.9994 3.75V2.25C11.9994 1.8357 11.6636 1.5 11.2494 1.5Z\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M12.0006 3H13.5006C13.8984 3 14.2799 3.1581 14.5612 3.4394C14.8425 3.7207 15.0006 4.1022 15.0006 4.5V15C15.0006 15.3979 14.8425 15.7794 14.5612 16.0607C14.2799 16.342 13.8984 16.5 13.5006 16.5H4.5006C4.1028 16.5 3.7212 16.342 3.4399 16.0607C3.1586 15.7794 3.0006 15.3979 3.0006 15V4.5C3.0006 4.1022 3.1586 3.7207 3.4399 3.4394C3.7212 3.1581 4.1028 3 4.5006 3H6.0006\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M6.75 10.5L8.25 12L11.25 9\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }));\nexport default SvgReview;\n","import * as React from \"react\";\nconst SvgSearch = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M6.9175 12.835C5.26363 12.835 3.86392 12.2622 2.71835 11.1166C1.57278 9.97108 1 8.57136 1 6.9175C1 5.26363 1.57278 3.86392 2.71835 2.71835C3.86392 1.57278 5.26363 1 6.9175 1C8.57136 1 9.97108 1.57278 11.1166 2.71835C12.2622 3.86392 12.835 5.26363 12.835 6.9175C12.835 7.58511 12.7288 8.21479 12.5164 8.80654C12.3039 9.39829 12.0156 9.92176 11.6515 10.377L16.7496 15.4751C16.9165 15.642 17 15.8544 17 16.1124C17 16.3703 16.9165 16.5827 16.7496 16.7496C16.5827 16.9165 16.3703 17 16.1124 17C15.8544 17 15.642 16.9165 15.4751 16.7496L10.377 11.6515C9.92176 12.0156 9.39829 12.3039 8.80654 12.5164C8.21479 12.7288 7.58511 12.835 6.9175 12.835ZM6.9175 11.0142C8.05548 11.0142 9.02276 10.6159 9.81935 9.81935C10.6159 9.02276 11.0142 8.05548 11.0142 6.9175C11.0142 5.77952 10.6159 4.81223 9.81935 4.01565C9.02276 3.21906 8.05548 2.82077 6.9175 2.82077C5.77952 2.82077 4.81223 3.21906 4.01565 4.01565C3.21906 4.81223 2.82077 5.77952 2.82077 6.9175C2.82077 8.05548 3.21906 9.02276 4.01565 9.81935C4.81223 10.6159 5.77952 11.0142 6.9175 11.0142Z\", fill: \"currentColor\" }));\nexport default SvgSearch;\n","import * as React from \"react\";\nconst SvgServer = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"rect\", { width: 20, height: 8, x: 2, y: 2, rx: 2, ry: 2 }), /* @__PURE__ */ React.createElement(\"rect\", { width: 20, height: 8, x: 2, y: 14, rx: 2, ry: 2 }), /* @__PURE__ */ React.createElement(\"line\", { x1: 6, x2: 6.01, y1: 6, y2: 6 }), /* @__PURE__ */ React.createElement(\"line\", { x1: 6, x2: 6.01, y1: 18, y2: 18 }));\nexport default SvgServer;\n","import * as React from \"react\";\nconst SvgSettings = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M8.13603 16.5C7.80515 16.5 7.52022 16.3875 7.28125 16.1625C7.04228 15.9375 6.89828 15.6625 6.84926 15.3375L6.68382 14.1C6.52451 14.0375 6.37439 13.9625 6.23346 13.875C6.09252 13.7875 5.95466 13.6938 5.81985 13.5938L4.68015 14.0813C4.37377 14.2188 4.0674 14.2313 3.76103 14.1188C3.45466 14.0063 3.21569 13.8063 3.04412 13.5188L2.18015 11.9813C2.00858 11.6938 1.95956 11.3875 2.03309 11.0625C2.10662 10.7375 2.27206 10.4688 2.52941 10.2563L3.50368 9.50625C3.49142 9.41875 3.48529 9.33438 3.48529 9.25313V8.74688C3.48529 8.66563 3.49142 8.58125 3.50368 8.49375L2.52941 7.74375C2.27206 7.53125 2.10662 7.2625 2.03309 6.9375C1.95956 6.6125 2.00858 6.30625 2.18015 6.01875L3.04412 4.48125C3.21569 4.19375 3.45466 3.99375 3.76103 3.88125C4.0674 3.76875 4.37377 3.78125 4.68015 3.91875L5.81985 4.40625C5.95466 4.30625 6.09559 4.2125 6.24265 4.125C6.38971 4.0375 6.53677 3.9625 6.68382 3.9L6.84926 2.6625C6.89828 2.3375 7.04228 2.0625 7.28125 1.8375C7.52022 1.6125 7.80515 1.5 8.13603 1.5H9.86397C10.1949 1.5 10.4798 1.6125 10.7188 1.8375C10.9577 2.0625 11.1017 2.3375 11.1507 2.6625L11.3162 3.9C11.4755 3.9625 11.6256 4.0375 11.7665 4.125C11.9075 4.2125 12.0453 4.30625 12.1801 4.40625L13.3199 3.91875C13.6262 3.78125 13.9326 3.76875 14.239 3.88125C14.5453 3.99375 14.7843 4.19375 14.9559 4.48125L15.8199 6.01875C15.9914 6.30625 16.0404 6.6125 15.9669 6.9375C15.8934 7.2625 15.7279 7.53125 15.4706 7.74375L14.4963 8.49375C14.5086 8.58125 14.5147 8.66563 14.5147 8.74688V9.25313C14.5147 9.33438 14.5025 9.41875 14.4779 9.50625L15.4522 10.2563C15.7096 10.4688 15.875 10.7375 15.9485 11.0625C16.0221 11.3875 15.973 11.6938 15.8015 11.9813L14.9191 13.5188C14.7475 13.8063 14.5086 14.0063 14.2022 14.1188C13.8958 14.2313 13.5895 14.2188 13.2831 14.0813L12.1801 13.5938C12.0453 13.6938 11.9044 13.7875 11.7574 13.875C11.6103 13.9625 11.4632 14.0375 11.3162 14.1L11.1507 15.3375C11.1017 15.6625 10.9577 15.9375 10.7188 16.1625C10.4798 16.3875 10.1949 16.5 9.86397 16.5H8.13603ZM8.26471 15H9.71691L9.97426 13.0125C10.3542 12.9125 10.7065 12.7656 11.0312 12.5719C11.356 12.3781 11.6532 12.1438 11.9228 11.8688L13.7426 12.6375L14.4596 11.3625L12.8787 10.1438C12.94 9.96875 12.9828 9.78438 13.0074 9.59063C13.0319 9.39688 13.0441 9.2 13.0441 9C13.0441 8.8 13.0319 8.60313 13.0074 8.40938C12.9828 8.21563 12.94 8.03125 12.8787 7.85625L14.4596 6.6375L13.7426 5.3625L11.9228 6.15C11.6532 5.8625 11.356 5.62188 11.0312 5.42813C10.7065 5.23438 10.3542 5.0875 9.97426 4.9875L9.73529 3H8.28309L8.02574 4.9875C7.64583 5.0875 7.2935 5.23438 6.96875 5.42813C6.644 5.62188 6.34681 5.85625 6.07721 6.13125L4.25735 5.3625L3.54044 6.6375L5.12132 7.8375C5.06005 8.025 5.01716 8.2125 4.99265 8.4C4.96814 8.5875 4.95588 8.7875 4.95588 9C4.95588 9.2 4.96814 9.39375 4.99265 9.58125C5.01716 9.76875 5.06005 9.95625 5.12132 10.1438L3.54044 11.3625L4.25735 12.6375L6.07721 11.85C6.34681 12.1375 6.644 12.3781 6.96875 12.5719C7.2935 12.7656 7.64583 12.9125 8.02574 13.0125L8.26471 15ZM9.03676 11.625C9.74755 11.625 10.3542 11.3688 10.8566 10.8563C11.3591 10.3438 11.6103 9.725 11.6103 9C11.6103 8.275 11.3591 7.65625 10.8566 7.14375C10.3542 6.63125 9.74755 6.375 9.03676 6.375C8.31373 6.375 7.70404 6.63125 7.20772 7.14375C6.7114 7.65625 6.46324 8.275 6.46324 9C6.46324 9.725 6.7114 10.3438 7.20772 10.8563C7.70404 11.3688 8.31373 11.625 9.03676 11.625Z\", fill: \"currentColor\" }));\nexport default SvgSettings;\n","import * as React from \"react\";\nconst SvgShieldCheck = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m9 12 2 2 4-4\" }));\nexport default SvgShieldCheck;\n","import * as React from \"react\";\nconst SvgSlider = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M15.75 11.5C15.285 11.5 14.865 11.3583 14.49 11.075C14.115 10.7917 13.845 10.4333 13.68 10H0.9C0.645 10 0.43125 9.90417 0.25875 9.7125C0.08625 9.52083 0 9.28333 0 9C0 8.71667 0.08625 8.47917 0.25875 8.2875C0.43125 8.09583 0.645 8 0.9 8H13.68C13.845 7.56667 14.115 7.20833 14.49 6.925C14.865 6.64167 15.285 6.5 15.75 6.5C16.38 6.5 16.9125 6.74167 17.3475 7.225C17.7825 7.70833 18 8.3 18 9C18 9.7 17.7825 10.2917 17.3475 10.775C16.9125 11.2583 16.38 11.5 15.75 11.5Z\", fill: \"currentColor\" }));\nexport default SvgSlider;\n","import * as React from \"react\";\nconst SvgSliders = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"-1 -1 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M8 16C7.74815 16 7.53704 15.9148 7.36667 15.7444C7.1963 15.5741 7.11111 15.363 7.11111 15.1111V11.5556C7.11111 11.3037 7.1963 11.0926 7.36667 10.9222C7.53704 10.7519 7.74815 10.6667 8 10.6667C8.25185 10.6667 8.46296 10.7519 8.63333 10.9222C8.8037 11.0926 8.88889 11.3037 8.88889 11.5556V12.4444H15.1111C15.363 12.4444 15.5741 12.5296 15.7444 12.7C15.9148 12.8704 16 13.0815 16 13.3333C16 13.5852 15.9148 13.7963 15.7444 13.9667C15.5741 14.137 15.363 14.2222 15.1111 14.2222H8.88889V15.1111C8.88889 15.363 8.8037 15.5741 8.63333 15.7444C8.46296 15.9148 8.25185 16 8 16ZM0.888889 14.2222C0.637037 14.2222 0.425926 14.137 0.255556 13.9667C0.0851852 13.7963 0 13.5852 0 13.3333C0 13.0815 0.0851852 12.8704 0.255556 12.7C0.425926 12.5296 0.637037 12.4444 0.888889 12.4444H4.44444C4.6963 12.4444 4.90741 12.5296 5.07778 12.7C5.24815 12.8704 5.33333 13.0815 5.33333 13.3333C5.33333 13.5852 5.24815 13.7963 5.07778 13.9667C4.90741 14.137 4.6963 14.2222 4.44444 14.2222H0.888889ZM4.44444 10.6667C4.19259 10.6667 3.98148 10.5815 3.81111 10.4111C3.64074 10.2407 3.55556 10.0296 3.55556 9.77778V8.88889H0.888889C0.637037 8.88889 0.425926 8.8037 0.255556 8.63333C0.0851852 8.46296 0 8.25185 0 8C0 7.74815 0.0851852 7.53704 0.255556 7.36667C0.425926 7.1963 0.637037 7.11111 0.888889 7.11111H3.55556V6.22222C3.55556 5.97037 3.64074 5.75926 3.81111 5.58889C3.98148 5.41852 4.19259 5.33333 4.44444 5.33333C4.6963 5.33333 4.90741 5.41852 5.07778 5.58889C5.24815 5.75926 5.33333 5.97037 5.33333 6.22222V9.77778C5.33333 10.0296 5.24815 10.2407 5.07778 10.4111C4.90741 10.5815 4.6963 10.6667 4.44444 10.6667ZM8 8.88889C7.74815 8.88889 7.53704 8.8037 7.36667 8.63333C7.1963 8.46296 7.11111 8.25185 7.11111 8C7.11111 7.74815 7.1963 7.53704 7.36667 7.36667C7.53704 7.1963 7.74815 7.11111 8 7.11111H15.1111C15.363 7.11111 15.5741 7.1963 15.7444 7.36667C15.9148 7.53704 16 7.74815 16 8C16 8.25185 15.9148 8.46296 15.7444 8.63333C15.5741 8.8037 15.363 8.88889 15.1111 8.88889H8ZM11.5556 5.33333C11.3037 5.33333 11.0926 5.24815 10.9222 5.07778C10.7519 4.90741 10.6667 4.6963 10.6667 4.44444V0.888889C10.6667 0.637037 10.7519 0.425926 10.9222 0.255556C11.0926 0.0851852 11.3037 0 11.5556 0C11.8074 0 12.0185 0.0851852 12.1889 0.255556C12.3593 0.425926 12.4444 0.637037 12.4444 0.888889V1.77778H15.1111C15.363 1.77778 15.5741 1.86296 15.7444 2.03333C15.9148 2.2037 16 2.41481 16 2.66667C16 2.91852 15.9148 3.12963 15.7444 3.3C15.5741 3.47037 15.363 3.55556 15.1111 3.55556H12.4444V4.44444C12.4444 4.6963 12.3593 4.90741 12.1889 5.07778C12.0185 5.24815 11.8074 5.33333 11.5556 5.33333ZM0.888889 3.55556C0.637037 3.55556 0.425926 3.47037 0.255556 3.3C0.0851852 3.12963 0 2.91852 0 2.66667C0 2.41481 0.0851852 2.2037 0.255556 2.03333C0.425926 1.86296 0.637037 1.77778 0.888889 1.77778H8C8.25185 1.77778 8.46296 1.86296 8.63333 2.03333C8.8037 2.2037 8.88889 2.41481 8.88889 2.66667C8.88889 2.91852 8.8037 3.12963 8.63333 3.3C8.46296 3.47037 8.25185 3.55556 8 3.55556H0.888889Z\", fill: \"currentColor\" }));\nexport default SvgSliders;\n","import * as React from \"react\";\nconst SvgTag = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M17.0106 10.9125L10.9255 16.99C10.7553 17.16 10.5638 17.2875 10.3511 17.3725C10.1383 17.4575 9.92553 17.5 9.71277 17.5C9.5 17.5 9.28723 17.4575 9.07447 17.3725C8.8617 17.2875 8.67021 17.16 8.5 16.99L0.989362 9.48875C0.833333 9.33292 0.712766 9.15229 0.62766 8.94687C0.542553 8.74146 0.5 8.52542 0.5 8.29875V2.2C0.5 1.7325 0.666667 1.33229 1 0.999375C1.33333 0.666458 1.73404 0.5 2.20213 0.5H8.30851C8.53546 0.5 8.75532 0.546042 8.96809 0.638125C9.18085 0.730208 9.36525 0.854167 9.52128 1.01L17.0106 8.51125C17.1809 8.68125 17.305 8.8725 17.383 9.085C17.461 9.2975 17.5 9.51 17.5 9.7225C17.5 9.935 17.461 10.144 17.383 10.3494C17.305 10.5548 17.1809 10.7425 17.0106 10.9125ZM9.71277 15.8L15.7979 9.7225L8.28723 2.2H2.20213V8.2775L9.71277 15.8ZM4.32979 5.6C4.6844 5.6 4.98582 5.47604 5.23404 5.22813C5.48227 4.98021 5.60638 4.67917 5.60638 4.325C5.60638 3.97083 5.48227 3.66979 5.23404 3.42188C4.98582 3.17396 4.6844 3.05 4.32979 3.05C3.97518 3.05 3.67376 3.17396 3.42553 3.42188C3.1773 3.66979 3.05319 3.97083 3.05319 4.325C3.05319 4.67917 3.1773 4.98021 3.42553 5.22813C3.67376 5.47604 3.97518 5.6 4.32979 5.6Z\", fill: \"currentColor\" }));\nexport default SvgTag;\n","import * as React from \"react\";\nconst SvgText = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M6.025 16C5.67083 16 5.36979 15.8724 5.12188 15.6172C4.87396 15.362 4.75 15.0521 4.75 14.6875V4.625H1.775C1.42083 4.625 1.11979 4.4974 0.871875 4.24219C0.623958 3.98698 0.5 3.67708 0.5 3.3125C0.5 2.94792 0.623958 2.63802 0.871875 2.38281C1.11979 2.1276 1.42083 2 1.775 2H10.275C10.6292 2 10.9302 2.1276 11.1781 2.38281C11.426 2.63802 11.55 2.94792 11.55 3.3125C11.55 3.67708 11.426 3.98698 11.1781 4.24219C10.9302 4.4974 10.6292 4.625 10.275 4.625H7.3V14.6875C7.3 15.0521 7.17604 15.362 6.92812 15.6172C6.68021 15.8724 6.37917 16 6.025 16ZM13.675 16C13.3208 16 13.0198 15.8724 12.7719 15.6172C12.524 15.362 12.4 15.0521 12.4 14.6875V9H11.125C10.7708 9 10.4698 8.8724 10.2219 8.61719C9.97396 8.36198 9.85 8.05208 9.85 7.6875C9.85 7.32292 9.97396 7.01302 10.2219 6.75781C10.4698 6.5026 10.7708 6.375 11.125 6.375H16.225C16.5792 6.375 16.8802 6.5026 17.1281 6.75781C17.376 7.01302 17.5 7.32292 17.5 7.6875C17.5 8.05208 17.376 8.36198 17.1281 8.61719C16.8802 8.8724 16.5792 9 16.225 9H14.95V14.6875C14.95 15.0521 14.826 15.362 14.5781 15.6172C14.3302 15.8724 14.0292 16 13.675 16Z\", fill: \"currentColor\" }));\nexport default SvgText;\n","import * as React from \"react\";\nconst SvgToggle = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M4.90909 13.9091C3.54545 13.9091 2.38636 13.4319 1.43182 12.4773C0.477273 11.5228 0 10.3637 0 9.00003C0 7.6364 0.477273 6.47731 1.43182 5.52276C2.38636 4.56822 3.54545 4.09094 4.90909 4.09094H13.0909C14.4545 4.09094 15.6136 4.56822 16.5682 5.52276C17.5227 6.47731 18 7.6364 18 9.00003C18 10.3637 17.5227 11.5228 16.5682 12.4773C15.6136 13.4319 14.4545 13.9091 13.0909 13.9091H4.90909ZM4.90909 12.2728H13.0909C13.9909 12.2728 14.7614 11.9523 15.4023 11.3114C16.0432 10.6705 16.3636 9.90003 16.3636 9.00003C16.3636 8.10003 16.0432 7.32958 15.4023 6.68867C14.7614 6.04776 13.9909 5.72731 13.0909 5.72731H4.90909C4.00909 5.72731 3.23864 6.04776 2.59773 6.68867C1.95682 7.32958 1.63636 8.10003 1.63636 9.00003C1.63636 9.90003 1.95682 10.6705 2.59773 11.3114C3.23864 11.9523 4.00909 12.2728 4.90909 12.2728ZM13.0909 11.4546C13.7727 11.4546 14.3523 11.2159 14.8295 10.7387C15.3068 10.2614 15.5455 9.68185 15.5455 9.00003C15.5455 8.31822 15.3068 7.73867 14.8295 7.2614C14.3523 6.78412 13.7727 6.54549 13.0909 6.54549C12.4091 6.54549 11.8295 6.78412 11.3523 7.2614C10.875 7.73867 10.6364 8.31822 10.6364 9.00003C10.6364 9.68185 10.875 10.2614 11.3523 10.7387C11.8295 11.2159 12.4091 11.4546 13.0909 11.4546Z\", fill: \"currentColor\" }));\nexport default SvgToggle;\n","import * as React from \"react\";\nconst SvgUndo = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M4.94302 16C4.67014 16 4.44141 15.9079 4.25682 15.7238C4.07223 15.5397 3.97994 15.3116 3.97994 15.0395C3.97994 14.7673 4.07223 14.5392 4.25682 14.3551C4.44141 14.171 4.67014 14.0789 4.94302 14.0789H10.8178C11.8291 14.0789 12.7079 13.7587 13.4543 13.1184C14.2006 12.478 14.5738 11.6775 14.5738 10.717C14.5738 9.75643 14.2006 8.95598 13.4543 8.31561C12.7079 7.67524 11.8291 7.35506 10.8178 7.35506H4.7504L6.58026 9.1801C6.75682 9.3562 6.8451 9.58033 6.8451 9.85249C6.8451 10.1246 6.75682 10.3488 6.58026 10.5249C6.40369 10.701 6.17897 10.789 5.9061 10.789C5.63323 10.789 5.40851 10.701 5.23194 10.5249L1.76485 7.0669C1.66854 6.97084 1.60032 6.86678 1.56019 6.75472C1.52006 6.64265 1.5 6.52258 1.5 6.39451C1.5 6.26644 1.52006 6.14637 1.56019 6.03431C1.60032 5.92224 1.66854 5.81818 1.76485 5.72213L5.23194 2.26415C5.40851 2.08805 5.63323 2 5.9061 2C6.17897 2 6.40369 2.08805 6.58026 2.26415C6.75682 2.44025 6.8451 2.66438 6.8451 2.93654C6.8451 3.20869 6.75682 3.43282 6.58026 3.60892L4.7504 5.43396H10.8178C12.3748 5.43396 13.7111 5.93825 14.8266 6.94683C15.9422 7.9554 16.5 9.21212 16.5 10.717C16.5 12.2218 15.9422 13.4786 14.8266 14.4871C13.7111 15.4957 12.3748 16 10.8178 16H4.94302Z\", fill: \"currentColor\" }));\nexport default SvgUndo;\n","import * as React from \"react\";\nconst SvgUnfoldMore = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9.0001 14.7901L11.2253 12.565C11.4167 12.3736 11.648 12.2779 11.9191 12.2779C12.1903 12.2779 12.4216 12.3736 12.613 12.565C12.8044 12.7564 12.9001 12.9877 12.9001 13.2589C12.9001 13.53 12.8044 13.7613 12.613 13.9527L9.67004 16.8957C9.57433 16.9914 9.47065 17.0592 9.35899 17.099C9.24734 17.1389 9.12771 17.1589 9.0001 17.1589C8.87249 17.1589 8.75286 17.1389 8.6412 17.099C8.52955 17.0592 8.42586 16.9914 8.33016 16.8957L5.38721 13.9527C5.1958 13.7613 5.1001 13.53 5.1001 13.2589C5.1001 12.9877 5.1958 12.7564 5.38721 12.565C5.57863 12.3736 5.80991 12.2779 6.08108 12.2779C6.35224 12.2779 6.58353 12.3736 6.77494 12.565L9.0001 14.7901ZM9.0001 3.20978L6.77494 5.43493C6.58353 5.62634 6.35224 5.72205 6.08108 5.72205C5.80991 5.72205 5.57863 5.62634 5.38721 5.43493C5.1958 5.24352 5.1001 5.01223 5.1001 4.74106C5.1001 4.4699 5.1958 4.23861 5.38721 4.0472L8.33016 1.10425C8.42586 1.00855 8.52955 0.940758 8.6412 0.90088C8.75286 0.861003 8.87249 0.841064 9.0001 0.841064C9.12771 0.841064 9.24734 0.861003 9.35899 0.90088C9.47065 0.940758 9.57433 1.00855 9.67004 1.10425L12.613 4.0472C12.8044 4.23861 12.9001 4.4699 12.9001 4.74106C12.9001 5.01223 12.8044 5.24352 12.613 5.43493C12.4216 5.62634 12.1903 5.72205 11.9191 5.72205C11.648 5.72205 11.4167 5.62634 11.2253 5.43493L9.0001 3.20978Z\", fill: \"currentColor\" }));\nexport default SvgUnfoldMore;\n","import * as React from \"react\";\nconst SvgUnlock = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M4.125 17C3.67812 17 3.29557 16.8508 2.97734 16.5524C2.65911 16.254 2.5 15.8952 2.5 15.4762V7.85714C2.5 7.4381 2.65911 7.07937 2.97734 6.78095C3.29557 6.48254 3.67812 6.33333 4.125 6.33333H11.4375V4.80952C11.4375 4.1746 11.2005 3.63492 10.7266 3.19048C10.2526 2.74603 9.67708 2.52381 9 2.52381C8.43125 2.52381 7.93359 2.68571 7.50703 3.00952C7.08047 3.33333 6.79271 3.73651 6.64375 4.21905C6.58958 4.39683 6.47786 4.53968 6.30859 4.64762C6.13932 4.75556 5.95312 4.80952 5.75 4.80952C5.51979 4.80952 5.32682 4.73968 5.17109 4.6C5.01536 4.46032 4.95781 4.29524 4.99844 4.10476C5.18802 3.22857 5.65521 2.49206 6.4 1.89524C7.14479 1.29841 8.01146 1 9 1C10.124 1 11.082 1.37143 11.8742 2.11429C12.6664 2.85714 13.0625 3.75556 13.0625 4.80952V6.33333H13.875C14.3219 6.33333 14.7044 6.48254 15.0227 6.78095C15.3409 7.07937 15.5 7.4381 15.5 7.85714V15.4762C15.5 15.8952 15.3409 16.254 15.0227 16.5524C14.7044 16.8508 14.3219 17 13.875 17H4.125ZM4.125 15.4762H13.875V7.85714H4.125V15.4762ZM9 13.1905C9.44687 13.1905 9.82943 13.0413 10.1477 12.7429C10.4659 12.4444 10.625 12.0857 10.625 11.6667C10.625 11.2476 10.4659 10.8889 10.1477 10.5905C9.82943 10.2921 9.44687 10.1429 9 10.1429C8.55312 10.1429 8.17057 10.2921 7.85234 10.5905C7.53411 10.8889 7.375 11.2476 7.375 11.6667C7.375 12.0857 7.53411 12.4444 7.85234 12.7429C8.17057 13.0413 8.55312 13.1905 9 13.1905Z\", fill: \"currentColor\" }));\nexport default SvgUnlock;\n","import * as React from \"react\";\nconst SvgUnsupported = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9 16.5C7.9625 16.5 6.9875 16.3031 6.075 15.9094C5.1625 15.5156 4.36875 14.9813 3.69375 14.3063C3.01875 13.6313 2.48438 12.8375 2.09063 11.925C1.69688 11.0125 1.5 10.0375 1.5 9C1.5 7.9625 1.69688 6.9875 2.09063 6.075C2.48438 5.1625 3.01875 4.36875 3.69375 3.69375C4.36875 3.01875 5.1625 2.48438 6.075 2.09063C6.9875 1.69688 7.9625 1.5 9 1.5C10.0375 1.5 11.0125 1.69688 11.925 2.09063C12.8375 2.48438 13.6313 3.01875 14.3063 3.69375C14.9813 4.36875 15.5156 5.1625 15.9094 6.075C16.3031 6.9875 16.5 7.9625 16.5 9C16.5 10.0375 16.3031 11.0125 15.9094 11.925C15.5156 12.8375 14.9813 13.6313 14.3063 14.3063C13.6313 14.9813 12.8375 15.5156 11.925 15.9094C11.0125 16.3031 10.0375 16.5 9 16.5ZM9 15C9.675 15 10.325 14.8906 10.95 14.6719C11.575 14.4531 12.15 14.1375 12.675 13.725L4.275 5.325C3.8625 5.85 3.54688 6.425 3.32813 7.05C3.10938 7.675 3 8.325 3 9C3 10.675 3.58125 12.0938 4.74375 13.2563C5.90625 14.4188 7.325 15 9 15ZM13.725 12.675C14.1375 12.15 14.4531 11.575 14.6719 10.95C14.8906 10.325 15 9.675 15 9C15 7.325 14.4188 5.90625 13.2563 4.74375C12.0938 3.58125 10.675 3 9 3C8.325 3 7.675 3.10938 7.05 3.32813C6.425 3.54688 5.85 3.8625 5.325 4.275L13.725 12.675Z\", fill: \"currentColor\" }));\nexport default SvgUnsupported;\n","import * as React from \"react\";\nconst SvgUpload = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 -2.5 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M8.18182 7.19062L7.44545 7.90156C7.29545 8.05052 7.10795 8.125 6.88295 8.125C6.65795 8.125 6.46364 8.04375 6.3 7.88125C6.15 7.73229 6.075 7.54271 6.075 7.3125C6.075 7.08229 6.15 6.89271 6.3 6.74375L8.42727 4.63125C8.59091 4.46875 8.78182 4.3875 9 4.3875C9.21818 4.3875 9.40909 4.46875 9.57273 4.63125L11.7 6.74375C11.85 6.89271 11.9284 7.07891 11.9352 7.30234C11.942 7.52578 11.8636 7.71875 11.7 7.88125C11.55 8.03021 11.3625 8.10807 11.1375 8.11484C10.9125 8.12161 10.7182 8.05052 10.5545 7.90156L9.81818 7.19062V11.375H14.3182C14.8909 11.375 15.375 11.1786 15.7705 10.7859C16.1659 10.3932 16.3636 9.9125 16.3636 9.34375C16.3636 8.775 16.1659 8.29427 15.7705 7.90156C15.375 7.50885 14.8909 7.3125 14.3182 7.3125H13.0909V5.6875C13.0909 4.56354 12.692 3.60547 11.8943 2.81328C11.0966 2.02109 10.1318 1.625 9 1.625C7.86818 1.625 6.90341 2.02109 6.10568 2.81328C5.30795 3.60547 4.90909 4.56354 4.90909 5.6875H4.5C3.70909 5.6875 3.03409 5.9651 2.475 6.52031C1.91591 7.07552 1.63636 7.74583 1.63636 8.53125C1.63636 9.31667 1.91591 9.98698 2.475 10.5422C3.03409 11.0974 3.70909 11.375 4.5 11.375H5.72727C5.95909 11.375 6.15341 11.4529 6.31023 11.6086C6.46705 11.7643 6.54545 11.9573 6.54545 12.1875C6.54545 12.4177 6.46705 12.6107 6.31023 12.7664C6.15341 12.9221 5.95909 13 5.72727 13H4.5C3.25909 13 2.19886 12.5734 1.31932 11.7203C0.439773 10.8672 0 9.82448 0 8.59219C0 7.53594 0.320455 6.59479 0.961364 5.76875C1.60227 4.94271 2.44091 4.41458 3.47727 4.18437C3.81818 2.93854 4.5 1.92969 5.52273 1.15781C6.54545 0.385937 7.70455 0 9 0C10.5955 0 11.9489 0.551823 13.0602 1.65547C14.1716 2.75911 14.7273 4.10312 14.7273 5.6875C15.6682 5.79583 16.4489 6.1987 17.0693 6.89609C17.6898 7.59349 18 8.40937 18 9.34375C18 10.3594 17.642 11.2227 16.9261 11.9336C16.2102 12.6445 15.3409 13 14.3182 13H9.81818C9.36818 13 8.98295 12.8409 8.6625 12.5227C8.34205 12.2044 8.18182 11.8219 8.18182 11.375V7.19062Z\", fill: \"currentColor\" }));\nexport default SvgUpload;\n","import * as React from \"react\";\nconst SvgUser = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 12, cy: 7, r: 4 }));\nexport default SvgUser;\n","import * as React from \"react\";\nconst SvgUsers = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M16 3.128a4 4 0 0 1 0 7.744\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M22 21v-2a4 4 0 0 0-3-3.87\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 9, cy: 7, r: 4 }));\nexport default SvgUsers;\n","import * as React from \"react\";\nconst SvgUsersRound = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M18 21a8 8 0 0 0-16 0\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 10, cy: 8, r: 5 }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M22 20c0-3.37-2-6.5-4-8a5 5 0 0 0-.45-8.3\" }));\nexport default SvgUsersRound;\n","import * as React from \"react\";\nconst SvgVal = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M11.9017 4.15293C11.757 4.11732 11.5959 4.11337 11.0779 4.11337H4.20803C3.65187 4.11337 3.26996 4.11382 2.9739 4.13804C2.68468 4.16171 2.52931 4.2051 2.41688 4.26249C2.15981 4.39367 1.95084 4.60299 1.81987 4.86043C1.76257 4.97306 1.71924 5.12867 1.69561 5.41835C1.67141 5.71487 1.67096 6.09737 1.67096 6.65438V11.3455C1.67096 11.9025 1.67141 12.2851 1.69561 12.5816C1.71924 12.8712 1.76257 13.0269 1.81987 13.1395C1.95084 13.3969 2.15981 13.6062 2.41688 13.7374C2.52931 13.7948 2.68468 13.8382 2.9739 13.8619C3.26996 13.8861 3.65187 13.8865 4.20803 13.8865H11.0779C11.5959 13.8865 11.757 13.8826 11.9017 13.847C12.0441 13.8119 12.18 13.7541 12.3041 13.6757C12.4301 13.5962 12.5448 13.4827 12.9043 13.1093L15.1625 10.7638C15.5362 10.3757 15.7921 10.1093 15.9745 9.88653C16.1524 9.66926 16.2278 9.53138 16.2652 9.4133C16.3503 9.14434 16.3503 8.85558 16.2652 8.58662C16.2278 8.46854 16.1524 8.33066 15.9745 8.11338C15.7921 7.89063 15.5362 7.62423 15.1625 7.23614L12.9043 4.89057C12.5448 4.51718 12.4301 4.40373 12.3041 4.32418C12.18 4.24584 12.0441 4.188 11.9017 4.15293ZM11.1419 2.94057C11.5694 2.94039 11.8815 2.94026 12.1812 3.01406C12.4458 3.07919 12.6981 3.18658 12.9286 3.3321C13.1896 3.49696 13.4062 3.72207 13.7028 4.0304C13.7174 4.04556 13.7322 4.06093 13.7472 4.07651L16.0221 6.43937C16.375 6.80593 16.664 7.1061 16.8799 7.36962C17.1035 7.64274 17.2807 7.91379 17.3815 8.23232C17.5395 8.73185 17.5395 9.26807 17.3815 9.76759C17.2807 10.0861 17.1035 10.3572 16.8799 10.6303C16.664 10.8938 16.375 11.194 16.0221 11.5605L13.7472 13.9234C13.7322 13.939 13.7174 13.9544 13.7028 13.9695C13.4062 14.2778 13.1896 14.503 12.9286 14.6678C12.6981 14.8133 12.4458 14.9207 12.1812 14.9859C11.8815 15.0597 11.5694 15.0595 11.1419 15.0593C11.1209 15.0593 11.0996 15.0593 11.0779 15.0593H4.1835C3.65784 15.0593 3.22794 15.0593 2.87855 15.0308C2.51692 15.0012 2.1903 14.938 1.88526 14.7824C1.40788 14.5388 1.01976 14.15 0.776526 13.6719C0.621106 13.3664 0.558082 13.0393 0.528535 12.6771C0.499988 12.3272 0.499994 11.8966 0.5 11.3701V6.62983C0.499994 6.10335 0.499988 5.67276 0.528535 5.32284C0.558082 4.96063 0.621106 4.6335 0.776526 4.32801C1.01976 3.84989 1.40788 3.46115 1.88526 3.21754C2.1903 3.06187 2.51692 2.99876 2.87855 2.96916C3.22794 2.94057 3.65784 2.94057 4.1835 2.94059H11.0779C11.0996 2.94059 11.1209 2.94057 11.1419 2.94057Z\", fill: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M6.82244 9.36049C6.48776 9.23665 6.48776 8.76327 6.82244 8.63942C7.66426 8.32792 8.32797 7.66421 8.63946 6.82241C8.76331 6.48771 9.23669 6.48771 9.36054 6.82241C9.67203 7.66421 10.3357 8.32792 11.1776 8.63942C11.5122 8.76327 11.5122 9.23665 11.1776 9.36049C10.3357 9.67199 9.67203 10.3357 9.36054 11.1775C9.23669 11.5122 8.76331 11.5122 8.63946 11.1775C8.32797 10.3357 7.66426 9.67199 6.82244 9.36049Z\", fill: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M11.9017 4.15293C11.757 4.11732 11.5959 4.11337 11.0779 4.11337H4.20803C3.65187 4.11337 3.26996 4.11382 2.9739 4.13804C2.68468 4.16171 2.52931 4.2051 2.41688 4.26249C2.15981 4.39367 1.95084 4.60299 1.81987 4.86043C1.76257 4.97306 1.71924 5.12867 1.69561 5.41835C1.67141 5.71487 1.67096 6.09737 1.67096 6.65438V11.3455C1.67096 11.9025 1.67141 12.2851 1.69561 12.5816C1.71924 12.8712 1.76257 13.0269 1.81987 13.1395C1.95084 13.3969 2.15981 13.6062 2.41688 13.7374C2.52931 13.7948 2.68468 13.8382 2.9739 13.8619C3.26996 13.8861 3.65187 13.8865 4.20803 13.8865H11.0779C11.5959 13.8865 11.757 13.8826 11.9017 13.847C12.0441 13.8119 12.18 13.7541 12.3041 13.6757C12.4301 13.5962 12.5448 13.4827 12.9043 13.1093L15.1625 10.7638C15.5362 10.3757 15.7921 10.1093 15.9745 9.88653C16.1524 9.66926 16.2278 9.53138 16.2652 9.4133C16.3503 9.14434 16.3503 8.85558 16.2652 8.58662C16.2278 8.46854 16.1524 8.33066 15.9745 8.11338C15.7921 7.89063 15.5362 7.62423 15.1625 7.23614L12.9043 4.89057C12.5448 4.51718 12.4301 4.40373 12.3041 4.32418C12.18 4.24584 12.0441 4.188 11.9017 4.15293ZM11.1419 2.94057C11.5694 2.94039 11.8815 2.94026 12.1812 3.01406C12.4458 3.07919 12.6981 3.18658 12.9286 3.3321C13.1896 3.49696 13.4062 3.72207 13.7028 4.0304C13.7174 4.04556 13.7322 4.06093 13.7472 4.07651L16.0221 6.43937C16.375 6.80593 16.664 7.1061 16.8799 7.36962C17.1035 7.64274 17.2807 7.91379 17.3815 8.23232C17.5395 8.73185 17.5395 9.26807 17.3815 9.76759C17.2807 10.0861 17.1035 10.3572 16.8799 10.6303C16.664 10.8938 16.375 11.194 16.0221 11.5605L13.7472 13.9234C13.7322 13.939 13.7174 13.9544 13.7028 13.9695C13.4062 14.2778 13.1896 14.503 12.9286 14.6678C12.6981 14.8133 12.4458 14.9207 12.1812 14.9859C11.8815 15.0597 11.5694 15.0595 11.1419 15.0593C11.1209 15.0593 11.0996 15.0593 11.0779 15.0593H4.1835C3.65784 15.0593 3.22794 15.0593 2.87855 15.0308C2.51692 15.0012 2.1903 14.938 1.88526 14.7824C1.40788 14.5388 1.01976 14.15 0.776526 13.6719C0.621106 13.3664 0.558082 13.0393 0.528535 12.6771C0.499988 12.3272 0.499994 11.8966 0.5 11.3701V6.62983C0.499994 6.10335 0.499988 5.67276 0.528535 5.32284C0.558082 4.96063 0.621106 4.6335 0.776526 4.32801C1.01976 3.84989 1.40788 3.46115 1.88526 3.21754C2.1903 3.06187 2.51692 2.99876 2.87855 2.96916C3.22794 2.94057 3.65784 2.94057 4.1835 2.94059H11.0779C11.0996 2.94059 11.1209 2.94057 11.1419 2.94057Z\", stroke: \"#8F8D8B\", strokeWidth: 0.4 }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M6.82244 9.36049C6.48776 9.23665 6.48776 8.76327 6.82244 8.63942C7.66426 8.32792 8.32797 7.66421 8.63946 6.82241C8.76331 6.48771 9.23669 6.48771 9.36054 6.82241C9.67203 7.66421 10.3357 8.32792 11.1776 8.63942C11.5122 8.76327 11.5122 9.23665 11.1776 9.36049C10.3357 9.67199 9.67203 10.3357 9.36054 11.1775C9.23669 11.5122 8.76331 11.5122 8.63946 11.1775C8.32797 10.3357 7.66426 9.67199 6.82244 9.36049Z\", stroke: \"#8F8D8B\", strokeWidth: 0.4 }));\nexport default SvgVal;\n","import * as React from \"react\";\nconst SvgWarning = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M1.77047 16C1.62757 16 1.49766 15.9644 1.38074 15.8931C1.26382 15.8218 1.17288 15.7278 1.10793 15.6111C1.04297 15.4944 1.00725 15.3681 1.00075 15.2319C0.994254 15.0958 1.02998 14.963 1.10793 14.8333L8.31797 2.38889C8.39592 2.25926 8.4966 2.16204 8.62001 2.09722C8.74343 2.03241 8.87009 2 9 2C9.12991 2 9.25657 2.03241 9.37999 2.09722C9.5034 2.16204 9.60408 2.25926 9.68203 2.38889L16.8921 14.8333C16.97 14.963 17.0057 15.0958 16.9993 15.2319C16.9928 15.3681 16.957 15.4944 16.8921 15.6111C16.8271 15.7278 16.7362 15.8218 16.6193 15.8931C16.5023 15.9644 16.3724 16 16.2295 16H1.77047ZM3.11505 14.4444H14.885L9 4.33333L3.11505 14.4444ZM9 13.6667C9.22085 13.6667 9.40597 13.5921 9.55537 13.4431C9.70477 13.294 9.77946 13.1093 9.77946 12.8889C9.77946 12.6685 9.70477 12.4838 9.55537 12.3347C9.40597 12.1856 9.22085 12.1111 9 12.1111C8.77915 12.1111 8.59403 12.1856 8.44463 12.3347C8.29523 12.4838 8.22054 12.6685 8.22054 12.8889C8.22054 13.1093 8.29523 13.294 8.44463 13.4431C8.59403 13.5921 8.77915 13.6667 9 13.6667ZM9 11.3333C9.22085 11.3333 9.40597 11.2588 9.55537 11.1097C9.70477 10.9606 9.77946 10.7759 9.77946 10.5556V8.22222C9.77946 8.00185 9.70477 7.81713 9.55537 7.66806C9.40597 7.51898 9.22085 7.44444 9 7.44444C8.77915 7.44444 8.59403 7.51898 8.44463 7.66806C8.29523 7.81713 8.22054 8.00185 8.22054 8.22222V10.5556C8.22054 10.7759 8.29523 10.9606 8.44463 11.1097C8.59403 11.2588 8.77915 11.3333 9 11.3333Z\", fill: \"currentColor\" }));\nexport default SvgWarning;\n","import * as React from \"react\";\nconst SvgWaypoints = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"m10.586 5.414-5.172 5.172\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m18.586 13.414-5.172 5.172\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M6 12h12\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 12, cy: 20, r: 2 }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 12, cy: 4, r: 2 }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 20, cy: 12, r: 2 }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 4, cy: 12, r: 2 }));\nexport default SvgWaypoints;\n","import * as React from \"react\";\nconst SvgWorkflow = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"rect\", { width: 8, height: 8, x: 3, y: 3, rx: 2 }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M7 11v4a2 2 0 0 0 2 2h4\" }), /* @__PURE__ */ React.createElement(\"rect\", { width: 8, height: 8, x: 13, y: 13, rx: 2 }));\nexport default SvgWorkflow;\n","import * as React from \"react\";\nconst SvgWorkspaces = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9.88889 5.44444V1.88889C9.88889 1.63704 9.97407 1.42593 10.1444 1.25556C10.3148 1.08519 10.5259 1 10.7778 1H16.1111C16.363 1 16.5741 1.08519 16.7444 1.25556C16.9148 1.42593 17 1.63704 17 1.88889V5.44444C17 5.6963 16.9148 5.90741 16.7444 6.07778C16.5741 6.24815 16.363 6.33333 16.1111 6.33333H10.7778C10.5259 6.33333 10.3148 6.24815 10.1444 6.07778C9.97407 5.90741 9.88889 5.6963 9.88889 5.44444ZM1 9V1.88889C1 1.63704 1.08519 1.42593 1.25556 1.25556C1.42593 1.08519 1.63704 1 1.88889 1H7.22222C7.47407 1 7.68519 1.08519 7.85556 1.25556C8.02593 1.42593 8.11111 1.63704 8.11111 1.88889V9C8.11111 9.25185 8.02593 9.46296 7.85556 9.63333C7.68519 9.8037 7.47407 9.88889 7.22222 9.88889H1.88889C1.63704 9.88889 1.42593 9.8037 1.25556 9.63333C1.08519 9.46296 1 9.25185 1 9ZM9.88889 16.1111V9C9.88889 8.74815 9.97407 8.53704 10.1444 8.36667C10.3148 8.1963 10.5259 8.11111 10.7778 8.11111H16.1111C16.363 8.11111 16.5741 8.1963 16.7444 8.36667C16.9148 8.53704 17 8.74815 17 9V16.1111C17 16.363 16.9148 16.5741 16.7444 16.7444C16.5741 16.9148 16.363 17 16.1111 17H10.7778C10.5259 17 10.3148 16.9148 10.1444 16.7444C9.97407 16.5741 9.88889 16.363 9.88889 16.1111ZM1 16.1111V12.5556C1 12.3037 1.08519 12.0926 1.25556 11.9222C1.42593 11.7519 1.63704 11.6667 1.88889 11.6667H7.22222C7.47407 11.6667 7.68519 11.7519 7.85556 11.9222C8.02593 12.0926 8.11111 12.3037 8.11111 12.5556V16.1111C8.11111 16.363 8.02593 16.5741 7.85556 16.7444C7.68519 16.9148 7.47407 17 7.22222 17H1.88889C1.63704 17 1.42593 16.9148 1.25556 16.7444C1.08519 16.5741 1 16.363 1 16.1111ZM2.77778 8.11111H6.33333V2.77778H2.77778V8.11111ZM11.6667 15.2222H15.2222V9.88889H11.6667V15.2222ZM11.6667 4.55556H15.2222V2.77778H11.6667V4.55556ZM2.77778 15.2222H6.33333V13.4444H2.77778V15.2222Z\", fill: \"currentColor\" }));\nexport default SvgWorkspaces;\n","import * as React from \"react\";\nconst SvgZap = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z\" }));\nexport default SvgZap;\n","import clsx from \"clsx\";\nimport React, { type FC } from \"react\";\n\nimport { Spinner } from \"@/components/Spinner\";\nimport AIIcon from \"@/img/AI.svg?react\";\nimport ActivityIcon from \"@/img/Activity.svg?react\";\nimport AddIcon from \"@/img/Add.svg?react\";\nimport AnnotateIcon from \"@/img/Annotate.svg?react\";\nimport ArrowDownIcon from \"@/img/ArrowDown.svg?react\";\nimport ArrowLeftIcon from \"@/img/ArrowLeft.svg?react\";\nimport ArrowRightIcon from \"@/img/ArrowRight.svg?react\";\nimport ArrowUpIcon from \"@/img/ArrowUp.svg?react\";\nimport ArrowUpRightIcon from \"@/img/ArrowUpRight.svg?react\";\nimport BlocksIcon from \"@/img/Blocks.svg?react\";\nimport BoxesIcon from \"@/img/Boxes.svg?react\";\nimport CalendarClockIcon from \"@/img/CalendarClock.svg?react\";\nimport CaretDownIcon from \"@/img/CaretDown.svg?react\";\nimport CheckIcon from \"@/img/Check.svg?react\";\nimport CheckboxIcon from \"@/img/Checkbox.svg?react\";\nimport ChecklistIcon from \"@/img/Checklist.svg?react\";\nimport ChevronBottomIcon from \"@/img/ChevronBottom.svg?react\";\nimport ChevronLeftIcon from \"@/img/ChevronLeft.svg?react\";\nimport ChevronRightIcon from \"@/img/ChevronRight.svg?react\";\nimport ChevronTopIcon from \"@/img/ChevronTop.svg?react\";\nimport CircleIcon from \"@/img/Circle.svg?react\";\nimport CircleUserIcon from \"@/img/CircleUser.svg?react\";\nimport CloseIcon from \"@/img/Close.svg?react\";\nimport CloudIcon from \"@/img/Cloud.svg?react\";\nimport CloudCogIcon from \"@/img/CloudCog.svg?react\";\nimport CodeIcon from \"@/img/Code.svg?react\";\nimport CogIcon from \"@/img/Cog.svg?react\";\nimport ContactIcon from \"@/img/Contact.svg?react\";\nimport ContentCopyIcon from \"@/img/ContentCopy.svg?react\";\nimport DatabaseIcon from \"@/img/Database.svg?react\";\nimport DateRangeIcon from \"@/img/DateRange.svg?react\";\nimport DeleteIcon from \"@/img/Delete.svg?react\";\nimport DetectionIcon from \"@/img/Detection.svg?react\";\nimport DownloadIcon from \"@/img/Download.svg?react\";\nimport DragIcon from \"@/img/Drag.svg?react\";\nimport DrawIcon from \"@/img/Draw.svg?react\";\nimport EditIcon from \"@/img/Edit.svg?react\";\nimport EmbeddingsIcon from \"@/img/Embeddings.svg?react\";\nimport EnterIcon from \"@/img/Enter.svg?react\";\nimport ErrorIcon from \"@/img/Error.svg?react\";\nimport ExitWorkspaceIcon from \"@/img/ExitWorkspace.svg?react\";\nimport ExternalLinkIcon from \"@/img/ExternalLink.svg?react\";\nimport FileClockIcon from \"@/img/FileClock.svg?react\";\nimport FineTuneIcon from \"@/img/FineTune.svg?react\";\nimport FingerprintIcon from \"@/img/Fingerprint.svg?react\";\nimport FullscreenIcon from \"@/img/Fullscreen.svg?react\";\nimport GridViewIcon from \"@/img/GridView.svg?react\";\nimport HistoryIcon from \"@/img/History.svg?react\";\nimport IdCardIcon from \"@/img/IdCard.svg?react\";\nimport ImageSearchIcon from \"@/img/ImageSearch.svg?react\";\nimport InfoIcon from \"@/img/Info.svg?react\";\nimport InsightsIcon from \"@/img/Insights.svg?react\";\nimport InspectIcon from \"@/img/Inspect.svg?react\";\nimport JSONIcon from \"@/img/JSON.svg?react\";\nimport KeyIcon from \"@/img/Key.svg?react\";\nimport KeyRoundIcon from \"@/img/KeyRound.svg?react\";\nimport KeySquareIcon from \"@/img/KeySquare.svg?react\";\nimport LabelIcon from \"@/img/Label.svg?react\";\nimport LockIcon from \"@/img/Lock.svg?react\";\nimport LogsIcon from \"@/img/Logs.svg?react\";\nimport MenuIcon from \"@/img/Menu.svg?react\";\nimport MoreHorizontalIcon from \"@/img/MoreHorizontal.svg?react\";\nimport MoreVerticalIcon from \"@/img/MoreVertical.svg?react\";\nimport MoveIcon from \"@/img/Move.svg?react\";\nimport NotebookPenIcon from \"@/img/NotebookPen.svg?react\";\nimport NotesIcon from \"@/img/Notes.svg?react\";\nimport OrchestratorIcon from \"@/img/Orchestrator.svg?react\";\nimport PencilIcon from \"@/img/Pencil.svg?react\";\nimport PinIcon from \"@/img/Pin.svg?react\";\nimport PolylineIcon from \"@/img/Polyline.svg?react\";\nimport PuzzleIcon from \"@/img/Puzzle.svg?react\";\nimport RadioIcon from \"@/img/Radio.svg?react\";\nimport RedoIcon from \"@/img/Redo.svg?react\";\nimport RefreshIcon from \"@/img/Refresh.svg?react\";\nimport RemoveIcon from \"@/img/Remove.svg?react\";\nimport ReviewIcon from \"@/img/Review.svg?react\";\nimport SearchIcon from \"@/img/Search.svg?react\";\nimport ServerIcon from \"@/img/Server.svg?react\";\nimport SettingsIcon from \"@/img/Settings.svg?react\";\nimport ShieldCheckIcon from \"@/img/ShieldCheck.svg?react\";\nimport SliderIcon from \"@/img/Slider.svg?react\";\nimport SlidersIcon from \"@/img/Sliders.svg?react\";\nimport TagIcon from \"@/img/Tag.svg?react\";\nimport TextIcon from \"@/img/Text.svg?react\";\nimport ToggleIcon from \"@/img/Toggle.svg?react\";\nimport UndoIcon from \"@/img/Undo.svg?react\";\nimport UnfoldMoreIcon from \"@/img/UnfoldMore.svg?react\";\nimport UnlockIcon from \"@/img/Unlock.svg?react\";\nimport UnsupportedIcon from \"@/img/Unsupported.svg?react\";\nimport UploadIcon from \"@/img/Upload.svg?react\";\nimport UserIcon from \"@/img/User.svg?react\";\nimport UsersIcon from \"@/img/Users.svg?react\";\nimport UsersRoundIcon from \"@/img/UsersRound.svg?react\";\nimport VALIcon from \"@/img/VAL.svg?react\";\nimport WarningIcon from \"@/img/Warning.svg?react\";\nimport WaypointsIcon from \"@/img/Waypoints.svg?react\";\nimport WorkflowIcon from \"@/img/Workflow.svg?react\";\nimport WorkspacesIcon from \"@/img/Workspaces.svg?react\";\nimport ZapIcon from \"@/img/Zap.svg?react\";\nimport { BrandColor, IconColor, TextColor, textColorClass } from \"@/types\";\nimport { IconName } from \"@/types/icons\";\nimport { Size } from \"@/types/size\";\n\ntype SvgComponent = React.FC<React.SVGProps<SVGSVGElement>>;\n\n/**\n * To add a new icon:\n * 1. add the SVG file to the image directory,\n * 2. create a enum value for the icon name\n * 3. import the SVG file and add it to this map\n */\nexport const iconMap: Record<\n Exclude<IconName, IconName.Spinner>,\n SvgComponent\n> = {\n [IconName.Activity]: ActivityIcon,\n [IconName.Add]: AddIcon,\n [IconName.AI]: AIIcon,\n [IconName.Annotate]: AnnotateIcon,\n [IconName.ArrowDown]: ArrowDownIcon,\n [IconName.ArrowLeft]: ArrowLeftIcon,\n [IconName.ArrowRight]: ArrowRightIcon,\n [IconName.ArrowUp]: ArrowUpIcon,\n [IconName.ArrowUpRight]: ArrowUpRightIcon,\n [IconName.Blocks]: BlocksIcon,\n [IconName.Boxes]: BoxesIcon,\n [IconName.CalendarClock]: CalendarClockIcon,\n [IconName.CaretDown]: CaretDownIcon,\n [IconName.Check]: CheckIcon,\n [IconName.Checkbox]: CheckboxIcon,\n [IconName.Checklist]: ChecklistIcon,\n [IconName.ChevronBottom]: ChevronBottomIcon,\n [IconName.ChevronLeft]: ChevronLeftIcon,\n [IconName.ChevronRight]: ChevronRightIcon,\n [IconName.ChevronTop]: ChevronTopIcon,\n [IconName.Circle]: CircleIcon,\n [IconName.CircleUser]: CircleUserIcon,\n [IconName.Close]: CloseIcon,\n [IconName.Cloud]: CloudIcon,\n [IconName.CloudCog]: CloudCogIcon,\n [IconName.Code]: CodeIcon,\n [IconName.Cog]: CogIcon,\n [IconName.Contact]: ContactIcon,\n [IconName.ContentCopy]: ContentCopyIcon,\n [IconName.Database]: DatabaseIcon,\n [IconName.DateRange]: DateRangeIcon,\n [IconName.Delete]: DeleteIcon,\n [IconName.Detection]: DetectionIcon,\n [IconName.Download]: DownloadIcon,\n [IconName.Drag]: DragIcon,\n [IconName.Draw]: DrawIcon,\n [IconName.Edit]: EditIcon,\n [IconName.Embeddings]: EmbeddingsIcon,\n [IconName.Enter]: EnterIcon,\n [IconName.Error]: ErrorIcon,\n [IconName.ExitWorkspace]: ExitWorkspaceIcon,\n [IconName.ExternalLink]: ExternalLinkIcon,\n [IconName.FileClock]: FileClockIcon,\n [IconName.FineTune]: FineTuneIcon,\n [IconName.Fingerprint]: FingerprintIcon,\n [IconName.Fullscreen]: FullscreenIcon,\n [IconName.GridView]: GridViewIcon,\n [IconName.History]: HistoryIcon,\n [IconName.IdCard]: IdCardIcon,\n [IconName.ImageSearch]: ImageSearchIcon,\n [IconName.Info]: InfoIcon,\n [IconName.Insights]: InsightsIcon,\n [IconName.Inspect]: InspectIcon,\n [IconName.JSON]: JSONIcon,\n [IconName.Key]: KeyIcon,\n [IconName.KeyRound]: KeyRoundIcon,\n [IconName.KeySquare]: KeySquareIcon,\n [IconName.Label]: LabelIcon,\n [IconName.Lock]: LockIcon,\n [IconName.Logs]: LogsIcon,\n [IconName.Menu]: MenuIcon,\n [IconName.MoreHorizontal]: MoreHorizontalIcon,\n [IconName.MoreVertical]: MoreVerticalIcon,\n [IconName.Move]: MoveIcon,\n [IconName.NotebookPen]: NotebookPenIcon,\n [IconName.Notes]: NotesIcon,\n [IconName.Orchestrator]: OrchestratorIcon,\n [IconName.Pencil]: PencilIcon,\n [IconName.Pin]: PinIcon,\n [IconName.Polyline]: PolylineIcon,\n [IconName.Puzzle]: PuzzleIcon,\n [IconName.Radio]: RadioIcon,\n [IconName.Redo]: RedoIcon,\n [IconName.Refresh]: RefreshIcon,\n [IconName.Remove]: RemoveIcon,\n [IconName.Review]: ReviewIcon,\n [IconName.Search]: SearchIcon,\n [IconName.Server]: ServerIcon,\n [IconName.Settings]: SettingsIcon,\n [IconName.ShieldCheck]: ShieldCheckIcon,\n [IconName.Slider]: SliderIcon,\n [IconName.Sliders]: SlidersIcon,\n [IconName.Tag]: TagIcon,\n [IconName.Text]: TextIcon,\n [IconName.Toggle]: ToggleIcon,\n [IconName.Undo]: UndoIcon,\n [IconName.UnfoldMore]: UnfoldMoreIcon,\n [IconName.Unlock]: UnlockIcon,\n [IconName.Unsupported]: UnsupportedIcon,\n [IconName.Upload]: UploadIcon,\n [IconName.User]: UserIcon,\n [IconName.Users]: UsersIcon,\n [IconName.UsersRound]: UsersRoundIcon,\n [IconName.VAL]: VALIcon,\n [IconName.Warning]: WarningIcon,\n [IconName.Waypoints]: WaypointsIcon,\n [IconName.Workflow]: WorkflowIcon,\n [IconName.Workspaces]: WorkspacesIcon,\n [IconName.Zap]: ZapIcon,\n};\n\ntype IconSize = Exclude<Size, \"Xs\">;\n\nconst sizeMap: Partial<Record<IconSize, number>> = {\n [Size.Sm]: 12,\n [Size.Md]: 14,\n [Size.Lg]: 16,\n [Size.Xl]: 18,\n};\n\nexport interface IconProps {\n name: IconName;\n size?: Size;\n className?: string;\n color?: TextColor | IconColor | BrandColor;\n style?: React.CSSProperties;\n}\n\n/**\n * An generic icon component which will take the form of the icon specified by `name`.\n *\n * @example\n * ```tsx\n * <Icon name={IconName.Edit} size={Size.Md} />\n * ```\n *\n * @param name Icon to display. See {@link IconName}.\n * @param size The size of the icon. See {@link Size}.\n * @param className `class` overrides to apply to the component.\n * @param color Color of the icon. By default, the icon inherits the text color of its container.\n * @param style `style` overrides to apply to the icon.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const Icon: FC<IconProps> = ({\n name,\n size = undefined, // if no size specified, fill the parent container\n className,\n color,\n ...props\n}) => {\n // We are making a strong opinion here that we should treat the SVG\n // as a square - the viewbox on the SVG will still handle the aspect\n // ratio but it's possible that VERY rectangular SVGs will not behave\n // as expected.\n const iconSize = size ? sizeMap[size] : undefined;\n const IconComponent = name === IconName.Spinner ? Spinner : iconMap[name];\n\n return (\n <IconComponent\n width={iconSize}\n height={iconSize}\n size={size}\n className={clsx(color && textColorClass(color), className)}\n {...props}\n />\n );\n};\n","import { type FC } from \"react\";\n\nimport { IconName } from \"@/types/icons\";\nimport { Size } from \"@/types/size\";\nimport { cn } from \"@/util/classes\";\n\nimport { Icon } from \"./Icon\";\n\nexport interface IconWrapperProps {\n content?: FC | IconName;\n size?: Size;\n className?: string;\n}\n\n/**\n * Helper component which resolves {@link FC} | {@link IconName} | ``undefined`` to a rendered icon.\n *\n * Wraps content in a span; use `className` to constrain icon bounds or apply color styling.\n *\n * @param content Icon {@link FC}, icon name, or undefined\n * @param size Size forwarded to {@link Icon} when resolving by name\n * @param className Classes applied to the wrapping span\n */\nexport const IconWrapper: FC<IconWrapperProps> = ({\n content,\n size,\n className,\n}) => {\n if (!content) return null;\n\n const Content =\n typeof content === \"string\"\n ? () => <Icon name={content} size={size} />\n : content;\n\n return (\n <span className={cn(className)}>\n <Content />\n </span>\n );\n};\n\nIconWrapper.displayName = \"IconWrapper\";\n","import { TextColor, TextVariant, Variant } from \"@/types\";\n\nexport const TEXT_STYLES: Record<TextVariant, string> = {\n [TextVariant.Xxs]: \"text-xxs/4\",\n [TextVariant.Xs]: \"text-xs/5\",\n [TextVariant.Sm]: \"text-sm/6\",\n [TextVariant.Md]: \"text-md/7\",\n [TextVariant.Lg]: \"text-lg/9\",\n [TextVariant.Xl]: \"text-xl/11\",\n [TextVariant.Xxl]: \"text-xxl/13\",\n [TextVariant.Label]: \"text-xs/5 font-bold uppercase\",\n [TextVariant.Caption]: \"text-xs/5 text-content-text-tertiary\",\n};\n\nexport const textStyles = (variant: TextVariant): string | null => {\n if (!variant) return null;\n return TEXT_STYLES[variant];\n};\n\nexport const textColor = (variant: Variant): TextColor | undefined => {\n if (!variant) {\n return;\n }\n\n switch (variant) {\n case Variant.Primary:\n return TextColor.Primary;\n case Variant.Secondary:\n return TextColor.Secondary;\n case Variant.Success:\n return TextColor.Success;\n case Variant.Danger:\n return TextColor.Destructive;\n case Variant.Icon:\n return TextColor.Primary;\n default:\n return TextColor.Primary;\n }\n};\n","import clsx from \"clsx\";\nimport type { FC, HTMLAttributes } from \"react\";\n\nimport { textStyles } from \"@/styles/text\";\nimport { IconColor, TextColor, TextVariant } from \"@/types\";\nimport { BrandColor, textColorClass } from \"@/types/color\";\n\nexport interface TextProps extends HTMLAttributes<HTMLSpanElement> {\n variant?: TextVariant;\n color?: TextColor | IconColor | BrandColor;\n}\n\n/**\n * A basic text component.\n *\n * All text in the app should be wrapped in this component to ensure compatibility with theme changes.\n *\n * @example\n * ```tsx\n * <Text>\n * Some text\n * </Text>\n * ```\n *\n * @param variant The variant of the text; this controls the size and related styling of the text. See {@link Variant}.\n * @param color The color of the text. See {@link TextColor}.\n * @param children The content wrapped by this component.\n * @param className `class` overrides to apply to the component.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const Text: FC<TextProps> = ({\n variant = TextVariant.Md,\n color = TextColor.Primary,\n children,\n className,\n ...props\n}) => {\n return (\n <span\n className={clsx(textColorClass(color), textStyles(variant), className)}\n {...props}\n >\n {children}\n </span>\n );\n};\n\nText.displayName = \"Text\";\n","import clsx from \"clsx\";\nimport type { FC, HTMLAttributes } from \"react\";\n\nimport { Anchor } from \"@/types\";\n\nexport interface ToastContainerProps extends HTMLAttributes<HTMLDivElement> {\n anchor?: Anchor;\n open?: boolean;\n}\n\nconst anchorStyles: Record<Anchor, string> = {\n [Anchor.TopLeft]: \"top-4 left-4\",\n [Anchor.Top]: \"top-4 left-1/2 -translate-x-1/2\",\n [Anchor.TopRight]: \"top-4 right-4\",\n [Anchor.Right]: \"right-4 top-1/2 -translate-y-1/2\",\n [Anchor.BottomRight]: \"bottom-4 right-4\",\n [Anchor.Bottom]: \"bottom-4 left-1/2 -translate-x-1/2\",\n [Anchor.BottomLeft]: \"bottom-4 left-4\",\n [Anchor.Left]: \"left-4 top-1/2 -translate-y-1/2\",\n};\n\n/**\n * A layout component which acts as a container for toast-like components.\n *\n * @param anchor The location in the viewport to anchor the toast. See {@link Anchor}.\n * @param children Content wrapped by this component.\n * @param open If `true`, this component and its children will be rendered; otherwise it will be hidden.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const ToastContainer: FC<ToastContainerProps> = ({\n anchor = Anchor.Bottom,\n children,\n open,\n ...props\n}) => (\n <>\n {open && (\n <div className={clsx(\"fixed\", \"z-9999\", anchorStyles[anchor])} {...props}>\n {children}\n </div>\n )}\n </>\n);\n\nToastContainer.displayName = \"ToastContainer\";\n","import { Radius } from \"@/types/radius\";\n\nexport const RADIUS_STYLES: Record<Radius, string> = {\n [Radius.None]: \"rounded-none\",\n [Radius.Xs]: \"rounded-xs\",\n [Radius.Sm]: \"rounded-sm\",\n [Radius.Md]: \"rounded-md\",\n [Radius.Lg]: \"rounded-lg\",\n [Radius.Xl]: \"rounded-xl\",\n [Radius.Full]: \"rounded-full\",\n};\n\nexport default function radiusStyles(radius: Radius): string {\n return RADIUS_STYLES[radius];\n}\n","import type { FC, HTMLAttributes } from \"react\";\n\nimport { IconWrapper } from \"@/components/Icons\";\nimport { Text } from \"@/components/Text\";\nimport { ToastContainer } from \"@/components/ToastContainer\";\nimport radiusStyles from \"@/styles/radius\";\nimport { textColor } from \"@/styles/text\";\nimport {\n Anchor,\n BackgroundColor,\n bgColorClass,\n BorderColor,\n borderColorClass,\n IconName,\n Radius,\n textColorClass,\n Variant,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport interface ActivityToastProps extends HTMLAttributes<HTMLDivElement> {\n anchor?: Anchor;\n icon?: FC | IconName;\n message?: string;\n open?: boolean;\n variant?: Variant;\n}\n\n/**\n * A component which renders simple toast-style notifications.\n *\n * This component is best suited for non-interactive, ephemeral notifications.\n *\n * See also {@link Toast}.\n *\n * @example\n * ```tsx\n * <ActivityToast\n * open={true}\n * icon={() => <Icon name={IconName.Check}/>}\n * message={\"Operation successful\"}\n * variant={Variant.Success}\n * />\n * ```\n *\n * @param anchor Position within the viewport to anchor the notification.\n * Options include all cardinal directions as well as all four corners.\n * @param className `class` overrides to apply to the component.\n * @param icon Reference (`FC`) to an icon or an {@link IconName} to render which prefixes the toast message. See {@link Icon}.\n * @param message Message to include in the toast.\n * @param open Boolean controlling whether the toast is visible.\n * @param variant The toast variant; this controls the general styling of the toast. See {@link Variant}.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const ActivityToast: FC<ActivityToastProps> = ({\n anchor = Anchor.BottomRight,\n className,\n icon,\n message,\n open,\n variant = Variant.Primary,\n ...props\n}) => (\n <ToastContainer open={open} anchor={anchor}>\n <div\n className={cn(\n \"flex flex-nowrap\",\n \"gap-x-sm\",\n \"items-center\",\n \"py-2 pr-4 pl-3\",\n \"border\",\n borderColorClass(BorderColor.Default),\n bgColorClass(BackgroundColor.Card1),\n radiusStyles(Radius.Md),\n className\n )}\n {...props}\n >\n <IconWrapper\n content={icon}\n className={cn(\"size-5\", textColorClass(textColor(variant)!))}\n />\n\n {message && <Text color={textColor(variant)}>{message}</Text>}\n </div>\n </ToastContainer>\n);\n\nActivityToast.displayName = \"ActivityToast\";\n","import { Button as HeadlessButton } from \"@headlessui/react\";\nimport clsx from \"clsx\";\nimport { ButtonHTMLAttributes, FC } from \"react\";\n\nimport { IconWrapper } from \"@/components/Icons\";\nimport radiusStyles from \"@/styles/radius\";\nimport {\n ActionColor,\n BackgroundColor,\n bgColorClass,\n BorderColor,\n borderColorClass,\n ElementState,\n IconName,\n Radius,\n Size,\n TextColor,\n textColorClass,\n Variant,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\ntype ButtonSize = Exclude<Size, Size.Lg | Size.Xl>;\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: Variant;\n size?: ButtonSize;\n leadingIcon?: FC | IconName;\n trailingIcon?: FC | IconName;\n borderless?: boolean;\n}\n\nconst variantStyles: Record<Variant, string> = {\n [Variant.Primary]: clsx(\n bgColorClass(ActionColor.PrimaryDefault),\n bgColorClass(ActionColor.PrimaryHover, ElementState.Hover),\n bgColorClass(ActionColor.PrimaryFocus, ElementState.Active)\n ),\n [Variant.Secondary]: clsx(\n \"border-1\",\n \"bg-transparent\",\n borderColorClass(BorderColor.Default),\n borderColorClass(BorderColor.Focus, ElementState.Hover), // design calls for focus color on hover\n borderColorClass(BorderColor.Focus, ElementState.Active),\n borderColorClass(BorderColor.Disabled, ElementState.Disabled),\n bgColorClass(ActionColor.SecondaryFocus, ElementState.Active)\n ),\n [Variant.Success]: clsx(\n bgColorClass(ActionColor.SuccessDefault),\n bgColorClass(ActionColor.SuccessHover, ElementState.Hover),\n bgColorClass(ActionColor.SuccessFocus, ElementState.Active)\n ),\n [Variant.Danger]: clsx(\n bgColorClass(ActionColor.DangerDefault),\n bgColorClass(ActionColor.DangerHover, ElementState.Hover),\n bgColorClass(ActionColor.DangerFocus, ElementState.Active)\n ),\n [Variant.Icon]: clsx(\n \"px-2.5 py-2.5\",\n \"bg-transparent\",\n bgColorClass(BackgroundColor.CardElevated, ElementState.Hover)\n ),\n [Variant.Borderless]: clsx(\n \"bg-transparent\",\n \"border-0\",\n bgColorClass(BackgroundColor.CardElevated, ElementState.Hover),\n radiusStyles(Radius.Full)\n ),\n};\n\nconst variantTextStyles: Record<Variant, string> = {\n [Variant.Primary]: textColorClass(ActionColor.PrimaryText),\n [Variant.Secondary]: textColorClass(ActionColor.SecondaryText),\n [Variant.Success]: textColorClass(ActionColor.SuccessText),\n [Variant.Danger]: textColorClass(ActionColor.DangerText),\n [Variant.Icon]: textColorClass(ActionColor.IconDefault),\n [Variant.Borderless]: clsx(\n textColorClass(TextColor.Secondary),\n textColorClass(ActionColor.PrimaryText, ElementState.Hover)\n ),\n};\n\nconst sizeStyles: Record<ButtonSize, string> = {\n [Size.Xs]: clsx(\"px-2.5 py-0.75\", \"text-xs/5\"),\n [Size.Sm]: clsx(\"px-3.5 py-1.5\", \"text-sm/5\"),\n [Size.Md]: clsx(\"px-4 py-2\", \"text-md/5\"),\n};\n\nconst iconStyles: Record<ButtonSize, string> = {\n [Size.Xs]: clsx(\"w-4 h-4\", \"leading-none\"),\n [Size.Sm]: clsx(\"w-4 h-4\", \"leading-none\"),\n [Size.Md]: clsx(\"w-5 h-5\", \"leading-none\"),\n};\n\n/**\n * A basic button component.\n *\n * @example\n * ```tsx\n * <Button onClick={() => alert(\"Button clicked\")}>\n * Click me\n * </Button>\n * ```\n *\n * @param variant The button variant; this controls the general styling of the button. See {@link Variant}.\n * @param size The size of the button; this controls both the text size and the button size. See {@link Size}.\n * @param borderless Boolean controlling whether the button should be \"borderless,\" removing any borders and\n * rounding the corners.\n * @param leadingIcon Optional reference ({@link FC}) to an icon or an {@link IconName} which prefixes the button's content. See {@link Icon}.\n * @param trailingIcon Optional reference ({@link FC}) to an icon or an {@link IconName} which postfixes the button's content. See {@link Icon}.\n * @param className `class` overrides to apply to the component.\n * @param children Button content.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const Button: FC<ButtonProps> = ({\n variant = Variant.Primary,\n size = Size.Md,\n borderless = false,\n leadingIcon,\n trailingIcon,\n className,\n children,\n ...props\n}) => {\n return (\n <HeadlessButton\n className={cn(\n \"inline-flex items-center justify-center\",\n borderless && \"aspect-square min-w-0 shrink-0\", // circular\n borderless ? radiusStyles(Radius.Full) : radiusStyles(Radius.Sm),\n \"font-medium\",\n \"transition-colors\",\n \"hover:cursor-pointer\",\n \"disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none\",\n sizeStyles[size],\n variantStyles[variant],\n borderless && \"border-0\",\n className\n )}\n {...props}\n >\n <div\n className={clsx(\n \"flex flex-nowrap items-center justify-center gap-x-sm\",\n variantTextStyles[variant]\n )}\n >\n <IconWrapper\n content={leadingIcon}\n size={size}\n className={clsx(iconStyles[size], \"flex justify-center items-center\")}\n />\n\n {children}\n\n <IconWrapper\n content={trailingIcon}\n size={size}\n className={clsx(iconStyles[size], \"flex justify-center items-center\")}\n />\n </div>\n </HeadlessButton>\n );\n};\n\nButton.displayName = \"Button\";\n","import { ElementState, withElementState } from \"@/types/element\";\nimport Shadow from \"@/types/shadow\";\n\nexport const SHADOW_STYLES: Record<Shadow, string> = {\n [Shadow.None]: \"shadow-none\",\n [Shadow.Xs]: \"shadow-xs\",\n [Shadow.Sm]: \"shadow-sm\",\n [Shadow.Md]: \"shadow-md\",\n [Shadow.Lg]: \"shadow-lg\",\n [Shadow.Xl]: \"shadow-xl\",\n};\n\nexport default function shadowStyles(\n shadow?: Shadow,\n elementState?: ElementState\n): string | null {\n if (!shadow) return null;\n\n if (elementState === ElementState.None) {\n return SHADOW_STYLES[shadow];\n }\n\n return withElementState(SHADOW_STYLES[shadow], elementState);\n}\n","import type { FC, HTMLAttributes } from \"react\";\n\nimport radiusStyles from \"@/styles/radius\";\nimport shadowStyles from \"@/styles/shadow\";\nimport {\n BackgroundColor,\n bgColorClass,\n BorderColor,\n borderColorClass,\n Color,\n Radius,\n Shadow,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport enum CardBackground {\n Primary = \"primary\",\n Secondary = \"secondary\",\n Elevated = \"elevated\",\n}\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n background?: CardBackground;\n border?: boolean;\n className?: string;\n compact?: boolean;\n shadow?: Shadow;\n outlined?: boolean;\n}\n\nconst bgColorMap: Record<CardBackground, Color> = {\n [CardBackground.Primary]: BackgroundColor.Card1,\n [CardBackground.Secondary]: BackgroundColor.Card2,\n [CardBackground.Elevated]: BackgroundColor.CardElevated,\n};\n\n/**\n * A styled container component with configurable background, shadow, and padding.\n *\n * @example\n * ```tsx\n * <Card background={CardBackground.Secondary} compact>\n * Card content here\n * </Card>\n * ```\n *\n * @param background The background color variant. Defaults to {@link CardBackground.Primary}.\n * @param border Whether to render a border around the card.\n * @param className Additional CSS class names to apply to the card.\n * @param compact When true, reduces internal padding.\n * @param shadow The shadow depth applied to the card. Defaults to {@link Shadow.Md}.\n * @param outlined When true, replaces the shadow with a border outline.\n * @param children The content of the card.\n * @param props Additional HTML properties to apply to the card.\n */\nexport const Card: FC<CardProps> = ({\n children,\n className,\n compact,\n background = CardBackground.Primary,\n outlined,\n shadow = Shadow.Md,\n ...props\n}) => {\n const backgroundColor = bgColorMap[background];\n\n return (\n <div\n className={cn(\n outlined ? \"border-1\" : shadowStyles(shadow),\n outlined && borderColorClass(BorderColor.Default),\n bgColorClass(backgroundColor),\n compact ? \"p-2.5\" : \"p-5\",\n radiusStyles(Radius.Lg),\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n};\n\nCard.displayName = \"Card\";\n","import { FC, HTMLAttributes } from \"react\";\n\nimport { Align, Justify, Orientation, Spacing } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport interface StackProps extends HTMLAttributes<HTMLDivElement> {\n align?: Align;\n justify?: Justify;\n orientation?: Orientation;\n spacing?: Spacing;\n}\n\nconst alignStyles: Record<Align, string> = {\n [Align.Baseline]: \"items-baseline\",\n [Align.Center]: \"items-center\",\n [Align.End]: \"items-end\",\n [Align.Start]: \"items-start\",\n};\n\nconst justifyStyles: Record<Justify, string> = {\n [Justify.Around]: \"justify-around\",\n [Justify.Between]: \"justify-between\",\n [Justify.Center]: \"justify-center\",\n [Justify.End]: \"justify-end\",\n [Justify.Evenly]: \"justify-evenly\",\n [Justify.Start]: \"justify-start\",\n};\n\nconst spacingStyles: Record<Spacing, string> = {\n [Spacing.None]: \"\",\n [Spacing.Xs]: \"gap-xs\",\n [Spacing.Sm]: \"gap-sm\",\n [Spacing.Md]: \"gap-md\",\n [Spacing.Lg]: \"gap-lg\",\n [Spacing.Xl]: \"gap-xl\",\n};\n\n/**\n * A layout component which organizes children into a vertical or horizontal stack.\n *\n * @example\n * ```tsx\n * <Stack orientation={Orientation.Vertical} spacing={Spacing.Md}>\n * <Text>Top</Text>\n * <Text>Middle</Text>\n * <Text>Bottom</Text>\n * </Stack>\n * ```\n *\n * @example\n * ```tsx\n * <Stack orientation={Orientation.Horizontal} spacing={Spacing.Md}>\n * <Text>Left</Text>\n * <Text>Middle</Text>\n * <Text>Right</Text>\n * </Stack>\n * ```\n *\n * @example\n * ```tsx\n * <Stack orientation={Orientation.Horizontal} align={Align.Center} justify={Justify.Between}>\n * <Text>Left</Text>\n * <Text>Middle</Text>\n * <Text>Right</Text>\n * </Stack>\n * ```\n *\n * @param align Alignment of children along the stack's cross axis. See {@link Align}.\n * @param justify Justification of children along the stack's primary axis. See {@link Justify}.\n * @param orientation Orientation of the stack. See {@link Orientation}.\n * @param spacing Spacing between child components in the stack. See {@link Spacing}.\n * @param children Content which is wrapped by this component.\n * @param className `class` overrides to apply to the component.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const Stack: FC<StackProps> = ({\n align,\n justify,\n orientation = Orientation.Row,\n spacing = Spacing.None,\n children,\n className,\n ...props\n}) => {\n return (\n <div\n className={cn(\n \"flex\",\n orientation === Orientation.Column && \"flex-col\",\n spacingStyles[spacing],\n align && alignStyles[align],\n justify && justifyStyles[justify],\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n};\n\nStack.displayName = \"Stack\";\n","import type { FC } from \"react\";\nimport React from \"react\";\n\nimport { Card, CardBackground, CardProps } from \"@/components/Card\";\nimport { Icon } from \"@/components/Icons\";\nimport { Stack } from \"@/components/Stack\";\nimport { Text } from \"@/components/Text\";\nimport {\n Align,\n BrandColor,\n IconName,\n Justify,\n Orientation,\n Shadow,\n Size,\n Spacing,\n TextColor,\n textColorClass,\n TextVariant,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport interface RichCardProps extends CardProps {\n badge?: string;\n compact?: boolean;\n description?: string | string[];\n icon?: IconName;\n title?: string;\n action?: React.ReactNode;\n}\n\n/**\n * A card component that displays an icon, title, description, and badge.\n * Designed for richer content such as dashboards or item lists.\n *\n * @example\n * ```tsx\n * <RichCard\n * icon={IconName.Star}\n * title=\"Getting Started\"\n * description=\"Follow these steps to set up your workspace.\"\n * badge=\"New\"\n * />\n * ```\n *\n * @param badge A small badge for supplementary info such as status or count.\n * @param compact When true, uses a horizontal layout with tighter spacing.\n * @param description Body text. Pass an array of strings to render a bulleted list.\n * @param icon The icon to display beside the title. See {@link IconName}.\n * @param title The card heading.\n * @param action A React node (e.g. a button) rendered in the action slot.\n * @param children Content displayed inside the card, below the description.\n * @param props Additional HTML properties to apply to the card.\n */\nexport const RichCard: FC<RichCardProps> = ({\n children,\n action,\n badge,\n description,\n icon,\n title,\n compact,\n ...props\n}) => {\n return (\n <Card {...props}>\n <Stack\n orientation={compact ? Orientation.Row : Orientation.Column}\n spacing={compact ? Spacing.Lg : Spacing.Md}\n align={Align.Start}\n justify={Justify.Between}\n className={cn(\"w-full h-full\")}\n >\n <Stack\n orientation={Orientation.Column}\n spacing={compact ? Spacing.Xs : Spacing.Md}\n >\n <Stack\n spacing={compact ? Spacing.Sm : Spacing.Md}\n align={Align.Center}\n >\n {icon && !compact && (\n <Card\n compact\n background={CardBackground.Elevated}\n shadow={Shadow.None}\n >\n <Icon name={icon} size={Size.Xl} color={BrandColor.Accent} />\n </Card>\n )}\n {icon && compact && (\n <Icon name={icon} size={Size.Xl} color={BrandColor.Accent} />\n )}\n <Stack\n orientation={Orientation.Column}\n spacing={compact ? Spacing.Xs : Spacing.Sm}\n >\n {badge && (\n <Text\n variant={TextVariant.Md}\n color={BrandColor.Accent}\n className={cn(\"leading-normal\")}\n >\n {badge}\n </Text>\n )}\n {title && (\n <Text variant={TextVariant.Lg} className={cn(\"leading-normal\")}>\n {title}\n </Text>\n )}\n </Stack>\n </Stack>\n {description && <Description text={description} />}\n {children}\n </Stack>\n {action && <div className={cn(!compact && \"w-full\")}>{action}</div>}\n </Stack>\n </Card>\n );\n};\n\n/**\n * Renders card body text. A plain string is displayed as a single paragraph;\n * an array of strings is rendered as a bulleted list.\n *\n * @param text The description content.\n */\nexport const Description: FC<{ text: string | string[] }> = ({ text }) => {\n if (typeof text === \"string\") {\n return <Text color={TextColor.Secondary}>{text}</Text>;\n }\n\n return (\n <ul className=\"list-disc list-inside mx-2 marker:text-xs\">\n {text.map((line) => (\n <li key={line} className={textColorClass(TextColor.Secondary)}>\n <Text color={TextColor.Secondary}>{line}</Text>\n </li>\n ))}\n </ul>\n );\n};\n\nRichCard.displayName = \"RichCard\";\n","/**\n * Checks if a value is nullish (null or undefined).\n * @param value The value to check.\n * @returns True if the value is nullish, otherwise false.\n */\nexport function isNullish(value: unknown): boolean {\n return value === undefined || value === null;\n}\n","import type { FC } from \"react\";\n\nimport { Text, TextProps } from \"@/components/Text\";\nimport { TextColor, TextVariant } from \"@/types\";\nimport { isNullish } from \"@/util/type-check\";\n\nexport interface UnsetHintProps extends TextProps {\n value?: unknown;\n hint: string;\n}\n\n/**\n * A basic hint to display to the user.\n *\n * This is an alias for {@link Text} with {@link TextVariant.Xxs}.\n *\n * @param value A value used to determine whether to display the hint.\n * If this value is nullish, then the hint is shown.\n * See {@link isNullish}.\n * @param hint The hint to display when `value` is nullish.\n * @param props Additional HTML properties to apply to the component.\n *\n * @internal For use by VOODO form controls.\n */\nexport const UnsetHint: FC<UnsetHintProps> = ({ value, hint, ...props }) => {\n const isUnset = isNullish(value);\n\n return isUnset ? (\n <Text color={TextColor.Muted} variant={TextVariant.Xxs} {...props}>\n {hint}\n </Text>\n ) : null;\n};\n\nUnsetHint.displayName = \"UnsetHint\";\n","import { Field, Checkbox as HeadlessCheckbox, Label } from \"@headlessui/react\";\nimport clsx from \"clsx\";\nimport { type FC, InputHTMLAttributes } from \"react\";\n\nimport { Icon } from \"@/components/Icons/Icon\";\nimport { UnsetHint } from \"@/components/UnsetHint\";\nimport radiusStyles from \"@/styles/radius\";\nimport { TEXT_STYLES } from \"@/styles/text\";\nimport {\n ActionColor,\n bgColorClass,\n BorderColor,\n borderColorClass,\n BrandColor,\n ElementState,\n IconName,\n Radius,\n Size,\n TextColor,\n textColorClass,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\ntype ModifiedCheckboxProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"size\" | \"onChange\" | \"checked\" | \"disabled\" | \"className\"\n>;\n\nexport interface CheckboxProps extends ModifiedCheckboxProps {\n checked?: boolean;\n onChange?: (checked: boolean) => void;\n indeterminate?: boolean;\n label?: string;\n disabled?: boolean;\n size?: Size;\n radius?: Radius;\n className?: string;\n labelClassName?: string;\n showUnsetHint?: boolean;\n}\n\nconst sizeStyles: Record<Size, string> = {\n [Size.Xs]: clsx(\"w-3 h-3\"),\n [Size.Sm]: clsx(\"w-4 h-4\"),\n [Size.Md]: clsx(\"w-5 h-5\"),\n [Size.Lg]: clsx(\"w-6 h-6\"),\n [Size.Xl]: clsx(\"w-7 h-7\"),\n};\n\nconst checkmarkSizeStyles: Record<Size, string> = {\n [Size.Xs]: clsx(\"checked:after:text-xs\"),\n [Size.Sm]: clsx(\"checked:after:text-sm\"),\n [Size.Md]: clsx(\"checked:after:text-base\"),\n [Size.Lg]: clsx(\"checked:after:text-lg\"),\n [Size.Xl]: clsx(\"checked:after:text-xl\"),\n};\n\n/**\n * A basic checkbox component.\n *\n * This component operates exclusively as a controlled component. See `checked` and `onChange` for controls.\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const [checked, setChecked] = useState<boolean>(false);\n *\n * return (\n * <Checkbox\n * checked={checked}\n * onChange={(newValue: boolean) => setChecked(newValue)}\n * label={\"Create new dataset\"}\n * />\n * );\n * };\n * ```\n *\n * @param checked `checked` state of the checkbox.\n * @param onChange Change handler for when the checked state changes.\n * @param indeterminate When true (and `checked` is false), renders a dash icon,\n * indicating partial selection among descendants. Ignored when `checked` is true.\n * @param size Size of the checkbox; this controls both the checkbox itself and the associated label. See {@link Size}.\n * @param radius Border radius of the checkbox; this controls the styling of the checkbox itself. See {@link Radius}.\n * @param className `class` overrides to apply to the checkbox.\n * @param labelClassName `class` overrides for custom styling of the checkbox's label.\n * @param label Label to display alongside the checkbox.\n * @param showUnsetHint If `true`, displays a hint to the user for checkbox interaction.\n * @param props Additional HTML properties to apply to the checkbox.\n */\nexport const Checkbox: FC<CheckboxProps> = ({\n checked,\n onChange,\n indeterminate,\n size = Size.Md,\n radius = Radius.Xs,\n className,\n labelClassName,\n label,\n showUnsetHint,\n ...props\n}) => {\n const showIndeterminate = !!indeterminate && !checked;\n\n return (\n <Field className=\"group flex items-center gap-2\">\n <HeadlessCheckbox\n checked={checked}\n onChange={onChange}\n indeterminate={showIndeterminate}\n className={cn(\n \"group\",\n \"relative\",\n \"cursor-pointer\",\n \"appearance-none\",\n \"border\",\n borderColorClass(BorderColor.Default),\n \"group-hover:border-action-primary-primary\",\n radiusStyles(radius),\n sizeStyles[size],\n checkmarkSizeStyles[size],\n \"disabled:opacity-50\",\n \"disabled:cursor-not-allowed\",\n bgColorClass(ActionColor.PrimaryDefault, ElementState.Checked),\n borderColorClass(BorderColor.Active, ElementState.Checked),\n showIndeterminate &&\n \"bg-[var(--color-brand-primary)]/25 border-[var(--color-brand-primary)] \",\n className\n )}\n {...props}\n >\n {showIndeterminate ? (\n <Icon\n name={IconName.Remove}\n color={BrandColor.Primary}\n className=\"absolute inset-0 w-full h-full\"\n />\n ) : (\n <Icon\n name={IconName.Check}\n color={TextColor.Primary}\n className={clsx(\n \"absolute inset-0 w-full h-full opacity-0 group-data-checked:opacity-100\"\n )}\n />\n )}\n </HeadlessCheckbox>\n {label && (\n <Label\n className={cn(\n textColorClass(TextColor.Primary),\n TEXT_STYLES[size],\n \"cursor-pointer\",\n labelClassName\n )}\n >\n {label}\n </Label>\n )}\n {showUnsetHint && (\n <UnsetHint value={checked} hint=\"Click the checkbox to set a value\" />\n )}\n </Field>\n );\n};\n\nCheckbox.displayName = \"Checkbox\";\n","import clsx from \"clsx\";\nimport type { FC, HTMLAttributes } from \"react\";\n\n/**\n * A wrapper component which applies styling to make its children appear clickable to the user.\n *\n * Clickable components have their cursor set to the `pointer` cursor option when hovering.\n *\n * @example\n * ```tsx\n * <Clickable onClick={() => deleteEntry()}}>\n * <Icon name={IconName.Delete} />\n * </Clickable>\n * ```\n *\n * @param children Content wrapped by this component.\n * @param className `class` overrides to apply to the component.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const Clickable: FC<HTMLAttributes<HTMLSpanElement>> = ({\n children,\n className,\n ...props\n}) => {\n return (\n <span className={clsx(\"cursor-pointer\", className)} {...props}>\n {children}\n </span>\n );\n};\n\nClickable.displayName = \"Clickable\";\n","import { useCallback, useMemo, useState } from \"react\";\n\n/**\n * Props for {@link useControllableState}.\n *\n * A component is \"controlled\" when `value` is defined and \"uncontrolled\"\n * otherwise. In uncontrolled mode the hook owns the state and seeds it with\n * `initializer`; in controlled mode the consumer owns the state and is\n * responsible for updating `value` in response to `onChange`.\n */\nexport type ControllableStateProps<T> = {\n /** Lazily produces the initial value used when the hook is uncontrolled. */\n initializer: () => T;\n /** Invoked with the next value on every change, in both controlled and uncontrolled modes. */\n onChange?: (value: T) => void;\n /** When defined, switches the hook into controlled mode and uses this as the resolved value. */\n value?: T;\n};\n\n/**\n * Tuple of `[value, onChange]` returned by {@link useControllableState}, mirroring\n * the shape of `useState`.\n */\nexport type Controllable<T> = [value: T, onChange: (value: T) => void];\n\n/**\n * Hook for implementing components that may be either controlled or\n * uncontrolled, following the same convention as native form inputs.\n *\n * - If `value` is `undefined`, the hook manages internal state seeded by\n * `initializer` and updates it on every change.\n * - If `value` is defined, the hook returns `value` as-is and never mutates\n * internal state; the consumer is responsible for re-rendering with the\n * next value.\n *\n * `onChange` (when provided) fires on every change in either mode.\n *\n * @example\n * ```tsx\n * const [value, setValue] = useControllableState({\n * initializer: () => defaultValue,\n * onChange,\n * value: controlledValue,\n * });\n * ```\n */\nexport const useControllableState = <T>({\n initializer,\n onChange,\n value,\n}: ControllableStateProps<T>): Controllable<T> => {\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<T>(initializer);\n\n const resolvedValue = isControlled ? value : internalValue;\n const resolvedOnChange = useCallback(\n (value: T) => {\n onChange?.(value);\n if (!isControlled) {\n setInternalValue(value);\n }\n },\n [isControlled, onChange]\n );\n\n return useMemo(\n () => [resolvedValue, resolvedOnChange],\n [resolvedOnChange, resolvedValue]\n );\n};\n","import { useCallback } from \"react\";\n\nimport { useControllableState } from \"@/util/useControllableState\";\n\n/**\n * Options for {@link useDisclosure}.\n *\n * Provide `defaultOpen` for an uncontrolled disclosure, or `open` (with\n * `onOpenChange`) for a controlled disclosure.\n */\nexport interface UseDisclosureOptions {\n /** Initial open state when uncontrolled. Default `true`. */\n defaultOpen?: boolean;\n /** When defined, switches the hook into controlled mode and uses this as the resolved open state. */\n open?: boolean;\n /** Invoked with the next open state on every change, in both controlled and uncontrolled modes. */\n onOpenChange?: (open: boolean) => void;\n}\n\n/**\n * Return value of {@link useDisclosure}.\n */\nexport interface UseDisclosureReturn {\n /** Current open state. */\n open: boolean;\n /** Flip the open state. In controlled mode this only fires `onOpenChange` and does not update internal state. */\n toggle: () => void;\n /** Set the open state. In controlled mode this only fires `onOpenChange` and does not update internal state. */\n setOpen: (next: boolean) => void;\n}\n\n/**\n * Hook for managing a boolean \"open / closed\" state, suitable for popovers,\n * dialogs, accordions, and other disclosures.\n *\n * Supports both controlled and uncontrolled usage via {@link useControllableState}:\n * pass `defaultOpen` for uncontrolled, or `open` (typically alongside\n * `onOpenChange`) for controlled.\n *\n * @example\n * ```tsx\n * // Uncontrolled\n * const { open, toggle, setOpen } = useDisclosure({ defaultOpen: false });\n *\n * // Controlled\n * const { open, toggle } = useDisclosure({ open: isOpen, onOpenChange: setIsOpen });\n * ```\n */\nexport function useDisclosure({\n defaultOpen = true,\n open: controlledOpen,\n onOpenChange,\n}: UseDisclosureOptions = {}): UseDisclosureReturn {\n const [open, setOpen] = useControllableState({\n initializer: () => defaultOpen,\n onChange: onOpenChange,\n value: controlledOpen,\n });\n\n const toggle = useCallback(() => setOpen(!open), [open, setOpen]);\n\n return { open, toggle, setOpen };\n}\n","import clsx from \"clsx\";\nimport React from \"react\";\n\nimport { useDisclosure, UseDisclosureOptions } from \"@/util/useDisclosure\";\n\nimport styles from \"./Collapsible.module.css\";\n\n/**\n * Snapshot of open/close state passed to the `header` render prop so the\n * caller can style the trigger element (e.g. rotate a chevron icon).\n */\nexport interface CollapsibleState {\n /** Whether the content area is currently open. */\n open: boolean;\n /** Toggles the open state. Calls `onOpenChange` when in controlled mode. */\n toggle: () => void;\n}\n\n/**\n * Props for {@link Collapsible}.\n *\n * Extends {@link UseDisclosureOptions} so the component supports both\n * uncontrolled (`defaultOpen`) and controlled (`open` + `onOpenChange`) usage.\n */\nexport interface CollapsibleProps extends UseDisclosureOptions {\n /**\n * Render prop for the clickable header. Receives the current\n * {@link CollapsibleState} so the caller can wire up the toggle and reflect\n * open state in the trigger UI.\n *\n * @example\n * ```tsx\n * <Collapsible header={({ open, toggle }) => (\n * <button onClick={toggle}>{open ? \"Hide\" : \"Show\"}</button>\n * )}>\n * content\n * </Collapsible>\n * ```\n */\n header?: (state: CollapsibleState) => React.ReactNode;\n /**\n * When `true` (default), the content area expands and collapses with a CSS\n * `max-height` transition so the DOM node stays mounted and accessible while\n * collapsed. When `false`, children are unmounted immediately with no animation.\n * @default true\n */\n animated?: boolean;\n /** Content to show or hide. */\n children?: React.ReactNode;\n /** Additional class name applied to the root element. */\n className?: string;\n /** Inline styles applied to the root element. */\n style?: React.CSSProperties;\n}\n\n/**\n * A vertically collapsible container with an optional header trigger.\n *\n * Supports uncontrolled and controlled open state via {@link useDisclosure}.\n * When `animated` is true, content visibility is driven by a CSS `max-height`\n * transition so the DOM node stays mounted and accessible while collapsed.\n *\n * @example\n * ```tsx\n * // Uncontrolled — starts open\n * <Collapsible\n * header={({ open, toggle }) => (\n * <button onClick={toggle}>{open ? \"Collapse\" : \"Expand\"}</button>\n * )}\n * >\n * <p>Hidden content</p>\n * </Collapsible>\n *\n * // Controlled\n * const [open, setOpen] = useState(false);\n * <Collapsible open={open} onOpenChange={setOpen} header={({ toggle }) => (\n * <button onClick={toggle}>Toggle</button>\n * )}>\n * <p>Controlled content</p>\n * </Collapsible>\n * ```\n */\nconst Collapsible: React.FC<CollapsibleProps> = ({\n defaultOpen = true,\n open: controlledOpen,\n onOpenChange,\n header,\n animated = true,\n children,\n className,\n style,\n}) => {\n const { open, toggle } = useDisclosure({\n defaultOpen,\n open: controlledOpen,\n onOpenChange,\n });\n\n return (\n <div className={clsx(styles.root, className)} style={style}>\n {header?.({ open, toggle })}\n {animated ? (\n <div className={clsx(styles.content, { [styles.contentOpen]: open })}>\n {children}\n </div>\n ) : open ? (\n children\n ) : null}\n </div>\n );\n};\n\nexport default Collapsible;\n","import { MenuItem } from \"@headlessui/react\";\nimport type { FC, HTMLAttributes } from \"react\";\n\nimport { Icon } from \"@/components/Icons\";\nimport { Text } from \"@/components/Text\";\nimport radiusStyles from \"@/styles/radius\";\nimport {\n BackgroundColor,\n bgColorClass,\n ElementState,\n IconName,\n Radius,\n Size,\n TextColor,\n TextVariant,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\n/**\n * Props for {@link MenuCheckItem}.\n */\nexport interface MenuCheckItemProps extends HTMLAttributes<HTMLButtonElement> {\n /** Whether this item is currently checked/selected. */\n checked?: boolean;\n /** If `true`, the item cannot be interacted with and is rendered in a muted style. */\n disabled?: boolean;\n}\n\n/**\n * A selectable menu item with a leading checkmark indicator.\n * The checkmark is shown when `checked` is `true`; otherwise the slot is empty\n * but reserved so that text alignment stays consistent across items.\n *\n * @example\n * ```tsx\n * <Dropdown trigger={<DropdownTrigger>Sort</DropdownTrigger>}>\n * <MenuCheckItem checked={sort === \"asc\"} onClick={() => setSort(\"asc\")}>\n * Ascending\n * </MenuCheckItem>\n * <MenuCheckItem checked={sort === \"desc\"} onClick={() => setSort(\"desc\")}>\n * Descending\n * </MenuCheckItem>\n * </Dropdown>\n * ```\n *\n * @param checked If `true`, a checkmark is shown in the leading slot.\n * @param disabled If `true`, the item cannot be interacted with.\n * @param children The label text.\n * @param className `class` overrides to apply to the component.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const MenuCheckItem: FC<MenuCheckItemProps> = ({\n checked,\n disabled,\n children,\n className,\n ...props\n}) => {\n return (\n <MenuItem disabled={disabled}>\n {({ focus }) => (\n <button\n type=\"button\"\n role=\"menuitemcheckbox\"\n aria-checked={checked}\n disabled={disabled}\n className={cn(\n \"flex w-full items-center gap-2\",\n \"px-3 py-1.5\",\n radiusStyles(Radius.Sm),\n \"cursor-pointer\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n focus && bgColorClass(BackgroundColor.CardElevated),\n bgColorClass(BackgroundColor.CardElevated, ElementState.Hover),\n className\n )}\n {...props}\n >\n {/* Reserved slot so text aligns whether checked or not */}\n <span className=\"flex size-4 shrink-0 items-center justify-center\">\n {checked && (\n <Icon\n name={IconName.Check}\n size={Size.Sm}\n color={TextColor.Primary}\n />\n )}\n </span>\n <Text\n variant={TextVariant.Sm}\n color={TextColor.Primary}\n className=\"block min-w-0 truncate\"\n >\n {children}\n </Text>\n </button>\n )}\n </MenuItem>\n );\n};\n\nMenuCheckItem.displayName = \"MenuCheckItem\";\n","import { MenuItem } from \"@headlessui/react\";\nimport type { FC, HTMLAttributes, ReactNode } from \"react\";\n\nimport { Icon } from \"@/components/Icons\";\nimport { Text } from \"@/components/Text\";\nimport radiusStyles from \"@/styles/radius\";\nimport {\n BackgroundColor,\n bgColorClass,\n ElementState,\n IconColor,\n IconName,\n Radius,\n Size,\n TextColor,\n TextVariant,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\n/**\n * Props for {@link MenuIconTextItem}.\n */\nexport interface MenuIconTextItemProps extends HTMLAttributes<HTMLButtonElement> {\n /** Icon to display to the left of the text content. */\n icon: IconName | ReactNode;\n /** Primary label text. */\n text: string;\n /** Optional secondary description shown below the primary text. */\n subtext?: string;\n /** If `true`, the item cannot be interacted with and is rendered in a muted style. */\n disabled?: boolean;\n /** If `true`, renders text and icon in the destructive color palette. */\n destructive?: boolean;\n}\n\n/**\n * A menu item displaying an icon alongside primary text and an optional subtext description.\n * Matches the layout shown for action menus such as \"Sort by similarity / Find visually similar\".\n *\n * @example\n * ```tsx\n * <Dropdown trigger={<DropdownTrigger>Open</DropdownTrigger>}>\n * <MenuIconTextItem\n * icon={IconName.ImageSearch}\n * text=\"Sort by similarity\"\n * subtext=\"Find visually similar\"\n * onClick={() => {}}\n * />\n * </Dropdown>\n * ```\n *\n * @param icon An {@link IconName} or a custom ReactNode rendered in the leading slot.\n * @param text The primary label for the item.\n * @param subtext An optional secondary line rendered below the primary text in muted color.\n * @param disabled If `true`, the item cannot be interacted with.\n * @param destructive If `true`, renders text colors in the destructive palette.\n * @param className `class` overrides to apply to the component.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const MenuIconTextItem: FC<MenuIconTextItemProps> = ({\n icon,\n text,\n subtext,\n disabled,\n destructive,\n className,\n ...props\n}) => {\n const textColor = destructive ? TextColor.Destructive : TextColor.Primary;\n const subtextColor = destructive\n ? TextColor.Destructive\n : TextColor.Secondary;\n const iconColor = destructive ? IconColor.Destructive : IconColor.Default;\n\n return (\n <MenuItem disabled={disabled}>\n {({ focus }) => (\n <button\n type=\"button\"\n disabled={disabled}\n className={cn(\n \"flex w-full items-center gap-2.5\",\n \"px-3 py-1.5\",\n radiusStyles(Radius.Sm),\n \"cursor-pointer text-left\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n focus && bgColorClass(BackgroundColor.CardElevated),\n bgColorClass(BackgroundColor.CardElevated, ElementState.Hover),\n className\n )}\n {...props}\n >\n <span className=\"flex size-5 shrink-0 items-center justify-center\">\n {typeof icon === \"string\" ? (\n <Icon name={icon as IconName} size={Size.Lg} color={iconColor} />\n ) : (\n icon\n )}\n </span>\n\n <span className=\"flex flex-col gap-0.5 min-w-0\">\n <Text\n variant={TextVariant.Sm}\n color={textColor}\n className=\"block truncate\"\n >\n {text}\n </Text>\n {subtext && (\n <Text\n variant={TextVariant.Xs}\n color={subtextColor}\n className=\"block truncate\"\n >\n {subtext}\n </Text>\n )}\n </span>\n </button>\n )}\n </MenuItem>\n );\n};\n\nMenuIconTextItem.displayName = \"MenuIconTextItem\";\n","import type { FC, HTMLAttributes } from \"react\";\n\nimport { Text } from \"@/components/Text\";\nimport { TextColor, TextVariant } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\n/**\n * Props for {@link MenuSectionTitle}.\n */\nexport interface MenuSectionTitleProps extends HTMLAttributes<HTMLDivElement> {\n /** The section title text. Rendered as an uppercase muted label. */\n children: string;\n}\n\n/**\n * A non-interactive section title within a menu (e.g. {@link Dropdown}).\n * Renders as an uppercase label above a group of items.\n *\n * @example\n * ```tsx\n * <Dropdown trigger={<DropdownTrigger>Open</DropdownTrigger>}>\n * <MenuSectionTitle>Actions</MenuSectionTitle>\n * <MenuIconTextItem icon={IconName.Edit} text=\"Edit\" />\n * </Dropdown>\n * ```\n *\n * @param children The section title text.\n * @param className `class` overrides to apply to the component.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const MenuSectionTitle: FC<MenuSectionTitleProps> = ({\n children,\n className,\n ...props\n}) => {\n return (\n <div\n role=\"presentation\"\n className={cn(\"px-3 pt-2.5 pb-1\", className)}\n {...props}\n >\n <Text variant={TextVariant.Label} color={TextColor.Muted}>\n {children}\n </Text>\n </div>\n );\n};\n\nMenuSectionTitle.displayName = \"MenuSectionTitle\";\n","import type { FC, HTMLAttributes } from \"react\";\n\nimport { bgColorClass, TextColor } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\n/**\n * Props for {@link MenuSeparator}. Accepts any standard div HTML attributes.\n */\nexport type MenuSeparatorProps = HTMLAttributes<HTMLDivElement>;\n\n/**\n * A horizontal rule separator within a menu (e.g. {@link Dropdown}).\n * Used to visually divide groups of items.\n *\n * @example\n * ```tsx\n * <Dropdown trigger={<DropdownTrigger>Open</DropdownTrigger>}>\n * <MenuTextItem onClick={() => {}}>First group</MenuTextItem>\n * <MenuSeparator />\n * <MenuTextItem onClick={() => {}}>Second group</MenuTextItem>\n * </Dropdown>\n * ```\n *\n * @param className `class` overrides to apply to the component.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const MenuSeparator: FC<MenuSeparatorProps> = ({\n className,\n ...props\n}) => {\n return (\n <div\n role=\"separator\"\n className={cn(\n \"my-1 h-px\",\n bgColorClass(TextColor.Placeholder),\n className\n )}\n {...props}\n />\n );\n};\n\nMenuSeparator.displayName = \"MenuSeparator\";\n","import { MenuItem } from \"@headlessui/react\";\nimport type { FC, HTMLAttributes } from \"react\";\n\nimport { Text } from \"@/components/Text\";\nimport radiusStyles from \"@/styles/radius\";\nimport {\n BackgroundColor,\n bgColorClass,\n ElementState,\n Radius,\n TextColor,\n TextVariant,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\n/**\n * Props for {@link MenuTextItem}.\n */\nexport interface MenuTextItemProps extends HTMLAttributes<HTMLButtonElement> {\n /** If `true`, the item cannot be interacted with and is rendered in a muted style. */\n disabled?: boolean;\n /** If `true`, renders the label in the destructive text color (e.g. for \"Delete\"). */\n destructive?: boolean;\n}\n\n/**\n * A simple text-only item within a menu (e.g. {@link Dropdown}).\n *\n * @example\n * ```tsx\n * <Dropdown trigger={<DropdownTrigger>Open</DropdownTrigger>}>\n * <MenuTextItem onClick={() => console.log(\"clicked\")}>\n * Delete item\n * </MenuTextItem>\n * </Dropdown>\n * ```\n *\n * @param children The label text.\n * @param disabled If `true`, the item cannot be interacted with.\n * @param destructive If `true`, renders the label in the destructive text color.\n * @param className `class` overrides to apply to the component.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const MenuTextItem: FC<MenuTextItemProps> = ({\n children,\n disabled,\n destructive,\n className,\n ...props\n}) => {\n return (\n <MenuItem disabled={disabled}>\n {({ focus }) => (\n <button\n type=\"button\"\n disabled={disabled}\n className={cn(\n \"flex w-full items-center\",\n \"px-3 py-1.5\",\n radiusStyles(Radius.Sm),\n \"cursor-pointer\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n focus && bgColorClass(BackgroundColor.CardElevated),\n bgColorClass(BackgroundColor.CardElevated, ElementState.Hover),\n className\n )}\n {...props}\n >\n <Text\n variant={TextVariant.Sm}\n color={destructive ? TextColor.Destructive : TextColor.Primary}\n className=\"block min-w-0 truncate\"\n >\n {children}\n </Text>\n </button>\n )}\n </MenuItem>\n );\n};\n\nMenuTextItem.displayName = \"MenuTextItem\";\n","import radiusStyles from \"@/styles/radius\";\nimport shadowStyles from \"@/styles/shadow\";\nimport { BackgroundColor, bgColorClass, Radius, Shadow } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\n/**\n * Shared visual styles for menu panels (Dropdown, ContextMenu, etc.).\n *\n * Provides the popover background, padding, max-width cap, radius, shadow,\n * and focus outline reset that define the menu's visual identity.\n */\nexport const menuPanelStyles = (): string =>\n cn(\n \"max-w-xs\",\n \"p-1.5\",\n bgColorClass(BackgroundColor.Popover),\n radiusStyles(Radius.Lg),\n shadowStyles(Shadow.Lg),\n \"focus:outline-none\"\n );\n","import { Menu, MenuButton, MenuItems } from \"@headlessui/react\";\nimport {\n useRef,\n useState,\n type FC,\n type HTMLAttributes,\n type MouseEvent,\n type ReactNode,\n} from \"react\";\nimport { flushSync } from \"react-dom\";\n\nimport { menuPanelStyles } from \"@/components/Menu\";\nimport { ZIndex, zIndexStyles } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\n/**\n * Anchor placements used when the cursor is far from any viewport edge\n * vs. flipped placements when the menu would overflow.\n */\ntype MenuAnchor = \"bottom start\" | \"bottom end\" | \"top start\" | \"top end\";\n\n/**\n * Conservative estimate of the menu panel size (px). Used at right-click\n * time to decide whether to flip the anchor away from the viewport edge.\n * The actual menu is capped at `max-w-xs` (320px); the height bound is a\n * generous worst-case for typical menus (8–10 items + sections).\n */\nconst ESTIMATED_MENU_SIZE = { width: 320, height: 320 };\n\n/**\n * Pick the menu anchor based on whether the menu would overflow the\n * viewport when opened in the default `bottom start` direction.\n *\n * @internal\n */\nexport const pickAnchor = (\n cursor: { x: number; y: number },\n viewport: { width: number; height: number },\n menu: { width: number; height: number } = ESTIMATED_MENU_SIZE\n): MenuAnchor => {\n const edge = cursor.y + menu.height > viewport.height ? \"top\" : \"bottom\";\n const alignment = cursor.x + menu.width > viewport.width ? \"end\" : \"start\";\n return `${edge} ${alignment}` as MenuAnchor;\n};\n\n/**\n * Props for {@link ContextMenu}.\n */\nexport interface ContextMenuProps extends HTMLAttributes<HTMLDivElement> {\n /** The right-clickable area. Right-click anywhere inside opens the menu. */\n children: ReactNode;\n /** Menu content. Use the Menu* primitive components. */\n menu: ReactNode;\n /** If `true`, right-click is ignored and the menu does not open. */\n disabled?: boolean;\n}\n\n/**\n * A right-click triggered menu. Opens at the cursor position, dismisses on\n * click outside, item selection, or Escape.\n *\n * Composes with the Menu primitives ({@link MenuTextItem},\n * {@link MenuIconTextItem}, {@link MenuCheckItem}, {@link MenuSectionTitle},\n * {@link MenuSeparator}). Built on HeadlessUI's `Menu`, so keyboard\n * navigation and ARIA `role=\"menu\"` semantics work out of the box.\n *\n * @example\n * ```tsx\n * <ContextMenu\n * menu={\n * <>\n * <MenuTextItem onClick={handleEdit}>Edit</MenuTextItem>\n * <MenuTextItem onClick={handleDuplicate}>Duplicate</MenuTextItem>\n * <MenuSeparator />\n * <MenuTextItem destructive onClick={handleDelete}>\n * Delete\n * </MenuTextItem>\n * </>\n * }\n * >\n * <div className=\"size-full\">Right-click me</div>\n * </ContextMenu>\n * ```\n *\n * @param children The right-clickable area.\n * @param menu Menu content — use the Menu* primitive components.\n * @param disabled If `true`, right-click is ignored.\n * @param className `class` overrides for the wrapper element.\n * @param props Additional HTML properties for the wrapper element.\n */\nexport const ContextMenu: FC<ContextMenuProps> = ({\n children,\n menu,\n disabled,\n className,\n onContextMenu,\n ...props\n}) => {\n const buttonRef = useRef<HTMLButtonElement>(null);\n const closeRef = useRef<(() => void) | null>(null);\n const [position, setPosition] = useState({ x: 0, y: 0 });\n const [anchor, setAnchor] = useState<MenuAnchor>(\"bottom start\");\n\n const handleContextMenu = (e: MouseEvent<HTMLDivElement>): void => {\n onContextMenu?.(e);\n if (e.defaultPrevented || disabled) return;\n e.preventDefault();\n closeRef.current?.();\n const nextAnchor = pickAnchor(\n { x: e.clientX, y: e.clientY },\n { width: window.innerWidth, height: window.innerHeight }\n );\n flushSync(() => {\n setPosition({ x: e.clientX, y: e.clientY });\n setAnchor(nextAnchor);\n });\n buttonRef.current?.click();\n };\n\n return (\n <>\n <div onContextMenu={handleContextMenu} className={className} {...props}>\n {children}\n </div>\n <Menu>\n {({ close }) => {\n closeRef.current = close;\n return (\n <>\n <MenuButton\n ref={buttonRef}\n as=\"div\"\n aria-hidden\n tabIndex={-1}\n style={{\n position: \"fixed\",\n left: position.x,\n top: position.y,\n width: 1,\n height: 1,\n opacity: 0,\n pointerEvents: \"none\",\n }}\n />\n <MenuItems\n anchor={{ to: anchor, gap: 0 }}\n portal\n className={cn(\n menuPanelStyles(),\n zIndexStyles(ZIndex.AboveModal)\n )}\n >\n {menu}\n </MenuItems>\n </>\n );\n }}\n </Menu>\n </>\n );\n};\n\nContextMenu.displayName = \"ContextMenu\";\n","import clsx from \"clsx\";\n\nimport { Size } from \"@/types\";\n\nexport const sizeStyles: Partial<Record<Size, string>> = {\n [Size.Sm]: clsx(\"py-1.75\", \"text-sm/5\", \"h-[2rem]\"),\n [Size.Md]: clsx(\"py-2\", \"text-md/5\", \"h-[2.25rem]\"),\n [Size.Lg]: clsx(\"py-2.25\", \"text-lg/5\", \"h-[2.5rem]\"),\n};\n\nexport const iconPaddingStyles: Partial<Record<Size, string>> = {\n [Size.Sm]: \"pl-2.5\",\n [Size.Md]: \"pl-2.75\",\n [Size.Lg]: \"pl-3\",\n};\n\nexport const iconSizeStyles: Partial<Record<Size, string>> = {\n [Size.Sm]: \"w-3.5 h-3.5\",\n [Size.Md]: \"w-3.75 h-3.75\",\n [Size.Lg]: \"w-4 h-4\",\n};\n\nexport const paddingLeftStyles: Partial<Record<Size, string>> = {\n [Size.Sm]: \"pl-7.5\",\n [Size.Md]: \"pl-8\",\n [Size.Lg]: \"pl-8.25\",\n};\n","import { Button } from \"@headlessui/react\";\nimport { type FC } from \"react\";\n\nimport { Icon } from \"@/components/Icons\";\nimport { IconColor, Size, textColorClass } from \"@/types\";\nimport { IconName } from \"@/types/icons\";\nimport { cn } from \"@/util/classes\";\n\nimport { iconPaddingStyles, iconSizeStyles } from \"../Input/styles\";\n\nexport enum IconPosition {\n Leading = \"leading\",\n Trailing = \"trailing\",\n}\n\nexport interface DatepickerIconButtonProps {\n onClick: () => void;\n disabled?: boolean;\n hasValue?: boolean;\n size?: Size;\n ariaLabel?: string;\n iconName: IconName;\n position?: IconPosition;\n}\n\n/**\n * An interactable icon to display within the datepicker input.\n *\n * @param onClick Callback triggered when the icon is clicked.\n * @param disabled If `true`, disables interaction with the icon.\n * @param size Size of the icon. See {@link Size}.\n * @param ariaLabel Optional aria label for the icon; only used for accessibility.\n * @param iconName Name of the icon. See {@link IconName}.\n * @param position The position of the icon. See {@link IconPosition}.\n *\n * @internal For use by {@link DatepickerInput}.\n */\nexport const DatepickerIconButton: FC<DatepickerIconButtonProps> = ({\n onClick,\n disabled,\n size = Size.Md,\n ariaLabel = \"Open date picker\",\n iconName,\n position = IconPosition.Leading,\n}) => {\n const positionClasses =\n position === IconPosition.Leading\n ? \"absolute left-0\"\n : \"absolute right-0 pr-3\";\n\n return (\n <Button\n onClick={onClick}\n disabled={disabled}\n className={cn(\n positionClasses,\n \"flex items-center justify-center\",\n \"cursor-pointer\",\n \"disabled:cursor-not-allowed\",\n position === IconPosition.Leading && iconPaddingStyles[size],\n \"z-10\"\n )}\n aria-label={ariaLabel}\n >\n <Icon\n name={iconName}\n className={cn(iconSizeStyles[size], textColorClass(IconColor.Disabled))}\n />\n </Button>\n );\n};\n\nexport default DatepickerIconButton;\n","import { type FC, useCallback, useRef } from \"react\";\n\nimport radiusStyles from \"@/styles/radius\";\nimport {\n BackgroundColor,\n bgColorClass,\n BorderColor,\n borderColorClass,\n ElementState,\n Radius,\n Size,\n TextColor,\n textColorClass,\n} from \"@/types\";\nimport { IconName } from \"@/types/icons\";\nimport { cn } from \"@/util/classes\";\n\nimport { paddingLeftStyles, sizeStyles } from \"../Input/styles\";\n\nimport DatepickerIconButton, { IconPosition } from \"./DatepickerIconButton\";\n\nconst datePickerInputStyle = ({\n disabled,\n error,\n radius = Radius.Sm,\n size = Size.Md,\n}: {\n disabled?: boolean;\n error?: boolean;\n radius?: Radius;\n size?: Size;\n}): string =>\n cn(\n \"w-full\",\n bgColorClass(BackgroundColor.Background),\n textColorClass(TextColor.Primary),\n \"placeholder:text-content-text-tertiary\",\n \"transition-colors\",\n \"border\",\n error\n ? borderColorClass(BorderColor.Error)\n : borderColorClass(BorderColor.Default),\n !disabled &&\n !error &&\n borderColorClass(BorderColor.Hover, ElementState.Hover),\n \"focus:outline-none\",\n error\n ? borderColorClass(BorderColor.Error, ElementState.Focus)\n : borderColorClass(BorderColor.Focus, ElementState.Focus),\n \"disabled:opacity-50\",\n \"disabled:cursor-not-allowed\",\n borderColorClass(BorderColor.Disabled, ElementState.Disabled),\n radiusStyles(radius),\n sizeStyles[size],\n paddingLeftStyles[size],\n \"pr-8\"\n );\n\nexport interface DatepickerInputProps {\n value?: string;\n onClick?: () => void;\n disabled?: boolean;\n error?: boolean;\n size?: Size;\n radius?: Radius;\n hasValue?: boolean;\n}\n\n/**\n * An input component supporting dates and date-times.\n *\n * This component operates exclusively as a controlled component. See `value` and `onChange` for controlled behavior.\n *\n * @param value The text representation of the date.\n * @param onClick Callback triggered when the input is clicked.\n * @param disabled If `true`, disables the input.\n * @param error If `true`, renders the input in an error state.\n * @param size The size of the input; this controls the size of the text and the input's padding. See {@link Size}.\n * @param radius The border radius of the input. See {@link Radius}.\n * @param hasValue Unused\n *\n * @internal For use by {@link DatePicker}.\n */\nexport const DatepickerInput: FC<DatepickerInputProps> = ({\n value,\n onClick,\n disabled,\n error,\n size = Size.Md,\n radius = Radius.Sm,\n hasValue,\n}) => {\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleIconClick = useCallback(() => {\n if (disabled) return;\n if (onClick) {\n onClick();\n } else if (inputRef.current) {\n inputRef.current.focus();\n inputRef.current.click();\n }\n }, [disabled, onClick]);\n\n const inputClasses = datePickerInputStyle({\n disabled,\n error,\n radius,\n size,\n });\n\n return (\n <div className=\"relative flex items-center\">\n {/* Calendar icon on the left */}\n <DatepickerIconButton\n onClick={handleIconClick}\n disabled={disabled}\n hasValue={hasValue}\n size={size}\n position={IconPosition.Leading}\n iconName={IconName.DateRange}\n />\n <input\n ref={inputRef}\n value={value}\n onClick={onClick}\n disabled={disabled}\n className={inputClasses}\n />\n {/* Caret down icon on the right */}\n <DatepickerIconButton\n onClick={handleIconClick}\n disabled={disabled}\n hasValue={hasValue}\n size={size}\n position={IconPosition.Trailing}\n iconName={IconName.CaretDown}\n />\n </div>\n );\n};\n\nexport default DatepickerInput;\n","import { Field } from \"@headlessui/react\";\nimport { useMemo, type FC } from \"react\";\nimport type { DatePickerProps as ReactDatePickerProps } from \"react-datepicker\";\nimport ReactDatePicker from \"react-datepicker\";\nimport \"react-datepicker/dist/react-datepicker.css\";\nimport \"./Datepicker.css\";\n\nimport { Radius, Size } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nimport DatepickerInput from \"./DatepickerInput\";\n\nexport interface DatePickerProps extends Omit<\n ReactDatePickerProps,\n \"size\" | \"className\" | \"customInput\" | \"dateFormat\" | \"selected\"\n> {\n size?: Size;\n radius?: Radius;\n className?: string;\n error?: boolean;\n dateFormat?: string;\n selected?: Date | null;\n}\n\n/**\n * A datepicker component which allows selecting a date, time, or date-time using a calendar-like interface.\n *\n * @example\n * ```tsx\n * const MyComponent = ({disabled, dateOnly}: {disabled: boolean, dateOnly: boolean}) => {\n * const [value, setValue] = useState<Date | null>(null);\n *\n * const onChange = useCallback((date: Date | null) => {\n * if (date && !Number.isNaN(date.getTime())) {\n * console.log(\"valid date set\", date);\n * }\n *\n * setValue(date);\n * }, [setValue]);\n *\n * return (\n * <DatePicker\n * disabled={disabled}\n * selected={value}\n * showTimeSelect={!dateOnly}\n * onChange={onChange}\n * />\n * );\n * };\n * ```\n *\n * @param size Size of the datepicker input. See {@link Size}.\n * @param radius Border radius of the datepicker input. See {@link Radius}.\n * @param className `class` overrides to apply to the component.\n * @param disabled If `true`, disables the datepicker input and interaction.\n * @param selected The controlled value of the datepicker.\n * @param error If `true`, displays an error state in the datepicker input.\n * @param dateFormat The format to use for displaying the value.\n * If not specified, the following formats are used in order of precedence:\n * - `HH:mm` if `showTimeSelectOnly` is `true`\n * - `yyyy-MM-dd · HH:mm` if `showTimeSelect` is `true`\n * - `yyyy-MM-dd`\n * @param onChange Callback triggered when the user changes the date/time value.\n * @param minDate Optional minimum date; dates before this will be disabled.\n * @param maxDate Optional maximum date; dates after this will be disabled.\n * @param placeholderText Optional placeholder text when no value is present.\n * @param showTimeSelect If `true`, allows the user to select a time value in addition to date.\n * @param showTimeSelectOnly If `true`, allows the user to select *only* a time value (no date).\n * Note that when setting this value to `true`, `showTimeSelect` should also be set to `true`.\n * @param timeIntervals Optional time interval (in minutes) to apply to time selection.\n * Time selection will be limited to times with these increments.\n * If not provided, a default value of `30` is used.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const DatePicker: FC<DatePickerProps> = ({\n size = Size.Md,\n radius = Radius.Sm,\n className,\n disabled,\n selected,\n error,\n dateFormat,\n onChange,\n minDate,\n maxDate,\n placeholderText,\n showTimeSelect,\n showTimeSelectOnly,\n timeIntervals,\n ...props\n}) => {\n const hasValue = Boolean(selected);\n\n const finalDateFormat = useMemo(() => {\n if (dateFormat) return dateFormat; // user provided date format\n if (showTimeSelect && showTimeSelectOnly) return \"HH:mm\";\n if (showTimeSelect) return \"yyyy-MM-dd · HH:mm\";\n return \"yyyy-MM-dd\";\n }, [dateFormat, showTimeSelect, showTimeSelectOnly]);\n\n return (\n <Field className={cn(\"flex flex-col gap-1\", className)}>\n <ReactDatePicker\n selected={selected}\n onChange={!disabled ? onChange : undefined}\n disabled={disabled}\n dateFormat={finalDateFormat}\n minDate={minDate}\n maxDate={maxDate}\n placeholderText={placeholderText}\n showTimeSelect={showTimeSelect}\n showTimeSelectOnly={showTimeSelectOnly}\n timeIntervals={timeIntervals}\n popperClassName=\"!z-[9999]\"\n customInput={\n <DatepickerInput\n disabled={disabled}\n error={error}\n size={size}\n radius={radius}\n hasValue={hasValue}\n />\n }\n {...(props as any)} // eslint-disable-line\n />\n </Field>\n );\n};\n\nDatePicker.displayName = \"DatePicker\";\n","import type { FC, HTMLAttributes } from \"react\";\n\nimport { Text, TextProps } from \"@/components/Text\";\nimport {\n bgColorClass,\n Orientation,\n TextColor,\n textColorClass,\n TextVariant,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport interface DividerProps extends HTMLAttributes<HTMLDivElement> {\n orientation?: Orientation;\n label?: string;\n textProps?: TextProps;\n}\n\ninterface LineProps extends HTMLAttributes<HTMLDivElement> {\n orientation?: Orientation;\n}\n\n/**\n * A divider component used to separate content.\n * This is an alias for {@link Text} with {@link TextVariant.Xxs}.\n *\n * @param orientation A value used to determine whether to display the divider.\n * @param label The label to display on the divider.\n * @param props Additional HTML properties to apply to the component.\n *\n */\nexport const Divider: FC<DividerProps> = ({\n orientation,\n label,\n textProps,\n ...props\n}) => {\n const isColumn = orientation === Orientation.Column;\n\n return (\n <div\n className={cn(\"flex items-center\", isColumn ? \"flex-col h-full\" : \"\")}\n {...props}\n >\n <Line orientation={orientation} data-testid=\"divider-line-before\" />\n {label && (\n <>\n <Text\n color={TextColor.Primary}\n variant={TextVariant.Caption}\n className={cn(\n isColumn ? \"my-1\" : \"mx-2\",\n textColorClass(TextColor.Primary)\n )}\n data-testid=\"divider-label\"\n {...textProps}\n >\n {label}\n </Text>\n <Line orientation={orientation} data-testid=\"divider-line-after\" />\n </>\n )}\n </div>\n );\n};\n\nconst Line: FC<LineProps> = ({ orientation, ...props }) => {\n const isColumn = orientation === Orientation.Column;\n\n return (\n <div\n className={cn(\n bgColorClass(TextColor.Placeholder),\n isColumn ? \"w-px h-full\" : \"h-px flex-1\"\n )}\n {...props}\n />\n );\n};\n\nDivider.displayName = \"Divider\";\n","import { useRef } from \"react\";\nimport type { RefObject } from \"react\";\n\n/**\n * Hook that returns a ref whose `.current` always points to the most recent\n * value passed in.\n *\n * Useful for letting an otherwise-stable callback (e.g. one returned by\n * `useCallback` with no dependencies) read fresh values without re-subscribing\n * — typically a parent-supplied handler or a frequently-changing piece of\n * state. The returned ref's identity is stable across renders.\n *\n * The assignment happens during render. Do not read `ref.current` during the\n * same render in which the value is captured; only read it from event\n * handlers, effects, or other deferred work.\n *\n * @example\n * ```tsx\n * const onChangeRef = useLatest(onChange);\n * const handler = useCallback(() => {\n * onChangeRef.current?.(nextValue);\n * }, []);\n * ```\n */\nexport function useLatest<T>(value: T): RefObject<T> {\n const ref = useRef(value);\n ref.current = value;\n return ref;\n}\n","import React, { useCallback, useRef, useState } from \"react\";\n\nimport { useLatest } from \"./useLatest\";\n\n/**\n * Axis along which a drag delta is measured.\n *\n * - `\"horizontal\"` reports `clientX` deltas.\n * - `\"vertical\"` reports `clientY` deltas.\n */\nexport type DragAxis = \"horizontal\" | \"vertical\";\n\n/**\n * Options for {@link useDragDelta}.\n */\nexport interface UseDragDeltaOptions {\n /** Axis to measure the drag along. */\n axis: DragAxis;\n /** Invoked once when a drag begins (on pointer-down). */\n onDragStart?: () => void;\n /**\n * Invoked on every pointer-move during a drag with the signed pixel delta\n * from the drag start position. Positive values mean right (horizontal) or\n * down (vertical).\n */\n onDelta: (delta: number) => void;\n /** Invoked once when a drag ends (on pointer-up). */\n onDragEnd?: () => void;\n}\n\n/**\n * Return value of {@link useDragDelta}.\n */\nexport interface UseDragDeltaReturn {\n /** `true` while a drag is in progress (between pointer-down and pointer-up). */\n isDragging: boolean;\n /** Props to spread onto the drag handle element. */\n handleProps: {\n onPointerDown: (e: React.PointerEvent<HTMLElement>) => void;\n onPointerMove: (e: React.PointerEvent<HTMLElement>) => void;\n onPointerUp: () => void;\n };\n}\n\n/**\n * Hook that tracks a single-axis pointer drag and reports the running delta\n * from the drag start position.\n *\n * Uses pointer capture, so the drag continues correctly even if the pointer\n * leaves the handle element. The supplied callbacks may be inline; the hook\n * routes them through {@link useLatest} so the returned `handleProps` are\n * stable across renders.\n *\n * @example\n * ```tsx\n * const { isDragging, handleProps } = useDragDelta({\n * axis: \"horizontal\",\n * onDelta: (delta) => setX((x) => x + delta),\n * });\n * return <div {...handleProps} />;\n * ```\n */\nexport function useDragDelta({\n axis,\n onDragStart,\n onDelta,\n onDragEnd,\n}: UseDragDeltaOptions): UseDragDeltaReturn {\n const [isDragging, setIsDragging] = useState(false);\n const isDraggingRef = useRef(false);\n const startPosRef = useRef(0);\n\n // Latest-value refs so handlers stay stable across re-renders.\n const onDragStartRef = useLatest(onDragStart);\n const onDeltaRef = useLatest(onDelta);\n const onDragEndRef = useLatest(onDragEnd);\n\n const onPointerDown = useCallback(\n (e: React.PointerEvent<HTMLElement>) => {\n isDraggingRef.current = true;\n setIsDragging(true);\n startPosRef.current = axis === \"horizontal\" ? e.clientX : e.clientY;\n e.currentTarget.setPointerCapture(e.pointerId);\n onDragStartRef.current?.();\n },\n [axis, onDragStartRef]\n );\n\n const onPointerMove = useCallback(\n (e: React.PointerEvent<HTMLElement>) => {\n if (!isDraggingRef.current) return;\n const current = axis === \"horizontal\" ? e.clientX : e.clientY;\n onDeltaRef.current(current - startPosRef.current);\n },\n [axis, onDeltaRef]\n );\n\n const onPointerUp = useCallback(() => {\n isDraggingRef.current = false;\n setIsDragging(false);\n onDragEndRef.current?.();\n }, [onDragEndRef]);\n\n return {\n isDragging,\n handleProps: { onPointerDown, onPointerMove, onPointerUp },\n };\n}\n","import { useCallback, useRef, useState } from \"react\";\n\n/**\n * Return value of {@link useElementSize}.\n */\nexport interface UseElementSizeReturn {\n /** Callback ref to attach to the element you want to measure. */\n ref: (el: HTMLElement | null) => void;\n /** Current width of the observed element in pixels. `0` before the ref attaches. */\n width: number;\n /** Current height of the observed element in pixels. `0` before the ref attaches. */\n height: number;\n}\n\n/**\n * Hook that tracks the pixel dimensions of a DOM element via\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver | ResizeObserver}.\n *\n * Attach the returned `ref` callback to any element; `width` and `height`\n * update on mount and on every subsequent resize. The observer is\n * automatically disconnected when the element is unmounted or replaced.\n *\n * @example\n * ```tsx\n * function Panel() {\n * const { ref, width, height } = useElementSize();\n * return <div ref={ref}>Size: {width} × {height}</div>;\n * }\n * ```\n */\nexport function useElementSize(): UseElementSizeReturn {\n const [size, setSize] = useState({ width: 0, height: 0 });\n const roRef = useRef<ResizeObserver | null>(null);\n\n const ref = useCallback((el: HTMLElement | null) => {\n roRef.current?.disconnect();\n roRef.current = null;\n if (!el) return;\n const measure = (): void =>\n setSize({ width: el.offsetWidth, height: el.offsetHeight });\n measure();\n roRef.current = new ResizeObserver(measure);\n roRef.current.observe(el);\n }, []);\n\n return { ref, width: size.width, height: size.height };\n}\n","import React, { useCallback, useLayoutEffect, useRef, useState } from \"react\";\n\nimport {\n UseDisclosureOptions,\n UseDisclosureReturn,\n useDisclosure,\n} from \"./useDisclosure\";\nimport { DragAxis, useDragDelta } from \"./useDragDelta\";\nimport { useElementSize } from \"./useElementSize\";\nimport { useLatest } from \"./useLatest\";\n\nexport type { DragAxis };\n\nexport interface UseResizableDrawerOptions extends UseDisclosureOptions {\n /** Axis the drawer resizes along. `\"horizontal\"` for left/right drawers, `\"vertical\"` for top/bottom. */\n axis: DragAxis;\n /**\n * Maximum content-area size in pixels. The header and handle are excluded —\n * `maxSize` caps only the scrollable body region.\n */\n maxSize: number;\n /** Flip the delta sign — use for right-side and bottom-side handles. */\n invert?: boolean;\n /** Invoked with the new content-area size on every drag-induced resize. */\n onSizeChange?: (size: number) => void;\n}\n\nexport interface UseResizableDrawerReturn extends UseDisclosureReturn {\n /** Current content-area size in pixels (0 when closed or not yet measured). */\n size: number;\n /** `true` while the user is actively dragging the resize handle. */\n isDragging: boolean;\n /**\n * `true` only when the current size change should be animated — i.e. an\n * open/close toggle. Content-driven resizes and drags are instant (`false`),\n * so the size snaps and doesn't fight the header's un-animated layout change.\n */\n animating: boolean;\n /** Props to spread onto the drag handle element. */\n dragHandleProps: {\n onPointerDown: (e: React.PointerEvent<HTMLElement>) => void;\n onPointerMove: (e: React.PointerEvent<HTMLElement>) => void;\n onPointerUp: () => void;\n };\n /**\n * Attach the size-bearing wrapper's `onTransitionEnd` to this so `animating`\n * clears when the open/close transition completes.\n */\n onTransitionEnd: () => void;\n /**\n * Attach to the content element. The hook observes it via ResizeObserver and\n * keeps the open size equal to `min(contentHeight, maxSize)` automatically.\n */\n contentRef: (el: HTMLElement | null) => void;\n}\n\nexport function useResizableDrawer({\n axis,\n maxSize,\n invert = false,\n onSizeChange,\n ...disclosureOptions\n}: UseResizableDrawerOptions): UseResizableDrawerReturn {\n const { open, setOpen } = useDisclosure(disclosureOptions);\n // Measured natural content height (synced every commit, below).\n const [contentHeight, setContentHeight] = useState(0);\n // Manual drag override in pixels; `null` means \"auto-size to content\".\n const [userSize, setUserSize] = useState<number | null>(null);\n // Only open/close toggles animate. Drags and content resizes are instant.\n const [animating, setAnimating] = useState(false);\n\n // useElementSize's ResizeObserver re-renders on *external* content changes\n // (image/font load, reflow). We capture the element to measure it\n // synchronously on every commit (below). Its reported height is unused.\n const { ref: observeRef } = useElementSize();\n const contentElRef = useRef<HTMLElement | null>(null);\n const contentRef = useCallback(\n (el: HTMLElement | null) => {\n contentElRef.current = el;\n observeRef(el);\n },\n [observeRef]\n );\n\n // Derived sizes:\n // - autoSize: the natural open size — content height, capped at maxSize.\n // - openSize: a manual drag can only shrink *below* autoSize; otherwise follow content.\n // - size: collapses to 0 when closed.\n const autoSize = Math.min(contentHeight, maxSize);\n const openSize = userSize != null ? Math.min(userSize, autoSize) : autoSize;\n const size = open ? openSize : 0;\n\n const openRef = useLatest(open);\n const sizeRef = useLatest(size);\n const invertRef = useLatest(invert);\n const maxSizeRef = useLatest(maxSize);\n const onSizeChangeRef = useLatest(onSizeChange);\n\n const dragStartSizeRef = useRef(0);\n const isDraggingRef = useRef(false);\n\n // Measure content synchronously on every commit (skipped mid-drag, when the\n // content can't change). Running in the same commit that changed the\n // content/header means `size` updates before paint — no one-frame flicker.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useLayoutEffect(() => {\n if (isDraggingRef.current) return;\n const h = contentElRef.current?.offsetHeight ?? 0;\n setContentHeight((prev) => (prev === h ? prev : h));\n });\n\n const onDragStart = useCallback(() => {\n isDraggingRef.current = true;\n setAnimating(false);\n dragStartSizeRef.current = openRef.current ? sizeRef.current : 0;\n }, [openRef, sizeRef]);\n\n const onDelta = useCallback(\n (delta: number) => {\n const adjusted = invertRef.current ? -delta : delta;\n const raw = dragStartSizeRef.current + adjusted;\n if (raw <= 0) {\n // Dragged shut: close and drop the manual override so reopening auto-sizes.\n if (openRef.current) {\n setOpen(false);\n setUserSize(null);\n }\n return;\n }\n const auto = Math.min(\n contentElRef.current?.offsetHeight ?? 0,\n maxSizeRef.current\n );\n const clamped = Math.min(raw, auto);\n // Dragging all the way up to the natural size re-enters auto mode.\n setUserSize(clamped >= auto ? null : clamped);\n if (!openRef.current) setOpen(true);\n onSizeChangeRef.current?.(clamped);\n },\n [invertRef, maxSizeRef, onSizeChangeRef, openRef, setOpen]\n );\n\n const onDragEnd = useCallback(() => {\n isDraggingRef.current = false;\n }, []);\n\n const { isDragging, handleProps } = useDragDelta({\n axis,\n onDragStart,\n onDelta,\n onDragEnd,\n });\n\n const toggle = useCallback(() => {\n setAnimating(true);\n // Both directions clear the manual override: reopening always auto-sizes\n // (no memory of the last dragged size) and closing renders size 0.\n setUserSize(null);\n setOpen(!openRef.current);\n }, [openRef, setOpen]);\n\n // Clear `animating` once the open/close transition finishes.\n const onTransitionEnd = useCallback(() => {\n if (!isDraggingRef.current) setAnimating(false);\n }, []);\n\n return {\n open,\n toggle,\n setOpen,\n size,\n isDragging,\n animating,\n onTransitionEnd,\n dragHandleProps: handleProps,\n contentRef,\n };\n}\n","import clsx from \"clsx\";\nimport React from \"react\";\n\nimport type { UseDisclosureOptions } from \"@/util/useDisclosure\";\nimport { useResizableDrawer } from \"@/util/useResizableDrawer\";\n\nimport styles from \"./Drawer.module.css\";\n\nexport type DrawerSide = \"left\" | \"right\" | \"top\" | \"bottom\";\n\nexport interface DrawerHeaderState {\n open: boolean;\n toggle: () => void;\n}\n\nfunction sideConfig(side: DrawerSide): {\n axis: \"horizontal\" | \"vertical\";\n invert: boolean;\n} {\n return {\n axis: side === \"left\" || side === \"right\" ? \"horizontal\" : \"vertical\",\n invert: side === \"right\" || side === \"bottom\",\n };\n}\n\nexport interface DrawerProps extends UseDisclosureOptions {\n side?: DrawerSide;\n /**\n * Maximum content-area size in pixels. The header and resize handle are\n * excluded — `maxSize` caps only the scrollable body region.\n */\n maxSize: number;\n mode?: \"push\" | \"float\";\n header?: (state: DrawerHeaderState) => React.ReactNode;\n onSizeChange?: (size: number) => void;\n children?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst Drawer: React.FC<DrawerProps> = ({\n side = \"bottom\",\n maxSize,\n mode = \"push\",\n defaultOpen = true,\n open: controlledOpen,\n onOpenChange,\n onSizeChange,\n header,\n children,\n className,\n style,\n}) => {\n const { axis, invert } = sideConfig(side);\n const isVertical = axis === \"vertical\";\n\n const {\n open,\n toggle,\n size,\n isDragging,\n animating,\n onTransitionEnd,\n dragHandleProps,\n contentRef,\n } = useResizableDrawer({\n axis,\n invert,\n defaultOpen,\n open: controlledOpen,\n onOpenChange,\n maxSize,\n onSizeChange,\n });\n\n const contentWrapperSizeStyle = isVertical\n ? { height: size }\n : { width: size };\n\n return (\n <div\n className={clsx(styles.root, styles[mode], styles[side], className)}\n style={style}\n >\n <div\n className={clsx(styles.handle, { [styles.handleDisabled]: !open })}\n {...dragHandleProps}\n />\n {header && (\n <div className={styles.header}>{header({ open, toggle })}</div>\n )}\n <div\n className={styles.contentWrapper}\n onTransitionEnd={onTransitionEnd}\n style={{\n ...contentWrapperSizeStyle,\n // Animate the open/close toggle only. Drags track the pointer 1:1 and\n // content-driven resizes snap, both via `animating === false`.\n transition: animating && !isDragging ? undefined : \"none\",\n }}\n >\n <div ref={contentRef} className={styles.content}>\n {children}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Drawer;\n","import { Menu, MenuButton, MenuItems } from \"@headlessui/react\";\nimport {\n isValidElement,\n type FC,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\n\nimport { menuPanelStyles } from \"@/components/Menu\";\nimport { ZIndex, zIndexStyles } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\n/**\n * Position of the dropdown menu panel relative to its trigger.\n * Values follow the `<edge> <alignment>` convention used by HeadlessUI's\n * floating UI — e.g. `BottomStart` opens the menu below the trigger,\n * left-aligned with it.\n */\nexport enum DropdownAnchor {\n /** Below the trigger, horizontally centered. */\n Bottom = \"bottom\",\n /** Below the trigger, aligned with its leading (start) edge. */\n BottomStart = \"bottom start\",\n /** Below the trigger, aligned with its trailing (end) edge. */\n BottomEnd = \"bottom end\",\n /** Above the trigger, horizontally centered. */\n Top = \"top\",\n /** Above the trigger, aligned with its leading (start) edge. */\n TopStart = \"top start\",\n /** Above the trigger, aligned with its trailing (end) edge. */\n TopEnd = \"top end\",\n}\n\n/**\n * Props for {@link Dropdown}.\n */\nexport interface DropdownProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * The element that opens the dropdown when clicked.\n * Rendered inside a `MenuButton` wrapper — any focusable element works.\n */\n trigger: ReactNode;\n /** Menu content. Use the Menu* primitive components as children. */\n children: ReactNode;\n /** Position of the menu panel relative to the trigger. */\n anchor?: DropdownAnchor;\n /**\n * Renders the menu panel in a portal so it escapes overflow-hidden\n * ancestors and stacks above complex layouts (modals, mosaic grids,\n * scrollable regions). Defaults to `true` — opt out by passing `false`\n * when the menu must stay inside its trigger's DOM subtree (e.g. tightly\n * scoped to a virtualized list).\n * @default true\n */\n portal?: boolean;\n /** Explicit z-index override for the menu panel. */\n zIndex?: ZIndex;\n /**\n * If `true`, the trigger cannot open the menu. Also inferred automatically\n * when the `trigger` element has `disabled` set on its props.\n */\n disabled?: boolean;\n}\n\n/**\n * A click-triggered menu component. Composes with the Menu primitives:\n * {@link MenuTextItem}, {@link MenuIconTextItem}, {@link MenuCheckItem},\n * {@link MenuSectionTitle}, and {@link MenuSeparator}.\n *\n * Built on HeadlessUI's `Menu`, providing full keyboard navigation\n * (arrow keys, Enter, Escape) and ARIA `role=\"menu\"` semantics automatically.\n *\n * @example\n * ```tsx\n * <Dropdown trigger={<DropdownTrigger>Actions</DropdownTrigger>}>\n * <MenuSectionTitle>Actions</MenuSectionTitle>\n * <MenuIconTextItem\n * icon={IconName.ImageSearch}\n * text=\"Sort by similarity\"\n * subtext=\"Find visually similar\"\n * onClick={() => {}}\n * />\n * <MenuIconTextItem\n * icon={IconName.Embeddings}\n * text=\"Run embeddings\"\n * subtext=\"Compute vector embeddings\"\n * onClick={() => {}}\n * />\n * <MenuSeparator />\n * <MenuTextItem destructive onClick={() => {}}>\n * Delete\n * </MenuTextItem>\n * </Dropdown>\n * ```\n *\n * @param trigger The trigger element that opens the menu.\n * @param children Menu content — use the Menu* primitive components.\n * @param anchor Position of the menu panel relative to the trigger. See {@link DropdownAnchor}.\n * @param portal If `true`, renders the panel in a portal with a high z-index.\n * @param zIndex Explicit z-index for the panel.\n * @param disabled If `true`, the menu cannot be opened.\n * @param className `class` overrides for the root wrapper.\n * @param props Additional HTML properties for the root wrapper.\n */\nexport const Dropdown: FC<DropdownProps> = ({\n trigger,\n children,\n anchor = DropdownAnchor.BottomStart,\n portal = true,\n zIndex,\n disabled,\n className,\n ...props\n}) => {\n const panelZIndex = portal\n ? zIndexStyles(ZIndex.AboveModal)\n : zIndex\n ? zIndexStyles(zIndex)\n : zIndexStyles(ZIndex.High);\n\n const triggerDisabled = isValidElement<{ disabled?: boolean }>(trigger)\n ? !!trigger.props.disabled\n : false;\n const isDisabled = disabled || triggerDisabled;\n\n return (\n <div className={cn(\"relative inline-block\", className)} {...props}>\n <Menu>\n <MenuButton\n as=\"div\"\n disabled={isDisabled}\n className={isDisabled ? \"cursor-not-allowed\" : \"cursor-pointer\"}\n >\n {trigger}\n </MenuButton>\n\n <MenuItems\n anchor={{ to: anchor, gap: 4 }}\n portal={portal}\n className={cn(menuPanelStyles(), panelZIndex)}\n >\n {children}\n </MenuItems>\n </Menu>\n </div>\n );\n};\n\nDropdown.displayName = \"Dropdown\";\n","import type { FC } from \"react\";\n\nimport { Button, type ButtonProps } from \"@/components/Button\";\nimport { IconName, Size, Variant } from \"@/types\";\n\n/**\n * Props for {@link DropdownTrigger}. Accepts {@link ButtonProps} except\n * `variant` and `trailingIcon`, which are fixed by the trigger preset\n * (secondary variant + caret-down icon).\n */\nexport type DropdownTriggerProps = Omit<\n ButtonProps,\n \"variant\" | \"trailingIcon\"\n>;\n\n/**\n * The standard trigger button for a {@link Dropdown}.\n * Always renders as a secondary button with a trailing caret-down icon\n * so users know the element opens a menu.\n *\n * @example\n * ```tsx\n * <Dropdown trigger={<DropdownTrigger>Actions</DropdownTrigger>}>\n * <DropdownTextItem onClick={() => {}}>Edit</DropdownTextItem>\n * </Dropdown>\n * ```\n *\n * @param children Button label.\n * @param size Button size. Defaults to {@link Size.Sm}.\n * @param props Additional {@link ButtonProps} (excluding `variant` and `trailingIcon`).\n */\nexport const DropdownTrigger: FC<DropdownTriggerProps> = ({\n children,\n size = Size.Sm,\n ...props\n}) => (\n <Button\n variant={Variant.Secondary}\n size={size}\n trailingIcon={IconName.CaretDown}\n {...props}\n >\n {children}\n </Button>\n);\n\nDropdownTrigger.displayName = \"DropdownTrigger\";\n","import type { FC } from \"react\";\n\nimport { Icon } from \"@/components/Icons\";\nimport { Stack, StackProps } from \"@/components/Stack\";\nimport { Text } from \"@/components/Text\";\nimport radiusStyles from \"@/styles/radius\";\nimport {\n BackgroundColor,\n bgColorClass,\n Align,\n BrandColor,\n IconName,\n Orientation,\n Radius,\n Size,\n TextColor,\n TextVariant,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport interface EmptyStateProps extends StackProps {\n icon: IconName;\n title: string;\n description?: string;\n}\n\n/**\n * A basic empty state to display to the user.\n *\n * @param icon The icon to display in the empty state.\n * @param title The title to display in the empty state.\n * @param description An optional description to display in the empty state.\n * @param props Additional HTML properties to apply to the component.\n *\n *\n */\nexport const EmptyState: FC<EmptyStateProps> = ({\n icon,\n title,\n description,\n className,\n ...props\n}) => {\n return (\n <Stack\n orientation={Orientation.Column}\n align={Align.Center}\n className={cn(\n \"text-center p-10\",\n radiusStyles(Radius.Md),\n bgColorClass(BackgroundColor.Card1),\n className\n )}\n {...props}\n >\n {icon && (\n <span\n className={cn(\n \"p-3\",\n radiusStyles(Radius.Full),\n bgColorClass(BackgroundColor.CardElevated)\n )}\n >\n <Icon name={icon} size={Size.Lg} color={BrandColor.Accent} />\n </span>\n )}\n <Text variant={TextVariant.Xl}>{title}</Text>\n {description && <Text color={TextColor.Muted}>{description}</Text>}\n </Stack>\n );\n};\nEmptyState.displayName = \"EmptyState\";\n","import { Description, Field, Label } from \"@headlessui/react\";\nimport type { FC, HTMLAttributes, ReactNode } from \"react\";\n\nimport { Stack } from \"@/components/Stack\";\nimport { Text } from \"@/components/Text\";\nimport { Orientation, Spacing, TextColor } from \"@/types\";\n\nexport interface FormFieldProps extends HTMLAttributes<HTMLDivElement> {\n control: ReactNode;\n label?: ReactNode;\n description?: ReactNode;\n disabled?: boolean;\n error?: ReactNode;\n spacing?: Spacing;\n}\n\n/**\n * A component which represents a composite form field, consisting of a label, form control, description,\n * and error message.\n *\n * This component applies standard form best-practices to the contained elements, such as ensuring the label and form\n * control are properly linked.\n *\n * See also {@link FormFieldGroup}.\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const [value, setValue] = useState<string>(\"\");\n * const [error, setError] = useState<string | null>(null);\n *\n * const onChange = useCallback((newValue: string) => {\n * setValue(newValue);\n * if (newValue.length < 5) {\n * setError(\"Name must be at least 5 characters\");\n * } else {\n * setError(null);\n * }\n * },\n * [setError, setValue]\n * );\n *\n * return (\n * <FormField\n * control={<Input value={value} onChange={onChange} />}\n * label={\"Dataset name\"}\n * description={\"Name of the dataset to create\"}\n * error={error}\n * />\n * );\n * };\n * ```\n *\n * @param control The form control to use in this field. This can be any component.\n * @param label Optional label to display for the form field.\n * @param description Optional description to display for the form field.\n * @param disabled If `true`, disables the form field.\n * @param error Optional error message to display for the form field.\n * @param spacing Spacing between elements in the field. Defaults to {@link Spacing.Sm}.\n * @param className `class` overrides to apply to the field container.\n * @param props Additional HTML properties to apply to the field container.\n */\nexport const FormField: FC<FormFieldProps> = ({\n control,\n label,\n description,\n disabled,\n error,\n spacing = Spacing.Sm,\n className,\n ...props\n}) => {\n return (\n <Field disabled={disabled} className={className}>\n <Stack orientation={Orientation.Column} spacing={spacing} {...props}>\n {label && (\n <Stack orientation={Orientation.Row} spacing={Spacing.Sm}>\n <Label>\n <Text color={TextColor.Primary}>{label}</Text>\n </Label>\n\n {description && (\n <Description>\n <Text color={TextColor.Secondary}>{description}</Text>\n </Description>\n )}\n </Stack>\n )}\n\n {control}\n\n {error && <Text color={TextColor.Destructive}>{error}</Text>}\n </Stack>\n </Field>\n );\n};\n\nFormField.displayName = \"FormField\";\n","import { Fieldset } from \"@headlessui/react\";\nimport type { FC, HTMLAttributes } from \"react\";\n\nimport { Stack } from \"@/components/Stack\";\nimport Orientation from \"@/types/orientation.ts\";\nimport Spacing from \"@/types/spacing\";\n\nexport interface FormFieldGroupProps extends HTMLAttributes<HTMLFieldSetElement> {\n disabled?: boolean;\n orientation?: Orientation;\n spacing?: Spacing;\n}\n\n/**\n * A logical grouping of form fields.\n *\n * This component wraps its children in a `fieldset` tag.\n *\n * See also {@link FormField}.\n *\n * @example\n * ```tsx\n * <FormFieldGroup orientation={Orientation.Vertical} spacing={Spacing.Lg}>\n * <FormField\n * control={\n * <Input\n * // input configuration\n * />\n * }\n * label=\"First name\"\n * />\n *\n * <FormField\n * control={\n * <Input\n * // input configuration\n * />\n * }\n * label=\"Last name\"\n * />\n * </FormFieldGroup>\n * ```\n *\n * @param orientation The orientation of the form group;\n * controls whether children are stacked horizontally or vertically.\n * See {@link Orientation}.\n * @param spacing Spacing to apply between form fields. See {@link Spacing}.\n * @param disabled If `true`, disables the form group.\n * @param children Form controls wrapped by this component.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const FormFieldGroup: FC<FormFieldGroupProps> = ({\n orientation = Orientation.Column,\n spacing = Spacing.Lg,\n disabled,\n children,\n ...props\n}) => (\n <Fieldset disabled={disabled} {...props}>\n <Stack orientation={orientation} spacing={spacing}>\n {children}\n </Stack>\n </Fieldset>\n);\n\nFormFieldGroup.displayName = \"FormFieldGroup\";\n","import clsx from \"clsx\";\nimport type { FC, HTMLAttributes } from \"react\";\n\nimport { textStyles } from \"@/styles/text\";\nimport { TextColor, textColorClass, TextVariant } from \"@/types\";\nimport HeadingLevel from \"@/types/heading\";\n\nexport interface HeadingProps extends HTMLAttributes<HTMLHeadingElement> {\n level?: HeadingLevel;\n}\n\nconst elementMap: Record<HeadingLevel, FC<HeadingProps>> = {\n h1: ({ children, ...props }: HeadingProps) => <h1 {...props}>{children}</h1>,\n h2: ({ children, ...props }: HeadingProps) => <h2 {...props}>{children}</h2>,\n h3: ({ children, ...props }: HeadingProps) => <h3 {...props}>{children}</h3>,\n h4: ({ children, ...props }: HeadingProps) => <h4 {...props}>{children}</h4>,\n};\n\nconst variantStyles: Record<HeadingLevel, string> = {\n h1: clsx(textStyles(TextVariant.Xxl), \"text-bold\"),\n h2: clsx(textStyles(TextVariant.Xl), \"text-semibold\"),\n h3: clsx(textStyles(TextVariant.Lg), \"text-semibold\"),\n h4: clsx(textStyles(TextVariant.Md)),\n};\n\n/**\n * A basic heading component.\n *\n * This component leverages standard heading tags `h1`, `h2`, etc.\n *\n * @example\n * ```tsx\n * <Heading level={HeadingLevel.H2}>\n * Heading content here\n * </Heading>\n * ```\n *\n * @param level Heading level to use. See {@link HeadingLevel}.\n * @param className `class` overrides to apply to the component.\n * @param children The content of the heading.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const Heading: FC<HeadingProps> = ({\n level = HeadingLevel.H1,\n className,\n children,\n ...props\n}: HeadingProps) => {\n const Element = elementMap[level];\n\n return (\n <Element\n className={clsx(\n textColorClass(TextColor.Primary),\n variantStyles[level],\n className\n )}\n {...props}\n >\n {children}\n </Element>\n );\n};\n\nHeading.displayName = \"Heading\";\n","import {\n CSSProperties,\n HTMLAttributes,\n ReactElement,\n ReactNode,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\n\nimport { Spinner } from \"@/components/Spinner\";\nimport { Descriptor, Orientation, Size } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport interface ImageListProps<\n T = unknown,\n> extends HTMLAttributes<HTMLDivElement> {\n /** Items to display in the grid. */\n items: Descriptor<T>[];\n /** Renders the content of each grid cell. */\n renderItem: (data: T, id: string) => ReactNode;\n /**\n * Number of columns for vertical orientation, or number of rows for\n * horizontal orientation. Defaults to `3`.\n */\n cols?: number;\n /** Gap between cells in pixels. Defaults to `8`. */\n gap?: number;\n /**\n * Controls the scroll axis.\n * - `Orientation.Column` (default) — items flow into columns; the list\n * scrolls **vertically**.\n * - `Orientation.Row` — items flow into rows; the list scrolls\n * **horizontally**.\n */\n orientation?: Orientation;\n /**\n * Fixed height of each row in pixels for vertical orientation.\n * Defaults to `164`.\n */\n rowHeight?: number;\n /**\n * Fixed width of each auto-generated column in pixels for horizontal\n * orientation. Defaults to `164`.\n */\n colWidth?: number;\n /**\n * Called when the sentinel element near the end of the list becomes\n * visible. Use this to fetch and append more items.\n */\n onLoadMore?: () => void;\n /** Set to `true` while loading additional items. */\n hasMore?: boolean;\n /** Displays a {@link Spinner} in the sentinel area while `true`. */\n loading?: boolean;\n}\n\n/**\n * A scrollable grid that lays items out in a uniform, non-masonry grid.\n * Supports vertical and horizontal scroll directions and infinite scroll\n * via `onLoadMore`.\n *\n * @example\n * ```tsx\n * <ImageList\n * items={photos.map((p) => ({ id: p.id, data: p }))}\n * renderItem={(photo) => (\n * <img src={photo.src} alt={photo.alt} className=\"size-full object-cover\" />\n * )}\n * cols={3}\n * rowHeight={200}\n * onLoadMore={fetchMore}\n * hasMore={hasMore}\n * loading={loading}\n * />\n * ```\n */\nexport function ImageList<T = unknown>({\n items,\n renderItem,\n cols = 3,\n gap = 8,\n orientation = Orientation.Column,\n rowHeight = 164,\n colWidth = 164,\n onLoadMore,\n hasMore = false,\n loading = false,\n className,\n style,\n ...rest\n}: ImageListProps<T>): ReactElement {\n const sentinelRef = useRef<HTMLDivElement>(null);\n\n const handleIntersection = useCallback(\n (entries: IntersectionObserverEntry[]) => {\n const [entry] = entries;\n if (entry.isIntersecting && hasMore && !loading && onLoadMore) {\n onLoadMore();\n }\n },\n [hasMore, loading, onLoadMore]\n );\n\n useEffect(() => {\n const el = sentinelRef.current;\n if (!el || !onLoadMore) return;\n\n const observer = new IntersectionObserver(handleIntersection, {\n threshold: 0,\n rootMargin: \"200px\",\n });\n\n observer.observe(el);\n return () => observer.disconnect();\n }, [handleIntersection, onLoadMore]);\n\n const isVertical = orientation === Orientation.Column;\n\n const gridStyle: CSSProperties = isVertical\n ? {\n gridTemplateColumns: `repeat(${cols}, 1fr)`,\n gridAutoRows: `${rowHeight}px`,\n gap: `${gap}px`,\n }\n : {\n gridTemplateRows: `repeat(${cols}, 1fr)`,\n gridAutoFlow: \"column\",\n gridAutoColumns: `${colWidth}px`,\n gap: `${gap}px`,\n };\n\n const sentinelStyle: CSSProperties = isVertical\n ? { gridColumn: \"1 / -1\" }\n : { gridRow: \"1 / -1\" };\n\n return (\n <div\n className={cn(\n \"grid\",\n isVertical\n ? \"overflow-y-auto overflow-x-hidden\"\n : \"overflow-x-auto overflow-y-hidden\",\n className\n )}\n style={{ ...gridStyle, ...style }}\n {...rest}\n >\n {items.map(({ id, data }) => (\n <div key={id} className=\"overflow-hidden\">\n {renderItem(data, id)}\n </div>\n ))}\n\n {onLoadMore && (\n <div\n ref={sentinelRef}\n style={sentinelStyle}\n className=\"flex items-center justify-center py-2\"\n >\n {loading && <Spinner size={Size.Lg} />}\n </div>\n )}\n </div>\n );\n}\n\nImageList.displayName = \"ImageList\";\n","import { type FC } from \"react\";\n\nimport { IconWrapper } from \"@/components/Icons\";\nimport { IconName, Size, TextColor, textColorClass } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nimport { iconPaddingStyles } from \"./styles\";\n\nexport interface InputIconProps {\n icon: FC | IconName;\n size: Size;\n hasText?: boolean;\n}\n\n/**\n * A wrapper component for properly formatting an icon to display within the {@link Input} component.\n *\n * @param icon Icon reference ({@link FC}) or an {@link IconName} specifying the icon to use.\n * @param size The size of the icon. See {@link Size}.\n * @param hasText If `true`, de-emphasizes the icon in favor of the input text.\n *\n * @internal For use by {@link Input}.\n */\nexport const InputIcon: FC<InputIconProps> = ({ icon, size, hasText }) => {\n return (\n <span\n className={cn(\n \"absolute left-0 flex items-center justify-center\",\n hasText\n ? textColorClass(TextColor.Primary)\n : textColorClass(TextColor.Secondary),\n iconPaddingStyles[size]\n )}\n >\n <IconWrapper size={size} content={icon} />\n </span>\n );\n};\n\nInputIcon.displayName = \"InputIcon\";\n","import { Field, Input as HeadlessInput } from \"@headlessui/react\";\nimport { type FC, InputHTMLAttributes } from \"react\";\n\nimport { IconProps } from \"@/components/Icons/types\";\nimport radiusStyles from \"@/styles/radius\";\nimport {\n BackgroundColor,\n bgColorClass,\n BorderColor,\n borderColorClass,\n ElementState,\n IconName,\n Radius,\n Size,\n TextColor,\n textColorClass,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nimport { InputIcon } from \"./InputIcon\";\nimport { paddingLeftStyles, sizeStyles } from \"./styles\";\n\ntype ModifiedInputProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"size\" | \"className\"\n>;\n\nexport enum InputType {\n Text = \"text\",\n Email = \"email\",\n Password = \"password\",\n Number = \"number\",\n Tel = \"tel\",\n Url = \"url\",\n Search = \"search\",\n}\n\nexport interface InputProps extends ModifiedInputProps {\n size?: Size;\n radius?: Radius;\n className?: string;\n type?: InputType;\n error?: boolean;\n icon?: FC<IconProps> | IconName;\n}\n\n/**\n * A utility function which returns the classes required for styling an input component.\n *\n * @param disabled If `true`, applies styling for a disabled input.\n * @param error If `true`, applies styling for the input error state.\n * @param icon If `true`, prefixes input content with padding to allow space for an icon.\n * @param radius Border radius of the input. See {@link Radius}.\n * @param size Size of the input; this controls the text size and padding. See {@link Size}.\n *\n * @internal For consistent application of input styling of native `input` elements.\n */\nexport const inputStyle = ({\n disabled,\n error,\n icon,\n radius = Radius.Sm,\n size = Size.Md,\n}: {\n disabled?: boolean;\n error?: boolean;\n icon?: boolean;\n radius?: Radius;\n size?: Size;\n}): string =>\n cn(\n \"w-full\",\n bgColorClass(BackgroundColor.Transparent),\n textColorClass(TextColor.Primary),\n \"placeholder:text-content-text-tertiary\",\n \"transition-colors\",\n \"border\",\n error\n ? borderColorClass(BorderColor.Error)\n : borderColorClass(BorderColor.Default),\n !disabled &&\n !error &&\n borderColorClass(BorderColor.Hover, ElementState.Hover),\n \"focus:outline-none\",\n error\n ? borderColorClass(BorderColor.Error, ElementState.Focus)\n : borderColorClass(BorderColor.Focus, ElementState.Focus),\n \"disabled:opacity-50\",\n \"disabled:cursor-not-allowed\",\n borderColorClass(BorderColor.Disabled, ElementState.Disabled),\n radiusStyles(radius),\n sizeStyles[size],\n icon ? paddingLeftStyles[size] : \"pl-3\"\n );\n\n/**\n * A basic input component.\n *\n * This component operates exclusively as a controlled component. See `value` and `onChange` for controlled behavior.\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const [value, setValue] = useState<string>(\"\");\n * const [error, setError] = useState<string | null>(null);\n *\n * const onChange = useCallback((newValue: string) => {\n * setValue(newValue);\n * if (newValue.length < 5) {\n * setError(\"Value must be at least 5 characters\");\n * } else {\n * setError(null);\n * }\n * },\n * [setError, setValue]\n * );\n *\n * return (\n * <Input value={value} onChange={onChange} error={!!error} />\n * );\n * };\n * ```\n *\n * @param size The size of the input. See {@link Size}.\n * @param radius The border radius of the input. See {@link Radius}.\n * @param type The type of the input. This should adhere to the standard HTML `input` types.\n * @param className `class` overrides to apply to the component.\n * @param disabled If `true`, disables the input.\n * @param value The controlled value of the input.\n * @param onChange Callback triggered when the input value changes.\n * @param error If `true`, formats the input to appear in an error state.\n * @param icon Optional reference ({@link FC}) to an icon or an {@link IconName} to prefix the input's value. See {@link Icon}.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const Input: FC<InputProps> = ({\n size = Size.Md,\n radius = Radius.Sm,\n type = InputType.Text,\n className,\n disabled,\n value,\n onChange,\n error,\n icon,\n ...props\n}) => {\n const inputClasses = cn(\n inputStyle({\n disabled,\n error,\n icon: !!icon,\n radius,\n size,\n }),\n className\n );\n\n // we track and change styles if the input has a value\n const hasText = Boolean(value && String(value).trim().length > 0);\n\n return (\n <Field className=\"flex flex-col gap-1\">\n <div className={cn(\"relative\", icon && \"flex items-center\")}>\n {icon && <InputIcon icon={icon} size={size} hasText={hasText} />}\n <HeadlessInput\n className={inputClasses}\n disabled={disabled}\n type={type}\n value={value}\n onChange={onChange}\n {...props}\n />\n </div>\n </Field>\n );\n};\n\nInput.displayName = \"Input\";\n","import type { SyntheticListenerMap } from \"@dnd-kit/core/dist/hooks/utilities\";\nimport type { FC, HTMLAttributes, ReactNode } from \"react\";\n\nimport { Checkbox } from \"@/components/Checkbox\";\nimport { DragHandleIcon } from \"@/components/Icons/DragHandle\";\nimport { Text } from \"@/components/Text\";\nimport radiusStyles from \"@/styles/radius\";\nimport {\n BackgroundColor,\n bgColorClass,\n Radius,\n TextColor,\n textColorClass,\n TextVariant,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport interface ListItemProps extends HTMLAttributes<HTMLDivElement> {\n canSelect?: boolean;\n selected?: boolean;\n onSelected?: (selected: boolean) => void;\n canDrag?: boolean;\n dragHandleListeners?: SyntheticListenerMap;\n primaryContent?: ReactNode;\n secondaryContent?: ReactNode;\n actions?: ReactNode;\n additionalContent?: ReactNode;\n}\n\n/**\n * An item to be displayed in a list.\n *\n * @param canSelect If `true`, the component will include a {@link Checkbox} to enable selection.\n * @param selected Controls the selection state of the list item. If `canSelect` is not truthy, this has no effect.\n * @param onSelected Callback triggered when this item is selected.\n * @param canDrag If `true`, displays a {@link DragHandleIcon} to allow dragging this component.\n * @param dragHandleListeners Optional mapping of `listenerId: listener` for drag events.\n * @param primaryContent Primary content to display in the list item.\n * @param secondaryContent Secondary content to display in the list item.\n * @param actions Content to display as \"actions\" for the list item.\n * This content will be pushed to the trailing edge of the list item.\n * @param additionalContent Additional content to display in the list item.\n * This content will be placed between the `secondaryContent` and the `actions.\n * @param className `class` overrides to apply to the component.\n * @param props Additional HTML properties to apply to the component.\n *\n * @internal For use by the {@link RichList} component.\n */\nexport const ListItem: FC<ListItemProps> = ({\n canSelect = false,\n selected = false,\n onSelected = undefined,\n canDrag = false,\n dragHandleListeners,\n primaryContent = undefined,\n secondaryContent = undefined,\n actions = undefined,\n additionalContent = undefined,\n className,\n ...props\n}) => {\n return (\n <div\n className={cn(\n \"flex flex-col\",\n \"w-full\",\n \"py-3 px-3.5\",\n bgColorClass(BackgroundColor.Card2),\n radiusStyles(Radius.Sm),\n className\n )}\n {...props}\n >\n <div\n className={cn(\n \"flex flex-nowrap items-center justify-between\",\n \"w-full\",\n \"gap-x-lg\"\n )}\n >\n <div className={cn(\"flex flex-nowrap items-center\", \"gap-x-md\")}>\n {canSelect && (\n <Checkbox\n checked={selected}\n onChange={(checked) => onSelected?.(checked)}\n />\n )}\n {canDrag && (\n <span\n className=\"flex align-items cursor-grab touch-none\"\n {...dragHandleListeners}\n >\n <DragHandleIcon\n className={cn(\"size-4\", textColorClass(TextColor.Secondary))}\n />\n </span>\n )}\n <Text variant={TextVariant.Lg}>{primaryContent}</Text>\n <div\n className={cn(\n \"flex items-center\",\n \"text-md/7\",\n textColorClass(TextColor.Secondary)\n )}\n >\n {secondaryContent}\n </div>\n </div>\n\n <span>{actions}</span>\n </div>\n {additionalContent && (\n <div\n className={cn(\n \"px-sm py-3\",\n // Align with primaryContent by adding margin for checkbox/drag handle\n canSelect && canDrag && \"ml-12\",\n canSelect && !canDrag && \"ml-6\",\n !canSelect && canDrag && \"ml-6\"\n )}\n >\n {additionalContent}\n </div>\n )}\n </div>\n );\n};\n\nListItem.displayName = \"ListItem\";\n","import clsx from \"clsx\";\nimport type { FC, HTMLAttributes } from \"react\";\n\nimport { Icon } from \"@/components/Icons\";\nimport { Stack } from \"@/components/Stack\";\nimport radiusStyles from \"@/styles/radius\";\nimport shadowStyles from \"@/styles/shadow\";\nimport {\n BackgroundColor,\n IconName,\n Radius,\n SemanticColor,\n Shadow,\n Size,\n Spacing,\n StatusColor,\n TextColor,\n} from \"@/types\";\nimport { bgColorClass, textColorClass } from \"@/types/color\";\nimport { cn } from \"@/util/classes\";\n\nexport type PillSize = Exclude<Size, Size.Lg | Size.Xl>;\nexport type PillColor = BackgroundColor | SemanticColor | StatusColor;\n\nexport interface PillProps extends HTMLAttributes<HTMLSpanElement> {\n size?: PillSize;\n radius?: Radius;\n shadow?: Shadow;\n color?: TextColor;\n isStatus?: boolean;\n backgroundColor?: PillColor;\n icon?: IconName;\n onRemove?: () => void;\n}\n\nconst sizeStyles: Record<PillSize, string> = {\n [Size.Xs]: clsx(\"px-2.5 py-0.75\", \"text-xs/5\"),\n [Size.Sm]: clsx(\"px-3.5 py-1.5\", \"text-sm/5\"),\n [Size.Md]: clsx(\"px-4 py-2\", \"text-md/5\"),\n};\n\n/**\n * A basic pill component.\n *\n * @example\n * ```tsx\n * <Pill isStatus={true}>\n * Success\n * </Pill>\n * ```\n *\n * @param size The size of the pill. See {@link Size}.\n * @param radius The border radius of the pill. See {@link Radius}.\n * @param shadow Optional drop shadow to apply to the pill. See {@link Shadow}.\n * @param color Text color of the pill. See {@link TextColor}.\n * @param backgroundColor Background color of the pill. See {@link BackgroundColor}.\n * @param isStatus If `true`, prefixes the content with a bullet-like icon.\n * @param className `class` overrides to apply to the component.\n * @param children Content of the pill.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const Pill: FC<PillProps> = ({\n size = Size.Sm,\n radius = Radius.Full,\n shadow = undefined,\n color = TextColor.Muted,\n backgroundColor = BackgroundColor.Muted,\n icon,\n isStatus = false,\n onRemove,\n className,\n children,\n ...props\n}) => {\n return (\n <Stack\n spacing={Spacing.Xs}\n className={clsx(\n \"items-center\",\n \"font-small\",\n textColorClass(color),\n bgColorClass(backgroundColor),\n radiusStyles(radius),\n shadowStyles(shadow),\n sizeStyles[size],\n className\n )}\n {...props}\n >\n {isStatus && (\n <div>\n <Icon\n size={Size.Xs}\n name={IconName.Circle}\n color={color}\n style={{ minWidth: 10 }}\n />\n </div>\n )}\n {icon && (\n <div>\n <Icon size={size} name={icon} color={color} />\n </div>\n )}\n <div>{children}</div>\n {onRemove && (\n <button\n type=\"button\"\n aria-label=\"Remove\"\n onClick={(e) => {\n e.stopPropagation();\n onRemove();\n }}\n className=\"shrink-0 cursor-pointer group\"\n >\n <Icon\n size={Size.Xs}\n name={IconName.Close}\n color={color}\n className={cn(\n \"min-w-[10px]\",\n \"group-hover:text-content-text-primary\",\n \"transition-colors duration-150\"\n )}\n />\n </button>\n )}\n </Stack>\n );\n};\n\nPill.displayName = \"Pill\";\n","import clsx from \"clsx\";\nimport { FC } from \"react\";\n\nimport { IconProps } from \"@/components/Icons/types\";\n\n/**\n * An icon used to display a selected state of a radio control.\n *\n * @param className `class` overrides to apply to the component.\n * @param props Additional HTML properties to apply to the component.\n *\n * @internal For use by the {@link Radio} component.\n */\nexport const RadioDotIcon: FC<IconProps> = ({ className, ...props }) => {\n return (\n <svg\n className={clsx(\n \"fill-action-primary-primary opacity-0 peer-checked:opacity-100\",\n className\n )}\n viewBox=\"0 0 8 8\"\n fill=\"none\"\n {...props}\n >\n <circle cx=\"4\" cy=\"4\" r=\"1\" />\n </svg>\n );\n};\n","import { Field, Radio as HeadlessRadio, Label } from \"@headlessui/react\";\nimport clsx from \"clsx\";\nimport { type FC, InputHTMLAttributes } from \"react\";\n\nimport { textStyles } from \"@/styles/text.ts\";\nimport { Size, TextColor, textColorClass, TextVariant } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nimport { RadioDotIcon } from \"../Icons/RadioDot\";\n\ntype ModifiedRadioProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"size\" | \"onChange\" | \"checked\" | \"disabled\" | \"className\" | \"type\"\n>;\n\nexport interface RadioProps extends ModifiedRadioProps {\n value?: string;\n label?: string;\n disabled?: boolean;\n size?: Size;\n className?: string;\n labelClassName?: string;\n}\n\nconst textSizeStyles: Partial<Record<Size, string | null>> = {\n [Size.Sm]: textStyles(TextVariant.Sm),\n [Size.Md]: textStyles(TextVariant.Md),\n [Size.Lg]: textStyles(TextVariant.Lg),\n};\n\nconst sizeStyles: Partial<Record<Size, string>> = {\n [Size.Sm]: clsx(\"w-4 h-4\"),\n [Size.Md]: clsx(\"w-5 h-5\"),\n [Size.Lg]: clsx(\"w-6 h-6\"),\n};\n\nconst dotSizeStyles: Partial<Record<Size, string>> = {\n [Size.Sm]: clsx(\"before:w-1 before:h-1\"),\n [Size.Md]: clsx(\"before:w-1.5 before:h-1.5\"),\n [Size.Lg]: clsx(\"before:w-2 before:h-2\"),\n};\n\n/**\n * A basic radio component.\n *\n * @example\n * ```tsx\n * <Radio value=\"car\" label=\"Car\" />\n * ```\n *\n * @param value The value of the radio element.\n * @param size The size of the radio element. See {@link Size}.\n * @param className `class` overrides to apply to the radio.\n * @param labelClassName `class` overrides to apply to the radio's label.\n * @param label Label to display for the radio element.\n * @param disabled If `true`, disables the radio element.\n * @param props Additional HTML properties to apply to the radio.\n */\nexport const Radio: FC<RadioProps> = ({\n value,\n size = Size.Sm,\n className,\n labelClassName,\n label,\n disabled,\n ...props\n}) => {\n return (\n <Field className=\"group flex items-center gap-2\">\n <HeadlessRadio\n value={value}\n disabled={disabled}\n className={cn(\n \"peer\",\n !disabled && \"cursor-pointer\",\n \"appearance-none\",\n \"border\",\n \"border-content-text-tertiary\",\n disabled && \"opacity-50\",\n \"rounded-full\",\n sizeStyles[size],\n // on focus - unchecked\n !disabled && \"focus:outline-none\",\n !disabled && \"focus:ring-2\",\n !disabled && \"focus:ring-action-primary-primary\",\n // on hover - unchecked (only when not disabled)\n !disabled && \"hover:border-action-primary-primary\",\n !disabled && \"hover:border-1\",\n // when hovering label, also hover radio (only when not disabled)\n !disabled && \"group-hover:border-action-primary-primary\",\n !disabled && \"group-hover:border-1\",\n // checked styles (override base styles)\n \"data-[checked]:border-2\",\n \"data-[checked]:border-action-primary-primary\",\n \"data-[checked]:focus:ring-0\",\n \"relative\",\n // for the dot\n \"before:content-['']\",\n \"before:absolute\",\n dotSizeStyles[size],\n \"before:top-1/2\",\n \"before:left-1/2\",\n \"before:-translate-x-1/2\",\n \"before:-translate-y-1/2\",\n \"before:rounded-full\",\n \"before:bg-action-primary-primary\",\n \"before:opacity-0\",\n \"data-[checked]:before:opacity-100\",\n className\n )}\n {...props}\n >\n <div\n className={cn(\n \"absolute\",\n \"inset-0\",\n \"flex\",\n \"items-center\",\n \"justify-center\",\n \"pointer-events-none\"\n )}\n >\n <RadioDotIcon />\n </div>\n </HeadlessRadio>\n {label && (\n <Label\n className={cn(\n textColorClass(disabled ? TextColor.Secondary : TextColor.Primary),\n textSizeStyles[size],\n !disabled && \"cursor-pointer\",\n labelClassName\n )}\n >\n {label}\n </Label>\n )}\n </Field>\n );\n};\n\nRadio.displayName = \"Radio\";\n","export const randomString = (): string =>\n Math.random().toString(36).substring(2, 9).trim();\n","import { RadioGroup as HeadlessRadioGroup } from \"@headlessui/react\";\nimport { FC, HTMLAttributes, useMemo } from \"react\";\n\nimport { Size } from \"@/types\";\nimport { randomString } from \"@/util/random\";\n\nimport { Radio, RadioProps } from \"./Radio\";\n\nexport interface RadioOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport type RadioGroupSize = Exclude<Size, Size.Xs>;\n\nexport interface RadioGroupProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\"\n> {\n className?: string;\n defaultValue?: string;\n options: RadioOption[];\n value?: string;\n onChange: (value: string) => void;\n name?: string;\n size?: RadioGroupSize;\n disabled?: boolean;\n radioProps?: RadioProps;\n}\n\n/**\n * A group of radio controls; supports selection via one-of semantics.\n *\n * This component operates exclusively as a controlled component. See `value` and `onChange` for controlled behavior.\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const [value, setValue] = useState<string | null>(null);\n *\n * const onChange = useCallback((selectedValue: string) => {\n * setValue(selectedValue);\n * },\n * [setValue]\n * );\n *\n * const options: RadioOption[] = useMemo(() => {\n * return [\n * {value: \"car\", label: \"Car\"},\n * {value: \"truck\", label: \"Truck\"},\n * {value: \"bus\", label: \"Bus\"},\n * ];\n * },\n * []\n * );\n *\n * return (\n * <RadioGroup\n * value={value}\n * onChange={onChange}\n * options={options}\n * />\n * );\n * };\n * ```\n *\n * @param options List of {@link RadioOption}s to display. Each option will correspond to a {@link Radio} component.\n * @param value The value of the group.\n * @param defaultValue The default value to use when no selection has been made.\n * @param onChange Callback triggered when the selection value changes.\n * @param name Optional name of the radio group.\n * @param size The size of the radio group; this property will be forwarded to the wrapped {@link Radio} components.\n * See {@link Size}.\n * @param disabled If `true`, disables the radio group.\n * @param className `class` overrides to apply to the radio group.\n * @param radioProps Additional HTML properties to apply to each of the wrapped {@link Radio} components.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const RadioGroup: FC<RadioGroupProps> = ({\n options,\n value,\n defaultValue,\n onChange,\n name,\n size = Size.Sm,\n disabled = false,\n className,\n radioProps,\n ...props\n}) => {\n const groupName = useMemo(\n () => name || `radio-group-${randomString()}`,\n [name]\n );\n\n return (\n <HeadlessRadioGroup\n value={value}\n defaultValue={defaultValue}\n onChange={onChange}\n name={groupName}\n disabled={disabled}\n className={className}\n {...props}\n >\n {options.map((option) => (\n <Radio\n key={option.value}\n value={option.value}\n label={option.label}\n size={size}\n disabled={disabled || option.disabled}\n {...radioProps}\n />\n ))}\n </HeadlessRadioGroup>\n );\n};\n\nRadioGroup.displayName = \"RadioGroup\";\n","import clsx from \"clsx\";\nimport type { FC, HTMLAttributes, ReactNode } from \"react\";\n\nimport { Clickable } from \"@/components/Clickable\";\nimport { IconWrapper } from \"@/components/Icons\";\nimport { Text } from \"@/components/Text\";\nimport radiusStyles from \"@/styles/radius\";\nimport {\n BorderColor,\n borderColorClass,\n BrandColor,\n ElementState,\n getColorCssVar,\n IconColor,\n IconName,\n Radius,\n TextColor,\n textColorClass,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport interface RichButtonProps extends HTMLAttributes<HTMLDivElement> {\n active?: boolean;\n description?: ReactNode;\n icon?: FC | IconName;\n label?: ReactNode;\n onClick?: () => void;\n}\n\n/**\n * A component which supports a toggled \"active\" state with rich content.\n *\n * This component operates exclusively as a controlled component. See `active` and `onClick` for controlled behavior.\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const [active, setActive] = useState<boolean>(false);\n *\n * const onClick = useCallback(() => setActive(prev => !prev), [setActive]);\n *\n * return (\n * <RichButton\n * label=\"Detection\"\n * description=\"Create a new detection\"\n * onClick={onClick}\n * />\n * );\n * };\n * ```\n *\n * @param active If `true`, renders the component in its active state.\n * @param description Content to display as the description of the component. This is the component's secondary content.\n * @param icon Icon reference ({@link FC}) or an {@link IconName} to display in the component. See {@link Icon}.\n * @param label Content to display as the label of the component. This is the component's primary content.\n * @param onClick Callback triggered when the component is clicked.\n * @param className `class` overrides to apply to the component.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const RichButton: FC<RichButtonProps> = ({\n active,\n description,\n icon,\n label,\n onClick,\n className,\n style,\n ...props\n}) => (\n <Clickable>\n <div\n className={clsx(\n \"border\",\n active\n ? borderColorClass(BorderColor.Active)\n : borderColorClass(BorderColor.Default),\n !active && borderColorClass(BorderColor.Hover, ElementState.Hover),\n \"p-3\",\n radiusStyles(Radius.Md),\n className\n )}\n style={{\n ...(active && {\n backgroundColor: `color-mix(in srgb, var(${getColorCssVar(BrandColor.Primary)}) 10%, transparent)`,\n }),\n ...style,\n }}\n onClick={onClick}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick?.();\n }\n }}\n role=\"button\"\n tabIndex={0}\n {...props}\n >\n <div className=\"flex flex-col\">\n <span className=\"flex gap-x-md items-center\">\n <IconWrapper\n content={icon}\n className={cn(\n \"size-5\",\n active\n ? textColorClass(IconColor.Brand)\n : textColorClass(IconColor.Default)\n )}\n />\n {label && <Text>{label}</Text>}\n </span>\n\n {description && <Text color={TextColor.Secondary}>{description}</Text>}\n </div>\n </div>\n </Clickable>\n);\n\nRichButton.displayName = \"RichButton\";\n","import { FC, HTMLAttributes, useCallback, useState } from \"react\";\n\nimport { RichButton, RichButtonProps } from \"@/components/RichButton\";\nimport { Descriptor } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport interface RichButtonGroupProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\"\n> {\n buttons: Descriptor<RichButtonProps>[];\n exclusive?: boolean;\n onChange?: (active: string[]) => void;\n}\n\n/**\n * A grouping of {@link RichButton} components with linked selection state.\n *\n * This component operates exclusively as an uncontrolled component.\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const [activeButtons, setActiveButtons] = useState<string[]>(() => []);\n *\n * const onChange = useCallback((active: string[]) => {\n * setActiveButtons(active);\n * },\n * [setActiveButtons]\n * );\n *\n * const buttons: Descriptor<RichButtonProps>[] = useMemo(() => {\n * return [\n * {id: \"cls\", data: {label: \"Classification\", description: \"Create new classification\"}},\n * {id: \"det\", data: {label: \"Detection\", description: \"Create new detection\"}},\n * {id: \"seg\", data: {label: \"Segmentation\", description: \"Create new segmentation mask\"}},\n * ];\n * },\n * []\n * );\n *\n * return (\n * <RichButtonGroup\n * buttons={buttons}\n * exclusive={true}\n * onChange={onChange}\n * />\n * );\n * };\n * ```\n *\n * @param buttons List of component descriptors which will be used to create {@link RichButton} child components.\n * @param className `class` overrides to apply to the group's container.\n * @param exclusive If `true`, enforces mutual exclusion in child selection state.\n * @param onChange Callback triggered when child selection state changes.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const RichButtonGroup: FC<RichButtonGroupProps> = ({\n buttons,\n className,\n exclusive,\n onChange,\n ...props\n}) => {\n const [active, setActive] = useState<string[]>(() => []);\n\n const activate = useCallback(\n (id: string) => {\n if (!active.includes(id)) {\n const newActiveArray = exclusive ? [id] : [...active, id];\n setActive(newActiveArray);\n onChange?.(newActiveArray);\n }\n },\n [active, exclusive, onChange]\n );\n const deactivate = useCallback(\n (id: string) => {\n if (active.includes(id)) {\n const newActiveArray = active.filter((elem) => elem !== id);\n setActive(newActiveArray);\n onChange?.(newActiveArray);\n }\n },\n [active, onChange]\n );\n\n return (\n <div className={cn(\"flex\", \"gap-x-md\", className)} {...props}>\n {buttons.map((buttonProps) => (\n <RichButton\n key={buttonProps.id}\n {...buttonProps.data}\n active={active.includes(buttonProps.id)}\n onClick={() => {\n if (active.includes(buttonProps.id)) {\n deactivate(buttonProps.id);\n } else {\n activate(buttonProps.id);\n }\n\n buttonProps.data.onClick?.();\n }}\n />\n ))}\n </div>\n );\n};\n\nRichButtonGroup.displayName = \"RichButtonGroup\";\n","import { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { FC } from \"react\";\n\nimport { ListItem, ListItemProps } from \"@/components/ListItem\";\n\ninterface SortableListItemProps extends ListItemProps {\n id: string;\n disabled?: boolean;\n}\n\nexport const SortableListItem: FC<SortableListItemProps> = ({\n id,\n disabled = false,\n ...props\n}) => {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id, disabled });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.5 : 1,\n cursor: isDragging ? \"grabbing\" : undefined,\n };\n\n return (\n <div ref={setNodeRef} style={style} {...attributes}>\n <ListItem {...props} dragHandleListeners={listeners} />\n </div>\n );\n};\n\nSortableListItem.displayName = \"SortableListItem\";\n","import {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n} from \"@dnd-kit/core\";\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\";\nimport clsx from \"clsx\";\nimport {\n FC,\n HTMLAttributes,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\n\nimport { ListItemProps } from \"@/components/ListItem\";\nimport { Descriptor, Spacing } from \"@/types\";\n\nimport { SortableListItem } from \"./SortableListItem\";\n\nconst gapStyles: Record<Spacing, string> = {\n [Spacing.None]: \"gap-y-0\",\n [Spacing.Xs]: \"gap-y-xs\",\n [Spacing.Sm]: \"gap-y-sm\",\n [Spacing.Md]: \"gap-y-md\",\n [Spacing.Lg]: \"gap-y-lg\",\n [Spacing.Xl]: \"gap-y-xl\",\n};\n\nexport interface RichListProps extends HTMLAttributes<HTMLDivElement> {\n listItems: Descriptor<ListItemProps>[];\n draggable?: boolean;\n onSelected?: (selectedItems: string[]) => void;\n onOrderChange?: (newItems: Descriptor<ListItemProps>[]) => void;\n selected?: string[];\n spacing?: Spacing;\n}\n\n/**\n * A list-like component which renders a group of {@link ListItem} children.\n *\n * This component operates as both a controlled and uncontrolled component.\n * See `selected`/`onSelected` and `listItems`/`onOrderChange` for controlled behavior.\n *\n * @example\n * ```tsx\n * const MyComponent = ({openSettings}: {openSettings: (id: string) => void}) => {\n * const items: Descriptor<ListItemProps>[] = useMemo(() => [\n * {\n * id: \"1\",\n * data: {\n * primaryContent: \"First Item\",\n * secondaryContent: \"First item description\"\n * actions: (\n * <Clickable onClick={() => openSettings(\"1\")}>\n * <Icon name={IconName.Settings} />\n * </Clickable>\n * )\n * },\n * },\n * {\n * id: \"2\",\n * data: {\n * primaryContent: \"Second Item\",\n * secondaryContent: \"Second item description\"\n * actions: (\n * <Clickable onClick={() => openSettings(\"2\")}>\n * <Icon name={IconName.Settings} />\n * </Clickable>\n * )\n * },\n * {\n * id: \"3\",\n * data: {\n * primaryContent: \"Third Item\",\n * secondaryContent: \"Third item description\"\n * actions: (\n * <Clickable onClick={() => openSettings(\"3\")}>\n * <Icon name={IconName.Settings} />\n * </Clickable>\n * )\n * },\n * },\n * ],\n * []\n * );\n *\n * return (\n * <RichList listItems={items} />\n * );\n * };\n * ```\n *\n * @param className `class` overrides to apply to the list's container.\n * @param listItems List of component descriptors which will be used to create {@link ListItem} child components.\n * The order of this list dictates the order of the children from top to bottom.\n * @param draggable If `true`, allows reordering of children via dragging {@link ListItem} components.\n * @param onSelected Callback triggered when selection state changes.\n * This callback includes a list of currently-selected descriptor IDs.\n * @param onOrderChange Callback triggered when {@link ListItem} ordering changes.\n * This callback includes the descriptors in order from top to bottom.\n * @param selected List of descriptor IDs which should be selected; this allows for controlled selection behavior.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const RichList: FC<RichListProps> = ({\n className,\n listItems,\n draggable = false,\n onSelected,\n onOrderChange,\n selected,\n spacing = Spacing.Md,\n ...props\n}) => {\n // transientSelected contains the ID for each selected element in the list\n const [transientSelected, setTransientSelected] = useState<string[]>(\n () => []\n );\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n\n // allow for controlled selection behavior\n useEffect(() => {\n setTransientSelected([...(selected ?? [])]);\n }, [selected]);\n\n const onSelect = useCallback(\n (itemId: string, isSelected: boolean) => {\n if (transientSelected.includes(itemId)) {\n if (!isSelected) {\n // remove element\n const newSelectionState = transientSelected.filter(\n (v) => v !== itemId\n );\n setTransientSelected(newSelectionState);\n onSelected?.(newSelectionState);\n }\n } else {\n if (isSelected) {\n // add element\n const newSelectionState = [...transientSelected, itemId];\n setTransientSelected(newSelectionState);\n onSelected?.(newSelectionState);\n }\n }\n },\n [transientSelected, onSelected]\n );\n\n const handleDragEnd = (event: DragEndEvent): void => {\n const { active, over } = event;\n\n if (over && active.id !== over.id) {\n const oldIndex = listItems.findIndex((item) => item.id === active.id);\n const newIndex = listItems.findIndex((item) => item.id === over.id);\n const newItems = arrayMove(listItems, oldIndex, newIndex);\n onOrderChange?.(newItems);\n }\n };\n\n const listContent = useMemo(\n () =>\n listItems.map((descriptor) => (\n <SortableListItem\n key={descriptor.id}\n id={descriptor.id}\n disabled={!draggable}\n data-testid={descriptor.id}\n {...descriptor.data}\n canDrag={draggable && descriptor.data.canDrag !== false}\n selected={transientSelected.includes(descriptor.id)}\n onSelected={(isSelected) => onSelect(descriptor.id, isSelected)}\n />\n )),\n [listItems, draggable, onSelect, transientSelected]\n );\n\n return (\n <div\n className={clsx(\"flex flex-col\", \"w-full\", gapStyles[spacing], className)}\n {...props}\n >\n {draggable ? (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <SortableContext\n items={listItems.map((item) => item.id)}\n strategy={verticalListSortingStrategy}\n >\n {listContent}\n </SortableContext>\n </DndContext>\n ) : (\n listContent\n )}\n </div>\n );\n};\n\nRichList.displayName = \"RichList\";\n","import { ComboboxOption } from \"@headlessui/react\";\nimport clsx from \"clsx\";\nimport type { FC, HTMLAttributes } from \"react\";\n\nimport { Icon } from \"@/components/Icons/Icon\";\nimport { Text } from \"@/components/Text\";\nimport radiusStyles from \"@/styles/radius\";\nimport {\n BackgroundColor,\n bgColorClass,\n ElementState,\n IconName,\n Radius,\n Size,\n BrandColor,\n textColorClass,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport interface OptionProps extends HTMLAttributes<HTMLDivElement> {\n value?: unknown;\n selected?: boolean;\n}\n\n/**\n * A selectable option.\n *\n * @param children The content to render in the list option.\n * @param selected If `true`, the list option is rendered with a selected state.\n * @param value The value of the list option.\n * @param props Additional HTML properties to apply to the component.\n *\n * @internal For use by {@link Select}.\n */\nexport const Option: FC<OptionProps> = ({\n children,\n selected,\n value,\n ...props\n}) => (\n <ComboboxOption value={value} {...props}>\n <div\n className={clsx(\n \"flex flex-nowrap items-center justify-between\",\n \"gap-x-md\",\n \"py-2 px-3\",\n radiusStyles(Radius.Sm),\n cn(\n bgColorClass(BackgroundColor.Card1),\n selected && bgColorClass(BackgroundColor.Selected)\n ),\n bgColorClass(BackgroundColor.CardElevated, ElementState.Hover)\n )}\n >\n <Text>{children}</Text>\n <span\n className={clsx(\n \"size-5 flex items-center\",\n textColorClass(BrandColor.Primary)\n )}\n >\n {selected && <Icon name={IconName.Check} size={Size.Sm} />}\n </span>\n </div>\n </ComboboxOption>\n);\n\nOption.displayName = \"Option\";\n","import { Combobox, ComboboxInput, ComboboxOptions } from \"@headlessui/react\";\nimport clsx from \"clsx\";\nimport {\n FC,\n HTMLAttributes,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { Icon } from \"@/components/Icons\";\nimport { inputStyle } from \"@/components/Input\";\nimport { Text } from \"@/components/Text\";\nimport radiusStyles from \"@/styles/radius\";\nimport shadowStyles from \"@/styles/shadow\";\nimport {\n BackgroundColor,\n bgColorClass,\n BorderColor,\n borderColorClass,\n Descriptor,\n Radius,\n Shadow,\n Size,\n TextColor,\n textColorClass,\n ZIndex,\n zIndexStyles,\n} from \"@/types\";\nimport { IconName } from \"@/types/icons\";\nimport { useElementSize } from \"@/util/useElementSize\";\n\nimport { Option } from \"./Option\";\n\nexport enum SelectAnchor {\n Bottom = \"bottom\",\n BottomStart = \"bottom start\",\n BottomEnd = \"bottom end\",\n Top = \"top\",\n TopStart = \"top start\",\n TopEnd = \"top end\",\n}\n\nexport interface SelectProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\"\n> {\n anchor?: SelectAnchor;\n disabled?: boolean;\n exclusive?: boolean;\n onChange?: (value: string | string[] | null) => void;\n options?: Descriptor<{ label: string; content?: ReactNode }>[];\n zIndex?: ZIndex;\n portal?: boolean;\n value?: string | string[];\n}\n\n/**\n * Returns the appropriate z-index utility class for the select options dropdown.\n *\n * When `portal` is `true`, this always uses z-index above modal content to\n * ensure the dropdown overlays other layered UI. Otherwise, it uses the provided\n * `zIndex` level or leaves the z-index unset.\n *\n * @param zIndex Z-index level for the dropdown options list.\n * @param portal If `true`, forces z-index above modal layers for portal rendering.\n */\nfunction getZIndexClass(zIndex?: ZIndex, portal?: boolean): string | undefined {\n if (portal) {\n return zIndexStyles(ZIndex.AboveModal);\n }\n if (zIndex) {\n return zIndexStyles(zIndex);\n }\n return undefined;\n}\n\n/**\n * A select/combobox component which supports single/multi-selection and typeahead filtering.\n *\n * This component operates as both a controlled and uncontrolled component.\n * See `value` and `onChange` for controlled behavior.\n *\n * @example\n * ```tsx\n * // Single selection\n * const MyComponent = () => {\n * const [value, setValue] = useState<string | null>(null);\n *\n * const onChange = useCallback((selected: string) => setValue(selected), [setSelected]);\n *\n * const options: Descriptor<{label: string, content: ReactNode}>[] = useMemo(() => [\n * {id: \"id-a\", data: {label: \"A\", content: \"Option A\"}},\n * {id: \"id-b\", data: {label: \"B\", content: \"Option B\"}},\n * {id: \"id-c\", data: {label: \"C\", content: \"Option C\"}},\n * ],\n * []\n * );\n *\n * return (\n * <Select\n * exclusive={true}\n * value={value}\n * onChange={onChange}\n * options={options}\n * />\n * );\n * };\n * ```\n *\n * @example\n * ```tsx\n * // Multiple selection\n * const MyComponent = () => {\n * const [value, setValue] = useState<string[]>(() => []);\n *\n * const onChange = useCallback((selected: string[]) => setValue(selected), [setSelected]);\n *\n * const options: Descriptor<{label: string, content: ReactNode}>[] = useMemo(() => [\n * {id: \"id-a\", data: {label: \"A\", content: \"Option A\"}},\n * {id: \"id-b\", data: {label: \"B\", content: \"Option B\"}},\n * {id: \"id-c\", data: {label: \"C\", content: \"Option C\"}},\n * ],\n * []\n * );\n *\n * return (\n * <Select\n * value={value}\n * onChange={onChange}\n * options={options}\n * />\n * );\n * };\n * ```\n *\n * @param anchor Relative position to place the dropdown menu when focusing the component. See {@link SelectAnchor}.\n * @param className `class` overrides to apply to the component.\n * @param disabled If `true`, disables the component.\n * @param exclusive If `true`, allows only a single element to be selected;\n * otherwise, multiple items can be selected concurrently.\n * @param onChange Callback triggered when selection state changes.\n * The callback includes a list of selected option values.\n * @param options List of component descriptors which will be used to create {@link Option} child components.\n * @param zIndex Z-index level for the dropdown.\n * @param portal If `true`, ensures a high z-index for layered components (equivalent to above-modal when zIndex is not set).\n * @param value List of values for selected options; this property allows for controlled selection.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const Select: FC<SelectProps> = ({\n anchor = SelectAnchor.BottomStart,\n className,\n disabled,\n zIndex,\n exclusive,\n onChange,\n options,\n portal,\n value,\n ...props\n}) => {\n const [query, setQuery] = useState(\"\");\n const [selectionState, setSelectionState] = useState<string[]>(() => []);\n const inputRef = useRef<HTMLInputElement>(null);\n const { ref: triggerRef, width: triggerWidth } = useElementSize();\n\n const filteredOptions = useMemo(\n () =>\n query\n ? options?.filter((opt) =>\n opt.data.label.trim().toLowerCase().includes(query.toLowerCase())\n )\n : options,\n [options, query]\n );\n\n useEffect(() => {\n if (value && value.length > 0) {\n setSelectionState([...value]);\n }\n }, [value]);\n\n const handleChange = useCallback(\n (value: string | string[] | null) => {\n if (value) {\n if (typeof value === \"string\") {\n setSelectionState([value]);\n } else {\n setSelectionState([...value]);\n }\n }\n\n setQuery(\"\");\n onChange?.(value);\n\n if (exclusive) {\n window.setTimeout(() => {\n inputRef.current?.blur();\n }, 0);\n }\n },\n [exclusive, onChange]\n );\n\n const getDisplayValue = useCallback(\n (v: string | string[] | null): string =>\n v && v.length > 0\n ? typeof v === \"string\"\n ? (options?.find((e) => e.id === v)?.data.label ?? \"\")\n : v\n .map((id) => options?.find((e) => e.id === id)?.data.label)\n .filter((e) => !!e)\n .join(\", \")\n : \"\",\n [options]\n );\n\n return (\n <div className={clsx(className, \"w-full\")} {...props}>\n <Combobox\n disabled={disabled}\n value={value}\n onChange={handleChange}\n multiple={!exclusive}\n immediate\n onClose={() => setQuery(\"\")}\n >\n <div ref={triggerRef} className=\"relative flex items-center\">\n <ComboboxInput\n ref={inputRef}\n autoComplete=\"off\" // interferes with dropdown menu\n displayValue={getDisplayValue}\n onChange={(e) => setQuery(e.target.value)}\n // We'd normally prefer to use `as={Input}`,\n // but ref forwarding doesn't work here properly in react 18,\n // which causes the dropdown menu to be anchored in the wrong place.\n // Until we switch to react 19,\n // we'll just style this component using the same classes as the `Input` component.\n className={clsx(\n inputStyle({ disabled }),\n \"w-full pr-8 cursor-pointer\"\n )}\n />\n <span\n className={clsx(\n \"pointer-events-none absolute right-2.5 flex items-center\",\n disabled && \"opacity-50\"\n )}\n aria-hidden\n >\n <Icon\n name={IconName.CaretDown}\n size={Size.Sm}\n className={textColorClass(TextColor.Secondary)}\n />\n </span>\n </div>\n\n <ComboboxOptions\n anchor={{ to: anchor, gap: 2 }}\n portal={portal}\n style={triggerWidth ? { width: triggerWidth } : undefined}\n className={clsx(\n \"p-1\",\n \"border\",\n borderColorClass(BorderColor.Default),\n bgColorClass(BackgroundColor.Card1),\n getZIndexClass(zIndex, portal),\n radiusStyles(Radius.Lg),\n shadowStyles(Shadow.Lg)\n )}\n >\n {filteredOptions?.map((opt) => {\n // Support both single-select (string) and multi-select (string[]) modes\n const currentValue = value ?? selectionState;\n const isSelected = Array.isArray(currentValue)\n ? currentValue.includes(opt.id)\n : currentValue === opt.id;\n return (\n <Option\n key={opt.id}\n value={opt.id}\n selected={isSelected}\n className={clsx(\"cursor-pointer\")}\n >\n <Text>{opt.data.content ?? opt.data.label}</Text>\n </Option>\n );\n })}\n </ComboboxOptions>\n </Combobox>\n </div>\n );\n};\n\nSelect.displayName = \"Select\";\n","import clsx from \"clsx\";\nimport { DragEventHandler, FC, HTMLAttributes } from \"react\";\n\nimport radiusStyles from \"@/styles/radius\";\nimport { bgColorClass, BrandColor, Radius } from \"@/types\";\n\ninterface SliderKnobProps extends HTMLAttributes<HTMLDivElement> {\n position: number;\n onDragStart: DragEventHandler<HTMLDivElement>;\n value: number;\n}\n\n/**\n * A knob element to overlay on a {@link SliderBar}.\n *\n * The knob allows for user interaction via dragging along the slider's primary axis.\n *\n * @param position The relative position of the knob; this must be a value in the range `[0, 1]`.\n * @param onDragStart Callback triggered on the start of a drag event.\n * @param value Value of the knob; this is expected to be `position * (max - min)` and is only used for accessibility.\n * @param props Additional HTML properties to apply to the component.\n *\n * @internal For use by {@link SliderBar}.\n */\nexport const SliderKnob: FC<SliderKnobProps> = ({\n position,\n onDragStart,\n value,\n ...props\n}) => {\n return (\n <div\n className={clsx(\n \"absolute\",\n \"size-4 -ml-2\",\n \"cursor-pointer\",\n bgColorClass(BrandColor.Primary),\n radiusStyles(Radius.Full),\n \"hover:scale-110 transition-transform\"\n )}\n style={{ left: `${position * 100}%` }}\n onMouseDown={onDragStart}\n role=\"slider\"\n aria-valuenow={value}\n tabIndex={0}\n {...props}\n />\n );\n};\n\nSliderKnob.displayName = \"SliderKnob\";\n","/**\n * Truncate a value to the specified precision.\n *\n * @example\n * ```typescript\n * const truncated = truncate(0.12345, 0.001);\n * console.log(truncated); // 0.123\n * ```\n *\n * @param value Value to truncate\n * @param precision Precision\n */\nexport const truncate = (value: number, precision: number): number => {\n const factor = 1 / precision;\n return Math.trunc(value * factor) / factor;\n};\n\n/**\n * Clean a float value, potentially trimming floating point precision errors.\n *\n * This function is meant to retain as much precision as possible while removing trailing noise.\n * For explicit truncation, see {@link truncate}.\n *\n * @example\n * ```typescript\n * const cleaned = cleanFloat(0.1 + 0.2);\n * console.log(cleaned); // 0.3 rather than 0.30000000000000004\n * ```\n *\n * @param value Value to clean\n * @param maxDigits Maximum number of digits to keep\n */\nexport const cleanFloat = (value: number, maxDigits: number = 10): number => {\n return parseFloat(value.toFixed(maxDigits));\n};\n","import clsx from \"clsx\";\nimport { FC, HTMLAttributes, MouseEvent, useCallback, useRef } from \"react\";\n\nimport { SliderKnob } from \"@/components/Slider/SliderKnob\";\nimport radiusStyles from \"@/styles/radius\";\nimport { BackgroundColor, bgColorClass, BrandColor, Radius } from \"@/types\";\nimport { cleanFloat } from \"@/util/math\";\nimport { isNullish } from \"@/util/type-check\";\n\ninterface SliderBarProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\"\n> {\n min: number;\n max: number;\n multi?: boolean;\n onChange?: (value: number | number[]) => void;\n onChangeCommitted?: (value: number | number[]) => void;\n step: number;\n value?: number | number[];\n}\n\n/**\n * Component which renders the bar and knobs to form the basis of a slider.\n *\n * This component operates as both a controlled and uncontrolled component.\n * See `value` and `onChange` for controlled behavior.\n *\n * @param max Maximum allowed value.\n * @param min Minimum allowed value.\n * @param multi If `true`, provides knob controls for both a \"low\" and a \"high value.\n * @param onChange Callback triggered when slider values change.\n * If `multi` is `true`, emits a value of the form [low, high]; otherwise, emits a single value.\n * @param step Step size of the slider; moving a knob will modify the current value by a minimum of this size.\n * @param value Value of the slider.\n * If `multi` is true, this must be a value of the form [low, high]; otherwise, this is a single numeric value.\n * @param props Additional HTML properties to apply to the component.\n *\n * @internal For use by {@link Slider}.\n */\nexport const SliderBar: FC<SliderBarProps> = ({\n max,\n min,\n multi,\n onChange,\n onChangeCommitted,\n step,\n value,\n ...props\n}) => {\n const sliderTrackRef = useRef<HTMLDivElement>(null);\n // tracks the latest value emitted during a drag so the drag-end handler can\n // commit it (the document `mouseup` that ends the drag carries no position)\n const lastValueRef = useRef<number | number[] | undefined>(value);\n\n const values = Array.isArray(value) ? value : [min, value ?? max];\n const minValue = values[0];\n const maxValue = values[1];\n const isUnset = isNullish(value);\n\n /**\n * Get the knob position in the range [0, 1] from the given value.\n */\n const getKnobPosition = useCallback(\n (v: number) => (v - min) / (max - min),\n [max, min]\n );\n\n /**\n * Get the knob value in the range [min, max] from the given position.\n */\n const getKnobValue = useCallback(\n (xPos: number) => {\n const rawValue = min + xPos * (max - min);\n const stepValue = Math.round(rawValue / step) * step;\n return Math.min(Math.max(stepValue, min), max);\n },\n [max, min, step]\n );\n\n /**\n * Get the x-position in the range [0, 1] for the given x-coordinate relative to the bounds of the slider track.\n */\n const getRelativeX = useCallback((mouseX: number): number => {\n const trackElement = sliderTrackRef.current;\n if (!trackElement) {\n return 0;\n }\n\n const boundingRect = trackElement.getBoundingClientRect();\n const relativeX = Math.min(\n Math.max(mouseX - boundingRect.left, 0),\n boundingRect.width\n );\n return relativeX / boundingRect.width;\n }, []);\n\n /**\n * Drag handler which updates current value as a function of knob x-position.\n */\n const handleDrag = useCallback(\n (mouseX: number, knob: \"min\" | \"max\") => {\n if (!sliderTrackRef.current) {\n return;\n }\n\n const relativePosition = getRelativeX(mouseX);\n const newValue = cleanFloat(getKnobValue(relativePosition));\n\n let next: number | number[] | undefined;\n if (multi) {\n if (knob === \"min\") {\n if (newValue <= maxValue) {\n next = [newValue, maxValue];\n }\n } else {\n if (newValue >= minValue) {\n next = [minValue, newValue];\n }\n }\n } else {\n next = newValue;\n }\n\n if (next !== undefined) {\n lastValueRef.current = next;\n onChange?.(next);\n }\n },\n [getKnobValue, getRelativeX, maxValue, minValue, multi, onChange]\n );\n\n /**\n * Register drag handlers for knob interaction.\n */\n const registerKnobDragHandlers = useCallback(\n (e: MouseEvent, knob: \"min\" | \"max\") => {\n e.preventDefault();\n\n const handleMouseMove = (e: globalThis.MouseEvent): void =>\n handleDrag(e.clientX, knob);\n\n const handleMouseUp = (): void => {\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n // drag ended — commit the final value once\n if (lastValueRef.current !== undefined) {\n onChangeCommitted?.(lastValueRef.current);\n }\n };\n\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n },\n [handleDrag, onChangeCommitted]\n );\n\n /**\n * Click handler which updates knob position to the position clicked on the track.\n *\n * In the case of multiple knobs, the knob closest to the click is chosen for update.\n */\n const handleTrackClick = useCallback(\n (e: MouseEvent) => {\n if (!sliderTrackRef.current) {\n return;\n }\n\n const clickPos = getRelativeX(e.clientX);\n const clickValue = getKnobValue(clickPos);\n\n let next: number | number[];\n if (multi) {\n const minKnobPos = getKnobPosition(minValue);\n const maxKnobPos = getKnobPosition(maxValue);\n\n const minKnobDist = Math.abs(clickPos - minKnobPos);\n const maxKnobDist = Math.abs(clickPos - maxKnobPos);\n\n if (clickPos < minKnobPos || minKnobDist < maxKnobDist) {\n next = [clickValue, maxValue];\n } else {\n next = [minValue, clickValue];\n }\n } else {\n next = clickValue;\n }\n\n lastValueRef.current = next;\n onChange?.(next);\n // a track click is a complete interaction — commit immediately\n onChangeCommitted?.(next);\n },\n [\n getRelativeX,\n getKnobValue,\n multi,\n getKnobPosition,\n minValue,\n maxValue,\n onChange,\n onChangeCommitted,\n ]\n );\n\n return (\n <div\n ref={sliderTrackRef}\n className={clsx(\n \"relative\",\n \"flex items-center\",\n \"w-full h-2\",\n \"cursor-pointer\",\n bgColorClass(BackgroundColor.CardElevated),\n radiusStyles(Radius.Full)\n )}\n onClick={handleTrackClick}\n onKeyDown={(e) => e.stopPropagation()}\n role=\"presentation\"\n {...props}\n >\n {!isUnset && (\n <>\n <div\n className={clsx(\n \"absolute\",\n \"h-2\",\n bgColorClass(BrandColor.Primary),\n radiusStyles(Radius.Full)\n )}\n style={{\n left: `${getKnobPosition(minValue) * 100}%`,\n right: `${(1 - getKnobPosition(maxValue)) * 100}%`,\n }}\n />\n\n {multi && (\n <SliderKnob\n position={getKnobPosition(minValue)}\n onDragStart={(e) => registerKnobDragHandlers(e, \"min\")}\n value={minValue}\n />\n )}\n <SliderKnob\n position={getKnobPosition(maxValue)}\n onDragStart={(e) => registerKnobDragHandlers(e, \"max\")}\n value={maxValue}\n />\n </>\n )}\n </div>\n );\n};\n\nSliderBar.displayName = \"SliderBar\";\n","import clsx from \"clsx\";\nimport type { FC, HTMLAttributes } from \"react\";\n\nimport { Text } from \"@/components/Text\";\nimport { TextVariant } from \"@/types\";\nimport { cn } from \"@/util/classes\";\nimport { truncate } from \"@/util/math\";\n\ninterface SliderLabelProps extends HTMLAttributes<HTMLDivElement> {\n knobLabel?: boolean;\n min: number;\n minLabel?: boolean;\n max: number;\n maxLabel?: boolean;\n precision: number;\n value?: number | number[];\n}\n\n/**\n * Get the relative value [0, 1] for a given value in a range.\n *\n * @param value Raw value\n * @param min Range minimum\n * @param max Range maximum\n */\nconst getRelativeValue = (value: number, min: number, max: number): number =>\n (value - min) / (max - min);\n\n/**\n * Component which renders a label above a {@link SliderKnob}.\n *\n * @param max Maximum value of the slider.\n * @param min Minimum value of the slider.\n * @param precision Numeric precision to use when rendering labels; label values will be truncated to this precision.\n * See {@link truncate}.\n * @param value Current value of the knob.\n * @param threshold Threshold in the range `[0, 1]` to prevent label overlap.\n * If the `value` is within this relative threshold as determined by\n * `value / (max - min)` or `1 - (value / (max - min))`,\n * then the label is hidden.\n * For example, a threshold of `0.1` indicates that if `relativeValue < 0.1 || relativeValue > 0.9`,\n * the label will not be rendered.\n * This is intended to prevent labels from overlapping with minimum and maximum labels.\n *\n * @internal For use by {@link SliderLabels}.\n */\nconst KnobLabel: FC<{\n max: number;\n min: number;\n precision: number;\n value: number;\n threshold?: number;\n}> = ({ max, min, precision, value, threshold = 0.1 }) => {\n const relativeValue = getRelativeValue(value, min, max);\n\n // don't display the knob label if we're too close to the start/end\n if (relativeValue < threshold || 1 - relativeValue < threshold) {\n return null;\n }\n\n const displayValue = truncate(value, precision);\n if (!Number.isFinite(displayValue)) {\n return null;\n }\n\n return (\n <Text\n className={clsx(\"absolute\", \"-translate-x-1/2\")}\n style={{ left: `${relativeValue * 100}%` }}\n variant={TextVariant.Sm}\n >\n {displayValue}\n </Text>\n );\n};\n\n/**\n * Component which renders relevant labels above a {@link SliderBar}.\n *\n * @param className `class` overrides to apply to the labels' container.\n * @param knobLabel If `true`, displays a label above the current knob position(s).\n * @param max Maximum value of the slider.\n * @param maxLabel If `true`, displays a label above the maximal endpoint of the slider.\n * @param min Minimum value of the slider.\n * @param minLabel if `true`, displays a label above the minimal endpoint of the slider.\n * @param precision Numeric precision to use when rendering labels; label values will be truncated to this precision.\n * See {@link truncate}.\n * @param value Current value of the slider.\n * If the slider supports multiple values, this should be of the form [low, high];\n * otherwise, this is a single numeric value.\n * @param props Additional HTML properties to apply to the component.\n *\n * @internal For use by {@link Slider}.\n */\nexport const SliderLabels: FC<SliderLabelProps> = ({\n className,\n knobLabel,\n max,\n maxLabel,\n min,\n minLabel,\n precision,\n value,\n ...props\n}) => {\n return (\n <div\n className={cn(\n \"relative\",\n \"flex items-center justify-between\",\n \"w-full\",\n className\n )}\n {...props}\n >\n {minLabel && (\n <Text variant={TextVariant.Sm}>{truncate(min, precision)}</Text>\n )}\n {maxLabel && (\n <Text variant={TextVariant.Sm}>{truncate(max, precision)}</Text>\n )}\n\n {value !== undefined &&\n knobLabel &&\n (Array.isArray(value) ? (\n <>\n <KnobLabel\n max={max}\n min={min}\n precision={precision}\n value={value[0]}\n />\n <KnobLabel\n max={max}\n min={min}\n precision={precision}\n value={value[1]}\n />\n </>\n ) : (\n <KnobLabel max={max} min={min} precision={precision} value={value} />\n ))}\n </div>\n );\n};\n\nSliderLabels.displayName = \"SliderLabels\";\n","import debounce from \"lodash.debounce\";\nimport { useEffect, useMemo } from \"react\";\n\n/**\n * Re-definition of lodash's DebouncedFunc;\n * this type is not included in the lodash.debounce package.\n */\ninterface DebouncedFunc<T extends (...args: Parameters<T>) => ReturnType<T>> {\n (...args: Parameters<T>): ReturnType<T> | undefined;\n cancel(): void;\n flush(): ReturnType<T> | undefined;\n}\n\n/**\n * Hook which returns a debounced version of the provided callback.\n *\n * @example\n * ```tsx\n * const delay = 300;\n * const debouncedCallback = useDebouncedCallback(\n * useCallback(\n * (value: string) => {\n * doSomething(value);\n * },\n * [doSomething]\n * ),\n * delay\n * );\n * ```\n *\n * @param callback Callback to debounce; this is expected to be a stable ref\n * @param delay Debounce delay\n */\nexport const useDebouncedCallback = <\n T extends (...args: Parameters<T>) => ReturnType<T>,\n>(\n callback: T,\n delay: number\n): DebouncedFunc<T> => {\n const debouncedCallback = useMemo(\n () => debounce(callback, delay),\n [callback, delay]\n );\n\n useEffect(() => {\n return () => debouncedCallback.cancel();\n }, [debouncedCallback]);\n\n return debouncedCallback;\n};\n","/**\n * Type alias for a predicate function.\n */\nexport type Validator = (value: string | number | null | undefined) => boolean;\n\n/**\n * Returns true if the provided value is non-nullish.\n *\n * @param value Value to test\n */\nexport const nonNull: Validator = (value: string | number | null | undefined) =>\n value !== null && value !== undefined;\n\n/**\n * Returns true if the provided value is finite.\n *\n * @param value Value to test\n */\nexport const finite: Validator = (\n value: string | number | null | undefined\n) => {\n if (!nonNull(value)) {\n return false;\n }\n\n const parsedValue = Number.parseFloat(value!.toString());\n return Number.isFinite(parsedValue);\n};\n\n/**\n * Returns a {@link Validator} which returns true if the value is within the specified range.\n *\n * @param min Range minimum\n * @param max Range maximum\n */\nexport const makeRangeValidator =\n (min: number, max: number): Validator =>\n (value: string | number | null | undefined) => {\n if (!finite(value)) {\n return false;\n }\n\n const valueString = value!.toString();\n\n return (\n Number.parseFloat(valueString) >= min &&\n Number.parseFloat(valueString) <= max\n );\n };\n","import {\n ChangeEvent,\n FC,\n HTMLAttributes,\n ReactNode,\n useCallback,\n useEffect,\n useState,\n} from \"react\";\n\nimport { FormField } from \"@/components/FormField\";\nimport { Input } from \"@/components/Input\";\nimport { SliderBar } from \"@/components/Slider/SliderBar\";\nimport { SliderLabels } from \"@/components/Slider/SliderLabels\";\nimport { Stack } from \"@/components/Stack\";\nimport { UnsetHint } from \"@/components/UnsetHint\";\nimport { Orientation, Spacing } from \"@/types\";\nimport { useDebouncedCallback } from \"@/util/useDebouncedCallback.ts\";\nimport { makeRangeValidator } from \"@/util/validators\";\n\ntype ChangeHandler = (value: number | number[]) => void;\n\nexport interface SliderProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\"\n> {\n bare?: boolean;\n debounceDelay?: number;\n labeled?: boolean;\n knobLabel?: boolean;\n min: number;\n minLabel?: ReactNode;\n max: number;\n maxLabel?: ReactNode;\n multi?: boolean;\n onChange?: ChangeHandler;\n onChangeCommitted?: ChangeHandler;\n showUnsetHint?: boolean;\n step?: number;\n value?: number | number[];\n}\n\nexport interface SingleValueSliderProps extends Omit<\n SliderProps,\n \"multi\" | \"onChange\" | \"onChangeCommitted\" | \"value\"\n> {\n onChange?: (value: number) => void;\n onChangeCommitted?: (value: number) => void;\n value?: number;\n}\n\nexport interface MultiValueSliderProps extends Omit<\n SliderProps,\n \"multi\" | \"onChange\" | \"onChangeCommitted\" | \"value\"\n> {\n onChange?: (value: number[]) => void;\n onChangeCommitted?: (value: number[]) => void;\n value?: number[];\n}\n\n/**\n * Clamp a value to a given range.\n *\n * @param value Value to clamp\n * @param min Minimum value\n * @param max Maximum value\n */\nconst clamp = (value: number, min: number, max: number): number =>\n Math.min(Math.max(value, min), max);\n\n/**\n * A basic slider component.\n *\n * This component renders a slider with one or more draggable knobs, optional numeric inputs, and optional labels.\n *\n * This component operates as both a controlled and uncontrolled component.\n * See `value` and `onChange` for controlled behavior.\n *\n * @param bare If `true`, prevents rendering of value inputs; instead only renders the slider itself.\n * @param className `class` overrides to apply to the component.\n * @param debounceDelay Time in milliseconds to debounce `onChange` events.\n * Set this to `0` for a fully-responsive slider.\n * Note that internal state updates are *not* debounced, so this value does not affect slider responsiveness.\n * @param labeled If `true`, displays labels for `min` and `max` slider endpoints.\n * @param knobLabel If `true`, displays labels above all slider knobs.\n * @param max Maximum slider value\n * @param maxLabel Optional label to display for maximum numeric input.\n * @param min Minimum slider value.\n * @param minLabel Optional label to display for minimum numeric input.\n * @param multi Controls whether the slider supports setting multiple values.\n * If `true`:\n * - The slider will render two draggable knobs; one for a \"low\" value and one for a \"high\" value.\n * - `value` must be of the form `[low, high]`.\n * - `onChange` will emit values of the form `[low, high]`.\n * - See {@link MultiValueSlider} as a type-safe alias for this configuration.\n * If `false`:\n * - The slider will render a single draggable knob.\n * - `value` must be a single numeric value.\n * - `onChange` will emit a single numeric value.\n * - See {@link SingleValueSlider} as a type-safe alias for this configuration.\n * @param onChange Callback triggered when values change.\n * This change can be triggered in three ways:\n * - The user modifies the value in the minimum or maximum input field.\n * - The user drags a slider knob.\n * - The user clicks on the slider track.\n * If `multi` is `true`, this callback emits a value of the form `[low, high]`;\n * otherwise, this callback emits a single numeric value.\n * @param onChangeCommitted Callback triggered once when an interaction completes —\n * a drag release, a track click, or an input blur — rather than continuously.\n * Pair it with a responsive `onChange` (e.g. `debounceDelay={0}`) to get live\n * updates during a drag while committing only once on release. Emits the same\n * value shape as `onChange`.\n * @param step Numeric step size for slider increments.\n * @param value The controlled value of the slider.\n * If `multi` is `true`, this must be of the form `[low, high]`;\n * otherwise, this must be a single numeric value.\n * In all cases, `min <= value <= max`.\n * @param showUnsetHint If `true`, shows a hint to the user to initialize the slider's value.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const BaseSlider: FC<SliderProps> = ({\n bare,\n className,\n debounceDelay = 200,\n labeled,\n knobLabel,\n max,\n maxLabel,\n min,\n minLabel,\n multi,\n onChange,\n onChangeCommitted,\n step = 0.001,\n value,\n showUnsetHint,\n ...props\n}) => {\n // transient state\n const [transientValue, setTransientValue] = useState<\n number | number[] | undefined\n >(value);\n const [minValue, setMinValue] = useState<string>(() =>\n Array.isArray(value) ? value[0].toString() : min.toString()\n );\n const [maxValue, setMaxValue] = useState<string>(() =>\n Array.isArray(value) ? value[1].toString() : (value ?? max).toString()\n );\n\n /**\n * Check whether values are ordered such that min <= newMin <= newMax <= max.\n */\n const isValidRange = useCallback(\n (newMin: string | number, newMax: string | number) =>\n makeRangeValidator(min, Number.parseFloat(newMax.toString()))(newMin) &&\n makeRangeValidator(Number.parseFloat(newMin.toString()), max)(newMax),\n [max, min]\n );\n\n // synchronize transient state with changes in controlled value\n useEffect(() => {\n setTransientValue(value);\n }, [value]);\n\n // synchronize inputs with changes in transient state\n useEffect(() => {\n if (transientValue !== null && transientValue !== undefined) {\n if (Array.isArray(transientValue)) {\n setMinValue(clamp(transientValue[0], min, max).toString());\n setMaxValue(clamp(transientValue[1], min, max).toString());\n } else {\n setMinValue(min.toString());\n setMaxValue(clamp(transientValue, min, max).toString());\n }\n }\n }, [max, min, transientValue]);\n\n // debounce onChange events to prevent excessive updates when e.g. dragging the slider\n const debouncedOnChange = useDebouncedCallback(\n useCallback((value: number | number[]) => onChange?.(value), [onChange]),\n debounceDelay\n );\n\n const handleChange = useCallback(\n (value: number | number[]) => {\n // update transient value to provide responsive slider while debouncing onChange emission\n setTransientValue(value);\n debouncedOnChange(value);\n },\n [debouncedOnChange]\n );\n\n const handleMinInputChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n setMinValue(e.target.value);\n\n const v = Number.parseFloat(e.target.value);\n if (isValidRange(v, maxValue) && v !== Number.parseFloat(minValue)) {\n handleChange([v, Number.parseFloat(maxValue)]);\n }\n },\n [handleChange, isValidRange, maxValue, minValue]\n );\n\n const handleMaxInputChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n setMaxValue(e.target.value);\n\n const v = Number.parseFloat(e.target.value);\n if (isValidRange(minValue, v) && v !== Number.parseFloat(maxValue)) {\n handleChange(multi ? [Number.parseFloat(minValue), v] : v);\n }\n },\n [handleChange, isValidRange, maxValue, minValue, multi]\n );\n\n // commit the current input value(s) once editing settles (blur / Enter)\n const handleInputCommit = useCallback(() => {\n if (!onChangeCommitted) return;\n\n const maxNum = Number.parseFloat(maxValue);\n if (multi) {\n const minNum = Number.parseFloat(minValue);\n if (isValidRange(minNum, maxNum)) {\n onChangeCommitted([minNum, maxNum]);\n }\n } else if (Number.isFinite(maxNum)) {\n onChangeCommitted(maxNum);\n }\n }, [isValidRange, maxValue, minValue, multi, onChangeCommitted]);\n\n const hint = bare\n ? \"Click on the slider to set a value\"\n : \"Click on the slider or enter a number to set a value\";\n\n return (\n <Stack\n orientation={Orientation.Column}\n spacing={Spacing.Md}\n className={className}\n {...props}\n >\n {(labeled || knobLabel) && (\n <SliderLabels\n knobLabel={knobLabel}\n min={min}\n minLabel={labeled} // todo - dedicated prop\n max={max}\n maxLabel={labeled} // todo - dedicated prop\n precision={step}\n value={transientValue}\n />\n )}\n\n <SliderBar\n min={min}\n max={max}\n multi={multi}\n step={step}\n value={transientValue}\n onChange={handleChange}\n onChangeCommitted={onChangeCommitted}\n />\n\n {!bare && (\n <div className=\"flex justify-between items-center\">\n {multi && (\n <FormField\n label={minLabel}\n control={\n <Input\n value={minValue}\n onChange={handleMinInputChange}\n onBlur={handleInputCommit}\n error={!isValidRange(minValue, maxValue)}\n />\n }\n />\n )}\n <FormField\n label={maxLabel}\n control={\n <Input\n value={maxValue}\n onChange={handleMaxInputChange}\n onBlur={handleInputCommit}\n error={!isValidRange(minValue, maxValue)}\n />\n }\n />\n </div>\n )}\n {showUnsetHint && <UnsetHint value={value} hint={hint} />}\n </Stack>\n );\n};\n\n/**\n * A slider supporting selection of a single value.\n *\n * See also {@link BaseSlider}.\n * See also {@link MultiValueSlider}.\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const [value, setValue] = useState<number>(0.5);\n *\n * const onChange = useCallback((newValue: number) => setValue(newValue), [setValue]);\n *\n * return (\n * <SingleValueSlider\n * min={0}\n * max={1}\n * onChange={onChange}\n * value={value}\n * />\n * );\n * };\n * ```\n *\n * @param onChange Callback triggered when the slider value changes.\n * This change can be triggered in three ways:\n * - The user modifies the value in the minimum or maximum input field.\n * - The user drags a slider knob.\n * - The user clicks on the slider track.\n * @param max Maximum value of the slider\n * @param min Minimum value of the slider\n * @param props See {@link BaseSlider} for all available properties.\n */\nexport const SingleValueSlider: FC<SingleValueSliderProps> = ({\n onChange,\n onChangeCommitted,\n max,\n min,\n ...props\n}) => (\n <BaseSlider\n min={min}\n max={max}\n {...props}\n multi={false}\n onChange={onChange as ChangeHandler}\n onChangeCommitted={onChangeCommitted as ChangeHandler}\n />\n);\n\n/**\n * A slider supporting selection of a \"low\" value and a \"high\" value.\n *\n * See also {@link BaseSlider}.\n * See also {@link SingleValueSlider}.\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const [value, setValue] = useState<number[]>(() => [0.25, 0.75]);\n *\n * const onChange = useCallback((newValue: number[]) => setValue(newValue), [setValue]);\n *\n * return (\n * <MultiValueSlider\n * min={0}\n * max={1}\n * onChange={onChange}\n * value={value}\n * />\n * );\n * };\n * ```\n *\n * @param onChange Callback triggered when the slider value changes.\n * This change can be triggered in three ways:\n * - The user modifies the value in the minimum or maximum input field.\n * - The user drags a slider knob.\n * - The user clicks on the slider track.\n * @param max Maximum value of the slider\n * @param min Minimum value of the slider\n * @param props See {@link BaseSlider} for all available properties.\n */\nexport const MultiValueSlider: FC<MultiValueSliderProps> = ({\n onChange,\n onChangeCommitted,\n max,\n min,\n ...props\n}) => (\n <BaseSlider\n min={min}\n max={max}\n {...props}\n multi={true}\n onChange={onChange as ChangeHandler}\n onChangeCommitted={onChangeCommitted as ChangeHandler}\n />\n);\n\nBaseSlider.displayName = \"BaseSlider\";\nSingleValueSlider.displayName = \"SingleValueSlider\";\nMultiValueSlider.displayName = \"MultiValueSlider\";\n","import type { FC, HTMLAttributes } from \"react\";\n\nimport radiusStyles from \"@/styles/radius\";\nimport { textStyles } from \"@/styles/text\";\nimport {\n BackgroundColor,\n bgColorClass,\n BorderColor,\n borderColorClass,\n Radius,\n TextColor,\n textColorClass,\n TextVariant,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport const Table: FC<HTMLAttributes<HTMLTableElement>> = ({\n children,\n className,\n ...props\n}) => {\n return (\n <table\n className={cn(\n \"w-full border-collapse\",\n bgColorClass(BackgroundColor.Card1),\n radiusStyles(Radius.Md),\n className\n )}\n {...props}\n >\n {children}\n </table>\n );\n};\n\nexport const TableRow: FC<HTMLAttributes<HTMLTableRowElement>> = ({\n children,\n className,\n ...props\n}) => {\n const isClickable = typeof props.onClick === \"function\";\n return (\n <tr\n className={cn(\n \"border-b last:border-0\",\n borderColorClass(BorderColor.CardElevated),\n isClickable &&\n `hover:cursor-pointer hover:bg-[var(--color-content-bg-card-2)]`,\n className\n )}\n {...props}\n >\n {children}\n </tr>\n );\n};\n\nexport const TableHeader: FC<HTMLAttributes<HTMLTableSectionElement>> = ({\n children,\n className,\n ...props\n}) => {\n return (\n <thead\n className={cn(\n \"border-b\",\n borderColorClass(BorderColor.CardElevated),\n className\n )}\n {...props}\n >\n {children}\n </thead>\n );\n};\n\nexport const TableBody: FC<HTMLAttributes<HTMLTableSectionElement>> = ({\n children,\n ...props\n}) => {\n return <tbody {...props}>{children}</tbody>;\n};\n\nexport const TableCell: FC<HTMLAttributes<HTMLTableCellElement>> = ({\n children,\n className,\n ...props\n}) => {\n return (\n <td\n className={cn(\n \"px-6 py-3 text-left font-normal\",\n textColorClass(TextColor.Primary),\n textStyles(TextVariant.Md),\n className\n )}\n {...props}\n >\n {children}\n </td>\n );\n};\n\nexport const TableHead: FC<HTMLAttributes<HTMLTableCellElement>> = ({\n children,\n className,\n ...props\n}) => {\n return (\n <th\n className={cn(\n \"px-6 py-3 text-left font-normal\",\n textColorClass(TextColor.Secondary),\n textStyles(TextVariant.Md),\n className\n )}\n {...props}\n >\n {children}\n </th>\n );\n};\n\nTable.displayName = \"Table\";\nTableBody.displayName = \"TableBody\";\nTableCell.displayName = \"TableCell\";\nTableHead.displayName = \"TableHead\";\nTableHeader.displayName = \"TableHeader\";\nTableRow.displayName = \"TableRow\";\n","import { Field, Textarea as HeadlessTextarea } from \"@headlessui/react\";\nimport clsx from \"clsx\";\nimport { type FC, TextareaHTMLAttributes } from \"react\";\n\nimport radiusStyles from \"@/styles/radius\";\nimport { Radius, Size } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport enum ResizeBehavior {\n None = \"None\",\n Vertical = \"Vertical\",\n Horizontal = \"Horizontal\",\n BiDirectional = \"BiDirectional\",\n}\n\nexport interface TextAreaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n size?: Size;\n radius?: Radius;\n className?: string;\n containerClassName?: string;\n error?: boolean;\n resize?: ResizeBehavior;\n}\n\nconst sizeStyles: Record<Size, string> = {\n [Size.Xs]: clsx(\"px-2.5 py-1.5\", \"text-xs/5\"),\n [Size.Sm]: clsx(\"px-3 py-2\", \"text-sm/6\"),\n [Size.Md]: clsx(\"px-3.5 py-2.5\", \"text-md/7\"),\n [Size.Lg]: clsx(\"px-4 py-3\", \"text-lg/9\"),\n [Size.Xl]: clsx(\"px-4.5 py-3.5\", \"text-xl/10\"),\n};\n\nconst resizeStyles: Record<ResizeBehavior, string> = {\n [ResizeBehavior.None]: \"resize-none\",\n [ResizeBehavior.Vertical]: \"resize-y\",\n [ResizeBehavior.Horizontal]: \"resize-x\",\n [ResizeBehavior.BiDirectional]: \"resize\",\n};\n\n/**\n * A textarea component.\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const [value, setValue] = useState<string>(\"\");\n *\n * const onChange = useCallback((newValue: string) => setValue(newValue), [setValue]);\n *\n * return (\n * <TextArea\n * onChange={onChange}\n * resize={ResizeBehavior.None}\n * rows={10}\n * value={value}\n * />\n * );\n * };\n * ```\n *\n * @param size The size of the textarea; this controls the size of the text itself and container padding.\n * See {@link Size}.\n * @param radius The border radius to apply to the textarea. See {@link Radius}.\n * @param error If `true`, renders the textarea in an error state.\n * @param resize Resize behavior. See {@link ResizeBehavior}.\n * @param rows The number of text rows to display in the textarea.\n * @param className `class` overrides to apply to the component.\n * @param containerClassName `class` overrides to apply to the component's container.\n * @param disabled If `true`, disables the textarea.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const TextArea: FC<TextAreaProps> = ({\n size = Size.Md,\n radius = Radius.Sm,\n error = false,\n resize = ResizeBehavior.Vertical,\n rows = 3,\n className,\n containerClassName,\n disabled,\n ...props\n}) => {\n return (\n <Field className={cn(\"flex flex-col gap-1\", containerClassName)}>\n <HeadlessTextarea\n rows={rows}\n disabled={disabled}\n className={cn(\n \"w-full\",\n \"appearance-none\",\n \"border\",\n\n \"bg-content-bg-card-1\",\n \"border-content-border-secondary-primary\",\n \"text-content-text-primary\",\n \"placeholder:text-content-text-tertiary\",\n\n \"hover:border-content-border-secondary-secondary\",\n\n \"focus:outline-none\",\n \"focus:ring-2\",\n \"focus:ring-action-primary-primary\",\n \"focus:ring-offset-2\",\n \"focus:border-action-primary-primary\",\n\n \"disabled:opacity-50\",\n \"disabled:cursor-not-allowed\",\n \"disabled:bg-content-bg-muted\",\n\n error && \"border-semantic-destructive\",\n error && \"focus:ring-semantic-destructive\",\n\n sizeStyles[size],\n radiusStyles(radius),\n resizeStyles[resize],\n className\n )}\n {...props}\n />\n </Field>\n );\n};\n\nTextArea.displayName = \"TextArea\";\n","import type { FC, HTMLAttributes } from \"react\";\n\nimport { Text } from \"@/components/Text\";\nimport { IconColor, TextColor, TextVariant } from \"@/types\";\n\nexport interface TextBadgeProps extends HTMLAttributes<HTMLSpanElement> {\n color?: TextColor | IconColor;\n}\n\n/**\n * A simple badge-like component for displaying text in an opinionated way.\n *\n * This component is an alias for {@link Text} with {@link TextVariant.Label}.\n *\n * @example\n * ```tsx\n * <TextBadge color={TextColor.Success}>\n * completed\n * </TextBadge>\n * ```\n *\n * @param color Color of the content. See {@link Color}.\n * @param children Content wrapped by this component.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const TextBadge: FC<TextBadgeProps> = ({\n color = IconColor.Brand,\n children,\n ...props\n}) => (\n <Text color={color} variant={TextVariant.Label} {...props}>\n {children}\n </Text>\n);\n\nTextBadge.displayName = \"TextBadge\";\n","import clsx from \"clsx\";\nimport type { FC, HTMLAttributes, ReactNode } from \"react\";\n\nimport { IconWrapper } from \"@/components/Icons\";\nimport { Stack } from \"@/components/Stack\";\nimport { Text } from \"@/components/Text\";\nimport { ToastContainer } from \"@/components/ToastContainer\";\nimport radiusStyles from \"@/styles/radius\";\nimport shadowStyles from \"@/styles/shadow\";\nimport {\n Align,\n Anchor,\n BackgroundColor,\n bgColorClass,\n IconColor,\n IconName,\n Orientation,\n Radius,\n Shadow,\n Spacing,\n TextColor,\n textColorClass,\n Variant,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\ntype ToastVariant = Exclude<Variant, Variant.Borderless>;\n\nexport interface ToastProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"title\"\n> {\n action?: ReactNode;\n anchor?: Anchor;\n description?: ReactNode;\n icon?: FC | IconName;\n open?: boolean;\n title?: ReactNode;\n variant?: ToastVariant;\n}\n\nconst variantStyles: Record<ToastVariant, string> = {\n [Variant.Primary]: textColorClass(TextColor.Primary),\n [Variant.Secondary]: textColorClass(TextColor.Secondary),\n [Variant.Success]: textColorClass(IconColor.Success),\n [Variant.Danger]: textColorClass(IconColor.Destructive),\n [Variant.Icon]: textColorClass(TextColor.Primary),\n};\n\n/**\n * A toast component with opinionated slots for content.\n *\n * See also {@link ActivityToast}.\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const [open, setOpen] = useState<boolean>(true);\n *\n * return (\n * <Toast\n * open={open}\n * title=\"Message sent\"\n * description=\"You will be notified when the recipient opens your message\"\n * icon={IconName.Check}\n * action={\n * <Button onClick={() => setOpen(false)}>\n * Close\n * </Button>\n * }\n * variant={Variant.Success}\n * />\n * );\n * };\n * ```\n *\n * @param action Optional content to display in the \"action\" slot; this is typically something like a button/CTA.\n * @param anchor The location in the viewport to anchor the toast. See {@link Anchor}.\n * @param className `class` overrides to apply to the component.\n * @param description Optional content to display in the \"description\" slot; this should be considered secondary content.\n * @param icon An optional reference ({@link FC}) to an icon or an {@link IconName} to display in the \"icon\" slot.\n * @param open If `true`, the toast will be visible; otherwise it will be hidden.\n * @param title Optional content to display in the \"title\" slot; this should be considered the primary content.\n * @param variant The variant of the toast; this controls icon styling. See {@link Variant}.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const Toast: FC<ToastProps> = ({\n action,\n anchor = Anchor.Bottom,\n className,\n description,\n icon,\n open,\n title,\n variant = Variant.Primary,\n ...props\n}) => {\n const toastContent = (\n <Stack\n spacing={Spacing.Xl}\n className={cn(\n \"p-4\",\n radiusStyles(Radius.Md),\n bgColorClass(BackgroundColor.Card2),\n shadowStyles(Shadow.Md),\n className\n )}\n {...props}\n >\n <Stack orientation={Orientation.Column}>\n <Stack spacing={Spacing.Sm} align={Align.Center}>\n <IconWrapper\n content={icon}\n className={clsx(\"size-5\", variantStyles[variant])}\n />\n {title && <Text className=\"font-semibold\">{title}</Text>}\n </Stack>\n {description && <Text color={TextColor.Secondary}>{description}</Text>}\n </Stack>\n {action && <Stack align={Align.Center}>{action}</Stack>}\n </Stack>\n );\n\n return (\n <ToastContainer open={open} anchor={anchor}>\n {toastContent}\n </ToastContainer>\n );\n};\n","import { Field, Switch as HeadlessSwitch, Label } from \"@headlessui/react\";\nimport { ButtonHTMLAttributes, type FC } from \"react\";\n\nimport { UnsetHint } from \"@/components/UnsetHint\";\nimport radiusStyles from \"@/styles/radius\";\nimport { TEXT_STYLES } from \"@/styles/text\";\nimport {\n BackgroundColor,\n bgColorClass,\n BorderColor,\n borderColorClass,\n Radius,\n Size,\n TextColor,\n textColorClass,\n TextVariant,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\ntype ModifiedToggleProps = Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n \"size\" | \"onChange\" | \"checked\" | \"disabled\" | \"className\" | \"value\"\n>;\n\ntype ToggleSize = Extract<Size, Size.Sm | Size.Md>;\n\nexport interface ToggleProps extends ModifiedToggleProps {\n checked?: boolean;\n onChange?: (checked: boolean) => void;\n label?: string;\n disabled?: boolean;\n size?: ToggleSize;\n className?: string;\n labelClassName?: string;\n showUnsetHint?: boolean;\n}\n\nconst trackSizeStyles: Record<ToggleSize, string> = {\n [Size.Sm]: cn(\"w-8 h-4\"),\n [Size.Md]: cn(\"w-9 h-5\"),\n};\n\nconst thumbSizeStyles: Record<ToggleSize, string> = {\n [Size.Sm]: cn(\"w-3 h-3\"),\n [Size.Md]: cn(\"w-4 h-4\"),\n};\n\nconst textStyles: Record<ToggleSize, string> = {\n [Size.Sm]: TEXT_STYLES[TextVariant.Sm],\n [Size.Md]: TEXT_STYLES[TextVariant.Md],\n};\n\n/**\n * Gets the translate styles for the thumb based on the\n * size of the toggle. A-B-C syntax where:\n * A - The width of the track\n * B - The width of the thumb\n * C - padding/gaps on the side\n * @param size - The size of the toggle\n * @returns The translate styles for the thumb\n */\nconst getThumbTranslateStyles = (size: Size): string => {\n switch (size) {\n case Size.Sm:\n return \"group-data-checked:translate-x-[calc(2.3rem-1rem-0.28rem)]\";\n case Size.Md:\n return \"group-data-checked:translate-x-[calc(2.8rem-1.5rem-0.28rem)]\";\n default:\n return \"\";\n }\n};\n\n/**\n * A component supporting a boolean toggle.\n *\n * This component operates exclusively as a controlled component. See `value` and `onChange` for controlled behavior.\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const [enabled, setEnabled] = useState<boolean>(false);\n *\n * const onChange = useCallback((status: boolean) => setEnabled(status), [setEnabled]);\n *\n * return (\n * <Toggle\n * checked={enabled}\n * onChange={onChange}\n * label=\"Run with debug enabled\"\n * />\n * );\n * };\n * ```\n *\n * @param checked If `true`, renders the toggle in the \"active\" state.\n * @param disabled If `true`, disables the toggle.\n * @param onChange Callback triggered when the toggle value changes.\n * @param size Size of the toggle. See {@link Size}.\n * @param className `class` overrides to apply to the component.\n * @param labelClassName `class` overrides to apply to the toggle's label.\n * @param label Optional label for the toggle.\n * @param showUnsetHint If `true`, displays a hint to the user to initialize the toggle's value.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const Toggle: FC<ToggleProps> = ({\n checked,\n disabled = false,\n onChange,\n size = Size.Md,\n className,\n labelClassName,\n label,\n showUnsetHint,\n ...props\n}) => {\n return (\n <Field className=\"flex items-center gap-2\">\n <HeadlessSwitch\n checked={checked}\n onChange={onChange}\n disabled={disabled}\n className={cn(\n \"group\",\n \"relative\",\n \"inline-flex\",\n \"cursor-pointer\",\n \"items-center\",\n bgColorClass(BackgroundColor.CardElevated),\n \"border\",\n borderColorClass(BorderColor.Default),\n \"transition-colors\",\n // when hovered\n \"hover:bg-[#999999]\", // TODO - current scheme doesn't have a light grey\n \"focus:outline-none\",\n \"focus:ring-0\",\n \"focus-visible:outline-none\",\n \"focus-visible:ring-0\",\n // when disabled\n \"disabled:opacity-50\",\n \"disabled:cursor-not-allowed\",\n // when checked\n \"data-checked:bg-action-primary-primary\",\n \"data-checked:border-action-primary-primary\",\n trackSizeStyles[size],\n radiusStyles(Radius.Full), // intentionally require Full radius\n className\n )}\n {...props}\n >\n <span\n className={cn(\n \"pointer-events-none\",\n // center the thumb vertically\n \"absolute\",\n \"top-1/2\",\n \"-translate-y-1/2\",\n \"inline-block\",\n \"rounded-full\",\n \"bg-content-bg-card-1\",\n \"group-data-checked:bg-white\",\n \"shadow-sm\",\n \"ring-0\", // show focus on outside of track\n \"transition-transform\",\n \"translate-x-0.5\",\n thumbSizeStyles[size],\n getThumbTranslateStyles(size)\n )}\n />\n </HeadlessSwitch>\n {label && (\n <Label\n className={cn(\n textColorClass(TextColor.Muted),\n textStyles[size],\n \"cursor-pointer\",\n labelClassName\n )}\n >\n {label}\n </Label>\n )}\n {showUnsetHint && (\n <UnsetHint value={checked} hint={\"Click the toggle to set a value\"} />\n )}\n </Field>\n );\n};\n\nToggle.displayName = \"Toggle\";\n","import clsx from \"clsx\";\nimport {\n type CSSProperties,\n type FC,\n type HTMLAttributes,\n type ReactNode,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport radiusStyles from \"@/styles/radius\";\nimport shadowStyles from \"@/styles/shadow\";\nimport {\n Anchor,\n BackgroundColor,\n bgColorClass,\n BorderColor,\n borderColorClass,\n Radius,\n Shadow,\n TextColor,\n textColorClass,\n ZIndex,\n zIndexStyles,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport type TooltipAnchor = Extract<\n Anchor,\n Anchor.Top | Anchor.Right | Anchor.Bottom | Anchor.Left\n>;\n\nexport interface TooltipProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"content\"\n> {\n anchor?: TooltipAnchor;\n content: ReactNode;\n portal?: boolean;\n shadow?: Shadow;\n wrapperClassName?: string;\n}\n\nconst panelPositionStyles: Record<TooltipAnchor, string> = {\n [Anchor.Top]: \"bottom-full left-1/2 -translate-x-1/2 -translate-y-2\",\n [Anchor.Right]: \"left-full top-1/2 -translate-y-1/2 translate-x-4\",\n [Anchor.Bottom]: \"top-full left-1/2 -translate-x-1/2 translate-y-2\",\n [Anchor.Left]: \"right-full top-1/2 -translate-y-1/2 -translate-x-4\",\n};\n\nconst rotatedSquareStyles: Record<TooltipAnchor, string> = {\n [Anchor.Top]: \"bottom-0 left-1/2 -translate-x-1/2 translate-y-1/2\",\n [Anchor.Right]: \"left-0 top-1/2 -translate-x-1/2 -translate-y-1/2\",\n [Anchor.Bottom]: \"top-0 left-1/2 -translate-x-1/2 -translate-y-1/2\",\n [Anchor.Left]: \"right-0 top-1/2 translate-x-1/2 -translate-y-1/2\",\n};\n\nconst PORTAL_GAP = 8;\n\nfunction getPortalPosition(\n rect: DOMRect,\n anchor: TooltipAnchor\n): CSSProperties {\n switch (anchor) {\n case Anchor.Top:\n return {\n left: rect.left + rect.width / 2,\n top: rect.top - PORTAL_GAP,\n transform: \"translate(-50%, -100%)\",\n };\n case Anchor.Bottom:\n return {\n left: rect.left + rect.width / 2,\n top: rect.bottom + PORTAL_GAP,\n transform: \"translateX(-50%)\",\n };\n case Anchor.Right:\n return {\n left: rect.right + PORTAL_GAP * 2,\n top: rect.top + rect.height / 2,\n transform: \"translateY(-50%)\",\n };\n case Anchor.Left:\n return {\n left: rect.left - PORTAL_GAP * 2,\n top: rect.top + rect.height / 2,\n transform: \"translate(-100%, -50%)\",\n };\n }\n}\n\nconst rotatedSquareBorderStyles: Record<TooltipAnchor, string> = {\n [Anchor.Top]: \"border-b border-r\",\n [Anchor.Bottom]: \"border-t border-l\",\n [Anchor.Right]: \"border-b border-l\",\n [Anchor.Left]: \"border-t border-r\",\n};\n\nconst RotatedSquare: FC<{ anchor: TooltipAnchor; borderClass: string }> = ({\n anchor,\n borderClass,\n}) => {\n return (\n <div\n className={clsx(\n \"absolute\",\n \"w-2 h-2\",\n \"rotate-45\",\n \"bg-inherit\",\n rotatedSquareBorderStyles[anchor],\n borderClass,\n rotatedSquareStyles[anchor]\n )}\n />\n );\n};\n\n/**\n * A tooltip which appears when hovering over the wrapped content.\n *\n * @example\n * ```tsx\n * <Tooltip content={<Text>Tooltip content goes here</Text>}>\n * <Text>Hover this text to see the tooltip</Text>\n * </Tooltip>\n * ```\n *\n * @param anchor Position to anchor the tooltip relative to its content. See {@link Anchor}.\n * @param content The content of the tooltip.\n * @param children The content which this component wraps; this acts as the element anchor and the hover trigger.\n * @param className `class` overrides to apply to the tooltip panel.\n * @param portal If `true`, renders the tooltip via a React portal so it escapes overflow-hidden ancestors.\n * @param shadow The shadow to apply to the tooltip. See {@link Shadow}.\n * @param wrapperClassName Additional classes to apply to the outer wrapper element.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const Tooltip: FC<TooltipProps> = ({\n anchor = Anchor.Top,\n content,\n children,\n className,\n portal = false,\n shadow = Shadow.Lg,\n wrapperClassName,\n ...props\n}) => {\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const [portalStyle, setPortalStyle] = useState<CSSProperties>({});\n\n const handleMouseEnter = useCallback(() => {\n if (portal && wrapperRef.current) {\n const rect = wrapperRef.current.getBoundingClientRect();\n setPortalStyle(getPortalPosition(rect, anchor));\n }\n setIsOpen(true);\n }, [portal, anchor]);\n\n const handleMouseLeave = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n // Dismisses the tooltip when scrolling is detected\n useEffect(() => {\n if (!isOpen || !portal) return;\n const handleScroll = (): void => setIsOpen(false);\n window.addEventListener(\"scroll\", handleScroll, {\n passive: true,\n capture: true,\n });\n return () =>\n window.removeEventListener(\"scroll\", handleScroll, { capture: true });\n }, [isOpen, portal]);\n\n const borderClass = borderColorClass(BorderColor.Subtle);\n\n const panelClasses = cn(\n \"w-max\",\n \"py-0.75 px-2.5\",\n \"border\",\n borderClass,\n \"!overflow-visible\",\n bgColorClass(BackgroundColor.Card2),\n textColorClass(TextColor.Primary),\n radiusStyles(Radius.Sm),\n shadowStyles(shadow),\n className\n );\n\n const tooltipPanel = portal ? (\n <div\n className={cn(\"fixed\", zIndexStyles(ZIndex.AboveModal), panelClasses)}\n style={portalStyle}\n >\n <div className=\"max-w-[500px] break-words\">{content}</div>\n <RotatedSquare anchor={anchor} borderClass={borderClass} />\n </div>\n ) : (\n <div className={cn(\"absolute\", panelPositionStyles[anchor], panelClasses)}>\n <div className=\"max-w-[500px] break-words\">{content}</div>\n <RotatedSquare anchor={anchor} borderClass={borderClass} />\n </div>\n );\n\n return (\n <div\n {...props}\n ref={wrapperRef}\n className={cn(\"relative\", wrapperClassName)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {children}\n {isOpen &&\n (portal ? createPortal(tooltipPanel, document.body) : tooltipPanel)}\n </div>\n );\n};\n\nTooltip.displayName = \"Tooltip\";\n","import { Tab, TabGroup, TabList, TabPanel, TabPanels } from \"@headlessui/react\";\nimport clsx from \"clsx\";\nimport type { FC, HTMLAttributes, ReactNode } from \"react\";\n\nimport { Tooltip } from \"@/components/Tooltip\";\nimport { textStyles } from \"@/styles/text\";\nimport {\n BackgroundColor,\n bgColorClass,\n BorderColor,\n borderColorClass,\n BrandColor,\n Descriptor,\n ElementState,\n Size,\n TextColor,\n textColorClass,\n TextVariant,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport interface ToggleSwitchTab {\n label: ReactNode;\n content: ReactNode;\n disabled?: boolean;\n tooltip?: ReactNode;\n}\n\nexport enum ToggleSwitchVariant {\n Default = \"default\",\n Soft = \"soft\",\n Full = \"full\",\n Borderless = \"borderless\",\n}\n\nexport type ToggleSwitchSize = Exclude<Size, Size.Lg | Size.Xl>;\n\nexport interface ToggleSwitchProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"children\" | \"onChange\"\n> {\n variant?: ToggleSwitchVariant;\n tabs: Descriptor<ToggleSwitchTab>[];\n defaultIndex?: number;\n index?: number;\n onChange?: (index: number) => void;\n size?: ToggleSwitchSize;\n tabListClassName?: string;\n tabPanelClassName?: string;\n fullWidth?: boolean;\n}\n\nconst tabSizeStyles: Record<ToggleSwitchSize, string> = {\n [Size.Xs]: clsx(textStyles(TextVariant.Xs), \"min-w-5 min-h-5\"),\n [Size.Sm]: clsx(textStyles(TextVariant.Sm), \"min-w-6 min-h-6\"),\n [Size.Md]: clsx(textStyles(TextVariant.Md), \"min-w-7 min-h-7\"),\n};\n\nconst softSizeStyles: Record<ToggleSwitchSize, string> = {\n [Size.Xs]: clsx(\"min-w-5 min-h-5\"),\n [Size.Sm]: clsx(\"min-w-6 min-h-6\"),\n [Size.Md]: clsx(\"min-w-7 min-h-7\"),\n};\n\nconst tabPaddingStyles: Record<ToggleSwitchSize, string> = {\n [Size.Xs]: clsx(\"py-1 px-3\"),\n [Size.Sm]: clsx(\"py-1.5 px-3.75\"),\n [Size.Md]: clsx(\"py-2 px-4\"),\n};\n\nconst tabVariantStyles: Record<ToggleSwitchVariant, string> = {\n [ToggleSwitchVariant.Soft]: clsx(\n \"m-1\",\n \"py-1 px-1.5\",\n \"rounded-sm\",\n textColorClass(BrandColor.Accent, ElementState.Selected)\n ),\n [ToggleSwitchVariant.Default]: clsx(),\n [ToggleSwitchVariant.Full]: clsx(\n textColorClass(TextColor.Primary, ElementState.Selected)\n ),\n [ToggleSwitchVariant.Borderless]: clsx(\n \"bg-transparent\",\n \"hover:bg-transparent\",\n \"data-[selected]:bg-transparent\",\n textColorClass(TextColor.Primary, ElementState.Selected),\n \"data-[selected]:border-b-2\"\n ),\n};\n\nconst getTabBorderRadius = (\n variant: ToggleSwitchVariant,\n isFirst: boolean,\n isLast: boolean\n): string => {\n if (\n variant === ToggleSwitchVariant.Soft ||\n variant === ToggleSwitchVariant.Borderless\n )\n return \"\";\n if (isFirst && isLast) return \"rounded-md\";\n if (isFirst) return \"rounded-l-md\";\n if (isLast) return \"rounded-r-md\";\n return \"\";\n};\n\nconst getTabStyles = (\n variant: ToggleSwitchVariant,\n size: ToggleSwitchSize\n): string => {\n const classNames = [tabVariantStyles[variant], tabSizeStyles[size]];\n\n if (variant !== ToggleSwitchVariant.Soft) {\n classNames.push(tabPaddingStyles[size]);\n } else {\n classNames.push(softSizeStyles[size]);\n }\n\n return clsx(...classNames);\n};\n\nconst getTabListBorderStyles = (variant: ToggleSwitchVariant): string[] => {\n if (variant === ToggleSwitchVariant.Borderless) return [];\n if (variant === ToggleSwitchVariant.Soft) return [];\n return [\"border\", borderColorClass(BorderColor.CardElevated)];\n};\n\nconst getTabTextColorClass = (selected: boolean): string => {\n if (selected) return textColorClass(TextColor.Primary, ElementState.Selected);\n return cn(\n // TODO - this is a hack. But it might be the least bad option.\n // override global FO css that targets <button>; secondary only when not hovered\n \"!text-content-text-secondary hover:!text-content-text-primary\"\n );\n};\n\n/**\n * A component which supports rendering a tabbed content container.\n *\n * This component enforces mutual exclusivity in active tabs, and only the content for the active tab is visible.\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const tabs: Descriptor<ToggleSwitchTab>[] = useMemo(() => [\n * {id: \"1\", data: {label: \"Tab 1\", content: \"Tab 1 content\"}}\n * {id: \"2\", data: {label: \"Tab 2\", content: \"Tab 2 content\"}}\n * {id: \"3\", data: {label: \"Tab 3\", content: \"Tab 3 content\"}}\n * ],\n * []\n * );\n *\n * return (\n * <ToggleSwitch\n * tabs={tabs}\n * defaultIndex={0}\n * onChange={(activeIndex: number) => console.log(`Switched to tab index ${activeIndex}`)}\n * />\n * );\n * };\n * ```\n *\n * @param tabs List of component descriptors which will be used to create {@link ToggleSwitchTab} children.\n * Each tab supports optional `disabled` and `tooltip` fields. See {@link ToggleSwitchTab}.\n * @param variant Variant of the tabs.\n * The variants have the following behaviors:\n * - {@link ToggleSwitchVariant.Default} - tabs are bordered and have visible boundaries;\n * the active tab has a distinct background from inactive tabs.\n * - {@link ToggleSwitchVariant.Soft} - tabs are not bordered;\n * the active tab has a distinct background and is highlighted in an accent color.\n * - {@link ToggleSwitchVariant.Full} - similar to {@link ToggleSwitchVariant.Default} and expands to fill\n * its container.\n * - {@link ToggleSwitchVariant.Borderless} - tabs are not bordered; the active tab has a bottom border.\n * See {@link ToggleSwitchVariant}.\n * @param defaultIndex The index of the tab which should be considered active when the component first renders (uncontrolled).\n * @param index The active tab index for controlled usage; when set it drives the active tab and overrides `defaultIndex`.\n * @param onChange Callback triggered when the active tab changes.\n * @param size Size of the tabs; this controls the text size and padding. See {@link Size}.\n * @param fullWidth If `true`, the tab group will fill the width of their container.\n * @param tabListClassName `class` overrides to apply to the tabs.\n * @param tabPanelClassName `class` overrides to apply to the active content container.\n * @param props Additional HTML properties to apply to the tab group.\n */\nexport const ToggleSwitch: FC<ToggleSwitchProps> = ({\n tabs,\n variant = ToggleSwitchVariant.Default,\n defaultIndex = 0,\n index,\n onChange,\n size = Size.Sm,\n fullWidth,\n tabListClassName,\n tabPanelClassName,\n ...props\n}) => {\n return (\n <TabGroup\n // `index` (controlled) wins when provided; otherwise fall back to\n // `defaultIndex` (uncontrolled). Headless UI ignores `selectedIndex` when\n // it is `undefined`, so passing both keeps the existing default behavior.\n selectedIndex={index}\n defaultIndex={defaultIndex}\n onChange={onChange}\n {...props}\n >\n <TabList\n className={cn(\n \"toggle-switch-tab-list\",\n \"flex flex-nowrap items-center\",\n \"rounded-md\",\n fullWidth ? \"w-full\" : \"w-fit\",\n ...getTabListBorderStyles(variant),\n tabListClassName\n )}\n >\n {tabs.map(({ id, data }, index) => {\n const isFirst = index === 0;\n const isLast = index === tabs.length - 1;\n const tabClassName = ({ selected }: { selected: boolean }): string =>\n cn(\n \"cursor-pointer\",\n \"flex-1\",\n \"flex items-center justify-center\",\n \"whitespace-nowrap\",\n \"font-medium\",\n \"outline-none\",\n \"transition-colors\",\n \"bg-transparent\",\n bgColorClass(BackgroundColor.CardElevated, ElementState.Selected),\n getTabTextColorClass(selected),\n data.disabled && \"hover:!text-content-text-secondary\",\n \"data-[focus]:outline-none\",\n \"data-[disabled]:opacity-50\",\n \"data-[disabled]:cursor-not-allowed\",\n getTabBorderRadius(variant, isFirst, isLast),\n getTabStyles(variant, size)\n );\n\n const tab = (\n <Tab disabled={data.disabled} className={tabClassName}>\n {data.label}\n </Tab>\n );\n\n return data.tooltip ? (\n <Tooltip\n key={id}\n content={data.tooltip}\n wrapperClassName=\"flex-1 flex\"\n portal\n >\n {tab}\n </Tooltip>\n ) : (\n <div key={id} className=\"flex-1 flex\">\n {tab}\n </div>\n );\n })}\n </TabList>\n <TabPanels className={cn(tabPanelClassName)}>\n {tabs.map(({ id, data }) => (\n <TabPanel key={id} className={cn(\"focus:outline-none\")}>\n {data.content}\n </TabPanel>\n ))}\n </TabPanels>\n </TabGroup>\n );\n};\n\nToggleSwitch.displayName = \"ToggleSwitch\";\n","/**\n * Copyright 2017-2026, Voxel51, Inc.\n */\n\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\n\nconst clamp = (\n lock: boolean,\n pos: number,\n delta: number,\n max: number\n): number => (lock ? pos : Math.max(0, Math.min(max, pos + delta)));\n\nexport interface UseDraggableOptions {\n /** Initial offset from the left edge of the bounding container. Accepts any CSS length (e.g. `0`, `\"10%\"`, `\"2rem\"`). Default `0`. */\n initialX?: string | number;\n /** Initial offset from the top edge of the bounding container. Accepts any CSS length (e.g. `0`, `\"10%\"`, `\"2rem\"`). Default `0`. */\n initialY?: string | number;\n /** Lock horizontal (x-axis) movement. Default `false`. */\n lockX?: boolean;\n /** Lock vertical (y-axis) movement. Default `false`. */\n lockY?: boolean;\n /**\n * When `true`, bounds are computed against the viewport (`window.innerWidth` /\n * `window.innerHeight`) instead of the element's parent. Use together with\n * `position: fixed`. Default `false`.\n */\n portal?: boolean;\n /**\n * Called after every drag move with the new pixel position.\n * Always delivers pixel values regardless of what type `initialX`/`initialY` were.\n */\n onPositionChange?: (pos: { x: number; y: number }) => void;\n}\n\nexport interface UseDraggableReturn {\n /** Current `{ x, y }` position. Before the first drag this reflects the initial CSS value; after the first drag it is always a pixel number. */\n position: { x: string | number; y: string | number };\n /** `true` while the user is actively dragging. */\n isDragging: boolean;\n /** Attach to the element that should be repositioned. */\n containerRef: React.RefObject<HTMLElement | null>;\n /**\n * `onMouseDown` handler for the drag-handle element.\n * Only has an effect when both `lockX` and `lockY` are not both `true`.\n */\n handleDragStart: (e: React.MouseEvent) => void;\n}\n\n/**\n * Hook that provides drag-to-reposition behaviour for a floating element.\n *\n * The hook tracks mouse interactions and keeps the element within the bounds of\n * either its nearest parent element or the viewport (when `portal` is `true`).\n *\n * @example\n * ```tsx\n * const { position, isDragging, containerRef, handleDragStart } = useDraggable({\n * initialX: 20,\n * initialY: 100,\n * });\n *\n * return (\n * <div\n * ref={containerRef}\n * data-dragging={isDragging || undefined}\n * style={{ position: \"absolute\", left: position.x, top: position.y }}\n * >\n * <button onMouseDown={handleDragStart}>drag me</button>\n * </div>\n * );\n * ```\n */\nexport const useDraggable = ({\n initialX = 0,\n initialY = 0,\n lockX = false,\n lockY = false,\n portal = false,\n onPositionChange,\n}: UseDraggableOptions = {}): UseDraggableReturn => {\n const canDrag = !(lockX && lockY);\n\n const [position, setPosition] = useState<{\n x: string | number;\n y: string | number;\n }>({ x: initialX, y: initialY });\n const [isDragging, setIsDragging] = useState(false);\n\n const containerRef = useRef<HTMLElement | null>(null);\n const dragStartRef = useRef<{\n clientX: number;\n clientY: number;\n pos: { x: number; y: number };\n }>({\n clientX: 0,\n clientY: 0,\n pos: { x: 0, y: 0 },\n });\n // Mutable mirror of position so handleDragStart can read the current numeric\n // position without being listed as a useCallback dependency.\n const positionRef = useRef<{ x: string | number; y: string | number }>({\n x: initialX,\n y: initialY,\n });\n\n const handleDragStart = useCallback(\n (e: React.MouseEvent) => {\n if (!canDrag) return;\n e.preventDefault();\n e.stopPropagation();\n setIsDragging(true);\n const el = containerRef.current;\n const cur = positionRef.current;\n // For numeric positions use the tracked value (avoids jsdom offsetLeft=0).\n // For CSS string positions (e.g. \"4rem\", \"22%\") read offsetLeft/offsetTop\n // so the browser-resolved pixel value is used as the drag origin.\n dragStartRef.current = {\n clientX: e.clientX,\n clientY: e.clientY,\n pos: {\n x: typeof cur.x === \"number\" ? cur.x : (el?.offsetLeft ?? 0),\n y: typeof cur.y === \"number\" ? cur.y : (el?.offsetTop ?? 0),\n },\n };\n },\n [canDrag]\n );\n\n const handleMouseMove = useCallback(\n (e: MouseEvent) => {\n const el = containerRef.current;\n const fallback = {\n clientWidth: window.innerWidth,\n clientHeight: window.innerHeight,\n };\n const parent = portal ? fallback : (el?.parentElement ?? fallback);\n\n const toolbarW = el?.offsetWidth ?? 0;\n const toolbarH = el?.offsetHeight ?? 0;\n const { clientX, clientY, pos } = dragStartRef.current;\n\n const nextX = clamp(\n lockX,\n pos.x,\n e.clientX - clientX,\n parent.clientWidth - toolbarW\n );\n const nextY = clamp(\n lockY,\n pos.y,\n e.clientY - clientY,\n parent.clientHeight - toolbarH\n );\n\n positionRef.current = { x: nextX, y: nextY };\n setPosition({ x: nextX, y: nextY });\n onPositionChange?.({ x: nextX, y: nextY });\n },\n [lockX, lockY, portal, onPositionChange]\n );\n\n useEffect(() => {\n if (!isDragging) return;\n const handleMouseUp = (): void => setIsDragging(false);\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n return () => {\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n };\n }, [isDragging, handleMouseMove]);\n\n return { position, isDragging, containerRef, handleDragStart };\n};\n","import { createContext, useContext } from \"react\";\n\nimport { Orientation } from \"@/types\";\n\nexport const OrientationContext = createContext<Orientation>(\n Orientation.Column\n);\n\nexport const useOrientationContext = (): Orientation =>\n useContext(OrientationContext);\n","// Copyright 2017-2026, Voxel51, Inc.\n\nimport {\n useCallback,\n useState,\n CSSProperties,\n HTMLAttributes,\n JSX,\n RefObject,\n ReactNode,\n} from \"react\";\n\nimport { DragHandleIcon } from \"@/components/Icons\";\nimport { Stack } from \"@/components/Stack\";\nimport radiusStyles from \"@/styles/radius\";\nimport shadowStyles from \"@/styles/shadow\";\nimport {\n Align,\n BackgroundColor,\n BorderColor,\n borderColorClass,\n ElementState,\n getColorCssVar,\n IconColor,\n Orientation,\n Radius,\n Spacing,\n Shadow,\n textColorClass,\n ZIndex,\n zIndexStyles,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\nimport { useDraggable } from \"@/util/useDraggable\";\n\nimport { OrientationContext } from \"./context\";\n\nexport interface ToolbarProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"children\"\n> {\n children: ReactNode;\n /** Layout direction for groups and actions. Default `Orientation.Column`. */\n orientation?: Orientation;\n /** Lock horizontal (x-axis) movement. Default `false`. */\n lockX?: boolean;\n /** Lock vertical (y-axis) movement. Default `false`. */\n lockY?: boolean;\n /** Initial offset from the left edge of the parent container. Accepts any CSS length (e.g. `20`, `\"10%\"`, `\"2rem\"`). Default `20`. */\n xOffset?: string | number;\n /** Initial offset from the top edge of the parent container. Accepts any CSS length (e.g. `20`, `\"10%\"`, `\"2rem\"`). Default `20`. */\n yOffset?: string | number;\n /** Stacking layer for the toolbar. Default `ZIndex.AboveModal`. */\n zIndex?: ZIndex;\n /** Whether the toolbar is rendered. Default `true`. */\n visible?: boolean;\n /**\n * Called after every drag move with the new pixel position.\n * Use this to persist the toolbar's position across remounts.\n */\n onPositionChange?: (pos: { x: number; y: number }) => void;\n}\n\nconst DEFAULT_X_OFFSET = 20;\nconst DEFAULT_Y_OFFSET = 20;\n\n/**\n * A generic floating, draggable toolbar.\n *\n * Completely abstract — knows nothing about segmentation, 3D, or any specific\n * domain. Compose it with `ToolbarGroup` and `ToolbarAction` to build any\n * tool palette.\n *\n * Double-clicking the drag handle collapses the toolbar to just the handle.\n *\n * @param props.children - Tool groups and actions to render inside the toolbar.\n * @param props.orientation - Layout direction for groups and actions. Default `Orientation.Column`.\n * @param props.lockX - Lock horizontal (x-axis) movement. Default `false`.\n * @param props.lockY - Lock vertical (y-axis) movement. Default `false`.\n * @param props.xOffset - Initial offset from the left edge of the parent container. Accepts any CSS length (e.g. `20`, `\"10%\"`, `\"2rem\"`). Default `20`.\n * @param props.yOffset - Initial offset from the top edge of the parent container. Accepts any CSS length (e.g. `20`, `\"10%\"`, `\"2rem\"`). Default `20`.\n * @param props.zIndex - Stacking layer for the toolbar. Default `ZIndex.AboveModal`.\n * @param props.visible - Whether the toolbar is rendered. Default `true`.\n * @param props.onPositionChange - Called after every drag move with the new pixel position.\n * @param props - Any additional `HTMLDivElement` attributes (e.g. `data-testid`, `aria-label`) are\n * forwarded to the root `div`. Internal `onPointerDown`, `onClick`, and `onKeyDown` handlers that\n * call `stopPropagation` are merged with any consumer-provided handlers.\n *\n * @example\n * ```tsx\n * <Toolbar orientation={Orientation.Column} xOffset={20} yOffset={100}>\n * <ToolbarGroup label=\"Tool\">\n * <ToolbarAction active>\n * <BrushIcon />\n * </ToolbarAction>\n * </ToolbarGroup>\n * </Toolbar>\n * ```\n */\nexport const Toolbar = ({\n children,\n orientation = Orientation.Column,\n lockX = false,\n lockY = false,\n xOffset = DEFAULT_X_OFFSET,\n yOffset = DEFAULT_Y_OFFSET,\n zIndex = ZIndex.AboveModal,\n className,\n style,\n visible = true,\n onPointerDown,\n onClick,\n onKeyDown,\n onPositionChange,\n ...props\n}: ToolbarProps): JSX.Element | null => {\n const canDrag = !(lockX && lockY);\n\n const { position, isDragging, containerRef, handleDragStart } = useDraggable({\n initialX: xOffset,\n initialY: yOffset,\n lockX,\n lockY,\n onPositionChange,\n });\n\n const [isCollapsed, setIsCollapsed] = useState(false);\n const [collapsedSize, setCollapsedSize] = useState<number | null>(null);\n\n const handleDragHandleDoubleClick = useCallback(() => {\n setIsCollapsed((prev) => {\n if (!prev) {\n const el = containerRef.current;\n setCollapsedSize(\n orientation === Orientation.Column\n ? (el?.offsetWidth ?? null)\n : (el?.offsetHeight ?? null)\n );\n } else {\n setCollapsedSize(null);\n }\n return !prev;\n });\n }, [containerRef, orientation]);\n\n if (!visible) return null;\n\n const dragHandleClass = cn(\n \"flex items-center justify-center\",\n \"cursor-grab group-data-dragging:cursor-grabbing\",\n textColorClass(IconColor.Emphasis),\n radiusStyles(Radius.Md),\n orientation === Orientation.Column\n ? \"self-stretch py-2 px-1 [&_svg]:rotate-90\"\n : \"self-stretch px-2 py-1.5\",\n !isCollapsed && orientation === Orientation.Column && \"pb-0\",\n !isCollapsed && orientation === Orientation.Row && \"pr-0\"\n );\n\n const containerClass = cn(\n \"group absolute flex select-none\",\n orientation === Orientation.Column ? \"flex-col\" : \"flex-row\",\n zIndexStyles(zIndex),\n \"border\",\n borderColorClass(BorderColor.Strong),\n radiusStyles(Radius.Md),\n \"backdrop-blur-sm\",\n shadowStyles(Shadow.Md),\n shadowStyles(Shadow.Xl, ElementState.Dragging),\n \"transition-[opacity,box-shadow] data-dragging:transition-none\",\n className\n );\n\n const containerStyle: CSSProperties = {\n left: position.x,\n top: position.y,\n backgroundColor: `color-mix(in srgb, var(${getColorCssVar(BackgroundColor.Card2)}) 85%, transparent)`,\n ...(isCollapsed && collapsedSize !== null\n ? orientation === Orientation.Column\n ? { width: collapsedSize }\n : { height: collapsedSize }\n : {}),\n ...style,\n };\n\n const toolbar = (\n <OrientationContext.Provider value={orientation}>\n <div\n ref={containerRef as RefObject<HTMLDivElement>}\n role=\"toolbar\"\n aria-orientation={\n orientation === Orientation.Column ? \"vertical\" : \"horizontal\"\n }\n data-dragging={isDragging || undefined}\n className={containerClass}\n style={containerStyle}\n onPointerDown={(e) => {\n e.stopPropagation();\n onPointerDown?.(e);\n }}\n onClick={(e) => {\n e.stopPropagation();\n onClick?.(e);\n }}\n onKeyDown={(e) => {\n e.stopPropagation();\n onKeyDown?.(e);\n }}\n {...props}\n >\n {canDrag && (\n <div\n role=\"button\"\n tabIndex={0}\n aria-label=\"Drag to reposition toolbar\"\n onMouseDown={handleDragStart}\n onDoubleClick={handleDragHandleDoubleClick}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n handleDragHandleDoubleClick();\n }\n }}\n className={dragHandleClass}\n >\n <DragHandleIcon />\n </div>\n )}\n {!isCollapsed && (\n <Stack\n orientation={orientation}\n align={Align.Center}\n spacing={Spacing.Xs}\n className=\"p-1.5\"\n >\n {children}\n </Stack>\n )}\n </div>\n </OrientationContext.Provider>\n );\n\n return toolbar;\n};\n\nToolbar.displayName = \"Toolbar\";\n","/**\n * Copyright 2017-2026, Voxel51, Inc.\n *\n * A single clickable icon-button within a `Toolbar`.\n */\n\nimport { Button } from \"@headlessui/react\";\nimport {\n CSSProperties,\n ComponentPropsWithoutRef,\n forwardRef,\n ReactNode,\n MouseEvent,\n} from \"react\";\n\nimport radiusStyles from \"@/styles/radius\";\nimport {\n ActionColor,\n bgColorClass,\n BorderColor,\n ElementState,\n getColorCssVar,\n IconColor,\n Radius,\n textColorClass,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport interface ToolbarActionProps extends Omit<\n ComponentPropsWithoutRef<\"button\">,\n \"onClick\"\n> {\n children: ReactNode;\n active?: boolean;\n disabled?: boolean;\n onClick?: (e: MouseEvent) => void;\n}\n\nconst toolbarActionClass = (\n isInteractive: boolean,\n className?: string\n): string =>\n cn(\n \"size-10 flex items-center justify-center transition-all\",\n radiusStyles(Radius.Md),\n isInteractive &&\n bgColorClass(ActionColor.SecondaryHover, ElementState.Hover),\n \"data-[disabled]:opacity-50\",\n \"data-[disabled]:cursor-not-allowed\",\n \"outline-none\",\n \"data-[focus]:ring-2\",\n `data-[focus]:ring-[var(${getColorCssVar(BorderColor.Focus)})]`,\n \"data-[focus]:ring-offset-1\",\n className\n );\n\nconst iconClass = (active: boolean, isInteractive: boolean): string =>\n cn(\n \"size-full flex items-center justify-center\",\n active\n ? textColorClass(IconColor.BrandAccent)\n : textColorClass(IconColor.Default),\n isInteractive && textColorClass(IconColor.Emphasis, ElementState.Hover)\n );\n\n/**\n * A single clickable icon-button within a `Toolbar`.\n *\n * @param active Whether the action is currently active/selected.\n * @param disabled Whether the action is disabled.\n * @param title Native title attribute for a basic tooltip. Callers can wrap with any tooltip component they prefer.\n * @param aria-label Accessible label for screen readers. Prefer this over `title` for a11y.\n * @param className Optional additional classes to apply to the button.\n * @param onClick Click handler.\n * @param children Icon content rendered inside the button.\n *\n * @example\n * ```tsx\n * <ToolbarAction active={tool === \"brush\"} onClick={() => setTool(\"brush\")} aria-label=\"Brush\">\n * <BrushIcon />\n * </ToolbarAction>\n * ```\n */\nexport const ToolbarAction = forwardRef<HTMLButtonElement, ToolbarActionProps>(\n (\n {\n children,\n active = false,\n disabled = false,\n className,\n onClick,\n style,\n ...rest\n },\n ref\n ) => {\n const isInteractive = !disabled && !active;\n\n const activeStyle: CSSProperties | undefined = active\n ? {\n backgroundColor: `color-mix(in srgb, var(${getColorCssVar(IconColor.BrandAccent)}) 20%, transparent)`,\n }\n : undefined;\n\n return (\n <Button\n ref={ref}\n disabled={disabled}\n aria-pressed={active}\n onClick={onClick}\n className={toolbarActionClass(isInteractive, className)}\n style={{ ...activeStyle, ...style }}\n {...rest}\n >\n <div className={iconClass(active, isInteractive)}>{children}</div>\n </Button>\n );\n }\n);\n\nToolbarAction.displayName = \"ToolbarAction\";\n","/**\n * Copyright 2017-2026, Voxel51, Inc.\n *\n * A group of `ToolbarAction` items within a `Toolbar`.\n */\n\nimport { HTMLAttributes, JSX, ReactNode } from \"react\";\n\nimport { Stack } from \"@/components/Stack\";\nimport {\n Align,\n BorderColor,\n borderColorClass,\n Orientation,\n Spacing,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nimport { useOrientationContext } from \"./context\";\n\nexport interface ToolbarGroupProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"children\"\n> {\n children: ReactNode;\n}\n\n/**\n * A group of `ToolbarAction` items within a `Toolbar`.\n *\n * Reads orientation from `OrientationContext` — no need to pass it explicitly.\n * A divider is automatically rendered after each group; the last group's divider is hidden.\n *\n * @param children `ToolbarAction` items to render within the group.\n * @param props Additional `HTMLDivElement` attributes (e.g. `data-testid`, `aria-label`) forwarded to the root element.\n *\n * @example\n * ```tsx\n * <ToolbarGroup aria-label=\"Draw\">\n * <ToolbarAction active={tool === \"brush\"} onClick={() => setTool(\"brush\")}>\n * <BrushIcon />\n * </ToolbarAction>\n * </ToolbarGroup>\n * ```\n */\nexport const ToolbarGroup = ({\n children,\n className,\n ...props\n}: ToolbarGroupProps): JSX.Element => {\n const orientation = useOrientationContext();\n\n return (\n <div\n className={cn(\n `group/toolbar-group flex gap-${Spacing.Xs}`,\n orientation === Orientation.Column\n ? \"w-full flex-col\"\n : \"h-full flex-row\"\n )}\n >\n <Stack\n role=\"group\"\n orientation={orientation}\n align={Align.Center}\n spacing={Spacing.Xs}\n className={cn(\n orientation !== Orientation.Column && \"self-stretch\",\n className\n )}\n {...props}\n >\n {children}\n </Stack>\n <div\n role=\"separator\"\n className={cn(\n orientation === Orientation.Column\n ? \"w-full my-0.5 border-t-1\"\n : \"h-full mx-0.5 border-l-1\",\n borderColorClass(BorderColor.Strong),\n \"group-last/toolbar-group:hidden\"\n )}\n />\n </div>\n );\n};\n\nToolbarGroup.displayName = \"ToolbarGroup\";\n","import type { ResolvedNode, TreeNode, TreePath } from \"./types\";\n\nconst PATH_SEPARATOR = \"/\";\n\n/**\n * Encode a single node name for use as a path segment. Only `/` and `%`\n * are encoded — the two characters that would break path parsing.\n * All other characters pass through unchanged, keeping paths readable.\n */\nfunction encodeSegment(name: string): string {\n return name.replace(/%/g, \"%25\").replace(/\\//g, \"%2F\");\n}\n\n/**\n * Decode a single encoded path segment back to the original node name.\n * Decoding order is the reverse of encoding: `%2F` first, then `%25`.\n */\nfunction decodeSegment(seg: string): string {\n return seg.replace(/%2F/gi, \"/\").replace(/%25/gi, \"%\");\n}\n\n/**\n * Join an array of (raw, unencoded) node names into a safe path string.\n * Each segment is encoded before joining so slashes in names cannot be\n * mistaken for path separators.\n */\nfunction joinPath(segments: string[]): string {\n return segments.map(encodeSegment).join(PATH_SEPARATOR);\n}\n\n/**\n * Converts a {@link TreePath} of raw node names to an internal encoded string.\n * @internal\n */\nexport function toInternalPath(segments: TreePath): string {\n return joinPath([...segments]);\n}\n\n/**\n * Converts an internal encoded path string to a {@link TreePath} of raw node names.\n * @internal\n */\nexport function fromInternalPath(path: string): TreePath {\n return splitPath(path);\n}\n\n/**\n * Whether a node counts as a leaf (has no children).\n *\n * Only `values: undefined` indicates a leaf. `values: []` represents a\n * branch whose children have not yet been loaded (truncated by the\n * source) and is therefore *not* a leaf — it should still render with\n * a chevron.\n */\nfunction nodeIsLeaf(node: TreeNode): boolean {\n return node.values === undefined;\n}\n\n/**\n * Whether a node is selectable given the current mode flags.\n *\n * A node is selectable when:\n * 1. Its `can_select` is not explicitly `false` (defaults to `true`).\n * 2. If `leavesOnly` is enabled, the node must be a leaf.\n */\nexport function isSelectable(node: TreeNode, leavesOnly = false): boolean {\n if (node.can_select === false) return false;\n if (leavesOnly && !nodeIsLeaf(node)) return false;\n return true;\n}\n\n/**\n * Recursively resolves a {@link TreeNode} subtree into a parallel\n * {@link ResolvedNode} tree with pre-computed paths, depths, and\n * selectability flags.\n *\n * @param root The root node of the tree.\n * @param options.leavesOnly When `true`, branch nodes are marked non-selectable.\n * @param loadedChildren Cache of asynchronously fetched children, keyed by\n * slash-delimited path. When a node has `values: []` and a cache entry\n * exists, the cached children are used in place of the empty array.\n * @returns The resolved root node (callers typically render its `children`).\n */\nexport function buildResolvedTree(\n root: TreeNode,\n options: { leavesOnly?: boolean } = {},\n loadedChildren?: Map<string, TreeNode[]>\n): ResolvedNode {\n function walk(\n node: TreeNode,\n parentPath: string,\n depth: number,\n index: number,\n siblingCount: number\n ): ResolvedNode {\n const path = parentPath\n ? `${parentPath}${PATH_SEPARATOR}${encodeSegment(node.name)}`\n : encodeSegment(node.name);\n\n const isLeaf = nodeIsLeaf(node);\n const cached = loadedChildren?.get(path);\n const sourceIsTruncatedBranch =\n Array.isArray(node.values) && node.values.length === 0;\n const isLazyBranch = sourceIsTruncatedBranch && !cached?.length;\n\n const childValues = isLeaf\n ? []\n : node.values?.length\n ? node.values\n : (cached ?? []);\n const children = childValues.map((child, i) =>\n walk(child, path, depth + 1, i, childValues.length)\n );\n\n return {\n node,\n path,\n depth,\n selectable: isSelectable(node, options.leavesOnly),\n isLeaf,\n isLazyBranch,\n children,\n posinset: index + 1,\n setsize: siblingCount,\n };\n }\n\n return walk(root, \"\", 0, 0, 1);\n}\n\n/**\n * Filters a resolved tree for a search query, returning a pruned copy of the\n * tree that contains only:\n * - Matched nodes (case-insensitive name substring match, any node)\n * - Every ancestor of a match (force-expanded so the match is visible)\n * - Siblings of each match (rendered but subtrees pruned)\n * - Direct children of each match (rendered collapsed)\n *\n * Returns `null` when no nodes match the query.\n */\nexport function filterTreeForQuery(\n resolved: ResolvedNode,\n query: string\n): { tree: ResolvedNode; forceOpenPaths: Set<string> } | null {\n const lowerQuery = query.toLowerCase();\n\n const matchedPaths = new Set<string>();\n\n function collectMatches(node: ResolvedNode): void {\n if (node.node.name.toLowerCase().includes(lowerQuery)) {\n matchedPaths.add(node.path);\n }\n for (const child of node.children) {\n collectMatches(child);\n }\n }\n\n collectMatches(resolved);\n\n if (matchedPaths.size === 0) return null;\n\n const includedPaths = new Set<string>();\n const forceOpenPaths = new Set<string>();\n\n function addAncestors(path: string): void {\n const segments = splitPath(path);\n for (let i = 0; i < segments.length - 1; i++) {\n const current = joinPath(segments.slice(0, i + 1));\n includedPaths.add(current);\n forceOpenPaths.add(current);\n }\n }\n\n for (const matchPath of matchedPaths) {\n includedPaths.add(matchPath);\n addAncestors(matchPath);\n }\n\n function addSubtree(node: ResolvedNode): void {\n includedPaths.add(node.path);\n for (const child of node.children) {\n addSubtree(child);\n }\n }\n\n function findNode(\n root: ResolvedNode,\n path: string\n ): ResolvedNode | undefined {\n if (root.path === path) return root;\n for (const child of root.children) {\n const found = findNode(child, path);\n if (found) return found;\n }\n return undefined;\n }\n\n for (const matchPath of matchedPaths) {\n const matchNode = findNode(resolved, matchPath);\n if (matchNode) {\n addSubtree(matchNode);\n }\n }\n\n function pruneTree(node: ResolvedNode): ResolvedNode {\n const filteredChildren = node.children\n .filter((child) => includedPaths.has(child.path))\n .map((child, i, arr) => {\n const pruned = pruneTree(child);\n return { ...pruned, posinset: i + 1, setsize: arr.length };\n });\n\n return { ...node, children: filteredChildren };\n }\n\n return { tree: pruneTree(resolved), forceOpenPaths };\n}\n\n/**\n * Resolves a {@link TreePath} back to the corresponding\n * {@link TreeNode} in the original tree.\n *\n * @returns The matching node, or `undefined` if the path doesn't match.\n *\n * @example\n * ```ts\n * const node = getNodeByPath(root, [\"vehicle_type\", \"car\", \"make\", \"Honda\"]);\n * // node?.name === \"Honda\"\n * ```\n */\nexport function getNodeByPath(\n root: TreeNode,\n path: TreePath\n): TreeNode | undefined {\n if (path.length === 0) return undefined;\n\n if (path[0] !== root.name) return undefined;\n\n let current: TreeNode = root;\n for (let i = 1; i < path.length; i++) {\n const child = current.values?.find((v) => v.name === path[i]);\n if (!child) return undefined;\n current = child;\n }\n\n return current;\n}\n\n/**\n * Internal variant of {@link getNodeByPath} that accepts an encoded\n * internal path string. Used by `TreeSelect.tsx` to resolve nodes from\n * the encoded paths stored on {@link ResolvedNode}.\n * @internal\n */\nexport function getNodeByInternalPath(\n root: TreeNode,\n internalPath: string\n): TreeNode | undefined {\n return getNodeByPath(root, splitPath(internalPath));\n}\n\n/**\n * Splits an internal encoded path string into decoded node-name segments.\n * @internal\n */\nfunction splitPath(path: string): string[] {\n if (!path) return [];\n return path.split(PATH_SEPARATOR).map(decodeSegment);\n}\n\n/**\n * Returns the parent of an internal encoded path by stripping the last\n * segment, or `undefined` for root-level paths (single segment).\n * @internal\n */\nexport function getParentPath(path: string): string | undefined {\n const idx = path.lastIndexOf(PATH_SEPARATOR);\n return idx === -1 ? undefined : path.slice(0, idx);\n}\n\n/**\n * Depth-first walk of a resolved tree returning nodes in DOM render order.\n * Skips the root itself (callers render `root.children`). For each child,\n * includes the child, then if `isOpen(child.path)` returns true, recurses\n * into its children. This mirrors exactly what `TreeSelectNode` renders.\n */\nexport function flattenVisible(\n root: ResolvedNode,\n isOpen: (path: string) => boolean\n): ResolvedNode[] {\n const result: ResolvedNode[] = [];\n\n function walk(node: ResolvedNode): void {\n result.push(node);\n if (!node.isLeaf && isOpen(node.path)) {\n for (const child of node.children) {\n walk(child);\n }\n }\n }\n\n for (const child of root.children) {\n walk(child);\n }\n\n return result;\n}\n\n/**\n * Collects the paths of every non-leaf (branch) node in a resolved tree.\n * Useful for resolving `defaultExpanded: true` into a concrete set of paths.\n */\nexport function collectBranchPaths(root: ResolvedNode): Set<string> {\n const paths = new Set<string>();\n\n function walk(node: ResolvedNode): void {\n if (!node.isLeaf) {\n paths.add(node.path);\n for (const child of node.children) {\n walk(child);\n }\n }\n }\n\n for (const child of root.children) {\n walk(child);\n }\n\n return paths;\n}\n\n/**\n * Formats a {@link TreePath} as a human-readable breadcrumb string.\n *\n * @example\n * ```ts\n * formatBreadcrumb([\"vehicle_type\", \"car\", \"make\", \"Honda\"]);\n * // \"vehicle_type / car / make / Honda\"\n *\n * formatBreadcrumb([\"music\", \"rock\", \"AC/DC\"]);\n * // \"music / rock / AC/DC\"\n * ```\n */\nexport function formatBreadcrumb(path: TreePath): string {\n return path.join(\" / \");\n}\n","import {\n type KeyboardEvent,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport {\n collectBranchPaths,\n flattenVisible,\n getParentPath,\n} from \"@/components/TreeSelect/tree\";\nimport type { ResolvedNode } from \"@/components/TreeSelect/types\";\n\nfunction encodeRowId(prefix: string, path: string): string {\n return `${prefix}-${path.replace(/\\//g, \"-\")}`;\n}\n\nexport interface UseTreeOptions {\n /** Pre-resolved (and optionally pre-filtered) tree. */\n tree: ResolvedNode;\n /**\n * Set of currently selected paths, used for `aria-selected` and `isSelected`.\n * For single-select, pass a Set with one element. For multi-select, pass\n * all selected paths. The hook is mode-agnostic.\n */\n selection?: Set<string>;\n /**\n * Paths that must be treated as expanded regardless of user expansion state\n * (e.g. ancestors of a search match).\n */\n forceOpenPaths?: Set<string>;\n /** Optional id prefix override; defaults to a `useId()` value. */\n idPrefix?: string;\n /** Scroll the active row into view on change. @default true */\n scrollActiveIntoView?: boolean;\n /** Fires on selectable row click and Enter on active selectable row. */\n onSelect?: (path: string) => void;\n /** Fires on Escape key. */\n onEscape?: () => void;\n /**\n * Fires when a branch is newly opened by user interaction\n * (`toggleExpand`, `expand`, or ArrowRight). Does **not** fire for paths\n * opened solely via `forceOpenPaths` (search auto-expand), and fires at\n * most once per path transition from closed → open.\n */\n onExpand?: (path: string) => void;\n /**\n * Async load state for lazy branches. Exposed via `getLoadState` so\n * renderers can show spinners / error icons without direct access to the\n * map.\n */\n loadState?: Map<string, \"loading\" | \"error\">;\n /**\n * Branches to expand initially. User can still collapse them.\n * `resetExpansion()` restores this set rather than clearing to empty.\n *\n * - `Set<string>` — explicit branch paths.\n * - `true` — expand every branch in `tree`.\n * - `false` / `undefined` — expand nothing.\n */\n defaultExpanded?: Set<string> | boolean;\n}\n\nexport interface TreeItemProps {\n id: string;\n role: \"treeitem\";\n \"aria-selected\": boolean | undefined;\n \"aria-expanded\": boolean | undefined;\n \"aria-posinset\": number;\n \"aria-setsize\": number;\n tabIndex: -1;\n \"data-active\": true | undefined;\n onClick: () => void;\n onMouseDown: (e: { preventDefault: () => void }) => void;\n onMouseEnter: () => void;\n}\n\nexport interface TreeChevronProps {\n \"aria-expanded\": boolean;\n \"aria-label\": string;\n onClick: (e: {\n stopPropagation: () => void;\n preventDefault: () => void;\n }) => void;\n onPointerDown: (e: {\n stopPropagation: () => void;\n preventDefault: () => void;\n }) => void;\n onPointerUp: (e: {\n stopPropagation: () => void;\n preventDefault: () => void;\n }) => void;\n}\n\nexport interface UseTreeReturn {\n /** Flat list of visible nodes in DOM render order. */\n visibleNodes: ResolvedNode[];\n\n /** Set of explicitly expanded paths (excludes forceOpenPaths). */\n expandedPaths: Set<string>;\n /** Path of the keyboard-active row, or `null`. */\n activePath: string | null;\n /** DOM id of the active row, for `aria-activedescendant`. */\n activeDescendantId: string | undefined;\n\n /** Toggle a branch open/closed. */\n toggleExpand: (path: string) => void;\n /** Expand a branch (no-op if already open). */\n expand: (path: string) => void;\n /** Collapse a branch (no-op if already closed). */\n collapse: (path: string) => void;\n /** Clear all user-expanded paths. */\n resetExpansion: () => void;\n /** Set the active (keyboard-highlighted) path. */\n setActivePath: (path: string | null) => void;\n\n /** Spread onto the outer `<div role=\"treeitem\">` wrapper. */\n getItemProps: (node: ResolvedNode) => TreeItemProps;\n /** Spread onto the chevron `<button>`. */\n getChevronProps: (node: ResolvedNode) => TreeChevronProps;\n\n /** `onKeyDown` handler for the element that holds virtual focus (e.g. search input). */\n handleKeyDown: (e: KeyboardEvent) => void;\n\n /** Get the DOM id for a given path. */\n rowId: (path: string) => string;\n /** Whether a path is effectively open (expanded or force-open). */\n isOpen: (path: string) => boolean;\n /** Whether a path is the keyboard-active row. */\n isActive: (path: string) => boolean;\n /** Whether a node is the selected value. */\n isSelected: (node: ResolvedNode) => boolean;\n /** Whether any descendant of a node is in the current selection. */\n hasSelectedDescendant: (node: ResolvedNode) => boolean;\n /** Async load state for a path: `\"loading\"`, `\"error\"`, or `undefined`. */\n getLoadState: (path: string) => \"loading\" | \"error\" | undefined;\n}\n\n/**\n * Headless hook that manages tree state: expansion, active (keyboard) path,\n * keyboard navigation per WAI-ARIA treeview semantics, ARIA prop generation,\n * and scroll-into-view. Owns no rendering or styling.\n *\n * Designed to be consumed by `TreeSelect` and `TreeSelectNode` but generic\n * enough for any component that renders a tree of `ResolvedNode`s.\n */\nexport function useTree(options: UseTreeOptions): UseTreeReturn {\n const {\n tree,\n selection,\n forceOpenPaths,\n idPrefix: idPrefixOption,\n scrollActiveIntoView = true,\n onSelect,\n onEscape,\n onExpand,\n loadState,\n defaultExpanded,\n } = options;\n\n const generatedPrefix = useId();\n const idPrefix = idPrefixOption ?? generatedPrefix;\n\n const seedPaths = useMemo<Set<string>>(() => {\n if (defaultExpanded instanceof Set) return defaultExpanded;\n if (defaultExpanded === true) return collectBranchPaths(tree);\n return new Set();\n }, [defaultExpanded, tree]);\n\n const seedRef = useRef(seedPaths);\n seedRef.current = seedPaths;\n\n const [expandedPaths, setExpandedPaths] = useState<Set<string>>(\n () => new Set(seedPaths)\n );\n\n const expandedRef = useRef(expandedPaths);\n expandedRef.current = expandedPaths;\n\n const [activePath, setActivePath] = useState<string | null>(null);\n\n const isOpen = useCallback(\n (path: string) =>\n expandedPaths.has(path) || (forceOpenPaths?.has(path) ?? false),\n [expandedPaths, forceOpenPaths]\n );\n\n const visibleNodes = useMemo(\n () => flattenVisible(tree, isOpen),\n [tree, isOpen]\n );\n\n const activeDescendantId = activePath\n ? encodeRowId(idPrefix, activePath)\n : undefined;\n\n // --- Expansion actions ---\n\n const toggleExpand = useCallback(\n (path: string) => {\n const wasOpen = expandedRef.current.has(path);\n setExpandedPaths((prev) => {\n const next = new Set(prev);\n if (next.has(path)) next.delete(path);\n else next.add(path);\n return next;\n });\n if (!wasOpen) onExpand?.(path);\n },\n [onExpand]\n );\n\n const expand = useCallback(\n (path: string) => {\n const wasOpen = expandedRef.current.has(path);\n setExpandedPaths((prev) => {\n if (prev.has(path)) return prev;\n const next = new Set(prev);\n next.add(path);\n return next;\n });\n if (!wasOpen) onExpand?.(path);\n },\n [onExpand]\n );\n\n const collapse = useCallback((path: string) => {\n setExpandedPaths((prev) => {\n if (!prev.has(path)) return prev;\n const next = new Set(prev);\n next.delete(path);\n return next;\n });\n }, []);\n\n const resetExpansion = useCallback(() => {\n setExpandedPaths(new Set(seedRef.current));\n }, []);\n\n // --- Scroll active into view ---\n\n useEffect(() => {\n if (!scrollActiveIntoView || !activePath) return;\n const el = document.getElementById(encodeRowId(idPrefix, activePath));\n if (el && typeof el.scrollIntoView === \"function\") {\n el.scrollIntoView({ block: \"nearest\" });\n }\n }, [activePath, idPrefix, scrollActiveIntoView]);\n\n // --- Per-node helpers ---\n\n const rowId = useCallback(\n (path: string) => encodeRowId(idPrefix, path),\n [idPrefix]\n );\n\n const isActive = useCallback(\n (path: string) => activePath === path,\n [activePath]\n );\n\n const isSelected = useCallback(\n (node: ResolvedNode) => selection?.has(node.path) ?? false,\n [selection]\n );\n\n const ancestorsOfSelected = useMemo<Set<string>>(() => {\n if (!selection) return new Set();\n const acc = new Set<string>();\n for (const path of selection) {\n let parent = getParentPath(path);\n while (parent) {\n acc.add(parent);\n parent = getParentPath(parent);\n }\n }\n return acc;\n }, [selection]);\n\n const hasSelectedDescendant = useCallback(\n (node: ResolvedNode) => ancestorsOfSelected.has(node.path),\n [ancestorsOfSelected]\n );\n\n const getLoadState = useCallback(\n (path: string): \"loading\" | \"error\" | undefined => loadState?.get(path),\n [loadState]\n );\n\n // --- Prop getters ---\n\n const getItemProps = useCallback(\n (node: ResolvedNode): TreeItemProps => {\n const active = activePath === node.path;\n const selected = selection?.has(node.path) ?? false;\n const isBranch = !node.isLeaf;\n\n return {\n id: encodeRowId(idPrefix, node.path),\n role: \"treeitem\",\n \"aria-selected\": node.selectable ? selected : undefined,\n \"aria-expanded\": isBranch ? isOpen(node.path) : undefined,\n \"aria-posinset\": node.posinset,\n \"aria-setsize\": node.setsize,\n tabIndex: -1,\n \"data-active\": active || undefined,\n onClick: () => {\n if (node.selectable) {\n onSelect?.(node.path);\n } else if (isBranch) {\n toggleExpand(node.path);\n }\n },\n onMouseDown: (e) => {\n e.preventDefault();\n },\n onMouseEnter: () => {\n setActivePath(node.path);\n },\n };\n },\n [activePath, selection, idPrefix, isOpen, onSelect, toggleExpand]\n );\n\n const getChevronProps = useCallback(\n (node: ResolvedNode): TreeChevronProps => {\n const open = isOpen(node.path);\n const stop = (e: {\n stopPropagation: () => void;\n preventDefault: () => void;\n }): void => {\n e.stopPropagation();\n e.preventDefault();\n };\n\n return {\n \"aria-expanded\": open,\n \"aria-label\": open\n ? `Collapse ${node.node.name}`\n : `Expand ${node.node.name}`,\n onClick: (e) => {\n stop(e);\n toggleExpand(node.path);\n },\n onPointerDown: stop,\n onPointerUp: stop,\n };\n },\n [isOpen, toggleExpand]\n );\n\n // --- Keyboard handler ---\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n const currentIdx = activePath\n ? visibleNodes.findIndex((n) => n.path === activePath)\n : -1;\n const activeNode = currentIdx >= 0 ? visibleNodes[currentIdx] : null;\n\n switch (e.key) {\n case \"ArrowDown\": {\n e.preventDefault();\n if (currentIdx < visibleNodes.length - 1) {\n setActivePath(visibleNodes[currentIdx + 1].path);\n } else if (currentIdx === -1 && visibleNodes.length > 0) {\n setActivePath(visibleNodes[0].path);\n }\n break;\n }\n\n case \"ArrowUp\": {\n e.preventDefault();\n if (currentIdx > 0) {\n setActivePath(visibleNodes[currentIdx - 1].path);\n }\n break;\n }\n\n case \"ArrowRight\": {\n if (!activeNode || activeNode.isLeaf) break;\n e.preventDefault();\n if (!isOpen(activeNode.path)) {\n toggleExpand(activeNode.path);\n } else if (activeNode.children.length > 0) {\n setActivePath(activeNode.children[0].path);\n }\n break;\n }\n\n case \"ArrowLeft\": {\n if (!activeNode) break;\n e.preventDefault();\n if (!activeNode.isLeaf && isOpen(activeNode.path)) {\n toggleExpand(activeNode.path);\n } else {\n const parentPath = getParentPath(activeNode.path);\n if (parentPath) {\n const parentVisible = visibleNodes.some(\n (n) => n.path === parentPath\n );\n if (parentVisible) {\n setActivePath(parentPath);\n }\n }\n }\n break;\n }\n\n case \"Enter\": {\n if (!activeNode) break;\n e.preventDefault();\n if (activeNode.selectable) {\n onSelect?.(activeNode.path);\n }\n break;\n }\n\n case \"Escape\": {\n e.preventDefault();\n onEscape?.();\n break;\n }\n }\n },\n [activePath, visibleNodes, isOpen, toggleExpand, onSelect, onEscape]\n );\n\n return {\n visibleNodes,\n expandedPaths,\n activePath,\n activeDescendantId,\n\n toggleExpand,\n expand,\n collapse,\n resetExpansion,\n setActivePath,\n\n getItemProps,\n getChevronProps,\n\n handleKeyDown,\n\n rowId,\n isOpen,\n isActive,\n isSelected,\n hasSelectedDescendant,\n getLoadState,\n };\n}\n","import React, { type FC } from \"react\";\n\nimport { Checkbox } from \"@/components/Checkbox\";\nimport { Icon } from \"@/components/Icons/Icon\";\nimport { Stack } from \"@/components/Stack\";\nimport { Text } from \"@/components/Text\";\nimport radiusStyles from \"@/styles/radius\";\nimport {\n Align,\n BackgroundColor,\n BrandColor,\n bgColorClass,\n ElementState,\n IconName,\n Justify,\n Orientation,\n Radius,\n Size,\n Spacing,\n TextColor,\n TextVariant,\n textColorClass,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\nimport type { UseTreeReturn } from \"@/util/useTree\";\n\nimport type { ResolvedNode } from \"./types\";\n\nconst DEPTH_INDENT = \"var(--spacing-md)\";\n\nexport interface TreeSelectNodeProps {\n resolved: ResolvedNode;\n tree: UseTreeReturn;\n query?: string;\n multiSelect?: boolean;\n onRetryLoad?: (path: string) => void;\n}\n\nfunction highlightMatch(text: string, query?: string): React.ReactNode {\n if (!query) return text;\n\n const idx = text.toLowerCase().indexOf(query.toLowerCase());\n if (idx === -1) return text;\n\n const before = text.slice(0, idx);\n const match = text.slice(idx, idx + query.length);\n const after = text.slice(idx + query.length);\n\n return (\n <>\n {before}\n <span className={textColorClass(BrandColor.Primary)}>{match}</span>\n {after}\n </>\n );\n}\n\n/**\n * Renders a single node row. The parent renders a flat list of all visible\n * nodes (via `tree.visibleNodes`), so this component never recurses.\n * Depth-based indentation produces the visual tree hierarchy.\n * All state is driven by the `tree` hook — this component is purely\n * presentational.\n *\n * @internal For use by TreeSelectPanel.\n */\nexport const TreeSelectNode: FC<TreeSelectNodeProps> = ({\n resolved,\n tree,\n query,\n multiSelect,\n onRetryLoad,\n}) => {\n const { node, path, depth } = resolved;\n const isBranch = !resolved.isLeaf;\n const isSelected = tree.isSelected(resolved);\n const isActive = tree.isActive(path);\n const effectiveOpen = tree.isOpen(path);\n const nodeLoadState = tree.getLoadState(path);\n\n const showIndeterminate =\n !!multiSelect &&\n isBranch &&\n !isSelected &&\n tree.hasSelectedDescendant(resolved);\n\n const itemProps = tree.getItemProps(resolved);\n const textColor = node.deprecated ? TextColor.Muted : TextColor.Primary;\n\n const indentStyle = {\n paddingLeft: `calc(${depth - 1} * ${DEPTH_INDENT} + var(--spacing-xs))`,\n };\n\n const rowClasses = cn(\n \"flex-nowrap\",\n \"py-1\",\n radiusStyles(Radius.Sm),\n \"cursor-pointer\",\n bgColorClass(BackgroundColor.Card1),\n isSelected && bgColorClass(BackgroundColor.Selected),\n bgColorClass(BackgroundColor.CardElevated, ElementState.Hover),\n bgColorClass(BackgroundColor.CardElevated, ElementState.Active)\n );\n\n const chevronButton = (\n iconName: IconName,\n extraClassName: string,\n props: ReturnType<typeof tree.getChevronProps> | null,\n onClick?: (e: React.MouseEvent) => void\n ): React.ReactElement => (\n <button\n type=\"button\"\n tabIndex={-1}\n {...(props ?? {})}\n onClick={onClick ?? props?.onClick}\n className={cn(\n \"group\",\n \"cursor-pointer\",\n \"shrink-0 flex items-center justify-center size-5 rounded-full\",\n bgColorClass(BackgroundColor.CardElevated, ElementState.Hover)\n )}\n >\n <Icon\n name={iconName}\n size={Size.Sm}\n className={cn(\n \"text-content-text-secondary\",\n !extraClassName && \"group-hover:text-content-text-primary\",\n extraClassName\n )}\n />\n </button>\n );\n\n let chevron: React.ReactNode;\n if (!isBranch) {\n chevron = <span className=\"size-5 shrink-0\" />;\n } else if (nodeLoadState === \"loading\") {\n chevron = chevronButton(IconName.Spinner, \"animate-spin\", null, (e) => {\n e.stopPropagation();\n e.preventDefault();\n });\n } else if (nodeLoadState === \"error\") {\n chevron = chevronButton(\n IconName.Refresh,\n textColorClass(BrandColor.Primary),\n null,\n (e) => {\n e.stopPropagation();\n e.preventDefault();\n onRetryLoad?.(path);\n }\n );\n } else {\n chevron = chevronButton(\n IconName.ChevronRight,\n effectiveOpen ? \"rotate-90\" : \"\",\n tree.getChevronProps(resolved)\n );\n }\n\n const labelContent = (\n <>\n <Stack orientation={Orientation.Column} className=\"min-w-0 flex-1\">\n <Stack align={Align.Center} spacing={Spacing.Xs}>\n {chevron}\n {multiSelect && (resolved.selectable || showIndeterminate) && (\n <div className=\"pr-1\">\n <Checkbox\n checked={isSelected}\n indeterminate={showIndeterminate}\n size={Size.Sm}\n radius={Radius.Xs}\n className=\"pointer-events-none\"\n />\n </div>\n )}\n <Text\n variant={TextVariant.Sm}\n color={textColor}\n className=\"whitespace-nowrap\"\n >\n {highlightMatch(node.name, query)}\n </Text>\n </Stack>\n {node.description && (\n <Text\n variant={TextVariant.Xs}\n color={TextColor.Tertiary}\n className=\"whitespace-nowrap\"\n style={{\n paddingLeft: `calc(var(--spacing-md) + var(--spacing-xs) * 2)`,\n }}\n >\n {node.description}\n </Text>\n )}\n </Stack>\n\n {!multiSelect && (\n <span\n className={cn(\n \"size-5 shrink-0 flex items-center\",\n textColorClass(BrandColor.Primary)\n )}\n >\n {isSelected && <Icon name={IconName.Check} size={Size.Sm} />}\n </span>\n )}\n </>\n );\n\n return (\n <div {...itemProps} aria-level={depth}>\n <Stack\n align={Align.Center}\n justify={Justify.Between}\n spacing={Spacing.Md}\n className={rowClasses}\n style={indentStyle}\n data-active={isActive || undefined}\n >\n {labelContent}\n </Stack>\n </div>\n );\n};\n\nTreeSelectNode.displayName = \"TreeSelectNode\";\n","import { type FC, type KeyboardEvent, type Ref } from \"react\";\n\nimport { Icon } from \"@/components/Icons\";\nimport { inputStyle } from \"@/components/Input\";\nimport { Stack } from \"@/components/Stack\";\nimport {\n Align,\n BackgroundColor,\n bgColorClass,\n ElementState,\n Size,\n TextColor,\n textColorClass,\n} from \"@/types\";\nimport { IconName } from \"@/types/icons\";\nimport { cn } from \"@/util/classes\";\n\nexport interface TreeSelectSearchInputProps {\n value: string;\n onChange: (value: string) => void;\n onKeyDown: (e: KeyboardEvent) => void;\n inputRef: Ref<HTMLInputElement>;\n activeDescendantId?: string;\n}\n\n/**\n * Sticky search bar rendered at the top of the TreeSelect panel.\n * Owns the magnifier icon, text input, and clear button.\n *\n * @internal For use by TreeSelectPanel.\n */\nexport const TreeSelectSearchInput: FC<TreeSelectSearchInputProps> = ({\n value,\n onChange,\n onKeyDown,\n inputRef,\n activeDescendantId,\n}) => {\n return (\n <div className={cn(\"shrink-0 p-1.5\", bgColorClass(BackgroundColor.Card1))}>\n <Stack align={Align.Center} className=\"relative\">\n <span className=\"pointer-events-none absolute left-2.5 flex items-center\">\n <Icon\n name={IconName.Search}\n size={Size.Sm}\n className={textColorClass(TextColor.Tertiary)}\n />\n </span>\n <input\n ref={inputRef}\n type=\"text\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onMouseDown={(e) => e.stopPropagation()}\n onKeyDown={onKeyDown}\n aria-label=\"Search tree\"\n aria-activedescendant={activeDescendantId}\n placeholder=\"Search...\"\n className={cn(inputStyle({ disabled: false }), \"w-full px-8\")}\n />\n {value && (\n <button\n type=\"button\"\n aria-label=\"Clear search\"\n onClick={() => {\n onChange(\"\");\n if (inputRef && typeof inputRef === \"object\") {\n inputRef.current?.focus();\n }\n }}\n className={cn(\n \"group\",\n \"absolute right-1 flex items-center justify-center\",\n \"p-[5px]\",\n \"cursor-pointer\",\n \"rounded-full\",\n \"transition-[background-color] duration-150\",\n bgColorClass(BackgroundColor.Card2, ElementState.Hover)\n )}\n >\n <Icon\n name={IconName.Close}\n size={Size.Sm}\n className={cn(\n textColorClass(TextColor.Secondary),\n \"group-hover:text-content-text-primary\",\n \"transition-colors duration-150\"\n )}\n />\n </button>\n )}\n </Stack>\n </div>\n );\n};\n\nTreeSelectSearchInput.displayName = \"TreeSelectSearchInput\";\n","import { FloatingPortal } from \"@floating-ui/react\";\nimport { useVirtualizer } from \"@tanstack/react-virtual\";\nimport {\n type CSSProperties,\n type FC,\n type ReactElement,\n type ReactNode,\n type RefObject,\n useEffect,\n useRef,\n} from \"react\";\n\nimport { Stack } from \"@/components/Stack\";\nimport { Text } from \"@/components/Text\";\nimport radiusStyles from \"@/styles/radius\";\nimport shadowStyles from \"@/styles/shadow\";\nimport {\n BackgroundColor,\n bgColorClass,\n BorderColor,\n borderColorClass,\n Justify,\n Radius,\n Shadow,\n TextColor,\n TextVariant,\n ZIndex,\n zIndexStyles,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\nimport type { UseTreeReturn } from \"@/util/useTree\";\n\nimport { TreeSelectNode } from \"./TreeSelectNode\";\nimport { TreeSelectSearchInput } from \"./TreeSelectSearchInput\";\n\nfunction getZIndexClass(zIndex?: ZIndex, portal?: boolean): string {\n if (portal) {\n return zIndexStyles(ZIndex.AboveModal);\n }\n if (zIndex) {\n return zIndexStyles(zIndex);\n }\n return zIndexStyles(ZIndex.High);\n}\n\nfunction PortalWrapper({\n portal,\n children,\n}: {\n portal?: boolean;\n children: ReactNode;\n}): ReactElement {\n if (portal) {\n return <FloatingPortal>{children}</FloatingPortal>;\n }\n return <>{children}</>;\n}\n\nexport interface TreeSelectPanelProps {\n floatingRef: (node: HTMLElement | null) => void;\n floatingStyles: CSSProperties;\n portal?: boolean;\n zIndex?: ZIndex;\n panelId: string;\n query: string;\n onQueryChange: (q: string) => void;\n debouncedQuery: string;\n searchInputRef: RefObject<HTMLInputElement | null>;\n tree: UseTreeReturn;\n filteredTree: boolean;\n multiSelect?: boolean;\n onRetryLoad?: (path: string) => void;\n panelMaxHeight?: string;\n}\n\n/**\n * Floating panel for TreeSelect. Renders the dropdown shell containing\n * the search input and the tree body (or \"No matches found\").\n *\n * The search input sits outside the scroll container so the virtualizer's\n * coordinate system aligns with the scrollable area without needing\n * scrollMargin adjustments.\n *\n * @internal For use by TreeSelect.\n */\nconst ROW_HEIGHT_ESTIMATE = 36;\nconst VIRTUALIZER_OVERSCAN = 8;\n\nexport const TreeSelectPanel: FC<TreeSelectPanelProps> = ({\n floatingRef,\n floatingStyles,\n portal,\n zIndex,\n panelId,\n query,\n onQueryChange,\n debouncedQuery,\n searchInputRef,\n tree,\n filteredTree,\n multiSelect,\n onRetryLoad,\n panelMaxHeight,\n}) => {\n const scrollRef = useRef<HTMLDivElement>(null);\n\n const rowVirtualizer = useVirtualizer({\n count: tree.visibleNodes.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => ROW_HEIGHT_ESTIMATE,\n overscan: VIRTUALIZER_OVERSCAN,\n getItemKey: (index) => tree.visibleNodes[index].path,\n });\n\n useEffect(() => {\n if (!tree.activePath) return;\n const idx = tree.visibleNodes.findIndex((n) => n.path === tree.activePath);\n if (idx >= 0) {\n rowVirtualizer.scrollToIndex(idx, { align: \"auto\" });\n }\n }, [tree.activePath, tree.visibleNodes, rowVirtualizer]);\n\n const noMatches = debouncedQuery && !filteredTree;\n\n return (\n <PortalWrapper portal={portal}>\n <div\n ref={floatingRef}\n id={panelId}\n role=\"tree\"\n aria-label=\"Tree selection\"\n style={{ ...floatingStyles, maxHeight: panelMaxHeight ?? \"18rem\" }}\n className={cn(\n \"flex flex-col overflow-hidden\",\n \"border\",\n borderColorClass(BorderColor.Default),\n bgColorClass(BackgroundColor.Card1),\n getZIndexClass(zIndex, portal),\n radiusStyles(Radius.Lg),\n shadowStyles(Shadow.Lg),\n \"focus:outline-none\"\n )}\n >\n <TreeSelectSearchInput\n value={query}\n onChange={onQueryChange}\n onKeyDown={tree.handleKeyDown}\n inputRef={searchInputRef}\n activeDescendantId={tree.activeDescendantId}\n />\n\n <div ref={scrollRef} className=\"flex-1 min-h-0 overflow-auto\">\n <div className=\"p-1.5 pt-0\">\n {noMatches ? (\n <Stack justify={Justify.Center}>\n <Text\n variant={TextVariant.Sm}\n color={TextColor.Tertiary}\n className=\"px-3 py-2\"\n >\n No matches found\n </Text>\n </Stack>\n ) : (\n <div\n style={{\n height: rowVirtualizer.getTotalSize(),\n minWidth: \"100%\",\n position: \"relative\",\n }}\n >\n {rowVirtualizer.getVirtualItems().map((virtualRow) => {\n const node = tree.visibleNodes[virtualRow.index];\n return (\n <div\n key={node.path}\n ref={rowVirtualizer.measureElement}\n data-index={virtualRow.index}\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n minWidth: \"100%\",\n transform: `translateY(${virtualRow.start}px)`,\n }}\n >\n <TreeSelectNode\n resolved={node}\n tree={tree}\n query={filteredTree ? query : undefined}\n multiSelect={multiSelect}\n onRetryLoad={onRetryLoad}\n />\n </div>\n );\n })}\n </div>\n )}\n </div>\n </div>\n </div>\n </PortalWrapper>\n );\n};\n\nTreeSelectPanel.displayName = \"TreeSelectPanel\";\n","import React, { type FC, useState } from \"react\";\n\nimport { Icon } from \"@/components/Icons\";\nimport { inputStyle } from \"@/components/Input\";\nimport { Pill } from \"@/components/Pill\";\nimport { Stack } from \"@/components/Stack\";\nimport {\n Align,\n BackgroundColor,\n bgColorClass,\n ElementState,\n Size,\n TextColor,\n textColorClass,\n} from \"@/types\";\nimport { IconName } from \"@/types/icons\";\nimport { cn } from \"@/util/classes\";\n\nexport interface TreeSelectTriggerProps {\n multiSelect?: boolean;\n value: string | string[] | undefined;\n disabled?: boolean;\n placeholder?: string;\n isOpen: boolean;\n panelId: string;\n hasValue: boolean;\n getDisplayValue: (path: string | null) => string;\n onToggle: () => void;\n onClear: () => void;\n onRemoveOne: (path: string) => void;\n}\n\nfunction ChevronIndicator({\n isOpen,\n disabled,\n}: {\n isOpen: boolean;\n disabled?: boolean;\n}): React.ReactElement {\n return (\n <span\n className={cn(\n \"pointer-events-none absolute right-2.5 flex items-center\",\n \"transition-transform duration-150\",\n isOpen ? \"-rotate-90\" : \"rotate-90\",\n disabled && \"opacity-50\"\n )}\n aria-hidden\n >\n <Icon\n name={IconName.ChevronRight}\n size={Size.Sm}\n className={textColorClass(TextColor.Secondary)}\n />\n </span>\n );\n}\n\nfunction ClearButton({\n onClick,\n}: {\n onClick: (e: React.MouseEvent) => void;\n}): React.ReactElement {\n return (\n <button\n type=\"button\"\n aria-label=\"Clear selection\"\n onClick={onClick}\n className={cn(\n \"group\",\n \"absolute right-7 flex items-center justify-center\",\n \"p-[5px]\",\n \"cursor-pointer\",\n \"rounded-full\",\n \"transition-[background-color] duration-150\",\n bgColorClass(BackgroundColor.Card2, ElementState.Hover)\n )}\n >\n <Icon\n name={IconName.Close}\n size={Size.Sm}\n className={cn(\n textColorClass(TextColor.Secondary),\n \"group-hover:text-content-text-primary\",\n \"transition-colors duration-150\"\n )}\n />\n </button>\n );\n}\n\n/**\n * Trigger element for TreeSelect. Renders either a pill-based multi-select\n * trigger or a single-select read-only input, branching on `multiSelect`.\n *\n * @internal For use by TreeSelect.\n */\nexport const TreeSelectTrigger: FC<TreeSelectTriggerProps> = ({\n multiSelect,\n value,\n disabled,\n placeholder,\n isOpen,\n panelId,\n hasValue,\n getDisplayValue,\n onToggle,\n onClear,\n onRemoveOne,\n}) => {\n const [isHovered, setIsHovered] = useState(false);\n\n const handleClear = (e: React.MouseEvent): void => {\n e.stopPropagation();\n onClear();\n };\n\n if (multiSelect) {\n return (\n <div\n role=\"combobox\"\n tabIndex={disabled ? -1 : 0}\n aria-haspopup=\"tree\"\n aria-expanded={isOpen}\n aria-controls={isOpen ? panelId : undefined}\n onClick={() => {\n if (!disabled) onToggle();\n }}\n onKeyDown={(e) => {\n if (disabled) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onToggle();\n }\n }}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n className={cn(\n inputStyle({ disabled }),\n \"relative flex flex-wrap items-center gap-1\",\n \"h-auto min-h-[2.25rem]\",\n disabled ? \"cursor-not-allowed\" : \"cursor-pointer\",\n hasValue ? \"pr-14\" : \"pr-8\"\n )}\n >\n {((value as string[] | undefined) ?? []).map((p) => (\n <Pill\n key={p}\n size={Size.Xs}\n onRemove={disabled ? undefined : () => onRemoveOne(p)}\n backgroundColor={BackgroundColor.CardElevated}\n className=\"py-0\"\n >\n {getDisplayValue(p)}\n </Pill>\n ))}\n {!hasValue && placeholder && (\n <span className={textColorClass(TextColor.Tertiary)}>\n {placeholder}\n </span>\n )}\n <ChevronIndicator isOpen={isOpen} disabled={disabled} />\n {hasValue && !disabled && isHovered && (\n <ClearButton onClick={handleClear} />\n )}\n </div>\n );\n }\n\n return (\n <Stack\n align={Align.Center}\n className=\"relative\"\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n <input\n readOnly\n autoComplete=\"off\"\n role=\"combobox\"\n aria-haspopup=\"tree\"\n aria-expanded={isOpen}\n aria-controls={isOpen ? panelId : undefined}\n disabled={disabled}\n value={getDisplayValue((value as string | undefined) ?? null)}\n onClick={onToggle}\n placeholder={placeholder}\n className={cn(\n inputStyle({ disabled }),\n \"w-full cursor-pointer\",\n hasValue ? \"pr-14\" : \"pr-8\"\n )}\n />\n <ChevronIndicator isOpen={isOpen} disabled={disabled} />\n {hasValue && !disabled && isHovered && (\n <ClearButton onClick={handleClear} />\n )}\n </Stack>\n );\n};\n\nTreeSelectTrigger.displayName = \"TreeSelectTrigger\";\n","import {\n autoUpdate,\n flip,\n offset,\n shift,\n size,\n useFloating,\n type Placement,\n} from \"@floating-ui/react\";\nimport {\n type FC,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { SelectAnchor } from \"@/components/Select\";\nimport { cn } from \"@/util/classes\";\nimport { useDebouncedCallback } from \"@/util/useDebouncedCallback\";\nimport { useTree } from \"@/util/useTree\";\n\nimport { TreeSelectPanel } from \"./TreeSelectPanel\";\nimport { TreeSelectTrigger } from \"./TreeSelectTrigger\";\nimport {\n buildResolvedTree,\n filterTreeForQuery,\n fromInternalPath,\n getNodeByInternalPath,\n toInternalPath,\n} from \"./tree\";\nimport type { TreeNode, TreePath, TreeSelectProps } from \"./types\";\n\nconst ANCHOR_TO_PLACEMENT: Record<SelectAnchor, Placement> = {\n [SelectAnchor.Bottom]: \"bottom\",\n [SelectAnchor.BottomStart]: \"bottom-start\",\n [SelectAnchor.BottomEnd]: \"bottom-end\",\n [SelectAnchor.Top]: \"top\",\n [SelectAnchor.TopStart]: \"top-start\",\n [SelectAnchor.TopEnd]: \"top-end\",\n};\n\n/**\n * A tree-shaped selection control that renders nodes in a\n * searchable dropdown panel styled to match {@link Select}.\n *\n * Supports single-select with full keyboard navigation (ARIA treeview pattern).\n *\n * Paths are represented as {@link TreePath} — ordered arrays of raw node\n * names. No encoding is needed, even when names contain `/` or `%`.\n *\n * @example\n * ```tsx\n * const tree: TreeNode = {\n * name: \"vehicle_type\",\n * values: [\n * { name: \"car\", values: [{ name: \"Honda\" }, { name: \"Toyota\" }] },\n * { name: \"motorcycle\" },\n * ],\n * };\n *\n * const [value, setValue] = useState<TreePath | undefined>();\n *\n * <TreeSelect\n * root={tree}\n * value={value}\n * onChange={(path) => setValue(path ?? undefined)}\n * placeholder=\"Select a vehicle…\"\n * />\n * ```\n */\nexport const TreeSelect: FC<TreeSelectProps> = ({\n root,\n value,\n onChange,\n multiSelect,\n leavesOnly = false,\n disabled,\n placeholder,\n anchor = SelectAnchor.BottomStart,\n portal,\n zIndex,\n panelMaxHeight,\n displayValue: displayValueProp,\n defaultExpanded,\n loadChildren,\n className,\n ...props\n}) => {\n const [query, setQuery] = useState(\"\");\n const [debouncedQuery, setDebouncedQuery] = useState(\"\");\n const [isOpen, setIsOpen] = useState(false);\n const searchInputRef = useRef<HTMLInputElement>(null);\n\n const [loadedChildren, setLoadedChildren] = useState(\n () => new Map<string, TreeNode[]>()\n );\n const [loadState, setLoadState] = useState(\n () => new Map<string, \"loading\" | \"error\">()\n );\n\n // Reset the async cache whenever the root node reference changes.\n useEffect(() => {\n setLoadedChildren(new Map());\n setLoadState(new Map());\n }, [root]);\n\n const { refs, floatingStyles } = useFloating({\n placement: ANCHOR_TO_PLACEMENT[anchor],\n open: isOpen,\n middleware: [\n offset(4),\n flip(),\n shift({ padding: 8 }),\n size({\n apply({ rects, elements }) {\n Object.assign(elements.floating.style, {\n minWidth: `${rects.reference.width}px`,\n });\n },\n }),\n ],\n whileElementsMounted: autoUpdate,\n });\n\n const debouncedSetQuery = useDebouncedCallback(setDebouncedQuery, 200);\n\n useEffect(() => {\n if (!query) {\n debouncedSetQuery.cancel();\n setDebouncedQuery(\"\");\n return;\n }\n debouncedSetQuery(query);\n }, [query, debouncedSetQuery]);\n\n const resolved = useMemo(\n () => buildResolvedTree(root, { leavesOnly }, loadedChildren),\n [root, leavesOnly, loadedChildren]\n );\n\n const filtered = useMemo(\n () =>\n debouncedQuery ? filterTreeForQuery(resolved, debouncedQuery) : null,\n [resolved, debouncedQuery]\n );\n\n const selection = useMemo<Set<string> | undefined>(() => {\n if (multiSelect) {\n return value?.length\n ? new Set(value.map((p) => toInternalPath(p)))\n : undefined;\n }\n return value?.length ? new Set([toInternalPath(value)]) : undefined;\n }, [multiSelect, value]);\n\n const handleSelect = useCallback(\n (selected: string) => {\n if (multiSelect) {\n const multiOnChange = onChange as\n | ((paths: TreePath[]) => void)\n | undefined;\n const currentInternal = selection ? [...selection] : [];\n const next = currentInternal.includes(selected)\n ? currentInternal.filter((p) => p !== selected)\n : [...currentInternal, selected];\n multiOnChange?.(next.map(fromInternalPath));\n } else {\n // Single-select: close the panel and clear search on pick.\n setQuery(\"\");\n setIsOpen(false);\n const singleOnChange = onChange as\n | ((path: TreePath | null) => void)\n | undefined;\n singleOnChange?.(fromInternalPath(selected));\n }\n },\n [multiSelect, selection, onChange]\n );\n\n const handleEscape = useCallback(() => {\n setIsOpen(false);\n setQuery(\"\");\n }, []);\n\n const fetchChildren = useCallback(\n (path: string) => {\n setLoadState((prev) => new Map(prev).set(path, \"loading\"));\n loadChildren!(fromInternalPath(path)).then(\n (children) => {\n setLoadedChildren((prev) => new Map(prev).set(path, children));\n setLoadState((prev) => {\n const next = new Map(prev);\n next.delete(path);\n return next;\n });\n },\n () => {\n setLoadState((prev) => new Map(prev).set(path, \"error\"));\n }\n );\n },\n [loadChildren]\n );\n\n const handleExpand = useCallback(\n (path: string) => {\n if (!loadChildren) return; // no async loader wired up; expand is purely visual\n if (loadedChildren.has(path)) return; // children already fetched; nothing to do\n if (loadState.get(path) === \"loading\") return; // fetch already in flight\n const sourceNode = getNodeByInternalPath(root, path);\n if (\n !sourceNode ||\n !Array.isArray(sourceNode.values) ||\n sourceNode.values.length > 0 // only lazy branches (values: []) need fetching\n )\n return;\n fetchChildren(path);\n },\n [fetchChildren, loadChildren, loadedChildren, loadState, root]\n );\n\n const handleRetryLoad = useCallback(\n (path: string) => {\n // Clear error state immediately so the node stops showing retry UI,\n // regardless of whether the re-fetch succeeds.\n setLoadState((prev) => {\n const next = new Map(prev);\n next.delete(path);\n return next;\n });\n if (!loadChildren) return;\n const sourceNode = getNodeByInternalPath(root, path);\n if (\n !sourceNode ||\n !Array.isArray(sourceNode.values) ||\n sourceNode.values.length > 0\n )\n return;\n fetchChildren(path);\n },\n [fetchChildren, loadChildren, root]\n );\n\n const internalDefaultExpanded = useMemo<Set<string> | boolean>(() => {\n if (typeof defaultExpanded === \"boolean\" || defaultExpanded === undefined) {\n return defaultExpanded ?? false;\n }\n return new Set(defaultExpanded.map((p) => toInternalPath(p)));\n }, [defaultExpanded]);\n\n const tree = useTree({\n tree: filtered?.tree ?? resolved,\n selection,\n forceOpenPaths: filtered?.forceOpenPaths,\n defaultExpanded: internalDefaultExpanded,\n scrollActiveIntoView: false,\n onSelect: handleSelect,\n onEscape: handleEscape,\n onExpand: handleExpand,\n loadState,\n });\n\n const getDisplayValue = useCallback(\n (v: string | null): string => {\n if (!v) return \"\";\n\n const node = getNodeByInternalPath(root, v);\n if (!node) return v; // path not found in tree (e.g. stale value); fall back to raw path string\n\n if (displayValueProp) {\n return displayValueProp(fromInternalPath(v), node);\n }\n\n return node.name;\n },\n [root, displayValueProp]\n );\n\n const toggleOpen = useCallback(() => {\n if (!disabled) setIsOpen((prev) => !prev);\n }, [disabled]);\n\n const handleToggle = useCallback(() => {\n setQuery(\"\");\n toggleOpen();\n }, [toggleOpen]);\n\n const handleClear = useCallback(() => {\n setQuery(\"\");\n setIsOpen(false);\n if (multiSelect) {\n const multiOnChange = onChange as\n | ((paths: TreePath[]) => void)\n | undefined;\n multiOnChange?.([]);\n } else {\n const singleOnChange = onChange as\n | ((path: TreePath | null) => void)\n | undefined;\n singleOnChange?.(null);\n }\n }, [multiSelect, onChange]);\n\n // Focus search input when panel opens; initialize active path\n useEffect(() => {\n if (isOpen) {\n window.requestAnimationFrame(() => searchInputRef.current?.focus());\n const singleValue = multiSelect ? undefined : value;\n const singleInternal = singleValue?.length\n ? toInternalPath(singleValue)\n : undefined;\n const initial =\n singleInternal &&\n tree.visibleNodes.some((n) => n.path === singleInternal)\n ? singleInternal\n : (tree.visibleNodes[0]?.path ?? null);\n tree.setActivePath(initial);\n } else {\n tree.setActivePath(null);\n tree.resetExpansion();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- only fire on isOpen toggle\n }, [isOpen]);\n\n // Reset active path when the filtered tree changes\n useEffect(() => {\n if (isOpen && debouncedQuery) {\n tree.setActivePath(tree.visibleNodes[0]?.path ?? null);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- reset on query change only\n }, [debouncedQuery]);\n\n useEffect(() => {\n if (!isOpen) return;\n\n const handleClickOutside = (e: MouseEvent): void => {\n const target = e.target as Node;\n const reference = refs.reference.current as Element | null;\n const floating = refs.floating.current;\n if (reference?.contains(target) || floating?.contains(target)) {\n return;\n }\n setIsOpen(false);\n setQuery(\"\");\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [isOpen, refs.reference, refs.floating]);\n\n const hasValue = !!value?.length;\n\n const removeOne = useCallback(\n (pathToRemove: string) => {\n if (!multiSelect) return; // should never be called in single-select, but guard defensively\n const multiOnChange = onChange as\n | ((paths: TreePath[]) => void)\n | undefined;\n const currentInternal = selection ? [...selection] : [];\n multiOnChange?.(\n currentInternal.filter((p) => p !== pathToRemove).map(fromInternalPath)\n );\n },\n [multiSelect, selection, onChange]\n );\n\n const panelId = tree.rowId(\"panel\");\n\n return (\n <div ref={refs.setReference} className={cn(className, \"w-full\")} {...props}>\n <TreeSelectTrigger\n multiSelect={multiSelect}\n value={\n multiSelect\n ? value?.map(toInternalPath)\n : value?.length\n ? toInternalPath(value)\n : undefined\n }\n disabled={disabled}\n placeholder={placeholder}\n isOpen={isOpen}\n panelId={panelId}\n hasValue={hasValue}\n getDisplayValue={getDisplayValue}\n onToggle={handleToggle}\n onClear={handleClear}\n onRemoveOne={removeOne}\n />\n\n {isOpen && (\n <TreeSelectPanel\n floatingRef={refs.setFloating}\n floatingStyles={floatingStyles}\n portal={portal}\n zIndex={zIndex}\n panelMaxHeight={panelMaxHeight}\n panelId={panelId}\n query={query}\n onQueryChange={setQuery}\n debouncedQuery={debouncedQuery}\n searchInputRef={searchInputRef}\n tree={tree}\n filteredTree={!!filtered}\n multiSelect={multiSelect}\n onRetryLoad={handleRetryLoad}\n />\n )}\n </div>\n );\n};\n\nTreeSelect.displayName = \"TreeSelect\";\n","/**\n * Transition design tokens for the VOODO design system.\n *\n * Three layers:\n * 1. `duration` — how long a transition takes\n * 2. `easing` — the timing curve (how it accelerates / decelerates)\n * 3. `preset` — pre-composed shorthand values for common UI patterns\n *\n * These are compiled into CSS custom properties by the generate-tailwind-theme\n * script and consumed through the TypeScript helpers in `src/types/transition.ts`.\n */\nexport const transitions = {\n /**\n * Duration tokens — semantic names for how long an animation takes.\n *\n * instant (0ms) Use for state that should feel truly immediate.\n * fast (100ms) Micro-interactions: hover highlights, icon swaps.\n * normal (200ms) Default: color, border, and opacity changes.\n * moderate (300ms) Slightly heavier state changes: panel reveals, tooltips.\n * slow (500ms) Deliberate motion: drawers, slide-in panels.\n * deliberate(700ms) Page-level or dramatic transitions.\n */\n duration: {\n instant: \"0ms\",\n fast: \"100ms\",\n normal: \"200ms\",\n moderate: \"300ms\",\n slow: \"500ms\",\n deliberate: \"700ms\",\n },\n\n /**\n * Easing (timing-function) tokens.\n *\n * linear Constant speed. Mechanical feel; suits progress bars/loaders.\n * in Starts slow, accelerates. Best for exits / elements leaving the screen.\n * out Starts fast, decelerates. Best for entrances / elements arriving.\n * in-out Slow start and end. Best for general UI state changes.\n * spring Slight overshoot then settles. Adds energy to interactive elements.\n * sharp Quick in, gradual out. Crisp, snappy feel for menus/overlays.\n */\n easing: {\n linear: \"linear\",\n in: \"cubic-bezier(0.4, 0, 1, 1)\",\n out: \"cubic-bezier(0, 0, 0.2, 1)\",\n \"in-out\": \"cubic-bezier(0.4, 0, 0.2, 1)\",\n spring: \"cubic-bezier(0.34, 1.56, 0.64, 1)\",\n sharp: \"cubic-bezier(0.4, 0, 0.6, 1)\",\n },\n\n /**\n * Pre-composed transition shorthands for common UI patterns.\n * These bake in the right duration + easing for each context so\n * component authors pick semantics, not numbers.\n *\n * colors Background, text, border, fill, and stroke color changes.\n * opacity Fade in/out.\n * transform Scale, translate, and rotate.\n * shadow Box-shadow elevation changes.\n * menu Dropdown / context menu appear and disappear.\n * panel Drawers and slide-in sheets.\n * overlay Modal backdrop fade.\n * all General-purpose catch-all.\n */\n preset: {\n colors:\n \"color 200ms cubic-bezier(0.4, 0, 0.2, 1), background-color 200ms cubic-bezier(0.4, 0, 0.2, 1), border-color 200ms cubic-bezier(0.4, 0, 0.2, 1), fill 200ms cubic-bezier(0.4, 0, 0.2, 1), stroke 200ms cubic-bezier(0.4, 0, 0.2, 1)\",\n opacity: \"opacity 200ms cubic-bezier(0.4, 0, 0.2, 1)\",\n transform: \"transform 200ms cubic-bezier(0, 0, 0.2, 1)\",\n shadow: \"box-shadow 200ms cubic-bezier(0.4, 0, 0.2, 1)\",\n menu: \"opacity 100ms cubic-bezier(0, 0, 0.2, 1), transform 100ms cubic-bezier(0, 0, 0.2, 1)\",\n panel: \"transform 300ms cubic-bezier(0, 0, 0.2, 1)\",\n overlay: \"opacity 200ms cubic-bezier(0.4, 0, 0.2, 1)\",\n all: \"all 200ms cubic-bezier(0.4, 0, 0.2, 1)\",\n },\n} as const;\n"],"names":["DragHandleIcon","className","props","jsx","clsx","SpinnerIcon","jsxs","Align","Anchor","ElementState","withElementState","cssClass","state","ActionColor","BackgroundColor","BorderColor","BrandColor","IconColor","SemanticColor","StatusColor","TextColor","textColorMap","backgroundColorMap","borderColorMap","bgColorClass","color","elementState","getColorCssVar","isEnumValue","value","enumType","borderColorClass","textColorClass","ZIndex","Z_INDEX_VALUES","zIndexStyles","zIndex","HeadingLevel","IconName","Justify","Orientation","Radius","Shadow","Size","Spacing","TextVariant","TransitionDuration","TransitionEasing","TransitionPreset","transitionDuration","duration","transitionEasing","easing","transitionPreset","preset","transitionPresetValue","Variant","cn","classes","twMerge","sizeStyles","Spinner","size","SvgAi","React","SvgActivity","SvgAdd","SvgAnnotate","SvgArrowDown","SvgArrowLeft","SvgArrowRight","SvgArrowUp","SvgArrowUpRight","SvgBlocks","SvgBoxes","SvgCalendarClock","SvgCaretDown","SvgCheck","SvgCheckbox","SvgChecklist","SvgChevronBottom","SvgChevronLeft","SvgChevronRight","SvgChevronTop","SvgCircle","SvgCircleUser","SvgClose","SvgCloud","SvgCloudCog","SvgCode","SvgCog","SvgContact","SvgContentCopy","SvgDatabase","SvgDateRange","SvgDelete","SvgDetection","SvgDownload","SvgDrag","SvgDraw","SvgEdit","SvgEmbeddings","SvgEnter","SvgError","SvgExitWorkspace","SvgExternalLink","SvgFileClock","SvgFineTune","SvgFingerprint","SvgFullscreen","SvgGridView","SvgHistory","SvgIdCard","SvgImageSearch","SvgInfo","SvgInsights","SvgInspect","SvgJson","SvgKey","SvgKeyRound","SvgKeySquare","SvgLabel","SvgLock","SvgLogs","SvgMenu","SvgMoreHorizontal","SvgMoreVertical","SvgMove","SvgNotebookPen","SvgNotes","SvgOrchestrator","SvgPencil","SvgPin","SvgPolyline","SvgPuzzle","SvgRadio","SvgRedo","SvgRefresh","SvgRemove","SvgReview","SvgSearch","SvgServer","SvgSettings","SvgShieldCheck","SvgSlider","SvgSliders","SvgTag","SvgText","SvgToggle","SvgUndo","SvgUnfoldMore","SvgUnlock","SvgUnsupported","SvgUpload","SvgUser","SvgUsers","SvgUsersRound","SvgVal","SvgWarning","SvgWaypoints","SvgWorkflow","SvgWorkspaces","SvgZap","iconMap","ActivityIcon","AddIcon","AIIcon","AnnotateIcon","ArrowDownIcon","ArrowLeftIcon","ArrowRightIcon","ArrowUpIcon","ArrowUpRightIcon","BlocksIcon","BoxesIcon","CalendarClockIcon","CaretDownIcon","CheckIcon","CheckboxIcon","ChecklistIcon","ChevronBottomIcon","ChevronLeftIcon","ChevronRightIcon","ChevronTopIcon","CircleIcon","CircleUserIcon","CloseIcon","CloudIcon","CloudCogIcon","CodeIcon","CogIcon","ContactIcon","ContentCopyIcon","DatabaseIcon","DateRangeIcon","DeleteIcon","DetectionIcon","DownloadIcon","DragIcon","DrawIcon","EditIcon","EmbeddingsIcon","EnterIcon","ErrorIcon","ExitWorkspaceIcon","ExternalLinkIcon","FileClockIcon","FineTuneIcon","FingerprintIcon","FullscreenIcon","GridViewIcon","HistoryIcon","IdCardIcon","ImageSearchIcon","InfoIcon","InsightsIcon","InspectIcon","JSONIcon","KeyIcon","KeyRoundIcon","KeySquareIcon","LabelIcon","LockIcon","LogsIcon","MenuIcon","MoreHorizontalIcon","MoreVerticalIcon","MoveIcon","NotebookPenIcon","NotesIcon","OrchestratorIcon","PencilIcon","PinIcon","PolylineIcon","PuzzleIcon","RadioIcon","RedoIcon","RefreshIcon","RemoveIcon","ReviewIcon","SearchIcon","ServerIcon","SettingsIcon","ShieldCheckIcon","SliderIcon","SlidersIcon","TagIcon","TextIcon","ToggleIcon","UndoIcon","UnfoldMoreIcon","UnlockIcon","UnsupportedIcon","UploadIcon","UserIcon","UsersIcon","UsersRoundIcon","VALIcon","WarningIcon","WaypointsIcon","WorkflowIcon","WorkspacesIcon","ZapIcon","sizeMap","Icon","name","iconSize","IconComponent","IconWrapper","content","Content","TEXT_STYLES","textStyles","variant","textColor","Text","children","anchorStyles","ToastContainer","anchor","open","Fragment","RADIUS_STYLES","radiusStyles","radius","ActivityToast","icon","message","variantStyles","variantTextStyles","iconStyles","Button","borderless","leadingIcon","trailingIcon","HeadlessButton","SHADOW_STYLES","shadowStyles","shadow","CardBackground","bgColorMap","Card","compact","background","outlined","backgroundColor","alignStyles","justifyStyles","spacingStyles","Stack","align","justify","orientation","spacing","RichCard","action","badge","description","title","Description","text","line","isNullish","UnsetHint","hint","checkmarkSizeStyles","Checkbox","checked","onChange","indeterminate","labelClassName","label","showUnsetHint","showIndeterminate","Field","HeadlessCheckbox","Label","Clickable","useControllableState","initializer","isControlled","internalValue","setInternalValue","useState","resolvedValue","resolvedOnChange","useCallback","useMemo","useDisclosure","defaultOpen","controlledOpen","onOpenChange","setOpen","toggle","Collapsible","header","animated","style","styles","MenuCheckItem","disabled","MenuItem","focus","MenuIconTextItem","subtext","destructive","subtextColor","iconColor","MenuSectionTitle","MenuSeparator","MenuTextItem","menuPanelStyles","ESTIMATED_MENU_SIZE","pickAnchor","cursor","viewport","menu","edge","alignment","ContextMenu","onContextMenu","buttonRef","useRef","closeRef","position","setPosition","setAnchor","e","nextAnchor","flushSync","Menu","close","MenuButton","MenuItems","iconPaddingStyles","iconSizeStyles","paddingLeftStyles","IconPosition","DatepickerIconButton","onClick","ariaLabel","iconName","datePickerInputStyle","error","DatepickerInput","hasValue","inputRef","handleIconClick","inputClasses","DatePicker","selected","dateFormat","minDate","maxDate","placeholderText","showTimeSelect","showTimeSelectOnly","timeIntervals","finalDateFormat","ReactDatePicker","Divider","textProps","isColumn","Line","useLatest","ref","useDragDelta","axis","onDragStart","onDelta","onDragEnd","isDragging","setIsDragging","isDraggingRef","startPosRef","onDragStartRef","onDeltaRef","onDragEndRef","onPointerDown","onPointerMove","current","onPointerUp","useElementSize","setSize","roRef","el","measure","useResizableDrawer","maxSize","invert","onSizeChange","disclosureOptions","contentHeight","setContentHeight","userSize","setUserSize","animating","setAnimating","observeRef","contentElRef","contentRef","autoSize","openSize","openRef","sizeRef","invertRef","maxSizeRef","onSizeChangeRef","dragStartSizeRef","useLayoutEffect","h","prev","delta","adjusted","raw","auto","clamped","handleProps","onTransitionEnd","sideConfig","side","Drawer","mode","isVertical","dragHandleProps","contentWrapperSizeStyle","DropdownAnchor","Dropdown","trigger","portal","panelZIndex","triggerDisabled","isValidElement","isDisabled","DropdownTrigger","EmptyState","FormField","control","FormFieldGroup","Fieldset","elementMap","Heading","level","Element","ImageList","items","renderItem","cols","gap","rowHeight","colWidth","onLoadMore","hasMore","loading","rest","sentinelRef","handleIntersection","entries","entry","useEffect","observer","gridStyle","sentinelStyle","id","data","InputIcon","hasText","InputType","inputStyle","Input","type","HeadlessInput","ListItem","canSelect","onSelected","canDrag","dragHandleListeners","primaryContent","secondaryContent","actions","additionalContent","Pill","isStatus","onRemove","RadioDotIcon","textSizeStyles","dotSizeStyles","Radio","HeadlessRadio","randomString","RadioGroup","options","defaultValue","radioProps","groupName","HeadlessRadioGroup","option","RichButton","active","RichButtonGroup","buttons","exclusive","setActive","activate","newActiveArray","deactivate","elem","buttonProps","SortableListItem","attributes","listeners","setNodeRef","transform","transition","useSortable","CSS","gapStyles","RichList","listItems","draggable","onOrderChange","transientSelected","setTransientSelected","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","onSelect","itemId","isSelected","newSelectionState","v","handleDragEnd","event","over","oldIndex","item","newIndex","newItems","arrayMove","listContent","descriptor","DndContext","closestCenter","SortableContext","verticalListSortingStrategy","Option","ComboboxOption","SelectAnchor","getZIndexClass","Select","query","setQuery","selectionState","setSelectionState","triggerRef","triggerWidth","filteredOptions","opt","handleChange","getDisplayValue","Combobox","ComboboxInput","ComboboxOptions","currentValue","SliderKnob","truncate","precision","factor","cleanFloat","maxDigits","SliderBar","max","min","multi","onChangeCommitted","step","sliderTrackRef","lastValueRef","values","minValue","maxValue","isUnset","getKnobPosition","getKnobValue","xPos","rawValue","stepValue","getRelativeX","mouseX","trackElement","boundingRect","handleDrag","knob","relativePosition","newValue","next","registerKnobDragHandlers","handleMouseMove","handleMouseUp","handleTrackClick","clickPos","clickValue","minKnobPos","maxKnobPos","minKnobDist","maxKnobDist","getRelativeValue","KnobLabel","threshold","relativeValue","displayValue","SliderLabels","knobLabel","maxLabel","minLabel","useDebouncedCallback","callback","delay","debouncedCallback","debounce","nonNull","finite","parsedValue","makeRangeValidator","valueString","clamp","BaseSlider","bare","debounceDelay","labeled","transientValue","setTransientValue","setMinValue","setMaxValue","isValidRange","newMin","newMax","debouncedOnChange","handleMinInputChange","handleMaxInputChange","handleInputCommit","maxNum","minNum","SingleValueSlider","MultiValueSlider","Table","TableRow","isClickable","TableHeader","TableBody","TableCell","TableHead","ResizeBehavior","resizeStyles","TextArea","resize","rows","containerClassName","HeadlessTextarea","TextBadge","Toast","toastContent","trackSizeStyles","thumbSizeStyles","getThumbTranslateStyles","Toggle","HeadlessSwitch","panelPositionStyles","rotatedSquareStyles","PORTAL_GAP","getPortalPosition","rect","rotatedSquareBorderStyles","RotatedSquare","borderClass","Tooltip","wrapperClassName","isOpen","setIsOpen","wrapperRef","portalStyle","setPortalStyle","handleMouseEnter","handleMouseLeave","handleScroll","panelClasses","tooltipPanel","createPortal","ToggleSwitchVariant","tabSizeStyles","softSizeStyles","tabPaddingStyles","tabVariantStyles","getTabBorderRadius","isFirst","isLast","getTabStyles","classNames","getTabListBorderStyles","getTabTextColorClass","ToggleSwitch","tabs","defaultIndex","index","fullWidth","tabListClassName","tabPanelClassName","TabGroup","TabList","tabClassName","tab","Tab","TabPanels","TabPanel","lock","pos","useDraggable","initialX","initialY","lockX","lockY","onPositionChange","containerRef","dragStartRef","positionRef","handleDragStart","cur","fallback","parent","toolbarW","toolbarH","clientX","clientY","nextX","nextY","OrientationContext","createContext","useOrientationContext","useContext","DEFAULT_X_OFFSET","DEFAULT_Y_OFFSET","Toolbar","xOffset","yOffset","visible","onKeyDown","isCollapsed","setIsCollapsed","collapsedSize","setCollapsedSize","handleDragHandleDoubleClick","dragHandleClass","containerClass","containerStyle","toolbarActionClass","isInteractive","iconClass","ToolbarAction","forwardRef","activeStyle","ToolbarGroup","PATH_SEPARATOR","encodeSegment","decodeSegment","seg","joinPath","segments","toInternalPath","fromInternalPath","path","splitPath","nodeIsLeaf","node","isSelectable","leavesOnly","buildResolvedTree","root","loadedChildren","walk","parentPath","depth","siblingCount","isLeaf","cached","isLazyBranch","childValues","child","i","filterTreeForQuery","resolved","lowerQuery","matchedPaths","collectMatches","includedPaths","forceOpenPaths","addAncestors","matchPath","addSubtree","findNode","found","matchNode","pruneTree","filteredChildren","arr","getNodeByPath","getNodeByInternalPath","internalPath","getParentPath","idx","flattenVisible","result","collectBranchPaths","paths","formatBreadcrumb","encodeRowId","prefix","useTree","tree","selection","idPrefixOption","scrollActiveIntoView","onEscape","onExpand","loadState","defaultExpanded","generatedPrefix","useId","idPrefix","seedPaths","seedRef","expandedPaths","setExpandedPaths","expandedRef","activePath","setActivePath","visibleNodes","activeDescendantId","toggleExpand","wasOpen","expand","collapse","resetExpansion","rowId","isActive","ancestorsOfSelected","acc","hasSelectedDescendant","getLoadState","getItemProps","isBranch","getChevronProps","stop","handleKeyDown","currentIdx","n","activeNode","DEPTH_INDENT","highlightMatch","before","match","after","TreeSelectNode","multiSelect","onRetryLoad","effectiveOpen","nodeLoadState","itemProps","indentStyle","rowClasses","chevronButton","extraClassName","chevron","labelContent","TreeSelectSearchInput","PortalWrapper","FloatingPortal","ROW_HEIGHT_ESTIMATE","VIRTUALIZER_OVERSCAN","TreeSelectPanel","floatingRef","floatingStyles","panelId","onQueryChange","debouncedQuery","searchInputRef","filteredTree","panelMaxHeight","scrollRef","rowVirtualizer","useVirtualizer","noMatches","virtualRow","ChevronIndicator","ClearButton","TreeSelectTrigger","placeholder","onToggle","onClear","onRemoveOne","isHovered","setIsHovered","handleClear","p","ANCHOR_TO_PLACEMENT","TreeSelect","displayValueProp","loadChildren","setDebouncedQuery","setLoadedChildren","setLoadState","refs","useFloating","offset","flip","shift","rects","elements","autoUpdate","debouncedSetQuery","filtered","handleSelect","multiOnChange","currentInternal","handleEscape","fetchChildren","handleExpand","sourceNode","handleRetryLoad","internalDefaultExpanded","toggleOpen","handleToggle","singleValue","singleInternal","initial","handleClickOutside","target","reference","floating","removeOne","pathToRemove","transitions"],"mappings":";;;;;;;;;;;;;;AAaO,MAAMA,KAAgC,CAAC,EAAE,WAAAC,GAAW,GAAGC,QAE1D,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWC,EAAKH,CAAS;AAAA,IACzB,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,OAAM;AAAA,IACL,GAAGC;AAAA,IAEJ,UAAA,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,GAAE;AAAA,QACF,MAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EACP;AAAA;AAKNH,GAAe,cAAc;AC5BtB,MAAMK,KAA6B,CAAC,EAAE,WAAAJ,GAAW,GAAGC,QACzD,gBAAAI;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAAL;AAAA,IACA,OAAM;AAAA,IACN,MAAK;AAAA,IACL,SAAQ;AAAA,IACP,GAAGC;AAAA,IAEJ,UAAA;AAAA,MAAA,gBAAAC;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,IAAG;AAAA,UACH,IAAG;AAAA,UACH,GAAE;AAAA,UACF,QAAO;AAAA,UACP,aAAY;AAAA,QAAA;AAAA,MAAA;AAAA,MAEd,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,MAAK;AAAA,UACL,GAAE;AAAA,QAAA;AAAA,MAAA;AAAA,IACJ;AAAA,EAAA;AACF;AAGFE,GAAY,cAAc;AC5BnB,IAAKE,uBAAAA,OACVA,EAAA,WAAW,YACXA,EAAA,SAAS,UACTA,EAAA,MAAM,OACNA,EAAA,QAAQ,SAJEA,IAAAA,MAAA,CAAA,CAAA,GCAAC,sBAAAA,OACVA,EAAA,UAAU,YACVA,EAAA,MAAM,OACNA,EAAA,WAAW,aACXA,EAAA,QAAQ,SACRA,EAAA,cAAc,gBACdA,EAAA,SAAS,UACTA,EAAA,aAAa,eACbA,EAAA,OAAO,QARGA,IAAAA,KAAA,CAAA,CAAA,GCAAC,sBAAAA,OACVA,EAAA,SAAS,eACTA,EAAA,YAAY,kBACZA,EAAA,UAAU,gBACVA,EAAA,WAAW,YACXA,EAAA,WAAW,iBACXA,EAAA,QAAQ,cACRA,EAAA,QAAQ,SACRA,EAAA,OAAO,QACPA,EAAA,OAAO,aACPA,EAAA,WAAW,iBAVDA,IAAAA,KAAA,CAAA,CAAA;AAaL,MAAMC,KAAmB,CAC9BC,GACAC,IAAsB,WAElBA,MAAU,SACLD,IAGF,GAAGC,CAAK,IAAID,CAAQ;ACnBtB,IAAKE,uBAAAA,OACVA,EAAA,iBAAiB,0BACjBA,EAAA,eAAe,4BACfA,EAAA,eAAe,2BACfA,EAAA,cAAc,uBACdA,EAAA,mBAAmB,4BACnBA,EAAA,iBAAiB,8BACjBA,EAAA,iBAAiB,6BACjBA,EAAA,gBAAgB,yBAChBA,EAAA,iBAAiB,0BACjBA,EAAA,eAAe,4BACfA,EAAA,eAAe,2BACfA,EAAA,cAAc,uBACdA,EAAA,gBAAgB,yBAChBA,EAAA,cAAc,2BACdA,EAAA,cAAc,0BACdA,EAAA,aAAa,sBACbA,EAAA,cAAc,uBAjBJA,IAAAA,MAAA,CAAA,CAAA,GAoBAC,sBAAAA,OACVA,EAAA,cAAc,kBACdA,EAAA,aAAa,iBACbA,EAAA,QAAQ,aACRA,EAAA,QAAQ,aACRA,EAAA,eAAe,oBACfA,EAAA,QAAQ,YACRA,EAAA,UAAU,cACVA,EAAA,WAAW,eACXA,EAAA,YAAY,gBATFA,IAAAA,KAAA,CAAA,CAAA,GAYAC,sBAAAA,OACVA,EAAA,UAAU,kBACVA,EAAA,SAAS,iBACTA,EAAA,QAAQ,gBACRA,EAAA,QAAQ,gBACRA,EAAA,SAAS,iBACTA,EAAA,SAAS,iBACTA,EAAA,QAAQ,gBACRA,EAAA,UAAU,kBACVA,EAAA,UAAU,kBACVA,EAAA,WAAW,mBACXA,EAAA,eAAe,oBAXLA,IAAAA,KAAA,CAAA,CAAA,GAcAC,uBAAAA,OACVA,EAAA,UAAU,iBACVA,EAAA,SAAS,gBAFCA,IAAAA,MAAA,CAAA,CAAA,GAKAC,uBAAAA,OACVA,EAAA,UAAU,gBACVA,EAAA,SAAS,eACTA,EAAA,WAAW,iBACXA,EAAA,QAAQ,cACRA,EAAA,WAAW,iBACXA,EAAA,aAAa,mBACbA,EAAA,QAAQ,cACRA,EAAA,cAAc,qBACdA,EAAA,UAAU,gBACVA,EAAA,cAAc,oBACdA,EAAA,UAAU,gBACVA,EAAA,OAAO,aAZGA,IAAAA,MAAA,CAAA,CAAA,GAeAC,uBAAAA,OACVA,EAAA,UAAU,oBACVA,EAAA,cAAc,wBACdA,EAAA,OAAO,iBACPA,EAAA,UAAU,oBAJAA,IAAAA,MAAA,CAAA,CAAA,GAOAC,uBAAAA,OACVA,EAAA,WAAW,mBACXA,EAAA,SAAS,iBACTA,EAAA,WAAW,mBACXA,EAAA,UAAU,kBACVA,EAAA,SAAS,iBALCA,IAAAA,MAAA,CAAA,CAAA,GAQAC,sBAAAA,OACVA,EAAA,KAAK,WACLA,EAAA,UAAU,gBACVA,EAAA,YAAY,kBACZA,EAAA,WAAW,iBACXA,EAAA,QAAQ,cACRA,EAAA,cAAc,oBACdA,EAAA,UAAU,gBACVA,EAAA,cAAc,oBACdA,EAAA,UAAU,gBACVA,EAAA,OAAO,aAVGA,IAAAA,KAAA,CAAA,CAAA;AAsBZ,MAAMC,KAAsC;AAAA,EACzC,uBAA0B;AAAA,EAC1B,0BAA6B;AAAA,EAC7B,4BAA2B;AAAA,EAC3B,2BAA2B;AAAA,EAC3B,uBAA0B;AAAA,EAC1B,4BAA+B;AAAA,EAC/B,8BAA6B;AAAA,EAC7B,6BAA6B;AAAA,EAC7B,yBAA4B;AAAA,EAC5B,0BAA6B;AAAA,EAC7B,4BAA2B;AAAA,EAC3B,2BAA2B;AAAA,EAC3B,uBAA0B;AAAA,EAC1B,yBAA4B;AAAA,EAC5B,2BAA0B;AAAA,EAC1B,0BAA0B;AAAA,EAC1B,sBAAyB;AAAA,EAEzB,iBAA6B;AAAA,EAC7B,aAAwB;AAAA,EACxB,aAAwB;AAAA,EACxB,oBAA+B;AAAA,EAC/B,YAAwB;AAAA,EACxB,cAA0B;AAAA,EAC1B,gBAA4B;AAAA,EAC5B,eAA2B;AAAA,EAC3B,kBAA8B;AAAA,EAE9B,gBAAoB;AAAA,EACpB,iBAAqB;AAAA,EAErB,cAAkB;AAAA,EAClB,qBAAwB;AAAA,EACxB,mBAAuB;AAAA,EACvB,gBAAoB;AAAA,EACpB,oBAAwB;AAAA,EACxB,iBAAqB;AAAA,EACrB,iBAAqB;AAAA,EACrB,aAAiB;AAAA,EACjB,cAAkB;AAAA,EAClB,eAAmB;AAAA,EACnB,gBAAoB;AAAA,EACpB,gBAAoB;AAAA,EAEpB,wBAA4B;AAAA,EAC5B,iBAAqB;AAAA,EACrB,oBAAwB;AAAA,EACxB,oBAAwB;AAAA,EAExB,mBAAuB;AAAA,EACvB,kBAAsB;AAAA,EACtB,iBAAqB;AAAA,EACrB,mBAAuB;AAAA,EACvB,iBAAqB;AAAA,EAErB,oBAAwB;AAAA,EACxB,WAAe;AAAA,EACf,aAAiB;AAAA,EACjB,cAAkB;AAAA,EAClB,oBAAwB;AAAA,EACxB,gBAAoB;AAAA,EACpB,kBAAsB;AAAA,EACtB,gBAAoB;AAAA,EACpB,iBAAqB;AAAA,EACrB,gBAAoB;AACvB,GAEMC,KAA4C;AAAA,EAC/C,kBAA8B;AAAA,EAC9B,uBAA0B;AAAA,EAC1B,0BAA6B;AAAA,EAC7B,4BAA2B;AAAA,EAC3B,2BAA2B;AAAA,EAC3B,uBAA0B;AAAA,EAC1B,4BAA+B;AAAA,EAC/B,8BAA6B;AAAA,EAC7B,6BAA6B;AAAA,EAC7B,yBAA4B;AAAA,EAC5B,0BAA6B;AAAA,EAC7B,4BAA2B;AAAA,EAC3B,2BAA2B;AAAA,EAC3B,uBAA0B;AAAA,EAC1B,yBAA4B;AAAA,EAC5B,2BAA0B;AAAA,EAC1B,0BAA0B;AAAA,EAC1B,sBAAyB;AAAA,EAEzB,iBAA6B;AAAA,EAC7B,aAAwB;AAAA,EACxB,aAAwB;AAAA,EACxB,oBAA+B;AAAA,EAC/B,YAAwB;AAAA,EACxB,cAA0B;AAAA,EAC1B,gBAA4B;AAAA,EAC5B,eAA2B;AAAA,EAE3B,gBAAoB;AAAA,EACpB,iBAAqB;AAAA,EAErB,cAAkB;AAAA,EAClB,qBAAwB;AAAA,EACxB,mBAAuB;AAAA,EACvB,gBAAoB;AAAA,EACpB,oBAAwB;AAAA,EACxB,iBAAqB;AAAA,EACrB,iBAAqB;AAAA,EACrB,aAAiB;AAAA,EACjB,cAAkB;AAAA,EAClB,eAAmB;AAAA,EACnB,gBAAoB;AAAA,EACpB,gBAAoB;AAAA,EAEpB,wBAA4B;AAAA,EAC5B,iBAAqB;AAAA,EACrB,oBAAwB;AAAA,EACxB,oBAAwB;AAAA,EAExB,mBAAuB;AAAA,EACvB,kBAAsB;AAAA,EACtB,iBAAqB;AAAA,EACrB,mBAAuB;AAAA,EACvB,iBAAqB;AAAA,EAErB,oBAAwB;AAAA,EACxB,WAAe;AAAA,EACf,aAAiB;AAAA,EACjB,cAAkB;AAAA,EAClB,oBAAwB;AAAA,EACxB,gBAAoB;AAAA,EACpB,kBAAsB;AAAA,EACtB,gBAAoB;AAAA,EACpB,iBAAqB;AAAA,EACrB,gBAAoB;AACvB,GAEMC,KAA8C;AAAA,EACjD,oBAA2B;AAAA,EAC3B,iBAAqB;AAAA,EACrB,kBAAsB;AAAA,EACtB,mBAAuB;AAAA,EACvB,gBAAoB;AAAA,EACpB,gBAAoB;AAAA,EACpB,gBAAoB;AAAA,EACpB,iBAAqB;AAAA,EACrB,iBAAqB;AAAA,EACrB,kBAAsB;AAAA,EACtB,kBAAsB;AACzB,GAEaC,IAAe,CAC1BC,GACAC,IAA6BjB,EAAa,SAEtCiB,MAAiBjB,EAAa,OACzBa,GAAmBG,CAAK,IAG1Bf,GAAiB,WAAWiB,GAAeF,CAAK,CAAC,MAAMC,CAAY,GAG/DC,KAAiB,CAACF,MAE3BG,GAAYH,GAAOT,EAAU,KAC7BY,GAAYH,GAAOP,EAAa,KAChCU,GAAYH,GAAOZ,EAAW,IAEvB,WAAWY,CAAK,KAGlB,mBAAmBA,CAAK,IAG3BG,KAAc,CAClBC,GACAC,MAEO,OAAO,OAAOA,CAAQ,EAAE,SAASD,CAAe,GAG5CE,IAAmB,CAC9BN,GACAC,IAA6BjB,EAAa,SAEtCiB,MAAiBjB,EAAa,OACzBc,GAAeE,CAAK,IAGtBf;AAAA,EACL,eAAeiB,GAAeF,CAAK,CAAC;AAAA,EACpCC;AAAA,GAISM,IAAiB,CAC5BP,GACAC,IAA6BjB,EAAa,SAEtCiB,MAAiBjB,EAAa,OACzBY,GAAaI,CAAK,IAGpBf,GAAiB,aAAaiB,GAAeF,CAAK,CAAC,MAAMC,CAAY;AC/SvE,IAAKO,uBAAAA,OAEVA,EAAA,UAAU,WAEVA,EAAA,MAAM,OAENA,EAAA,SAAS,UAETA,EAAA,OAAO,QAEPA,EAAA,aAAa,eAVHA,IAAAA,MAAA,CAAA,CAAA;AAiBL,MAAMC,KAAkD;AAAA,EAC5D,SAAiB;AAAA,EACjB,KAAa;AAAA,EACb,QAAgB;AAAA,EAChB,MAAc;AAAA,EACd,eAAoB;AACvB;AAMO,SAASC,GAAaC,GAAwB;AACnD,SAAIA,MAAW,YACN,WAGF,UADS,OAAOA,CAAM,EACL;AAC1B;ACvCO,IAAKC,uBAAAA,OACVA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MAJKA,IAAAA,MAAA,CAAA,CAAA,GCAAC,sBAAAA,OACVA,EAAA,WAAW,YACXA,EAAA,MAAM,OACNA,EAAA,KAAK,MACLA,EAAA,WAAW,YACXA,EAAA,YAAY,aACZA,EAAA,YAAY,aACZA,EAAA,aAAa,cACbA,EAAA,UAAU,WACVA,EAAA,eAAe,gBACfA,EAAA,SAAS,UACTA,EAAA,QAAQ,SACRA,EAAA,gBAAgB,iBAChBA,EAAA,YAAY,aACZA,EAAA,QAAQ,SACRA,EAAA,WAAW,YACXA,EAAA,YAAY,aACZA,EAAA,gBAAgB,iBAChBA,EAAA,cAAc,eACdA,EAAA,eAAe,gBACfA,EAAA,aAAa,cACbA,EAAA,SAAS,UACTA,EAAA,aAAa,cACbA,EAAA,QAAQ,SACRA,EAAA,QAAQ,SACRA,EAAA,WAAW,YACXA,EAAA,OAAO,QACPA,EAAA,MAAM,OACNA,EAAA,UAAU,WACVA,EAAA,cAAc,eACdA,EAAA,WAAW,YACXA,EAAA,YAAY,aACZA,EAAA,OAAO,QACPA,EAAA,SAAS,UACTA,EAAA,YAAY,aACZA,EAAA,WAAW,YACXA,EAAA,OAAO,QACPA,EAAA,OAAO,QACPA,EAAA,aAAa,cACbA,EAAA,QAAQ,SACRA,EAAA,QAAQ,SACRA,EAAA,gBAAgB,iBAChBA,EAAA,eAAe,gBACfA,EAAA,YAAY,aACZA,EAAA,WAAW,YACXA,EAAA,cAAc,eACdA,EAAA,aAAa,cACbA,EAAA,WAAW,YACXA,EAAA,UAAU,WACVA,EAAA,SAAS,UACTA,EAAA,cAAc,eACdA,EAAA,OAAO,QACPA,EAAA,WAAW,YACXA,EAAA,UAAU,WACVA,EAAA,OAAO,QACPA,EAAA,MAAM,OACNA,EAAA,WAAW,YACXA,EAAA,YAAY,aACZA,EAAA,QAAQ,SACRA,EAAA,OAAO,QACPA,EAAA,OAAO,QACPA,EAAA,OAAO,QACPA,EAAA,iBAAiB,kBACjBA,EAAA,eAAe,gBACfA,EAAA,OAAO,QACPA,EAAA,cAAc,eACdA,EAAA,QAAQ,SACRA,EAAA,eAAe,gBACfA,EAAA,SAAS,UACTA,EAAA,MAAM,OACNA,EAAA,WAAW,YACXA,EAAA,SAAS,UACTA,EAAA,QAAQ,SACRA,EAAA,OAAO,QACPA,EAAA,UAAU,WACVA,EAAA,SAAS,UACTA,EAAA,SAAS,UACTA,EAAA,SAAS,UACTA,EAAA,SAAS,UACTA,EAAA,WAAW,YACXA,EAAA,cAAc,eACdA,EAAA,SAAS,UACTA,EAAA,UAAU,WACVA,EAAA,UAAU,WACVA,EAAA,MAAM,OACNA,EAAA,OAAO,QACPA,EAAA,SAAS,UACTA,EAAA,OAAO,QACPA,EAAA,aAAa,cACbA,EAAA,SAAS,UACTA,EAAA,cAAc,eACdA,EAAA,SAAS,UACTA,EAAA,OAAO,QACPA,EAAA,QAAQ,SACRA,EAAA,aAAa,cACbA,EAAA,MAAM,OACNA,EAAA,UAAU,WACVA,EAAA,YAAY,aACZA,EAAA,WAAW,YACXA,EAAA,aAAa,cACbA,EAAA,MAAM,OApGIA,IAAAA,KAAA,CAAA,CAAA,GCAAC,uBAAAA,OACVA,EAAA,SAAS,UACTA,EAAA,UAAU,WACVA,EAAA,SAAS,UACTA,EAAA,MAAM,OACNA,EAAA,SAAS,UACTA,EAAA,QAAQ,SANEA,IAAAA,MAAA,CAAA,CAAA,GCAAC,sBAAAA,OACVA,EAAA,MAAM,OACNA,EAAA,SAAS,OAFCA,IAAAA,KAAA,CAAA,CAAA,GCAAC,sBAAAA,OACVA,EAAA,OAAO,QACPA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,OAAO,QAPGA,IAAAA,KAAA,CAAA,CAAA,GCAAC,uBAAAA,OACVA,EAAA,OAAO,QACPA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MANKA,IAAAA,MAAA,CAAA,CAAA,GCAAC,sBAAAA,OACVA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MALKA,IAAAA,KAAA,CAAA,CAAA,GCAAC,sBAAAA,OACVA,EAAA,OAAO,QACPA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MANKA,IAAAA,KAAA,CAAA,CAAA,GCAAC,sBAAAA,OACVA,EAAA,MAAM,OACNA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,MAAM,OACNA,EAAA,QAAQ,SACRA,EAAA,UAAU,WATAA,IAAAA,KAAA,CAAA,CAAA,GC+BAC,uBAAAA,OAEVA,EAAA,UAAU,WAEVA,EAAA,OAAO,QAEPA,EAAA,SAAS,UAETA,EAAA,WAAW,YAEXA,EAAA,OAAO,QAEPA,EAAA,aAAa,cAZHA,IAAAA,MAAA,CAAA,CAAA,GAmBAC,uBAAAA,OAEVA,EAAA,SAAS,UAETA,EAAA,KAAK,MAELA,EAAA,MAAM,OAENA,EAAA,QAAQ,UAERA,EAAA,SAAS,UAETA,EAAA,QAAQ,SAZEA,IAAAA,MAAA,CAAA,CAAA,GAoBAC,uBAAAA,OAEVA,EAAA,SAAS,UAETA,EAAA,UAAU,WAEVA,EAAA,YAAY,aAEZA,EAAA,SAAS,UAETA,EAAA,OAAO,QAEPA,EAAA,QAAQ,SAERA,EAAA,UAAU,WAEVA,EAAA,MAAM,OAhBIA,IAAAA,MAAA,CAAA,CAAA;AA4BL,SAASC,GAAmBC,GAAsC;AACvE,SAAO,uCAAuCA,CAAQ;AACxD;AAWO,SAASC,GAAiBC,GAAkC;AACjE,SAAO,iCAAiCA,CAAM;AAChD;AAYO,SAASC,GAAiBC,GAAkC;AACjE,SAAO,uCAAuCA,CAAM;AACtD;AAWO,SAASC,GAAsBD,GAAkC;AACtE,SAAO,2BAA2BA,CAAM;AAC1C;AC5IO,IAAKE,uBAAAA,OACVA,EAAA,UAAU,WACVA,EAAA,YAAY,aACZA,EAAA,UAAU,WACVA,EAAA,SAAS,UACTA,EAAA,OAAO,QACPA,EAAA,aAAa,cANHA,IAAAA,MAAA,CAAA,CAAA;ACsBL,MAAMC,IAAK,IACbC,MAEIC,GAAQvD,EAAK,GAAGsD,CAAO,CAAC,GCf3BE,KAAmC;AAAA,EACvC,CAACjB,EAAK,EAAE,GAAG;AAAA,EACX,CAACA,EAAK,EAAE,GAAG;AAAA,EACX,CAACA,EAAK,EAAE,GAAG;AAAA,EACX,CAACA,EAAK,EAAE,GAAG;AAAA,EACX,CAACA,EAAK,EAAE,GAAG;AACb,GAgBakB,KAA4B,CAAC;AAAA,EACxC,WAAA5D;AAAA,EACA,MAAA6D,IAAOnB,EAAK;AAAA,EACZ,GAAGzC;AACL,MACE,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWsD;AAAA,MACTG,GAAWE,CAAI;AAAA,MACf9B,EAAeZ,EAAU,OAAO;AAAA,MAChCnB;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,IAEJ,UAAA,gBAAAC,EAACE,IAAA,EAAY,WAAU,eAAA,CAAe;AAAA,EAAA;AACxC;AAGFwD,GAAQ,cAAc;AChDtB,MAAME,KAAQ,CAAC7D,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,04DAA04D,MAAM,eAAc,CAAE,CAAC,GCApoEC,KAAc,CAAC/D,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,QAAQ,gBAAgB,aAAa,GAAG,eAAe,SAAS,gBAAgB,SAAS,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,6HAA4H,CAAE,CAAC,GCAjcE,KAAS,CAAChE,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,+wBAA+wB,MAAM,eAAc,CAAE,CAAC,GCA1gCG,KAAc,CAACjE,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,mcAAmc,QAAQ,gBAAgB,aAAa,KAAK,eAAe,SAAS,gBAAgB,SAAS,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,8ZAA8Z,QAAQ,gBAAgB,aAAa,KAAK,eAAe,SAAS,gBAAgB,SAAS,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,+BAA+B,QAAQ,gBAAgB,aAAa,KAAK,eAAe,SAAS,gBAAgB,SAAS,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,uJAAuJ,QAAQ,gBAAgB,aAAa,KAAK,eAAe,SAAS,gBAAgB,QAAO,CAAE,CAAC,GCAzwDI,KAAe,CAAClE,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,2oBAA2oB,MAAM,eAAc,CAAE,CAAC,GCA54BK,KAAe,CAACnE,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,ipBAAipB,MAAM,eAAc,CAAE,CAAC,GCAl5BM,KAAgB,CAACpE,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,2oBAA2oB,MAAM,eAAc,CAAE,CAAC,GCA74BO,KAAa,CAACrE,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,ipBAAipB,MAAM,eAAc,CAAE,CAAC,GCAh5BQ,KAAkB,CAACtE,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,+BAA+B,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,6zBAA6zB,MAAM,eAAc,CAAE,CAAC,GCAnlCS,KAAY,CAACvE,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,QAAQ,gBAAgB,aAAa,GAAG,eAAe,SAAS,gBAAgB,SAAS,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,8FAA6F,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,IAAI,GAAG,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,EAAC,CAAE,CAAC,GCA1fU,KAAW,CAACxE,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,QAAQ,gBAAgB,aAAa,GAAG,eAAe,SAAS,gBAAgB,SAAS,GAAG9D,KAAyB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,0GAAyG,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,oBAAmB,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,cAAa,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,eAAc,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,yGAAwG,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,eAAc,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,qBAAoB,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,gBAAe,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,mGAAkG,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,kBAAiB,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,kBAAiB,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,aAAY,CAAE,CAAC,GCAp1CW,KAAmB,CAACzE,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,QAAQ,gBAAgB,aAAa,GAAG,eAAe,SAAS,gBAAgB,SAAS,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,mBAAkB,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,UAAS,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,+DAA8D,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,UAAS,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,SAAQ,CAAE,GAAmB,gBAAAA,EAAM,cAAc,UAAU,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAC,CAAE,CAAC,GCArtBY,KAAe,CAAC1E,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,wiBAAwiB,MAAM,eAAc,CAAE,CAAC,GCAzyBa,KAAW,CAAC3E,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,wfAAwf,MAAM,eAAc,CAAE,CAAC,GCArvBc,KAAc,CAAC5E,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,66BAA66B,MAAM,eAAc,CAAE,CAAC,GCA7qCe,KAAe,CAAC7E,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,i6CAAi6C,MAAM,eAAc,CAAE,CAAC,GCAlqDgB,KAAmB,CAAC9E,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,6iBAA6iB,MAAM,eAAc,CAAE,CAAC,GCAlzBiB,KAAiB,CAAC/E,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,0jBAA0jB,MAAM,eAAc,CAAE,CAAC,GCA7zBkB,KAAkB,CAAChF,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,qiBAAqiB,MAAM,eAAc,CAAE,CAAC,GCAzyBmB,KAAgB,CAACjF,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,0iBAA0iB,MAAM,eAAc,CAAE,CAAC,GCA5yBoB,KAAY,CAAClF,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,WAAW,QAAQ,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,UAAU,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,MAAM,eAAc,CAAE,CAAC,GCApSqB,KAAgB,CAACnF,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,QAAQ,gBAAgB,aAAa,GAAG,eAAe,SAAS,gBAAgB,SAAS,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,sCAAqC,CAAE,GAAmB,gBAAAA,EAAM,cAAc,UAAU,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAC,CAAE,GAAmB,gBAAAA,EAAM,cAAc,UAAU,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,GAAE,CAAE,CAAC,GCA/fsB,KAAW,CAACpF,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,2uBAA2uB,MAAM,eAAc,CAAE,CAAC,GCAx+BuB,KAAW,CAACrF,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,QAAQ,gBAAgB,aAAa,GAAG,eAAe,SAAS,gBAAgB,SAAS,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,sDAAqD,CAAE,CAAC,GCAvXwB,KAAc,CAACtF,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,QAAQ,gBAAgB,aAAa,GAAG,eAAe,SAAS,gBAAgB,SAAS,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,0BAAyB,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,2BAA2B,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,kDAAiD,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,gDAA+C,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,0BAAyB,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,yBAAwB,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,8EAA6E,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,2BAA2B,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,yBAAwB,CAAE,CAAC,GCAtjCyB,KAAU,CAACvF,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,2vCAA2vC,MAAM,eAAc,CAAE,CAAC,GCAv/C0B,KAAS,CAACxF,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,QAAQ,gBAAgB,aAAa,GAAG,eAAe,SAAS,gBAAgB,SAAS,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,mBAAkB,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,mBAAkB,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,YAAW,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,UAAS,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,WAAU,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,mBAAkB,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,kBAAiB,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,UAAS,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,mBAAkB,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,kBAAiB,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,kBAAiB,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,iBAAgB,CAAE,GAAmB,gBAAAA,EAAM,cAAc,UAAU,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAC,CAAE,GAAmB,gBAAAA,EAAM,cAAc,UAAU,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAC,CAAE,CAAC,GCAttC2B,KAAa,CAACzF,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,QAAQ,gBAAgB,aAAa,GAAG,eAAe,SAAS,gBAAgB,SAAS,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,UAAS,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,2CAA0C,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,SAAQ,CAAE,GAAmB,gBAAAA,EAAM,cAAc,UAAU,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAC,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,GAAG,GAAG,GAAG,OAAO,IAAI,QAAQ,IAAI,IAAI,EAAC,CAAE,CAAC,GCA/oB4B,KAAiB,CAAC1F,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,6HAA6H,MAAM,eAAc,CAAE,CAAC,GCAhY6B,KAAc,CAAC3F,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,QAAQ,gBAAgB,aAAa,GAAG,eAAe,SAAS,gBAAgB,SAAS,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,WAAW,EAAE,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,EAAC,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,4BAA2B,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,wBAAuB,CAAE,CAAC,GCA9f8B,KAAe,CAAC5F,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,ixDAAixD,MAAM,eAAc,CAAE,CAAC,GCAlhE+B,KAAY,CAAC7F,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,wjDAAwjD,MAAM,eAAc,CAAE,CAAC,GCAtzDgC,KAAe,CAAC9F,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,w1DAAw1D,MAAM,eAAc,CAAE,CAAC,GCAzlEiC,KAAc,CAAC/F,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,gBAAgB,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,utDAAutD,MAAM,eAAc,CAAE,CAAC,GCA19DkC,KAAU,CAAChG,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,4+DAA4+D,MAAM,eAAc,CAAE,CAAC,GCAxuEmC,KAAU,CAACjG,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,6qFAA6qF,MAAM,eAAc,CAAE,CAAC,GCAz6FoC,KAAU,CAAClG,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,+yBAA+yB,MAAM,eAAc,CAAE,CAAC,GCA3iCqC,KAAgB,CAACnG,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,4kCAA4kC,MAAM,eAAc,CAAE,CAAC,GCA90CsC,KAAW,CAACpG,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,kzBAAkzB,MAAM,eAAc,CAAE,CAAC,GCA/iCuC,KAAW,CAACrG,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,+3CAA+3C,MAAM,eAAc,CAAE,CAAC,GCA5nDwC,KAAmB,CAACtG,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,knBAAknB,MAAM,eAAc,CAAE,CAAC,GCAv3ByC,KAAkB,CAACvG,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,63CAA63C,MAAM,eAAc,CAAE,CAAC,GCAjoD0C,KAAe,CAACxG,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,QAAQ,gBAAgB,aAAa,GAAG,eAAe,SAAS,gBAAgB,SAAS,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,0GAA0G,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,0BAAyB,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,kBAAiB,CAAE,GAAmB,gBAAAA,EAAM,cAAc,UAAU,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,EAAC,CAAE,CAAC,GCA5oB2C,KAAc,CAACzG,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,g1FAAg1F,MAAM,eAAc,CAAE,CAAC,GCAhlG4C,KAAiB,CAAC1G,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,QAAQ,gBAAgB,aAAa,GAAG,eAAe,SAAS,gBAAgB,SAAS,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,4CAA2C,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,kCAAkC,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,oCAAmC,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,yBAAwB,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,YAAW,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,+BAA8B,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,2CAA0C,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,iCAAiC,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,2BAA0B,CAAE,CAAC,GCA1gC6C,KAAgB,CAAC3G,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,w7DAAw7D,MAAM,eAAc,CAAE,CAAC,GCA1rE8C,KAAc,CAAC5G,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,UAAU,WAAW,GAAG,qGAAqG,MAAM,eAAc,CAAE,CAAC,GCA1X+C,KAAa,CAAC7G,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,uBAAuB,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,k8DAAk8D,MAAM,eAAc,CAAE,CAAC,GCA3sEgD,KAAY,CAAC9G,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,QAAQ,gBAAgB,aAAa,GAAG,eAAe,SAAS,gBAAgB,SAAS,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,WAAU,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,WAAU,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,4BAA2B,CAAE,GAAmB,gBAAAA,EAAM,cAAc,UAAU,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,EAAC,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,GAAG,GAAG,GAAG,OAAO,IAAI,QAAQ,IAAI,IAAI,EAAC,CAAE,CAAC,GCAjoBiD,KAAiB,CAAC/G,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,uVAAuV,MAAM,eAAc,CAAE,CAAC,GCA1lBkD,KAAU,CAAChH,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,03CAA03C,MAAM,eAAc,CAAE,CAAC,GCAtnDmD,KAAc,CAACjH,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,iBAAiB,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,+3CAA+3C,MAAM,eAAc,CAAE,CAAC,GCAnoDoD,KAAa,CAAClH,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,qrBAAqrB,MAAM,eAAc,CAAE,CAAC,GCAp7BqD,KAAU,CAACnH,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,u6EAAu6E,MAAM,eAAc,CAAE,CAAC,GCAnqFsD,KAAS,CAACpH,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,QAAQ,gBAAgB,aAAa,GAAG,eAAe,SAAS,gBAAgB,SAAS,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,6KAA4K,CAAE,GAAmB,gBAAAA,EAAM,cAAc,UAAU,EAAE,IAAI,MAAM,IAAI,KAAK,GAAG,KAAK,MAAM,eAAc,CAAE,CAAC,GCAhlBuD,KAAc,CAACrH,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,QAAQ,gBAAgB,aAAa,GAAG,eAAe,SAAS,gBAAgB,SAAS,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,6KAA4K,CAAE,GAAmB,gBAAAA,EAAM,cAAc,UAAU,EAAE,IAAI,MAAM,IAAI,KAAK,GAAG,KAAK,MAAM,eAAc,CAAE,CAAC,GCArlBwD,KAAe,CAACtH,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,QAAQ,gBAAgB,aAAa,GAAG,eAAe,SAAS,gBAAgB,SAAS,GAAG9D,KAAyB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,uHAAuH,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,YAAW,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,kKAAiK,CAAE,CAAC,GCAntByD,KAAW,CAACvH,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,oBAAoB,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,UAAU,WAAW,UAAU,WAAW,GAAG,ozEAAozE,MAAM,eAAc,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,qZAAqZ,MAAM,eAAc,CAAE,CAAC,GCAjkG0D,KAAU,CAACxH,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,2rCAA2rC,MAAM,eAAc,CAAE,CAAC,GCAv7C2D,KAAU,CAACzH,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,w2CAAw2C,MAAM,eAAc,CAAE,CAAC,GCApmD4D,KAAU,CAAC1H,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,snCAAsnC,MAAM,eAAc,CAAE,CAAC,GCAl3C6D,KAAoB,CAAC3H,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,yiCAAyiC,MAAM,eAAc,CAAE,CAAC,GCA/yC8D,KAAkB,CAAC5H,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,4hCAA4hC,MAAM,eAAc,CAAE,CAAC,GCAhyC+D,KAAU,CAAC7H,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,4uGAA4uG,MAAM,eAAc,CAAE,CAAC,GCAx+GgE,KAAiB,CAAC9H,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,QAAQ,gBAAgB,aAAa,GAAG,eAAe,SAAS,gBAAgB,SAAS,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,iEAAgE,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,SAAQ,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,UAAS,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,UAAS,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,UAAS,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,iIAAgI,CAAE,CAAC,GCAzzBiE,KAAW,CAAC/H,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,ymCAAymC,MAAM,eAAc,CAAE,CAAC,GCAt2CkE,KAAkB,CAAChI,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,ynJAAynJ,MAAM,eAAc,CAAE,CAAC,GCA73JmE,KAAY,CAACjI,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,qBAAqB,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,uZAAuZ,QAAQ,gBAAgB,aAAa,KAAK,eAAe,SAAS,gBAAgB,QAAO,CAAE,CAAC,GCAluBoE,KAAS,CAAClI,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,s7BAAs7B,MAAM,eAAc,CAAE,CAAC,GCAjrCqE,KAAc,CAACnI,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,g/BAAg/B,MAAM,eAAc,CAAE,CAAC,GCAhvCsE,KAAY,CAACpI,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,QAAQ,gBAAgB,aAAa,GAAG,eAAe,SAAS,gBAAgB,SAAS,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,gdAA+c,CAAE,CAAC,GCAlxBuE,KAAW,CAACrI,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,shCAAshC,MAAM,eAAc,CAAE,CAAC,GCAnxCwE,KAAU,CAACtI,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,sqCAAsqC,MAAM,eAAc,CAAE,CAAC,GCAl6CyE,KAAa,CAACvI,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,yoEAAyoE,MAAM,eAAc,CAAE,CAAC,GCAx4E0E,KAAY,CAACxI,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,wVAAwV,MAAM,eAAc,CAAE,CAAC,GCAtlB2E,KAAY,CAACzI,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,kMAAkM,QAAQ,gBAAgB,aAAa,KAAK,eAAe,SAAS,gBAAgB,QAAO,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,iXAAiX,QAAQ,gBAAgB,aAAa,KAAK,eAAe,SAAS,gBAAgB,QAAO,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,8BAA8B,QAAQ,gBAAgB,aAAa,KAAK,eAAe,SAAS,gBAAgB,QAAO,CAAE,CAAC,GCAlrC4E,KAAY,CAAC1I,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,+gCAA+gC,MAAM,eAAc,CAAE,CAAC,GCA7wC6E,KAAY,CAAC3I,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,QAAQ,gBAAgB,aAAa,GAAG,eAAe,SAAS,gBAAgB,SAAS,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,OAAO,IAAI,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,EAAC,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,OAAO,IAAI,QAAQ,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,EAAC,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,IAAI,EAAC,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,IAAI,GAAG,IAAI,MAAM,IAAI,IAAI,IAAI,GAAE,CAAE,CAAC,GCAlnB8E,KAAc,CAAC5I,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,ovGAAovG,MAAM,eAAc,CAAE,CAAC,GCAp/G+E,KAAiB,CAAC7I,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,QAAQ,gBAAgB,aAAa,GAAG,eAAe,SAAS,gBAAgB,SAAS,GAAG9D,KAAyB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,qKAAoK,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,gBAAe,CAAE,CAAC,GCAjjBgF,KAAY,CAAC9I,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,odAAod,MAAM,eAAc,CAAE,CAAC,GCAltBiF,KAAa,CAAC/I,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,eAAe,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,k4FAAk4F,MAAM,eAAc,CAAE,CAAC,GCAnoGkF,KAAS,CAAChJ,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,2lCAA2lC,MAAM,eAAc,CAAE,CAAC,GCAt1CmF,KAAU,CAACjJ,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,wjCAAwjC,MAAM,eAAc,CAAE,CAAC,GCApzCoF,KAAY,CAAClJ,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,krCAAkrC,MAAM,eAAc,CAAE,CAAC,GCAh7CqF,KAAU,CAACnJ,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,mqCAAmqC,MAAM,eAAc,CAAE,CAAC,GCA/5CsF,KAAgB,CAACpJ,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,uwCAAuwC,MAAM,eAAc,CAAE,CAAC,GCAzgDuF,KAAY,CAACrJ,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,80CAA80C,MAAM,eAAc,CAAE,CAAC,GCA5kDwF,KAAiB,CAACtJ,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,ipCAAipC,MAAM,eAAc,CAAE,CAAC,GCAp5CyF,KAAY,CAACvJ,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,gBAAgB,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,s2DAAs2D,MAAM,eAAc,CAAE,CAAC,GCAvmE0F,KAAU,CAACxJ,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,QAAQ,gBAAgB,aAAa,GAAG,eAAe,SAAS,gBAAgB,SAAS,GAAG9D,KAAyB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,4CAA2C,CAAE,GAAmB,gBAAAA,EAAM,cAAc,UAAU,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,EAAC,CAAE,CAAC,GCApb2F,KAAW,CAACzJ,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,QAAQ,gBAAgB,aAAa,GAAG,eAAe,SAAS,gBAAgB,SAAS,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,6CAA6C,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,8BAA6B,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,6BAA4B,CAAE,GAAmB,gBAAAA,EAAM,cAAc,UAAU,EAAE,IAAI,GAAG,IAAI,GAAG,GAAG,EAAC,CAAE,CAAC,GCAzlB4F,KAAgB,CAAC1J,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,QAAQ,gBAAgB,aAAa,GAAG,eAAe,SAAS,gBAAgB,SAAS,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,wBAAuB,CAAE,GAAmB,gBAAAA,EAAM,cAAc,UAAU,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,EAAC,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,4CAA2C,CAAE,CAAC,GCAvgB6F,KAAS,CAAC3J,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,UAAU,WAAW,UAAU,WAAW,GAAG,+xEAA+xE,MAAM,eAAc,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,qZAAqZ,MAAM,eAAc,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,UAAU,WAAW,UAAU,WAAW,GAAG,+xEAA+xE,QAAQ,WAAW,aAAa,IAAG,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,qZAAqZ,QAAQ,WAAW,aAAa,IAAG,CAAE,CAAC,GCAn7L8F,KAAa,CAAC5J,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,y4CAAy4C,MAAM,eAAc,CAAE,CAAC,GCAxoD+F,KAAe,CAAC7J,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,QAAQ,gBAAgB,aAAa,GAAG,eAAe,SAAS,gBAAgB,SAAS,GAAG9D,KAAyB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,4BAA2B,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,8BAA8B,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,WAAU,CAAE,GAAmB,gBAAAA,EAAM,cAAc,UAAU,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAC,CAAE,GAAmB,gBAAAA,EAAM,cAAc,UAAU,EAAE,IAAI,IAAI,IAAI,GAAG,GAAG,EAAC,CAAE,GAAmB,gBAAAA,EAAM,cAAc,UAAU,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,EAAC,CAAE,GAAmB,gBAAAA,EAAM,cAAc,UAAU,EAAE,IAAI,GAAG,IAAI,IAAI,GAAG,EAAC,CAAE,CAAC,GCArxBgG,KAAc,CAAC9J,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,QAAQ,gBAAgB,aAAa,GAAG,eAAe,SAAS,gBAAgB,SAAS,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,OAAO,GAAG,QAAQ,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAC,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,GAAG,0BAAyB,CAAE,GAAmB,gBAAAA,EAAM,cAAc,QAAQ,EAAE,OAAO,GAAG,QAAQ,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,EAAC,CAAE,CAAC,GCAlhBiG,KAAgB,CAAC/J,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,OAAO,8BAA8B,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,gtDAAgtD,MAAM,eAAc,CAAE,CAAC,GCAl9DkG,KAAS,CAAChK,MAA0B,gBAAA8D,EAAM,cAAc,OAAO,EAAE,OAAO,8BAA8B,OAAO,OAAO,QAAQ,OAAO,SAAS,aAAa,MAAM,QAAQ,QAAQ,gBAAgB,aAAa,GAAG,eAAe,SAAS,gBAAgB,SAAS,GAAG9D,EAAK,GAAoB,gBAAA8D,EAAM,cAAc,QAAQ,EAAE,GAAG,8JAA6J,CAAE,CAAC,GCkHtdmG,KAGT;AAAA,EACF,CAAC7H,EAAS,QAAQ,GAAG8H;AAAAA,EACrB,CAAC9H,EAAS,GAAG,GAAG+H;AAAAA,EAChB,CAAC/H,EAAS,EAAE,GAAGgI;AAAAA,EACf,CAAChI,EAAS,QAAQ,GAAGiI;AAAAA,EACrB,CAACjI,EAAS,SAAS,GAAGkI;AAAAA,EACtB,CAAClI,EAAS,SAAS,GAAGmI;AAAAA,EACtB,CAACnI,EAAS,UAAU,GAAGoI;AAAAA,EACvB,CAACpI,EAAS,OAAO,GAAGqI;AAAAA,EACpB,CAACrI,EAAS,YAAY,GAAGsI;AAAAA,EACzB,CAACtI,EAAS,MAAM,GAAGuI;AAAAA,EACnB,CAACvI,EAAS,KAAK,GAAGwI;AAAAA,EAClB,CAACxI,EAAS,aAAa,GAAGyI;AAAAA,EAC1B,CAACzI,EAAS,SAAS,GAAG0I;AAAAA,EACtB,CAAC1I,EAAS,KAAK,GAAG2I;AAAAA,EAClB,CAAC3I,EAAS,QAAQ,GAAG4I;AAAAA,EACrB,CAAC5I,EAAS,SAAS,GAAG6I;AAAAA,EACtB,CAAC7I,EAAS,aAAa,GAAG8I;AAAAA,EAC1B,CAAC9I,EAAS,WAAW,GAAG+I;AAAAA,EACxB,CAAC/I,EAAS,YAAY,GAAGgJ;AAAAA,EACzB,CAAChJ,EAAS,UAAU,GAAGiJ;AAAAA,EACvB,CAACjJ,EAAS,MAAM,GAAGkJ;AAAAA,EACnB,CAAClJ,EAAS,UAAU,GAAGmJ;AAAAA,EACvB,CAACnJ,EAAS,KAAK,GAAGoJ;AAAAA,EAClB,CAACpJ,EAAS,KAAK,GAAGqJ;AAAAA,EAClB,CAACrJ,EAAS,QAAQ,GAAGsJ;AAAAA,EACrB,CAACtJ,EAAS,IAAI,GAAGuJ;AAAAA,EACjB,CAACvJ,EAAS,GAAG,GAAGwJ;AAAAA,EAChB,CAACxJ,EAAS,OAAO,GAAGyJ;AAAAA,EACpB,CAACzJ,EAAS,WAAW,GAAG0J;AAAAA,EACxB,CAAC1J,EAAS,QAAQ,GAAG2J;AAAAA,EACrB,CAAC3J,EAAS,SAAS,GAAG4J;AAAAA,EACtB,CAAC5J,EAAS,MAAM,GAAG6J;AAAAA,EACnB,CAAC7J,EAAS,SAAS,GAAG8J;AAAAA,EACtB,CAAC9J,EAAS,QAAQ,GAAG+J;AAAAA,EACrB,CAAC/J,EAAS,IAAI,GAAGgK;AAAAA,EACjB,CAAChK,EAAS,IAAI,GAAGiK;AAAAA,EACjB,CAACjK,EAAS,IAAI,GAAGkK;AAAAA,EACjB,CAAClK,EAAS,UAAU,GAAGmK;AAAAA,EACvB,CAACnK,EAAS,KAAK,GAAGoK;AAAAA,EAClB,CAACpK,EAAS,KAAK,GAAGqK;AAAAA,EAClB,CAACrK,EAAS,aAAa,GAAGsK;AAAAA,EAC1B,CAACtK,EAAS,YAAY,GAAGuK;AAAAA,EACzB,CAACvK,EAAS,SAAS,GAAGwK;AAAAA,EACtB,CAACxK,EAAS,QAAQ,GAAGyK;AAAAA,EACrB,CAACzK,EAAS,WAAW,GAAG0K;AAAAA,EACxB,CAAC1K,EAAS,UAAU,GAAG2K;AAAAA,EACvB,CAAC3K,EAAS,QAAQ,GAAG4K;AAAAA,EACrB,CAAC5K,EAAS,OAAO,GAAG6K;AAAAA,EACpB,CAAC7K,EAAS,MAAM,GAAG8K;AAAAA,EACnB,CAAC9K,EAAS,WAAW,GAAG+K;AAAAA,EACxB,CAAC/K,EAAS,IAAI,GAAGgL;AAAAA,EACjB,CAAChL,EAAS,QAAQ,GAAGiL;AAAAA,EACrB,CAACjL,EAAS,OAAO,GAAGkL;AAAAA,EACpB,CAAClL,EAAS,IAAI,GAAGmL;AAAAA,EACjB,CAACnL,EAAS,GAAG,GAAGoL;AAAAA,EAChB,CAACpL,EAAS,QAAQ,GAAGqL;AAAAA,EACrB,CAACrL,EAAS,SAAS,GAAGsL;AAAAA,EACtB,CAACtL,EAAS,KAAK,GAAGuL;AAAAA,EAClB,CAACvL,EAAS,IAAI,GAAGwL;AAAAA,EACjB,CAACxL,EAAS,IAAI,GAAGyL;AAAAA,EACjB,CAACzL,EAAS,IAAI,GAAG0L;AAAAA,EACjB,CAAC1L,EAAS,cAAc,GAAG2L;AAAAA,EAC3B,CAAC3L,EAAS,YAAY,GAAG4L;AAAAA,EACzB,CAAC5L,EAAS,IAAI,GAAG6L;AAAAA,EACjB,CAAC7L,EAAS,WAAW,GAAG8L;AAAAA,EACxB,CAAC9L,EAAS,KAAK,GAAG+L;AAAAA,EAClB,CAAC/L,EAAS,YAAY,GAAGgM;AAAAA,EACzB,CAAChM,EAAS,MAAM,GAAGiM;AAAAA,EACnB,CAACjM,EAAS,GAAG,GAAGkM;AAAAA,EAChB,CAAClM,EAAS,QAAQ,GAAGmM;AAAAA,EACrB,CAACnM,EAAS,MAAM,GAAGoM;AAAAA,EACnB,CAACpM,EAAS,KAAK,GAAGqM;AAAAA,EAClB,CAACrM,EAAS,IAAI,GAAGsM;AAAAA,EACjB,CAACtM,EAAS,OAAO,GAAGuM;AAAAA,EACpB,CAACvM,EAAS,MAAM,GAAGwM;AAAAA,EACnB,CAACxM,EAAS,MAAM,GAAGyM;AAAAA,EACnB,CAACzM,EAAS,MAAM,GAAG0M;AAAAA,EACnB,CAAC1M,EAAS,MAAM,GAAG2M;AAAAA,EACnB,CAAC3M,EAAS,QAAQ,GAAG4M;AAAAA,EACrB,CAAC5M,EAAS,WAAW,GAAG6M;AAAAA,EACxB,CAAC7M,EAAS,MAAM,GAAG8M;AAAAA,EACnB,CAAC9M,EAAS,OAAO,GAAG+M;AAAAA,EACpB,CAAC/M,EAAS,GAAG,GAAGgN;AAAAA,EAChB,CAAChN,EAAS,IAAI,GAAGiN;AAAAA,EACjB,CAACjN,EAAS,MAAM,GAAGkN;AAAAA,EACnB,CAAClN,EAAS,IAAI,GAAGmN;AAAAA,EACjB,CAACnN,EAAS,UAAU,GAAGoN;AAAAA,EACvB,CAACpN,EAAS,MAAM,GAAGqN;AAAAA,EACnB,CAACrN,EAAS,WAAW,GAAGsN;AAAAA,EACxB,CAACtN,EAAS,MAAM,GAAGuN;AAAAA,EACnB,CAACvN,EAAS,IAAI,GAAGwN;AAAAA,EACjB,CAACxN,EAAS,KAAK,GAAGyN;AAAAA,EAClB,CAACzN,EAAS,UAAU,GAAG0N;AAAAA,EACvB,CAAC1N,EAAS,GAAG,GAAG2N;AAAAA,EAChB,CAAC3N,EAAS,OAAO,GAAG4N;AAAAA,EACpB,CAAC5N,EAAS,SAAS,GAAG6N;AAAAA,EACtB,CAAC7N,EAAS,QAAQ,GAAG8N;AAAAA,EACrB,CAAC9N,EAAS,UAAU,GAAG+N;AAAAA,EACvB,CAAC/N,EAAS,GAAG,GAAGgO;AAClB,GAIMC,KAA6C;AAAA,EACjD,CAAC5N,EAAK,EAAE,GAAG;AAAA,EACX,CAACA,EAAK,EAAE,GAAG;AAAA,EACX,CAACA,EAAK,EAAE,GAAG;AAAA,EACX,CAACA,EAAK,EAAE,GAAG;AACb,GAyBa6N,KAAsB,CAAC;AAAA,EAClC,MAAAC;AAAA,EACA,MAAA3M,IAAO;AAAA;AAAA,EACP,WAAA7D;AAAA,EACA,OAAAwB;AAAA,EACA,GAAGvB;AACL,MAAM;AAKJ,QAAMwQ,IAAW5M,IAAOyM,GAAQzM,CAAI,IAAI,QAClC6M,IAAgBF,MAASnO,EAAS,UAAUuB,KAAUsG,GAAQsG,CAAI;AAExE,SACE,gBAAAtQ;AAAA,IAACwQ;AAAA,IAAA;AAAA,MACC,OAAOD;AAAA,MACP,QAAQA;AAAA,MACR,MAAA5M;AAAA,MACA,WAAW1D,EAAKqB,KAASO,EAAeP,CAAK,GAAGxB,CAAS;AAAA,MACxD,GAAGC;AAAA,IAAA;AAAA,EAAA;AAGV,GC5Pa0Q,KAAoC,CAAC;AAAA,EAChD,SAAAC;AAAA,EACA,MAAA/M;AAAA,EACA,WAAA7D;AACF,MAAM;AACJ,MAAI,CAAC4Q,EAAS,QAAO;AAErB,QAAMC,IACJ,OAAOD,KAAY,WACf,wBAAOL,IAAA,EAAK,MAAMK,GAAS,MAAA/M,EAAA,CAAY,IACvC+M;AAEN,SACE,gBAAA1Q,EAAC,UAAK,WAAWsD,EAAGxD,CAAS,GAC3B,UAAA,gBAAAE,EAAC2Q,KAAQ,EAAA,CACX;AAEJ;AAEAF,GAAY,cAAc;ACxCnB,MAAMG,KAA2C;AAAA,EACtD,CAAClO,EAAY,GAAG,GAAG;AAAA,EACnB,CAACA,EAAY,EAAE,GAAG;AAAA,EAClB,CAACA,EAAY,EAAE,GAAG;AAAA,EAClB,CAACA,EAAY,EAAE,GAAG;AAAA,EAClB,CAACA,EAAY,EAAE,GAAG;AAAA,EAClB,CAACA,EAAY,EAAE,GAAG;AAAA,EAClB,CAACA,EAAY,GAAG,GAAG;AAAA,EACnB,CAACA,EAAY,KAAK,GAAG;AAAA,EACrB,CAACA,EAAY,OAAO,GAAG;AACzB,GAEamO,KAAa,CAACC,MACpBA,IACEF,GAAYE,CAAO,IADL,MAIVC,KAAY,CAACD,MAA4C;AACpE,MAAKA;AAIL,YAAQA,GAAA;AAAA,MACN,KAAKzN,GAAQ;AACX,eAAOpC,EAAU;AAAA,MACnB,KAAKoC,GAAQ;AACX,eAAOpC,EAAU;AAAA,MACnB,KAAKoC,GAAQ;AACX,eAAOpC,EAAU;AAAA,MACnB,KAAKoC,GAAQ;AACX,eAAOpC,EAAU;AAAA,MACnB,KAAKoC,GAAQ;AACX,eAAOpC,EAAU;AAAA,MACnB;AACE,eAAOA,EAAU;AAAA,IAAA;AAEvB,GCRa+P,IAAsB,CAAC;AAAA,EAClC,SAAAF,IAAUpO,EAAY;AAAA,EACtB,OAAApB,IAAQL,EAAU;AAAA,EAClB,UAAAgQ;AAAA,EACA,WAAAnR;AAAA,EACA,GAAGC;AACL,MAEI,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWC,EAAK4B,EAAeP,CAAK,GAAGuP,GAAWC,CAAO,GAAGhR,CAAS;AAAA,IACpE,GAAGC;AAAA,IAEH,UAAAkR;AAAA,EAAA;AAAA;AAKPD,EAAK,cAAc;ACrCnB,MAAME,KAAuC;AAAA,EAC3C,CAAC7Q,EAAO,OAAO,GAAG;AAAA,EAClB,CAACA,EAAO,GAAG,GAAG;AAAA,EACd,CAACA,EAAO,QAAQ,GAAG;AAAA,EACnB,CAACA,EAAO,KAAK,GAAG;AAAA,EAChB,CAACA,EAAO,WAAW,GAAG;AAAA,EACtB,CAACA,EAAO,MAAM,GAAG;AAAA,EACjB,CAACA,EAAO,UAAU,GAAG;AAAA,EACrB,CAACA,EAAO,IAAI,GAAG;AACjB,GAUa8Q,KAA0C,CAAC;AAAA,EACtD,QAAAC,IAAS/Q,EAAO;AAAA,EAChB,UAAA4Q;AAAA,EACA,MAAAI;AAAA,EACA,GAAGtR;AACL,MACE,gBAAAC,EAAAsR,IAAA,EACG,UAAAD,KACC,gBAAArR,EAAC,OAAA,EAAI,WAAWC,EAAK,SAAS,UAAUiR,GAAaE,CAAM,CAAC,GAAI,GAAGrR,GAChE,UAAAkR,GACH,EAAA,CAEJ;AAGFE,GAAe,cAAc;AC1CtB,MAAMI,KAAwC;AAAA,EACnD,CAACjP,EAAO,IAAI,GAAG;AAAA,EACf,CAACA,EAAO,EAAE,GAAG;AAAA,EACb,CAACA,EAAO,EAAE,GAAG;AAAA,EACb,CAACA,EAAO,EAAE,GAAG;AAAA,EACb,CAACA,EAAO,EAAE,GAAG;AAAA,EACb,CAACA,EAAO,EAAE,GAAG;AAAA,EACb,CAACA,EAAO,IAAI,GAAG;AACjB;AAEA,SAAwBkP,EAAaC,GAAwB;AAC3D,SAAOF,GAAcE,CAAM;AAC7B;ACwCO,MAAMC,KAAwC,CAAC;AAAA,EACpD,QAAAN,IAAS/Q,EAAO;AAAA,EAChB,WAAAP;AAAA,EACA,MAAA6R;AAAA,EACA,SAAAC;AAAA,EACA,MAAAP;AAAA,EACA,SAAAP,IAAUzN,GAAQ;AAAA,EAClB,GAAGtD;AACL,MACE,gBAAAC,EAACmR,IAAA,EAAe,MAAAE,GAAY,QAAAD,GAC1B,UAAA,gBAAAjR;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWmD;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA1B,EAAiBhB,EAAY,OAAO;AAAA,MACpCS,EAAaV,EAAgB,KAAK;AAAA,MAClC6Q,EAAalP,EAAO,EAAE;AAAA,MACtBxC;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,IAEJ,UAAA;AAAA,MAAA,gBAAAC;AAAA,QAACyQ;AAAA,QAAA;AAAA,UACC,SAASkB;AAAA,UACT,WAAWrO,EAAG,UAAUzB,EAAekP,GAAUD,CAAO,CAAE,CAAC;AAAA,QAAA;AAAA,MAAA;AAAA,MAG5Dc,KAAW,gBAAA5R,EAACgR,GAAA,EAAK,OAAOD,GAAUD,CAAO,GAAI,UAAAc,EAAA,CAAQ;AAAA,IAAA;AAAA,EAAA;AACxD,EAAA,CACF;AAGFF,GAAc,cAAc;ACxD5B,MAAMG,KAAyC;AAAA,EAC7C,CAACxO,GAAQ,OAAO,GAAGpD;AAAA,IACjBoB,EAAaX,GAAY,cAAc;AAAA,IACvCW,EAAaX,GAAY,cAAcJ,EAAa,KAAK;AAAA,IACzDe,EAAaX,GAAY,cAAcJ,EAAa,MAAM;AAAA,EAAA;AAAA,EAE5D,CAAC+C,GAAQ,SAAS,GAAGpD;AAAA,IACnB;AAAA,IACA;AAAA,IACA2B,EAAiBhB,EAAY,OAAO;AAAA,IACpCgB,EAAiBhB,EAAY,OAAON,EAAa,KAAK;AAAA;AAAA,IACtDsB,EAAiBhB,EAAY,OAAON,EAAa,MAAM;AAAA,IACvDsB,EAAiBhB,EAAY,UAAUN,EAAa,QAAQ;AAAA,IAC5De,EAAaX,GAAY,gBAAgBJ,EAAa,MAAM;AAAA,EAAA;AAAA,EAE9D,CAAC+C,GAAQ,OAAO,GAAGpD;AAAA,IACjBoB,EAAaX,GAAY,cAAc;AAAA,IACvCW,EAAaX,GAAY,cAAcJ,EAAa,KAAK;AAAA,IACzDe,EAAaX,GAAY,cAAcJ,EAAa,MAAM;AAAA,EAAA;AAAA,EAE5D,CAAC+C,GAAQ,MAAM,GAAGpD;AAAA,IAChBoB,EAAaX,GAAY,aAAa;AAAA,IACtCW,EAAaX,GAAY,aAAaJ,EAAa,KAAK;AAAA,IACxDe,EAAaX,GAAY,aAAaJ,EAAa,MAAM;AAAA,EAAA;AAAA,EAE3D,CAAC+C,GAAQ,IAAI,GAAGpD;AAAA,IACd;AAAA,IACA;AAAA,IACAoB,EAAaV,EAAgB,cAAcL,EAAa,KAAK;AAAA,EAAA;AAAA,EAE/D,CAAC+C,GAAQ,UAAU,GAAGpD;AAAA,IACpB;AAAA,IACA;AAAA,IACAoB,EAAaV,EAAgB,cAAcL,EAAa,KAAK;AAAA,IAC7DkR,EAAalP,EAAO,IAAI;AAAA,EAAA;AAE5B,GAEMwP,KAA6C;AAAA,EACjD,CAACzO,GAAQ,OAAO,GAAGxB,EAAenB,GAAY,WAAW;AAAA,EACzD,CAAC2C,GAAQ,SAAS,GAAGxB,EAAenB,GAAY,aAAa;AAAA,EAC7D,CAAC2C,GAAQ,OAAO,GAAGxB,EAAenB,GAAY,WAAW;AAAA,EACzD,CAAC2C,GAAQ,MAAM,GAAGxB,EAAenB,GAAY,UAAU;AAAA,EACvD,CAAC2C,GAAQ,IAAI,GAAGxB,EAAenB,GAAY,WAAW;AAAA,EACtD,CAAC2C,GAAQ,UAAU,GAAGpD;AAAA,IACpB4B,EAAeZ,EAAU,SAAS;AAAA,IAClCY,EAAenB,GAAY,aAAaJ,EAAa,KAAK;AAAA,EAAA;AAE9D,GAEMmD,KAAyC;AAAA,EAC7C,CAACjB,EAAK,EAAE,GAAGvC,EAAK,kBAAkB,WAAW;AAAA,EAC7C,CAACuC,EAAK,EAAE,GAAGvC,EAAK,iBAAiB,WAAW;AAAA,EAC5C,CAACuC,EAAK,EAAE,GAAGvC,EAAK,aAAa,WAAW;AAC1C,GAEM8R,KAAyC;AAAA,EAC7C,CAACvP,EAAK,EAAE,GAAGvC,EAAK,WAAW,cAAc;AAAA,EACzC,CAACuC,EAAK,EAAE,GAAGvC,EAAK,WAAW,cAAc;AAAA,EACzC,CAACuC,EAAK,EAAE,GAAGvC,EAAK,WAAW,cAAc;AAC3C,GAsBa+R,KAA0B,CAAC;AAAA,EACtC,SAAAlB,IAAUzN,GAAQ;AAAA,EAClB,MAAAM,IAAOnB,EAAK;AAAA,EACZ,YAAAyP,IAAa;AAAA,EACb,aAAAC;AAAA,EACA,cAAAC;AAAA,EACA,WAAArS;AAAA,EACA,UAAAmR;AAAA,EACA,GAAGlR;AACL,MAEI,gBAAAC;AAAA,EAACoS;AAAAA,EAAA;AAAA,IACC,WAAW9O;AAAA,MACT;AAAA,MACA2O,KAAc;AAAA;AAAA,MACDT,EAAbS,IAA0B3P,EAAO,OAAqBA,EAAO,EAAxB;AAAA,MACrC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACAmB,GAAWE,CAAI;AAAA,MACfkO,GAAcf,CAAO;AAAA,MACrBmB,KAAc;AAAA,MACdnS;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,IAEJ,UAAA,gBAAAI;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWF;AAAA,UACT;AAAA,UACA6R,GAAkBhB,CAAO;AAAA,QAAA;AAAA,QAG3B,UAAA;AAAA,UAAA,gBAAA9Q;AAAA,YAACyQ;AAAA,YAAA;AAAA,cACC,SAASyB;AAAA,cACT,MAAAvO;AAAA,cACA,WAAW1D,EAAK8R,GAAWpO,CAAI,GAAG,kCAAkC;AAAA,YAAA;AAAA,UAAA;AAAA,UAGrEsN;AAAA,UAED,gBAAAjR;AAAA,YAACyQ;AAAA,YAAA;AAAA,cACC,SAAS0B;AAAA,cACT,MAAAxO;AAAA,cACA,WAAW1D,EAAK8R,GAAWpO,CAAI,GAAG,kCAAkC;AAAA,YAAA;AAAA,UAAA;AAAA,QACtE;AAAA,MAAA;AAAA,IAAA;AAAA,EACF;AAAA;AAKNqO,GAAO,cAAc;AClKd,MAAMK,KAAwC;AAAA,EACnD,CAAC9P,GAAO,IAAI,GAAG;AAAA,EACf,CAACA,GAAO,EAAE,GAAG;AAAA,EACb,CAACA,GAAO,EAAE,GAAG;AAAA,EACb,CAACA,GAAO,EAAE,GAAG;AAAA,EACb,CAACA,GAAO,EAAE,GAAG;AAAA,EACb,CAACA,GAAO,EAAE,GAAG;AACf;AAEA,SAAwB+P,GACtBC,GACAhR,GACe;AACf,SAAKgR,IAEDhR,MAAiBjB,EAAa,OACzB+R,GAAcE,CAAM,IAGtBhS,GAAiB8R,GAAcE,CAAM,GAAGhR,CAAY,IANvC;AAOtB;ACRO,IAAKiR,uBAAAA,OACVA,EAAA,UAAU,WACVA,EAAA,YAAY,aACZA,EAAA,WAAW,YAHDA,IAAAA,MAAA,CAAA,CAAA;AAeZ,MAAMC,KAA4C;AAAA,EAC/C,SAAyB9R,EAAgB;AAAA,EACzC,WAA2BA,EAAgB;AAAA,EAC3C,UAA0BA,EAAgB;AAC7C,GAqBa+R,KAAsB,CAAC;AAAA,EAClC,UAAAzB;AAAA,EACA,WAAAnR;AAAA,EACA,SAAA6S;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,UAAAC;AAAA,EACA,QAAAN,IAAShQ,GAAO;AAAA,EAChB,GAAGxC;AACL,MAAM;AACJ,QAAM+S,IAAkBL,GAAWG,CAAU;AAE7C,SACE,gBAAA5S;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWsD;AAAA,QACTuP,IAAW,aAAaP,GAAaC,CAAM;AAAA,QAC3CM,KAAYjR,EAAiBhB,EAAY,OAAO;AAAA,QAChDS,EAAayR,CAAe;AAAA,QAC5BH,IAAU,UAAU;AAAA,QACpBnB,EAAalP,EAAO,EAAE;AAAA,QACtBxC;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,MAEH,UAAAkR;AAAA,IAAA;AAAA,EAAA;AAGP;AAEAyB,GAAK,cAAc;ACvEnB,MAAMK,KAAqC;AAAA,EACzC,CAAC3S,GAAM,QAAQ,GAAG;AAAA,EAClB,CAACA,GAAM,MAAM,GAAG;AAAA,EAChB,CAACA,GAAM,GAAG,GAAG;AAAA,EACb,CAACA,GAAM,KAAK,GAAG;AACjB,GAEM4S,KAAyC;AAAA,EAC7C,CAAC5Q,GAAQ,MAAM,GAAG;AAAA,EAClB,CAACA,GAAQ,OAAO,GAAG;AAAA,EACnB,CAACA,GAAQ,MAAM,GAAG;AAAA,EAClB,CAACA,GAAQ,GAAG,GAAG;AAAA,EACf,CAACA,GAAQ,MAAM,GAAG;AAAA,EAClB,CAACA,GAAQ,KAAK,GAAG;AACnB,GAEM6Q,KAAyC;AAAA,EAC7C,CAACxQ,EAAQ,IAAI,GAAG;AAAA,EAChB,CAACA,EAAQ,EAAE,GAAG;AAAA,EACd,CAACA,EAAQ,EAAE,GAAG;AAAA,EACd,CAACA,EAAQ,EAAE,GAAG;AAAA,EACd,CAACA,EAAQ,EAAE,GAAG;AAAA,EACd,CAACA,EAAQ,EAAE,GAAG;AAChB,GAwCayQ,KAAwB,CAAC;AAAA,EACpC,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,aAAAC,IAAchR,EAAY;AAAA,EAC1B,SAAAiR,IAAU7Q,EAAQ;AAAA,EAClB,UAAAwO;AAAA,EACA,WAAAnR;AAAA,EACA,GAAGC;AACL,MAEI,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWsD;AAAA,MACT;AAAA,MACA+P,MAAgBhR,EAAY,UAAU;AAAA,MACtC4Q,GAAcK,CAAO;AAAA,MACrBH,KAASJ,GAAYI,CAAK;AAAA,MAC1BC,KAAWJ,GAAcI,CAAO;AAAA,MAChCtT;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,IAEH,UAAAkR;AAAA,EAAA;AAAA;AAKPiC,GAAM,cAAc;AC/Cb,MAAMK,KAA8B,CAAC;AAAA,EAC1C,UAAAtC;AAAA,EACA,QAAAuC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,MAAA/B;AAAA,EACA,OAAAgC;AAAA,EACA,SAAAhB;AAAA,EACA,GAAG5S;AACL,MAEI,gBAAAC,EAAC0S,IAAA,EAAM,GAAG3S,GACR,UAAA,gBAAAI;AAAA,EAAC+S;AAAA,EAAA;AAAA,IACC,aAAaP,IAAUtQ,EAAY,MAAMA,EAAY;AAAA,IACrD,SAASsQ,IAAUlQ,EAAQ,KAAKA,EAAQ;AAAA,IACxC,OAAOrC,GAAM;AAAA,IACb,SAASgC,GAAQ;AAAA,IACjB,WAAWkB,EAAG,eAAe;AAAA,IAE7B,UAAA;AAAA,MAAA,gBAAAnD;AAAA,QAAC+S;AAAA,QAAA;AAAA,UACC,aAAa7Q,EAAY;AAAA,UACzB,SAASsQ,IAAUlQ,EAAQ,KAAKA,EAAQ;AAAA,UAExC,UAAA;AAAA,YAAA,gBAAAtC;AAAA,cAAC+S;AAAA,cAAA;AAAA,gBACC,SAASP,IAAUlQ,EAAQ,KAAKA,EAAQ;AAAA,gBACxC,OAAOrC,GAAM;AAAA,gBAEZ,UAAA;AAAA,kBAAAuR,KAAQ,CAACgB,KACR,gBAAA3S;AAAA,oBAAC0S;AAAA,oBAAA;AAAA,sBACC,SAAO;AAAA,sBACP,YAAYF,GAAe;AAAA,sBAC3B,QAAQjQ,GAAO;AAAA,sBAEf,UAAA,gBAAAvC,EAACqQ,MAAK,MAAMsB,GAAM,MAAMnP,EAAK,IAAI,OAAO3B,GAAW,OAAA,CAAQ;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAG9D8Q,KAAQgB,KACP,gBAAA3S,EAACqQ,IAAA,EAAK,MAAMsB,GAAM,MAAMnP,EAAK,IAAI,OAAO3B,GAAW,OAAA,CAAQ;AAAA,kBAE7D,gBAAAV;AAAA,oBAAC+S;AAAA,oBAAA;AAAA,sBACC,aAAa7Q,EAAY;AAAA,sBACzB,SAASsQ,IAAUlQ,EAAQ,KAAKA,EAAQ;AAAA,sBAEvC,UAAA;AAAA,wBAAAgR,KACC,gBAAAzT;AAAA,0BAACgR;AAAA,0BAAA;AAAA,4BACC,SAAStO,EAAY;AAAA,4BACrB,OAAO7B,GAAW;AAAA,4BAClB,WAAWyC,EAAG,gBAAgB;AAAA,4BAE7B,UAAAmQ;AAAA,0BAAA;AAAA,wBAAA;AAAA,wBAGJE,KACC,gBAAA3T,EAACgR,GAAA,EAAK,SAAStO,EAAY,IAAI,WAAWY,EAAG,gBAAgB,GAC1D,UAAAqQ,EAAA,CACH;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAEJ;AAAA,cAAA;AAAA,YAAA;AAAA,YAEDD,KAAe,gBAAA1T,EAAC4T,IAAA,EAAY,MAAMF,EAAA,CAAa;AAAA,YAC/CzC;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAEFuC,uBAAW,OAAA,EAAI,WAAWlQ,EAAG,CAACqP,KAAW,QAAQ,GAAI,UAAAa,EAAA,CAAO;AAAA,IAAA;AAAA,EAAA;AAAA,GAEjE,GAUSI,KAA+C,CAAC,EAAE,MAAAC,QACzD,OAAOA,KAAS,WACX,gBAAA7T,EAACgR,GAAA,EAAK,OAAO/P,EAAU,WAAY,UAAA4S,GAAK,IAI/C,gBAAA7T,EAAC,MAAA,EAAG,WAAU,6CACX,UAAA6T,EAAK,IAAI,CAACC,MACT,gBAAA9T,EAAC,MAAA,EAAc,WAAW6B,EAAeZ,EAAU,SAAS,GAC1D,UAAA,gBAAAjB,EAACgR,GAAA,EAAK,OAAO/P,EAAU,WAAY,UAAA6S,EAAA,CAAK,EAAA,GADjCA,CAET,CACD,EAAA,CACH;AAIJP,GAAS,cAAc;AC3IhB,SAASQ,GAAUrS,GAAyB;AACjD,SAA8BA,KAAU;AAC1C;ACiBO,MAAMsS,KAAgC,CAAC,EAAE,OAAAtS,GAAO,MAAAuS,GAAM,GAAGlU,QAC9CgU,GAAUrS,CAAK,IAG7B,gBAAA1B,EAACgR,GAAA,EAAK,OAAO/P,EAAU,OAAO,SAASyB,EAAY,KAAM,GAAG3C,GACzD,UAAAkU,EAAA,CACH,IACE;AAGND,GAAU,cAAc;ACOxB,MAAMvQ,KAAmC;AAAA,EACvC,CAACjB,EAAK,EAAE,GAAGvC,EAAK,SAAS;AAAA,EACzB,CAACuC,EAAK,EAAE,GAAGvC,EAAK,SAAS;AAAA,EACzB,CAACuC,EAAK,EAAE,GAAGvC,EAAK,SAAS;AAAA,EACzB,CAACuC,EAAK,EAAE,GAAGvC,EAAK,SAAS;AAAA,EACzB,CAACuC,EAAK,EAAE,GAAGvC,EAAK,SAAS;AAC3B,GAEMiU,KAA4C;AAAA,EAChD,CAAC1R,EAAK,EAAE,GAAGvC,EAAK,uBAAuB;AAAA,EACvC,CAACuC,EAAK,EAAE,GAAGvC,EAAK,uBAAuB;AAAA,EACvC,CAACuC,EAAK,EAAE,GAAGvC,EAAK,yBAAyB;AAAA,EACzC,CAACuC,EAAK,EAAE,GAAGvC,EAAK,uBAAuB;AAAA,EACvC,CAACuC,EAAK,EAAE,GAAGvC,EAAK,uBAAuB;AACzC,GAkCakU,KAA8B,CAAC;AAAA,EAC1C,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,MAAA3Q,IAAOnB,EAAK;AAAA,EACZ,QAAAiP,IAASnP,EAAO;AAAA,EAChB,WAAAxC;AAAA,EACA,gBAAAyU;AAAA,EACA,OAAAC;AAAA,EACA,eAAAC;AAAA,EACA,GAAG1U;AACL,MAAM;AACJ,QAAM2U,IAAoB,CAAC,CAACJ,KAAiB,CAACF;AAE9C,SACE,gBAAAjU,EAACwU,IAAA,EAAM,WAAU,iCACf,UAAA;AAAA,IAAA,gBAAA3U;AAAA,MAAC4U;AAAAA,MAAA;AAAA,QACC,SAAAR;AAAA,QACA,UAAAC;AAAA,QACA,eAAeK;AAAA,QACf,WAAWpR;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA1B,EAAiBhB,EAAY,OAAO;AAAA,UACpC;AAAA,UACA4Q,EAAaC,CAAM;AAAA,UACnBhO,GAAWE,CAAI;AAAA,UACfuQ,GAAoBvQ,CAAI;AAAA,UACxB;AAAA,UACA;AAAA,UACAtC,EAAaX,GAAY,gBAAgBJ,EAAa,OAAO;AAAA,UAC7DsB,EAAiBhB,EAAY,QAAQN,EAAa,OAAO;AAAA,UACzDoU,KACE;AAAA,UACF5U;AAAA,QAAA;AAAA,QAED,GAAGC;AAAA,QAEH,UAAA2U,IACC,gBAAA1U;AAAA,UAACqQ;AAAA,UAAA;AAAA,YACC,MAAMlO,EAAS;AAAA,YACf,OAAOtB,GAAW;AAAA,YAClB,WAAU;AAAA,UAAA;AAAA,QAAA,IAGZ,gBAAAb;AAAA,UAACqQ;AAAA,UAAA;AAAA,YACC,MAAMlO,EAAS;AAAA,YACf,OAAOlB,EAAU;AAAA,YACjB,WAAWhB;AAAA,cACT;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,IAGHuU,KACC,gBAAAxU;AAAA,MAAC6U;AAAA,MAAA;AAAA,QACC,WAAWvR;AAAA,UACTzB,EAAeZ,EAAU,OAAO;AAAA,UAChC2P,GAAYjN,CAAI;AAAA,UAChB;AAAA,UACA4Q;AAAA,QAAA;AAAA,QAGD,UAAAC;AAAA,MAAA;AAAA,IAAA;AAAA,IAGJC,KACC,gBAAAzU,EAACgU,IAAA,EAAU,OAAOI,GAAS,MAAK,oCAAA,CAAoC;AAAA,EAAA,GAExE;AAEJ;AAEAD,GAAS,cAAc;AClJhB,MAAMW,KAAiD,CAAC;AAAA,EAC7D,UAAA7D;AAAA,EACA,WAAAnR;AAAA,EACA,GAAGC;AACL,MAEI,gBAAAC,EAAC,UAAK,WAAWC,EAAK,kBAAkBH,CAAS,GAAI,GAAGC,GACrD,UAAAkR,GACH;AAIJ6D,GAAU,cAAc;ACejB,MAAMC,KAAuB,CAAI;AAAA,EACtC,aAAAC;AAAA,EACA,UAAAX;AAAA,EACA,OAAA3S;AACF,MAAkD;AAChD,QAAMuT,IAAevT,MAAU,QACzB,CAACwT,GAAeC,CAAgB,IAAIC,EAAYJ,CAAW,GAE3DK,IAAgBJ,IAAevT,IAAQwT,GACvCI,IAAmBC;AAAA,IACvB,CAAC7T,MAAa;AACZ,MAAA2S,IAAW3S,CAAK,GACXuT,KACHE,EAAiBzT,CAAK;AAAA,IAE1B;AAAA,IACA,CAACuT,GAAcZ,CAAQ;AAAA,EAAA;AAGzB,SAAOmB;AAAA,IACL,MAAM,CAACH,GAAeC,CAAgB;AAAA,IACtC,CAACA,GAAkBD,CAAa;AAAA,EAAA;AAEpC;ACrBO,SAASI,GAAc;AAAA,EAC5B,aAAAC,IAAc;AAAA,EACd,MAAMC;AAAA,EACN,cAAAC;AACF,IAA0B,IAAyB;AACjD,QAAM,CAACvE,GAAMwE,CAAO,IAAId,GAAqB;AAAA,IAC3C,aAAa,MAAMW;AAAA,IACnB,UAAUE;AAAA,IACV,OAAOD;AAAA,EAAA,CACR,GAEKG,IAASP,EAAY,MAAMM,EAAQ,CAACxE,CAAI,GAAG,CAACA,GAAMwE,CAAO,CAAC;AAEhE,SAAO,EAAE,MAAAxE,GAAM,QAAAyE,GAAQ,SAAAD,EAAA;AACzB;;;;;GCoBME,KAA0C,CAAC;AAAA,EAC/C,aAAAL,IAAc;AAAA,EACd,MAAMC;AAAA,EACN,cAAAC;AAAA,EACA,QAAAI;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,UAAAhF;AAAA,EACA,WAAAnR;AAAA,EACA,OAAAoW;AACF,MAAM;AACJ,QAAM,EAAE,MAAA7E,GAAM,QAAAyE,EAAA,IAAWL,GAAc;AAAA,IACrC,aAAAC;AAAA,IACA,MAAMC;AAAA,IACN,cAAAC;AAAA,EAAA,CACD;AAED,SACE,gBAAAzV,EAAC,SAAI,WAAWF,EAAKkW,GAAO,MAAMrW,CAAS,GAAG,OAAAoW,GAC3C,UAAA;AAAA,IAAAF,IAAS,EAAE,MAAA3E,GAAM,QAAAyE,GAAQ;AAAA,IACzBG,IACC,gBAAAjW,EAAC,OAAA,EAAI,WAAWC,EAAKkW,GAAO,SAAS,EAAE,CAACA,GAAO,WAAW,GAAG9E,GAAM,GAChE,UAAAJ,EAAA,CACH,IACEI,IACFJ,IACE;AAAA,EAAA,GACN;AAEJ,GC3DamF,KAAwC,CAAC;AAAA,EACpD,SAAAhC;AAAA,EACA,UAAAiC;AAAA,EACA,UAAApF;AAAA,EACA,WAAAnR;AAAA,EACA,GAAGC;AACL,wBAEKuW,IAAA,EAAS,UAAAD,GACP,UAAA,CAAC,EAAE,OAAAE,QACF,gBAAApW;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,MAAK;AAAA,IACL,MAAK;AAAA,IACL,gBAAciU;AAAA,IACd,UAAAiC;AAAA,IACA,WAAW/S;AAAA,MACT;AAAA,MACA;AAAA,MACAkO,EAAalP,EAAO,EAAE;AAAA,MACtB;AAAA,MACA;AAAA,MACAiU,KAASlV,EAAaV,EAAgB,YAAY;AAAA,MAClDU,EAAaV,EAAgB,cAAcL,EAAa,KAAK;AAAA,MAC7DR;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,IAGJ,UAAA;AAAA,MAAA,gBAAAC,EAAC,QAAA,EAAK,WAAU,oDACb,UAAAoU,KACC,gBAAApU;AAAA,QAACqQ;AAAA,QAAA;AAAA,UACC,MAAMlO,EAAS;AAAA,UACf,MAAMK,EAAK;AAAA,UACX,OAAOvB,EAAU;AAAA,QAAA;AAAA,MAAA,GAGvB;AAAA,MACA,gBAAAjB;AAAA,QAACgR;AAAA,QAAA;AAAA,UACC,SAAStO,EAAY;AAAA,UACrB,OAAOzB,EAAU;AAAA,UACjB,WAAU;AAAA,UAET,UAAAgQ;AAAA,QAAA;AAAA,MAAA;AAAA,IACH;AAAA,EAAA;AAAA,GAGN;AAIJmF,GAAc,cAAc;AC1CrB,MAAMI,KAA8C,CAAC;AAAA,EAC1D,MAAA7E;AAAA,EACA,MAAAkC;AAAA,EACA,SAAA4C;AAAA,EACA,UAAAJ;AAAA,EACA,aAAAK;AAAA,EACA,WAAA5W;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMgR,IAAY2F,IAAczV,EAAU,cAAcA,EAAU,SAC5D0V,IAAeD,IACjBzV,EAAU,cACVA,EAAU,WACR2V,IAAYF,IAAc5V,GAAU,cAAcA,GAAU;AAElE,2BACGwV,IAAA,EAAS,UAAAD,GACP,UAAA,CAAC,EAAE,OAAAE,QACF,gBAAApW;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,UAAAkW;AAAA,MACA,WAAW/S;AAAA,QACT;AAAA,QACA;AAAA,QACAkO,EAAalP,EAAO,EAAE;AAAA,QACtB;AAAA,QACA;AAAA,QACAiU,KAASlV,EAAaV,EAAgB,YAAY;AAAA,QAClDU,EAAaV,EAAgB,cAAcL,EAAa,KAAK;AAAA,QAC7DR;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAC,EAAC,UAAK,WAAU,oDACb,UAAA,OAAO2R,KAAS,WACf,gBAAA3R,EAACqQ,IAAA,EAAK,MAAMsB,GAAkB,MAAMnP,EAAK,IAAI,OAAOoU,EAAA,CAAW,IAE/DjF,GAEJ;AAAA,QAEA,gBAAAxR,EAAC,QAAA,EAAK,WAAU,iCACd,UAAA;AAAA,UAAA,gBAAAH;AAAA,YAACgR;AAAA,YAAA;AAAA,cACC,SAAStO,EAAY;AAAA,cACrB,OAAOqO;AAAA,cACP,WAAU;AAAA,cAET,UAAA8C;AAAA,YAAA;AAAA,UAAA;AAAA,UAEF4C,KACC,gBAAAzW;AAAA,YAACgR;AAAA,YAAA;AAAA,cACC,SAAStO,EAAY;AAAA,cACrB,OAAOiU;AAAA,cACP,WAAU;AAAA,cAET,UAAAF;AAAA,YAAA;AAAA,UAAA;AAAA,QACH,EAAA,CAEJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAGN;AAEJ;AAEAD,GAAiB,cAAc;AC9FxB,MAAMK,KAA8C,CAAC;AAAA,EAC1D,UAAA5F;AAAA,EACA,WAAAnR;AAAA,EACA,GAAGC;AACL,MAEI,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,MAAK;AAAA,IACL,WAAWsD,EAAG,oBAAoBxD,CAAS;AAAA,IAC1C,GAAGC;AAAA,IAEJ,UAAA,gBAAAC,EAACgR,KAAK,SAAStO,EAAY,OAAO,OAAOzB,EAAU,OAChD,UAAAgQ,EAAA,CACH;AAAA,EAAA;AAAA;AAKN4F,GAAiB,cAAc;ACtBxB,MAAMC,KAAwC,CAAC;AAAA,EACpD,WAAAhX;AAAA,EACA,GAAGC;AACL,MAEI,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,MAAK;AAAA,IACL,WAAWsD;AAAA,MACT;AAAA,MACAjC,EAAaJ,EAAU,WAAW;AAAA,MAClCnB;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,EAAA;AAAA;AAKV+W,GAAc,cAAc;ACArB,MAAMC,KAAsC,CAAC;AAAA,EAClD,UAAA9F;AAAA,EACA,UAAAoF;AAAA,EACA,aAAAK;AAAA,EACA,WAAA5W;AAAA,EACA,GAAGC;AACL,wBAEKuW,IAAA,EAAS,UAAAD,GACP,UAAA,CAAC,EAAE,OAAAE,QACF,gBAAAvW;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,MAAK;AAAA,IACL,UAAAqW;AAAA,IACA,WAAW/S;AAAA,MACT;AAAA,MACA;AAAA,MACAkO,EAAalP,EAAO,EAAE;AAAA,MACtB;AAAA,MACA;AAAA,MACAiU,KAASlV,EAAaV,EAAgB,YAAY;AAAA,MAClDU,EAAaV,EAAgB,cAAcL,EAAa,KAAK;AAAA,MAC7DR;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,IAEJ,UAAA,gBAAAC;AAAA,MAACgR;AAAA,MAAA;AAAA,QACC,SAAStO,EAAY;AAAA,QACrB,OAAOgU,IAAczV,EAAU,cAAcA,EAAU;AAAA,QACvD,WAAU;AAAA,QAET,UAAAgQ;AAAA,MAAA;AAAA,IAAA;AAAA,EACH;AAAA,GAGN;AAIJ8F,GAAa,cAAc;ACtEpB,MAAMC,KAAkB,MAC7B1T;AAAA,EACE;AAAA,EACA;AAAA,EACAjC,EAAaV,EAAgB,OAAO;AAAA,EACpC6Q,EAAalP,EAAO,EAAE;AAAA,EACtBgQ,GAAa/P,GAAO,EAAE;AAAA,EACtB;AACF,GCQI0U,KAAsB,EAAE,OAAO,KAAK,QAAQ,IAAA,GAQrCC,KAAa,CACxBC,GACAC,GACAC,IAA0CJ,OAC3B;AACf,QAAMK,IAAOH,EAAO,IAAIE,EAAK,SAASD,EAAS,SAAS,QAAQ,UAC1DG,IAAYJ,EAAO,IAAIE,EAAK,QAAQD,EAAS,QAAQ,QAAQ;AACnE,SAAO,GAAGE,CAAI,IAAIC,CAAS;AAC7B,GA+CaC,KAAoC,CAAC;AAAA,EAChD,UAAAvG;AAAA,EACA,MAAAoG;AAAA,EACA,UAAAhB;AAAA,EACA,WAAAvW;AAAA,EACA,eAAA2X;AAAA,EACA,GAAG1X;AACL,MAAM;AACJ,QAAM2X,IAAYC,GAA0B,IAAI,GAC1CC,IAAWD,GAA4B,IAAI,GAC3C,CAACE,GAAUC,CAAW,IAAI1C,EAAS,EAAE,GAAG,GAAG,GAAG,GAAG,GACjD,CAAChE,GAAQ2G,CAAS,IAAI3C,EAAqB,cAAc;AAkB/D,SACE,gBAAAjV,EAAAmR,IAAA,EACE,UAAA;AAAA,IAAA,gBAAAtR,EAAC,SAAI,eAlBiB,CAACgY,MAAwC;AAEjE,UADAP,IAAgBO,CAAC,GACbA,EAAE,oBAAoB3B,EAAU;AACpC,MAAA2B,EAAE,eAAA,GACFJ,EAAS,UAAA;AACT,YAAMK,IAAaf;AAAA,QACjB,EAAE,GAAGc,EAAE,SAAS,GAAGA,EAAE,QAAA;AAAA,QACrB,EAAE,OAAO,OAAO,YAAY,QAAQ,OAAO,YAAA;AAAA,MAAY;AAEzD,MAAAE,GAAU,MAAM;AACd,QAAAJ,EAAY,EAAE,GAAGE,EAAE,SAAS,GAAGA,EAAE,SAAS,GAC1CD,EAAUE,CAAU;AAAA,MACtB,CAAC,GACDP,EAAU,SAAS,MAAA;AAAA,IACrB,GAI2C,WAAA5X,GAAuB,GAAGC,GAC9D,UAAAkR,GACH;AAAA,IACA,gBAAAjR,EAACmY,IAAA,EACE,UAAA,CAAC,EAAE,OAAAC,SACFR,EAAS,UAAUQ,GAEjB,gBAAAjY,EAAAmR,IAAA,EACE,UAAA;AAAA,MAAA,gBAAAtR;AAAA,QAACqY;AAAA,QAAA;AAAA,UACC,KAAKX;AAAA,UACL,IAAG;AAAA,UACH,eAAW;AAAA,UACX,UAAU;AAAA,UACV,OAAO;AAAA,YACL,UAAU;AAAA,YACV,MAAMG,EAAS;AAAA,YACf,KAAKA,EAAS;AAAA,YACd,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,SAAS;AAAA,YACT,eAAe;AAAA,UAAA;AAAA,QACjB;AAAA,MAAA;AAAA,MAEF,gBAAA7X;AAAA,QAACsY;AAAA,QAAA;AAAA,UACC,QAAQ,EAAE,IAAIlH,GAAQ,KAAK,EAAA;AAAA,UAC3B,QAAM;AAAA,UACN,WAAW9N;AAAA,YACT0T,GAAA;AAAA,YACAhV,GAAaF,GAAO,UAAU;AAAA,UAAA;AAAA,UAG/B,UAAAuV;AAAA,QAAA;AAAA,MAAA;AAAA,IACH,GACF,GAEJ,CACF;AAAA,EAAA,GACF;AAEJ;AAEAG,GAAY,cAAc;AC9JnB,MAAM/T,KAA4C;AAAA,EACvD,CAACjB,EAAK,EAAE,GAAGvC,EAAK,WAAW,aAAa,UAAU;AAAA,EAClD,CAACuC,EAAK,EAAE,GAAGvC,EAAK,QAAQ,aAAa,aAAa;AAAA,EAClD,CAACuC,EAAK,EAAE,GAAGvC,EAAK,WAAW,aAAa,YAAY;AACtD,GAEasY,KAAmD;AAAA,EAC9D,CAAC/V,EAAK,EAAE,GAAG;AAAA,EACX,CAACA,EAAK,EAAE,GAAG;AAAA,EACX,CAACA,EAAK,EAAE,GAAG;AACb,GAEagW,KAAgD;AAAA,EAC3D,CAAChW,EAAK,EAAE,GAAG;AAAA,EACX,CAACA,EAAK,EAAE,GAAG;AAAA,EACX,CAACA,EAAK,EAAE,GAAG;AACb,GAEaiW,KAAmD;AAAA,EAC9D,CAACjW,EAAK,EAAE,GAAG;AAAA,EACX,CAACA,EAAK,EAAE,GAAG;AAAA,EACX,CAACA,EAAK,EAAE,GAAG;AACb;AChBO,IAAKkW,uBAAAA,OACVA,EAAA,UAAU,WACVA,EAAA,WAAW,YAFDA,IAAAA,MAAA,CAAA,CAAA;AA2BL,MAAMC,KAAsD,CAAC;AAAA,EAClE,SAAAC;AAAA,EACA,UAAAvC;AAAA,EACA,MAAA1S,IAAOnB,EAAK;AAAA,EACZ,WAAAqW,IAAY;AAAA,EACZ,UAAAC;AAAA,EACA,UAAAjB,IAAW;AAAA;AACb,MAOI,gBAAA7X;AAAA,EAACgS;AAAAA,EAAA;AAAA,IACC,SAAA4G;AAAA,IACA,UAAAvC;AAAA,IACA,WAAW/S;AAAA,MARbuU,MAAa,YACT,oBACA;AAAA,MAQA;AAAA,MACA;AAAA,MACA;AAAA,MACAA,MAAa,aAAwBU,GAAkB5U,CAAI;AAAA,MAC3D;AAAA,IAAA;AAAA,IAEF,cAAYkV;AAAA,IAEZ,UAAA,gBAAA7Y;AAAA,MAACqQ;AAAA,MAAA;AAAA,QACC,MAAMyI;AAAA,QACN,WAAWxV,EAAGkV,GAAe7U,CAAI,GAAG9B,EAAef,GAAU,QAAQ,CAAC;AAAA,MAAA;AAAA,IAAA;AAAA,EACxE;AAAA,GC9CAiY,KAAuB,CAAC;AAAA,EAC5B,UAAA1C;AAAA,EACA,OAAA2C;AAAA,EACA,QAAAvH,IAASnP,EAAO;AAAA,EAChB,MAAAqB,IAAOnB,EAAK;AACd,MAMEc;AAAA,EACE;AAAA,EACAjC,EAAaV,EAAgB,UAAU;AAAA,EACvCkB,EAAeZ,EAAU,OAAO;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EAEIW,EADJoX,IACqBpY,EAAY,QACZA,EAAY,OADK;AAAA,EAEtC,CAACyV,KACC,CAAC2C,KACDpX,EAAiBhB,EAAY,OAAON,EAAa,KAAK;AAAA,EACxD;AAAA,EAEIsB,EADJoX,IACqBpY,EAAY,QACZA,EAAY,OADON,EAAa,KAAK;AAAA,EAE1D;AAAA,EACA;AAAA,EACAsB,EAAiBhB,EAAY,UAAUN,EAAa,QAAQ;AAAA,EAC5DkR,EAAaC,CAAM;AAAA,EACnBhO,GAAWE,CAAI;AAAA,EACf8U,GAAkB9U,CAAI;AAAA,EACtB;AACF,GA2BWsV,KAA4C,CAAC;AAAA,EACxD,OAAAvX;AAAA,EACA,SAAAkX;AAAA,EACA,UAAAvC;AAAA,EACA,OAAA2C;AAAA,EACA,MAAArV,IAAOnB,EAAK;AAAA,EACZ,QAAAiP,IAASnP,EAAO;AAAA,EAChB,UAAA4W;AACF,MAAM;AACJ,QAAMC,IAAWxB,GAAyB,IAAI,GAExCyB,IAAkB7D,EAAY,MAAM;AACxC,IAAIc,MACAuC,IACFA,EAAA,IACSO,EAAS,YAClBA,EAAS,QAAQ,MAAA,GACjBA,EAAS,QAAQ,MAAA;AAAA,EAErB,GAAG,CAAC9C,GAAUuC,CAAO,CAAC,GAEhBS,IAAeN,GAAqB;AAAA,IACxC,UAAA1C;AAAA,IACA,OAAA2C;AAAA,IACA,QAAAvH;AAAA,IACA,MAAA9N;AAAA,EAAA,CACD;AAED,SACE,gBAAAxD,EAAC,OAAA,EAAI,WAAU,8BAEb,UAAA;AAAA,IAAA,gBAAAH;AAAA,MAAC2Y;AAAA,MAAA;AAAA,QACC,SAASS;AAAA,QACT,UAAA/C;AAAA,QACA,UAAA6C;AAAA,QACA,MAAAvV;AAAA,QACA,UAAU+U,GAAa;AAAA,QACvB,UAAUvW,EAAS;AAAA,MAAA;AAAA,IAAA;AAAA,IAErB,gBAAAnC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKmZ;AAAA,QACL,OAAAzX;AAAA,QACA,SAAAkX;AAAA,QACA,UAAAvC;AAAA,QACA,WAAWgD;AAAA,MAAA;AAAA,IAAA;AAAA,IAGb,gBAAArZ;AAAA,MAAC2Y;AAAA,MAAA;AAAA,QACC,SAASS;AAAA,QACT,UAAA/C;AAAA,QACA,UAAA6C;AAAA,QACA,MAAAvV;AAAA,QACA,UAAU+U,GAAa;AAAA,QACvB,UAAUvW,EAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EACrB,GACF;AAEJ,GClEamX,KAAkC,CAAC;AAAA,EAC9C,MAAA3V,IAAOnB,EAAK;AAAA,EACZ,QAAAiP,IAASnP,EAAO;AAAA,EAChB,WAAAxC;AAAA,EACA,UAAAuW;AAAA,EACA,UAAAkD;AAAA,EACA,OAAAP;AAAA,EACA,YAAAQ;AAAA,EACA,UAAAnF;AAAA,EACA,SAAAoF;AAAA,EACA,SAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,GAAG/Z;AACL,MAAM;AACJ,QAAMmZ,IAAW,EAAQK,GAEnBQ,IAAkBvE,GAAQ,MAC1BgE,MACAI,KAAkBC,IAA2B,UAC7CD,IAAuB,uBACpB,eACN,CAACJ,GAAYI,GAAgBC,CAAkB,CAAC;AAEnD,2BACGlF,IAAA,EAAM,WAAWrR,EAAG,uBAAuBxD,CAAS,GACnD,UAAA,gBAAAE;AAAA,IAACga;AAAA,IAAA;AAAA,MACC,UAAAT;AAAA,MACA,UAAWlD,IAAsB,SAAXhC;AAAA,MACtB,UAAAgC;AAAA,MACA,YAAY0D;AAAA,MACZ,SAAAN;AAAA,MACA,SAAAC;AAAA,MACA,iBAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,oBAAAC;AAAA,MACA,eAAAC;AAAA,MACA,iBAAgB;AAAA,MAChB,aACE,gBAAA9Z;AAAA,QAACiZ;AAAA,QAAA;AAAA,UACC,UAAA5C;AAAA,UACA,OAAA2C;AAAA,UACA,MAAArV;AAAA,UACA,QAAA8N;AAAA,UACA,UAAAyH;AAAA,QAAA;AAAA,MAAA;AAAA,MAGH,GAAInZ;AAAA,IAAA;AAAA,EAAA,GAET;AAEJ;AAEAuZ,GAAW,cAAc;AClGlB,MAAMW,KAA4B,CAAC;AAAA,EACxC,aAAA5G;AAAA,EACA,OAAAmB;AAAA,EACA,WAAA0F;AAAA,EACA,GAAGna;AACL,MAAM;AACJ,QAAMoa,IAAW9G,MAAgBhR,EAAY;AAE7C,SACE,gBAAAlC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWmD,EAAG,qBAAqB6W,IAAW,oBAAoB,EAAE;AAAA,MACnE,GAAGpa;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAC,EAACoa,IAAA,EAAK,aAAA/G,GAA0B,eAAY,sBAAA,CAAsB;AAAA,QACjEmB,KACC,gBAAArU,EAAAmR,IAAA,EACE,UAAA;AAAA,UAAA,gBAAAtR;AAAA,YAACgR;AAAA,YAAA;AAAA,cACC,OAAO/P,EAAU;AAAA,cACjB,SAASyB,EAAY;AAAA,cACrB,WAAWY;AAAA,gBACT6W,IAAW,SAAS;AAAA,gBACpBtY,EAAeZ,EAAU,OAAO;AAAA,cAAA;AAAA,cAElC,eAAY;AAAA,cACX,GAAGiZ;AAAA,cAEH,UAAA1F;AAAA,YAAA;AAAA,UAAA;AAAA,UAEH,gBAAAxU,EAACoa,IAAA,EAAK,aAAA/G,GAA0B,eAAY,qBAAA,CAAqB;AAAA,QAAA,EAAA,CACnE;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR,GAEM+G,KAAsB,CAAC,EAAE,aAAA/G,GAAa,GAAGtT,QAAY;AACzD,QAAMoa,IAAW9G,MAAgBhR,EAAY;AAE7C,SACE,gBAAArC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWsD;AAAA,QACTjC,EAAaJ,EAAU,WAAW;AAAA,QAClCkZ,IAAW,gBAAgB;AAAA,MAAA;AAAA,MAE5B,GAAGpa;AAAA,IAAA;AAAA,EAAA;AAGV;AAEAka,GAAQ,cAAc;ACxDf,SAASI,GAAa3Y,GAAwB;AACnD,QAAM4Y,IAAM3C,GAAOjW,CAAK;AACxB,SAAA4Y,EAAI,UAAU5Y,GACP4Y;AACT;ACkCO,SAASC,GAAa;AAAA,EAC3B,MAAAC;AAAA,EACA,aAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC;AACF,GAA4C;AAC1C,QAAM,CAACC,GAAYC,CAAa,IAAIzF,EAAS,EAAK,GAC5C0F,IAAgBnD,GAAO,EAAK,GAC5BoD,IAAcpD,GAAO,CAAC,GAGtBqD,IAAiBX,GAAUI,CAAW,GACtCQ,IAAaZ,GAAUK,CAAO,GAC9BQ,IAAeb,GAAUM,CAAS,GAElCQ,IAAgB5F;AAAA,IACpB,CAACyC,MAAuC;AACtC,MAAA8C,EAAc,UAAU,IACxBD,EAAc,EAAI,GAClBE,EAAY,UAAUP,MAAS,eAAexC,EAAE,UAAUA,EAAE,SAC5DA,EAAE,cAAc,kBAAkBA,EAAE,SAAS,GAC7CgD,EAAe,UAAA;AAAA,IACjB;AAAA,IACA,CAACR,GAAMQ,CAAc;AAAA,EAAA,GAGjBI,IAAgB7F;AAAA,IACpB,CAACyC,MAAuC;AACtC,UAAI,CAAC8C,EAAc,QAAS;AAC5B,YAAMO,IAAUb,MAAS,eAAexC,EAAE,UAAUA,EAAE;AACtD,MAAAiD,EAAW,QAAQI,IAAUN,EAAY,OAAO;AAAA,IAClD;AAAA,IACA,CAACP,GAAMS,CAAU;AAAA,EAAA,GAGbK,IAAc/F,EAAY,MAAM;AACpC,IAAAuF,EAAc,UAAU,IACxBD,EAAc,EAAK,GACnBK,EAAa,UAAA;AAAA,EACf,GAAG,CAACA,CAAY,CAAC;AAEjB,SAAO;AAAA,IACL,YAAAN;AAAA,IACA,aAAa,EAAE,eAAAO,GAAe,eAAAC,GAAe,aAAAE,EAAA;AAAA,EAAY;AAE7D;AC7EO,SAASC,KAAuC;AACrD,QAAM,CAAC5X,GAAM6X,CAAO,IAAIpG,EAAS,EAAE,OAAO,GAAG,QAAQ,GAAG,GAClDqG,IAAQ9D,GAA8B,IAAI;AAahD,SAAO,EAAE,KAXGpC,EAAY,CAACmG,MAA2B;AAGlD,QAFAD,EAAM,SAAS,WAAA,GACfA,EAAM,UAAU,MACZ,CAACC,EAAI;AACT,UAAMC,IAAU,MACdH,EAAQ,EAAE,OAAOE,EAAG,aAAa,QAAQA,EAAG,cAAc;AAC5D,IAAAC,EAAA,GACAF,EAAM,UAAU,IAAI,eAAeE,CAAO,GAC1CF,EAAM,QAAQ,QAAQC,CAAE;AAAA,EAC1B,GAAG,CAAA,CAAE,GAES,OAAO/X,EAAK,OAAO,QAAQA,EAAK,OAAA;AAChD;ACUO,SAASiY,GAAmB;AAAA,EACjC,MAAApB;AAAA,EACA,SAAAqB;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,cAAAC;AAAA,EACA,GAAGC;AACL,GAAwD;AACtD,QAAM,EAAE,MAAA3K,GAAM,SAAAwE,MAAYJ,GAAcuG,CAAiB,GAEnD,CAACC,GAAeC,CAAgB,IAAI9G,EAAS,CAAC,GAE9C,CAAC+G,GAAUC,CAAW,IAAIhH,EAAwB,IAAI,GAEtD,CAACiH,GAAWC,CAAY,IAAIlH,EAAS,EAAK,GAK1C,EAAE,KAAKmH,EAAA,IAAehB,GAAA,GACtBiB,IAAe7E,GAA2B,IAAI,GAC9C8E,IAAalH;AAAA,IACjB,CAACmG,OAA2B;AAC1B,MAAAc,EAAa,UAAUd,IACvBa,EAAWb,EAAE;AAAA,IACf;AAAA,IACA,CAACa,CAAU;AAAA,EAAA,GAOPG,IAAW,KAAK,IAAIT,GAAeJ,CAAO,GAC1Cc,IAAWR,KAAY,OAAO,KAAK,IAAIA,GAAUO,CAAQ,IAAIA,GAC7D/Y,IAAO0N,IAAOsL,IAAW,GAEzBC,IAAUvC,GAAUhJ,CAAI,GACxBwL,IAAUxC,GAAU1W,CAAI,GACxBmZ,IAAYzC,GAAUyB,CAAM,GAC5BiB,IAAa1C,GAAUwB,CAAO,GAC9BmB,IAAkB3C,GAAU0B,CAAY,GAExCkB,IAAmBtF,GAAO,CAAC,GAC3BmD,KAAgBnD,GAAO,EAAK;AAMlC,EAAAuF,GAAgB,MAAM;AACpB,QAAIpC,GAAc,QAAS;AAC3B,UAAMqC,KAAIX,EAAa,SAAS,gBAAgB;AAChD,IAAAN,EAAiB,CAACkB,OAAUA,OAASD,KAAIC,KAAOD,EAAE;AAAA,EACpD,CAAC;AAED,QAAM1C,KAAclF,EAAY,MAAM;AACpC,IAAAuF,GAAc,UAAU,IACxBwB,EAAa,EAAK,GAClBW,EAAiB,UAAUL,EAAQ,UAAUC,EAAQ,UAAU;AAAA,EACjE,GAAG,CAACD,GAASC,CAAO,CAAC,GAEfnC,KAAUnF;AAAA,IACd,CAAC8H,OAAkB;AACjB,YAAMC,KAAWR,EAAU,UAAU,CAACO,KAAQA,IACxCE,KAAMN,EAAiB,UAAUK;AACvC,UAAIC,MAAO,GAAG;AAEZ,QAAIX,EAAQ,YACV/G,EAAQ,EAAK,GACbuG,EAAY,IAAI;AAElB;AAAA,MACF;AACA,YAAMoB,IAAO,KAAK;AAAA,QAChBhB,EAAa,SAAS,gBAAgB;AAAA,QACtCO,EAAW;AAAA,MAAA,GAEPU,KAAU,KAAK,IAAIF,IAAKC,CAAI;AAElC,MAAApB,EAAYqB,MAAWD,IAAO,OAAOC,EAAO,GACvCb,EAAQ,WAAS/G,EAAQ,EAAI,GAClCmH,EAAgB,UAAUS,EAAO;AAAA,IACnC;AAAA,IACA,CAACX,GAAWC,GAAYC,GAAiBJ,GAAS/G,CAAO;AAAA,EAAA,GAGrD8E,KAAYpF,EAAY,MAAM;AAClC,IAAAuF,GAAc,UAAU;AAAA,EAC1B,GAAG,CAAA,CAAE,GAEC,EAAE,YAAAF,GAAY,aAAA8C,GAAA,IAAgBnD,GAAa;AAAA,IAC/C,MAAAC;AAAA,IACA,aAAAC;AAAA,IACA,SAAAC;AAAA,IACA,WAAAC;AAAA,EAAA,CACD,GAEK7E,KAASP,EAAY,MAAM;AAC/B,IAAA+G,EAAa,EAAI,GAGjBF,EAAY,IAAI,GAChBvG,EAAQ,CAAC+G,EAAQ,OAAO;AAAA,EAC1B,GAAG,CAACA,GAAS/G,CAAO,CAAC,GAGf8H,KAAkBpI,EAAY,MAAM;AACxC,IAAKuF,GAAc,WAASwB,EAAa,EAAK;AAAA,EAChD,GAAG,CAAA,CAAE;AAEL,SAAO;AAAA,IACL,MAAAjL;AAAA,IACA,QAAAyE;AAAA,IACA,SAAAD;AAAA,IACA,MAAAlS;AAAA,IACA,YAAAiX;AAAA,IACA,WAAAyB;AAAA,IACA,iBAAAsB;AAAA,IACA,iBAAiBD;AAAA,IACjB,YAAAjB;AAAA,EAAA;AAEJ;;;;;;;;;;;;;;;AClKA,SAASmB,GAAWC,GAGlB;AACA,SAAO;AAAA,IACL,MAAMA,MAAS,UAAUA,MAAS,UAAU,eAAe;AAAA,IAC3D,QAAQA,MAAS,WAAWA,MAAS;AAAA,EAAA;AAEzC;AAiBA,MAAMC,KAAgC,CAAC;AAAA,EACrC,MAAAD,IAAO;AAAA,EACP,SAAAhC;AAAA,EACA,MAAAkC,IAAO;AAAA,EACP,aAAArI,IAAc;AAAA,EACd,MAAMC;AAAA,EACN,cAAAC;AAAA,EACA,cAAAmG;AAAA,EACA,QAAA/F;AAAA,EACA,UAAA/E;AAAA,EACA,WAAAnR;AAAA,EACA,OAAAoW;AACF,MAAM;AACJ,QAAM,EAAE,MAAAsE,GAAM,QAAAsB,MAAW8B,GAAWC,CAAI,GAClCG,IAAaxD,MAAS,YAEtB;AAAA,IACJ,MAAAnJ;AAAA,IACA,QAAAyE;AAAA,IACA,MAAAnS;AAAA,IACA,YAAAiX;AAAA,IACA,WAAAyB;AAAA,IACA,iBAAAsB;AAAA,IACA,iBAAAM;AAAA,IACA,YAAAxB;AAAA,EAAA,IACEb,GAAmB;AAAA,IACrB,MAAApB;AAAA,IACA,QAAAsB;AAAA,IACA,aAAApG;AAAA,IACA,MAAMC;AAAA,IACN,cAAAC;AAAA,IACA,SAAAiG;AAAA,IACA,cAAAE;AAAA,EAAA,CACD,GAEKmC,IAA0BF,IAC5B,EAAE,QAAQra,MACV,EAAE,OAAOA,EAAA;AAEb,SACE,gBAAAxD;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWF,EAAKkW,GAAO,MAAMA,GAAO4H,CAAI,GAAG5H,GAAO0H,CAAI,GAAG/d,CAAS;AAAA,MAClE,OAAAoW;AAAA,MAEA,UAAA;AAAA,QAAA,gBAAAlW;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWC,EAAKkW,GAAO,QAAQ,EAAE,CAACA,GAAO,cAAc,GAAG,CAAC9E,GAAM;AAAA,YAChE,GAAG4M;AAAA,UAAA;AAAA,QAAA;AAAA,QAELjI,KACC,gBAAAhW,EAAC,OAAA,EAAI,WAAWmW,GAAO,QAAS,UAAAH,EAAO,EAAE,MAAA3E,GAAM,QAAAyE,EAAA,CAAQ,EAAA,CAAE;AAAA,QAE3D,gBAAA9V;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWmW,GAAO;AAAA,YAClB,iBAAAwH;AAAA,YACA,OAAO;AAAA,cACL,GAAGO;AAAA;AAAA;AAAA,cAGH,YAAY7B,KAAa,CAACzB,IAAa,SAAY;AAAA,YAAA;AAAA,YAGrD,4BAAC,OAAA,EAAI,KAAK6B,GAAY,WAAWtG,GAAO,SACrC,UAAAlF,EAAA,CACH;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAGN;ACzFO,IAAKkN,uBAAAA,OAEVA,EAAA,SAAS,UAETA,EAAA,cAAc,gBAEdA,EAAA,YAAY,cAEZA,EAAA,MAAM,OAENA,EAAA,WAAW,aAEXA,EAAA,SAAS,WAZCA,IAAAA,MAAA,CAAA,CAAA;AAsFL,MAAMC,KAA8B,CAAC;AAAA,EAC1C,SAAAC;AAAA,EACA,UAAApN;AAAA,EACA,QAAAG,IAAS;AAAA,EACT,QAAAkN,IAAS;AAAA,EACT,QAAArc;AAAA,EACA,UAAAoU;AAAA,EACA,WAAAvW;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMwe,IACFvc,GADgBsc,IACHxc,GAAO,aACpBG,KAEeH,GAAO,IAHQ,GAK5B0c,IAAkBC,GAAuCJ,CAAO,IAClE,CAAC,CAACA,EAAQ,MAAM,WAChB,IACEK,IAAarI,KAAYmI;AAE/B,SACE,gBAAAxe,EAAC,OAAA,EAAI,WAAWsD,EAAG,yBAAyBxD,CAAS,GAAI,GAAGC,GAC1D,UAAA,gBAAAI,EAACgY,IAAA,EACC,UAAA;AAAA,IAAA,gBAAAnY;AAAA,MAACqY;AAAA,MAAA;AAAA,QACC,IAAG;AAAA,QACH,UAAUqG;AAAA,QACV,WAAWA,IAAa,uBAAuB;AAAA,QAE9C,UAAAL;AAAA,MAAA;AAAA,IAAA;AAAA,IAGH,gBAAAre;AAAA,MAACsY;AAAA,MAAA;AAAA,QACC,QAAQ,EAAE,IAAIlH,GAAQ,KAAK,EAAA;AAAA,QAC3B,QAAAkN;AAAA,QACA,WAAWhb,EAAG0T,GAAA,GAAmBuH,CAAW;AAAA,QAE3C,UAAAtN;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,EAAA,CACF,EAAA,CACF;AAEJ;AAEAmN,GAAS,cAAc;ACrHhB,MAAMO,KAA4C,CAAC;AAAA,EACxD,UAAA1N;AAAA,EACA,MAAAtN,IAAOnB,EAAK;AAAA,EACZ,GAAGzC;AACL,MACE,gBAAAC;AAAA,EAACgS;AAAA,EAAA;AAAA,IACC,SAAS3O,GAAQ;AAAA,IACjB,MAAAM;AAAA,IACA,cAAcxB,EAAS;AAAA,IACtB,GAAGpC;AAAA,IAEH,UAAAkR;AAAA,EAAA;AACH;AAGF0N,GAAgB,cAAc;ACVvB,MAAMC,KAAkC,CAAC;AAAA,EAC9C,MAAAjN;AAAA,EACA,OAAAgC;AAAA,EACA,aAAAD;AAAA,EACA,WAAA5T;AAAA,EACA,GAAGC;AACL,MAEI,gBAAAI;AAAA,EAAC+S;AAAA,EAAA;AAAA,IACC,aAAa7Q,EAAY;AAAA,IACzB,OAAOjC,GAAM;AAAA,IACb,WAAWkD;AAAA,MACT;AAAA,MACAkO,EAAalP,EAAO,EAAE;AAAA,MACtBjB,EAAaV,EAAgB,KAAK;AAAA,MAClCb;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,IAEH,UAAA;AAAA,MAAA4R,KACC,gBAAA3R;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWsD;AAAA,YACT;AAAA,YACAkO,EAAalP,EAAO,IAAI;AAAA,YACxBjB,EAAaV,EAAgB,YAAY;AAAA,UAAA;AAAA,UAG3C,UAAA,gBAAAX,EAACqQ,MAAK,MAAMsB,GAAM,MAAMnP,EAAK,IAAI,OAAO3B,GAAW,OAAA,CAAQ;AAAA,QAAA;AAAA,MAAA;AAAA,MAG/D,gBAAAb,EAACgR,GAAA,EAAK,SAAStO,EAAY,IAAK,UAAAiR,GAAM;AAAA,MACrCD,KAAe,gBAAA1T,EAACgR,GAAA,EAAK,OAAO/P,EAAU,OAAQ,UAAAyS,EAAA,CAAY;AAAA,IAAA;AAAA,EAAA;AAAA;AAIjEkL,GAAW,cAAc;ACTlB,MAAMC,KAAgC,CAAC;AAAA,EAC5C,SAAAC;AAAA,EACA,OAAAtK;AAAA,EACA,aAAAd;AAAA,EACA,UAAA2C;AAAA,EACA,OAAA2C;AAAA,EACA,SAAA1F,IAAU7Q,EAAQ;AAAA,EAClB,WAAA3C;AAAA,EACA,GAAGC;AACL,MAEI,gBAAAC,EAAC2U,IAAA,EAAM,UAAA0B,GAAoB,WAAAvW,GACzB,UAAA,gBAAAK,EAAC+S,IAAA,EAAM,aAAa7Q,EAAY,QAAQ,SAAAiR,GAAmB,GAAGvT,GAC3D,UAAA;AAAA,EAAAyU,uBACEtB,IAAA,EAAM,aAAa7Q,EAAY,KAAK,SAASI,EAAQ,IACpD,UAAA;AAAA,IAAA,gBAAAzC,EAAC6U,MACC,UAAA,gBAAA7U,EAACgR,GAAA,EAAK,OAAO/P,EAAU,SAAU,aAAM,EAAA,CACzC;AAAA,IAECyS,uBACEE,IAAA,EACC,UAAA,gBAAA5T,EAACgR,KAAK,OAAO/P,EAAU,WAAY,UAAAyS,EAAA,CAAY,EAAA,CACjD;AAAA,EAAA,GAEJ;AAAA,EAGDoL;AAAA,EAEA9F,KAAS,gBAAAhZ,EAACgR,GAAA,EAAK,OAAO/P,EAAU,aAAc,UAAA+X,EAAA,CAAM;AAAA,EAAA,CACvD,EAAA,CACF;AAIJ6F,GAAU,cAAc;AC9CjB,MAAME,KAA0C,CAAC;AAAA,EACtD,aAAA1L,IAAchR,EAAY;AAAA,EAC1B,SAAAiR,IAAU7Q,EAAQ;AAAA,EAClB,UAAA4T;AAAA,EACA,UAAApF;AAAA,EACA,GAAGlR;AACL,MACE,gBAAAC,EAACgf,IAAA,EAAS,UAAA3I,GAAqB,GAAGtW,GAChC,4BAACmT,IAAA,EAAM,aAAAG,GAA0B,SAAAC,GAC9B,UAAArC,EAAA,CACH,EAAA,CACF;AAGF8N,GAAe,cAAc;ACtD7B,MAAME,KAAqD;AAAA,EACzD,IAAI,CAAC,EAAE,UAAAhO,GAAU,GAAGlR,EAAA,MAA0B,gBAAAC,EAAC,MAAA,EAAI,GAAGD,GAAQ,UAAAkR,GAAS;AAAA,EACvE,IAAI,CAAC,EAAE,UAAAA,GAAU,GAAGlR,EAAA,MAA0B,gBAAAC,EAAC,MAAA,EAAI,GAAGD,GAAQ,UAAAkR,GAAS;AAAA,EACvE,IAAI,CAAC,EAAE,UAAAA,GAAU,GAAGlR,EAAA,MAA0B,gBAAAC,EAAC,MAAA,EAAI,GAAGD,GAAQ,UAAAkR,GAAS;AAAA,EACvE,IAAI,CAAC,EAAE,UAAAA,GAAU,GAAGlR,EAAA,MAA0B,gBAAAC,EAAC,MAAA,EAAI,GAAGD,GAAQ,UAAAkR,EAAA,CAAS;AACzE,GAEMY,KAA8C;AAAA,EAClD,IAAI5R,EAAK4Q,GAAWnO,EAAY,GAAG,GAAG,WAAW;AAAA,EACjD,IAAIzC,EAAK4Q,GAAWnO,EAAY,EAAE,GAAG,eAAe;AAAA,EACpD,IAAIzC,EAAK4Q,GAAWnO,EAAY,EAAE,GAAG,eAAe;AAAA,EACpD,IAAIzC,EAAK4Q,GAAWnO,EAAY,EAAE,CAAC;AACrC,GAmBawc,KAA4B,CAAC;AAAA,EACxC,OAAAC,IAAQjd,GAAa;AAAA,EACrB,WAAApC;AAAA,EACA,UAAAmR;AAAA,EACA,GAAGlR;AACL,MAAoB;AAClB,QAAMqf,IAAUH,GAAWE,CAAK;AAEhC,SACE,gBAAAnf;AAAA,IAACof;AAAA,IAAA;AAAA,MACC,WAAWnf;AAAA,QACT4B,EAAeZ,EAAU,OAAO;AAAA,QAChC4Q,GAAcsN,CAAK;AAAA,QACnBrf;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,MAEH,UAAAkR;AAAA,IAAA;AAAA,EAAA;AAGP;AAEAiO,GAAQ,cAAc;ACaf,SAASG,GAAuB;AAAA,EACrC,OAAAC;AAAA,EACA,YAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,KAAAC,IAAM;AAAA,EACN,aAAApM,IAAchR,EAAY;AAAA,EAC1B,WAAAqd,IAAY;AAAA,EACZ,UAAAC,IAAW;AAAA,EACX,YAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,SAAAC,IAAU;AAAA,EACV,WAAAhgB;AAAA,EACA,OAAAoW;AAAA,EACA,GAAG6J;AACL,GAAoC;AAClC,QAAMC,IAAcrI,GAAuB,IAAI,GAEzCsI,IAAqB1K;AAAA,IACzB,CAAC2K,MAAyC;AACxC,YAAM,CAACC,CAAK,IAAID;AAChB,MAAIC,EAAM,kBAAkBN,KAAW,CAACC,KAAWF,KACjDA,EAAA;AAAA,IAEJ;AAAA,IACA,CAACC,GAASC,GAASF,CAAU;AAAA,EAAA;AAG/B,EAAAQ,GAAU,MAAM;AACd,UAAM1E,IAAKsE,EAAY;AACvB,QAAI,CAACtE,KAAM,CAACkE,EAAY;AAExB,UAAMS,IAAW,IAAI,qBAAqBJ,GAAoB;AAAA,MAC5D,WAAW;AAAA,MACX,YAAY;AAAA,IAAA,CACb;AAED,WAAAI,EAAS,QAAQ3E,CAAE,GACZ,MAAM2E,EAAS,WAAA;AAAA,EACxB,GAAG,CAACJ,GAAoBL,CAAU,CAAC;AAEnC,QAAM5B,IAAa3K,MAAgBhR,EAAY,QAEzCie,IAA2BtC,IAC7B;AAAA,IACE,qBAAqB,UAAUwB,CAAI;AAAA,IACnC,cAAc,GAAGE,CAAS;AAAA,IAC1B,KAAK,GAAGD,CAAG;AAAA,EAAA,IAEb;AAAA,IACE,kBAAkB,UAAUD,CAAI;AAAA,IAChC,cAAc;AAAA,IACd,iBAAiB,GAAGG,CAAQ;AAAA,IAC5B,KAAK,GAAGF,CAAG;AAAA,EAAA,GAGXc,IAA+BvC,IACjC,EAAE,YAAY,aACd,EAAE,SAAS,SAAA;AAEf,SACE,gBAAA7d;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWmD;AAAA,QACT;AAAA,QACA0a,IACI,sCACA;AAAA,QACJle;AAAA,MAAA;AAAA,MAEF,OAAO,EAAE,GAAGwgB,GAAW,GAAGpK,EAAA;AAAA,MACzB,GAAG6J;AAAA,MAEH,UAAA;AAAA,QAAAT,EAAM,IAAI,CAAC,EAAE,IAAAkB,GAAI,MAAAC,QAChB,gBAAAzgB,EAAC,OAAA,EAAa,WAAU,mBACrB,UAAAuf,EAAWkB,GAAMD,CAAE,EAAA,GADZA,CAEV,CACD;AAAA,QAEAZ,KACC,gBAAA5f;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,KAAKggB;AAAA,YACL,OAAOO;AAAA,YACP,WAAU;AAAA,YAET,UAAAT,KAAW,gBAAA9f,EAAC0D,IAAA,EAAQ,MAAMlB,EAAK,GAAA,CAAI;AAAA,UAAA;AAAA,QAAA;AAAA,MACtC;AAAA,IAAA;AAAA,EAAA;AAIR;AAEA6c,GAAU,cAAc;AChJjB,MAAMqB,KAAgC,CAAC,EAAE,MAAA/O,GAAM,MAAAhO,GAAM,SAAAgd,QAExD,gBAAA3gB;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWsD;AAAA,MACT;AAAA,MAEIzB,EADJ8e,IACmB1f,EAAU,UACVA,EAAU,SADO;AAAA,MAEpCsX,GAAkB5U,CAAI;AAAA,IAAA;AAAA,IAGxB,UAAA,gBAAA3D,EAACyQ,IAAA,EAAY,MAAA9M,GAAY,SAASgO,EAAA,CAAM;AAAA,EAAA;AAAA;AAK9C+O,GAAU,cAAc;ACZjB,IAAKE,uBAAAA,OACVA,EAAA,OAAO,QACPA,EAAA,QAAQ,SACRA,EAAA,WAAW,YACXA,EAAA,SAAS,UACTA,EAAA,MAAM,OACNA,EAAA,MAAM,OACNA,EAAA,SAAS,UAPCA,IAAAA,MAAA,CAAA,CAAA;AA8BL,MAAMC,KAAa,CAAC;AAAA,EACzB,UAAAxK;AAAA,EACA,OAAA2C;AAAA,EACA,MAAArH;AAAA,EACA,QAAAF,IAASnP,EAAO;AAAA,EAChB,MAAAqB,IAAOnB,EAAK;AACd,MAOEc;AAAA,EACE;AAAA,EACAjC,EAAaV,EAAgB,WAAW;AAAA,EACxCkB,EAAeZ,EAAU,OAAO;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EAEIW,EADJoX,IACqBpY,EAAY,QACZA,EAAY,OADK;AAAA,EAEtC,CAACyV,KACC,CAAC2C,KACDpX,EAAiBhB,EAAY,OAAON,EAAa,KAAK;AAAA,EACxD;AAAA,EAEIsB,EADJoX,IACqBpY,EAAY,QACZA,EAAY,OADON,EAAa,KAAK;AAAA,EAE1D;AAAA,EACA;AAAA,EACAsB,EAAiBhB,EAAY,UAAUN,EAAa,QAAQ;AAAA,EAC5DkR,EAAaC,CAAM;AAAA,EACnBhO,GAAWE,CAAI;AAAA,EACfgO,IAAO8G,GAAkB9U,CAAI,IAAI;AACnC,GAyCWmd,KAAwB,CAAC;AAAA,EACpC,MAAAnd,IAAOnB,EAAK;AAAA,EACZ,QAAAiP,IAASnP,EAAO;AAAA,EAChB,MAAAye,IAAO;AAAA,EACP,WAAAjhB;AAAA,EACA,UAAAuW;AAAA,EACA,OAAA3U;AAAA,EACA,UAAA2S;AAAA,EACA,OAAA2E;AAAA,EACA,MAAArH;AAAA,EACA,GAAG5R;AACL,MAAM;AACJ,QAAMsZ,IAAe/V;AAAA,IACnBud,GAAW;AAAA,MACT,UAAAxK;AAAA,MACA,OAAA2C;AAAA,MACA,MAAM,CAAC,CAACrH;AAAA,MACR,QAAAF;AAAA,MACA,MAAA9N;AAAA,IAAA,CACD;AAAA,IACD7D;AAAA,EAAA,GAII6gB,IAAU,GAAQjf,KAAS,OAAOA,CAAK,EAAE,KAAA,EAAO,SAAS;AAE/D,SACE,gBAAA1B,EAAC2U,IAAA,EAAM,WAAU,uBACf,UAAA,gBAAAxU,EAAC,OAAA,EAAI,WAAWmD,EAAG,YAAYqO,KAAQ,mBAAmB,GACvD,UAAA;AAAA,IAAAA,KAAQ,gBAAA3R,EAAC0gB,IAAA,EAAU,MAAA/O,GAAY,MAAAhO,GAAY,SAAAgd,GAAkB;AAAA,IAC9D,gBAAA3gB;AAAA,MAACghB;AAAAA,MAAA;AAAA,QACC,WAAW3H;AAAA,QACX,UAAAhD;AAAA,QACA,MAAA0K;AAAA,QACA,OAAArf;AAAA,QACA,UAAA2S;AAAA,QACC,GAAGtU;AAAA,MAAA;AAAA,IAAA;AAAA,EACN,EAAA,CACF,EAAA,CACF;AAEJ;AAEA+gB,GAAM,cAAc;ACjIb,MAAMG,KAA8B,CAAC;AAAA,EAC1C,WAAAC,IAAY;AAAA,EACZ,UAAA3H,IAAW;AAAA,EACX,YAAA4H,IAAa;AAAA,EACb,SAAAC,IAAU;AAAA,EACV,qBAAAC;AAAA,EACA,gBAAAC,IAAiB;AAAA,EACjB,kBAAAC,IAAmB;AAAA,EACnB,SAAAC,IAAU;AAAA,EACV,mBAAAC,IAAoB;AAAA,EACpB,WAAA3hB;AAAA,EACA,GAAGC;AACL,MAEI,gBAAAI;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWmD;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACAjC,EAAaV,EAAgB,KAAK;AAAA,MAClC6Q,EAAalP,EAAO,EAAE;AAAA,MACtBxC;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,IAEJ,UAAA;AAAA,MAAA,gBAAAI;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWmD;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,UAGF,UAAA;AAAA,YAAA,gBAAAnD,EAAC,OAAA,EAAI,WAAWmD,EAAG,iCAAiC,UAAU,GAC3D,UAAA;AAAA,cAAA4d,KACC,gBAAAlhB;AAAA,gBAACmU;AAAA,gBAAA;AAAA,kBACC,SAASoF;AAAA,kBACT,UAAU,CAACnF,MAAY+M,IAAa/M,CAAO;AAAA,gBAAA;AAAA,cAAA;AAAA,cAG9CgN,KACC,gBAAAphB;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAU;AAAA,kBACT,GAAGqhB;AAAA,kBAEJ,UAAA,gBAAArhB;AAAA,oBAACH;AAAA,oBAAA;AAAA,sBACC,WAAWyD,EAAG,UAAUzB,EAAeZ,EAAU,SAAS,CAAC;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAC7D;AAAA,cAAA;AAAA,cAGJ,gBAAAjB,EAACgR,GAAA,EAAK,SAAStO,EAAY,IAAK,UAAA4e,GAAe;AAAA,cAC/C,gBAAAthB;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,WAAWsD;AAAA,oBACT;AAAA,oBACA;AAAA,oBACAzB,EAAeZ,EAAU,SAAS;AAAA,kBAAA;AAAA,kBAGnC,UAAAsgB;AAAA,gBAAA;AAAA,cAAA;AAAA,YACH,GACF;AAAA,YAEA,gBAAAvhB,EAAC,UAAM,UAAAwhB,EAAA,CAAQ;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAEhBC,KACC,gBAAAzhB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWsD;AAAA,YACT;AAAA;AAAA,YAEA4d,KAAaE,KAAW;AAAA,YACxBF,KAAa,CAACE,KAAW;AAAA,YACzB,CAACF,KAAaE,KAAW;AAAA,UAAA;AAAA,UAG1B,UAAAK;AAAA,QAAA;AAAA,MAAA;AAAA,IACH;AAAA,EAAA;AAAA;AAMRR,GAAS,cAAc;AC7FvB,MAAMxd,KAAuC;AAAA,EAC3C,CAACjB,EAAK,EAAE,GAAGvC,EAAK,kBAAkB,WAAW;AAAA,EAC7C,CAACuC,EAAK,EAAE,GAAGvC,EAAK,iBAAiB,WAAW;AAAA,EAC5C,CAACuC,EAAK,EAAE,GAAGvC,EAAK,aAAa,WAAW;AAC1C,GAsBayhB,KAAsB,CAAC;AAAA,EAClC,MAAA/d,IAAOnB,EAAK;AAAA,EACZ,QAAAiP,IAASnP,EAAO;AAAA,EAChB,QAAAiQ,IAAS;AAAA,EACT,OAAAjR,IAAQL,EAAU;AAAA,EAClB,iBAAA6R,IAAkBnS,EAAgB;AAAA,EAClC,MAAAgR;AAAA,EACA,UAAAgQ,IAAW;AAAA,EACX,UAAAC;AAAA,EACA,WAAA9hB;AAAA,EACA,UAAAmR;AAAA,EACA,GAAGlR;AACL,MAEI,gBAAAI;AAAA,EAAC+S;AAAA,EAAA;AAAA,IACC,SAASzQ,EAAQ;AAAA,IACjB,WAAWxC;AAAA,MACT;AAAA,MACA;AAAA,MACA4B,EAAeP,CAAK;AAAA,MACpBD,EAAayR,CAAe;AAAA,MAC5BtB,EAAaC,CAAM;AAAA,MACnBa,GAAaC,CAAM;AAAA,MACnB9O,GAAWE,CAAI;AAAA,MACf7D;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,IAEH,UAAA;AAAA,MAAA4hB,uBACE,OAAA,EACC,UAAA,gBAAA3hB;AAAA,QAACqQ;AAAA,QAAA;AAAA,UACC,MAAM7N,EAAK;AAAA,UACX,MAAML,EAAS;AAAA,UACf,OAAAb;AAAA,UACA,OAAO,EAAE,UAAU,GAAA;AAAA,QAAG;AAAA,MAAA,GAE1B;AAAA,MAEDqQ,uBACE,OAAA,EACC,UAAA,gBAAA3R,EAACqQ,MAAK,MAAA1M,GAAY,MAAMgO,GAAM,OAAArQ,EAAA,CAAc,EAAA,CAC9C;AAAA,MAEF,gBAAAtB,EAAC,SAAK,UAAAiR,GAAS;AAAA,MACd2Q,KACC,gBAAA5hB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,cAAW;AAAA,UACX,SAAS,CAACgY,MAAM;AACd,YAAAA,EAAE,gBAAA,GACF4J,EAAA;AAAA,UACF;AAAA,UACA,WAAU;AAAA,UAEV,UAAA,gBAAA5hB;AAAA,YAACqQ;AAAA,YAAA;AAAA,cACC,MAAM7N,EAAK;AAAA,cACX,MAAML,EAAS;AAAA,cACf,OAAAb;AAAA,cACA,WAAWgC;AAAA,gBACT;AAAA,gBACA;AAAA,gBACA;AAAA,cAAA;AAAA,YACF;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAAA;AAMRoe,GAAK,cAAc;ACtHZ,MAAMG,KAA8B,CAAC,EAAE,WAAA/hB,GAAW,GAAGC,QAExD,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWC;AAAA,MACT;AAAA,MACAH;AAAA,IAAA;AAAA,IAEF,SAAQ;AAAA,IACR,MAAK;AAAA,IACJ,GAAGC;AAAA,IAEJ,4BAAC,UAAA,EAAO,IAAG,KAAI,IAAG,KAAI,GAAE,IAAA,CAAI;AAAA,EAAA;AAAA,GCA5B+hB,KAAuD;AAAA,EAC3D,CAACtf,EAAK,EAAE,GAAGqO,GAAWnO,EAAY,EAAE;AAAA,EACpC,CAACF,EAAK,EAAE,GAAGqO,GAAWnO,EAAY,EAAE;AAAA,EACpC,CAACF,EAAK,EAAE,GAAGqO,GAAWnO,EAAY,EAAE;AACtC,GAEMe,KAA4C;AAAA,EAChD,CAACjB,EAAK,EAAE,GAAGvC,EAAK,SAAS;AAAA,EACzB,CAACuC,EAAK,EAAE,GAAGvC,EAAK,SAAS;AAAA,EACzB,CAACuC,EAAK,EAAE,GAAGvC,EAAK,SAAS;AAC3B,GAEM8hB,KAA+C;AAAA,EACnD,CAACvf,EAAK,EAAE,GAAGvC,EAAK,uBAAuB;AAAA,EACvC,CAACuC,EAAK,EAAE,GAAGvC,EAAK,2BAA2B;AAAA,EAC3C,CAACuC,EAAK,EAAE,GAAGvC,EAAK,uBAAuB;AACzC,GAkBa+hB,KAAwB,CAAC;AAAA,EACpC,OAAAtgB;AAAA,EACA,MAAAiC,IAAOnB,EAAK;AAAA,EACZ,WAAA1C;AAAA,EACA,gBAAAyU;AAAA,EACA,OAAAC;AAAA,EACA,UAAA6B;AAAA,EACA,GAAGtW;AACL,MAEI,gBAAAI,EAACwU,IAAA,EAAM,WAAU,iCACf,UAAA;AAAA,EAAA,gBAAA3U;AAAA,IAACiiB;AAAAA,IAAA;AAAA,MACC,OAAAvgB;AAAA,MACA,UAAA2U;AAAA,MACA,WAAW/S;AAAA,QACT;AAAA,QACA,CAAC+S,KAAY;AAAA,QACb;AAAA,QACA;AAAA,QACA;AAAA,QACAA,KAAY;AAAA,QACZ;AAAA,QACA5S,GAAWE,CAAI;AAAA;AAAA,QAEf,CAAC0S,KAAY;AAAA,QACb,CAACA,KAAY;AAAA,QACb,CAACA,KAAY;AAAA;AAAA,QAEb,CAACA,KAAY;AAAA,QACb,CAACA,KAAY;AAAA;AAAA,QAEb,CAACA,KAAY;AAAA,QACb,CAACA,KAAY;AAAA;AAAA,QAEb;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,QACA0L,GAAcpe,CAAI;AAAA,QAClB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA7D;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,MAEJ,UAAA,gBAAAC;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWsD;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UAAA;AAAA,UAGF,4BAACue,IAAA,CAAA,CAAa;AAAA,QAAA;AAAA,MAAA;AAAA,IAChB;AAAA,EAAA;AAAA,EAEDrN,KACC,gBAAAxU;AAAA,IAAC6U;AAAA,IAAA;AAAA,MACC,WAAWvR;AAAA,QACTzB,EAAewU,IAAWpV,EAAU,YAAYA,EAAU,OAAO;AAAA,QACjE6gB,GAAene,CAAI;AAAA,QACnB,CAAC0S,KAAY;AAAA,QACb9B;AAAA,MAAA;AAAA,MAGD,UAAAC;AAAA,IAAA;AAAA,EAAA;AACH,GAEJ;AAIJwN,GAAM,cAAc;AC7Ib,MAAME,KAAe,MAC1B,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,UAAU,GAAG,CAAC,EAAE,KAAA,GC8EhCC,KAAkC,CAAC;AAAA,EAC9C,SAAAC;AAAA,EACA,OAAA1gB;AAAA,EACA,cAAA2gB;AAAA,EACA,UAAAhO;AAAA,EACA,MAAA/D;AAAA,EACA,MAAA3M,IAAOnB,EAAK;AAAA,EACZ,UAAA6T,IAAW;AAAA,EACX,WAAAvW;AAAA,EACA,YAAAwiB;AAAA,EACA,GAAGviB;AACL,MAAM;AACJ,QAAMwiB,IAAY/M;AAAA,IAChB,MAAMlF,KAAQ,eAAe4R,GAAA,CAAc;AAAA,IAC3C,CAAC5R,CAAI;AAAA,EAAA;AAGP,SACE,gBAAAtQ;AAAA,IAACwiB;AAAAA,IAAA;AAAA,MACC,OAAA9gB;AAAA,MACA,cAAA2gB;AAAA,MACA,UAAAhO;AAAA,MACA,MAAMkO;AAAA,MACN,UAAAlM;AAAA,MACA,WAAAvW;AAAA,MACC,GAAGC;AAAA,MAEH,UAAAqiB,EAAQ,IAAI,CAACK,MACZ,gBAAAziB;AAAA,QAACgiB;AAAA,QAAA;AAAA,UAEC,OAAOS,EAAO;AAAA,UACd,OAAOA,EAAO;AAAA,UACd,MAAA9e;AAAA,UACA,UAAU0S,KAAYoM,EAAO;AAAA,UAC5B,GAAGH;AAAA,QAAA;AAAA,QALCG,EAAO;AAAA,MAAA,CAOf;AAAA,IAAA;AAAA,EAAA;AAGP;AAEAN,GAAW,cAAc;AC7DlB,MAAMO,KAAkC,CAAC;AAAA,EAC9C,QAAAC;AAAA,EACA,aAAAjP;AAAA,EACA,MAAA/B;AAAA,EACA,OAAA6C;AAAA,EACA,SAAAoE;AAAA,EACA,WAAA9Y;AAAA,EACA,OAAAoW;AAAA,EACA,GAAGnW;AACL,wBACG+U,IAAA,EACC,UAAA,gBAAA9U;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWC;AAAA,MACT;AAAA,MAEI2B,EADJ+gB,IACqB/hB,EAAY,SACZA,EAAY,OADM;AAAA,MAEvC,CAAC+hB,KAAU/gB,EAAiBhB,EAAY,OAAON,EAAa,KAAK;AAAA,MACjE;AAAA,MACAkR,EAAalP,EAAO,EAAE;AAAA,MACtBxC;AAAA,IAAA;AAAA,IAEF,OAAO;AAAA,MACL,GAAI6iB,KAAU;AAAA,QACZ,iBAAiB,0BAA0BnhB,GAAeX,GAAW,OAAO,CAAC;AAAA,MAAA;AAAA,MAE/E,GAAGqV;AAAA,IAAA;AAAA,IAEL,SAAA0C;AAAA,IACA,WAAW,CAACZ,MAAM;AAChB,OAAIA,EAAE,QAAQ,WAAWA,EAAE,QAAQ,SACjCA,EAAE,eAAA,GACFY,IAAA;AAAA,IAEJ;AAAA,IACA,MAAK;AAAA,IACL,UAAU;AAAA,IACT,GAAG7Y;AAAA,IAEJ,UAAA,gBAAAI,EAAC,OAAA,EAAI,WAAU,iBACb,UAAA;AAAA,MAAA,gBAAAA,EAAC,QAAA,EAAK,WAAU,8BACd,UAAA;AAAA,QAAA,gBAAAH;AAAA,UAACyQ;AAAA,UAAA;AAAA,YACC,SAASkB;AAAA,YACT,WAAWrO;AAAA,cACT;AAAA,cAEIzB,EADJ8gB,IACmB7hB,GAAU,QACVA,GAAU,OADK;AAAA,YACE;AAAA,UACtC;AAAA,QAAA;AAAA,QAED0T,KAAS,gBAAAxU,EAACgR,GAAA,EAAM,UAAAwD,EAAA,CAAM;AAAA,MAAA,GACzB;AAAA,MAECd,KAAe,gBAAA1T,EAACgR,GAAA,EAAK,OAAO/P,EAAU,WAAY,UAAAyS,EAAA,CAAY;AAAA,IAAA,EAAA,CACjE;AAAA,EAAA;AACF,EAAA,CACF;AAGFgP,GAAW,cAAc;AC7DlB,MAAME,KAA4C,CAAC;AAAA,EACxD,SAAAC;AAAA,EACA,WAAA/iB;AAAA,EACA,WAAAgjB;AAAA,EACA,UAAAzO;AAAA,EACA,GAAGtU;AACL,MAAM;AACJ,QAAM,CAAC4iB,GAAQI,CAAS,IAAI3N,EAAmB,MAAM,CAAA,CAAE,GAEjD4N,IAAWzN;AAAA,IACf,CAACiL,MAAe;AACd,UAAI,CAACmC,EAAO,SAASnC,CAAE,GAAG;AACxB,cAAMyC,IAAiBH,IAAY,CAACtC,CAAE,IAAI,CAAC,GAAGmC,GAAQnC,CAAE;AACxD,QAAAuC,EAAUE,CAAc,GACxB5O,IAAW4O,CAAc;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,CAACN,GAAQG,GAAWzO,CAAQ;AAAA,EAAA,GAExB6O,IAAa3N;AAAA,IACjB,CAACiL,MAAe;AACd,UAAImC,EAAO,SAASnC,CAAE,GAAG;AACvB,cAAMyC,IAAiBN,EAAO,OAAO,CAACQ,MAASA,MAAS3C,CAAE;AAC1D,QAAAuC,EAAUE,CAAc,GACxB5O,IAAW4O,CAAc;AAAA,MAC3B;AAAA,IACF;AAAA,IACA,CAACN,GAAQtO,CAAQ;AAAA,EAAA;AAGnB,SACE,gBAAArU,EAAC,OAAA,EAAI,WAAWsD,EAAG,QAAQ,YAAYxD,CAAS,GAAI,GAAGC,GACpD,UAAA8iB,EAAQ,IAAI,CAACO,MACZ,gBAAApjB;AAAA,IAAC0iB;AAAA,IAAA;AAAA,MAEE,GAAGU,EAAY;AAAA,MAChB,QAAQT,EAAO,SAASS,EAAY,EAAE;AAAA,MACtC,SAAS,MAAM;AACb,QAAIT,EAAO,SAASS,EAAY,EAAE,IAChCF,EAAWE,EAAY,EAAE,IAEzBJ,EAASI,EAAY,EAAE,GAGzBA,EAAY,KAAK,UAAA;AAAA,MACnB;AAAA,IAAA;AAAA,IAXKA,EAAY;AAAA,EAAA,CAapB,GACH;AAEJ;AAEAR,GAAgB,cAAc;AClGvB,MAAMS,KAA8C,CAAC;AAAA,EAC1D,IAAA7C;AAAA,EACA,UAAAnK,IAAW;AAAA,EACX,GAAGtW;AACL,MAAM;AACJ,QAAM;AAAA,IACJ,YAAAujB;AAAA,IACA,WAAAC;AAAA,IACA,YAAAC;AAAA,IACA,WAAAC;AAAA,IACA,YAAAC;AAAA,IACA,YAAA9I;AAAA,EAAA,IACE+I,GAAY,EAAE,IAAAnD,GAAI,UAAAnK,GAAU,GAE1BH,IAAQ;AAAA,IACZ,WAAW0N,GAAI,UAAU,SAASH,CAAS;AAAA,IAC3C,YAAAC;AAAA,IACA,SAAS9I,IAAa,MAAM;AAAA,IAC5B,QAAQA,IAAa,aAAa;AAAA,EAAA;AAGpC,SACE,gBAAA5a,EAAC,OAAA,EAAI,KAAKwjB,GAAY,OAAAtN,GAAe,GAAGoN,GACtC,UAAA,gBAAAtjB,EAACihB,IAAA,EAAU,GAAGlhB,GAAO,qBAAqBwjB,GAAW,GACvD;AAEJ;AAEAF,GAAiB,cAAc;ACT/B,MAAMQ,KAAqC;AAAA,EACzC,CAACphB,EAAQ,IAAI,GAAG;AAAA,EAChB,CAACA,EAAQ,EAAE,GAAG;AAAA,EACd,CAACA,EAAQ,EAAE,GAAG;AAAA,EACd,CAACA,EAAQ,EAAE,GAAG;AAAA,EACd,CAACA,EAAQ,EAAE,GAAG;AAAA,EACd,CAACA,EAAQ,EAAE,GAAG;AAChB,GA6EaqhB,KAA8B,CAAC;AAAA,EAC1C,WAAAhkB;AAAA,EACA,WAAAikB;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,YAAA7C;AAAA,EACA,eAAA8C;AAAA,EACA,UAAA1K;AAAA,EACA,SAAAjG,IAAU7Q,EAAQ;AAAA,EAClB,GAAG1C;AACL,MAAM;AAEJ,QAAM,CAACmkB,GAAmBC,CAAoB,IAAI/O;AAAA,IAChD,MAAM,CAAA;AAAA,EAAC,GAEHgP,IAAUC;AAAA,IACdC,GAAUC,EAAa;AAAA,IACvBD,GAAUE,IAAgB;AAAA,MACxB,kBAAkBC;AAAA,IAAA,CACnB;AAAA,EAAA;AAIH,EAAArE,GAAU,MAAM;AACd,IAAA+D,EAAqB,CAAC,GAAI5K,KAAY,CAAA,CAAG,CAAC;AAAA,EAC5C,GAAG,CAACA,CAAQ,CAAC;AAEb,QAAMmL,IAAWnP;AAAA,IACf,CAACoP,GAAgBC,MAAwB;AACvC,UAAIV,EAAkB,SAASS,CAAM;AACnC,YAAI,CAACC,GAAY;AAEf,gBAAMC,IAAoBX,EAAkB;AAAA,YAC1C,CAACY,MAAMA,MAAMH;AAAA,UAAA;AAEf,UAAAR,EAAqBU,CAAiB,GACtC1D,IAAa0D,CAAiB;AAAA,QAChC;AAAA,iBAEID,GAAY;AAEd,cAAMC,IAAoB,CAAC,GAAGX,GAAmBS,CAAM;AACvD,QAAAR,EAAqBU,CAAiB,GACtC1D,IAAa0D,CAAiB;AAAA,MAChC;AAAA,IAEJ;AAAA,IACA,CAACX,GAAmB/C,CAAU;AAAA,EAAA,GAG1B4D,IAAgB,CAACC,MAA8B;AACnD,UAAM,EAAE,QAAArC,GAAQ,MAAAsC,EAAA,IAASD;AAEzB,QAAIC,KAAQtC,EAAO,OAAOsC,EAAK,IAAI;AACjC,YAAMC,IAAWnB,EAAU,UAAU,CAACoB,MAASA,EAAK,OAAOxC,EAAO,EAAE,GAC9DyC,IAAWrB,EAAU,UAAU,CAACoB,MAASA,EAAK,OAAOF,EAAK,EAAE,GAC5DI,IAAWC,GAAUvB,GAAWmB,GAAUE,CAAQ;AACxD,MAAAnB,IAAgBoB,CAAQ;AAAA,IAC1B;AAAA,EACF,GAEME,IAAc/P;AAAA,IAClB,MACEuO,EAAU,IAAI,CAACyB,MACb,gBAAAxlB;AAAA,MAACqjB;AAAA,MAAA;AAAA,QAEC,IAAImC,EAAW;AAAA,QACf,UAAU,CAACxB;AAAA,QACX,eAAawB,EAAW;AAAA,QACvB,GAAGA,EAAW;AAAA,QACf,SAASxB,KAAawB,EAAW,KAAK,YAAY;AAAA,QAClD,UAAUtB,EAAkB,SAASsB,EAAW,EAAE;AAAA,QAClD,YAAY,CAACZ,MAAeF,EAASc,EAAW,IAAIZ,CAAU;AAAA,MAAA;AAAA,MAPzDY,EAAW;AAAA,IAAA,CASnB;AAAA,IACH,CAACzB,GAAWC,GAAWU,GAAUR,CAAiB;AAAA,EAAA;AAGpD,SACE,gBAAAlkB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC,EAAK,iBAAiB,UAAU4jB,GAAUvQ,CAAO,GAAGxT,CAAS;AAAA,MACvE,GAAGC;AAAA,MAEH,UAAAikB,IACC,gBAAAhkB;AAAA,QAACylB;AAAA,QAAA;AAAA,UACC,SAAArB;AAAA,UACA,oBAAoBsB;AAAA,UACpB,WAAWX;AAAA,UAEX,UAAA,gBAAA/kB;AAAA,YAAC2lB;AAAA,YAAA;AAAA,cACC,OAAO5B,EAAU,IAAI,CAACoB,MAASA,EAAK,EAAE;AAAA,cACtC,UAAUS;AAAA,cAET,UAAAL;AAAA,YAAA;AAAA,UAAA;AAAA,QACH;AAAA,MAAA,IAGFA;AAAA,IAAA;AAAA,EAAA;AAIR;AAEAzB,GAAS,cAAc;ACtLhB,MAAM+B,KAA0B,CAAC;AAAA,EACtC,UAAA5U;AAAA,EACA,UAAAsI;AAAA,EACA,OAAA7X;AAAA,EACA,GAAG3B;AACL,MACE,gBAAAC,EAAC8lB,IAAA,EAAe,OAAApkB,GAAe,GAAG3B,GAChC,UAAA,gBAAAI;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWF;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACAuR,EAAalP,EAAO,EAAE;AAAA,MACtBgB;AAAA,QACEjC,EAAaV,EAAgB,KAAK;AAAA,QAClC4Y,KAAYlY,EAAaV,EAAgB,QAAQ;AAAA,MAAA;AAAA,MAEnDU,EAAaV,EAAgB,cAAcL,EAAa,KAAK;AAAA,IAAA;AAAA,IAG/D,UAAA;AAAA,MAAA,gBAAAN,EAACgR,KAAM,UAAAC,GAAS;AAAA,MAChB,gBAAAjR;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWC;AAAA,YACT;AAAA,YACA4B,EAAehB,GAAW,OAAO;AAAA,UAAA;AAAA,UAGlC,UAAA0Y,uBAAalJ,IAAA,EAAK,MAAMlO,EAAS,OAAO,MAAMK,EAAK,GAAA,CAAI;AAAA,QAAA;AAAA,MAAA;AAAA,IAC1D;AAAA,EAAA;AACF,GACF;AAGFqjB,GAAO,cAAc;AC9Bd,IAAKE,uBAAAA,OACVA,EAAA,SAAS,UACTA,EAAA,cAAc,gBACdA,EAAA,YAAY,cACZA,EAAA,MAAM,OACNA,EAAA,WAAW,aACXA,EAAA,SAAS,WANCA,IAAAA,MAAA,CAAA,CAAA;AAiCZ,SAASC,GAAe/jB,GAAiBqc,GAAsC;AAC7E,MAAIA;AACF,WAAOtc,GAAaF,GAAO,UAAU;AAEvC,MAAIG;AACF,WAAOD,GAAaC,CAAM;AAG9B;AA0EO,MAAMgkB,KAA0B,CAAC;AAAA,EACtC,QAAA7U,IAAS;AAAA,EACT,WAAAtR;AAAA,EACA,UAAAuW;AAAA,EACA,QAAApU;AAAA,EACA,WAAA6gB;AAAA,EACA,UAAAzO;AAAA,EACA,SAAA+N;AAAA,EACA,QAAA9D;AAAA,EACA,OAAA5c;AAAA,EACA,GAAG3B;AACL,MAAM;AACJ,QAAM,CAACmmB,GAAOC,CAAQ,IAAI/Q,EAAS,EAAE,GAC/B,CAACgR,GAAgBC,CAAiB,IAAIjR,EAAmB,MAAM,CAAA,CAAE,GACjE+D,IAAWxB,GAAyB,IAAI,GACxC,EAAE,KAAK2O,GAAY,OAAOC,EAAA,IAAiBhL,GAAA,GAE3CiL,IAAkBhR;AAAA,IACtB,MACE0Q,IACI9D,GAAS;AAAA,MAAO,CAACqE,MACfA,EAAI,KAAK,MAAM,OAAO,cAAc,SAASP,EAAM,YAAA,CAAa;AAAA,IAAA,IAElE9D;AAAA,IACN,CAACA,GAAS8D,CAAK;AAAA,EAAA;AAGjB,EAAA9F,GAAU,MAAM;AACd,IAAI1e,KAASA,EAAM,SAAS,KAC1B2kB,EAAkB,CAAC,GAAG3kB,CAAK,CAAC;AAAA,EAEhC,GAAG,CAACA,CAAK,CAAC;AAEV,QAAMglB,IAAenR;AAAA,IACnB,CAAC7T,MAAoC;AACnC,MAAIA,KAEA2kB,EADE,OAAO3kB,KAAU,WACD,CAACA,CAAK,IAEN,CAAC,GAAGA,CAAK,CAFF,GAM7BykB,EAAS,EAAE,GACX9R,IAAW3S,CAAK,GAEZohB,KACF,OAAO,WAAW,MAAM;AACtB,QAAA3J,EAAS,SAAS,KAAA;AAAA,MACpB,GAAG,CAAC;AAAA,IAER;AAAA,IACA,CAAC2J,GAAWzO,CAAQ;AAAA,EAAA,GAGhBsS,IAAkBpR;AAAA,IACtB,CAAC,MACC,KAAK,EAAE,SAAS,IACZ,OAAO,KAAM,WACV6M,GAAS,KAAK,CAACpK,MAAMA,EAAE,OAAO,CAAC,GAAG,KAAK,SAAS,KACjD,EACG,IAAI,CAACwI,MAAO4B,GAAS,KAAK,CAACpK,MAAMA,EAAE,OAAOwI,CAAE,GAAG,KAAK,KAAK,EACzD,OAAO,CAACxI,MAAM,CAAC,CAACA,CAAC,EACjB,KAAK,IAAI,IACd;AAAA,IACN,CAACoK,CAAO;AAAA,EAAA;AAGV,SACE,gBAAApiB,EAAC,SAAI,WAAWC,EAAKH,GAAW,QAAQ,GAAI,GAAGC,GAC7C,UAAA,gBAAAI;AAAA,IAACymB;AAAA,IAAA;AAAA,MACC,UAAAvQ;AAAA,MACA,OAAA3U;AAAA,MACA,UAAUglB;AAAA,MACV,UAAU,CAAC5D;AAAA,MACX,WAAS;AAAA,MACT,SAAS,MAAMqD,EAAS,EAAE;AAAA,MAE1B,UAAA;AAAA,QAAA,gBAAAhmB,EAAC,OAAA,EAAI,KAAKmmB,GAAY,WAAU,8BAC9B,UAAA;AAAA,UAAA,gBAAAtmB;AAAA,YAAC6mB;AAAA,YAAA;AAAA,cACC,KAAK1N;AAAA,cACL,cAAa;AAAA,cACb,cAAcwN;AAAA,cACd,UAAU,CAAC3O,MAAMmO,EAASnO,EAAE,OAAO,KAAK;AAAA,cAMxC,WAAW/X;AAAA,gBACT4gB,GAAW,EAAE,UAAAxK,GAAU;AAAA,gBACvB;AAAA,cAAA;AAAA,YACF;AAAA,UAAA;AAAA,UAEF,gBAAArW;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAWC;AAAA,gBACT;AAAA,gBACAoW,KAAY;AAAA,cAAA;AAAA,cAEd,eAAW;AAAA,cAEX,UAAA,gBAAArW;AAAA,gBAACqQ;AAAA,gBAAA;AAAA,kBACC,MAAMlO,EAAS;AAAA,kBACf,MAAMK,EAAK;AAAA,kBACX,WAAWX,EAAeZ,EAAU,SAAS;AAAA,gBAAA;AAAA,cAAA;AAAA,YAC/C;AAAA,UAAA;AAAA,QACF,GACF;AAAA,QAEA,gBAAAjB;AAAA,UAAC8mB;AAAA,UAAA;AAAA,YACC,QAAQ,EAAE,IAAI1V,GAAQ,KAAK,EAAA;AAAA,YAC3B,QAAAkN;AAAA,YACA,OAAOiI,IAAe,EAAE,OAAOA,MAAiB;AAAA,YAChD,WAAWtmB;AAAA,cACT;AAAA,cACA;AAAA,cACA2B,EAAiBhB,EAAY,OAAO;AAAA,cACpCS,EAAaV,EAAgB,KAAK;AAAA,cAClCqlB,GAAe/jB,GAAQqc,CAAM;AAAA,cAC7B9M,EAAalP,EAAO,EAAE;AAAA,cACtBgQ,GAAa/P,GAAO,EAAE;AAAA,YAAA;AAAA,YAGvB,UAAAikB,GAAiB,IAAI,CAACC,MAAQ;AAE7B,oBAAMM,IAAerlB,KAAS0kB,GACxBxB,IAAa,MAAM,QAAQmC,CAAY,IACzCA,EAAa,SAASN,EAAI,EAAE,IAC5BM,MAAiBN,EAAI;AACzB,qBACE,gBAAAzmB;AAAA,gBAAC6lB;AAAA,gBAAA;AAAA,kBAEC,OAAOY,EAAI;AAAA,kBACX,UAAU7B;AAAA,kBACV,WAAW3kB,EAAK,gBAAgB;AAAA,kBAEhC,4BAAC+Q,GAAA,EAAM,UAAAyV,EAAI,KAAK,WAAWA,EAAI,KAAK,MAAA,CAAM;AAAA,gBAAA;AAAA,gBALrCA,EAAI;AAAA,cAAA;AAAA,YAQf,CAAC;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ;AAEAR,GAAO,cAAc;AClRd,MAAMe,KAAkC,CAAC;AAAA,EAC9C,UAAAnP;AAAA,EACA,aAAA4C;AAAA,EACA,OAAA/Y;AAAA,EACA,GAAG3B;AACL,MAEI,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWC;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACAoB,EAAaR,GAAW,OAAO;AAAA,MAC/B2Q,EAAalP,EAAO,IAAI;AAAA,MACxB;AAAA,IAAA;AAAA,IAEF,OAAO,EAAE,MAAM,GAAGuV,IAAW,GAAG,IAAA;AAAA,IAChC,aAAa4C;AAAA,IACb,MAAK;AAAA,IACL,iBAAe/Y;AAAA,IACf,UAAU;AAAA,IACT,GAAG3B;AAAA,EAAA;AAAA;AAKVinB,GAAW,cAAc;ACtClB,MAAMC,KAAW,CAACvlB,GAAewlB,MAA8B;AACpE,QAAMC,IAAS,IAAID;AACnB,SAAO,KAAK,MAAMxlB,IAAQylB,CAAM,IAAIA;AACtC,GAiBaC,KAAa,CAAC1lB,GAAe2lB,IAAoB,OACrD,WAAW3lB,EAAM,QAAQ2lB,CAAS,CAAC,GCO/BC,KAAgC,CAAC;AAAA,EAC5C,KAAAC;AAAA,EACA,KAAAC;AAAA,EACA,OAAAC;AAAA,EACA,UAAApT;AAAA,EACA,mBAAAqT;AAAA,EACA,MAAAC;AAAA,EACA,OAAAjmB;AAAA,EACA,GAAG3B;AACL,MAAM;AACJ,QAAM6nB,IAAiBjQ,GAAuB,IAAI,GAG5CkQ,IAAelQ,GAAsCjW,CAAK,GAE1DomB,IAAS,MAAM,QAAQpmB,CAAK,IAAIA,IAAQ,CAAC8lB,GAAK9lB,KAAS6lB,CAAG,GAC1DQ,IAAWD,EAAO,CAAC,GACnBE,IAAWF,EAAO,CAAC,GACnBG,IAAUlU,GAAUrS,CAAK,GAKzBwmB,IAAkB3S;AAAA,IACtB,CAAC,OAAe,IAAIiS,MAAQD,IAAMC;AAAA,IAClC,CAACD,GAAKC,CAAG;AAAA,EAAA,GAMLW,IAAe5S;AAAA,IACnB,CAAC6S,MAAiB;AAChB,YAAMC,IAAWb,IAAMY,KAAQb,IAAMC,IAC/Bc,IAAY,KAAK,MAAMD,IAAWV,CAAI,IAAIA;AAChD,aAAO,KAAK,IAAI,KAAK,IAAIW,GAAWd,CAAG,GAAGD,CAAG;AAAA,IAC/C;AAAA,IACA,CAACA,GAAKC,GAAKG,CAAI;AAAA,EAAA,GAMXY,IAAehT,EAAY,CAACiT,MAA2B;AAC3D,UAAMC,IAAeb,EAAe;AACpC,QAAI,CAACa;AACH,aAAO;AAGT,UAAMC,IAAeD,EAAa,sBAAA;AAKlC,WAJkB,KAAK;AAAA,MACrB,KAAK,IAAID,IAASE,EAAa,MAAM,CAAC;AAAA,MACtCA,EAAa;AAAA,IAAA,IAEIA,EAAa;AAAA,EAClC,GAAG,CAAA,CAAE,GAKCC,IAAapT;AAAA,IACjB,CAACiT,GAAgBI,MAAwB;AACvC,UAAI,CAAChB,EAAe;AAClB;AAGF,YAAMiB,IAAmBN,EAAaC,CAAM,GACtCM,IAAW1B,GAAWe,EAAaU,CAAgB,CAAC;AAE1D,UAAIE;AACJ,MAAItB,IACEmB,MAAS,QACPE,KAAYd,MACde,IAAO,CAACD,GAAUd,CAAQ,KAGxBc,KAAYf,MACdgB,IAAO,CAAChB,GAAUe,CAAQ,KAI9BC,IAAOD,GAGLC,MAAS,WACXlB,EAAa,UAAUkB,GACvB1U,IAAW0U,CAAI;AAAA,IAEnB;AAAA,IACA,CAACZ,GAAcI,GAAcP,GAAUD,GAAUN,GAAOpT,CAAQ;AAAA,EAAA,GAM5D2U,IAA2BzT;AAAA,IAC/B,CAACyC,GAAe4Q,MAAwB;AACtC,MAAA5Q,EAAE,eAAA;AAEF,YAAMiR,IAAkB,CAACjR,MACvB2Q,EAAW3Q,EAAE,SAAS4Q,CAAI,GAEtBM,IAAgB,MAAY;AAChC,iBAAS,oBAAoB,aAAaD,CAAe,GACzD,SAAS,oBAAoB,WAAWC,CAAa,GAEjDrB,EAAa,YAAY,UAC3BH,IAAoBG,EAAa,OAAO;AAAA,MAE5C;AAEA,eAAS,iBAAiB,aAAaoB,CAAe,GACtD,SAAS,iBAAiB,WAAWC,CAAa;AAAA,IACpD;AAAA,IACA,CAACP,GAAYjB,CAAiB;AAAA,EAAA,GAQ1ByB,IAAmB5T;AAAA,IACvB,CAACyC,MAAkB;AACjB,UAAI,CAAC4P,EAAe;AAClB;AAGF,YAAMwB,IAAWb,EAAavQ,EAAE,OAAO,GACjCqR,IAAalB,EAAaiB,CAAQ;AAExC,UAAIL;AACJ,UAAItB,GAAO;AACT,cAAM6B,IAAapB,EAAgBH,CAAQ,GACrCwB,KAAarB,EAAgBF,CAAQ,GAErCwB,KAAc,KAAK,IAAIJ,IAAWE,CAAU,GAC5CG,KAAc,KAAK,IAAIL,IAAWG,EAAU;AAElD,QAAIH,IAAWE,KAAcE,KAAcC,KACzCV,IAAO,CAACM,GAAYrB,CAAQ,IAE5Be,IAAO,CAAChB,GAAUsB,CAAU;AAAA,MAEhC;AACE,QAAAN,IAAOM;AAGT,MAAAxB,EAAa,UAAUkB,GACvB1U,IAAW0U,CAAI,GAEfrB,IAAoBqB,CAAI;AAAA,IAC1B;AAAA,IACA;AAAA,MACER;AAAA,MACAJ;AAAA,MACAV;AAAA,MACAS;AAAA,MACAH;AAAA,MACAC;AAAA,MACA3T;AAAA,MACAqT;AAAA,IAAA;AAAA,EACF;AAGF,SACE,gBAAA1nB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAK4nB;AAAA,MACL,WAAW3nB;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAoB,EAAaV,EAAgB,YAAY;AAAA,QACzC6Q,EAAalP,EAAO,IAAI;AAAA,MAAA;AAAA,MAE1B,SAAS6mB;AAAA,MACT,WAAW,CAACnR,MAAMA,EAAE,gBAAA;AAAA,MACpB,MAAK;AAAA,MACJ,GAAGjY;AAAA,MAEH,UAAA,CAACkoB,KACA,gBAAA9nB,EAAAmR,IAAA,EACE,UAAA;AAAA,QAAA,gBAAAtR;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAWC;AAAA,cACT;AAAA,cACA;AAAA,cACAoB,EAAaR,GAAW,OAAO;AAAA,cAC/B2Q,EAAalP,EAAO,IAAI;AAAA,YAAA;AAAA,YAE1B,OAAO;AAAA,cACL,MAAM,GAAG4lB,EAAgBH,CAAQ,IAAI,GAAG;AAAA,cACxC,OAAO,IAAI,IAAIG,EAAgBF,CAAQ,KAAK,GAAG;AAAA,YAAA;AAAA,UACjD;AAAA,QAAA;AAAA,QAGDP,KACC,gBAAAznB;AAAA,UAACgnB;AAAA,UAAA;AAAA,YACC,UAAUkB,EAAgBH,CAAQ;AAAA,YAClC,aAAa,CAAC/P,MAAMgR,EAAyBhR,GAAG,KAAK;AAAA,YACrD,OAAO+P;AAAA,UAAA;AAAA,QAAA;AAAA,QAGX,gBAAA/nB;AAAA,UAACgnB;AAAA,UAAA;AAAA,YACC,UAAUkB,EAAgBF,CAAQ;AAAA,YAClC,aAAa,CAAChQ,MAAMgR,EAAyBhR,GAAG,KAAK;AAAA,YACrD,OAAOgQ;AAAA,UAAA;AAAA,QAAA;AAAA,MACT,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAIR;AAEAV,GAAU,cAAc;ACrOxB,MAAMoC,KAAmB,CAAChoB,GAAe8lB,GAAaD,OACnD7lB,IAAQ8lB,MAAQD,IAAMC,IAoBnBmC,KAMD,CAAC,EAAE,KAAApC,GAAK,KAAAC,GAAK,WAAAN,GAAW,OAAAxlB,GAAO,WAAAkoB,IAAY,UAAU;AACxD,QAAMC,IAAgBH,GAAiBhoB,GAAO8lB,GAAKD,CAAG;AAGtD,MAAIsC,IAAgBD,KAAa,IAAIC,IAAgBD;AACnD,WAAO;AAGT,QAAME,IAAe7C,GAASvlB,GAAOwlB,CAAS;AAC9C,SAAK,OAAO,SAAS4C,CAAY,IAK/B,gBAAA9pB;AAAA,IAACgR;AAAA,IAAA;AAAA,MACC,WAAW/Q,EAAK,YAAY,kBAAkB;AAAA,MAC9C,OAAO,EAAE,MAAM,GAAG4pB,IAAgB,GAAG,IAAA;AAAA,MACrC,SAASnnB,EAAY;AAAA,MAEpB,UAAAonB;AAAA,IAAA;AAAA,EAAA,IATI;AAYX,GAoBaC,KAAqC,CAAC;AAAA,EACjD,WAAAjqB;AAAA,EACA,WAAAkqB;AAAA,EACA,KAAAzC;AAAA,EACA,UAAA0C;AAAA,EACA,KAAAzC;AAAA,EACA,UAAA0C;AAAA,EACA,WAAAhD;AAAA,EACA,OAAAxlB;AAAA,EACA,GAAG3B;AACL,MAEI,gBAAAI;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWmD;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACAxD;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,IAEH,UAAA;AAAA,MAAAmqB,KACC,gBAAAlqB,EAACgR,KAAK,SAAStO,EAAY,IAAK,UAAAukB,GAASO,GAAKN,CAAS,EAAA,CAAE;AAAA,MAE1D+C,uBACEjZ,GAAA,EAAK,SAAStO,EAAY,IAAK,UAAAukB,GAASM,GAAKL,CAAS,EAAA,CAAE;AAAA,MAG1DxlB,MAAU,UACTsoB,MACC,MAAM,QAAQtoB,CAAK,IAClB,gBAAAvB,EAAAmR,IAAA,EACE,UAAA;AAAA,QAAA,gBAAAtR;AAAA,UAAC2pB;AAAA,UAAA;AAAA,YACC,KAAApC;AAAA,YACA,KAAAC;AAAA,YACA,WAAAN;AAAA,YACA,OAAOxlB,EAAM,CAAC;AAAA,UAAA;AAAA,QAAA;AAAA,QAEhB,gBAAA1B;AAAA,UAAC2pB;AAAA,UAAA;AAAA,YACC,KAAApC;AAAA,YACA,KAAAC;AAAA,YACA,WAAAN;AAAA,YACA,OAAOxlB,EAAM,CAAC;AAAA,UAAA;AAAA,QAAA;AAAA,MAChB,GACF,IAEA,gBAAA1B,EAAC2pB,IAAA,EAAU,KAAApC,GAAU,KAAAC,GAAU,WAAAN,GAAsB,OAAAxlB,GAAc;AAAA,IAAA;AAAA,EAAA;AAAA;AAM7EqoB,GAAa,cAAc;ACjHpB,MAAMI,KAAuB,CAGlCC,GACAC,MACqB;AACrB,QAAMC,IAAoB9U;AAAA,IACxB,MAAM+U,GAASH,GAAUC,CAAK;AAAA,IAC9B,CAACD,GAAUC,CAAK;AAAA,EAAA;AAGlB,SAAAjK,GAAU,MACD,MAAMkK,EAAkB,OAAA,GAC9B,CAACA,CAAiB,CAAC,GAEfA;AACT,GCvCaE,KAAqB,CAAC9oB,MACjCA,KAAU,MAOC+oB,KAAoB,CAC/B/oB,MACG;AACH,MAAI,CAAC8oB,GAAQ9oB,CAAK;AAChB,WAAO;AAGT,QAAMgpB,IAAc,OAAO,WAAWhpB,EAAO,UAAU;AACvD,SAAO,OAAO,SAASgpB,CAAW;AACpC,GAQaC,KACX,CAACnD,GAAaD,MACd,CAAC7lB,MAA8C;AAC7C,MAAI,CAAC+oB,GAAO/oB,CAAK;AACf,WAAO;AAGT,QAAMkpB,IAAclpB,EAAO,SAAA;AAE3B,SACE,OAAO,WAAWkpB,CAAW,KAAKpD,KAClC,OAAO,WAAWoD,CAAW,KAAKrD;AAEtC,GCmBIsD,KAAQ,CAACnpB,GAAe8lB,GAAaD,MACzC,KAAK,IAAI,KAAK,IAAI7lB,GAAO8lB,CAAG,GAAGD,CAAG,GAoDvBuD,KAA8B,CAAC;AAAA,EAC1C,MAAAC;AAAA,EACA,WAAAjrB;AAAA,EACA,eAAAkrB,IAAgB;AAAA,EAChB,SAAAC;AAAA,EACA,WAAAjB;AAAA,EACA,KAAAzC;AAAA,EACA,UAAA0C;AAAA,EACA,KAAAzC;AAAA,EACA,UAAA0C;AAAA,EACA,OAAAzC;AAAA,EACA,UAAApT;AAAA,EACA,mBAAAqT;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,OAAAjmB;AAAA,EACA,eAAA+S;AAAA,EACA,GAAG1U;AACL,MAAM;AAEJ,QAAM,CAACmrB,GAAgBC,CAAiB,IAAI/V,EAE1C1T,CAAK,GACD,CAACqmB,GAAUqD,CAAW,IAAIhW;AAAA,IAAiB,MAC/C,MAAM,QAAQ1T,CAAK,IAAIA,EAAM,CAAC,EAAE,aAAa8lB,EAAI,SAAA;AAAA,EAAS,GAEtD,CAACQ,GAAUqD,CAAW,IAAIjW;AAAA,IAAiB,MAC/C,MAAM,QAAQ1T,CAAK,IAAIA,EAAM,CAAC,EAAE,SAAA,KAAcA,KAAS6lB,GAAK,SAAA;AAAA,EAAS,GAMjE+D,IAAe/V;AAAA,IACnB,CAACgW,GAAyBC,OACxBb,GAAmBnD,GAAK,OAAO,WAAWgE,GAAO,UAAU,CAAC,EAAED,CAAM,KACpEZ,GAAmB,OAAO,WAAWY,EAAO,UAAU,GAAGhE,CAAG,EAAEiE,EAAM;AAAA,IACtE,CAACjE,GAAKC,CAAG;AAAA,EAAA;AAIX,EAAApH,GAAU,MAAM;AACd,IAAA+K,EAAkBzpB,CAAK;AAAA,EACzB,GAAG,CAACA,CAAK,CAAC,GAGV0e,GAAU,MAAM;AACd,IAAI8K,KAAmB,SACjB,MAAM,QAAQA,CAAc,KAC9BE,EAAYP,GAAMK,EAAe,CAAC,GAAG1D,GAAKD,CAAG,EAAE,UAAU,GACzD8D,EAAYR,GAAMK,EAAe,CAAC,GAAG1D,GAAKD,CAAG,EAAE,UAAU,MAEzD6D,EAAY5D,EAAI,UAAU,GAC1B6D,EAAYR,GAAMK,GAAgB1D,GAAKD,CAAG,EAAE,UAAU;AAAA,EAG5D,GAAG,CAACA,GAAKC,GAAK0D,CAAc,CAAC;AAG7B,QAAMO,IAAoBtB;AAAA,IACxB5U,EAAY,CAAC7T,MAA6B2S,IAAW3S,CAAK,GAAG,CAAC2S,CAAQ,CAAC;AAAA,IACvE2W;AAAA,EAAA,GAGItE,IAAenR;AAAA,IACnB,CAAC7T,MAA6B;AAE5B,MAAAypB,EAAkBzpB,CAAK,GACvB+pB,EAAkB/pB,CAAK;AAAA,IACzB;AAAA,IACA,CAAC+pB,CAAiB;AAAA,EAAA,GAGdC,KAAuBnW;AAAA,IAC3B,CAACyC,MAAqC;AACpC,MAAAoT,EAAYpT,EAAE,OAAO,KAAK;AAE1B,YAAM8M,KAAI,OAAO,WAAW9M,EAAE,OAAO,KAAK;AAC1C,MAAIsT,EAAaxG,IAAGkD,CAAQ,KAAKlD,OAAM,OAAO,WAAWiD,CAAQ,KAC/DrB,EAAa,CAAC5B,IAAG,OAAO,WAAWkD,CAAQ,CAAC,CAAC;AAAA,IAEjD;AAAA,IACA,CAACtB,GAAc4E,GAActD,GAAUD,CAAQ;AAAA,EAAA,GAG3C4D,KAAuBpW;AAAA,IAC3B,CAACyC,MAAqC;AACpC,MAAAqT,EAAYrT,EAAE,OAAO,KAAK;AAE1B,YAAM8M,KAAI,OAAO,WAAW9M,EAAE,OAAO,KAAK;AAC1C,MAAIsT,EAAavD,GAAUjD,EAAC,KAAKA,OAAM,OAAO,WAAWkD,CAAQ,KAC/DtB,EAAae,IAAQ,CAAC,OAAO,WAAWM,CAAQ,GAAGjD,EAAC,IAAIA,EAAC;AAAA,IAE7D;AAAA,IACA,CAAC4B,GAAc4E,GAActD,GAAUD,GAAUN,CAAK;AAAA,EAAA,GAIlDmE,KAAoBrW,EAAY,MAAM;AAC1C,QAAI,CAACmS,EAAmB;AAExB,UAAMmE,IAAS,OAAO,WAAW7D,CAAQ;AACzC,QAAIP,GAAO;AACT,YAAMqE,KAAS,OAAO,WAAW/D,CAAQ;AACzC,MAAIuD,EAAaQ,IAAQD,CAAM,KAC7BnE,EAAkB,CAACoE,IAAQD,CAAM,CAAC;AAAA,IAEtC,MAAA,CAAW,OAAO,SAASA,CAAM,KAC/BnE,EAAkBmE,CAAM;AAAA,EAE5B,GAAG,CAACP,GAActD,GAAUD,GAAUN,GAAOC,CAAiB,CAAC,GAEzDzT,KAAO8W,IACT,uCACA;AAEJ,SACE,gBAAA5qB;AAAA,IAAC+S;AAAA,IAAA;AAAA,MACC,aAAa7Q,EAAY;AAAA,MACzB,SAASI,EAAQ;AAAA,MACjB,WAAA3C;AAAA,MACC,GAAGC;AAAA,MAEF,UAAA;AAAA,SAAAkrB,KAAWjB,MACX,gBAAAhqB;AAAA,UAAC+pB;AAAA,UAAA;AAAA,YACC,WAAAC;AAAA,YACA,KAAAxC;AAAA,YACA,UAAUyD;AAAA,YACV,KAAA1D;AAAA,YACA,UAAU0D;AAAA,YACV,WAAWtD;AAAA,YACX,OAAOuD;AAAA,UAAA;AAAA,QAAA;AAAA,QAIX,gBAAAlrB;AAAA,UAACsnB;AAAA,UAAA;AAAA,YACC,KAAAE;AAAA,YACA,KAAAD;AAAA,YACA,OAAAE;AAAA,YACA,MAAAE;AAAA,YACA,OAAOuD;AAAA,YACP,UAAUxE;AAAA,YACV,mBAAAgB;AAAA,UAAA;AAAA,QAAA;AAAA,QAGD,CAACqD,KACA,gBAAA5qB,EAAC,OAAA,EAAI,WAAU,qCACZ,UAAA;AAAA,UAAAsnB,KACC,gBAAAznB;AAAA,YAAC6e;AAAA,YAAA;AAAA,cACC,OAAOqL;AAAA,cACP,SACE,gBAAAlqB;AAAA,gBAAC8gB;AAAA,gBAAA;AAAA,kBACC,OAAOiH;AAAA,kBACP,UAAU2D;AAAA,kBACV,QAAQE;AAAA,kBACR,OAAO,CAACN,EAAavD,GAAUC,CAAQ;AAAA,gBAAA;AAAA,cAAA;AAAA,YACzC;AAAA,UAAA;AAAA,UAIN,gBAAAhoB;AAAA,YAAC6e;AAAA,YAAA;AAAA,cACC,OAAOoL;AAAA,cACP,SACE,gBAAAjqB;AAAA,gBAAC8gB;AAAA,gBAAA;AAAA,kBACC,OAAOkH;AAAA,kBACP,UAAU2D;AAAA,kBACV,QAAQC;AAAA,kBACR,OAAO,CAACN,EAAavD,GAAUC,CAAQ;AAAA,gBAAA;AAAA,cAAA;AAAA,YACzC;AAAA,UAAA;AAAA,QAEJ,GACF;AAAA,QAEDvT,KAAiB,gBAAAzU,EAACgU,IAAA,EAAU,OAAAtS,GAAc,MAAAuS,GAAA,CAAY;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG7D,GAmCa8X,KAAgD,CAAC;AAAA,EAC5D,UAAA1X;AAAA,EACA,mBAAAqT;AAAA,EACA,KAAAH;AAAA,EACA,KAAAC;AAAA,EACA,GAAGznB;AACL,MACE,gBAAAC;AAAA,EAAC8qB;AAAA,EAAA;AAAA,IACC,KAAAtD;AAAA,IACA,KAAAD;AAAA,IACC,GAAGxnB;AAAA,IACJ,OAAO;AAAA,IACP,UAAAsU;AAAA,IACA,mBAAAqT;AAAA,EAAA;AACF,GAoCWsE,KAA8C,CAAC;AAAA,EAC1D,UAAA3X;AAAA,EACA,mBAAAqT;AAAA,EACA,KAAAH;AAAA,EACA,KAAAC;AAAA,EACA,GAAGznB;AACL,MACE,gBAAAC;AAAA,EAAC8qB;AAAA,EAAA;AAAA,IACC,KAAAtD;AAAA,IACA,KAAAD;AAAA,IACC,GAAGxnB;AAAA,IACJ,OAAO;AAAA,IACP,UAAAsU;AAAA,IACA,mBAAAqT;AAAA,EAAA;AACF;AAGFoD,GAAW,cAAc;AACzBiB,GAAkB,cAAc;AAChCC,GAAiB,cAAc;AC/XxB,MAAMC,KAA8C,CAAC;AAAA,EAC1D,UAAAhb;AAAA,EACA,WAAAnR;AAAA,EACA,GAAGC;AACL,MAEI,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWsD;AAAA,MACT;AAAA,MACAjC,EAAaV,EAAgB,KAAK;AAAA,MAClC6Q,EAAalP,EAAO,EAAE;AAAA,MACtBxC;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,IAEH,UAAAkR;AAAA,EAAA;AAAA,GAKMib,KAAoD,CAAC;AAAA,EAChE,UAAAjb;AAAA,EACA,WAAAnR;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAMosB,IAAc,OAAOpsB,EAAM,WAAY;AAC7C,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWsD;AAAA,QACT;AAAA,QACA1B,EAAiBhB,EAAY,YAAY;AAAA,QACzCurB,KACE;AAAA,QACFrsB;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,MAEH,UAAAkR;AAAA,IAAA;AAAA,EAAA;AAGP,GAEamb,KAA2D,CAAC;AAAA,EACvE,UAAAnb;AAAA,EACA,WAAAnR;AAAA,EACA,GAAGC;AACL,MAEI,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWsD;AAAA,MACT;AAAA,MACA1B,EAAiBhB,EAAY,YAAY;AAAA,MACzCd;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,IAEH,UAAAkR;AAAA,EAAA;AAAA,GAKMob,KAAyD,CAAC;AAAA,EACrE,UAAApb;AAAA,EACA,GAAGlR;AACL,MACS,gBAAAC,EAAC,SAAA,EAAO,GAAGD,GAAQ,UAAAkR,EAAA,CAAS,GAGxBqb,KAAsD,CAAC;AAAA,EAClE,UAAArb;AAAA,EACA,WAAAnR;AAAA,EACA,GAAGC;AACL,MAEI,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWsD;AAAA,MACT;AAAA,MACAzB,EAAeZ,EAAU,OAAO;AAAA,MAChC4P,GAAWnO,EAAY,EAAE;AAAA,MACzB5C;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,IAEH,UAAAkR;AAAA,EAAA;AAAA,GAKMsb,KAAsD,CAAC;AAAA,EAClE,UAAAtb;AAAA,EACA,WAAAnR;AAAA,EACA,GAAGC;AACL,MAEI,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWsD;AAAA,MACT;AAAA,MACAzB,EAAeZ,EAAU,SAAS;AAAA,MAClC4P,GAAWnO,EAAY,EAAE;AAAA,MACzB5C;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,IAEH,UAAAkR;AAAA,EAAA;AAAA;AAKPgb,GAAM,cAAc;AACpBI,GAAU,cAAc;AACxBC,GAAU,cAAc;AACxBC,GAAU,cAAc;AACxBH,GAAY,cAAc;AAC1BF,GAAS,cAAc;ACzHhB,IAAKM,uBAAAA,OACVA,EAAA,OAAO,QACPA,EAAA,WAAW,YACXA,EAAA,aAAa,cACbA,EAAA,gBAAgB,iBAJNA,IAAAA,MAAA,CAAA,CAAA;AAgBZ,MAAM/oB,KAAmC;AAAA,EACvC,CAACjB,EAAK,EAAE,GAAGvC,EAAK,iBAAiB,WAAW;AAAA,EAC5C,CAACuC,EAAK,EAAE,GAAGvC,EAAK,aAAa,WAAW;AAAA,EACxC,CAACuC,EAAK,EAAE,GAAGvC,EAAK,iBAAiB,WAAW;AAAA,EAC5C,CAACuC,EAAK,EAAE,GAAGvC,EAAK,aAAa,WAAW;AAAA,EACxC,CAACuC,EAAK,EAAE,GAAGvC,EAAK,iBAAiB,YAAY;AAC/C,GAEMwsB,KAA+C;AAAA,EAClD,MAAsB;AAAA,EACtB,UAA0B;AAAA,EAC1B,YAA4B;AAAA,EAC5B,eAA+B;AAClC,GAkCaC,KAA8B,CAAC;AAAA,EAC1C,MAAA/oB,IAAOnB,EAAK;AAAA,EACZ,QAAAiP,IAASnP,EAAO;AAAA,EAChB,OAAA0W,IAAQ;AAAA,EACR,QAAA2T,IAAS;AAAA,EACT,MAAAC,IAAO;AAAA,EACP,WAAA9sB;AAAA,EACA,oBAAA+sB;AAAA,EACA,UAAAxW;AAAA,EACA,GAAGtW;AACL,wBAEK4U,IAAA,EAAM,WAAWrR,EAAG,uBAAuBupB,CAAkB,GAC5D,UAAA,gBAAA7sB;AAAA,EAAC8sB;AAAAA,EAAA;AAAA,IACC,MAAAF;AAAA,IACA,UAAAvW;AAAA,IACA,WAAW/S;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MAEA0V,KAAS;AAAA,MACTA,KAAS;AAAA,MAETvV,GAAWE,CAAI;AAAA,MACf6N,EAAaC,CAAM;AAAA,MACnBgb,GAAaE,CAAM;AAAA,MACnB7sB;AAAA,IAAA;AAAA,IAED,GAAGC;AAAA,EAAA;AAAA,GAER;AAIJ2sB,GAAS,cAAc;AClGhB,MAAMK,KAAgC,CAAC;AAAA,EAC5C,OAAAzrB,IAAQR,GAAU;AAAA,EAClB,UAAAmQ;AAAA,EACA,GAAGlR;AACL,MACE,gBAAAC,EAACgR,KAAK,OAAA1P,GAAc,SAASoB,EAAY,OAAQ,GAAG3C,GACjD,UAAAkR,EAAA,CACH;AAGF8b,GAAU,cAAc;ACMxB,MAAMlb,KAA8C;AAAA,EAClD,CAACxO,GAAQ,OAAO,GAAGxB,EAAeZ,EAAU,OAAO;AAAA,EACnD,CAACoC,GAAQ,SAAS,GAAGxB,EAAeZ,EAAU,SAAS;AAAA,EACvD,CAACoC,GAAQ,OAAO,GAAGxB,EAAef,GAAU,OAAO;AAAA,EACnD,CAACuC,GAAQ,MAAM,GAAGxB,EAAef,GAAU,WAAW;AAAA,EACtD,CAACuC,GAAQ,IAAI,GAAGxB,EAAeZ,EAAU,OAAO;AAClD,GAuCa+rB,KAAwB,CAAC;AAAA,EACpC,QAAAxZ;AAAA,EACA,QAAApC,IAAS/Q,EAAO;AAAA,EAChB,WAAAP;AAAA,EACA,aAAA4T;AAAA,EACA,MAAA/B;AAAA,EACA,MAAAN;AAAA,EACA,OAAAsC;AAAA,EACA,SAAA7C,IAAUzN,GAAQ;AAAA,EAClB,GAAGtD;AACL,MAAM;AACJ,QAAMktB,IACJ,gBAAA9sB;AAAA,IAAC+S;AAAA,IAAA;AAAA,MACC,SAASzQ,EAAQ;AAAA,MACjB,WAAWa;AAAA,QACT;AAAA,QACAkO,EAAalP,EAAO,EAAE;AAAA,QACtBjB,EAAaV,EAAgB,KAAK;AAAA,QAClC2R,GAAa/P,GAAO,EAAE;AAAA,QACtBzC;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAI,EAAC+S,IAAA,EAAM,aAAa7Q,EAAY,QAC9B,UAAA;AAAA,UAAA,gBAAAlC,EAAC+S,MAAM,SAASzQ,EAAQ,IAAI,OAAOrC,GAAM,QACvC,UAAA;AAAA,YAAA,gBAAAJ;AAAA,cAACyQ;AAAA,cAAA;AAAA,gBACC,SAASkB;AAAA,gBACT,WAAW1R,EAAK,UAAU4R,GAAcf,CAAO,CAAC;AAAA,cAAA;AAAA,YAAA;AAAA,YAEjD6C,KAAS,gBAAA3T,EAACgR,GAAA,EAAK,WAAU,iBAAiB,UAAA2C,EAAA,CAAM;AAAA,UAAA,GACnD;AAAA,UACCD,KAAe,gBAAA1T,EAACgR,GAAA,EAAK,OAAO/P,EAAU,WAAY,UAAAyS,EAAA,CAAY;AAAA,QAAA,GACjE;AAAA,QACCF,KAAU,gBAAAxT,EAACkT,IAAA,EAAM,OAAO9S,GAAM,QAAS,UAAAoT,EAAA,CAAO;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAInD,SACE,gBAAAxT,EAACmR,IAAA,EAAe,MAAAE,GAAY,QAAAD,GACzB,UAAA6b,GACH;AAEJ,GC3FMC,KAA8C;AAAA,EAClD,CAAC1qB,EAAK,EAAE,GAAGc,EAAG,SAAS;AAAA,EACvB,CAACd,EAAK,EAAE,GAAGc,EAAG,SAAS;AACzB,GAEM6pB,KAA8C;AAAA,EAClD,CAAC3qB,EAAK,EAAE,GAAGc,EAAG,SAAS;AAAA,EACvB,CAACd,EAAK,EAAE,GAAGc,EAAG,SAAS;AACzB,GAEMuN,KAAyC;AAAA,EAC7C,CAACrO,EAAK,EAAE,GAAGoO,GAAYlO,EAAY,EAAE;AAAA,EACrC,CAACF,EAAK,EAAE,GAAGoO,GAAYlO,EAAY,EAAE;AACvC,GAWM0qB,KAA0B,CAACzpB,MAAuB;AACtD,UAAQA,GAAA;AAAA,IACN,KAAKnB,EAAK;AACR,aAAO;AAAA,IACT,KAAKA,EAAK;AACR,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb,GAkCa6qB,KAA0B,CAAC;AAAA,EACtC,SAAAjZ;AAAA,EACA,UAAAiC,IAAW;AAAA,EACX,UAAAhC;AAAA,EACA,MAAA1Q,IAAOnB,EAAK;AAAA,EACZ,WAAA1C;AAAA,EACA,gBAAAyU;AAAA,EACA,OAAAC;AAAA,EACA,eAAAC;AAAA,EACA,GAAG1U;AACL,MAEI,gBAAAI,EAACwU,IAAA,EAAM,WAAU,2BACf,UAAA;AAAA,EAAA,gBAAA3U;AAAA,IAACstB;AAAAA,IAAA;AAAA,MACC,SAAAlZ;AAAA,MACA,UAAAC;AAAA,MACA,UAAAgC;AAAA,MACA,WAAW/S;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAjC,EAAaV,EAAgB,YAAY;AAAA,QACzC;AAAA,QACAiB,EAAiBhB,EAAY,OAAO;AAAA,QACpC;AAAA;AAAA,QAEA;AAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QAEA;AAAA,QACA;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,QACAssB,GAAgBvpB,CAAI;AAAA,QACpB6N,EAAalP,EAAO,IAAI;AAAA;AAAA,QACxBxC;AAAA,MAAA;AAAA,MAED,GAAGC;AAAA,MAEJ,UAAA,gBAAAC;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAWsD;AAAA,YACT;AAAA;AAAA,YAEA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,YACA;AAAA,YACA;AAAA,YACA6pB,GAAgBxpB,CAAI;AAAA,YACpBypB,GAAwBzpB,CAAI;AAAA,UAAA;AAAA,QAC9B;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAAA,EAED6Q,KACC,gBAAAxU;AAAA,IAAC6U;AAAA,IAAA;AAAA,MACC,WAAWvR;AAAA,QACTzB,EAAeZ,EAAU,KAAK;AAAA,QAC9B4P,GAAWlN,CAAI;AAAA,QACf;AAAA,QACA4Q;AAAA,MAAA;AAAA,MAGD,UAAAC;AAAA,IAAA;AAAA,EAAA;AAAA,EAGJC,KACC,gBAAAzU,EAACgU,IAAA,EAAU,OAAOI,GAAS,MAAM,kCAAA,CAAmC;AAAA,GAExE;AAIJiZ,GAAO,cAAc;AC9IrB,MAAME,KAAqD;AAAA,EACzD,CAACltB,EAAO,GAAG,GAAG;AAAA,EACd,CAACA,EAAO,KAAK,GAAG;AAAA,EAChB,CAACA,EAAO,MAAM,GAAG;AAAA,EACjB,CAACA,EAAO,IAAI,GAAG;AACjB,GAEMmtB,KAAqD;AAAA,EACzD,CAACntB,EAAO,GAAG,GAAG;AAAA,EACd,CAACA,EAAO,KAAK,GAAG;AAAA,EAChB,CAACA,EAAO,MAAM,GAAG;AAAA,EACjB,CAACA,EAAO,IAAI,GAAG;AACjB,GAEMotB,KAAa;AAEnB,SAASC,GACPC,GACAvc,GACe;AACf,UAAQA,GAAA;AAAA,IACN,KAAK/Q,EAAO;AACV,aAAO;AAAA,QACL,MAAMstB,EAAK,OAAOA,EAAK,QAAQ;AAAA,QAC/B,KAAKA,EAAK,MAAMF;AAAA,QAChB,WAAW;AAAA,MAAA;AAAA,IAEf,KAAKptB,EAAO;AACV,aAAO;AAAA,QACL,MAAMstB,EAAK,OAAOA,EAAK,QAAQ;AAAA,QAC/B,KAAKA,EAAK,SAASF;AAAA,QACnB,WAAW;AAAA,MAAA;AAAA,IAEf,KAAKptB,EAAO;AACV,aAAO;AAAA,QACL,MAAMstB,EAAK,QAAQF,KAAa;AAAA,QAChC,KAAKE,EAAK,MAAMA,EAAK,SAAS;AAAA,QAC9B,WAAW;AAAA,MAAA;AAAA,IAEf,KAAKttB,EAAO;AACV,aAAO;AAAA,QACL,MAAMstB,EAAK,OAAOF,KAAa;AAAA,QAC/B,KAAKE,EAAK,MAAMA,EAAK,SAAS;AAAA,QAC9B,WAAW;AAAA,MAAA;AAAA,EACb;AAEN;AAEA,MAAMC,KAA2D;AAAA,EAC/D,CAACvtB,EAAO,GAAG,GAAG;AAAA,EACd,CAACA,EAAO,MAAM,GAAG;AAAA,EACjB,CAACA,EAAO,KAAK,GAAG;AAAA,EAChB,CAACA,EAAO,IAAI,GAAG;AACjB,GAEMwtB,KAAoE,CAAC;AAAA,EACzE,QAAAzc;AAAA,EACA,aAAA0c;AACF,MAEI,gBAAA9tB;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,WAAWC;AAAA,MACT;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA2tB,GAA0Bxc,CAAM;AAAA,MAChC0c;AAAA,MACAN,GAAoBpc,CAAM;AAAA,IAAA;AAAA,EAC5B;AAAA,GAwBO2c,KAA4B,CAAC;AAAA,EACxC,QAAA3c,IAAS/Q,EAAO;AAAA,EAChB,SAAAqQ;AAAA,EACA,UAAAO;AAAA,EACA,WAAAnR;AAAA,EACA,QAAAwe,IAAS;AAAA,EACT,QAAA/L,IAAShQ,GAAO;AAAA,EAChB,kBAAAyrB;AAAA,EACA,GAAGjuB;AACL,MAAM;AACJ,QAAM,CAACkuB,GAAQC,CAAS,IAAI9Y,EAAkB,EAAK,GAC7C+Y,IAAaxW,GAAuB,IAAI,GACxC,CAACyW,GAAaC,CAAc,IAAIjZ,EAAwB,CAAA,CAAE,GAE1DkZ,IAAmB/Y,EAAY,MAAM;AACzC,QAAI+I,KAAU6P,EAAW,SAAS;AAChC,YAAMR,IAAOQ,EAAW,QAAQ,sBAAA;AAChC,MAAAE,EAAeX,GAAkBC,GAAMvc,CAAM,CAAC;AAAA,IAChD;AACA,IAAA8c,EAAU,EAAI;AAAA,EAChB,GAAG,CAAC5P,GAAQlN,CAAM,CAAC,GAEbmd,IAAmBhZ,EAAY,MAAM;AACzC,IAAA2Y,EAAU,EAAK;AAAA,EACjB,GAAG,CAAA,CAAE;AAGL,EAAA9N,GAAU,MAAM;AACd,QAAI,CAAC6N,KAAU,CAAC3P,EAAQ;AACxB,UAAMkQ,IAAe,MAAYN,EAAU,EAAK;AAChD,kBAAO,iBAAiB,UAAUM,GAAc;AAAA,MAC9C,SAAS;AAAA,MACT,SAAS;AAAA,IAAA,CACV,GACM,MACL,OAAO,oBAAoB,UAAUA,GAAc,EAAE,SAAS,IAAM;AAAA,EACxE,GAAG,CAACP,GAAQ3P,CAAM,CAAC;AAEnB,QAAMwP,IAAclsB,EAAiBhB,EAAY,MAAM,GAEjD6tB,IAAenrB;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACAwqB;AAAA,IACA;AAAA,IACAzsB,EAAaV,EAAgB,KAAK;AAAA,IAClCkB,EAAeZ,EAAU,OAAO;AAAA,IAChCuQ,EAAalP,EAAO,EAAE;AAAA,IACtBgQ,GAAaC,CAAM;AAAA,IACnBzS;AAAA,EAAA,GAGI4uB,IAAepQ,IACnB,gBAAAne;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWmD,EAAG,SAAStB,GAAaF,GAAO,UAAU,GAAG2sB,CAAY;AAAA,MACpE,OAAOL;AAAA,MAEP,UAAA;AAAA,QAAA,gBAAApuB,EAAC,OAAA,EAAI,WAAU,6BAA6B,UAAA0Q,GAAQ;AAAA,QACpD,gBAAA1Q,EAAC6tB,IAAA,EAAc,QAAAzc,GAAgB,aAAA0c,EAAA,CAA0B;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,IAG3D,gBAAA3tB,EAAC,OAAA,EAAI,WAAWmD,EAAG,YAAYiqB,GAAoBnc,CAAM,GAAGqd,CAAY,GACtE,UAAA;AAAA,IAAA,gBAAAzuB,EAAC,OAAA,EAAI,WAAU,6BAA6B,UAAA0Q,GAAQ;AAAA,IACpD,gBAAA1Q,EAAC6tB,IAAA,EAAc,QAAAzc,GAAgB,aAAA0c,EAAA,CAA0B;AAAA,EAAA,GAC3D;AAGF,SACE,gBAAA3tB;AAAA,IAAC;AAAA,IAAA;AAAA,MACE,GAAGJ;AAAA,MACJ,KAAKouB;AAAA,MACL,WAAW7qB,EAAG,YAAY0qB,CAAgB;AAAA,MAC1C,cAAcM;AAAA,MACd,cAAcC;AAAA,MAEb,UAAA;AAAA,QAAAtd;AAAA,QACAgd,MACE3P,IAASqQ,GAAaD,GAAc,SAAS,IAAI,IAAIA;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG9D;AAEAX,GAAQ,cAAc;AClMf,IAAKa,uBAAAA,OACVA,EAAA,UAAU,WACVA,EAAA,OAAO,QACPA,EAAA,OAAO,QACPA,EAAA,aAAa,cAJHA,IAAAA,MAAA,CAAA,CAAA;AAwBZ,MAAMC,KAAkD;AAAA,EACtD,CAACrsB,EAAK,EAAE,GAAGvC,EAAK4Q,GAAWnO,EAAY,EAAE,GAAG,iBAAiB;AAAA,EAC7D,CAACF,EAAK,EAAE,GAAGvC,EAAK4Q,GAAWnO,EAAY,EAAE,GAAG,iBAAiB;AAAA,EAC7D,CAACF,EAAK,EAAE,GAAGvC,EAAK4Q,GAAWnO,EAAY,EAAE,GAAG,iBAAiB;AAC/D,GAEMosB,KAAmD;AAAA,EACvD,CAACtsB,EAAK,EAAE,GAAGvC,EAAK,iBAAiB;AAAA,EACjC,CAACuC,EAAK,EAAE,GAAGvC,EAAK,iBAAiB;AAAA,EACjC,CAACuC,EAAK,EAAE,GAAGvC,EAAK,iBAAiB;AACnC,GAEM8uB,KAAqD;AAAA,EACzD,CAACvsB,EAAK,EAAE,GAAGvC,EAAK,WAAW;AAAA,EAC3B,CAACuC,EAAK,EAAE,GAAGvC,EAAK,gBAAgB;AAAA,EAChC,CAACuC,EAAK,EAAE,GAAGvC,EAAK,WAAW;AAC7B,GAEM+uB,KAAwD;AAAA,EAC3D,MAA2B/uB;AAAA,IAC1B;AAAA,IACA;AAAA,IACA;AAAA,IACA4B,EAAehB,GAAW,QAAQP,EAAa,QAAQ;AAAA,EAAA;AAAA,EAExD,SAA8BL,EAAA;AAAA,EAC9B,MAA2BA;AAAA,IAC1B4B,EAAeZ,EAAU,SAASX,EAAa,QAAQ;AAAA,EAAA;AAAA,EAExD,YAAiCL;AAAA,IAChC;AAAA,IACA;AAAA,IACA;AAAA,IACA4B,EAAeZ,EAAU,SAASX,EAAa,QAAQ;AAAA,IACvD;AAAA,EAAA;AAEJ,GAEM2uB,KAAqB,CACzBne,GACAoe,GACAC,MAGEre,MAAY,UACZA,MAAY,eAEL,KACLoe,KAAWC,IAAe,eAC1BD,IAAgB,iBAChBC,IAAe,iBACZ,IAGHC,KAAe,CACnBte,GACAnN,MACW;AACX,QAAM0rB,IAAa,CAACL,GAAiBle,CAAO,GAAG+d,GAAclrB,CAAI,CAAC;AAElE,SAAImN,MAAY,SACdue,EAAW,KAAKN,GAAiBprB,CAAI,CAAC,IAEtC0rB,EAAW,KAAKP,GAAenrB,CAAI,CAAC,GAG/B1D,EAAK,GAAGovB,CAAU;AAC3B,GAEMC,KAAyB,CAACxe,MAC1BA,MAAY,eAAuC,CAAA,IACnDA,MAAY,SAAiC,CAAA,IAC1C,CAAC,UAAUlP,EAAiBhB,EAAY,YAAY,CAAC,GAGxD2uB,KAAuB,CAAChW,MACxBA,IAAiB1X,EAAeZ,EAAU,SAASX,EAAa,QAAQ,IACrEgD;AAAA;AAAA;AAAA,EAGL;AAAA,GAmDSksB,KAAsC,CAAC;AAAA,EAClD,MAAAC;AAAA,EACA,SAAA3e,IAAU;AAAA,EACV,cAAA4e,IAAe;AAAA,EACf,OAAAC;AAAA,EACA,UAAAtb;AAAA,EACA,MAAA1Q,IAAOnB,EAAK;AAAA,EACZ,WAAAotB;AAAA,EACA,kBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,GAAG/vB;AACL,MAEI,gBAAAI;AAAA,EAAC4vB;AAAA,EAAA;AAAA,IAIC,eAAeJ;AAAA,IACf,cAAAD;AAAA,IACA,UAAArb;AAAA,IACC,GAAGtU;AAAA,IAEJ,UAAA;AAAA,MAAA,gBAAAC;AAAA,QAACgwB;AAAA,QAAA;AAAA,UACC,WAAW1sB;AAAA,YACT;AAAA,YACA;AAAA,YACA;AAAA,YACAssB,IAAY,WAAW;AAAA,YACvB,GAAGN,GAAuBxe,CAAO;AAAA,YACjC+e;AAAA,UAAA;AAAA,UAGD,YAAK,IAAI,CAAC,EAAE,IAAArP,GAAI,MAAAC,EAAA,GAAQkP,MAAU;AACjC,kBAAMT,IAAUS,MAAU,GACpBR,IAASQ,MAAUF,EAAK,SAAS,GACjCQ,IAAe,CAAC,EAAE,UAAA1W,EAAA,MACtBjW;AAAA,cACE;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACAjC,EAAaV,EAAgB,cAAcL,EAAa,QAAQ;AAAA,cAChEivB,GAAqBhW,CAAQ;AAAA,cAC7BkH,EAAK,YAAY;AAAA,cACjB;AAAA,cACA;AAAA,cACA;AAAA,cACAwO,GAAmBne,GAASoe,GAASC,CAAM;AAAA,cAC3CC,GAAate,GAASnN,CAAI;AAAA,YAAA,GAGxBusB,sBACHC,IAAA,EAAI,UAAU1P,EAAK,UAAU,WAAWwP,GACtC,UAAAxP,EAAK,MAAA,CACR;AAGF,mBAAOA,EAAK,UACV,gBAAAzgB;AAAA,cAAC+tB;AAAA,cAAA;AAAA,gBAEC,SAAStN,EAAK;AAAA,gBACd,kBAAiB;AAAA,gBACjB,QAAM;AAAA,gBAEL,UAAAyP;AAAA,cAAA;AAAA,cALI1P;AAAA,YAAA,IAQP,gBAAAxgB,EAAC,OAAA,EAAa,WAAU,eACrB,eADOwgB,CAEV;AAAA,UAEJ,CAAC;AAAA,QAAA;AAAA,MAAA;AAAA,MAEH,gBAAAxgB,EAACowB,MAAU,WAAW9sB,EAAGwsB,CAAiB,GACvC,UAAAL,EAAK,IAAI,CAAC,EAAE,IAAAjP,GAAI,MAAAC,QACf,gBAAAzgB,EAACqwB,IAAA,EAAkB,WAAW/sB,EAAG,oBAAoB,GAClD,UAAAmd,EAAK,WADOD,CAEf,CACD,EAAA,CACH;AAAA,IAAA;AAAA,EAAA;AAAA;AAKNgP,GAAa,cAAc;ACzQ3B,MAAM3E,KAAQ,CACZyF,GACAC,GACAlT,GACAkK,MACY+I,IAAOC,IAAM,KAAK,IAAI,GAAG,KAAK,IAAIhJ,GAAKgJ,IAAMlT,CAAK,CAAC,GA8DpDmT,KAAe,CAAC;AAAA,EAC3B,UAAAC,IAAW;AAAA,EACX,UAAAC,IAAW;AAAA,EACX,OAAAC,IAAQ;AAAA,EACR,OAAAC,IAAQ;AAAA,EACR,QAAAtS,IAAS;AAAA,EACT,kBAAAuS;AACF,IAAyB,OAA2B;AAClD,QAAMzP,IAAU,EAAEuP,KAASC,IAErB,CAAC/Y,GAAUC,CAAW,IAAI1C,EAG7B,EAAE,GAAGqb,GAAU,GAAGC,GAAU,GACzB,CAAC9V,GAAYC,CAAa,IAAIzF,EAAS,EAAK,GAE5C0b,IAAenZ,GAA2B,IAAI,GAC9CoZ,IAAepZ,GAIlB;AAAA,IACD,SAAS;AAAA,IACT,SAAS;AAAA,IACT,KAAK,EAAE,GAAG,GAAG,GAAG,EAAA;AAAA,EAAE,CACnB,GAGKqZ,IAAcrZ,GAAmD;AAAA,IACrE,GAAG8Y;AAAA,IACH,GAAGC;AAAA,EAAA,CACJ,GAEKO,IAAkB1b;AAAA,IACtB,CAACyC,MAAwB;AACvB,UAAI,CAACoJ,EAAS;AACd,MAAApJ,EAAE,eAAA,GACFA,EAAE,gBAAA,GACF6C,EAAc,EAAI;AAClB,YAAMa,IAAKoV,EAAa,SAClBI,IAAMF,EAAY;AAIxB,MAAAD,EAAa,UAAU;AAAA,QACrB,SAAS/Y,EAAE;AAAA,QACX,SAASA,EAAE;AAAA,QACX,KAAK;AAAA,UACH,GAAG,OAAOkZ,EAAI,KAAM,WAAWA,EAAI,IAAKxV,GAAI,cAAc;AAAA,UAC1D,GAAG,OAAOwV,EAAI,KAAM,WAAWA,EAAI,IAAKxV,GAAI,aAAa;AAAA,QAAA;AAAA,MAC3D;AAAA,IAEJ;AAAA,IACA,CAAC0F,CAAO;AAAA,EAAA,GAGJ6H,IAAkB1T;AAAA,IACtB,CAACyC,MAAkB;AACjB,YAAM0D,IAAKoV,EAAa,SAClBK,IAAW;AAAA,QACf,aAAa,OAAO;AAAA,QACpB,cAAc,OAAO;AAAA,MAAA,GAEjBC,IAAS9S,IAAS6S,IAAYzV,GAAI,iBAAiByV,GAEnDE,IAAW3V,GAAI,eAAe,GAC9B4V,IAAW5V,GAAI,gBAAgB,GAC/B,EAAE,SAAA6V,GAAS,SAAAC,GAAS,KAAAjB,EAAA,IAAQQ,EAAa,SAEzCU,KAAQ5G;AAAA,QACZ8F;AAAA,QACAJ,EAAI;AAAA,QACJvY,EAAE,UAAUuZ;AAAA,QACZH,EAAO,cAAcC;AAAA,MAAA,GAEjBK,KAAQ7G;AAAA,QACZ+F;AAAA,QACAL,EAAI;AAAA,QACJvY,EAAE,UAAUwZ;AAAA,QACZJ,EAAO,eAAeE;AAAA,MAAA;AAGxB,MAAAN,EAAY,UAAU,EAAE,GAAGS,IAAO,GAAGC,GAAA,GACrC5Z,EAAY,EAAE,GAAG2Z,IAAO,GAAGC,IAAO,GAClCb,IAAmB,EAAE,GAAGY,IAAO,GAAGC,IAAO;AAAA,IAC3C;AAAA,IACA,CAACf,GAAOC,GAAOtS,GAAQuS,CAAgB;AAAA,EAAA;AAGzC,SAAAzQ,GAAU,MAAM;AACd,QAAI,CAACxF,EAAY;AACjB,UAAMsO,IAAgB,MAAYrO,EAAc,EAAK;AACrD,oBAAS,iBAAiB,aAAaoO,CAAe,GACtD,SAAS,iBAAiB,WAAWC,CAAa,GAC3C,MAAM;AACX,eAAS,oBAAoB,aAAaD,CAAe,GACzD,SAAS,oBAAoB,WAAWC,CAAa;AAAA,IACvD;AAAA,EACF,GAAG,CAACtO,GAAYqO,CAAe,CAAC,GAEzB,EAAE,UAAApR,GAAU,YAAA+C,GAAY,cAAAkW,GAAc,iBAAAG,EAAA;AAC/C,GC1KaU,KAAqBC;AAAA,EAChCvvB,EAAY;AACd,GAEawvB,KAAwB,MACnCC,GAAWH,EAAkB,GCsDzBI,KAAmB,IACnBC,KAAmB,IAmCZC,KAAU,CAAC;AAAA,EACtB,UAAAhhB;AAAA,EACA,aAAAoC,IAAchR,EAAY;AAAA,EAC1B,OAAAsuB,IAAQ;AAAA,EACR,OAAAC,IAAQ;AAAA,EACR,SAAAsB,IAAUH;AAAA,EACV,SAAAI,IAAUH;AAAA,EACV,QAAA/vB,IAASH,GAAO;AAAA,EAChB,WAAAhC;AAAA,EACA,OAAAoW;AAAA,EACA,SAAAkc,IAAU;AAAA,EACV,eAAAjX;AAAA,EACA,SAAAvC;AAAA,EACA,WAAAyZ;AAAA,EACA,kBAAAxB;AAAA,EACA,GAAG9wB;AACL,MAAwC;AACtC,QAAMqhB,IAAU,EAAEuP,KAASC,IAErB,EAAE,UAAA/Y,GAAU,YAAA+C,GAAY,cAAAkW,GAAc,iBAAAG,EAAA,IAAoBT,GAAa;AAAA,IAC3E,UAAU0B;AAAA,IACV,UAAUC;AAAA,IACV,OAAAxB;AAAA,IACA,OAAAC;AAAA,IACA,kBAAAC;AAAA,EAAA,CACD,GAEK,CAACyB,GAAaC,CAAc,IAAInd,EAAS,EAAK,GAC9C,CAACod,GAAeC,CAAgB,IAAIrd,EAAwB,IAAI,GAEhEsd,IAA8Bnd,EAAY,MAAM;AACpD,IAAAgd,EAAe,CAACnV,MAAS;AACvB,UAAKA;AAQH,QAAAqV,EAAiB,IAAI;AAAA,WARZ;AACT,cAAM/W,KAAKoV,EAAa;AACxB,QAAA2B;AAAA,UACEpf,MAAgBhR,EAAY,SACvBqZ,IAAI,eAAe,OACnBA,IAAI,gBAAgB;AAAA,QAAA;AAAA,MAE7B;AAGA,aAAO,CAAC0B;AAAA,IACV,CAAC;AAAA,EACH,GAAG,CAAC0T,GAAczd,CAAW,CAAC;AAE9B,MAAI,CAAC+e,EAAS,QAAO;AAErB,QAAMO,KAAkBrvB;AAAA,IACtB;AAAA,IACA;AAAA,IACAzB,EAAef,GAAU,QAAQ;AAAA,IACjC0Q,EAAalP,EAAO,EAAE;AAAA,IACtB+Q,MAAgBhR,EAAY,SACxB,6CACA;AAAA,IACJ,CAACiwB,KAAejf,MAAgBhR,EAAY,UAAU;AAAA,IACtD,CAACiwB,KAAejf,MAAgBhR,EAAY,OAAO;AAAA,EAAA,GAG/CuwB,KAAiBtvB;AAAA,IACrB;AAAA,IACA+P,MAAgBhR,EAAY,SAAS,aAAa;AAAA,IAClDL,GAAaC,CAAM;AAAA,IACnB;AAAA,IACAL,EAAiBhB,EAAY,MAAM;AAAA,IACnC4Q,EAAalP,EAAO,EAAE;AAAA,IACtB;AAAA,IACAgQ,GAAa/P,GAAO,EAAE;AAAA,IACtB+P,GAAa/P,GAAO,IAAIjC,EAAa,QAAQ;AAAA,IAC7C;AAAA,IACAR;AAAA,EAAA,GAGI+yB,KAAgC;AAAA,IACpC,MAAMhb,EAAS;AAAA,IACf,KAAKA,EAAS;AAAA,IACd,iBAAiB,0BAA0BrW,GAAeb,EAAgB,KAAK,CAAC;AAAA,IAChF,GAAI2xB,KAAeE,MAAkB,OACjCnf,MAAgBhR,EAAY,SAC1B,EAAE,OAAOmwB,MACT,EAAE,QAAQA,EAAA,IACZ,CAAA;AAAA,IACJ,GAAGtc;AAAA,EAAA;AA2DL,SAvDE,gBAAAlW,EAAC2xB,GAAmB,UAAnB,EAA4B,OAAOte,GAClC,UAAA,gBAAAlT;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAK2wB;AAAA,MACL,MAAK;AAAA,MACL,oBACEzd,MAAgBhR,EAAY,SAAS,aAAa;AAAA,MAEpD,iBAAeuY,KAAc;AAAA,MAC7B,WAAWgY;AAAA,MACX,OAAOC;AAAA,MACP,eAAe,CAAC7a,MAAM;AACpB,QAAAA,EAAE,gBAAA,GACFmD,IAAgBnD,CAAC;AAAA,MACnB;AAAA,MACA,SAAS,CAACA,MAAM;AACd,QAAAA,EAAE,gBAAA,GACFY,IAAUZ,CAAC;AAAA,MACb;AAAA,MACA,WAAW,CAACA,MAAM;AAChB,QAAAA,EAAE,gBAAA,GACFqa,IAAYra,CAAC;AAAA,MACf;AAAA,MACC,GAAGjY;AAAA,MAEH,UAAA;AAAA,QAAAqhB,KACC,gBAAAphB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,UAAU;AAAA,YACV,cAAW;AAAA,YACX,aAAaixB;AAAA,YACb,eAAeyB;AAAA,YACf,WAAW,CAAC1a,MAAM;AAChB,eAAIA,EAAE,QAAQ,WAAWA,EAAE,QAAQ,QACjC0a,EAAA;AAAA,YAEJ;AAAA,YACA,WAAWC;AAAA,YAEX,4BAAC9yB,IAAA,CAAA,CAAe;AAAA,UAAA;AAAA,QAAA;AAAA,QAGnB,CAACyyB,KACA,gBAAAtyB;AAAA,UAACkT;AAAA,UAAA;AAAA,YACC,aAAAG;AAAA,YACA,OAAOjT,GAAM;AAAA,YACb,SAASqC,EAAQ;AAAA,YACjB,WAAU;AAAA,YAET,UAAAwO;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA,GAGN;AAIJ;AAEAghB,GAAQ,cAAc;AC9MtB,MAAMa,KAAqB,CACzBC,GACAjzB,MAEAwD;AAAA,EACE;AAAA,EACAkO,EAAalP,EAAO,EAAE;AAAA,EACtBywB,KACE1xB,EAAaX,GAAY,gBAAgBJ,EAAa,KAAK;AAAA,EAC7D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,0BAA0BkB,GAAeZ,EAAY,KAAK,CAAC;AAAA,EAC3D;AAAA,EACAd;AACF,GAEIkzB,KAAY,CAACrQ,GAAiBoQ,MAClCzvB;AAAA,EACE;AAAA,EAEIzB,EADJ8gB,IACmB7hB,GAAU,cACVA,GAAU,OADW;AAAA,EAExCiyB,KAAiBlxB,EAAef,GAAU,UAAUR,EAAa,KAAK;AACxE,GAoBW2yB,KAAgBC;AAAA,EAC3B,CACE;AAAA,IACE,UAAAjiB;AAAA,IACA,QAAA0R,IAAS;AAAA,IACT,UAAAtM,IAAW;AAAA,IACX,WAAAvW;AAAA,IACA,SAAA8Y;AAAA,IACA,OAAA1C;AAAA,IACA,GAAG6J;AAAA,EAAA,GAELzF,MACG;AACH,UAAMyY,IAAgB,CAAC1c,KAAY,CAACsM,GAE9BwQ,IAAyCxQ,IAC3C;AAAA,MACE,iBAAiB,0BAA0BnhB,GAAeV,GAAU,WAAW,CAAC;AAAA,IAAA,IAElF;AAEJ,WACE,gBAAAd;AAAA,MAACgS;AAAAA,MAAA;AAAA,QACC,KAAAsI;AAAA,QACA,UAAAjE;AAAA,QACA,gBAAcsM;AAAA,QACd,SAAA/J;AAAA,QACA,WAAWka,GAAmBC,GAAejzB,CAAS;AAAA,QACtD,OAAO,EAAE,GAAGqzB,GAAa,GAAGjd,EAAA;AAAA,QAC3B,GAAG6J;AAAA,QAEJ,4BAAC,OAAA,EAAI,WAAWiT,GAAUrQ,GAAQoQ,CAAa,GAAI,UAAA9hB,EAAA,CAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EAGlE;AACF;AAEAgiB,GAAc,cAAc;AC3ErB,MAAMG,KAAe,CAAC;AAAA,EAC3B,UAAAniB;AAAA,EACA,WAAAnR;AAAA,EACA,GAAGC;AACL,MAAsC;AACpC,QAAMsT,IAAcwe,GAAA;AAEpB,SACE,gBAAA1xB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWmD;AAAA,QACT,gCAAgCb,EAAQ,EAAE;AAAA,QAC1C4Q,MAAgBhR,EAAY,SACxB,oBACA;AAAA,MAAA;AAAA,MAGN,UAAA;AAAA,QAAA,gBAAArC;AAAA,UAACkT;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,aAAAG;AAAA,YACA,OAAOjT,GAAM;AAAA,YACb,SAASqC,EAAQ;AAAA,YACjB,WAAWa;AAAA,cACT+P,MAAgBhR,EAAY,UAAU;AAAA,cACtCvC;AAAA,YAAA;AAAA,YAED,GAAGC;AAAA,YAEH,UAAAkR;AAAA,UAAA;AAAA,QAAA;AAAA,QAEH,gBAAAjR;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAWsD;AAAA,cACT+P,MAAgBhR,EAAY,SACxB,6BACA;AAAA,cACJT,EAAiBhB,EAAY,MAAM;AAAA,cACnC;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,EAAA;AAGN;AAEAwyB,GAAa,cAAc;ACtF3B,MAAMC,KAAiB;AAOvB,SAASC,GAAchjB,GAAsB;AAC3C,SAAOA,EAAK,QAAQ,MAAM,KAAK,EAAE,QAAQ,OAAO,KAAK;AACvD;AAMA,SAASijB,GAAcC,GAAqB;AAC1C,SAAOA,EAAI,QAAQ,SAAS,GAAG,EAAE,QAAQ,SAAS,GAAG;AACvD;AAOA,SAASC,GAASC,GAA4B;AAC5C,SAAOA,EAAS,IAAIJ,EAAa,EAAE,KAAKD,EAAc;AACxD;AAMO,SAASM,GAAeD,GAA4B;AACzD,SAAOD,GAAS,CAAC,GAAGC,CAAQ,CAAC;AAC/B;AAMO,SAASE,GAAiBC,GAAwB;AACvD,SAAOC,GAAUD,CAAI;AACvB;AAUA,SAASE,GAAWC,GAAyB;AAC3C,SAAOA,EAAK,WAAW;AACzB;AASO,SAASC,GAAaD,GAAgBE,IAAa,IAAgB;AAExE,SADI,EAAAF,EAAK,eAAe,MACpBE,KAAc,CAACH,GAAWC,CAAI;AAEpC;AAcO,SAASG,GACdC,GACAhS,IAAoC,CAAA,GACpCiS,GACc;AACd,WAASC,EACPN,GACAO,GACAC,GACA7E,GACA8E,GACc;AACd,UAAMZ,IAAOU,IACT,GAAGA,CAAU,GAAGlB,EAAc,GAAGC,GAAcU,EAAK,IAAI,CAAC,KACzDV,GAAcU,EAAK,IAAI,GAErBU,IAASX,GAAWC,CAAI,GACxBW,IAASN,GAAgB,IAAIR,CAAI,GAGjCe,IADJ,MAAM,QAAQZ,EAAK,MAAM,KAAKA,EAAK,OAAO,WAAW,KACP,CAACW,GAAQ,QAEnDE,IAAcH,IAChB,CAAA,IACAV,EAAK,QAAQ,SACXA,EAAK,SACJW,KAAU,CAAA,GACX1jB,IAAW4jB,EAAY;AAAA,MAAI,CAACC,GAAOC,MACvCT,EAAKQ,GAAOjB,GAAMW,IAAQ,GAAGO,GAAGF,EAAY,MAAM;AAAA,IAAA;AAGpD,WAAO;AAAA,MACL,MAAAb;AAAA,MACA,MAAAH;AAAA,MACA,OAAAW;AAAA,MACA,YAAYP,GAAaD,GAAM5R,EAAQ,UAAU;AAAA,MACjD,QAAAsS;AAAA,MACA,cAAAE;AAAA,MACA,UAAA3jB;AAAA,MACA,UAAU0e,IAAQ;AAAA,MAClB,SAAS8E;AAAA,IAAA;AAAA,EAEb;AAEA,SAAOH,EAAKF,GAAM,IAAI,GAAG,GAAG,CAAC;AAC/B;AAYO,SAASY,GACdC,GACA/O,GAC4D;AAC5D,QAAMgP,IAAahP,EAAM,YAAA,GAEnBiP,wBAAmB,IAAA;AAEzB,WAASC,EAAepB,GAA0B;AAChD,IAAIA,EAAK,KAAK,KAAK,cAAc,SAASkB,CAAU,KAClDC,EAAa,IAAInB,EAAK,IAAI;AAE5B,eAAWc,KAASd,EAAK;AACvB,MAAAoB,EAAeN,CAAK;AAAA,EAExB;AAIA,MAFAM,EAAeH,CAAQ,GAEnBE,EAAa,SAAS,EAAG,QAAO;AAEpC,QAAME,wBAAoB,IAAA,GACpBC,wBAAqB,IAAA;AAE3B,WAASC,EAAa1B,GAAoB;AACxC,UAAMH,IAAWI,GAAUD,CAAI;AAC/B,aAASkB,IAAI,GAAGA,IAAIrB,EAAS,SAAS,GAAGqB,KAAK;AAC5C,YAAM1Z,IAAUoY,GAASC,EAAS,MAAM,GAAGqB,IAAI,CAAC,CAAC;AACjD,MAAAM,EAAc,IAAIha,CAAO,GACzBia,EAAe,IAAIja,CAAO;AAAA,IAC5B;AAAA,EACF;AAEA,aAAWma,KAAaL;AACtB,IAAAE,EAAc,IAAIG,CAAS,GAC3BD,EAAaC,CAAS;AAGxB,WAASC,EAAWzB,GAA0B;AAC5C,IAAAqB,EAAc,IAAIrB,EAAK,IAAI;AAC3B,eAAWc,KAASd,EAAK;AACvB,MAAAyB,EAAWX,CAAK;AAAA,EAEpB;AAEA,WAASY,EACPtB,GACAP,GAC0B;AAC1B,QAAIO,EAAK,SAASP,EAAM,QAAOO;AAC/B,eAAWU,KAASV,EAAK,UAAU;AACjC,YAAMuB,IAAQD,EAASZ,GAAOjB,CAAI;AAClC,UAAI8B,EAAO,QAAOA;AAAA,IACpB;AAAA,EAEF;AAEA,aAAWH,KAAaL,GAAc;AACpC,UAAMS,IAAYF,EAAST,GAAUO,CAAS;AAC9C,IAAII,KACFH,EAAWG,CAAS;AAAA,EAExB;AAEA,WAASC,EAAU7B,GAAkC;AACnD,UAAM8B,IAAmB9B,EAAK,SAC3B,OAAO,CAACc,MAAUO,EAAc,IAAIP,EAAM,IAAI,CAAC,EAC/C,IAAI,CAACA,GAAOC,GAAGgB,OAEP,EAAE,GADMF,EAAUf,CAAK,GACV,UAAUC,IAAI,GAAG,SAASgB,EAAI,OAAA,EACnD;AAEH,WAAO,EAAE,GAAG/B,GAAM,UAAU8B,EAAA;AAAA,EAC9B;AAEA,SAAO,EAAE,MAAMD,EAAUZ,CAAQ,GAAG,gBAAAK,EAAA;AACtC;AAcO,SAASU,GACd5B,GACAP,GACsB;AAGtB,MAFIA,EAAK,WAAW,KAEhBA,EAAK,CAAC,MAAMO,EAAK,KAAM;AAE3B,MAAI/Y,IAAoB+Y;AACxB,WAASW,IAAI,GAAGA,IAAIlB,EAAK,QAAQkB,KAAK;AACpC,UAAMD,IAAQzZ,EAAQ,QAAQ,KAAK,CAACyJ,MAAMA,EAAE,SAAS+O,EAAKkB,CAAC,CAAC;AAC5D,QAAI,CAACD,EAAO;AACZ,IAAAzZ,IAAUyZ;AAAA,EACZ;AAEA,SAAOzZ;AACT;AAQO,SAAS4a,GACd7B,GACA8B,GACsB;AACtB,SAAOF,GAAc5B,GAAMN,GAAUoC,CAAY,CAAC;AACpD;AAMA,SAASpC,GAAUD,GAAwB;AACzC,SAAKA,IACEA,EAAK,MAAMR,EAAc,EAAE,IAAIE,EAAa,IADjC,CAAA;AAEpB;AAOO,SAAS4C,GAActC,GAAkC;AAC9D,QAAMuC,IAAMvC,EAAK,YAAYR,EAAc;AAC3C,SAAO+C,MAAQ,KAAK,SAAYvC,EAAK,MAAM,GAAGuC,CAAG;AACnD;AAQO,SAASC,GACdjC,GACAnG,GACgB;AAChB,QAAMqI,IAAyB,CAAA;AAE/B,WAAShC,EAAKN,GAA0B;AAEtC,QADAsC,EAAO,KAAKtC,CAAI,GACZ,CAACA,EAAK,UAAU/F,EAAO+F,EAAK,IAAI;AAClC,iBAAWc,KAASd,EAAK;AACvB,QAAAM,EAAKQ,CAAK;AAAA,EAGhB;AAEA,aAAWA,KAASV,EAAK;AACvB,IAAAE,EAAKQ,CAAK;AAGZ,SAAOwB;AACT;AAMO,SAASC,GAAmBnC,GAAiC;AAClE,QAAMoC,wBAAY,IAAA;AAElB,WAASlC,EAAKN,GAA0B;AACtC,QAAI,CAACA,EAAK,QAAQ;AAChB,MAAAwC,EAAM,IAAIxC,EAAK,IAAI;AACnB,iBAAWc,KAASd,EAAK;AACvB,QAAAM,EAAKQ,CAAK;AAAA,IAEd;AAAA,EACF;AAEA,aAAWA,KAASV,EAAK;AACvB,IAAAE,EAAKQ,CAAK;AAGZ,SAAO0B;AACT;AAcO,SAASC,GAAiB5C,GAAwB;AACvD,SAAOA,EAAK,KAAK,KAAK;AACxB;ACxUA,SAAS6C,GAAYC,GAAgB9C,GAAsB;AACzD,SAAO,GAAG8C,CAAM,IAAI9C,EAAK,QAAQ,OAAO,GAAG,CAAC;AAC9C;AAmIO,SAAS+C,GAAQxU,GAAwC;AAC9D,QAAM;AAAA,IACJ,MAAAyU;AAAA,IACA,WAAAC;AAAA,IACA,gBAAAxB;AAAA,IACA,UAAUyB;AAAA,IACV,sBAAAC,IAAuB;AAAA,IACvB,UAAAtS;AAAA,IACA,UAAAuS;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,iBAAAC;AAAA,EAAA,IACEhV,GAEEiV,IAAkBC,GAAA,GAClBC,IAAWR,KAAkBM,GAE7BG,IAAYhiB,GAAqB,MACjC4hB,aAA2B,MAAYA,IACvCA,MAAoB,KAAab,GAAmBM,CAAI,wBACjD,IAAA,GACV,CAACO,GAAiBP,CAAI,CAAC,GAEpBY,IAAU9f,GAAO6f,CAAS;AAChC,EAAAC,EAAQ,UAAUD;AAElB,QAAM,CAACE,GAAeC,CAAgB,IAAIviB;AAAA,IACxC,MAAM,IAAI,IAAIoiB,CAAS;AAAA,EAAA,GAGnBI,IAAcjgB,GAAO+f,CAAa;AACxC,EAAAE,EAAY,UAAUF;AAEtB,QAAM,CAACG,GAAYC,CAAa,IAAI1iB,EAAwB,IAAI,GAE1D6Y,IAAS1Y;AAAA,IACb,CAACse,MACC6D,EAAc,IAAI7D,CAAI,MAAMyB,GAAgB,IAAIzB,CAAI,KAAK;AAAA,IAC3D,CAAC6D,GAAepC,CAAc;AAAA,EAAA,GAG1ByC,IAAeviB;AAAA,IACnB,MAAM6gB,GAAeQ,GAAM5I,CAAM;AAAA,IACjC,CAAC4I,GAAM5I,CAAM;AAAA,EAAA,GAGT+J,IAAqBH,IACvBnB,GAAYa,GAAUM,CAAU,IAChC,QAIEI,IAAe1iB;AAAA,IACnB,CAACse,MAAiB;AAChB,YAAMqE,KAAUN,EAAY,QAAQ,IAAI/D,CAAI;AAC5C,MAAA8D,EAAiB,CAACva,MAAS;AACzB,cAAM2L,IAAO,IAAI,IAAI3L,CAAI;AACzB,eAAI2L,EAAK,IAAI8K,CAAI,IAAG9K,EAAK,OAAO8K,CAAI,IAC/B9K,EAAK,IAAI8K,CAAI,GACX9K;AAAA,MACT,CAAC,GACImP,MAAShB,IAAWrD,CAAI;AAAA,IAC/B;AAAA,IACA,CAACqD,CAAQ;AAAA,EAAA,GAGLiB,IAAS5iB;AAAA,IACb,CAACse,MAAiB;AAChB,YAAMqE,KAAUN,EAAY,QAAQ,IAAI/D,CAAI;AAC5C,MAAA8D,EAAiB,CAACva,MAAS;AACzB,YAAIA,EAAK,IAAIyW,CAAI,EAAG,QAAOzW;AAC3B,cAAM2L,IAAO,IAAI,IAAI3L,CAAI;AACzB,eAAA2L,EAAK,IAAI8K,CAAI,GACN9K;AAAA,MACT,CAAC,GACImP,MAAShB,IAAWrD,CAAI;AAAA,IAC/B;AAAA,IACA,CAACqD,CAAQ;AAAA,EAAA,GAGLkB,KAAW7iB,EAAY,CAACse,MAAiB;AAC7C,IAAA8D,EAAiB,CAACva,OAAS;AACzB,UAAI,CAACA,GAAK,IAAIyW,CAAI,EAAG,QAAOzW;AAC5B,YAAM2L,IAAO,IAAI,IAAI3L,EAAI;AACzB,aAAA2L,EAAK,OAAO8K,CAAI,GACT9K;AAAA,IACT,CAAC;AAAA,EACH,GAAG,CAAA,CAAE,GAECsP,KAAiB9iB,EAAY,MAAM;AACvC,IAAAoiB,EAAiB,IAAI,IAAIF,EAAQ,OAAO,CAAC;AAAA,EAC3C,GAAG,CAAA,CAAE;AAIL,EAAArX,GAAU,MAAM;AACd,QAAI,CAAC4W,KAAwB,CAACa,EAAY;AAC1C,UAAMnc,IAAK,SAAS,eAAegb,GAAYa,GAAUM,CAAU,CAAC;AACpE,IAAInc,KAAM,OAAOA,EAAG,kBAAmB,cACrCA,EAAG,eAAe,EAAE,OAAO,UAAA,CAAW;AAAA,EAE1C,GAAG,CAACmc,GAAYN,GAAUP,CAAoB,CAAC;AAI/C,QAAMsB,KAAQ/iB;AAAA,IACZ,CAACse,MAAiB6C,GAAYa,GAAU1D,CAAI;AAAA,IAC5C,CAAC0D,CAAQ;AAAA,EAAA,GAGLgB,KAAWhjB;AAAA,IACf,CAACse,MAAiBgE,MAAehE;AAAA,IACjC,CAACgE,CAAU;AAAA,EAAA,GAGPjT,IAAarP;AAAA,IACjB,CAACye,MAAuB8C,GAAW,IAAI9C,EAAK,IAAI,KAAK;AAAA,IACrD,CAAC8C,CAAS;AAAA,EAAA,GAGN0B,KAAsBhjB,GAAqB,MAAM;AACrD,QAAI,CAACshB,EAAW,QAAO,oBAAI,IAAA;AAC3B,UAAM2B,wBAAU,IAAA;AAChB,eAAW5E,MAAQiD,GAAW;AAC5B,UAAI1F,IAAS+E,GAActC,EAAI;AAC/B,aAAOzC;AACL,QAAAqH,EAAI,IAAIrH,CAAM,GACdA,IAAS+E,GAAc/E,CAAM;AAAA,IAEjC;AACA,WAAOqH;AAAA,EACT,GAAG,CAAC3B,CAAS,CAAC,GAER4B,KAAwBnjB;AAAA,IAC5B,CAACye,MAAuBwE,GAAoB,IAAIxE,EAAK,IAAI;AAAA,IACzD,CAACwE,EAAmB;AAAA,EAAA,GAGhBG,KAAepjB;AAAA,IACnB,CAACse,MAAkDsD,GAAW,IAAItD,CAAI;AAAA,IACtE,CAACsD,CAAS;AAAA,EAAA,GAKNyB,KAAerjB;AAAA,IACnB,CAACye,MAAsC;AACrC,YAAMrR,KAASkV,MAAe7D,EAAK,MAC7Bza,IAAWud,GAAW,IAAI9C,EAAK,IAAI,KAAK,IACxC6E,IAAW,CAAC7E,EAAK;AAEvB,aAAO;AAAA,QACL,IAAI0C,GAAYa,GAAUvD,EAAK,IAAI;AAAA,QACnC,MAAM;AAAA,QACN,iBAAiBA,EAAK,aAAaza,IAAW;AAAA,QAC9C,iBAAiBsf,IAAW5K,EAAO+F,EAAK,IAAI,IAAI;AAAA,QAChD,iBAAiBA,EAAK;AAAA,QACtB,gBAAgBA,EAAK;AAAA,QACrB,UAAU;AAAA,QACV,eAAerR,MAAU;AAAA,QACzB,SAAS,MAAM;AACb,UAAIqR,EAAK,aACPtP,IAAWsP,EAAK,IAAI,IACX6E,KACTZ,EAAajE,EAAK,IAAI;AAAA,QAE1B;AAAA,QACA,aAAa,CAAChc,OAAM;AAClB,UAAAA,GAAE,eAAA;AAAA,QACJ;AAAA,QACA,cAAc,MAAM;AAClB,UAAA8f,EAAc9D,EAAK,IAAI;AAAA,QACzB;AAAA,MAAA;AAAA,IAEJ;AAAA,IACA,CAAC6D,GAAYf,GAAWS,GAAUtJ,GAAQvJ,GAAUuT,CAAY;AAAA,EAAA,GAG5Da,KAAkBvjB;AAAA,IACtB,CAACye,MAAyC;AACxC,YAAM3iB,KAAO4c,EAAO+F,EAAK,IAAI,GACvB+E,IAAO,CAAC/gB,MAGF;AACV,QAAAA,EAAE,gBAAA,GACFA,EAAE,eAAA;AAAA,MACJ;AAEA,aAAO;AAAA,QACL,iBAAiB3G;AAAA,QACjB,cAAcA,KACV,YAAY2iB,EAAK,KAAK,IAAI,KAC1B,UAAUA,EAAK,KAAK,IAAI;AAAA,QAC5B,SAAS,CAAChc,MAAM;AACd,UAAA+gB,EAAK/gB,CAAC,GACNigB,EAAajE,EAAK,IAAI;AAAA,QACxB;AAAA,QACA,eAAe+E;AAAA,QACf,aAAaA;AAAA,MAAA;AAAA,IAEjB;AAAA,IACA,CAAC9K,GAAQgK,CAAY;AAAA,EAAA,GAKjBe,KAAgBzjB;AAAA,IACpB,CAACyC,MAAqB;AACpB,YAAMihB,KAAapB,IACfE,EAAa,UAAU,CAACmB,MAAMA,EAAE,SAASrB,CAAU,IACnD,IACEsB,IAAaF,MAAc,IAAIlB,EAAakB,EAAU,IAAI;AAEhE,cAAQjhB,EAAE,KAAA;AAAA,QACR,KAAK,aAAa;AAChB,UAAAA,EAAE,eAAA,GACEihB,KAAalB,EAAa,SAAS,IACrCD,EAAcC,EAAakB,KAAa,CAAC,EAAE,IAAI,IACtCA,OAAe,MAAMlB,EAAa,SAAS,KACpDD,EAAcC,EAAa,CAAC,EAAE,IAAI;AAEpC;AAAA,QACF;AAAA,QAEA,KAAK,WAAW;AACd,UAAA/f,EAAE,eAAA,GACEihB,KAAa,KACfnB,EAAcC,EAAakB,KAAa,CAAC,EAAE,IAAI;AAEjD;AAAA,QACF;AAAA,QAEA,KAAK,cAAc;AACjB,cAAI,CAACE,KAAcA,EAAW,OAAQ;AACtC,UAAAnhB,EAAE,eAAA,GACGiW,EAAOkL,EAAW,IAAI,IAEhBA,EAAW,SAAS,SAAS,KACtCrB,EAAcqB,EAAW,SAAS,CAAC,EAAE,IAAI,IAFzClB,EAAakB,EAAW,IAAI;AAI9B;AAAA,QACF;AAAA,QAEA,KAAK,aAAa;AAChB,cAAI,CAACA,EAAY;AAEjB,cADAnhB,EAAE,eAAA,GACE,CAACmhB,EAAW,UAAUlL,EAAOkL,EAAW,IAAI;AAC9C,YAAAlB,EAAakB,EAAW,IAAI;AAAA,eACvB;AACL,kBAAM5E,IAAa4B,GAAcgD,EAAW,IAAI;AAChD,YAAI5E,KACoBwD,EAAa;AAAA,cACjC,CAACmB,OAAMA,GAAE,SAAS3E;AAAA,YAAA,KAGlBuD,EAAcvD,CAAU;AAAA,UAG9B;AACA;AAAA,QACF;AAAA,QAEA,KAAK,SAAS;AACZ,cAAI,CAAC4E,EAAY;AACjB,UAAAnhB,EAAE,eAAA,GACEmhB,EAAW,cACbzU,IAAWyU,EAAW,IAAI;AAE5B;AAAA,QACF;AAAA,QAEA,KAAK,UAAU;AACb,UAAAnhB,EAAE,eAAA,GACFif,IAAA;AACA;AAAA,QACF;AAAA,MAAA;AAAA,IAEJ;AAAA,IACA,CAACY,GAAYE,GAAc9J,GAAQgK,GAAcvT,GAAUuS,CAAQ;AAAA,EAAA;AAGrE,SAAO;AAAA,IACL,cAAAc;AAAA,IACA,eAAAL;AAAA,IACA,YAAAG;AAAA,IACA,oBAAAG;AAAA,IAEA,cAAAC;AAAA,IACA,QAAAE;AAAA,IACA,UAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,eAAAP;AAAA,IAEA,cAAAc;AAAA,IACA,iBAAAE;AAAA,IAEA,eAAAE;AAAA,IAEA,OAAAV;AAAA,IACA,QAAArK;AAAA,IACA,UAAAsK;AAAA,IACA,YAAA3T;AAAA,IACA,uBAAA8T;AAAA,IACA,cAAAC;AAAA,EAAA;AAEJ;AC5aA,MAAMS,KAAe;AAUrB,SAASC,GAAexlB,GAAcqS,GAAiC;AACrE,MAAI,CAACA,EAAO,QAAOrS;AAEnB,QAAMuiB,IAAMviB,EAAK,YAAA,EAAc,QAAQqS,EAAM,aAAa;AAC1D,MAAIkQ,MAAQ,GAAI,QAAOviB;AAEvB,QAAMylB,IAASzlB,EAAK,MAAM,GAAGuiB,CAAG,GAC1BmD,IAAQ1lB,EAAK,MAAMuiB,GAAKA,IAAMlQ,EAAM,MAAM,GAC1CsT,IAAQ3lB,EAAK,MAAMuiB,IAAMlQ,EAAM,MAAM;AAE3C,SACE,gBAAA/lB,EAAAmR,IAAA,EACG,UAAA;AAAA,IAAAgoB;AAAA,sBACA,QAAA,EAAK,WAAWz3B,EAAehB,GAAW,OAAO,GAAI,UAAA04B,GAAM;AAAA,IAC3DC;AAAA,EAAA,GACH;AAEJ;AAWO,MAAMC,KAA0C,CAAC;AAAA,EACtD,UAAAxE;AAAA,EACA,MAAA4B;AAAA,EACA,OAAA3Q;AAAA,EACA,aAAAwT;AAAA,EACA,aAAAC;AACF,MAAM;AACJ,QAAM,EAAE,MAAA3F,GAAM,MAAAH,GAAM,OAAAW,EAAA,IAAUS,GACxB4D,IAAW,CAAC5D,EAAS,QACrBrQ,IAAaiS,EAAK,WAAW5B,CAAQ,GACrCsD,IAAW1B,EAAK,SAAShD,CAAI,GAC7B+F,IAAgB/C,EAAK,OAAOhD,CAAI,GAChCgG,IAAgBhD,EAAK,aAAahD,CAAI,GAEtCnf,IACJ,CAAC,CAACglB,KACFb,KACA,CAACjU,KACDiS,EAAK,sBAAsB5B,CAAQ,GAE/B6E,IAAYjD,EAAK,aAAa5B,CAAQ,GACtClkB,IAAYijB,EAAK,aAAa/yB,EAAU,QAAQA,EAAU,SAE1D84B,IAAc;AAAA,IAClB,aAAa,QAAQvF,IAAQ,CAAC,MAAM4E,EAAY;AAAA,EAAA,GAG5CY,IAAa12B;AAAA,IACjB;AAAA,IACA;AAAA,IACAkO,EAAalP,EAAO,EAAE;AAAA,IACtB;AAAA,IACAjB,EAAaV,EAAgB,KAAK;AAAA,IAClCikB,KAAcvjB,EAAaV,EAAgB,QAAQ;AAAA,IACnDU,EAAaV,EAAgB,cAAcL,EAAa,KAAK;AAAA,IAC7De,EAAaV,EAAgB,cAAcL,EAAa,MAAM;AAAA,EAAA,GAG1D25B,IAAgB,CACpBnhB,GACAohB,GACAn6B,GACA6Y,MAEA,gBAAA5Y;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,UAAU;AAAA,MACT,GAAID,KAAS,CAAA;AAAA,MACd,SAAS6Y,KAAW7Y,GAAO;AAAA,MAC3B,WAAWuD;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACAjC,EAAaV,EAAgB,cAAcL,EAAa,KAAK;AAAA,MAAA;AAAA,MAG/D,UAAA,gBAAAN;AAAA,QAACqQ;AAAA,QAAA;AAAA,UACC,MAAMyI;AAAA,UACN,MAAMtW,EAAK;AAAA,UACX,WAAWc;AAAA,YACT;AAAA,YACA,CAAC42B,KAAkB;AAAA,YACnBA;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAIJ,MAAIC;AACJ,EAAKtB,IAEMgB,MAAkB,YAC3BM,IAAUF,EAAc93B,EAAS,SAAS,gBAAgB,MAAM,CAAC6V,MAAM;AACrE,IAAAA,EAAE,gBAAA,GACFA,EAAE,eAAA;AAAA,EACJ,CAAC,IACQ6hB,MAAkB,UAC3BM,IAAUF;AAAA,IACR93B,EAAS;AAAA,IACTN,EAAehB,GAAW,OAAO;AAAA,IACjC;AAAA,IACA,CAACmX,MAAM;AACL,MAAAA,EAAE,gBAAA,GACFA,EAAE,eAAA,GACF2hB,IAAc9F,CAAI;AAAA,IACpB;AAAA,EAAA,IAGFsG,IAAUF;AAAA,IACR93B,EAAS;AAAA,IACTy3B,IAAgB,cAAc;AAAA,IAC9B/C,EAAK,gBAAgB5B,CAAQ;AAAA,EAAA,IArB/BkF,IAAU,gBAAAn6B,EAAC,QAAA,EAAK,WAAU,kBAAA,CAAkB;AAyB9C,QAAMo6B,IACJ,gBAAAj6B,EAAAmR,IAAA,EACE,UAAA;AAAA,IAAA,gBAAAnR,EAAC+S,IAAA,EAAM,aAAa7Q,EAAY,QAAQ,WAAU,kBAChD,UAAA;AAAA,MAAA,gBAAAlC,EAAC+S,MAAM,OAAO9S,GAAM,QAAQ,SAASqC,EAAQ,IAC1C,UAAA;AAAA,QAAA03B;AAAA,QACAT,MAAgBzE,EAAS,cAAcvgB,MACtC,gBAAA1U,EAAC,OAAA,EAAI,WAAU,QACb,UAAA,gBAAAA;AAAA,UAACmU;AAAA,UAAA;AAAA,YACC,SAASyQ;AAAA,YACT,eAAelQ;AAAA,YACf,MAAMlS,EAAK;AAAA,YACX,QAAQF,EAAO;AAAA,YACf,WAAU;AAAA,UAAA;AAAA,QAAA,GAEd;AAAA,QAEF,gBAAAtC;AAAA,UAACgR;AAAA,UAAA;AAAA,YACC,SAAStO,EAAY;AAAA,YACrB,OAAOqO;AAAA,YACP,WAAU;AAAA,YAET,UAAAsoB,GAAerF,EAAK,MAAM9N,CAAK;AAAA,UAAA;AAAA,QAAA;AAAA,MAClC,GACF;AAAA,MACC8N,EAAK,eACJ,gBAAAh0B;AAAA,QAACgR;AAAA,QAAA;AAAA,UACC,SAAStO,EAAY;AAAA,UACrB,OAAOzB,EAAU;AAAA,UACjB,WAAU;AAAA,UACV,OAAO;AAAA,YACL,aAAa;AAAA,UAAA;AAAA,UAGd,UAAA+yB,EAAK;AAAA,QAAA;AAAA,MAAA;AAAA,IACR,GAEJ;AAAA,IAEC,CAAC0F,KACA,gBAAA15B;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWsD;AAAA,UACT;AAAA,UACAzB,EAAehB,GAAW,OAAO;AAAA,QAAA;AAAA,QAGlC,UAAA+jB,uBAAevU,IAAA,EAAK,MAAMlO,EAAS,OAAO,MAAMK,EAAK,GAAA,CAAI;AAAA,MAAA;AAAA,IAAA;AAAA,EAC5D,GAEJ;AAGF,SACE,gBAAAxC,EAAC,OAAA,EAAK,GAAG85B,GAAW,cAAYtF,GAC9B,UAAA,gBAAAx0B;AAAA,IAACkT;AAAA,IAAA;AAAA,MACC,OAAO9S,GAAM;AAAA,MACb,SAASgC,GAAQ;AAAA,MACjB,SAASK,EAAQ;AAAA,MACjB,WAAWu3B;AAAA,MACX,OAAOD;AAAA,MACP,eAAaxB,KAAY;AAAA,MAExB,UAAA6B;AAAA,IAAA;AAAA,EAAA,GAEL;AAEJ;AAEAX,GAAe,cAAc;ACrMtB,MAAMY,KAAwD,CAAC;AAAA,EACpE,OAAA34B;AAAA,EACA,UAAA2S;AAAA,EACA,WAAAge;AAAA,EACA,UAAAlZ;AAAA,EACA,oBAAA6e;AACF,wBAEK,OAAA,EAAI,WAAW10B,EAAG,kBAAkBjC,EAAaV,EAAgB,KAAK,CAAC,GACtE,4BAACuS,IAAA,EAAM,OAAO9S,GAAM,QAAQ,WAAU,YACpC,UAAA;AAAA,EAAA,gBAAAJ,EAAC,QAAA,EAAK,WAAU,2DACd,UAAA,gBAAAA;AAAA,IAACqQ;AAAA,IAAA;AAAA,MACC,MAAMlO,EAAS;AAAA,MACf,MAAMK,EAAK;AAAA,MACX,WAAWX,EAAeZ,EAAU,QAAQ;AAAA,IAAA;AAAA,EAAA,GAEhD;AAAA,EACA,gBAAAjB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKmZ;AAAA,MACL,MAAK;AAAA,MACL,OAAAzX;AAAA,MACA,UAAU,CAACsW,MAAM3D,EAAS2D,EAAE,OAAO,KAAK;AAAA,MACxC,aAAa,CAACA,MAAMA,EAAE,gBAAA;AAAA,MACtB,WAAAqa;AAAA,MACA,cAAW;AAAA,MACX,yBAAuB2F;AAAA,MACvB,aAAY;AAAA,MACZ,WAAW10B,EAAGud,GAAW,EAAE,UAAU,GAAA,CAAO,GAAG,aAAa;AAAA,IAAA;AAAA,EAAA;AAAA,EAE7Dnf,KACC,gBAAA1B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,SAAS,MAAM;AACb,QAAAqU,EAAS,EAAE,GACP8E,KAAY,OAAOA,KAAa,YAClCA,EAAS,SAAS,MAAA;AAAA,MAEtB;AAAA,MACA,WAAW7V;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAjC,EAAaV,EAAgB,OAAOL,EAAa,KAAK;AAAA,MAAA;AAAA,MAGxD,UAAA,gBAAAN;AAAA,QAACqQ;AAAA,QAAA;AAAA,UACC,MAAMlO,EAAS;AAAA,UACf,MAAMK,EAAK;AAAA,UACX,WAAWc;AAAA,YACTzB,EAAeZ,EAAU,SAAS;AAAA,YAClC;AAAA,YACA;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AACF,EAAA,CAEJ,EAAA,CACF;AAIJo5B,GAAsB,cAAc;AC7DpC,SAASrU,GAAe/jB,GAAiBqc,GAA0B;AACjE,SACStc,GADLsc,IACkBxc,GAAO,aAEzBG,KAGgBH,GAAO,IALY;AAMzC;AAEA,SAASw4B,GAAc;AAAA,EACrB,QAAAhc;AAAA,EACA,UAAArN;AACF,GAGiB;AACf,SAAIqN,IACK,gBAAAte,EAACu6B,MAAgB,UAAAtpB,GAAS,4BAEzB,UAAAA,GAAS;AACrB;AA6BA,MAAMupB,KAAsB,IACtBC,KAAuB,GAEhBC,KAA4C,CAAC;AAAA,EACxD,aAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,QAAAtc;AAAA,EACA,QAAArc;AAAA,EACA,SAAA44B;AAAA,EACA,OAAA3U;AAAA,EACA,eAAA4U;AAAA,EACA,gBAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,MAAAnE;AAAA,EACA,cAAAoE;AAAA,EACA,aAAAvB;AAAA,EACA,aAAAC;AAAA,EACA,gBAAAuB;AACF,MAAM;AACJ,QAAMC,IAAYxjB,GAAuB,IAAI,GAEvCyjB,IAAiBC,GAAe;AAAA,IACpC,OAAOxE,EAAK,aAAa;AAAA,IACzB,kBAAkB,MAAMsE,EAAU;AAAA,IAClC,cAAc,MAAMX;AAAA,IACpB,UAAUC;AAAA,IACV,YAAY,CAAC9K,MAAUkH,EAAK,aAAalH,CAAK,EAAE;AAAA,EAAA,CACjD;AAED,EAAAvP,GAAU,MAAM;AACd,QAAI,CAACyW,EAAK,WAAY;AACtB,UAAMT,IAAMS,EAAK,aAAa,UAAU,CAACqC,MAAMA,EAAE,SAASrC,EAAK,UAAU;AACzE,IAAIT,KAAO,KACTgF,EAAe,cAAchF,GAAK,EAAE,OAAO,QAAQ;AAAA,EAEvD,GAAG,CAACS,EAAK,YAAYA,EAAK,cAAcuE,CAAc,CAAC;AAEvD,QAAME,IAAYP,KAAkB,CAACE;AAErC,SACE,gBAAAj7B,EAACs6B,MAAc,QAAAhc,GACb,UAAA,gBAAAne;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKw6B;AAAA,MACL,IAAIE;AAAA,MACJ,MAAK;AAAA,MACL,cAAW;AAAA,MACX,OAAO,EAAE,GAAGD,GAAgB,WAAWM,KAAkB,QAAA;AAAA,MACzD,WAAW53B;AAAA,QACT;AAAA,QACA;AAAA,QACA1B,EAAiBhB,EAAY,OAAO;AAAA,QACpCS,EAAaV,EAAgB,KAAK;AAAA,QAClCqlB,GAAe/jB,GAAQqc,CAAM;AAAA,QAC7B9M,EAAalP,EAAO,EAAE;AAAA,QACtBgQ,GAAa/P,GAAO,EAAE;AAAA,QACtB;AAAA,MAAA;AAAA,MAGF,UAAA;AAAA,QAAA,gBAAAvC;AAAA,UAACq6B;AAAA,UAAA;AAAA,YACC,OAAOnU;AAAA,YACP,UAAU4U;AAAA,YACV,WAAWjE,EAAK;AAAA,YAChB,UAAUmE;AAAA,YACV,oBAAoBnE,EAAK;AAAA,UAAA;AAAA,QAAA;AAAA,QAG3B,gBAAA72B,EAAC,OAAA,EAAI,KAAKm7B,GAAW,WAAU,gCAC7B,UAAA,gBAAAn7B,EAAC,OAAA,EAAI,WAAU,cACZ,UAAAs7B,IACC,gBAAAt7B,EAACkT,IAAA,EAAM,SAAS9Q,GAAQ,QACtB,UAAA,gBAAApC;AAAA,UAACgR;AAAA,UAAA;AAAA,YACC,SAAStO,EAAY;AAAA,YACrB,OAAOzB,EAAU;AAAA,YACjB,WAAU;AAAA,YACX,UAAA;AAAA,UAAA;AAAA,QAAA,GAGH,IAEA,gBAAAjB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAO;AAAA,cACL,QAAQo7B,EAAe,aAAA;AAAA,cACvB,UAAU;AAAA,cACV,UAAU;AAAA,YAAA;AAAA,YAGX,UAAAA,EAAe,gBAAA,EAAkB,IAAI,CAACG,MAAe;AACpD,oBAAMvH,IAAO6C,EAAK,aAAa0E,EAAW,KAAK;AAC/C,qBACE,gBAAAv7B;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBAEC,KAAKo7B,EAAe;AAAA,kBACpB,cAAYG,EAAW;AAAA,kBACvB,OAAO;AAAA,oBACL,UAAU;AAAA,oBACV,KAAK;AAAA,oBACL,MAAM;AAAA,oBACN,UAAU;AAAA,oBACV,WAAW,cAAcA,EAAW,KAAK;AAAA,kBAAA;AAAA,kBAG3C,UAAA,gBAAAv7B;AAAA,oBAACy5B;AAAA,oBAAA;AAAA,sBACC,UAAUzF;AAAA,sBACV,MAAA6C;AAAA,sBACA,OAAOoE,IAAe/U,IAAQ;AAAA,sBAC9B,aAAAwT;AAAA,sBACA,aAAAC;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBACF;AAAA,gBAjBK3F,EAAK;AAAA,cAAA;AAAA,YAoBhB,CAAC;AAAA,UAAA;AAAA,QAAA,GAGP,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ;AAEA0G,GAAgB,cAAc;AC7K9B,SAASc,GAAiB;AAAA,EACxB,QAAAvN;AAAA,EACA,UAAA5X;AACF,GAGuB;AACrB,SACE,gBAAArW;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWsD;AAAA,QACT;AAAA,QACA;AAAA,QACA2qB,IAAS,eAAe;AAAA,QACxB5X,KAAY;AAAA,MAAA;AAAA,MAEd,eAAW;AAAA,MAEX,UAAA,gBAAArW;AAAA,QAACqQ;AAAA,QAAA;AAAA,UACC,MAAMlO,EAAS;AAAA,UACf,MAAMK,EAAK;AAAA,UACX,WAAWX,EAAeZ,EAAU,SAAS;AAAA,QAAA;AAAA,MAAA;AAAA,IAC/C;AAAA,EAAA;AAGN;AAEA,SAASw6B,GAAY;AAAA,EACnB,SAAA7iB;AACF,GAEuB;AACrB,SACE,gBAAA5Y;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,SAAA4Y;AAAA,MACA,WAAWtV;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAjC,EAAaV,EAAgB,OAAOL,EAAa,KAAK;AAAA,MAAA;AAAA,MAGxD,UAAA,gBAAAN;AAAA,QAACqQ;AAAA,QAAA;AAAA,UACC,MAAMlO,EAAS;AAAA,UACf,MAAMK,EAAK;AAAA,UACX,WAAWc;AAAA,YACTzB,EAAeZ,EAAU,SAAS;AAAA,YAClC;AAAA,YACA;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN;AAQO,MAAMy6B,KAAgD,CAAC;AAAA,EAC5D,aAAAhC;AAAA,EACA,OAAAh4B;AAAA,EACA,UAAA2U;AAAA,EACA,aAAAslB;AAAA,EACA,QAAA1N;AAAA,EACA,SAAA4M;AAAA,EACA,UAAA3hB;AAAA,EACA,iBAAAyN;AAAA,EACA,UAAAiV;AAAA,EACA,SAAAC;AAAA,EACA,aAAAC;AACF,MAAM;AACJ,QAAM,CAACC,GAAWC,CAAY,IAAI5mB,EAAS,EAAK,GAE1C6mB,IAAc,CAACjkB,MAA8B;AACjD,IAAAA,EAAE,gBAAA,GACF6jB,EAAA;AAAA,EACF;AAEA,SAAInC,IAEA,gBAAAv5B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,UAAUkW,IAAW,KAAK;AAAA,MAC1B,iBAAc;AAAA,MACd,iBAAe4X;AAAA,MACf,iBAAeA,IAAS4M,IAAU;AAAA,MAClC,SAAS,MAAM;AACb,QAAKxkB,KAAUulB,EAAA;AAAA,MACjB;AAAA,MACA,WAAW,CAAC5jB,MAAM;AAChB,QAAI3B,MACA2B,EAAE,QAAQ,WAAWA,EAAE,QAAQ,SACjCA,EAAE,eAAA,GACF4jB,EAAA;AAAA,MAEJ;AAAA,MACA,cAAc,MAAMI,EAAa,EAAI;AAAA,MACrC,cAAc,MAAMA,EAAa,EAAK;AAAA,MACtC,WAAW14B;AAAA,QACTud,GAAW,EAAE,UAAAxK,GAAU;AAAA,QACvB;AAAA,QACA;AAAA,QACAA,IAAW,uBAAuB;AAAA,QAClC6C,IAAW,UAAU;AAAA,MAAA;AAAA,MAGpB,UAAA;AAAA,SAAAxX,KAAkC,CAAA,GAAI,IAAI,CAACw6B,MAC5C,gBAAAl8B;AAAA,UAAC0hB;AAAA,UAAA;AAAA,YAEC,MAAMlf,EAAK;AAAA,YACX,UAAU6T,IAAW,SAAY,MAAMylB,EAAYI,CAAC;AAAA,YACpD,iBAAiBv7B,EAAgB;AAAA,YACjC,WAAU;AAAA,YAET,YAAgBu7B,CAAC;AAAA,UAAA;AAAA,UANbA;AAAA,QAAA,CAQR;AAAA,QACA,CAAChjB,KAAYyiB,KACZ,gBAAA37B,EAAC,QAAA,EAAK,WAAW6B,EAAeZ,EAAU,QAAQ,GAC/C,UAAA06B,EAAA,CACH;AAAA,QAEF,gBAAA37B,EAACw7B,IAAA,EAAiB,QAAAvN,GAAgB,UAAA5X,EAAA,CAAoB;AAAA,QACrD6C,KAAY,CAAC7C,KAAY0lB,KACxB,gBAAA/7B,EAACy7B,IAAA,EAAY,SAASQ,EAAA,CAAa;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,IAOzC,gBAAA97B;AAAA,IAAC+S;AAAA,IAAA;AAAA,MACC,OAAO9S,GAAM;AAAA,MACb,WAAU;AAAA,MACV,cAAc,MAAM47B,EAAa,EAAI;AAAA,MACrC,cAAc,MAAMA,EAAa,EAAK;AAAA,MAEtC,UAAA;AAAA,QAAA,gBAAAh8B;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,UAAQ;AAAA,YACR,cAAa;AAAA,YACb,MAAK;AAAA,YACL,iBAAc;AAAA,YACd,iBAAeiuB;AAAA,YACf,iBAAeA,IAAS4M,IAAU;AAAA,YAClC,UAAAxkB;AAAA,YACA,OAAOsQ,EAAiBjlB,KAAgC,IAAI;AAAA,YAC5D,SAASk6B;AAAA,YACT,aAAAD;AAAA,YACA,WAAWr4B;AAAA,cACTud,GAAW,EAAE,UAAAxK,GAAU;AAAA,cACvB;AAAA,cACA6C,IAAW,UAAU;AAAA,YAAA;AAAA,UACvB;AAAA,QAAA;AAAA,QAEF,gBAAAlZ,EAACw7B,IAAA,EAAiB,QAAAvN,GAAgB,UAAA5X,EAAA,CAAoB;AAAA,QACrD6C,KAAY,CAAC7C,KAAY0lB,KACxB,gBAAA/7B,EAACy7B,IAAA,EAAY,SAASQ,EAAA,CAAa;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAI3C;AAEAP,GAAkB,cAAc;ACvKhC,MAAMS,KAAuD;AAAA,EAC3D,CAACpW,GAAa,MAAM,GAAG;AAAA,EACvB,CAACA,GAAa,WAAW,GAAG;AAAA,EAC5B,CAACA,GAAa,SAAS,GAAG;AAAA,EAC1B,CAACA,GAAa,GAAG,GAAG;AAAA,EACpB,CAACA,GAAa,QAAQ,GAAG;AAAA,EACzB,CAACA,GAAa,MAAM,GAAG;AACzB,GA+BaqW,KAAkC,CAAC;AAAA,EAC9C,MAAAhI;AAAA,EACA,OAAA1yB;AAAA,EACA,UAAA2S;AAAA,EACA,aAAAqlB;AAAA,EACA,YAAAxF,IAAa;AAAA,EACb,UAAA7d;AAAA,EACA,aAAAslB;AAAA,EACA,QAAAvqB,IAAS2U,GAAa;AAAA,EACtB,QAAAzH;AAAA,EACA,QAAArc;AAAA,EACA,gBAAAi5B;AAAA,EACA,cAAcmB;AAAA,EACd,iBAAAjF;AAAA,EACA,cAAAkF;AAAA,EACA,WAAAx8B;AAAA,EACA,GAAGC;AACL,MAAM;AACJ,QAAM,CAACmmB,GAAOC,CAAQ,IAAI/Q,EAAS,EAAE,GAC/B,CAAC2lB,GAAgBwB,CAAiB,IAAInnB,EAAS,EAAE,GACjD,CAAC6Y,GAAQC,CAAS,IAAI9Y,EAAS,EAAK,GACpC4lB,IAAiBrjB,GAAyB,IAAI,GAE9C,CAAC0c,GAAgBmI,CAAiB,IAAIpnB;AAAA,IAC1C,0BAAU,IAAA;AAAA,EAAwB,GAE9B,CAAC+hB,IAAWsF,EAAY,IAAIrnB;AAAA,IAChC,0BAAU,IAAA;AAAA,EAAiC;AAI7C,EAAAgL,GAAU,MAAM;AACd,IAAAoc,EAAkB,oBAAI,KAAK,GAC3BC,GAAa,oBAAI,KAAK;AAAA,EACxB,GAAG,CAACrI,CAAI,CAAC;AAET,QAAM,EAAE,MAAAsI,IAAM,gBAAA9B,GAAA,IAAmB+B,GAAY;AAAA,IAC3C,WAAWR,GAAoB/qB,CAAM;AAAA,IACrC,MAAM6c;AAAA,IACN,YAAY;AAAA,MACV2O,GAAO,CAAC;AAAA,MACRC,GAAA;AAAA,MACAC,GAAM,EAAE,SAAS,GAAG;AAAA,MACpBn5B,GAAK;AAAA,QACH,MAAM,EAAE,OAAAo5B,GAAO,UAAAC,KAAY;AACzB,iBAAO,OAAOA,EAAS,SAAS,OAAO;AAAA,YACrC,UAAU,GAAGD,EAAM,UAAU,KAAK;AAAA,UAAA,CACnC;AAAA,QACH;AAAA,MAAA,CACD;AAAA,IAAA;AAAA,IAEH,sBAAsBE;AAAA,EAAA,CACvB,GAEKC,IAAoB/S,GAAqBoS,GAAmB,GAAG;AAErE,EAAAnc,GAAU,MAAM;AACd,QAAI,CAAC8F,GAAO;AACV,MAAAgX,EAAkB,OAAA,GAClBX,EAAkB,EAAE;AACpB;AAAA,IACF;AACA,IAAAW,EAAkBhX,CAAK;AAAA,EACzB,GAAG,CAACA,GAAOgX,CAAiB,CAAC;AAE7B,QAAMjI,KAAWzf;AAAA,IACf,MAAM2e,GAAkBC,GAAM,EAAE,YAAAF,EAAA,GAAcG,CAAc;AAAA,IAC5D,CAACD,GAAMF,GAAYG,CAAc;AAAA,EAAA,GAG7B8I,KAAW3nB;AAAA,IACf,MACEulB,IAAiB/F,GAAmBC,IAAU8F,CAAc,IAAI;AAAA,IAClE,CAAC9F,IAAU8F,CAAc;AAAA,EAAA,GAGrBjE,KAAYthB,GAAiC,MAC7CkkB,IACKh4B,GAAO,SACV,IAAI,IAAIA,EAAM,IAAI,CAACw6B,MAAMvI,GAAeuI,CAAC,CAAC,CAAC,IAC3C,SAECx6B,GAAO,SAAS,oBAAI,IAAI,CAACiyB,GAAejyB,CAAK,CAAC,CAAC,IAAI,QACzD,CAACg4B,GAAah4B,CAAK,CAAC,GAEjB07B,KAAe7nB;AAAA,IACnB,CAACgE,MAAqB;AACpB,UAAImgB,GAAa;AACf,cAAM2D,IAAgBhpB,GAGhBipB,KAAkBxG,KAAY,CAAC,GAAGA,EAAS,IAAI,CAAA,GAC/C/N,KAAOuU,GAAgB,SAAS/jB,CAAQ,IAC1C+jB,GAAgB,OAAO,CAACpB,OAAMA,OAAM3iB,CAAQ,IAC5C,CAAC,GAAG+jB,IAAiB/jB,CAAQ;AACjC,QAAA8jB,IAAgBtU,GAAK,IAAI6K,EAAgB,CAAC;AAAA,MAC5C;AAEE,QAAAzN,EAAS,EAAE,GACX+H,EAAU,EAAK,GACQ7Z,IAGNuf,GAAiBra,CAAQ,CAAC;AAAA,IAE/C;AAAA,IACA,CAACmgB,GAAa5C,IAAWziB,CAAQ;AAAA,EAAA,GAG7BkpB,KAAehoB,EAAY,MAAM;AACrC,IAAA2Y,EAAU,EAAK,GACf/H,EAAS,EAAE;AAAA,EACb,GAAG,CAAA,CAAE,GAECqX,KAAgBjoB;AAAA,IACpB,CAACse,MAAiB;AAChB,MAAA4I,GAAa,CAACrf,MAAS,IAAI,IAAIA,CAAI,EAAE,IAAIyW,GAAM,SAAS,CAAC,GACzDyI,EAAc1I,GAAiBC,CAAI,CAAC,EAAE;AAAA,QACpC,CAAC5iB,MAAa;AACZ,UAAAurB,EAAkB,CAACpf,OAAS,IAAI,IAAIA,EAAI,EAAE,IAAIyW,GAAM5iB,CAAQ,CAAC,GAC7DwrB,GAAa,CAACrf,OAAS;AACrB,kBAAM2L,KAAO,IAAI,IAAI3L,EAAI;AACzB,mBAAA2L,GAAK,OAAO8K,CAAI,GACT9K;AAAA,UACT,CAAC;AAAA,QACH;AAAA,QACA,MAAM;AACJ,UAAA0T,GAAa,CAACrf,MAAS,IAAI,IAAIA,CAAI,EAAE,IAAIyW,GAAM,OAAO,CAAC;AAAA,QACzD;AAAA,MAAA;AAAA,IAEJ;AAAA,IACA,CAACyI,CAAY;AAAA,EAAA,GAGTmB,IAAeloB;AAAA,IACnB,CAACse,MAAiB;AAGhB,UAFI,CAACyI,KACDjI,EAAe,IAAIR,CAAI,KACvBsD,GAAU,IAAItD,CAAI,MAAM,UAAW;AACvC,YAAM6J,IAAazH,GAAsB7B,GAAMP,CAAI;AACnD,MACE,CAAC6J,KACD,CAAC,MAAM,QAAQA,EAAW,MAAM,KAChCA,EAAW,OAAO,SAAS,KAG7BF,GAAc3J,CAAI;AAAA,IACpB;AAAA,IACA,CAAC2J,IAAelB,GAAcjI,GAAgB8C,IAAW/C,CAAI;AAAA,EAAA,GAGzDuJ,KAAkBpoB;AAAA,IACtB,CAACse,MAAiB;AAQhB,UALA4I,GAAa,CAACrf,OAAS;AACrB,cAAM2L,KAAO,IAAI,IAAI3L,EAAI;AACzB,eAAA2L,GAAK,OAAO8K,CAAI,GACT9K;AAAA,MACT,CAAC,GACG,CAACuT,EAAc;AACnB,YAAMoB,IAAazH,GAAsB7B,GAAMP,CAAI;AACnD,MACE,CAAC6J,KACD,CAAC,MAAM,QAAQA,EAAW,MAAM,KAChCA,EAAW,OAAO,SAAS,KAG7BF,GAAc3J,CAAI;AAAA,IACpB;AAAA,IACA,CAAC2J,IAAelB,GAAclI,CAAI;AAAA,EAAA,GAG9BwJ,IAA0BpoB,GAA+B,MACzD,OAAO4hB,KAAoB,aAAaA,MAAoB,SACvDA,KAAmB,KAErB,IAAI,IAAIA,EAAgB,IAAI,CAAC8E,MAAMvI,GAAeuI,CAAC,CAAC,CAAC,GAC3D,CAAC9E,CAAe,CAAC,GAEdP,IAAOD,GAAQ;AAAA,IACnB,MAAMuG,IAAU,QAAQlI;AAAA,IACxB,WAAA6B;AAAA,IACA,gBAAgBqG,IAAU;AAAA,IAC1B,iBAAiBS;AAAA,IACjB,sBAAsB;AAAA,IACtB,UAAUR;AAAA,IACV,UAAUG;AAAA,IACV,UAAUE;AAAA,IACV,WAAAtG;AAAA,EAAA,CACD,GAEKxQ,KAAkBpR;AAAA,IACtB,CAACuP,MAA6B;AAC5B,UAAI,CAACA,EAAG,QAAO;AAEf,YAAMkP,IAAOiC,GAAsB7B,GAAMtP,CAAC;AAC1C,aAAKkP,IAEDqI,IACKA,EAAiBzI,GAAiB9O,CAAC,GAAGkP,CAAI,IAG5CA,EAAK,OANMlP;AAAA,IAOpB;AAAA,IACA,CAACsP,GAAMiI,CAAgB;AAAA,EAAA,GAGnBwB,KAAatoB,EAAY,MAAM;AACnC,IAAKc,KAAU6X,EAAU,CAAC9Q,MAAS,CAACA,CAAI;AAAA,EAC1C,GAAG,CAAC/G,CAAQ,CAAC,GAEPynB,KAAevoB,EAAY,MAAM;AACrC,IAAA4Q,EAAS,EAAE,GACX0X,GAAA;AAAA,EACF,GAAG,CAACA,EAAU,CAAC,GAET5B,KAAc1mB,EAAY,MAAM;AACpC,IAAA4Q,EAAS,EAAE,GACX+H,EAAU,EAAK,GAES7Z,IADpBqlB,IAIc,CAAA,IAKC,IALC;AAAA,EAOtB,GAAG,CAACA,GAAarlB,CAAQ,CAAC;AAG1B,EAAA+L,GAAU,MAAM;AACd,QAAI6N,GAAQ;AACV,aAAO,sBAAsB,MAAM+M,EAAe,SAAS,OAAO;AAClE,YAAM+C,IAAcrE,IAAc,SAAYh4B,GACxCs8B,IAAiBD,GAAa,SAChCpK,GAAeoK,CAAW,IAC1B,QACEE,KACJD,KACAnH,EAAK,aAAa,KAAK,CAACqC,OAAMA,GAAE,SAAS8E,CAAc,IACnDA,IACCnH,EAAK,aAAa,CAAC,GAAG,QAAQ;AACrC,MAAAA,EAAK,cAAcoH,EAAO;AAAA,IAC5B;AACE,MAAApH,EAAK,cAAc,IAAI,GACvBA,EAAK,eAAA;AAAA,EAGT,GAAG,CAAC5I,CAAM,CAAC,GAGX7N,GAAU,MAAM;AACd,IAAI6N,KAAU8M,KACZlE,EAAK,cAAcA,EAAK,aAAa,CAAC,GAAG,QAAQ,IAAI;AAAA,EAGzD,GAAG,CAACkE,CAAc,CAAC,GAEnB3a,GAAU,MAAM;AACd,QAAI,CAAC6N,EAAQ;AAEb,UAAMiQ,IAAqB,CAAClmB,MAAwB;AAClD,YAAMmmB,KAASnmB,EAAE,QACXomB,KAAY1B,GAAK,UAAU,SAC3B2B,KAAW3B,GAAK,SAAS;AAC/B,MAAI0B,IAAW,SAASD,EAAM,KAAKE,IAAU,SAASF,EAAM,MAG5DjQ,EAAU,EAAK,GACf/H,EAAS,EAAE;AAAA,IACb;AAEA,oBAAS,iBAAiB,aAAa+X,CAAkB,GAClD,MAAM,SAAS,oBAAoB,aAAaA,CAAkB;AAAA,EAC3E,GAAG,CAACjQ,GAAQyO,GAAK,WAAWA,GAAK,QAAQ,CAAC;AAE1C,QAAMxjB,KAAW,CAAC,CAACxX,GAAO,QAEpB48B,KAAY/oB;AAAA,IAChB,CAACgpB,MAAyB;AACxB,UAAI,CAAC7E,EAAa;AAClB,YAAM2D,IAAgBhpB,GAGhBipB,KAAkBxG,KAAY,CAAC,GAAGA,EAAS,IAAI,CAAA;AACrD,MAAAuG;AAAA,QACEC,GAAgB,OAAO,CAACpB,OAAMA,OAAMqC,CAAY,EAAE,IAAI3K,EAAgB;AAAA,MAAA;AAAA,IAE1E;AAAA,IACA,CAAC8F,GAAa5C,IAAWziB,CAAQ;AAAA,EAAA,GAG7BwmB,KAAUhE,EAAK,MAAM,OAAO;AAElC,SACE,gBAAA12B,EAAC,OAAA,EAAI,KAAKu8B,GAAK,cAAc,WAAWp5B,EAAGxD,GAAW,QAAQ,GAAI,GAAGC,GACnE,UAAA;AAAA,IAAA,gBAAAC;AAAA,MAAC07B;AAAA,MAAA;AAAA,QACC,aAAAhC;AAAA,QACA,OACEA,IACIh4B,GAAO,IAAIiyB,EAAc,IACzBjyB,GAAO,SACLiyB,GAAejyB,CAAK,IACpB;AAAA,QAER,UAAA2U;AAAA,QACA,aAAAslB;AAAA,QACA,QAAA1N;AAAA,QACA,SAAA4M;AAAA,QACA,UAAA3hB;AAAA,QACA,iBAAAyN;AAAA,QACA,UAAUmX;AAAA,QACV,SAAS7B;AAAA,QACT,aAAaqC;AAAA,MAAA;AAAA,IAAA;AAAA,IAGdrQ,KACC,gBAAAjuB;AAAA,MAAC06B;AAAA,MAAA;AAAA,QACC,aAAagC,GAAK;AAAA,QAClB,gBAAA9B;AAAA,QACA,QAAAtc;AAAA,QACA,QAAArc;AAAA,QACA,gBAAAi5B;AAAA,QACA,SAAAL;AAAA,QACA,OAAA3U;AAAA,QACA,eAAeC;AAAA,QACf,gBAAA4U;AAAA,QACA,gBAAAC;AAAA,QACA,MAAAnE;AAAA,QACA,cAAc,CAAC,CAACsG;AAAA,QAChB,aAAAzD;AAAA,QACA,aAAaiE;AAAA,MAAA;AAAA,IAAA;AAAA,EACf,GAEJ;AAEJ;AAEAvB,GAAW,cAAc;ACnZlB,MAAMoC,KAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWzB,UAAU;AAAA,IACR,SAAS;AAAA,IACT,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,MAAM;AAAA,IACN,YAAY;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAad,QAAQ;AAAA,IACN,QAAQ;AAAA,IACR,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,OAAO;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBT,QAAQ;AAAA,IACN,QACE;AAAA,IACF,SAAS;AAAA,IACT,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA,IACP,SAAS;AAAA,IACT,KAAK;AAAA,EAAA;AAET;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/components/Icons/DragHandle.tsx","../src/components/Icons/Spinner.tsx","../src/types/align.ts","../src/types/anchor.ts","../src/types/element.ts","../src/types/color.ts","../src/types/zIndex.ts","../src/types/heading.ts","../src/types/icons.ts","../src/types/justify.ts","../src/types/orientation.ts","../src/types/radius.ts","../src/types/shadow.ts","../src/types/size.ts","../src/types/spacing.ts","../src/types/text.ts","../src/types/transition.ts","../src/types/variant.ts","../src/util/classes.ts","../src/components/Spinner/Spinner.tsx","../src/img/AI.svg?react","../src/img/Activity.svg?react","../src/img/Add.svg?react","../src/img/Annotate.svg?react","../src/img/ArrowDown.svg?react","../src/img/ArrowLeft.svg?react","../src/img/ArrowRight.svg?react","../src/img/ArrowUp.svg?react","../src/img/ArrowUpRight.svg?react","../src/img/Blocks.svg?react","../src/img/Boxes.svg?react","../src/img/CalendarClock.svg?react","../src/img/CaretDown.svg?react","../src/img/Check.svg?react","../src/img/Checkbox.svg?react","../src/img/Checklist.svg?react","../src/img/ChevronBottom.svg?react","../src/img/ChevronLeft.svg?react","../src/img/ChevronRight.svg?react","../src/img/ChevronTop.svg?react","../src/img/Circle.svg?react","../src/img/CircleUser.svg?react","../src/img/Close.svg?react","../src/img/Cloud.svg?react","../src/img/CloudCog.svg?react","../src/img/Code.svg?react","../src/img/Cog.svg?react","../src/img/Contact.svg?react","../src/img/ContentCopy.svg?react","../src/img/Database.svg?react","../src/img/DateRange.svg?react","../src/img/Delete.svg?react","../src/img/Detection.svg?react","../src/img/Download.svg?react","../src/img/Drag.svg?react","../src/img/Draw.svg?react","../src/img/Edit.svg?react","../src/img/Embeddings.svg?react","../src/img/Enter.svg?react","../src/img/Error.svg?react","../src/img/ExitWorkspace.svg?react","../src/img/ExternalLink.svg?react","../src/img/FileClock.svg?react","../src/img/FineTune.svg?react","../src/img/Fingerprint.svg?react","../src/img/Fullscreen.svg?react","../src/img/GridView.svg?react","../src/img/History.svg?react","../src/img/IdCard.svg?react","../src/img/ImageSearch.svg?react","../src/img/Info.svg?react","../src/img/Insights.svg?react","../src/img/Inspect.svg?react","../src/img/JSON.svg?react","../src/img/Key.svg?react","../src/img/KeyRound.svg?react","../src/img/KeySquare.svg?react","../src/img/Label.svg?react","../src/img/Lock.svg?react","../src/img/Logs.svg?react","../src/img/Menu.svg?react","../src/img/MoreHorizontal.svg?react","../src/img/MoreVertical.svg?react","../src/img/Move.svg?react","../src/img/NotebookPen.svg?react","../src/img/Notes.svg?react","../src/img/Orchestrator.svg?react","../src/img/Pause.svg?react","../src/img/Pencil.svg?react","../src/img/Pin.svg?react","../src/img/Play.svg?react","../src/img/Polyline.svg?react","../src/img/Puzzle.svg?react","../src/img/Radio.svg?react","../src/img/Redo.svg?react","../src/img/Refresh.svg?react","../src/img/Remove.svg?react","../src/img/Review.svg?react","../src/img/Search.svg?react","../src/img/Server.svg?react","../src/img/Settings.svg?react","../src/img/ShieldCheck.svg?react","../src/img/Slider.svg?react","../src/img/Sliders.svg?react","../src/img/Tag.svg?react","../src/img/Text.svg?react","../src/img/Toggle.svg?react","../src/img/Undo.svg?react","../src/img/UnfoldMore.svg?react","../src/img/Unlock.svg?react","../src/img/Unsupported.svg?react","../src/img/Upload.svg?react","../src/img/User.svg?react","../src/img/Users.svg?react","../src/img/UsersRound.svg?react","../src/img/VAL.svg?react","../src/img/VolumeOff.svg?react","../src/img/VolumeUp.svg?react","../src/img/Warning.svg?react","../src/img/Waypoints.svg?react","../src/img/Workflow.svg?react","../src/img/Workspaces.svg?react","../src/img/Zap.svg?react","../src/components/Icons/Icon.tsx","../src/components/Icons/IconWrapper.tsx","../src/styles/text.ts","../src/components/Text/Text.tsx","../src/components/ToastContainer/ToastContainer.tsx","../src/styles/radius.ts","../src/components/ActivityToast/ActivityToast.tsx","../src/components/Button/Button.tsx","../src/styles/shadow.ts","../src/components/Card/Card.tsx","../src/components/Stack/Stack.tsx","../src/components/Card/RichCard.tsx","../src/util/type-check.ts","../src/components/UnsetHint/UnsetHint.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Clickable/Clickable.tsx","../src/util/useControllableState.ts","../src/util/useDisclosure.ts","../src/components/Collapsible/Collapsible.tsx","../src/components/Menu/MenuCheckItem.tsx","../src/components/Menu/MenuIconTextItem.tsx","../src/components/Menu/MenuSectionTitle.tsx","../src/components/Menu/MenuSeparator.tsx","../src/components/Menu/MenuTextItem.tsx","../src/components/Menu/styles.ts","../src/components/ContextMenu/ContextMenu.tsx","../src/components/Input/styles.ts","../src/components/Datepicker/DatepickerIconButton.tsx","../src/components/Datepicker/DatepickerInput.tsx","../src/components/Datepicker/DatePicker.tsx","../src/components/Divider/Divider.tsx","../src/util/useLatest.ts","../src/util/useDragDelta.ts","../src/util/useElementSize.ts","../src/util/useResizableDrawer.ts","../src/components/Drawer/Drawer.tsx","../src/components/Dropdown/Dropdown.tsx","../src/components/Dropdown/DropdownTrigger.tsx","../src/components/EmptyState/EmptyState.tsx","../src/components/FormField/FormField.tsx","../src/components/FormFieldGroup/FormFieldGroup.tsx","../src/components/Heading/Heading.tsx","../src/components/ImageList/ImageList.tsx","../src/components/Input/InputIcon.tsx","../src/components/Input/Input.tsx","../src/components/ListItem/ListItem.tsx","../src/components/Pill/Pill.tsx","../src/components/Icons/RadioDot.tsx","../src/components/Radio/Radio.tsx","../src/util/random.ts","../src/components/Radio/RadioGroup.tsx","../src/components/RichButton/RichButton.tsx","../src/components/RichButtonGroup/RichButtonGroup.tsx","../src/components/RichList/SortableListItem.tsx","../src/components/RichList/RichList.tsx","../src/components/Select/Option.tsx","../src/components/Select/Select.tsx","../src/components/Slider/SliderKnob.tsx","../src/util/math.ts","../src/components/Slider/SliderBar.tsx","../src/components/Slider/SliderLabels.tsx","../src/util/useDebouncedCallback.ts","../src/util/validators.ts","../src/components/Slider/Slider.tsx","../src/components/Table/Table.tsx","../src/components/TextArea/TextArea.tsx","../src/components/TextBadge/TextBadge.tsx","../src/components/Toast/Toast.tsx","../src/components/Toggle/Toggle.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/ToggleSwitch/ToggleSwitch.tsx","../src/util/useDraggable.ts","../src/components/Toolbar/context.ts","../src/components/Toolbar/Toolbar.tsx","../src/components/Toolbar/ToolbarAction.tsx","../src/components/Toolbar/ToolbarGroup.tsx","../src/components/Tree/tree.ts","../src/components/Tree/TreeItem.tsx","../src/components/Tree/TreeSearchInput.tsx","../src/components/Tree/TreeBody.tsx","../src/components/Tree/TreeSelectPanel.tsx","../src/components/Tree/TreeSelectTrigger.tsx","../src/components/Tree/useTree.ts","../src/components/Tree/useTreeViewState.ts","../src/components/Tree/TreeSelect.tsx","../src/components/Tree/TreeView.tsx","../src/theme/tokens/transitions.ts"],"sourcesContent":["import clsx from \"clsx\";\nimport type { FC } from \"react\";\n\nimport { IconProps } from \"@/components/Icons/types\";\n\n/**\n * A drag-handle icon.\n *\n * @param className `class` overrides to apply to the component.\n * @param props Additional HTML properties to apply to the component.\n *\n * @internal For use by the {@link ListItem} component.\n */\nexport const DragHandleIcon: FC<IconProps> = ({ className, ...props }) => {\n return (\n <svg\n className={clsx(className)}\n width=\"8\"\n height=\"13\"\n viewBox=\"0 0 8 13\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path\n d=\"M1.6 13C1.16 13 0.783333 12.8409 0.47 12.5227C0.156667 12.2044 0 11.8219 0 11.375C0 10.9281 0.156667 10.5456 0.47 10.2273C0.783333 9.90911 1.16 9.75 1.6 9.75C2.04 9.75 2.41667 9.90911 2.73 10.2273C3.04333 10.5456 3.2 10.9281 3.2 11.375C3.2 11.8219 3.04333 12.2044 2.73 12.5227C2.41667 12.8409 2.04 13 1.6 13ZM6.4 13C5.96 13 5.58333 12.8409 5.27 12.5227C4.95667 12.2044 4.8 11.8219 4.8 11.375C4.8 10.9281 4.95667 10.5456 5.27 10.2273C5.58333 9.90911 5.96 9.75 6.4 9.75C6.84 9.75 7.21667 9.90911 7.53 10.2273C7.84333 10.5456 8 10.9281 8 11.375C8 11.8219 7.84333 12.2044 7.53 12.5227C7.21667 12.8409 6.84 13 6.4 13ZM1.6 8.125C1.16 8.125 0.783333 7.96589 0.47 7.64766C0.156667 7.32943 0 6.94687 0 6.5C0 6.05312 0.156667 5.67057 0.47 5.35234C0.783333 5.03411 1.16 4.875 1.6 4.875C2.04 4.875 2.41667 5.03411 2.73 5.35234C3.04333 5.67057 3.2 6.05312 3.2 6.5C3.2 6.94687 3.04333 7.32943 2.73 7.64766C2.41667 7.96589 2.04 8.125 1.6 8.125ZM6.4 8.125C5.96 8.125 5.58333 7.96589 5.27 7.64766C4.95667 7.32943 4.8 6.94687 4.8 6.5C4.8 6.05312 4.95667 5.67057 5.27 5.35234C5.58333 5.03411 5.96 4.875 6.4 4.875C6.84 4.875 7.21667 5.03411 7.53 5.35234C7.84333 5.67057 8 6.05312 8 6.5C8 6.94687 7.84333 7.32943 7.53 7.64766C7.21667 7.96589 6.84 8.125 6.4 8.125ZM1.6 3.25C1.16 3.25 0.783333 3.09089 0.47 2.77266C0.156667 2.45443 0 2.07187 0 1.625C0 1.17812 0.156667 0.795573 0.47 0.477344C0.783333 0.159115 1.16 0 1.6 0C2.04 0 2.41667 0.159115 2.73 0.477344C3.04333 0.795573 3.2 1.17812 3.2 1.625C3.2 2.07187 3.04333 2.45443 2.73 2.77266C2.41667 3.09089 2.04 3.25 1.6 3.25ZM6.4 3.25C5.96 3.25 5.58333 3.09089 5.27 2.77266C4.95667 2.45443 4.8 2.07187 4.8 1.625C4.8 1.17812 4.95667 0.795573 5.27 0.477344C5.58333 0.159115 5.96 0 6.4 0C6.84 0 7.21667 0.159115 7.53 0.477344C7.84333 0.795573 8 1.17812 8 1.625C8 2.07187 7.84333 2.45443 7.53 2.77266C7.21667 3.09089 6.84 3.25 6.4 3.25Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n\nDragHandleIcon.displayName = \"DragHandleIcon\";\n","import type { FC } from \"react\";\n\nimport { IconProps } from \"@/components/Icons/types\";\n\nexport const SpinnerIcon: FC<IconProps> = ({ className, ...props }) => (\n <svg\n className={className}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n {...props}\n >\n <circle\n className=\"opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n);\n\nSpinnerIcon.displayName = \"SpinnerIcon\";\n","export enum Align {\n Baseline = \"baseline\",\n Center = \"center\",\n End = \"end\",\n Start = \"start\",\n}\n","export enum Anchor {\n TopLeft = \"top-left\",\n Top = \"top\",\n TopRight = \"top-right\",\n Right = \"right\",\n BottomRight = \"bottom-right\",\n Bottom = \"bottom\",\n BottomLeft = \"bottom-left\",\n Left = \"left\",\n}\n\nexport default Anchor;\n","export enum ElementState {\n Active = \"data-active\",\n AutoFocus = \"data-autofocus\",\n Checked = \"data-checked\",\n Disabled = \"disabled\",\n Dragging = \"data-dragging\",\n Focus = \"data-focus\",\n Hover = \"hover\",\n None = \"none\",\n Open = \"data-open\",\n Selected = \"data-selected\",\n}\n\nexport const withElementState = (\n cssClass: string,\n state: ElementState = ElementState.None\n): string => {\n if (state === ElementState.None) {\n return cssClass;\n }\n\n return `${state}:${cssClass}`;\n};\n","import { ElementState, withElementState } from \"@/types/element\";\n\nexport enum ActionColor {\n PrimaryDefault = \"action-primary-primary\",\n PrimaryHover = \"action-primary-secondary\",\n PrimaryFocus = \"action-primary-tertiary\",\n PrimaryText = \"action-primary-text\",\n SecondaryDefault = \"action-secondary-primary\",\n SecondaryHover = \"action-secondary-secondary\",\n SecondaryFocus = \"action-secondary-tertiary\",\n SecondaryText = \"action-secondary-text\",\n SuccessDefault = \"action-success-primary\",\n SuccessHover = \"action-success-secondary\",\n SuccessFocus = \"action-success-tertiary\",\n SuccessText = \"action-success-text\",\n DangerDefault = \"action-danger-primary\",\n DangerHover = \"action-danger-secondary\",\n DangerFocus = \"action-danger-tertiary\",\n DangerText = \"action-danger-text\",\n IconDefault = \"action-icon-default\",\n}\n\nexport enum BackgroundColor {\n Transparent = \"bg-transparent\",\n Background = \"bg-background\",\n Card1 = \"bg-card-1\",\n Card2 = \"bg-card-2\",\n CardElevated = \"bg-card-elevated\",\n Muted = \"bg-muted\",\n Popover = \"bg-popover\",\n Selected = \"bg-selected\",\n Secondary = \"bg-secondary\",\n}\n\nexport enum BorderColor {\n Default = \"border-default\",\n Strong = \"border-strong\",\n Hover = \"border-hover\",\n Focus = \"border-focus\",\n Subtle = \"border-subtle\",\n Active = \"border-active\",\n Error = \"border-error\",\n Success = \"border-success\",\n Warning = \"border-warning\",\n Disabled = \"border-disabled\",\n CardElevated = \"bg-card-elevated\",\n}\n\nexport enum BrandColor {\n Primary = \"brand-primary\",\n Accent = \"brand-accent\",\n}\n\nexport enum IconColor {\n Default = \"icon-default\",\n Subtle = \"icon-subtle\",\n Emphasis = \"icon-emphasis\",\n Muted = \"icon-muted\",\n Disabled = \"icon-disabled\",\n Decorative = \"icon-decorative\",\n Brand = \"icon-brand\",\n BrandAccent = \"icon-brand-accent\",\n Success = \"icon-success\",\n Destructive = \"icon-destructive\",\n Warning = \"icon-warning\",\n Info = \"icon-info\",\n}\n\nexport enum SemanticColor {\n Success = \"semantic-success\",\n Destructive = \"semantic-destructive\",\n Info = \"semantic-info\",\n Warning = \"semantic-warning\",\n}\n\nexport enum StatusColor {\n Approved = \"status-approved\",\n Review = \"status-review\",\n Progress = \"status-progress\",\n Default = \"status-default\",\n Failed = \"status-failed\",\n}\n\nexport enum TextColor {\n Fg = \"text-fg\",\n Primary = \"text-primary\",\n Secondary = \"text-secondary\",\n Tertiary = \"text-tertiary\",\n Muted = \"text-muted\",\n Placeholder = \"text-placeholder\",\n Success = \"text-success\",\n Destructive = \"text-destructive\",\n Warning = \"text-warning\",\n Info = \"text-info\",\n}\n\nexport type Color =\n | ActionColor\n | BackgroundColor\n | BrandColor\n | IconColor\n | SemanticColor\n | StatusColor\n | TextColor;\n\nconst textColorMap: Record<Color, string> = {\n [ActionColor.IconDefault]: \"text-content-text-secondary\",\n [ActionColor.PrimaryDefault]: \"text-action-primary-primary\",\n [ActionColor.PrimaryHover]: \"text-action-primary-secondary\",\n [ActionColor.PrimaryFocus]: \"text-action-primary-tertiary\",\n [ActionColor.PrimaryText]: \"text-action-primary-text\",\n [ActionColor.SecondaryDefault]: \"text-action-secondary-primary\",\n [ActionColor.SecondaryHover]: \"text-action-secondary-secondary\",\n [ActionColor.SecondaryFocus]: \"text-action-secondary-tertiary\",\n [ActionColor.SecondaryText]: \"text-action-secondary-text\",\n [ActionColor.SuccessDefault]: \"text-action-success-primary\",\n [ActionColor.SuccessHover]: \"text-action-success-secondary\",\n [ActionColor.SuccessFocus]: \"text-action-success-tertiary\",\n [ActionColor.SuccessText]: \"text-action-success-text\",\n [ActionColor.DangerDefault]: \"text-action-danger-primary\",\n [ActionColor.DangerHover]: \"text-action-danger-secondary\",\n [ActionColor.DangerFocus]: \"text-action-danger-tertiary\",\n [ActionColor.DangerText]: \"text-action-danger-text\",\n\n [BackgroundColor.Background]: \"text-content-bg-background\",\n [BackgroundColor.Card1]: \"text-content-bg-card-1\",\n [BackgroundColor.Card2]: \"text-content-bg-card-2\",\n [BackgroundColor.CardElevated]: \"text-content-bg-card-elevated\",\n [BackgroundColor.Muted]: \"text-content-bg-muted\",\n [BackgroundColor.Popover]: \"text-content-bg-popover\",\n [BackgroundColor.Secondary]: \"text-content-bg-secondary\",\n [BackgroundColor.Selected]: \"text-content-bg-selected\",\n [BackgroundColor.Transparent]: \"text-transparent\",\n\n [BrandColor.Accent]: \"text-brand-accent\",\n [BrandColor.Primary]: \"text-brand-primary\",\n\n [IconColor.Brand]: \"text-content-icon-brand\",\n [IconColor.BrandAccent]: \"text-content-icon-brand-accent\",\n [IconColor.Decorative]: \"text-content-icon-decorative\",\n [IconColor.Default]: \"text-content-icon-default\",\n [IconColor.Destructive]: \"text-content-icon-destructive\",\n [IconColor.Disabled]: \"text-content-icon-disabled\",\n [IconColor.Emphasis]: \"text-content-icon-emphasis\",\n [IconColor.Info]: \"text-content-icon-info\",\n [IconColor.Muted]: \"text-content-icon-muted\",\n [IconColor.Subtle]: \"text-content-icon-subtle\",\n [IconColor.Success]: \"text-content-icon-success\",\n [IconColor.Warning]: \"text-content-icon-warning\",\n\n [SemanticColor.Destructive]: \"text-semantic-destructive\",\n [SemanticColor.Info]: \"text-semantic-info\",\n [SemanticColor.Success]: \"text-semantic-success\",\n [SemanticColor.Warning]: \"text-semantic-warning\",\n\n [StatusColor.Approved]: \"text-content-status-approved\",\n [StatusColor.Default]: \"text-content-status-default\",\n [StatusColor.Failed]: \"text-content-status-failed\",\n [StatusColor.Progress]: \"text-content-status-progress\",\n [StatusColor.Review]: \"text-content-status-review\",\n\n [TextColor.Destructive]: \"text-content-text-destructive\",\n [TextColor.Fg]: \"text-content-text-fg\",\n [TextColor.Info]: \"text-content-text-info\",\n [TextColor.Muted]: \"text-content-text-muted\",\n [TextColor.Placeholder]: \"text-content-text-placeholder\",\n [TextColor.Primary]: \"text-content-text-primary\",\n [TextColor.Secondary]: \"text-content-text-secondary\",\n [TextColor.Success]: \"text-content-text-success\",\n [TextColor.Tertiary]: \"text-content-text-tertiary\",\n [TextColor.Warning]: \"text-content-text-warning\",\n};\n\nconst backgroundColorMap: Record<Color, string> = {\n [BackgroundColor.Transparent]: \"bg-transparent\",\n [ActionColor.IconDefault]: \"bg-transparent\",\n [ActionColor.PrimaryDefault]: \"bg-action-primary-primary\",\n [ActionColor.PrimaryHover]: \"bg-action-primary-secondary\",\n [ActionColor.PrimaryFocus]: \"bg-action-primary-tertiary\",\n [ActionColor.PrimaryText]: \"bg-action-primary-text\",\n [ActionColor.SecondaryDefault]: \"bg-action-secondary-primary\",\n [ActionColor.SecondaryHover]: \"bg-action-secondary-secondary\",\n [ActionColor.SecondaryFocus]: \"bg-action-secondary-tertiary\",\n [ActionColor.SecondaryText]: \"bg-action-secondary-text\",\n [ActionColor.SuccessDefault]: \"bg-action-success-primary\",\n [ActionColor.SuccessHover]: \"bg-action-success-secondary\",\n [ActionColor.SuccessFocus]: \"bg-action-success-tertiary\",\n [ActionColor.SuccessText]: \"bg-action-success-text\",\n [ActionColor.DangerDefault]: \"bg-action-danger-primary\",\n [ActionColor.DangerHover]: \"bg-action-danger-secondary\",\n [ActionColor.DangerFocus]: \"bg-action-danger-tertiary\",\n [ActionColor.DangerText]: \"bg-action-danger-text\",\n\n [BackgroundColor.Background]: \"bg-content-bg-background\",\n [BackgroundColor.Card1]: \"bg-content-bg-card-1\",\n [BackgroundColor.Card2]: \"bg-content-bg-card-2\",\n [BackgroundColor.CardElevated]: \"bg-content-bg-card-elevated\",\n [BackgroundColor.Muted]: \"bg-content-bg-muted\",\n [BackgroundColor.Popover]: \"bg-content-bg-popover\",\n [BackgroundColor.Secondary]: \"bg-content-bg-secondary\",\n [BackgroundColor.Selected]: \"bg-content-bg-selected\",\n\n [BrandColor.Accent]: \"bg-brand-accent\",\n [BrandColor.Primary]: \"bg-brand-primary\",\n\n [IconColor.Brand]: \"bg-content-icon-brand\",\n [IconColor.BrandAccent]: \"bg-content-icon-brand-accent\",\n [IconColor.Decorative]: \"bg-content-icon-decorative\",\n [IconColor.Default]: \"bg-content-icon-default\",\n [IconColor.Destructive]: \"bg-content-icon-destructive\",\n [IconColor.Disabled]: \"bg-content-icon-disabled\",\n [IconColor.Emphasis]: \"bg-content-icon-emphasis\",\n [IconColor.Info]: \"bg-content-icon-info\",\n [IconColor.Muted]: \"bg-content-icon-muted\",\n [IconColor.Subtle]: \"bg-content-icon-subtle\",\n [IconColor.Success]: \"bg-content-icon-success\",\n [IconColor.Warning]: \"bg-content-icon-warning\",\n\n [SemanticColor.Destructive]: \"bg-semantic-destructive\",\n [SemanticColor.Info]: \"bg-semantic-info\",\n [SemanticColor.Success]: \"bg-semantic-success\",\n [SemanticColor.Warning]: \"bg-semantic-warning\",\n\n [StatusColor.Approved]: \"bg-content-status-approved\",\n [StatusColor.Default]: \"bg-content-status-default\",\n [StatusColor.Failed]: \"bg-content-status-failed\",\n [StatusColor.Progress]: \"bg-content-status-progress\",\n [StatusColor.Review]: \"bg-content-status-review\",\n\n [TextColor.Destructive]: \"bg-content-text-destructive\",\n [TextColor.Fg]: \"bg-content-text-fg\",\n [TextColor.Info]: \"bg-content-text-info\",\n [TextColor.Muted]: \"bg-content-text-muted\",\n [TextColor.Placeholder]: \"bg-content-text-placeholder\",\n [TextColor.Primary]: \"bg-content-text-primary\",\n [TextColor.Secondary]: \"bg-content-text-secondary\",\n [TextColor.Success]: \"bg-content-text-success\",\n [TextColor.Tertiary]: \"bg-content-text-tertiary\",\n [TextColor.Warning]: \"bg-content-text-warning\",\n};\n\nconst borderColorMap: Record<BorderColor, string> = {\n [BorderColor.CardElevated]: \"border-content-bg-card-elevated\",\n [BorderColor.Active]: \"border-content-border-active\",\n [BorderColor.Default]: \"border-content-border-default\",\n [BorderColor.Disabled]: \"border-content-border-disabled\",\n [BorderColor.Error]: \"border-content-border-error\",\n [BorderColor.Focus]: \"border-content-border-focus\",\n [BorderColor.Hover]: \"border-content-border-hover\",\n [BorderColor.Strong]: \"border-content-border-strong\",\n [BorderColor.Subtle]: \"border-content-border-subtle\",\n [BorderColor.Success]: \"border-content-border-success\",\n [BorderColor.Warning]: \"border-content-border-warning\",\n};\n\nexport const bgColorClass = (\n color: Color,\n elementState: ElementState = ElementState.None\n): string => {\n if (elementState === ElementState.None) {\n return backgroundColorMap[color];\n }\n\n return withElementState(`bg-[var(${getColorCssVar(color)})]`, elementState);\n};\n\nexport const getColorCssVar = (color: Color | BorderColor): string => {\n if (\n isEnumValue(color, BrandColor) ||\n isEnumValue(color, SemanticColor) ||\n isEnumValue(color, ActionColor)\n ) {\n return `--color-${color}`;\n }\n\n return `--color-content-${color}`;\n};\n\nconst isEnumValue = <T extends Record<string, string>>(\n value: unknown,\n enumType: T\n): value is T[keyof T] => {\n return Object.values(enumType).includes(value as string);\n};\n\nexport const borderColorClass = (\n color: BorderColor,\n elementState: ElementState = ElementState.None\n): string => {\n if (elementState === ElementState.None) {\n return borderColorMap[color];\n }\n\n return withElementState(\n `border-[var(${getColorCssVar(color)})]`,\n elementState\n );\n};\n\nexport const textColorClass = (\n color: Color,\n elementState: ElementState = ElementState.None\n): string => {\n if (elementState === ElementState.None) {\n return textColorMap[color];\n }\n\n return withElementState(`text-[var(${getColorCssVar(color)})]`, elementState);\n};\n","/**\n * Named z-index values for stacking context.\n * Use when a component needs to control its layering relative to modals, dropdowns, etc.\n */\nexport enum ZIndex {\n /** No explicit stacking; uses document flow (z-index: auto). */\n Default = \"default\",\n /** Low stacking (e.g. dropdowns in page context). */\n Low = \"low\",\n /** Medium stacking (e.g. popovers, tooltips). */\n Medium = \"medium\",\n /** High stacking (e.g. dropdowns above other overlays). */\n High = \"high\",\n /** Above modal; for portaled content that must appear over modals. */\n AboveModal = \"above-modal\",\n}\n\n/**\n * Numeric z-index values for each named value.\n * Used by theme CSS variables (e.g. --z-low, --z-above-modal).\n */\nexport const Z_INDEX_VALUES: Record<ZIndex, number | \"auto\"> = {\n [ZIndex.Default]: \"auto\",\n [ZIndex.Low]: 10,\n [ZIndex.Medium]: 100,\n [ZIndex.High]: 1000,\n [ZIndex.AboveModal]: 10010,\n};\n\n/**\n * Returns the Tailwind z-index class for the given z-index.\n * Default uses \"z-auto\"; others use the theme CSS variable (e.g. z-[var(--z-above-modal)]).\n */\nexport function zIndexStyles(zIndex: ZIndex): string {\n if (zIndex === ZIndex.Default) {\n return \"z-auto\";\n }\n const varName = `--z-${zIndex}`;\n return `z-[var(${varName})]`;\n}\n\nexport default ZIndex;\n","export enum HeadingLevel {\n H1 = \"h1\",\n H2 = \"h2\",\n H3 = \"h3\",\n H4 = \"h4\",\n}\n\nexport default HeadingLevel;\n","export enum IconName {\n Activity = \"Activity\",\n Add = \"Add\",\n AI = \"AI\",\n Annotate = \"Annotate\",\n ArrowDown = \"ArrowDown\",\n ArrowLeft = \"ArrowLeft\",\n ArrowRight = \"ArrowRight\",\n ArrowUp = \"ArrowUp\",\n ArrowUpRight = \"ArrowUpRight\",\n Blocks = \"Blocks\",\n Boxes = \"Boxes\",\n CalendarClock = \"CalendarClock\",\n CaretDown = \"CaretDown\",\n Check = \"Check\",\n Checkbox = \"Checkbox\",\n Checklist = \"Checklist\",\n ChevronBottom = \"ChevronBottom\",\n ChevronLeft = \"ChevronLeft\",\n ChevronRight = \"ChevronRight\",\n ChevronTop = \"ChevronTop\",\n Circle = \"Circle\",\n CircleUser = \"CircleUser\",\n Close = \"Close\",\n Cloud = \"Cloud\",\n CloudCog = \"CloudCog\",\n Code = \"Code\",\n Cog = \"Cog\",\n Contact = \"Contact\",\n ContentCopy = \"ContentCopy\",\n Database = \"Database\",\n DateRange = \"DateRange\",\n Draw = \"Draw\",\n Delete = \"Delete\",\n Detection = \"Detection\",\n Download = \"Download\",\n Drag = \"Drag\",\n Edit = \"Edit\",\n Embeddings = \"Embeddings\",\n Enter = \"Enter\",\n Error = \"Error\",\n ExitWorkspace = \"ExitWorkspace\",\n ExternalLink = \"ExternalLink\",\n FileClock = \"FileClock\",\n FineTune = \"FineTune\",\n Fingerprint = \"Fingerprint\",\n Fullscreen = \"Fullscreen\",\n GridView = \"GridView\",\n History = \"History\",\n IdCard = \"IdCard\",\n ImageSearch = \"ImageSearch\",\n Info = \"Info\",\n Insights = \"Insights\",\n Inspect = \"Inspect\",\n JSON = \"JSON\",\n Key = \"Key\",\n KeyRound = \"KeyRound\",\n KeySquare = \"KeySquare\",\n Label = \"Label\",\n Lock = \"Lock\",\n Logs = \"Logs\",\n Menu = \"Menu\",\n MoreHorizontal = \"MoreHorizontal\",\n MoreVertical = \"MoreVertical\",\n Move = \"Move\",\n NotebookPen = \"NotebookPen\",\n Notes = \"Notes\",\n Orchestrator = \"Orchestrator\",\n Pause = \"Pause\",\n Pencil = \"Pencil\",\n Pin = \"Pin\",\n Play = \"Play\",\n Polyline = \"Polyline\",\n Puzzle = \"Puzzle\",\n Radio = \"Radio\",\n Redo = \"Redo\",\n Refresh = \"Refresh\",\n Remove = \"Remove\",\n Review = \"Review\",\n Search = \"Search\",\n Server = \"Server\",\n Settings = \"Settings\",\n ShieldCheck = \"ShieldCheck\",\n Slider = \"Slider\",\n Sliders = \"Sliders\",\n Spinner = \"Spinner\",\n Tag = \"Tag\",\n Text = \"Text\",\n Toggle = \"Toggle\",\n Undo = \"Undo\",\n UnfoldMore = \"UnfoldMore\",\n Unlock = \"Unlock\",\n Unsupported = \"Unsupported\",\n Upload = \"Upload\",\n User = \"User\",\n Users = \"Users\",\n UsersRound = \"UsersRound\",\n VAL = \"VAL\",\n VolumeOff = \"VolumeOff\",\n VolumeUp = \"VolumeUp\",\n Warning = \"Warning\",\n Waypoints = \"Waypoints\",\n Workflow = \"Workflow\",\n Workspaces = \"Workspaces\",\n Zap = \"Zap\",\n}\n\nexport default IconName;\n","export enum Justify {\n Around = \"around\",\n Between = \"between\",\n Center = \"center\",\n End = \"end\",\n Evenly = \"evenly\",\n Start = \"start\",\n}\n","export enum Orientation {\n Row = \"row\",\n Column = \"col\",\n}\n\nexport default Orientation;\n","export enum Radius {\n Full = \"full\",\n Xl = \"xl\",\n Lg = \"lg\",\n Md = \"md\",\n Sm = \"sm\",\n Xs = \"xs\",\n None = \"none\",\n}\n\nexport default Radius;\n","export enum Shadow {\n None = \"none\",\n Xl = \"xl\",\n Lg = \"lg\",\n Md = \"md\",\n Sm = \"sm\",\n Xs = \"xs\",\n}\n\nexport default Shadow;\n","export enum Size {\n Xs = \"xs\",\n Sm = \"sm\",\n Md = \"md\",\n Lg = \"lg\",\n Xl = \"xl\",\n}\n\nexport default Size;\n","export enum Spacing {\n None = \"none\",\n Xs = \"xs\",\n Sm = \"sm\",\n Md = \"md\",\n Lg = \"lg\",\n Xl = \"xl\",\n}\n\nexport default Spacing;\n","export enum TextVariant {\n Xxs = \"xxs\",\n Xs = \"xs\",\n Sm = \"sm\",\n Md = \"md\",\n Lg = \"lg\",\n Xl = \"xl\",\n Xxl = \"xxl\",\n Label = \"label\",\n Caption = \"caption\",\n}\n\nexport default TextVariant;\n","/**\n * Transition type system for the VOODO design system.\n *\n * Three enums map to the three layers of CSS custom properties generated\n * from `src/theme/tokens/transitions.ts`:\n *\n * TransitionDuration → --transition-duration-{name}\n * TransitionEasing → --transition-easing-{name}\n * TransitionPreset → --transition-preset-{name}\n *\n * The helper functions return Tailwind arbitrary-value classes that\n * reference those variables, keeping component code declarative:\n *\n * @example\n * ```tsx\n * // Individual duration + easing\n * <div className={cn(\n * transitionDuration(TransitionDuration.Normal),\n * transitionEasing(TransitionEasing.Out),\n * \"transition-transform\"\n * )} />\n *\n * // Pre-composed preset\n * <div style={{ transition: transitionPresetValue(TransitionPreset.Panel) }} />\n * ```\n */\n\n/**\n * Semantic names for how long a transition takes.\n * Maps to `--transition-duration-{name}` CSS variables.\n */\nexport enum TransitionDuration {\n /** 0ms — truly immediate, no perceivable animation. */\n Instant = \"instant\",\n /** 100ms — micro-interactions: hover highlights, icon swaps. */\n Fast = \"fast\",\n /** 200ms — default for color, border, and opacity changes. */\n Normal = \"normal\",\n /** 300ms — panel reveals, tooltips, slightly heavier state changes. */\n Moderate = \"moderate\",\n /** 500ms — drawers, slide-in sheets. */\n Slow = \"slow\",\n /** 700ms — page-level or dramatic reveal transitions. */\n Deliberate = \"deliberate\",\n}\n\n/**\n * Timing-curve tokens that control how a transition accelerates.\n * Maps to `--transition-easing-{name}` CSS variables.\n */\nexport enum TransitionEasing {\n /** Constant speed. Suits progress bars and loaders. */\n Linear = \"linear\",\n /** Starts slow, accelerates. Best for elements *leaving* the screen. */\n In = \"in\",\n /** Starts fast, decelerates. Best for elements *arriving* on screen. */\n Out = \"out\",\n /** Slow start and end. Best for general UI state changes. */\n InOut = \"in-out\",\n /** Slight overshoot then settles. Adds energy to interactive elements. */\n Spring = \"spring\",\n /** Quick in, gradual out. Crisp, snappy feel for menus and overlays. */\n Sharp = \"sharp\",\n}\n\n/**\n * Pre-composed transition shorthands for common UI patterns.\n * Bakes in the right duration + easing so component authors pick semantics,\n * not numbers. Maps to `--transition-preset-{name}` CSS variables.\n */\nexport enum TransitionPreset {\n /** Background, text, border, fill, and stroke color changes. */\n Colors = \"colors\",\n /** Fade in / fade out. */\n Opacity = \"opacity\",\n /** Scale, translate, and rotate. */\n Transform = \"transform\",\n /** Box-shadow elevation changes. */\n Shadow = \"shadow\",\n /** Dropdown / context menu appear and disappear. */\n Menu = \"menu\",\n /** Drawers and slide-in sheets. */\n Panel = \"panel\",\n /** Modal backdrop fade. */\n Overlay = \"overlay\",\n /** General-purpose catch-all. */\n All = \"all\",\n}\n\n/**\n * Returns a Tailwind `duration-[var(...)]` class for the given duration token.\n *\n * @example\n * ```tsx\n * <div className={cn(\"transition-colors\", transitionDuration(TransitionDuration.Fast))} />\n * // → \"transition-colors duration-[var(--transition-duration-fast)]\"\n * ```\n */\nexport function transitionDuration(duration: TransitionDuration): string {\n return `duration-[var(--transition-duration-${duration})]`;\n}\n\n/**\n * Returns a Tailwind `ease-[var(...)]` class for the given easing token.\n *\n * @example\n * ```tsx\n * <div className={cn(\"transition-transform\", transitionEasing(TransitionEasing.Out))} />\n * // → \"transition-transform ease-[var(--transition-easing-out)]\"\n * ```\n */\nexport function transitionEasing(easing: TransitionEasing): string {\n return `ease-[var(--transition-easing-${easing})]`;\n}\n\n/**\n * Returns a Tailwind `transition-[var(...)]` class for the given preset token.\n * The preset encodes both the property list, duration, and easing in one token.\n *\n * @example\n * ```tsx\n * <div className={transitionPreset(TransitionPreset.Colors)} />\n * // → \"transition-[var(--transition-preset-colors)]\"\n * ```\n */\nexport function transitionPreset(preset: TransitionPreset): string {\n return `transition-[var(--transition-preset-${preset})]`;\n}\n\n/**\n * Returns the raw CSS `var(--transition-preset-{name})` string for use in\n * `style` props or inline CSS where a Tailwind class is not appropriate.\n *\n * @example\n * ```tsx\n * <div style={{ transition: transitionPresetValue(TransitionPreset.Panel) }} />\n * ```\n */\nexport function transitionPresetValue(preset: TransitionPreset): string {\n return `var(--transition-preset-${preset})`;\n}\n","export enum Variant {\n Primary = \"primary\",\n Secondary = \"secondary\",\n Success = \"success\",\n Danger = \"danger\",\n Icon = \"icon\",\n Borderless = \"borderless\",\n}\n\nexport default Variant;\n","import clsx from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Helper function which aggregates and deduplicates class names.\n *\n * This method supports the same syntax as {@link clsx}; each\n * argument can be a single class or a space-delimited list of classes.\n *\n * Deduplication is handled left-to-right, so later entries will always\n * take precedence over earlier entries. TL;DR - put your overrides at the end.\n *\n * @example\n * ```typescript jsx\n * <Button className={cn(\"border-1 rounded-sm\", \"border-0 bg-red\")}>\n * Click me\n * </Button>\n * // resolves to className=\"rounded-sm border-0 bg-red\"\n * ```\n *\n * @param classes Classes to apply\n */\nexport const cn = (\n ...classes: (string | boolean | null | undefined)[]\n): string => {\n return twMerge(clsx(...classes));\n};\n","import type { FC, HTMLAttributes } from \"react\";\n\nimport { SpinnerIcon } from \"@/components/Icons/Spinner\";\nimport { Size, TextColor, textColorClass } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport interface SpinnerProps extends HTMLAttributes<HTMLDivElement> {\n size?: Size;\n}\n\nconst sizeStyles: Record<Size, string> = {\n [Size.Xs]: \"size-3\",\n [Size.Sm]: \"size-4\",\n [Size.Md]: \"size-5\",\n [Size.Lg]: \"size-6\",\n [Size.Xl]: \"size-7\",\n};\n\n/**\n * An animated spinner component.\n *\n * Note that this component is also available via the {@link Icon} component with {@link IconName.Spinner}.\n *\n * @example\n * ```tsx\n * <Spinner size={Size.Md} />\n * ```\n *\n * @param className `class` overrides to apply to the component.\n * @param size Size of the component. See {@link Size}.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const Spinner: FC<SpinnerProps> = ({\n className,\n size = Size.Md,\n ...props\n}) => (\n <div\n className={cn(\n sizeStyles[size],\n textColorClass(TextColor.Primary),\n className\n )}\n {...props}\n >\n <SpinnerIcon className=\"animate-spin\" />\n </div>\n);\n\nSpinner.displayName = \"Spinner\";\n","import * as React from \"react\";\nconst SvgAi = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M12.613 10.0501L10.685 13.1439C10.5206 13.398 10.2927 13.5026 10.0012 13.4578C9.70976 13.413 9.52668 13.2411 9.45195 12.9422L8.82421 10.4312L2.70384 16.5516C2.53943 16.716 2.33393 16.802 2.08732 16.8094C1.84071 16.8169 1.62773 16.731 1.44838 16.5516C1.28397 16.3872 1.20177 16.178 1.20177 15.9239C1.20177 15.6698 1.28397 15.4606 1.44838 15.2962L7.56875 9.15337L5.05783 8.52564C4.75891 8.45091 4.58703 8.26782 4.54219 7.97637C4.49736 7.68492 4.60198 7.457 4.85606 7.29259L7.94988 5.38698L7.68085 1.73269C7.65096 1.43377 7.77052 1.21706 8.03955 1.08254C8.30858 0.948029 8.55519 0.977921 8.77938 1.17222L11.5817 3.52621L14.967 2.15865C15.251 2.03908 15.4976 2.08392 15.7068 2.29317C15.9161 2.50241 15.9609 2.74902 15.8413 3.03299L14.4738 6.41825L16.8278 9.1982C17.0221 9.42239 17.052 9.669 16.9175 9.93803C16.7829 10.2071 16.5662 10.3266 16.2673 10.2967L12.613 10.0501ZM1.13451 4.04184C1.04484 3.95217 1 3.84755 1 3.72798C1 3.60841 1.04484 3.50379 1.13451 3.41411L2.3003 2.24833C2.38998 2.15865 2.4946 2.11381 2.61416 2.11381C2.73373 2.11381 2.83835 2.15865 2.92803 2.24833L4.09382 3.41411C4.18349 3.50379 4.22833 3.60841 4.22833 3.72798C4.22833 3.84755 4.18349 3.95217 4.09382 4.04184L2.92803 5.20763C2.83835 5.29731 2.73373 5.34214 2.61416 5.34214C2.4946 5.34214 2.38998 5.29731 2.3003 5.20763L1.13451 4.04184ZM10.5729 9.93803L11.649 8.16693L13.734 8.32386L12.3888 6.73212L13.1735 4.80409L11.2455 5.58875L9.65372 4.26603L9.81065 6.32858L8.03955 7.42711L10.0573 7.92032L10.5729 9.93803ZM13.9582 16.8655L12.7924 15.6997C12.7027 15.61 12.6579 15.5054 12.6579 15.3858C12.6579 15.2663 12.7027 15.1616 12.7924 15.072L13.9582 13.9062C14.0478 13.8165 14.1525 13.7717 14.272 13.7717C14.3916 13.7717 14.4962 13.8165 14.5859 13.9062L15.7517 15.072C15.8413 15.1616 15.8862 15.2663 15.8862 15.3858C15.8862 15.5054 15.8413 15.61 15.7517 15.6997L14.5859 16.8655C14.4962 16.9552 14.3916 17 14.272 17C14.1525 17 14.0478 16.9552 13.9582 16.8655Z\", fill: \"currentColor\" }));\nexport default SvgAi;\n","import * as React from \"react\";\nconst SvgActivity = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2\" }));\nexport default SvgActivity;\n","import * as React from \"react\";\nconst SvgAdd = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M7.92857 10.0714H2.57143C2.26786 10.0714 2.01339 9.96875 1.80804 9.76339C1.60268 9.55804 1.5 9.30357 1.5 9C1.5 8.69643 1.60268 8.44196 1.80804 8.23661C2.01339 8.03125 2.26786 7.92857 2.57143 7.92857H7.92857V2.57143C7.92857 2.26786 8.03125 2.01339 8.23661 1.80804C8.44196 1.60268 8.69643 1.5 9 1.5C9.30357 1.5 9.55804 1.60268 9.76339 1.80804C9.96875 2.01339 10.0714 2.26786 10.0714 2.57143V7.92857H15.4286C15.7321 7.92857 15.9866 8.03125 16.192 8.23661C16.3973 8.44196 16.5 8.69643 16.5 9C16.5 9.30357 16.3973 9.55804 16.192 9.76339C15.9866 9.96875 15.7321 10.0714 15.4286 10.0714H10.0714V15.4286C10.0714 15.7321 9.96875 15.9866 9.76339 16.192C9.55804 16.3973 9.30357 16.5 9 16.5C8.69643 16.5 8.44196 16.3973 8.23661 16.192C8.03125 15.9866 7.92857 15.7321 7.92857 15.4286V10.0714Z\", fill: \"currentColor\" }));\nexport default SvgAdd;\n","import * as React from \"react\";\nconst SvgAnnotate = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M11.7807 15.9698C11.6401 16.1104 11.4494 16.1894 11.2505 16.1894C11.0516 16.1894 10.8609 16.1104 10.7202 15.9698L9.5307 14.7803C9.3901 14.6396 9.3111 14.4489 9.3111 14.25C9.3111 14.0512 9.3901 13.8604 9.5307 13.7198L13.7202 9.5303C13.8609 9.3897 14.0516 9.3107 14.2505 9.3107C14.4493 9.3107 14.6401 9.3897 14.7807 9.5303L15.9702 10.7198C16.1108 10.8604 16.1898 11.0512 16.1898 11.25C16.1898 11.4489 16.1108 11.6396 15.9702 11.7803L11.7807 15.9698Z\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M13.4994 9.75L12.4682 4.5945C12.4401 4.4542 12.3725 4.3249 12.2734 4.2218C12.1743 4.1187 12.0477 4.046 11.9087 4.0125L2.4257 1.521C2.3007 1.4908 2.1702 1.4932 2.0464 1.528C1.9227 1.5627 1.81 1.6287 1.7191 1.7196C1.6282 1.8105 1.5622 1.9232 1.5274 2.047C1.4926 2.1707 1.4902 2.3013 1.5204 2.4262L4.0119 11.9092C4.0455 12.0483 4.1181 12.1748 4.2212 12.274C4.3243 12.3731 4.4537 12.4407 4.5939 12.4687L9.7494 13.5\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M1.7244 1.725L7.1889 7.1895\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M8.25 9.75C9.0784 9.75 9.75 9.0784 9.75 8.25C9.75 7.4216 9.0784 6.75 8.25 6.75C7.4216 6.75 6.75 7.4216 6.75 8.25C6.75 9.0784 7.4216 9.75 8.25 9.75Z\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }));\nexport default SvgAnnotate;\n","import * as React from \"react\";\nconst SvgArrowDown = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M7.74439 12.6825V2.26984C7.74439 1.91005 7.86472 1.60847 8.10538 1.36508C8.34604 1.12169 8.64425 1 9 1C9.35575 1 9.65396 1.12169 9.89462 1.36508C10.1353 1.60847 10.2556 1.91005 10.2556 2.26984V12.6825L13.8969 9C14.1271 8.7672 14.42 8.65079 14.7758 8.65079C15.1315 8.65079 15.4245 8.7672 15.6547 9C15.8849 9.2328 16 9.5291 16 9.88889C16 10.2487 15.8849 10.545 15.6547 10.7778L9.87892 16.619C9.6278 16.873 9.33483 17 9 17C8.66517 17 8.3722 16.873 8.12108 16.619L2.34529 10.7778C2.1151 10.545 2 10.2487 2 9.88889C2 9.5291 2.1151 9.2328 2.34529 9C2.57549 8.7672 2.86846 8.65079 3.22422 8.65079C3.57997 8.65079 3.87294 8.7672 4.10314 9L7.74439 12.6825Z\", fill: \"currentColor\" }));\nexport default SvgArrowDown;\n","import * as React from \"react\";\nconst SvgArrowLeft = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M5.31746 7.74439H15.7302C16.0899 7.74439 16.3915 7.86472 16.6349 8.10538C16.8783 8.34604 17 8.64425 17 9C17 9.35575 16.8783 9.65396 16.6349 9.89462C16.3915 10.1353 16.0899 10.2556 15.7302 10.2556H5.31746L9 13.8969C9.2328 14.1271 9.34921 14.42 9.34921 14.7758C9.34921 15.1315 9.2328 15.4245 9 15.6547C8.7672 15.8849 8.4709 16 8.11111 16C7.75132 16 7.45503 15.8849 7.22222 15.6547L1.38095 9.87892C1.12698 9.6278 1 9.33483 1 9C1 8.66517 1.12698 8.3722 1.38095 8.12108L7.22222 2.34529C7.45503 2.1151 7.75132 2 8.11111 2C8.4709 2 8.7672 2.1151 9 2.34529C9.2328 2.57549 9.34921 2.86846 9.34921 3.22422C9.34921 3.57997 9.2328 3.87294 9 4.10314L5.31746 7.74439Z\", fill: \"currentColor\" }));\nexport default SvgArrowLeft;\n","import * as React from \"react\";\nconst SvgArrowRight = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M12.6825 10.2556H2.26984C1.91005 10.2556 1.60847 10.1353 1.36508 9.89462C1.12169 9.65396 1 9.35575 1 9C1 8.64425 1.12169 8.34604 1.36508 8.10538C1.60847 7.86472 1.91005 7.74439 2.26984 7.74439H12.6825L9 4.10314C8.7672 3.87294 8.65079 3.57997 8.65079 3.22422C8.65079 2.86846 8.7672 2.57549 9 2.34529C9.2328 2.1151 9.5291 2 9.88889 2C10.2487 2 10.545 2.1151 10.7778 2.34529L16.619 8.12108C16.873 8.3722 17 8.66517 17 9C17 9.33483 16.873 9.6278 16.619 9.87892L10.7778 15.6547C10.545 15.8849 10.2487 16 9.88889 16C9.5291 16 9.2328 15.8849 9 15.6547C8.7672 15.4245 8.65079 15.1315 8.65079 14.7758C8.65079 14.42 8.7672 14.1271 9 13.8969L12.6825 10.2556Z\", fill: \"currentColor\" }));\nexport default SvgArrowRight;\n","import * as React from \"react\";\nconst SvgArrowUp = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M10.2556 5.31746V15.7302C10.2556 16.0899 10.1353 16.3915 9.89462 16.6349C9.65396 16.8783 9.35575 17 9 17C8.64425 17 8.34604 16.8783 8.10538 16.6349C7.86472 16.3915 7.74439 16.0899 7.74439 15.7302V5.31746L4.10314 9C3.87294 9.2328 3.57997 9.34921 3.22422 9.34921C2.86846 9.34921 2.57549 9.2328 2.34529 9C2.1151 8.7672 2 8.4709 2 8.11111C2 7.75132 2.1151 7.45503 2.34529 7.22222L8.12108 1.38095C8.3722 1.12698 8.66517 1 9 1C9.33483 1 9.6278 1.12698 9.87892 1.38095L15.6547 7.22222C15.8849 7.45503 16 7.75132 16 8.11111C16 8.4709 15.8849 8.7672 15.6547 9C15.4245 9.2328 15.1315 9.34921 14.7758 9.34921C14.42 9.34921 14.1271 9.2328 13.8969 9L10.2556 5.31746Z\", fill: \"currentColor\" }));\nexport default SvgArrowUp;\n","import * as React from \"react\";\nconst SvgArrowUpRight = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"-1.127 -1.127 11.266 11.266\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M8.1123 0C8.22001 5.72273e-06 8.32319 0.0189777 8.41895 0.0537109C8.43161 0.0582843 8.44455 0.062224 8.45703 0.0673828C8.46672 0.0714021 8.47584 0.0767102 8.48535 0.0810547C8.50372 0.0894105 8.52215 0.0977682 8.54004 0.107422C8.57602 0.126889 8.60976 0.149815 8.64258 0.173828C8.67951 0.200856 8.71566 0.230309 8.74902 0.263672C8.80075 0.315433 8.84339 0.37276 8.87988 0.432617C8.91939 0.497328 8.95233 0.566534 8.97461 0.640625C8.99995 0.72522 9.01273 0.8128 9.0127 0.900391V8.1123C9.01246 8.60915 8.60919 9.01267 8.1123 9.0127C7.6154 9.01269 7.21215 8.60916 7.21191 8.1123V3.07422L1.53711 8.74902C1.18569 9.1002 0.615087 9.10021 0.263672 8.74902C-0.0877261 8.39763 -0.0875785 7.82708 0.263672 7.47559L5.93848 1.80078H0.900391C0.403467 1.80078 0.000206874 1.39727 0 0.900391C0 0.403338 0.40334 6.19339e-06 0.900391 0H8.1123Z\", fill: \"currentColor\" }));\nexport default SvgArrowUpRight;\n","import * as React from \"react\";\nconst SvgBlocks = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M10 22V7a1 1 0 0 0-1-1H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-5a1 1 0 0 0-1-1H2\" }), /* @__PURE__ */ React.createElement(\"rect\", { x: 14, y: 2, width: 8, height: 8, rx: 1 }));\nexport default SvgBlocks;\n","import * as React from \"react\";\nconst SvgBoxes = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m7 16.5-4.74-2.85\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m7 16.5 5-3\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M7 16.5v5.17\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m17 16.5-5-3\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m17 16.5 4.74-2.85\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M17 16.5v5.17\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M12 8 7.26 5.15\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m12 8 4.74-2.85\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M12 13.5V8\" }));\nexport default SvgBoxes;\n","import * as React from \"react\";\nconst SvgCalendarClock = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M16 14v2.2l1.6 1\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M16 2v4\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M3 10h5\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M8 2v4\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 16, cy: 16, r: 6 }));\nexport default SvgCalendarClock;\n","import * as React from \"react\";\nconst SvgCaretDown = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M8.32849 11.718L3.69186 7.08135C3.62791 7.0174 3.57994 6.94811 3.54797 6.8735C3.51599 6.79889 3.5 6.71895 3.5 6.63368C3.5 6.46313 3.55862 6.31391 3.67587 6.186C3.79312 6.05809 3.94767 5.99414 4.13953 5.99414H13.8605C14.0523 5.99414 14.2069 6.05809 14.3241 6.186C14.4414 6.31391 14.5 6.46313 14.5 6.63368C14.5 6.67631 14.436 6.82554 14.3081 7.08135L9.67151 11.718C9.56492 11.8246 9.45833 11.8992 9.35174 11.9418C9.24516 11.9845 9.12791 12.0058 9 12.0058C8.87209 12.0058 8.75485 11.9845 8.64826 11.9418C8.54167 11.8992 8.43508 11.8246 8.32849 11.718Z\", fill: \"currentColor\" }));\nexport default SvgCaretDown;\n","import * as React from \"react\";\nconst SvgCheck = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M6.48879 11.4213L13.8969 3.85277C14.1271 3.61759 14.42 3.5 14.7758 3.5C15.1315 3.5 15.4245 3.61759 15.6547 3.85277C15.8849 4.08795 16 4.38727 16 4.75073C16 5.11419 15.8849 5.41351 15.6547 5.64869L7.36771 14.1152C7.11659 14.3717 6.82362 14.5 6.48879 14.5C6.15396 14.5 5.86099 14.3717 5.60987 14.1152L2.34529 10.7799C2.1151 10.5447 2 10.2454 2 9.88192C2 9.51846 2.1151 9.21914 2.34529 8.98396C2.57549 8.74879 2.86846 8.6312 3.22422 8.6312C3.57997 8.6312 3.87294 8.74879 4.10314 8.98396L6.48879 11.4213Z\", fill: \"currentColor\" }));\nexport default SvgCheck;\n","import * as React from \"react\";\nconst SvgCheckbox = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M7.75556 10.2444L5.84444 8.33333C5.68148 8.17037 5.47407 8.08889 5.22222 8.08889C4.97037 8.08889 4.76296 8.17037 4.6 8.33333C4.43704 8.4963 4.35556 8.7037 4.35556 8.95556C4.35556 9.20741 4.43704 9.41481 4.6 9.57778L7.13333 12.1111C7.31111 12.2889 7.51852 12.3778 7.75556 12.3778C7.99259 12.3778 8.2 12.2889 8.37778 12.1111L13.4 7.08889C13.563 6.92593 13.6444 6.71852 13.6444 6.46667C13.6444 6.21482 13.563 6.00741 13.4 5.84444C13.237 5.68148 13.0296 5.6 12.7778 5.6C12.5259 5.6 12.3185 5.68148 12.1556 5.84444L7.75556 10.2444ZM2.77778 17C2.28889 17 1.87037 16.8259 1.52222 16.4778C1.17407 16.1296 1 15.7111 1 15.2222V2.77778C1 2.28889 1.17407 1.87037 1.52222 1.52222C1.87037 1.17407 2.28889 1 2.77778 1H15.2222C15.7111 1 16.1296 1.17407 16.4778 1.52222C16.8259 1.87037 17 2.28889 17 2.77778V15.2222C17 15.7111 16.8259 16.1296 16.4778 16.4778C16.1296 16.8259 15.7111 17 15.2222 17H2.77778ZM2.77778 15.2222H15.2222V2.77778H2.77778V15.2222Z\", fill: \"currentColor\" }));\nexport default SvgCheckbox;\n","import * as React from \"react\";\nconst SvgChecklist = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M5.8 16.5C6.24 16.5 6.61667 16.3368 6.93 16.0104C7.24333 15.684 7.4 15.2917 7.4 14.8333V11.5C7.4 11.0417 7.24333 10.6493 6.93 10.3229C6.61667 9.99653 6.24 9.83333 5.8 9.83333H2.6C2.16 9.83333 1.78333 9.99653 1.47 10.3229C1.15667 10.6493 1 11.0417 1 11.5V14.8333C1 15.2917 1.15667 15.684 1.47 16.0104C1.78333 16.3368 2.16 16.5 2.6 16.5H5.8ZM5.8 14.8333H2.6V11.5H5.8V14.8333ZM16.2 14C16.4267 14 16.6167 13.9201 16.77 13.7604C16.9233 13.6007 17 13.4028 17 13.1667C17 12.9306 16.9233 12.7326 16.77 12.5729C16.6167 12.4132 16.4267 12.3333 16.2 12.3333H10.6C10.3733 12.3333 10.1833 12.4132 10.03 12.5729C9.87667 12.7326 9.8 12.9306 9.8 13.1667C9.8 13.4028 9.87667 13.6007 10.03 13.7604C10.1833 13.9201 10.3733 14 10.6 14H16.2ZM5.8 8.16667C6.24 8.16667 6.61667 8.00347 6.93 7.67708C7.24333 7.35069 7.4 6.95833 7.4 6.5V3.16667C7.4 2.70833 7.24333 2.31597 6.93 1.98958C6.61667 1.66319 6.24 1.5 5.8 1.5H2.6C2.16 1.5 1.78333 1.66319 1.47 1.98958C1.15667 2.31597 1 2.70833 1 3.16667V6.5C1 6.95833 1.15667 7.35069 1.47 7.67708C1.78333 8.00347 2.16 8.16667 2.6 8.16667H5.8ZM5.8 6.5H2.6V3.16667H5.8V6.5ZM16.2 5.66667C16.4267 5.66667 16.6167 5.58681 16.77 5.42708C16.9233 5.26736 17 5.06944 17 4.83333C17 4.59722 16.9233 4.39931 16.77 4.23958C16.6167 4.07986 16.4267 4 16.2 4H10.6C10.3733 4 10.1833 4.07986 10.03 4.23958C9.87667 4.39931 9.8 4.59722 9.8 4.83333C9.8 5.06944 9.87667 5.26736 10.03 5.42708C10.1833 5.58681 10.3733 5.66667 10.6 5.66667H16.2Z\", fill: \"currentColor\" }));\nexport default SvgChecklist;\n","import * as React from \"react\";\nconst SvgChevronBottom = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9 9.82443L12.4978 6.25191C12.6622 6.08397 12.8714 6 13.1256 6C13.3797 6 13.5889 6.08397 13.7534 6.25191C13.9178 6.41985 14 6.63359 14 6.89313C14 7.15267 13.9178 7.36641 13.7534 7.53435L9.6278 11.7481C9.53812 11.8397 9.44096 11.9046 9.33632 11.9427C9.23169 11.9809 9.11958 12 9 12C8.88042 12 8.76831 11.9809 8.66368 11.9427C8.55904 11.9046 8.46188 11.8397 8.3722 11.7481L4.24664 7.53435C4.08221 7.36641 4 7.15267 4 6.89313C4 6.63359 4.08221 6.41985 4.24664 6.25191C4.41106 6.08397 4.62033 6 4.87444 6C5.12855 6 5.33782 6.08397 5.50224 6.25191L9 9.82443Z\", fill: \"currentColor\" }));\nexport default SvgChevronBottom;\n","import * as React from \"react\";\nconst SvgChevronLeft = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M7.76336 9L13.1221 4.10314C13.374 3.87294 13.5 3.57997 13.5 3.22422C13.5 2.86846 13.374 2.57549 13.1221 2.34529C12.8702 2.1151 12.5496 2 12.1603 2C11.771 2 11.4504 2.1151 11.1985 2.34529L4.87786 8.12108C4.74046 8.24664 4.64313 8.38266 4.58588 8.52915C4.52863 8.67564 4.5 8.83259 4.5 9C4.5 9.16741 4.52863 9.32436 4.58588 9.47085C4.64313 9.61734 4.74046 9.75336 4.87786 9.87892L11.1985 15.6547C11.4504 15.8849 11.771 16 12.1603 16C12.5496 16 12.8702 15.8849 13.1221 15.6547C13.374 15.4245 13.5 15.1315 13.5 14.7758C13.5 14.42 13.374 14.1271 13.1221 13.8969L7.76336 9Z\", fill: \"currentColor\" }));\nexport default SvgChevronLeft;\n","import * as React from \"react\";\nconst SvgChevronRight = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M10.0992 9L5.33588 4.10314C5.11196 3.87294 5 3.57997 5 3.22422C5 2.86846 5.11196 2.57549 5.33588 2.34529C5.5598 2.1151 5.84478 2 6.19084 2C6.5369 2 6.82188 2.1151 7.0458 2.34529L12.6641 8.12108C12.7863 8.24664 12.8728 8.38266 12.9237 8.52915C12.9746 8.67564 13 8.83259 13 9C13 9.16741 12.9746 9.32436 12.9237 9.47085C12.8728 9.61734 12.7863 9.75336 12.6641 9.87892L7.0458 15.6547C6.82188 15.8849 6.5369 16 6.19084 16C5.84478 16 5.5598 15.8849 5.33588 15.6547C5.11196 15.4245 5 15.1315 5 14.7758C5 14.42 5.11196 14.1271 5.33588 13.8969L10.0992 9Z\", fill: \"currentColor\" }));\nexport default SvgChevronRight;\n","import * as React from \"react\";\nconst SvgChevronTop = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9 8.17557L12.4978 11.7481C12.6622 11.916 12.8714 12 13.1256 12C13.3797 12 13.5889 11.916 13.7534 11.7481C13.9178 11.5802 14 11.3664 14 11.1069C14 10.8473 13.9178 10.6336 13.7534 10.4656L9.6278 6.25191C9.53812 6.1603 9.44096 6.09542 9.33632 6.05725C9.23169 6.01908 9.11958 6 9 6C8.88042 6 8.76831 6.01908 8.66368 6.05725C8.55904 6.09542 8.46188 6.1603 8.3722 6.25191L4.24664 10.4656C4.08221 10.6336 4 10.8473 4 11.1069C4 11.3664 4.08221 11.5802 4.24664 11.7481C4.41106 11.916 4.62033 12 4.87444 12C5.12855 12 5.33782 11.916 5.50224 11.7481L9 8.17557Z\", fill: \"currentColor\" }));\nexport default SvgChevronTop;\n","import * as React from \"react\";\nconst SvgCircle = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", className: \"mr-1\", ...props }, /* @__PURE__ */ React.createElement(\"circle\", { cx: 9, cy: 9, r: 6, fill: \"currentColor\" }));\nexport default SvgCircle;\n","import * as React from \"react\";\nconst SvgCircleUser = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M17.925 20.056a6 6 0 0 0-11.851.001\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 12, cy: 11, r: 4 }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 12, cy: 12, r: 10 }));\nexport default SvgCircleUser;\n","import * as React from \"react\";\nconst SvgClose = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9 10.4905L3.78327 15.7072C3.58809 15.9024 3.33967 16 3.03802 16C2.73638 16 2.48796 15.9024 2.29278 15.7072C2.09759 15.512 2 15.2636 2 14.962C2 14.6603 2.09759 14.4119 2.29278 14.2167L7.50951 9L2.29278 3.78327C2.09759 3.58809 2 3.33967 2 3.03802C2 2.73638 2.09759 2.48796 2.29278 2.29278C2.48796 2.09759 2.73638 2 3.03802 2C3.33967 2 3.58809 2.09759 3.78327 2.29278L9 7.50951L14.2167 2.29278C14.4119 2.09759 14.6603 2 14.962 2C15.2636 2 15.512 2.09759 15.7072 2.29278C15.9024 2.48796 16 2.73638 16 3.03802C16 3.33967 15.9024 3.58809 15.7072 3.78327L10.4905 9L15.7072 14.2167C15.9024 14.4119 16 14.6603 16 14.962C16 15.2636 15.9024 15.512 15.7072 15.7072C15.512 15.9024 15.2636 16 14.962 16C14.6603 16 14.4119 15.9024 14.2167 15.7072L9 10.4905Z\", fill: \"currentColor\" }));\nexport default SvgClose;\n","import * as React from \"react\";\nconst SvgCloud = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z\" }));\nexport default SvgCloud;\n","import * as React from \"react\";\nconst SvgCloudCog = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"m10.852 19.772-.383.924\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m13.148 14.228.383-.923\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M13.148 19.772a3 3 0 1 0-2.296-5.544l-.383-.923\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m13.53 20.696-.382-.924a3 3 0 1 1-2.296-5.544\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m14.772 15.852.923-.383\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m14.772 18.148.923.383\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M4.2 15.1a7 7 0 1 1 9.93-9.858A7 7 0 0 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.2\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m9.228 15.852-.923-.383\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m9.228 18.148-.923.383\" }));\nexport default SvgCloudCog;\n","import * as React from \"react\";\nconst SvgCode = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M2.25587 9.03048L5.89817 12.8404C6.0705 13.0206 6.15666 13.25 6.15666 13.5286C6.15666 13.8072 6.0705 14.0366 5.89817 14.2168C5.72585 14.3971 5.50653 14.4872 5.24021 14.4872C4.97389 14.4872 4.75457 14.3971 4.58225 14.2168L0.258486 9.69414C0.164491 9.59582 0.0979112 9.4893 0.0587467 9.3746C0.0195822 9.25989 0 9.13699 0 9.0059C0 8.87481 0.0195822 8.75191 0.0587467 8.6372C0.0979112 8.52249 0.164491 8.41598 0.258486 8.31766L4.58225 3.79496C4.77024 3.59832 4.99347 3.5 5.25196 3.5C5.51044 3.5 5.73368 3.59832 5.92167 3.79496C6.10966 3.9916 6.20366 4.22511 6.20366 4.49549C6.20366 4.76587 6.10966 4.99937 5.92167 5.19601L2.25587 9.03048ZM15.7441 8.98132L12.1018 5.17143C11.9295 4.99118 11.8433 4.76177 11.8433 4.4832C11.8433 4.20462 11.9295 3.97521 12.1018 3.79496C12.2742 3.61471 12.4935 3.52458 12.7598 3.52458C13.0261 3.52458 13.2454 3.61471 13.4178 3.79496L17.7415 8.31766C17.8355 8.41598 17.9021 8.52249 17.9413 8.6372C17.9804 8.75191 18 8.87481 18 9.0059C18 9.13699 17.9804 9.25989 17.9413 9.3746C17.9021 9.4893 17.8355 9.59582 17.7415 9.69414L13.4178 14.2168C13.2298 14.4135 13.0104 14.5077 12.7598 14.4995C12.5091 14.4913 12.2898 14.3889 12.1018 14.1923C11.9138 13.9956 11.8198 13.7621 11.8198 13.4917C11.8198 13.2214 11.9138 12.9878 12.1018 12.7912L15.7441 8.98132Z\", fill: \"currentColor\" }));\nexport default SvgCode;\n","import * as React from \"react\";\nconst SvgCog = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M11 10.27 7 3.34\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m11 13.73-4 6.93\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M12 22v-2\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M12 2v2\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M14 12h8\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m17 20.66-1-1.73\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m17 3.34-1 1.73\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M2 12h2\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m20.66 17-1.73-1\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m20.66 7-1.73 1\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m3.34 17 1.73-1\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m3.34 7 1.73 1\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 12, cy: 12, r: 2 }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 12, cy: 12, r: 8 }));\nexport default SvgCog;\n","import * as React from \"react\";\nconst SvgContact = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M16 2v2\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M7 22v-2a2 2 0 0 1 2-2h6a2 2 0 0 1 2 2v2\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M8 2v2\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 12, cy: 11, r: 3 }), /* @__PURE__ */ React.createElement(\"rect\", { x: 3, y: 4, width: 18, height: 18, rx: 2 }));\nexport default SvgContact;\n","import * as React from \"react\";\nconst SvgContentCopy = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2m0 16H8V7h11z\", fill: \"currentColor\" }));\nexport default SvgContentCopy;\n","import * as React from \"react\";\nconst SvgDatabase = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"ellipse\", { cx: 12, cy: 5, rx: 9, ry: 3 }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M3 5V19A9 3 0 0 0 21 19V5\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M3 12A9 3 0 0 0 21 12\" }));\nexport default SvgDatabase;\n","import * as React from \"react\";\nconst SvgDateRange = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M5.88889 10.6C5.66852 10.6 5.4838 10.5233 5.33472 10.37C5.18565 10.2167 5.11111 10.0267 5.11111 9.8C5.11111 9.57333 5.18565 9.38333 5.33472 9.23C5.4838 9.07667 5.66852 9 5.88889 9C6.10926 9 6.29398 9.07667 6.44306 9.23C6.59213 9.38333 6.66667 9.57333 6.66667 9.8C6.66667 10.0267 6.59213 10.2167 6.44306 10.37C6.29398 10.5233 6.10926 10.6 5.88889 10.6ZM9 10.6C8.77963 10.6 8.59491 10.5233 8.44583 10.37C8.29676 10.2167 8.22222 10.0267 8.22222 9.8C8.22222 9.57333 8.29676 9.38333 8.44583 9.23C8.59491 9.07667 8.77963 9 9 9C9.22037 9 9.40509 9.07667 9.55417 9.23C9.70324 9.38333 9.77778 9.57333 9.77778 9.8C9.77778 10.0267 9.70324 10.2167 9.55417 10.37C9.40509 10.5233 9.22037 10.6 9 10.6ZM12.1111 10.6C11.8907 10.6 11.706 10.5233 11.5569 10.37C11.4079 10.2167 11.3333 10.0267 11.3333 9.8C11.3333 9.57333 11.4079 9.38333 11.5569 9.23C11.706 9.07667 11.8907 9 12.1111 9C12.3315 9 12.5162 9.07667 12.6653 9.23C12.8144 9.38333 12.8889 9.57333 12.8889 9.8C12.8889 10.0267 12.8144 10.2167 12.6653 10.37C12.5162 10.5233 12.3315 10.6 12.1111 10.6ZM3.55556 17C3.12778 17 2.76157 16.8433 2.45694 16.53C2.15231 16.2167 2 15.84 2 15.4V4.2C2 3.76 2.15231 3.38333 2.45694 3.07C2.76157 2.75667 3.12778 2.6 3.55556 2.6H4.33333V1.8C4.33333 1.57333 4.40787 1.38333 4.55694 1.23C4.70602 1.07667 4.89074 1 5.11111 1C5.33148 1 5.5162 1.07667 5.66528 1.23C5.81435 1.38333 5.88889 1.57333 5.88889 1.8V2.6H12.1111V1.8C12.1111 1.57333 12.1856 1.38333 12.3347 1.23C12.4838 1.07667 12.6685 1 12.8889 1C13.1093 1 13.294 1.07667 13.4431 1.23C13.5921 1.38333 13.6667 1.57333 13.6667 1.8V2.6H14.4444C14.8722 2.6 15.2384 2.75667 15.5431 3.07C15.8477 3.38333 16 3.76 16 4.2V15.4C16 15.84 15.8477 16.2167 15.5431 16.53C15.2384 16.8433 14.8722 17 14.4444 17H3.55556ZM3.55556 15.4H14.4444V7.4H3.55556V15.4ZM3.55556 5.8H14.4444V4.2H3.55556V5.8Z\", fill: \"currentColor\" }));\nexport default SvgDateRange;\n","import * as React from \"react\";\nconst SvgDelete = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M4.9375 16.5C4.49062 16.5 4.10807 16.3368 3.78984 16.0104C3.47161 15.684 3.3125 15.2917 3.3125 14.8333V4C3.08229 4 2.88932 3.92014 2.73359 3.76042C2.57786 3.60069 2.5 3.40278 2.5 3.16667C2.5 2.93056 2.57786 2.73264 2.73359 2.57292C2.88932 2.41319 3.08229 2.33333 3.3125 2.33333H6.5625C6.5625 2.09722 6.64036 1.89931 6.79609 1.73958C6.95182 1.57986 7.14479 1.5 7.375 1.5H10.625C10.8552 1.5 11.0482 1.57986 11.2039 1.73958C11.3596 1.89931 11.4375 2.09722 11.4375 2.33333H14.6875C14.9177 2.33333 15.1107 2.41319 15.2664 2.57292C15.4221 2.73264 15.5 2.93056 15.5 3.16667C15.5 3.40278 15.4221 3.60069 15.2664 3.76042C15.1107 3.92014 14.9177 4 14.6875 4V14.8333C14.6875 15.2917 14.5284 15.684 14.2102 16.0104C13.8919 16.3368 13.5094 16.5 13.0625 16.5H4.9375ZM13.0625 4H4.9375V14.8333H13.0625V4ZM7.375 13.1667C7.60521 13.1667 7.79818 13.0868 7.95391 12.9271C8.10964 12.7674 8.1875 12.5694 8.1875 12.3333V6.5C8.1875 6.26389 8.10964 6.06597 7.95391 5.90625C7.79818 5.74653 7.60521 5.66667 7.375 5.66667C7.14479 5.66667 6.95182 5.74653 6.79609 5.90625C6.64036 6.06597 6.5625 6.26389 6.5625 6.5V12.3333C6.5625 12.5694 6.64036 12.7674 6.79609 12.9271C6.95182 13.0868 7.14479 13.1667 7.375 13.1667ZM10.625 13.1667C10.8552 13.1667 11.0482 13.0868 11.2039 12.9271C11.3596 12.7674 11.4375 12.5694 11.4375 12.3333V6.5C11.4375 6.26389 11.3596 6.06597 11.2039 5.90625C11.0482 5.74653 10.8552 5.66667 10.625 5.66667C10.3948 5.66667 10.2018 5.74653 10.0461 5.90625C9.89036 6.06597 9.8125 6.26389 9.8125 6.5V12.3333C9.8125 12.5694 9.89036 12.7674 10.0461 12.9271C10.2018 13.0868 10.3948 13.1667 10.625 13.1667Z\", fill: \"currentColor\" }));\nexport default SvgDelete;\n","import * as React from \"react\";\nconst SvgDetection = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M1 16.2727V13.3636C1 13.1576 1.0697 12.9848 1.20909 12.8455C1.34848 12.7061 1.52121 12.6364 1.72727 12.6364H2.45455V5.36364H1.72727C1.52121 5.36364 1.34848 5.29394 1.20909 5.15455C1.0697 5.01515 1 4.84242 1 4.63636V1.72727C1 1.52121 1.0697 1.34848 1.20909 1.20909C1.34848 1.0697 1.52121 1 1.72727 1H4.63636C4.84242 1 5.01515 1.0697 5.15455 1.20909C5.29394 1.34848 5.36364 1.52121 5.36364 1.72727V2.45455H12.6364V1.72727C12.6364 1.52121 12.7061 1.34848 12.8455 1.20909C12.9848 1.0697 13.1576 1 13.3636 1H16.2727C16.4788 1 16.6515 1.0697 16.7909 1.20909C16.9303 1.34848 17 1.52121 17 1.72727V4.63636C17 4.84242 16.9303 5.01515 16.7909 5.15455C16.6515 5.29394 16.4788 5.36364 16.2727 5.36364H15.5455V12.6364H16.2727C16.4788 12.6364 16.6515 12.7061 16.7909 12.8455C16.9303 12.9848 17 13.1576 17 13.3636V16.2727C17 16.4788 16.9303 16.6515 16.7909 16.7909C16.6515 16.9303 16.4788 17 16.2727 17H13.3636C13.1576 17 12.9848 16.9303 12.8455 16.7909C12.7061 16.6515 12.6364 16.4788 12.6364 16.2727V15.5455H5.36364V16.2727C5.36364 16.4788 5.29394 16.6515 5.15455 16.7909C5.01515 16.9303 4.84242 17 4.63636 17H1.72727C1.52121 17 1.34848 16.9303 1.20909 16.7909C1.0697 16.6515 1 16.4788 1 16.2727ZM5.36364 14.0909H12.6364V13.3636C12.6364 13.1576 12.7061 12.9848 12.8455 12.8455C12.9848 12.7061 13.1576 12.6364 13.3636 12.6364H14.0909V5.36364H13.3636C13.1576 5.36364 12.9848 5.29394 12.8455 5.15455C12.7061 5.01515 12.6364 4.84242 12.6364 4.63636V3.90909H5.36364V4.63636C5.36364 4.84242 5.29394 5.01515 5.15455 5.15455C5.01515 5.29394 4.84242 5.36364 4.63636 5.36364H3.90909V12.6364H4.63636C4.84242 12.6364 5.01515 12.7061 5.15455 12.8455C5.29394 12.9848 5.36364 13.1576 5.36364 13.3636V14.0909ZM2.45455 3.90909H3.90909V2.45455H2.45455V3.90909ZM14.0909 3.90909H15.5455V2.45455H14.0909V3.90909ZM14.0909 15.5455H15.5455V14.0909H14.0909V15.5455ZM2.45455 15.5455H3.90909V14.0909H2.45455V15.5455Z\", fill: \"currentColor\" }));\nexport default SvgDetection;\n","import * as React from \"react\";\nconst SvgDownload = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 -2.5 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M8.18182 6.58176V1.63522C7.14545 1.826 6.34091 2.32678 5.76818 3.13758C5.19545 3.94838 4.90909 4.78302 4.90909 5.64151H4.5C3.70909 5.64151 3.03409 5.92086 2.475 6.47956C1.91591 7.03826 1.63636 7.71279 1.63636 8.50315C1.63636 9.2935 1.91591 9.96803 2.475 10.5267C3.03409 11.0854 3.70909 11.3648 4.5 11.3648H14.3182C14.8909 11.3648 15.375 11.1672 15.7705 10.772C16.1659 10.3768 16.3636 9.89308 16.3636 9.32076C16.3636 8.74843 16.1659 8.26468 15.7705 7.8695C15.375 7.47432 14.8909 7.27673 14.3182 7.27673H13.0909V5.64151C13.0909 4.98742 12.9409 4.37762 12.6409 3.81211C12.3409 3.24659 11.9455 2.76625 11.4545 2.37107V0.470126C12.4636 0.947065 13.2614 1.65225 13.8477 2.58569C14.4341 3.51913 14.7273 4.53774 14.7273 5.64151C15.6682 5.75052 16.4489 6.15592 17.0693 6.8577C17.6898 7.55949 18 8.3805 18 9.32076C18 10.3428 17.642 11.2115 16.9261 11.9269C16.2102 12.6423 15.3409 13 14.3182 13H4.5C3.25909 13 2.19886 12.5708 1.31932 11.7123C0.439773 10.8538 0 9.80451 0 8.56447C0 7.50157 0.320455 6.55451 0.961364 5.72327C1.60227 4.89203 2.44091 4.36059 3.47727 4.12893C3.70909 3.1478 4.28864 2.21436 5.21591 1.32862C6.14318 0.442872 7.13182 0 8.18182 0C8.63182 0 9.01705 0.160115 9.3375 0.480346C9.65795 0.800577 9.81818 1.18553 9.81818 1.63522V6.58176L10.5545 5.86635C10.7045 5.71646 10.892 5.64151 11.117 5.64151C11.342 5.64151 11.5364 5.72327 11.7 5.88679C11.85 6.03669 11.925 6.22746 11.925 6.45912C11.925 6.69078 11.85 6.88155 11.7 7.03145L9.57273 9.15723C9.40909 9.32076 9.21818 9.40252 9 9.40252C8.78182 9.40252 8.59091 9.32076 8.42727 9.15723L6.3 7.03145C6.15 6.88155 6.07159 6.69418 6.06477 6.46934C6.05795 6.2445 6.13636 6.05031 6.3 5.88679C6.45 5.7369 6.6375 5.65854 6.8625 5.65173C7.0875 5.64492 7.28182 5.71646 7.44545 5.86635L8.18182 6.58176Z\", fill: \"currentColor\" }));\nexport default SvgDownload;\n","import * as React from \"react\";\nconst SvgDrag = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M6.3 16.5C5.805 16.5 5.38125 16.3164 5.02875 15.9492C4.67625 15.582 4.5 15.1406 4.5 14.625C4.5 14.1094 4.67625 13.668 5.02875 13.3008C5.38125 12.9336 5.805 12.75 6.3 12.75C6.795 12.75 7.21875 12.9336 7.57125 13.3008C7.92375 13.668 8.1 14.1094 8.1 14.625C8.1 15.1406 7.92375 15.582 7.57125 15.9492C7.21875 16.3164 6.795 16.5 6.3 16.5ZM11.7 16.5C11.205 16.5 10.7813 16.3164 10.4288 15.9492C10.0763 15.582 9.9 15.1406 9.9 14.625C9.9 14.1094 10.0763 13.668 10.4288 13.3008C10.7813 12.9336 11.205 12.75 11.7 12.75C12.195 12.75 12.6188 12.9336 12.9713 13.3008C13.3238 13.668 13.5 14.1094 13.5 14.625C13.5 15.1406 13.3238 15.582 12.9713 15.9492C12.6188 16.3164 12.195 16.5 11.7 16.5ZM6.3 10.875C5.805 10.875 5.38125 10.6914 5.02875 10.3242C4.67625 9.95703 4.5 9.51562 4.5 9C4.5 8.48438 4.67625 8.04297 5.02875 7.67578C5.38125 7.30859 5.805 7.125 6.3 7.125C6.795 7.125 7.21875 7.30859 7.57125 7.67578C7.92375 8.04297 8.1 8.48438 8.1 9C8.1 9.51562 7.92375 9.95703 7.57125 10.3242C7.21875 10.6914 6.795 10.875 6.3 10.875ZM11.7 10.875C11.205 10.875 10.7813 10.6914 10.4288 10.3242C10.0763 9.95703 9.9 9.51562 9.9 9C9.9 8.48438 10.0763 8.04297 10.4288 7.67578C10.7813 7.30859 11.205 7.125 11.7 7.125C12.195 7.125 12.6188 7.30859 12.9713 7.67578C13.3238 8.04297 13.5 8.48438 13.5 9C13.5 9.51562 13.3238 9.95703 12.9713 10.3242C12.6188 10.6914 12.195 10.875 11.7 10.875ZM6.3 5.25C5.805 5.25 5.38125 5.06641 5.02875 4.69922C4.67625 4.33203 4.5 3.89062 4.5 3.375C4.5 2.85938 4.67625 2.41797 5.02875 2.05078C5.38125 1.68359 5.805 1.5 6.3 1.5C6.795 1.5 7.21875 1.68359 7.57125 2.05078C7.92375 2.41797 8.1 2.85938 8.1 3.375C8.1 3.89062 7.92375 4.33203 7.57125 4.69922C7.21875 5.06641 6.795 5.25 6.3 5.25ZM11.7 5.25C11.205 5.25 10.7813 5.06641 10.4288 4.69922C10.0763 4.33203 9.9 3.89062 9.9 3.375C9.9 2.85938 10.0763 2.41797 10.4288 2.05078C10.7813 1.68359 11.205 1.5 11.7 1.5C12.195 1.5 12.6188 1.68359 12.9713 2.05078C13.3238 2.41797 13.5 2.85938 13.5 3.375C13.5 3.89062 13.3238 4.33203 12.9713 4.69922C12.6188 5.06641 12.195 5.25 11.7 5.25Z\", fill: \"currentColor\" }));\nexport default SvgDrag;\n","import * as React from \"react\";\nconst SvgDraw = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 32 32\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M6.66667 28C6.28889 28 5.97222 27.8722 5.71667 27.6167C5.46111 27.3611 5.33333 27.0444 5.33333 26.6667V23.4333C5.33333 23.0778 5.4 22.7389 5.53333 22.4167C5.66667 22.0944 5.85556 21.8111 6.1 21.5667L22.9 4.8C23.1667 4.53333 23.4667 4.33333 23.8 4.2C24.1333 4.06667 24.4667 4 24.8 4C25.1556 4 25.4944 4.06667 25.8167 4.2C26.1389 4.33333 26.4222 4.53333 26.6667 4.8L28.5333 6.66667C28.8 6.91111 29 7.19444 29.1333 7.51667C29.2667 7.83889 29.3333 8.17778 29.3333 8.53333C29.3333 8.86667 29.2667 9.2 29.1333 9.53333C29 9.86667 28.8 10.1667 28.5333 10.4333L11.7667 27.2333C11.5222 27.4778 11.2389 27.6667 10.9167 27.8C10.5944 27.9333 10.2556 28 9.9 28H6.66667ZM8 25.3333H9.86667L22.9667 12.2667L22.0333 11.3L21.0667 10.3667L8 23.4667V25.3333ZM22.0333 11.3L21.0667 10.3667L22.9667 12.2667L22.0333 11.3ZM18.6667 28C20.3111 28 21.8333 27.5889 23.2333 26.7667C24.6333 25.9444 25.3333 24.8 25.3333 23.3333C25.3333 22.6222 25.1556 22.0056 24.8 21.4833C24.4444 20.9611 23.9778 20.4778 23.4 20.0333C23.0889 19.8111 22.7556 19.7 22.4 19.7C22.0444 19.7 21.7444 19.8333 21.5 20.1C21.2556 20.3667 21.1333 20.6944 21.1333 21.0833C21.1333 21.4722 21.2889 21.7778 21.6 22C21.9111 22.2444 22.1667 22.4667 22.3667 22.6667C22.5667 22.8667 22.6667 23.0889 22.6667 23.3333C22.6667 23.8444 22.2611 24.3056 21.45 24.7167C20.6389 25.1278 19.7111 25.3333 18.6667 25.3333C18.2889 25.3333 17.9722 25.4611 17.7167 25.7167C17.4611 25.9722 17.3333 26.2889 17.3333 26.6667C17.3333 27.0444 17.4611 27.3611 17.7167 27.6167C17.9722 27.8722 18.2889 28 18.6667 28ZM12 8C12 8.31111 11.8056 8.59444 11.4167 8.85C11.0278 9.10556 10.1333 9.55556 8.73333 10.2C6.95556 10.9778 5.72222 11.6833 5.03333 12.3167C4.34444 12.95 4 13.7333 4 14.6667C4 15.2444 4.13333 15.7556 4.4 16.2C4.66667 16.6444 5.01111 17.0333 5.43333 17.3667C5.72222 17.6111 6.04444 17.7167 6.4 17.6833C6.75556 17.65 7.05556 17.4889 7.3 17.2C7.54444 16.9111 7.65556 16.5889 7.63333 16.2333C7.61111 15.8778 7.45556 15.5778 7.16667 15.3333C7.01111 15.2222 6.88889 15.1111 6.8 15C6.71111 14.8889 6.66667 14.7778 6.66667 14.6667C6.66667 14.4 6.86667 14.1333 7.26667 13.8667C7.66667 13.6 8.51111 13.1889 9.8 12.6333C11.7556 11.7889 13.0556 11.0222 13.7 10.3333C14.3444 9.64444 14.6667 8.86667 14.6667 8C14.6667 6.77778 14.1778 5.80556 13.2 5.08333C12.2222 4.36111 10.9333 4 9.33333 4C8.33333 4 7.43889 4.17778 6.65 4.53333C5.86111 4.88889 5.25556 5.32222 4.83333 5.83333C4.58889 6.12222 4.48889 6.44444 4.53333 6.8C4.57778 7.15556 4.74444 7.44444 5.03333 7.66667C5.32222 7.91111 5.64444 8.01111 6 7.96667C6.35556 7.92222 6.65556 7.77778 6.9 7.53333C7.21111 7.22222 7.55556 7 7.93333 6.86667C8.31111 6.73333 8.77778 6.66667 9.33333 6.66667C10.2444 6.66667 10.9167 6.8 11.35 7.06667C11.7833 7.33333 12 7.64444 12 8Z\", fill: \"currentColor\" }));\nexport default SvgDraw;\n","import * as React from \"react\";\nconst SvgEdit = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M3.16667 14.8333H4.35417L12.5 6.6875L11.3125 5.5L3.16667 13.6458V14.8333ZM2.33333 16.5C2.09722 16.5 1.89931 16.4201 1.73958 16.2604C1.57986 16.1007 1.5 15.9028 1.5 15.6667V13.6458C1.5 13.4236 1.54167 13.2118 1.625 13.0104C1.70833 12.809 1.82639 12.6319 1.97917 12.4792L12.5 1.97917C12.6667 1.82639 12.8507 1.70833 13.0521 1.625C13.2535 1.54167 13.4653 1.5 13.6875 1.5C13.9097 1.5 14.125 1.54167 14.3333 1.625C14.5417 1.70833 14.7222 1.83333 14.875 2L16.0208 3.16667C16.1875 3.31944 16.309 3.5 16.3854 3.70833C16.4618 3.91667 16.5 4.125 16.5 4.33333C16.5 4.55556 16.4618 4.76736 16.3854 4.96875C16.309 5.17014 16.1875 5.35417 16.0208 5.52083L5.52083 16.0208C5.36806 16.1736 5.19097 16.2917 4.98958 16.375C4.78819 16.4583 4.57639 16.5 4.35417 16.5H2.33333ZM11.8958 6.10417L11.3125 5.5L12.5 6.6875L11.8958 6.10417Z\", fill: \"currentColor\" }));\nexport default SvgEdit;\n","import * as React from \"react\";\nconst SvgEmbeddings = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M3.66667 16.5C2.92593 16.5 2.2963 16.2266 1.77778 15.6797C1.25926 15.1328 1 14.4688 1 13.6875C1 12.9062 1.25926 12.2422 1.77778 11.6953C2.2963 11.1484 2.92593 10.875 3.66667 10.875C4.40741 10.875 5.03704 11.1484 5.55556 11.6953C6.07407 12.2422 6.33333 12.9062 6.33333 13.6875C6.33333 14.4688 6.07407 15.1328 5.55556 15.6797C5.03704 16.2266 4.40741 16.5 3.66667 16.5ZM14.3333 16.5C13.5926 16.5 12.963 16.2266 12.4444 15.6797C11.9259 15.1328 11.6667 14.4688 11.6667 13.6875C11.6667 12.9062 11.9259 12.2422 12.4444 11.6953C12.963 11.1484 13.5926 10.875 14.3333 10.875C15.0741 10.875 15.7037 11.1484 16.2222 11.6953C16.7407 12.2422 17 12.9062 17 13.6875C17 14.4688 16.7407 15.1328 16.2222 15.6797C15.7037 16.2266 15.0741 16.5 14.3333 16.5ZM9 7.125C8.25926 7.125 7.62963 6.85156 7.11111 6.30469C6.59259 5.75781 6.33333 5.09375 6.33333 4.3125C6.33333 3.53125 6.59259 2.86719 7.11111 2.32031C7.62963 1.77344 8.25926 1.5 9 1.5C9.74074 1.5 10.3704 1.77344 10.8889 2.32031C11.4074 2.86719 11.6667 3.53125 11.6667 4.3125C11.6667 5.09375 11.4074 5.75781 10.8889 6.30469C10.3704 6.85156 9.74074 7.125 9 7.125Z\", fill: \"currentColor\" }));\nexport default SvgEmbeddings;\n","import * as React from \"react\";\nconst SvgEnter = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M13.4815 10.0786H2.02729C1.73622 10.0786 1.49224 9.97519 1.29535 9.76847C1.09845 9.56175 1 9.30559 1 9C1 8.69441 1.09845 8.43825 1.29535 8.23153C1.49224 8.02481 1.73622 7.92145 2.02729 7.92145H13.4815L10.5538 4.84756C10.3483 4.63185 10.2499 4.38019 10.2584 4.09258C10.267 3.80496 10.3654 3.5533 10.5538 3.33759C10.7592 3.12188 11.0032 3.00953 11.2857 3.00054C11.5682 2.99155 11.8122 3.09491 12.0177 3.31062L16.7175 8.24501C16.8202 8.35287 16.893 8.46971 16.9358 8.59554C16.9786 8.72137 17 8.85619 17 9C17 9.14381 16.9786 9.27863 16.9358 9.40446C16.893 9.53029 16.8202 9.64713 16.7175 9.75499L12.0177 14.6894C11.8122 14.9051 11.5682 15.0084 11.2857 14.9995C11.0032 14.9905 10.7592 14.8781 10.5538 14.6624C10.3654 14.4467 10.267 14.195 10.2584 13.9074C10.2499 13.6198 10.3483 13.3681 10.5538 13.1524L13.4815 10.0786Z\", fill: \"currentColor\" }));\nexport default SvgEnter;\n","import * as React from \"react\";\nconst SvgError = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9 13C9.22667 13 9.41667 12.9233 9.57 12.77C9.72333 12.6167 9.8 12.4267 9.8 12.2C9.8 11.9733 9.72333 11.7833 9.57 11.63C9.41667 11.4767 9.22667 11.4 9 11.4C8.77333 11.4 8.58333 11.4767 8.43 11.63C8.27667 11.7833 8.2 11.9733 8.2 12.2C8.2 12.4267 8.27667 12.6167 8.43 12.77C8.58333 12.9233 8.77333 13 9 13ZM9 9.8C9.22667 9.8 9.41667 9.72333 9.57 9.57C9.72333 9.41667 9.8 9.22667 9.8 9V5.8C9.8 5.57333 9.72333 5.38333 9.57 5.23C9.41667 5.07667 9.22667 5 9 5C8.77333 5 8.58333 5.07667 8.43 5.23C8.27667 5.38333 8.2 5.57333 8.2 5.8V9C8.2 9.22667 8.27667 9.41667 8.43 9.57C8.58333 9.72333 8.77333 9.8 9 9.8ZM9 17C7.89333 17 6.85333 16.79 5.88 16.37C4.90667 15.95 4.06 15.38 3.34 14.66C2.62 13.94 2.05 13.0933 1.63 12.12C1.21 11.1467 1 10.1067 1 9C1 7.89333 1.21 6.85333 1.63 5.88C2.05 4.90667 2.62 4.06 3.34 3.34C4.06 2.62 4.90667 2.05 5.88 1.63C6.85333 1.21 7.89333 1 9 1C10.1067 1 11.1467 1.21 12.12 1.63C13.0933 2.05 13.94 2.62 14.66 3.34C15.38 4.06 15.95 4.90667 16.37 5.88C16.79 6.85333 17 7.89333 17 9C17 10.1067 16.79 11.1467 16.37 12.12C15.95 13.0933 15.38 13.94 14.66 14.66C13.94 15.38 13.0933 15.95 12.12 16.37C11.1467 16.79 10.1067 17 9 17ZM9 15.4C10.7867 15.4 12.3 14.78 13.54 13.54C14.78 12.3 15.4 10.7867 15.4 9C15.4 7.21333 14.78 5.7 13.54 4.46C12.3 3.22 10.7867 2.6 9 2.6C7.21333 2.6 5.7 3.22 4.46 4.46C3.22 5.7 2.6 7.21333 2.6 9C2.6 10.7867 3.22 12.3 4.46 13.54C5.7 14.78 7.21333 15.4 9 15.4Z\", fill: \"currentColor\" }));\nexport default SvgError;\n","import * as React from \"react\";\nconst SvgExitWorkspace = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M8.42442 13.15L4.81395 9.7C4.60465 9.5 4.5 9.26667 4.5 9C4.5 8.73333 4.60465 8.5 4.81395 8.3L8.42442 4.85C8.59884 4.68333 8.7907 4.64167 9 4.725C9.2093 4.80833 9.31395 4.96667 9.31395 5.2V12.8C9.31395 13.0333 9.2093 13.1917 9 13.275C8.7907 13.3583 8.59884 13.3167 8.42442 13.15ZM11.407 17V1C11.407 0.716667 11.5073 0.479167 11.7078 0.2875C11.9084 0.0958333 12.157 0 12.4535 0C12.75 0 12.9985 0.0958333 13.1991 0.2875C13.3997 0.479167 13.5 0.716667 13.5 1V17C13.5 17.2833 13.3997 17.5208 13.1991 17.7125C12.9985 17.9042 12.75 18 12.4535 18C12.157 18 11.9084 17.9042 11.7078 17.7125C11.5073 17.5208 11.407 17.2833 11.407 17Z\", fill: \"currentColor\" }));\nexport default SvgExitWorkspace;\n","import * as React from \"react\";\nconst SvgExternalLink = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M3.94444 15.5C3.54722 15.5 3.20718 15.3586 2.92431 15.0757C2.64144 14.7928 2.5 14.4528 2.5 14.0556V3.94444C2.5 3.54722 2.64144 3.20718 2.92431 2.92431C3.20718 2.64144 3.54722 2.5 3.94444 2.5H8.27778C8.48241 2.5 8.65394 2.56921 8.79236 2.70764C8.93079 2.84606 9 3.01759 9 3.22222C9 3.42685 8.93079 3.59838 8.79236 3.73681C8.65394 3.87523 8.48241 3.94444 8.27778 3.94444H3.94444V14.0556H14.0556V9.72222C14.0556 9.51759 14.1248 9.34607 14.2632 9.20764C14.4016 9.06921 14.5731 9 14.7778 9C14.9824 9 15.1539 9.06921 15.2924 9.20764C15.4308 9.34607 15.5 9.51759 15.5 9.72222V14.0556C15.5 14.4528 15.3586 14.7928 15.0757 15.0757C14.7928 15.3586 14.4528 15.5 14.0556 15.5H3.94444ZM14.0556 4.95556L7.84444 11.1667C7.71204 11.2991 7.54352 11.3653 7.33889 11.3653C7.13426 11.3653 6.96574 11.2991 6.83333 11.1667C6.70093 11.0343 6.63472 10.8657 6.63472 10.6611C6.63472 10.4565 6.70093 10.288 6.83333 10.1556L13.0444 3.94444H11.1667C10.962 3.94444 10.7905 3.87523 10.6521 3.73681C10.5137 3.59838 10.4444 3.42685 10.4444 3.22222C10.4444 3.01759 10.5137 2.84606 10.6521 2.70764C10.7905 2.56921 10.962 2.5 11.1667 2.5H14.7778C14.9824 2.5 15.1539 2.56921 15.2924 2.70764C15.4308 2.84606 15.5 3.01759 15.5 3.22222V6.83333C15.5 7.03796 15.4308 7.20949 15.2924 7.34792C15.1539 7.48634 14.9824 7.55556 14.7778 7.55556C14.5731 7.55556 14.4016 7.48634 14.2632 7.34792C14.1248 7.20949 14.0556 7.03796 14.0556 6.83333V4.95556Z\", fill: \"currentColor\" }));\nexport default SvgExternalLink;\n","import * as React from \"react\";\nconst SvgFileClock = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M16 22h2a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v2.85\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M8 14v2.2l1.6 1\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 8, cy: 16, r: 6 }));\nexport default SvgFileClock;\n","import * as React from \"react\";\nconst SvgFineTune = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9 17C8.74815 17 8.53704 16.9148 8.36667 16.7444C8.1963 16.5741 8.11111 16.363 8.11111 16.1111V12.5556C8.11111 12.3037 8.1963 12.0926 8.36667 11.9222C8.53704 11.7519 8.74815 11.6667 9 11.6667C9.25185 11.6667 9.46296 11.7519 9.63333 11.9222C9.8037 12.0926 9.88889 12.3037 9.88889 12.5556V13.4444H16.1111C16.363 13.4444 16.5741 13.5296 16.7444 13.7C16.9148 13.8704 17 14.0815 17 14.3333C17 14.5852 16.9148 14.7963 16.7444 14.9667C16.5741 15.137 16.363 15.2222 16.1111 15.2222H9.88889V16.1111C9.88889 16.363 9.8037 16.5741 9.63333 16.7444C9.46296 16.9148 9.25185 17 9 17ZM1.88889 15.2222C1.63704 15.2222 1.42593 15.137 1.25556 14.9667C1.08519 14.7963 1 14.5852 1 14.3333C1 14.0815 1.08519 13.8704 1.25556 13.7C1.42593 13.5296 1.63704 13.4444 1.88889 13.4444H5.44444C5.6963 13.4444 5.90741 13.5296 6.07778 13.7C6.24815 13.8704 6.33333 14.0815 6.33333 14.3333C6.33333 14.5852 6.24815 14.7963 6.07778 14.9667C5.90741 15.137 5.6963 15.2222 5.44444 15.2222H1.88889ZM5.44444 11.6667C5.19259 11.6667 4.98148 11.5815 4.81111 11.4111C4.64074 11.2407 4.55556 11.0296 4.55556 10.7778V9.88889H1.88889C1.63704 9.88889 1.42593 9.8037 1.25556 9.63333C1.08519 9.46296 1 9.25185 1 9C1 8.74815 1.08519 8.53704 1.25556 8.36667C1.42593 8.1963 1.63704 8.11111 1.88889 8.11111H4.55556V7.22222C4.55556 6.97037 4.64074 6.75926 4.81111 6.58889C4.98148 6.41852 5.19259 6.33333 5.44444 6.33333C5.6963 6.33333 5.90741 6.41852 6.07778 6.58889C6.24815 6.75926 6.33333 6.97037 6.33333 7.22222V10.7778C6.33333 11.0296 6.24815 11.2407 6.07778 11.4111C5.90741 11.5815 5.6963 11.6667 5.44444 11.6667ZM9 9.88889C8.74815 9.88889 8.53704 9.8037 8.36667 9.63333C8.1963 9.46296 8.11111 9.25185 8.11111 9C8.11111 8.74815 8.1963 8.53704 8.36667 8.36667C8.53704 8.1963 8.74815 8.11111 9 8.11111H16.1111C16.363 8.11111 16.5741 8.1963 16.7444 8.36667C16.9148 8.53704 17 8.74815 17 9C17 9.25185 16.9148 9.46296 16.7444 9.63333C16.5741 9.8037 16.363 9.88889 16.1111 9.88889H9ZM12.5556 6.33333C12.3037 6.33333 12.0926 6.24815 11.9222 6.07778C11.7519 5.90741 11.6667 5.6963 11.6667 5.44444V1.88889C11.6667 1.63704 11.7519 1.42593 11.9222 1.25556C12.0926 1.08519 12.3037 1 12.5556 1C12.8074 1 13.0185 1.08519 13.1889 1.25556C13.3593 1.42593 13.4444 1.63704 13.4444 1.88889V2.77778H16.1111C16.363 2.77778 16.5741 2.86296 16.7444 3.03333C16.9148 3.2037 17 3.41481 17 3.66667C17 3.91852 16.9148 4.12963 16.7444 4.3C16.5741 4.47037 16.363 4.55556 16.1111 4.55556H13.4444V5.44444C13.4444 5.6963 13.3593 5.90741 13.1889 6.07778C13.0185 6.24815 12.8074 6.33333 12.5556 6.33333ZM1.88889 4.55556C1.63704 4.55556 1.42593 4.47037 1.25556 4.3C1.08519 4.12963 1 3.91852 1 3.66667C1 3.41481 1.08519 3.2037 1.25556 3.03333C1.42593 2.86296 1.63704 2.77778 1.88889 2.77778H9C9.25185 2.77778 9.46296 2.86296 9.63333 3.03333C9.8037 3.2037 9.88889 3.41481 9.88889 3.66667C9.88889 3.91852 9.8037 4.12963 9.63333 4.3C9.46296 4.47037 9.25185 4.55556 9 4.55556H1.88889Z\", fill: \"currentColor\" }));\nexport default SvgFineTune;\n","import * as React from \"react\";\nconst SvgFingerprint = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M14 13.12c0 2.38 0 6.38-1 8.88\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M17.29 21.02c.12-.6.43-2.3.5-3.02\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M2 12a10 10 0 0 1 18-6\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M2 16h.01\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M21.8 16c.2-2 .131-5.354 0-6\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M5 19.5C5.5 18 6 15 6 12a6 6 0 0 1 .34-2\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M8.65 22c.21-.66.45-1.32.57-2\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M9 6.8a6 6 0 0 1 9 5.2v2\" }));\nexport default SvgFingerprint;\n","import * as React from \"react\";\nconst SvgFullscreen = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M3.55556 14.4444H5.11111C5.33148 14.4444 5.5162 14.519 5.66528 14.6681C5.81435 14.8171 5.88889 15.0019 5.88889 15.2222C5.88889 15.4426 5.81435 15.6273 5.66528 15.7764C5.5162 15.9255 5.33148 16 5.11111 16H2.77778C2.55741 16 2.37269 15.9255 2.22361 15.7764C2.07454 15.6273 2 15.4426 2 15.2222V12.8889C2 12.6685 2.07454 12.4838 2.22361 12.3347C2.37269 12.1856 2.55741 12.1111 2.77778 12.1111C2.99815 12.1111 3.18287 12.1856 3.33194 12.3347C3.48102 12.4838 3.55556 12.6685 3.55556 12.8889V14.4444ZM14.4444 14.4444V12.8889C14.4444 12.6685 14.519 12.4838 14.6681 12.3347C14.8171 12.1856 15.0019 12.1111 15.2222 12.1111C15.4426 12.1111 15.6273 12.1856 15.7764 12.3347C15.9255 12.4838 16 12.6685 16 12.8889V15.2222C16 15.4426 15.9255 15.6273 15.7764 15.7764C15.6273 15.9255 15.4426 16 15.2222 16H12.8889C12.6685 16 12.4838 15.9255 12.3347 15.7764C12.1856 15.6273 12.1111 15.4426 12.1111 15.2222C12.1111 15.0019 12.1856 14.8171 12.3347 14.6681C12.4838 14.519 12.6685 14.4444 12.8889 14.4444H14.4444ZM3.55556 3.55556V5.11111C3.55556 5.33148 3.48102 5.5162 3.33194 5.66528C3.18287 5.81435 2.99815 5.88889 2.77778 5.88889C2.55741 5.88889 2.37269 5.81435 2.22361 5.66528C2.07454 5.5162 2 5.33148 2 5.11111V2.77778C2 2.55741 2.07454 2.37269 2.22361 2.22361C2.37269 2.07454 2.55741 2 2.77778 2H5.11111C5.33148 2 5.5162 2.07454 5.66528 2.22361C5.81435 2.37269 5.88889 2.55741 5.88889 2.77778C5.88889 2.99815 5.81435 3.18287 5.66528 3.33194C5.5162 3.48102 5.33148 3.55556 5.11111 3.55556H3.55556ZM14.4444 3.55556H12.8889C12.6685 3.55556 12.4838 3.48102 12.3347 3.33194C12.1856 3.18287 12.1111 2.99815 12.1111 2.77778C12.1111 2.55741 12.1856 2.37269 12.3347 2.22361C12.4838 2.07454 12.6685 2 12.8889 2H15.2222C15.4426 2 15.6273 2.07454 15.7764 2.22361C15.9255 2.37269 16 2.55741 16 2.77778V5.11111C16 5.33148 15.9255 5.5162 15.7764 5.66528C15.6273 5.81435 15.4426 5.88889 15.2222 5.88889C15.0019 5.88889 14.8171 5.81435 14.6681 5.66528C14.519 5.5162 14.4444 5.33148 14.4444 5.11111V3.55556Z\", fill: \"currentColor\" }));\nexport default SvgFullscreen;\n","import * as React from \"react\";\nconst SvgGridView = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", d: \"M3 3v8h8V3zm6 6H5V5h4zm-6 4v8h8v-8zm6 6H5v-4h4zm4-16v8h8V3zm6 6h-4V5h4zm-6 4v8h8v-8zm6 6h-4v-4h4z\", fill: \"currentColor\" }));\nexport default SvgGridView;\n","import * as React from \"react\";\nconst SvgHistory = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"-1.748 -1.748 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M7.25195 0C8.68616 0 10.0887 0.424975 11.2812 1.22168C12.4738 2.01848 13.4032 3.15154 13.9521 4.47656C14.5011 5.80168 14.6451 7.26025 14.3652 8.66699C14.0854 10.0736 13.394 11.3658 12.3799 12.3799C11.3657 13.3939 10.0736 14.0845 8.66699 14.3643C7.26027 14.644 5.80166 14.501 4.47656 13.9521C3.15171 13.4033 2.01946 12.4735 1.22266 11.2812C0.425809 10.0887 1.21933e-05 8.68621 0 7.25195C0 6.8378 0.335873 6.50206 0.75 6.50195C1.16421 6.50195 1.5 6.83774 1.5 7.25195C1.50001 8.38951 1.83772 9.5014 2.46973 10.4473C3.10175 11.3931 3.99977 12.131 5.05078 12.5664C6.10167 13.0017 7.25839 13.1153 8.37402 12.8936C9.48969 12.6716 10.5149 12.1236 11.3193 11.3193C12.1238 10.5149 12.6716 9.48975 12.8936 8.37402C13.1155 7.25826 13.0018 6.10181 12.5664 5.05078C12.1311 3.99992 11.394 3.10174 10.4482 2.46973C9.50253 1.83788 8.3903 1.50015 7.25293 1.5C5.62962 1.50669 4.07149 2.14034 2.9043 3.26855L2.56055 3.6123H4.3623C4.77652 3.6123 5.1123 3.94809 5.1123 4.3623C5.11222 4.77644 4.77646 5.1123 4.3623 5.1123H0.75L0.673828 5.1084C0.654293 5.10642 0.635274 5.10208 0.616211 5.09863C0.61168 5.09781 0.607057 5.09758 0.602539 5.09668C0.58278 5.09273 0.564087 5.08555 0.544922 5.08008C0.517429 5.07224 0.489517 5.06572 0.462891 5.05469C0.412002 5.03354 0.364814 5.00591 0.320312 4.97461C0.285432 4.95007 0.25092 4.92376 0.219727 4.89258C0.187716 4.86056 0.159776 4.82593 0.134766 4.79004C0.104127 4.74604 0.0783773 4.69861 0.0576172 4.64844C0.0368248 4.59806 0.021064 4.54616 0.0117188 4.49316C0.00422992 4.45066 9.53184e-06 4.40695 0 4.3623V0.75C0 0.33585 0.335873 0.000102231 0.75 0C1.16421 0 1.5 0.335786 1.5 0.75V2.55176L1.86133 2.19043C3.30727 0.79265 5.23792 0.00769922 7.24902 0H7.25195ZM7.25195 2.88965C7.66617 2.88965 8.00195 3.22543 8.00195 3.63965V6.78809L10.4775 8.02637C10.8477 8.21175 10.9977 8.66189 10.8125 9.03223C10.6272 9.40247 10.177 9.55234 9.80664 9.36719L6.91699 7.92285C6.66312 7.79577 6.502 7.53587 6.50195 7.25195V3.63965C6.50195 3.22557 6.83793 2.88987 7.25195 2.88965Z\", fill: \"currentColor\" }));\nexport default SvgHistory;\n","import * as React from \"react\";\nconst SvgIdCard = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M16 10h2\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M16 14h2\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M6.17 15a3 3 0 0 1 5.66 0\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 9, cy: 11, r: 2 }), /* @__PURE__ */ React.createElement(\"rect\", { x: 2, y: 5, width: 20, height: 14, rx: 2 }));\nexport default SvgIdCard;\n","import * as React from \"react\";\nconst SvgImageSearch = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M18 13v7H4V6h5.02c.05-.71.22-1.38.48-2H4c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-5zm-1.5 5h-11l2.75-3.53 1.96 2.36 2.75-3.54zm2.8-9.11c.44-.7.7-1.51.7-2.39C20 4.01 17.99 2 15.5 2S11 4.01 11 6.5s2.01 4.5 4.49 4.5c.88 0 1.7-.26 2.39-.7L21 13.42 22.42 12zM15.5 9C14.12 9 13 7.88 13 6.5S14.12 4 15.5 4 18 5.12 18 6.5 16.88 9 15.5 9\", fill: \"currentColor\" }));\nexport default SvgImageSearch;\n","import * as React from \"react\";\nconst SvgInfo = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9 13C9.22667 13 9.41667 12.9233 9.57 12.77C9.72333 12.6167 9.8 12.4267 9.8 12.2V9C9.8 8.77333 9.72333 8.58333 9.57 8.43C9.41667 8.27667 9.22667 8.2 9 8.2C8.77333 8.2 8.58333 8.27667 8.43 8.43C8.27667 8.58333 8.2 8.77333 8.2 9V12.2C8.2 12.4267 8.27667 12.6167 8.43 12.77C8.58333 12.9233 8.77333 13 9 13ZM9 6.6C9.22667 6.6 9.41667 6.52333 9.57 6.37C9.72333 6.21667 9.8 6.02667 9.8 5.8C9.8 5.57333 9.72333 5.38333 9.57 5.23C9.41667 5.07667 9.22667 5 9 5C8.77333 5 8.58333 5.07667 8.43 5.23C8.27667 5.38333 8.2 5.57333 8.2 5.8C8.2 6.02667 8.27667 6.21667 8.43 6.37C8.58333 6.52333 8.77333 6.6 9 6.6ZM9 17C7.89333 17 6.85333 16.79 5.88 16.37C4.90667 15.95 4.06 15.38 3.34 14.66C2.62 13.94 2.05 13.0933 1.63 12.12C1.21 11.1467 1 10.1067 1 9C1 7.89333 1.21 6.85333 1.63 5.88C2.05 4.90667 2.62 4.06 3.34 3.34C4.06 2.62 4.90667 2.05 5.88 1.63C6.85333 1.21 7.89333 1 9 1C10.1067 1 11.1467 1.21 12.12 1.63C13.0933 2.05 13.94 2.62 14.66 3.34C15.38 4.06 15.95 4.90667 16.37 5.88C16.79 6.85333 17 7.89333 17 9C17 10.1067 16.79 11.1467 16.37 12.12C15.95 13.0933 15.38 13.94 14.66 14.66C13.94 15.38 13.0933 15.95 12.12 16.37C11.1467 16.79 10.1067 17 9 17ZM9 15.4C10.7867 15.4 12.3 14.78 13.54 13.54C14.78 12.3 15.4 10.7867 15.4 9C15.4 7.21333 14.78 5.7 13.54 4.46C12.3 3.22 10.7867 2.6 9 2.6C7.21333 2.6 5.7 3.22 4.46 4.46C3.22 5.7 2.6 7.21333 2.6 9C2.6 10.7867 3.22 12.3 4.46 13.54C5.7 14.78 7.21333 15.4 9 15.4Z\", fill: \"currentColor\" }));\nexport default SvgInfo;\n","import * as React from \"react\";\nconst SvgInsights = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"-1 -1.5 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M0 10.1573C0 10.0047 0.0333333 9.86361 0.1 9.73393C0.166667 9.60424 0.259259 9.50126 0.377778 9.42498L1.46667 8.624C1.80741 8.36464 2.19259 8.25403 2.62222 8.29217C3.05185 8.33031 3.42222 8.50195 3.73333 8.80708L8.11111 13.1781L11.3333 10.5235C11.4963 10.4014 11.6704 10.3022 11.8556 10.226C12.0407 10.1497 12.237 10.1115 12.4444 10.1115H15.1111C15.363 10.1115 15.5741 10.1993 15.7444 10.3747C15.9148 10.5502 16 10.7676 16 11.0269C16 11.2863 15.9148 11.5037 15.7444 11.6792C15.5741 11.8546 15.363 11.9423 15.1111 11.9423H12.4444L9.22222 14.597C8.88148 14.8869 8.48519 15.0204 8.03333 14.9975C7.58148 14.9746 7.19259 14.803 6.86667 14.4826L2.48889 10.1115L1.4 10.9125C1.1037 11.1261 0.796296 11.149 0.477778 10.9812C0.159259 10.8133 0 10.5387 0 10.1573ZM0 4.642C0 4.48944 0.0296296 4.35213 0.0888889 4.23007C0.148148 4.10802 0.237037 4.00122 0.355556 3.90968L3.06667 1.87291C3.42222 1.61355 3.81481 1.49912 4.24444 1.52964C4.67407 1.56015 5.04444 1.7356 5.35556 2.05599L8.17778 4.96239L14.6 0.179419C14.8963 -0.034175 15.2037 -0.0570601 15.5222 0.110764C15.8407 0.278587 16 0.553208 16 0.934625C16 1.08719 15.9667 1.2245 15.9 1.34656C15.8333 1.46861 15.7407 1.57541 15.6222 1.66695L9.22222 6.44992C8.86667 6.70929 8.47407 6.82371 8.04444 6.7932C7.61481 6.76268 7.24444 6.58723 6.93333 6.26684L4.11111 3.36044L1.4 5.39721C1.1037 5.6108 0.796296 5.63369 0.477778 5.46586C0.159259 5.29804 0 5.02342 0 4.642Z\", fill: \"currentColor\" }));\nexport default SvgInsights;\n","import * as React from \"react\";\nconst SvgInspect = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M10.557 10.557L8.19671 16.4259C8.11165 16.6172 7.9947 16.7608 7.84585 16.8565C7.697 16.9522 7.53752 17 7.36741 17C7.1973 17 7.03516 16.9495 6.881 16.8485C6.72683 16.7475 6.60722 16.6013 6.52217 16.4099L1.06795 2.2481C0.993528 2.06736 0.980238 1.88927 1.02808 1.71385C1.07593 1.53842 1.15832 1.39223 1.27528 1.27528C1.39223 1.15832 1.53842 1.07593 1.71385 1.02808C1.88927 0.980238 2.06736 0.993528 2.2481 1.06795L16.4099 6.52217C16.6013 6.60722 16.7475 6.72683 16.8485 6.881C16.9495 7.03516 17 7.1973 17 7.36741C17 7.53752 16.9522 7.697 16.8565 7.84585C16.7608 7.9947 16.6172 8.11165 16.4259 8.19671L10.557 10.557ZM7.36741 13.619L9.15359 9.15359L13.619 7.36741L3.4761 3.4761L7.36741 13.619Z\", fill: \"currentColor\" }));\nexport default SvgInspect;\n","import * as React from \"react\";\nconst SvgJson = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M11.7 16.5C11.445 16.5 11.2313 16.4102 11.0588 16.2305C10.8863 16.0508 10.8 15.8281 10.8 15.5625C10.8 15.2969 10.8863 15.0742 11.0588 14.8945C11.2313 14.7148 11.445 14.625 11.7 14.625H13.5C13.755 14.625 13.9688 14.5352 14.1413 14.3555C14.3138 14.1758 14.4 13.9531 14.4 13.6875V11.8125C14.4 11.2188 14.565 10.6797 14.895 10.1953C15.225 9.71094 15.66 9.36719 16.2 9.16406V8.83594C15.66 8.63281 15.225 8.28906 14.895 7.80469C14.565 7.32031 14.4 6.78125 14.4 6.1875V4.3125C14.4 4.04688 14.3138 3.82422 14.1413 3.64453C13.9688 3.46484 13.755 3.375 13.5 3.375H11.7C11.445 3.375 11.2313 3.28516 11.0588 3.10547C10.8863 2.92578 10.8 2.70312 10.8 2.4375C10.8 2.17188 10.8863 1.94922 11.0588 1.76953C11.2313 1.58984 11.445 1.5 11.7 1.5H13.5C14.25 1.5 14.8875 1.77344 15.4125 2.32031C15.9375 2.86719 16.2 3.53125 16.2 4.3125V6.1875C16.2 6.45312 16.2863 6.67578 16.4587 6.85547C16.6313 7.03516 16.845 7.125 17.1 7.125C17.355 7.125 17.5688 7.21484 17.7413 7.39453C17.9138 7.57422 18 7.79688 18 8.0625V9.9375C18 10.2031 17.9138 10.4258 17.7413 10.6055C17.5688 10.7852 17.355 10.875 17.1 10.875C16.845 10.875 16.6313 10.9648 16.4587 11.1445C16.2863 11.3242 16.2 11.5469 16.2 11.8125V13.6875C16.2 14.4688 15.9375 15.1328 15.4125 15.6797C14.8875 16.2266 14.25 16.5 13.5 16.5H11.7ZM4.5 16.5C3.75 16.5 3.1125 16.2266 2.5875 15.6797C2.0625 15.1328 1.8 14.4688 1.8 13.6875V11.8125C1.8 11.5469 1.71375 11.3242 1.54125 11.1445C1.36875 10.9648 1.155 10.875 0.9 10.875C0.645 10.875 0.43125 10.7852 0.25875 10.6055C0.08625 10.4258 0 10.2031 0 9.9375V8.0625C0 7.79688 0.08625 7.57422 0.25875 7.39453C0.43125 7.21484 0.645 7.125 0.9 7.125C1.155 7.125 1.36875 7.03516 1.54125 6.85547C1.71375 6.67578 1.8 6.45312 1.8 6.1875V4.3125C1.8 3.53125 2.0625 2.86719 2.5875 2.32031C3.1125 1.77344 3.75 1.5 4.5 1.5H6.3C6.555 1.5 6.76875 1.58984 6.94125 1.76953C7.11375 1.94922 7.2 2.17188 7.2 2.4375C7.2 2.70312 7.11375 2.92578 6.94125 3.10547C6.76875 3.28516 6.555 3.375 6.3 3.375H4.5C4.245 3.375 4.03125 3.46484 3.85875 3.64453C3.68625 3.82422 3.6 4.04688 3.6 4.3125V6.1875C3.6 6.78125 3.435 7.32031 3.105 7.80469C2.775 8.28906 2.34 8.63281 1.8 8.83594V9.16406C2.34 9.36719 2.775 9.71094 3.105 10.1953C3.435 10.6797 3.6 11.2188 3.6 11.8125V13.6875C3.6 13.9531 3.68625 14.1758 3.85875 14.3555C4.03125 14.5352 4.245 14.625 4.5 14.625H6.3C6.555 14.625 6.76875 14.7148 6.94125 14.8945C7.11375 15.0742 7.2 15.2969 7.2 15.5625C7.2 15.8281 7.11375 16.0508 6.94125 16.2305C6.76875 16.4102 6.555 16.5 6.3 16.5H4.5Z\", fill: \"currentColor\" }));\nexport default SvgJson;\n","import * as React from \"react\";\nconst SvgKey = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 16.5, cy: 7.5, r: 0.5, fill: \"currentColor\" }));\nexport default SvgKey;\n","import * as React from \"react\";\nconst SvgKeyRound = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 16.5, cy: 7.5, r: 0.5, fill: \"currentColor\" }));\nexport default SvgKeyRound;\n","import * as React from \"react\";\nconst SvgKeySquare = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M12.4 2.7a2.5 2.5 0 0 1 3.4 0l5.5 5.5a2.5 2.5 0 0 1 0 3.4l-3.7 3.7a2.5 2.5 0 0 1-3.4 0L8.7 9.8a2.5 2.5 0 0 1 0-3.4z\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m14 7 3 3\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m9.4 10.6-6.814 6.814A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814\" }));\nexport default SvgKeySquare;\n","import * as React from \"react\";\nconst SvgLabel = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"-0.3 -2.74 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M11.6017 1.41239C11.457 1.37678 11.2959 1.37283 10.7779 1.37283H3.90803C3.35187 1.37283 2.96996 1.37328 2.6739 1.3975C2.38468 1.42117 2.22931 1.46456 2.11688 1.52195C1.85981 1.65312 1.65084 1.86245 1.51987 2.11989C1.46257 2.23252 1.41924 2.38813 1.39561 2.6778C1.37141 2.97432 1.37096 3.35682 1.37096 3.91384V8.60497C1.37096 9.162 1.37141 9.54451 1.39561 9.84103C1.41924 10.1307 1.46257 10.2863 1.51987 10.3989C1.65084 10.6564 1.85981 10.8657 2.11688 10.9969C2.22931 11.0543 2.38468 11.0977 2.6739 11.1213C2.96996 11.1456 3.35187 11.146 3.90803 11.146H10.7779C11.2959 11.146 11.457 11.1421 11.6017 11.1064C11.7441 11.0714 11.88 11.0135 12.0041 10.9352C12.1301 10.8556 12.2448 10.7422 12.6043 10.3688L14.8625 8.02323C15.2362 7.63514 15.4921 7.36874 15.6745 7.14599C15.8524 6.92871 15.9278 6.79083 15.9652 6.67275C16.0503 6.40379 16.0503 6.11503 15.9652 5.84608C15.9278 5.728 15.8524 5.59012 15.6745 5.37284C15.4921 5.15009 15.2362 4.88369 14.8625 4.4956L12.6043 2.15003C12.2448 1.77664 12.1301 1.66319 12.0041 1.58364C11.88 1.50529 11.7441 1.44746 11.6017 1.41239ZM10.8419 0.200025C11.2694 0.199849 11.5815 0.199712 11.8812 0.27352C12.1458 0.338648 12.3981 0.446036 12.6286 0.591559C12.8896 0.756413 13.1062 0.981529 13.4028 1.28985C13.4174 1.30502 13.4322 1.32039 13.4472 1.33596L15.7221 3.69883C16.075 4.06538 16.364 4.36556 16.5799 4.62908C16.8035 4.9022 16.9807 5.17325 17.0815 5.49178C17.2395 5.99131 17.2395 6.52752 17.0815 7.02705C16.9807 7.34558 16.8035 7.61663 16.5799 7.88975C16.364 8.15327 16.075 8.45345 15.7221 8.81998L13.4472 11.1829C13.4322 11.1984 13.4174 11.2138 13.4028 11.229C13.1062 11.5373 12.8896 11.7624 12.6286 11.9273C12.3981 12.0728 12.1458 12.1802 11.8812 12.2453C11.5815 12.3191 11.2694 12.319 10.8419 12.3188C10.8209 12.3188 10.7996 12.3188 10.7779 12.3188H3.8835C3.35784 12.3188 2.92794 12.3188 2.57855 12.2902C2.21692 12.2606 1.8903 12.1975 1.58526 12.0418C1.10788 11.7982 0.719763 11.4095 0.476526 10.9314C0.321107 10.6259 0.258082 10.2987 0.228535 9.93653C0.199989 9.58661 0.199994 9.15602 0.2 8.62954V3.88929C0.199994 3.36281 0.199989 2.93222 0.228535 2.5823C0.258082 2.22009 0.321107 1.89296 0.476526 1.58747C0.719763 1.10934 1.10788 0.720604 1.58526 0.476998C1.8903 0.32133 2.21692 0.258215 2.57855 0.228622C2.92794 0.200025 3.35784 0.200025 3.8835 0.200045H10.7779C10.7996 0.200045 10.8209 0.200025 10.8419 0.200025Z\", fill: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M6.52244 6.61995C6.18776 6.49611 6.18776 6.02272 6.52244 5.89888C7.36426 5.58738 8.02797 4.92367 8.33946 4.08187C8.46331 3.74717 8.93669 3.74717 9.06054 4.08187C9.37203 4.92367 10.0357 5.58738 10.8776 5.89888C11.2122 6.02272 11.2122 6.49611 10.8776 6.61995C10.0357 6.93145 9.37203 7.59516 9.06054 8.43696C8.93669 8.77166 8.46331 8.77166 8.33946 8.43696C8.02797 7.59516 7.36426 6.93145 6.52244 6.61995Z\", fill: \"currentColor\" }));\nexport default SvgLabel;\n","import * as React from \"react\";\nconst SvgLock = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M4.125 17C3.67812 17 3.29557 16.8508 2.97734 16.5524C2.65911 16.254 2.5 15.8952 2.5 15.4762V7.85714C2.5 7.4381 2.65911 7.07937 2.97734 6.78095C3.29557 6.48254 3.67812 6.33333 4.125 6.33333H4.9375V4.80952C4.9375 3.75556 5.33359 2.85714 6.12578 2.11429C6.91797 1.37143 7.87604 1 9 1C10.124 1 11.082 1.37143 11.8742 2.11429C12.6664 2.85714 13.0625 3.75556 13.0625 4.80952V6.33333H13.875C14.3219 6.33333 14.7044 6.48254 15.0227 6.78095C15.3409 7.07937 15.5 7.4381 15.5 7.85714V15.4762C15.5 15.8952 15.3409 16.254 15.0227 16.5524C14.7044 16.8508 14.3219 17 13.875 17H4.125ZM4.125 15.4762H13.875V7.85714H4.125V15.4762ZM9 13.1905C9.44687 13.1905 9.82943 13.0413 10.1477 12.7429C10.4659 12.4444 10.625 12.0857 10.625 11.6667C10.625 11.2476 10.4659 10.8889 10.1477 10.5905C9.82943 10.2921 9.44687 10.1429 9 10.1429C8.55312 10.1429 8.17057 10.2921 7.85234 10.5905C7.53411 10.8889 7.375 11.2476 7.375 11.6667C7.375 12.0857 7.53411 12.4444 7.85234 12.7429C8.17057 13.0413 8.55312 13.1905 9 13.1905ZM6.5625 6.33333H11.4375V4.80952C11.4375 4.1746 11.2005 3.63492 10.7266 3.19048C10.2526 2.74603 9.67708 2.52381 9 2.52381C8.32292 2.52381 7.7474 2.74603 7.27344 3.19048C6.79948 3.63492 6.5625 4.1746 6.5625 4.80952V6.33333Z\", fill: \"currentColor\" }));\nexport default SvgLock;\n","import * as React from \"react\";\nconst SvgLogs = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M4.125 17C3.67812 17 3.29557 16.8433 2.97734 16.53C2.65911 16.2167 2.5 15.84 2.5 15.4V2.6C2.5 2.16 2.65911 1.78333 2.97734 1.47C3.29557 1.15667 3.67812 1 4.125 1H10.6859C10.9297 1 11.1599 1.05 11.3766 1.15C11.5932 1.25 11.776 1.39333 11.925 1.58L15.1141 5.36C15.2359 5.50667 15.3307 5.66667 15.3984 5.84C15.4661 6.01333 15.5 6.19333 15.5 6.38V15.4C15.5 15.76 15.3341 16.0067 15.0023 16.14C14.6706 16.2733 14.376 16.2133 14.1187 15.96L10.625 12.56C10.3948 12.7067 10.1443 12.8167 9.87344 12.89C9.6026 12.9633 9.31146 13 9 13C8.10625 13 7.34115 12.6867 6.70469 12.06C6.06823 11.4333 5.75 10.68 5.75 9.8C5.75 8.92 6.06823 8.16667 6.70469 7.54C7.34115 6.91333 8.10625 6.6 9 6.6C9.89375 6.6 10.6589 6.91333 11.2953 7.54C11.9318 8.16667 12.25 8.92 12.25 9.8C12.25 10.1067 12.2128 10.3933 12.1383 10.66C12.0638 10.9267 11.9521 11.1733 11.8031 11.4L13.875 13.48V6.36L10.6656 2.6H4.125V15.4H10.8891C11.1599 15.4 11.363 15.4833 11.4984 15.65C11.6339 15.8167 11.7016 16 11.7016 16.2C11.7016 16.4 11.6339 16.5833 11.4984 16.75C11.363 16.9167 11.1599 17 10.8891 17H4.125ZM9 11.4C9.44687 11.4 9.82943 11.2433 10.1477 10.93C10.4659 10.6167 10.625 10.24 10.625 9.8C10.625 9.36 10.4659 8.98333 10.1477 8.67C9.82943 8.35667 9.44687 8.2 9 8.2C8.55312 8.2 8.17057 8.35667 7.85234 8.67C7.53411 8.98333 7.375 9.36 7.375 9.8C7.375 10.24 7.53411 10.6167 7.85234 10.93C8.17057 11.2433 8.55312 11.4 9 11.4Z\", fill: \"currentColor\" }));\nexport default SvgLogs;\n","import * as React from \"react\";\nconst SvgMenu = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M2.33333 14C2.09722 14 1.89931 13.9201 1.73958 13.7604C1.57986 13.6007 1.5 13.4028 1.5 13.1667C1.5 12.9306 1.57986 12.7326 1.73958 12.5729C1.89931 12.4132 2.09722 12.3333 2.33333 12.3333H15.6667C15.9028 12.3333 16.1007 12.4132 16.2604 12.5729C16.4201 12.7326 16.5 12.9306 16.5 13.1667C16.5 13.4028 16.4201 13.6007 16.2604 13.7604C16.1007 13.9201 15.9028 14 15.6667 14H2.33333ZM2.33333 9.83333C2.09722 9.83333 1.89931 9.75347 1.73958 9.59375C1.57986 9.43403 1.5 9.23611 1.5 9C1.5 8.76389 1.57986 8.56597 1.73958 8.40625C1.89931 8.24653 2.09722 8.16667 2.33333 8.16667H15.6667C15.9028 8.16667 16.1007 8.24653 16.2604 8.40625C16.4201 8.56597 16.5 8.76389 16.5 9C16.5 9.23611 16.4201 9.43403 16.2604 9.59375C16.1007 9.75347 15.9028 9.83333 15.6667 9.83333H2.33333ZM2.33333 5.66667C2.09722 5.66667 1.89931 5.58681 1.73958 5.42708C1.57986 5.26736 1.5 5.06944 1.5 4.83333C1.5 4.59722 1.57986 4.39931 1.73958 4.23958C1.89931 4.07986 2.09722 4 2.33333 4H15.6667C15.9028 4 16.1007 4.07986 16.2604 4.23958C16.4201 4.39931 16.5 4.59722 16.5 4.83333C16.5 5.06944 16.4201 5.26736 16.2604 5.42708C16.1007 5.58681 15.9028 5.66667 15.6667 5.66667H2.33333Z\", fill: \"currentColor\" }));\nexport default SvgMenu;\n","import * as React from \"react\";\nconst SvgMoreHorizontal = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M3.375 10.875C2.85938 10.875 2.41797 10.6914 2.05078 10.3242C1.68359 9.95703 1.5 9.51562 1.5 9C1.5 8.48438 1.68359 8.04297 2.05078 7.67578C2.41797 7.30859 2.85938 7.125 3.375 7.125C3.89062 7.125 4.33203 7.30859 4.69922 7.67578C5.06641 8.04297 5.25 8.48438 5.25 9C5.25 9.51562 5.06641 9.95703 4.69922 10.3242C4.33203 10.6914 3.89062 10.875 3.375 10.875ZM9 10.875C8.48438 10.875 8.04297 10.6914 7.67578 10.3242C7.30859 9.95703 7.125 9.51562 7.125 9C7.125 8.48438 7.30859 8.04297 7.67578 7.67578C8.04297 7.30859 8.48438 7.125 9 7.125C9.51562 7.125 9.95703 7.30859 10.3242 7.67578C10.6914 8.04297 10.875 8.48438 10.875 9C10.875 9.51562 10.6914 9.95703 10.3242 10.3242C9.95703 10.6914 9.51562 10.875 9 10.875ZM14.625 10.875C14.1094 10.875 13.668 10.6914 13.3008 10.3242C12.9336 9.95703 12.75 9.51562 12.75 9C12.75 8.48438 12.9336 8.04297 13.3008 7.67578C13.668 7.30859 14.1094 7.125 14.625 7.125C15.1406 7.125 15.582 7.30859 15.9492 7.67578C16.3164 8.04297 16.5 8.48438 16.5 9C16.5 9.51562 16.3164 9.95703 15.9492 10.3242C15.582 10.6914 15.1406 10.875 14.625 10.875Z\", fill: \"currentColor\" }));\nexport default SvgMoreHorizontal;\n","import * as React from \"react\";\nconst SvgMoreVertical = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9 16.5C8.48438 16.5 8.04297 16.3164 7.67578 15.9492C7.30859 15.582 7.125 15.1406 7.125 14.625C7.125 14.1094 7.30859 13.668 7.67578 13.3008C8.04297 12.9336 8.48438 12.75 9 12.75C9.51562 12.75 9.95703 12.9336 10.3242 13.3008C10.6914 13.668 10.875 14.1094 10.875 14.625C10.875 15.1406 10.6914 15.582 10.3242 15.9492C9.95703 16.3164 9.51562 16.5 9 16.5ZM9 10.875C8.48438 10.875 8.04297 10.6914 7.67578 10.3242C7.30859 9.95703 7.125 9.51562 7.125 9C7.125 8.48438 7.30859 8.04297 7.67578 7.67578C8.04297 7.30859 8.48438 7.125 9 7.125C9.51562 7.125 9.95703 7.30859 10.3242 7.67578C10.6914 8.04297 10.875 8.48438 10.875 9C10.875 9.51562 10.6914 9.95703 10.3242 10.3242C9.95703 10.6914 9.51562 10.875 9 10.875ZM9 5.25C8.48438 5.25 8.04297 5.06641 7.67578 4.69922C7.30859 4.33203 7.125 3.89062 7.125 3.375C7.125 2.85938 7.30859 2.41797 7.67578 2.05078C8.04297 1.68359 8.48438 1.5 9 1.5C9.51562 1.5 9.95703 1.68359 10.3242 2.05078C10.6914 2.41797 10.875 2.85938 10.875 3.375C10.875 3.89062 10.6914 4.33203 10.3242 4.69922C9.95703 5.06641 9.51562 5.25 9 5.25Z\", fill: \"currentColor\" }));\nexport default SvgMoreVertical;\n","import * as React from \"react\";\nconst SvgMove = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M8.16449 14.1384V11.5065C8.16449 11.2698 8.24456 11.0714 8.4047 10.9112C8.56484 10.7511 8.76327 10.671 9 10.671C9.23673 10.671 9.43516 10.7511 9.5953 10.9112C9.75544 11.0714 9.83551 11.2698 9.83551 11.5065V14.1175L10.7337 13.1984C10.9008 13.0313 11.1027 12.9478 11.3394 12.9478C11.5762 12.9478 11.7781 13.0313 11.9452 13.1984C12.1123 13.3655 12.1958 13.5675 12.1958 13.8042C12.1958 14.0409 12.1123 14.2428 11.9452 14.4099L9.58486 16.7702C9.50131 16.8538 9.41079 16.913 9.31332 16.9478C9.21584 16.9826 9.1114 17 9 17C8.8886 17 8.78416 16.9826 8.68668 16.9478C8.58921 16.913 8.49869 16.8538 8.41514 16.7702L6.03394 14.389C5.86684 14.2219 5.78677 14.0235 5.79373 13.7937C5.8007 13.564 5.88773 13.3655 6.05483 13.1984C6.22193 13.0313 6.42037 12.9478 6.65013 12.9478C6.8799 12.9478 7.07833 13.0313 7.24543 13.1984L8.16449 14.1384ZM3.88251 9.83551L4.80157 10.7337C4.96867 10.9008 5.05222 11.1027 5.05222 11.3394C5.05222 11.5762 4.96867 11.7781 4.80157 11.9452C4.63446 12.1123 4.43255 12.1958 4.19582 12.1958C3.9591 12.1958 3.75718 12.1123 3.59008 11.9452L1.22977 9.58486C1.14621 9.50131 1.08703 9.41079 1.05222 9.31332C1.01741 9.21584 1 9.1114 1 9C1 8.8886 1.01741 8.78416 1.05222 8.68668C1.08703 8.58921 1.14621 8.49869 1.22977 8.41514L3.59008 6.05483C3.75718 5.88773 3.95561 5.80418 4.18538 5.80418C4.41514 5.80418 4.61358 5.88773 4.78068 6.05483C4.94778 6.22193 5.03133 6.42037 5.03133 6.65013C5.03133 6.8799 4.94778 7.07833 4.78068 7.24543L3.86162 8.16449H6.49347C6.7302 8.16449 6.92863 8.24456 7.08877 8.4047C7.24891 8.56484 7.32898 8.76327 7.32898 9C7.32898 9.23673 7.24891 9.43516 7.08877 9.5953C6.92863 9.75544 6.7302 9.83551 6.49347 9.83551H3.88251ZM14.1384 9.83551H11.5065C11.2698 9.83551 11.0714 9.75544 10.9112 9.5953C10.7511 9.43516 10.671 9.23673 10.671 9C10.671 8.76327 10.7511 8.56484 10.9112 8.4047C11.0714 8.24456 11.2698 8.16449 11.5065 8.16449H14.1175L13.1984 7.26632C13.0313 7.09922 12.9478 6.8973 12.9478 6.66057C12.9478 6.42385 13.0313 6.22193 13.1984 6.05483C13.3655 5.88773 13.5675 5.80418 13.8042 5.80418C14.0409 5.80418 14.2428 5.88773 14.4099 6.05483L16.7702 8.41514C16.8538 8.49869 16.913 8.58921 16.9478 8.68668C16.9826 8.78416 17 8.8886 17 9C17 9.1114 16.9826 9.21584 16.9478 9.31332C16.913 9.41079 16.8538 9.50131 16.7702 9.58486L14.389 11.9661C14.2219 12.1332 14.027 12.2132 13.8042 12.2063C13.5814 12.1993 13.3864 12.1123 13.2193 11.9452C13.0522 11.7781 12.9687 11.5796 12.9687 11.3499C12.9687 11.1201 13.0522 10.9217 13.2193 10.7546L14.1384 9.83551ZM8.16449 3.86162L7.22454 4.80157C7.05744 4.96867 6.86249 5.05222 6.63969 5.05222C6.41688 5.05222 6.22193 4.96867 6.05483 4.80157C5.88773 4.63446 5.80418 4.43603 5.80418 4.20627C5.80418 3.9765 5.88773 3.77807 6.05483 3.61097L8.41514 1.22977C8.49869 1.14621 8.58921 1.08703 8.68668 1.05222C8.78416 1.01741 8.8886 1 9 1C9.1114 1 9.21584 1.01741 9.31332 1.05222C9.41079 1.08703 9.50131 1.14621 9.58486 1.22977L11.9661 3.61097C12.1332 3.77807 12.2167 3.97302 12.2167 4.19582C12.2167 4.41862 12.1332 4.61358 11.9661 4.78068C11.799 4.94778 11.6005 5.03133 11.3708 5.03133C11.141 5.03133 10.9426 4.94778 10.7755 4.78068L9.83551 3.86162V6.49347C9.83551 6.7302 9.75544 6.92863 9.5953 7.08877C9.43516 7.24891 9.23673 7.32898 9 7.32898C8.76327 7.32898 8.56484 7.24891 8.4047 7.08877C8.24456 6.92863 8.16449 6.7302 8.16449 6.49347V3.86162Z\", fill: \"currentColor\" }));\nexport default SvgMove;\n","import * as React from \"react\";\nconst SvgNotebookPen = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M13.4 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7.4\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M2 6h4\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M2 10h4\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M2 14h4\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M2 18h4\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M21.378 5.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z\" }));\nexport default SvgNotebookPen;\n","import * as React from \"react\";\nconst SvgNotes = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M1.88889 14.5C1.63704 14.5 1.42593 14.4122 1.25556 14.2365C1.08519 14.0608 1 13.8431 1 13.5833C1 13.3236 1.08519 13.1059 1.25556 12.9302C1.42593 12.7545 1.63704 12.6667 1.88889 12.6667H10.7778C11.0296 12.6667 11.2407 12.7545 11.4111 12.9302C11.5815 13.1059 11.6667 13.3236 11.6667 13.5833C11.6667 13.8431 11.5815 14.0608 11.4111 14.2365C11.2407 14.4122 11.0296 14.5 10.7778 14.5H1.88889ZM1.88889 9.91667C1.63704 9.91667 1.42593 9.82882 1.25556 9.65313C1.08519 9.47743 1 9.25972 1 9C1 8.74028 1.08519 8.52257 1.25556 8.34688C1.42593 8.17118 1.63704 8.08333 1.88889 8.08333H16.1111C16.363 8.08333 16.5741 8.17118 16.7444 8.34688C16.9148 8.52257 17 8.74028 17 9C17 9.25972 16.9148 9.47743 16.7444 9.65313C16.5741 9.82882 16.363 9.91667 16.1111 9.91667H1.88889ZM1.88889 5.33333C1.63704 5.33333 1.42593 5.24549 1.25556 5.06979C1.08519 4.8941 1 4.67639 1 4.41667C1 4.15694 1.08519 3.93924 1.25556 3.76354C1.42593 3.58785 1.63704 3.5 1.88889 3.5H16.1111C16.363 3.5 16.5741 3.58785 16.7444 3.76354C16.9148 3.93924 17 4.15694 17 4.41667C17 4.67639 16.9148 4.8941 16.7444 5.06979C16.5741 5.24549 16.363 5.33333 16.1111 5.33333H1.88889Z\", fill: \"currentColor\" }));\nexport default SvgNotes;\n","import * as React from \"react\";\nconst SvgOrchestrator = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 17\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M2.90625 16.3533C2.46875 15.9221 2.25 15.3986 2.25 14.7826C2.25 14.1667 2.46875 13.6431 2.90625 13.212C3.34375 12.7808 3.875 12.5652 4.5 12.5652C4.675 12.5652 4.8375 12.5837 4.9875 12.6207C5.1375 12.6576 5.28125 12.7069 5.41875 12.7685L6.4875 11.4565C6.1375 11.0746 5.89375 10.6435 5.75625 10.163C5.61875 9.68261 5.5875 9.20217 5.6625 8.72174L4.14375 8.22283C3.93125 8.5308 3.6625 8.77717 3.3375 8.96196C3.0125 9.14674 2.65 9.23913 2.25 9.23913C1.625 9.23913 1.09375 9.02355 0.65625 8.59239C0.21875 8.16123 0 7.63768 0 7.02174C0 6.4058 0.21875 5.88225 0.65625 5.45109C1.09375 5.01993 1.625 4.80435 2.25 4.80435C2.875 4.80435 3.40625 5.01993 3.84375 5.45109C4.28125 5.88225 4.5 6.4058 4.5 7.02174V7.16957L6.01875 7.68696C6.26875 7.24348 6.60313 6.86775 7.02188 6.55978C7.44063 6.25181 7.9125 6.05471 8.4375 5.96848V4.36087C7.95 4.22536 7.54688 3.96359 7.22813 3.57554C6.90938 3.1875 6.75 2.73478 6.75 2.21739C6.75 1.60145 6.96875 1.0779 7.40625 0.646739C7.84375 0.21558 8.375 0 9 0C9.625 0 10.1562 0.21558 10.5938 0.646739C11.0312 1.0779 11.25 1.60145 11.25 2.21739C11.25 2.73478 11.0875 3.1875 10.7625 3.57554C10.4375 3.96359 10.0375 4.22536 9.5625 4.36087V5.96848C10.0875 6.05471 10.5594 6.25181 10.9781 6.55978C11.3969 6.86775 11.7313 7.24348 11.9813 7.68696L13.5 7.16957V7.02174C13.5 6.4058 13.7188 5.88225 14.1563 5.45109C14.5938 5.01993 15.125 4.80435 15.75 4.80435C16.375 4.80435 16.9062 5.01993 17.3438 5.45109C17.7812 5.88225 18 6.4058 18 7.02174C18 7.63768 17.7812 8.16123 17.3438 8.59239C16.9062 9.02355 16.375 9.23913 15.75 9.23913C15.35 9.23913 14.9844 9.14674 14.6531 8.96196C14.3219 8.77717 14.0563 8.5308 13.8563 8.22283L12.3375 8.72174C12.4125 9.20217 12.3813 9.67953 12.2438 10.1538C12.1063 10.6281 11.8625 11.0623 11.5125 11.4565L12.5813 12.75C12.7188 12.6884 12.8625 12.6422 13.0125 12.6114C13.1625 12.5806 13.325 12.5652 13.5 12.5652C14.125 12.5652 14.6563 12.7808 15.0938 13.212C15.5313 13.6431 15.75 14.1667 15.75 14.7826C15.75 15.3986 15.5313 15.9221 15.0938 16.3533C14.6563 16.7844 14.125 17 13.5 17C12.875 17 12.3438 16.7844 11.9062 16.3533C11.4688 15.9221 11.25 15.3986 11.25 14.7826C11.25 14.5362 11.2906 14.2991 11.3719 14.0712C11.4531 13.8433 11.5625 13.637 11.7 13.4522L10.6313 12.1402C10.1188 12.4236 9.57188 12.5652 8.99063 12.5652C8.40938 12.5652 7.8625 12.4236 7.35 12.1402L6.3 13.4522C6.4375 13.637 6.54688 13.8433 6.62813 14.0712C6.70938 14.2991 6.75 14.5362 6.75 14.7826C6.75 15.3986 6.53125 15.9221 6.09375 16.3533C5.65625 16.7844 5.125 17 4.5 17C3.875 17 3.34375 16.7844 2.90625 16.3533ZM2.25 7.76087C2.4625 7.76087 2.64062 7.69004 2.78438 7.54837C2.92813 7.4067 3 7.23116 3 7.02174C3 6.81232 2.92813 6.63678 2.78438 6.49511C2.64062 6.35344 2.4625 6.28261 2.25 6.28261C2.0375 6.28261 1.85938 6.35344 1.71563 6.49511C1.57188 6.63678 1.5 6.81232 1.5 7.02174C1.5 7.23116 1.57188 7.4067 1.71563 7.54837C1.85938 7.69004 2.0375 7.76087 2.25 7.76087ZM5.03438 15.3092C5.17813 15.1676 5.25 14.992 5.25 14.7826C5.25 14.5732 5.17813 14.3976 5.03438 14.256C4.89062 14.1143 4.7125 14.0435 4.5 14.0435C4.2875 14.0435 4.10938 14.1143 3.96563 14.256C3.82188 14.3976 3.75 14.5732 3.75 14.7826C3.75 14.992 3.82188 15.1676 3.96563 15.3092C4.10938 15.4509 4.2875 15.5217 4.5 15.5217C4.7125 15.5217 4.89062 15.4509 5.03438 15.3092ZM9.53438 2.74402C9.67813 2.60236 9.75 2.42681 9.75 2.21739C9.75 2.00797 9.67813 1.83243 9.53438 1.69076C9.39062 1.54909 9.2125 1.47826 9 1.47826C8.7875 1.47826 8.60938 1.54909 8.46563 1.69076C8.32188 1.83243 8.25 2.00797 8.25 2.21739C8.25 2.42681 8.32188 2.60236 8.46563 2.74402C8.60938 2.88569 8.7875 2.95652 9 2.95652C9.2125 2.95652 9.39062 2.88569 9.53438 2.74402ZM9 11.087C9.525 11.087 9.96875 10.9083 10.3313 10.5511C10.6938 10.1938 10.875 9.75652 10.875 9.23913C10.875 8.72174 10.6938 8.28442 10.3313 7.92717C9.96875 7.56993 9.525 7.3913 9 7.3913C8.475 7.3913 8.03125 7.56993 7.66875 7.92717C7.30625 8.28442 7.125 8.72174 7.125 9.23913C7.125 9.75652 7.30625 10.1938 7.66875 10.5511C8.03125 10.9083 8.475 11.087 9 11.087ZM14.0344 15.3092C14.1781 15.1676 14.25 14.992 14.25 14.7826C14.25 14.5732 14.1781 14.3976 14.0344 14.256C13.8906 14.1143 13.7125 14.0435 13.5 14.0435C13.2875 14.0435 13.1094 14.1143 12.9656 14.256C12.8219 14.3976 12.75 14.5732 12.75 14.7826C12.75 14.992 12.8219 15.1676 12.9656 15.3092C13.1094 15.4509 13.2875 15.5217 13.5 15.5217C13.7125 15.5217 13.8906 15.4509 14.0344 15.3092ZM16.2844 7.54837C16.4281 7.4067 16.5 7.23116 16.5 7.02174C16.5 6.81232 16.4281 6.63678 16.2844 6.49511C16.1406 6.35344 15.9625 6.28261 15.75 6.28261C15.5375 6.28261 15.3594 6.35344 15.2156 6.49511C15.0719 6.63678 15 6.81232 15 7.02174C15 7.23116 15.0719 7.4067 15.2156 7.54837C15.3594 7.69004 15.5375 7.76087 15.75 7.76087C15.9625 7.76087 16.1406 7.69004 16.2844 7.54837Z\", fill: \"currentColor\" }));\nexport default SvgOrchestrator;\n","import * as React from \"react\";\nconst SvgPause = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 16 16\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"rect\", { x: 3.5, y: 2.5, width: 3, height: 11, rx: 0.5, fill: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"rect\", { x: 9.5, y: 2.5, width: 3, height: 11, rx: 0.5, fill: \"currentColor\" }));\nexport default SvgPause;\n","import * as React from \"react\";\nconst SvgPencil = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"-0.25 -0.25 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M0.750015 0.750015L12.35 3.55002L13.55 9.55002L9.55002 13.55L3.55002 12.35L0.750015 0.750015ZM0.750015 0.750015L6.81882 6.81882M8.75002 14.35L14.35 8.75002L16.75 11.15L11.15 16.75L8.75002 14.35ZM9.55002 7.95002C9.55002 8.83367 8.83367 9.55002 7.95002 9.55002C7.06636 9.55002 6.35002 8.83367 6.35002 7.95002C6.35002 7.06636 7.06636 6.35002 7.95002 6.35002C8.83367 6.35002 9.55002 7.06636 9.55002 7.95002Z\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }));\nexport default SvgPencil;\n","import * as React from \"react\";\nconst SvgPin = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M13 2.61209V8.25441L14.7 9.62468C14.8 9.70529 14.875 9.79597 14.925 9.89672C14.975 9.99748 15 10.1016 15 10.2091V10.6725C15 10.9009 14.9042 11.0924 14.7125 11.2469C14.5208 11.4013 14.2833 11.4786 14 11.4786H10V16.194C10 16.4223 9.90417 16.6138 9.7125 16.7683C9.52083 16.9228 9.28333 17 9 17C8.71667 17 8.47917 16.9228 8.2875 16.7683C8.09583 16.6138 8 16.4223 8 16.194V11.4786H4C3.71667 11.4786 3.47917 11.4013 3.2875 11.2469C3.09583 11.0924 3 10.9009 3 10.6725V10.2091C3 10.1016 3.025 9.99748 3.075 9.89672C3.125 9.79597 3.2 9.70529 3.3 9.62468L5 8.25441V2.61209C4.71667 2.61209 4.47917 2.53484 4.2875 2.38035C4.09583 2.22586 4 2.03442 4 1.80605C4 1.57767 4.09583 1.38623 4.2875 1.23174C4.47917 1.07725 4.71667 1 5 1H13C13.2833 1 13.5208 1.07725 13.7125 1.23174C13.9042 1.38623 14 1.57767 14 1.80605C14 2.03442 13.9042 2.22586 13.7125 2.38035C13.5208 2.53484 13.2833 2.61209 13 2.61209ZM5.85 9.8665H12.15L11 8.93955V2.61209H7V8.93955L5.85 9.8665Z\", fill: \"currentColor\" }));\nexport default SvgPin;\n","import * as React from \"react\";\nconst SvgPlay = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 16 16\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M4 2.5v11l10-5.5z\", fill: \"currentColor\" }));\nexport default SvgPlay;\n","import * as React from \"react\";\nconst SvgPolyline = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9 3.9H10.6667V2.2H9V3.9ZM3.16667 10.7H4.83333V9H3.16667V10.7ZM13.1667 15.8H14.8333V14.1H13.1667V15.8ZM11.5 15.8V15.375L5.66667 12.4H3.16667C2.70833 12.4 2.31597 12.2335 1.98958 11.9006C1.66319 11.5677 1.5 11.1675 1.5 10.7V9C1.5 8.5325 1.66319 8.13229 1.98958 7.79938C2.31597 7.46646 2.70833 7.3 3.16667 7.3H5.08333L7.33333 4.665V2.2C7.33333 1.7325 7.49653 1.33229 7.82292 0.999375C8.14931 0.666458 8.54167 0.5 9 0.5H10.6667C11.125 0.5 11.5174 0.666458 11.8438 0.999375C12.1701 1.33229 12.3333 1.7325 12.3333 2.2V3.9C12.3333 4.3675 12.1701 4.76771 11.8438 5.10063C11.5174 5.43354 11.125 5.6 10.6667 5.6H8.75L6.5 8.235V10.9125L11.6042 13.505C11.7153 13.1792 11.9132 12.9135 12.1979 12.7081C12.4826 12.5027 12.8056 12.4 13.1667 12.4H14.8333C15.2917 12.4 15.684 12.5665 16.0104 12.8994C16.3368 13.2323 16.5 13.6325 16.5 14.1V15.8C16.5 16.2675 16.3368 16.6677 16.0104 17.0006C15.684 17.3335 15.2917 17.5 14.8333 17.5H13.1667C12.7083 17.5 12.316 17.3335 11.9896 17.0006C11.6632 16.6677 11.5 16.2675 11.5 15.8Z\", fill: \"currentColor\" }));\nexport default SvgPolyline;\n","import * as React from \"react\";\nconst SvgPuzzle = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M15.39 4.39a1 1 0 0 0 1.68-.474 2.5 2.5 0 1 1 3.014 3.015 1 1 0 0 0-.474 1.68l1.683 1.682a2.414 2.414 0 0 1 0 3.414L19.61 15.39a1 1 0 0 1-1.68-.474 2.5 2.5 0 1 0-3.014 3.015 1 1 0 0 1 .474 1.68l-1.683 1.682a2.414 2.414 0 0 1-3.414 0L8.61 19.61a1 1 0 0 0-1.68.474 2.5 2.5 0 1 1-3.014-3.015 1 1 0 0 0 .474-1.68l-1.683-1.682a2.414 2.414 0 0 1 0-3.414L4.39 8.61a1 1 0 0 1 1.68.474 2.5 2.5 0 1 0 3.014-3.015 1 1 0 0 1-.474-1.68l1.683-1.682a2.414 2.414 0 0 1 3.414 0z\" }));\nexport default SvgPuzzle;\n","import * as React from \"react\";\nconst SvgRadio = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9 13C10.1067 13 11.05 12.61 11.83 11.83C12.61 11.05 13 10.1067 13 9C13 7.89333 12.61 6.95 11.83 6.17C11.05 5.39 10.1067 5 9 5C7.89333 5 6.95 5.39 6.17 6.17C5.39 6.95 5 7.89333 5 9C5 10.1067 5.39 11.05 6.17 11.83C6.95 12.61 7.89333 13 9 13ZM9 17C7.89333 17 6.85333 16.79 5.88 16.37C4.90667 15.95 4.06 15.38 3.34 14.66C2.62 13.94 2.05 13.0933 1.63 12.12C1.21 11.1467 1 10.1067 1 9C1 7.89333 1.21 6.85333 1.63 5.88C2.05 4.90667 2.62 4.06 3.34 3.34C4.06 2.62 4.90667 2.05 5.88 1.63C6.85333 1.21 7.89333 1 9 1C10.1067 1 11.1467 1.21 12.12 1.63C13.0933 2.05 13.94 2.62 14.66 3.34C15.38 4.06 15.95 4.90667 16.37 5.88C16.79 6.85333 17 7.89333 17 9C17 10.1067 16.79 11.1467 16.37 12.12C15.95 13.0933 15.38 13.94 14.66 14.66C13.94 15.38 13.0933 15.95 12.12 16.37C11.1467 16.79 10.1067 17 9 17ZM9 15.4C10.7867 15.4 12.3 14.78 13.54 13.54C14.78 12.3 15.4 10.7867 15.4 9C15.4 7.21333 14.78 5.7 13.54 4.46C12.3 3.22 10.7867 2.6 9 2.6C7.21333 2.6 5.7 3.22 4.46 4.46C3.22 5.7 2.6 7.21333 2.6 9C2.6 10.7867 3.22 12.3 4.46 13.54C5.7 14.78 7.21333 15.4 9 15.4Z\", fill: \"currentColor\" }));\nexport default SvgRadio;\n","import * as React from \"react\";\nconst SvgRedo = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M13.057 16C13.3299 16 13.5586 15.9079 13.7432 15.7238C13.9278 15.5397 14.0201 15.3116 14.0201 15.0395C14.0201 14.7673 13.9278 14.5392 13.7432 14.3551C13.5586 14.171 13.3299 14.0789 13.057 14.0789H7.18218C6.17095 14.0789 5.29214 13.7587 4.54575 13.1184C3.79936 12.478 3.42616 11.6775 3.42616 10.717C3.42616 9.75643 3.79936 8.95598 4.54575 8.31561C5.29214 7.67524 6.17095 7.35506 7.18218 7.35506H13.2496L11.4197 9.1801C11.2432 9.3562 11.1549 9.58033 11.1549 9.85249C11.1549 10.1246 11.2432 10.3488 11.4197 10.5249C11.5963 10.701 11.821 10.789 12.0939 10.789C12.3668 10.789 12.5915 10.701 12.7681 10.5249L16.2352 7.0669C16.3315 6.97084 16.3997 6.86678 16.4398 6.75472C16.4799 6.64265 16.5 6.52258 16.5 6.39451C16.5 6.26644 16.4799 6.14637 16.4398 6.03431C16.3997 5.92224 16.3315 5.81818 16.2352 5.72213L12.7681 2.26415C12.5915 2.08805 12.3668 2 12.0939 2C11.821 2 11.5963 2.08805 11.4197 2.26415C11.2432 2.44025 11.1549 2.66438 11.1549 2.93654C11.1549 3.20869 11.2432 3.43282 11.4197 3.60892L13.2496 5.43396H7.18218C5.6252 5.43396 4.28892 5.93825 3.17336 6.94683C2.05779 7.9554 1.5 9.21212 1.5 10.717C1.5 12.2218 2.05779 13.4786 3.17336 14.4871C4.28892 15.4957 5.6252 16 7.18218 16H13.057Z\", fill: \"currentColor\" }));\nexport default SvgRedo;\n","import * as React from \"react\";\nconst SvgRefresh = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M4.125 9.04019C4.125 9.25453 4.13854 9.46552 4.16562 9.67317C4.19271 9.88081 4.2401 10.0851 4.30781 10.2861C4.37552 10.5138 4.36875 10.7315 4.2875 10.9391C4.20625 11.1468 4.06406 11.2975 3.86094 11.3913C3.64427 11.4984 3.43099 11.5085 3.22109 11.4214C3.0112 11.3343 2.8724 11.1769 2.80469 10.9492C2.69635 10.6411 2.61849 10.3262 2.57109 10.0047C2.5237 9.68322 2.5 9.3617 2.5 9.04019C2.5 7.24507 3.12969 5.71789 4.38906 4.45863C5.64844 3.19937 7.18542 2.56974 9 2.56974H9.14219L8.41094 1.84634C8.26198 1.69898 8.1875 1.51143 8.1875 1.28369C8.1875 1.05595 8.26198 0.8684 8.41094 0.72104C8.5599 0.57368 8.74948 0.5 8.97969 0.5C9.2099 0.5 9.39948 0.57368 9.54844 0.72104L11.6609 2.81087C11.8234 2.97163 11.9047 3.15918 11.9047 3.37352C11.9047 3.58786 11.8234 3.77541 11.6609 3.93617L9.54844 6.026C9.39948 6.17336 9.2099 6.24705 8.97969 6.24705C8.74948 6.24705 8.5599 6.17336 8.41094 6.026C8.26198 5.87864 8.1875 5.6911 8.1875 5.46336C8.1875 5.23562 8.26198 5.04807 8.41094 4.90071L9.14219 4.1773H9C7.64583 4.1773 6.49479 4.64953 5.54688 5.59397C4.59896 6.53842 4.125 7.68716 4.125 9.04019ZM13.875 8.95981C13.875 8.74547 13.8615 8.53448 13.8344 8.32683C13.8073 8.11919 13.7599 7.91489 13.6922 7.71395C13.6245 7.48621 13.6312 7.26852 13.7125 7.06087C13.7937 6.85323 13.9359 6.70252 14.1391 6.60875C14.3557 6.50158 14.569 6.49153 14.7789 6.57861C14.9888 6.66568 15.1276 6.82309 15.1953 7.05083C15.3036 7.35894 15.3815 7.67376 15.4289 7.99527C15.4763 8.31678 15.5 8.6383 15.5 8.95981C15.5 10.7549 14.8703 12.2821 13.6109 13.5414C12.3516 14.8006 10.8146 15.4303 9 15.4303H8.85781L9.58906 16.1537C9.73802 16.301 9.8125 16.4886 9.8125 16.7163C9.8125 16.944 9.73802 17.1316 9.58906 17.279C9.4401 17.4263 9.25052 17.5 9.02031 17.5C8.7901 17.5 8.60052 17.4263 8.45156 17.279L6.33906 15.1891C6.17656 15.0284 6.09531 14.8408 6.09531 14.6265C6.09531 14.4121 6.17656 14.2246 6.33906 14.0638L8.45156 11.974C8.60052 11.8266 8.7901 11.753 9.02031 11.753C9.25052 11.753 9.4401 11.8266 9.58906 11.974C9.73802 12.1214 9.8125 12.3089 9.8125 12.5366C9.8125 12.7644 9.73802 12.9519 9.58906 13.0993L8.85781 13.8227H9C10.3542 13.8227 11.5052 13.3505 12.4531 12.406C13.401 11.4616 13.875 10.3128 13.875 8.95981Z\", fill: \"currentColor\" }));\nexport default SvgRefresh;\n","import * as React from \"react\";\nconst SvgRemove = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M2.57143 10C2.26786 10 2.01339 9.90417 1.80804 9.7125C1.60268 9.52083 1.5 9.28333 1.5 9C1.5 8.71667 1.60268 8.47917 1.80804 8.2875C2.01339 8.09583 2.26786 8 2.57143 8H15.4286C15.7321 8 15.9866 8.09583 16.192 8.2875C16.3973 8.47917 16.5 8.71667 16.5 9C16.5 9.28333 16.3973 9.52083 16.192 9.7125C15.9866 9.90417 15.7321 10 15.4286 10H2.57143Z\", fill: \"currentColor\" }));\nexport default SvgRemove;\n","import * as React from \"react\";\nconst SvgReview = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M11.2494 1.5H6.7494C6.3352 1.5 5.9994 1.8357 5.9994 2.25V3.75C5.9994 4.1642 6.3352 4.5 6.7494 4.5H11.2494C11.6636 4.5 11.9994 4.1642 11.9994 3.75V2.25C11.9994 1.8357 11.6636 1.5 11.2494 1.5Z\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M12.0006 3H13.5006C13.8984 3 14.2799 3.1581 14.5612 3.4394C14.8425 3.7207 15.0006 4.1022 15.0006 4.5V15C15.0006 15.3979 14.8425 15.7794 14.5612 16.0607C14.2799 16.342 13.8984 16.5 13.5006 16.5H4.5006C4.1028 16.5 3.7212 16.342 3.4399 16.0607C3.1586 15.7794 3.0006 15.3979 3.0006 15V4.5C3.0006 4.1022 3.1586 3.7207 3.4399 3.4394C3.7212 3.1581 4.1028 3 4.5006 3H6.0006\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M6.75 10.5L8.25 12L11.25 9\", stroke: \"currentColor\", strokeWidth: 1.5, strokeLinecap: \"round\", strokeLinejoin: \"round\" }));\nexport default SvgReview;\n","import * as React from \"react\";\nconst SvgSearch = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M6.9175 12.835C5.26363 12.835 3.86392 12.2622 2.71835 11.1166C1.57278 9.97108 1 8.57136 1 6.9175C1 5.26363 1.57278 3.86392 2.71835 2.71835C3.86392 1.57278 5.26363 1 6.9175 1C8.57136 1 9.97108 1.57278 11.1166 2.71835C12.2622 3.86392 12.835 5.26363 12.835 6.9175C12.835 7.58511 12.7288 8.21479 12.5164 8.80654C12.3039 9.39829 12.0156 9.92176 11.6515 10.377L16.7496 15.4751C16.9165 15.642 17 15.8544 17 16.1124C17 16.3703 16.9165 16.5827 16.7496 16.7496C16.5827 16.9165 16.3703 17 16.1124 17C15.8544 17 15.642 16.9165 15.4751 16.7496L10.377 11.6515C9.92176 12.0156 9.39829 12.3039 8.80654 12.5164C8.21479 12.7288 7.58511 12.835 6.9175 12.835ZM6.9175 11.0142C8.05548 11.0142 9.02276 10.6159 9.81935 9.81935C10.6159 9.02276 11.0142 8.05548 11.0142 6.9175C11.0142 5.77952 10.6159 4.81223 9.81935 4.01565C9.02276 3.21906 8.05548 2.82077 6.9175 2.82077C5.77952 2.82077 4.81223 3.21906 4.01565 4.01565C3.21906 4.81223 2.82077 5.77952 2.82077 6.9175C2.82077 8.05548 3.21906 9.02276 4.01565 9.81935C4.81223 10.6159 5.77952 11.0142 6.9175 11.0142Z\", fill: \"currentColor\" }));\nexport default SvgSearch;\n","import * as React from \"react\";\nconst SvgServer = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"rect\", { width: 20, height: 8, x: 2, y: 2, rx: 2, ry: 2 }), /* @__PURE__ */ React.createElement(\"rect\", { width: 20, height: 8, x: 2, y: 14, rx: 2, ry: 2 }), /* @__PURE__ */ React.createElement(\"line\", { x1: 6, x2: 6.01, y1: 6, y2: 6 }), /* @__PURE__ */ React.createElement(\"line\", { x1: 6, x2: 6.01, y1: 18, y2: 18 }));\nexport default SvgServer;\n","import * as React from \"react\";\nconst SvgSettings = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M8.13603 16.5C7.80515 16.5 7.52022 16.3875 7.28125 16.1625C7.04228 15.9375 6.89828 15.6625 6.84926 15.3375L6.68382 14.1C6.52451 14.0375 6.37439 13.9625 6.23346 13.875C6.09252 13.7875 5.95466 13.6938 5.81985 13.5938L4.68015 14.0813C4.37377 14.2188 4.0674 14.2313 3.76103 14.1188C3.45466 14.0063 3.21569 13.8063 3.04412 13.5188L2.18015 11.9813C2.00858 11.6938 1.95956 11.3875 2.03309 11.0625C2.10662 10.7375 2.27206 10.4688 2.52941 10.2563L3.50368 9.50625C3.49142 9.41875 3.48529 9.33438 3.48529 9.25313V8.74688C3.48529 8.66563 3.49142 8.58125 3.50368 8.49375L2.52941 7.74375C2.27206 7.53125 2.10662 7.2625 2.03309 6.9375C1.95956 6.6125 2.00858 6.30625 2.18015 6.01875L3.04412 4.48125C3.21569 4.19375 3.45466 3.99375 3.76103 3.88125C4.0674 3.76875 4.37377 3.78125 4.68015 3.91875L5.81985 4.40625C5.95466 4.30625 6.09559 4.2125 6.24265 4.125C6.38971 4.0375 6.53677 3.9625 6.68382 3.9L6.84926 2.6625C6.89828 2.3375 7.04228 2.0625 7.28125 1.8375C7.52022 1.6125 7.80515 1.5 8.13603 1.5H9.86397C10.1949 1.5 10.4798 1.6125 10.7188 1.8375C10.9577 2.0625 11.1017 2.3375 11.1507 2.6625L11.3162 3.9C11.4755 3.9625 11.6256 4.0375 11.7665 4.125C11.9075 4.2125 12.0453 4.30625 12.1801 4.40625L13.3199 3.91875C13.6262 3.78125 13.9326 3.76875 14.239 3.88125C14.5453 3.99375 14.7843 4.19375 14.9559 4.48125L15.8199 6.01875C15.9914 6.30625 16.0404 6.6125 15.9669 6.9375C15.8934 7.2625 15.7279 7.53125 15.4706 7.74375L14.4963 8.49375C14.5086 8.58125 14.5147 8.66563 14.5147 8.74688V9.25313C14.5147 9.33438 14.5025 9.41875 14.4779 9.50625L15.4522 10.2563C15.7096 10.4688 15.875 10.7375 15.9485 11.0625C16.0221 11.3875 15.973 11.6938 15.8015 11.9813L14.9191 13.5188C14.7475 13.8063 14.5086 14.0063 14.2022 14.1188C13.8958 14.2313 13.5895 14.2188 13.2831 14.0813L12.1801 13.5938C12.0453 13.6938 11.9044 13.7875 11.7574 13.875C11.6103 13.9625 11.4632 14.0375 11.3162 14.1L11.1507 15.3375C11.1017 15.6625 10.9577 15.9375 10.7188 16.1625C10.4798 16.3875 10.1949 16.5 9.86397 16.5H8.13603ZM8.26471 15H9.71691L9.97426 13.0125C10.3542 12.9125 10.7065 12.7656 11.0312 12.5719C11.356 12.3781 11.6532 12.1438 11.9228 11.8688L13.7426 12.6375L14.4596 11.3625L12.8787 10.1438C12.94 9.96875 12.9828 9.78438 13.0074 9.59063C13.0319 9.39688 13.0441 9.2 13.0441 9C13.0441 8.8 13.0319 8.60313 13.0074 8.40938C12.9828 8.21563 12.94 8.03125 12.8787 7.85625L14.4596 6.6375L13.7426 5.3625L11.9228 6.15C11.6532 5.8625 11.356 5.62188 11.0312 5.42813C10.7065 5.23438 10.3542 5.0875 9.97426 4.9875L9.73529 3H8.28309L8.02574 4.9875C7.64583 5.0875 7.2935 5.23438 6.96875 5.42813C6.644 5.62188 6.34681 5.85625 6.07721 6.13125L4.25735 5.3625L3.54044 6.6375L5.12132 7.8375C5.06005 8.025 5.01716 8.2125 4.99265 8.4C4.96814 8.5875 4.95588 8.7875 4.95588 9C4.95588 9.2 4.96814 9.39375 4.99265 9.58125C5.01716 9.76875 5.06005 9.95625 5.12132 10.1438L3.54044 11.3625L4.25735 12.6375L6.07721 11.85C6.34681 12.1375 6.644 12.3781 6.96875 12.5719C7.2935 12.7656 7.64583 12.9125 8.02574 13.0125L8.26471 15ZM9.03676 11.625C9.74755 11.625 10.3542 11.3688 10.8566 10.8563C11.3591 10.3438 11.6103 9.725 11.6103 9C11.6103 8.275 11.3591 7.65625 10.8566 7.14375C10.3542 6.63125 9.74755 6.375 9.03676 6.375C8.31373 6.375 7.70404 6.63125 7.20772 7.14375C6.7114 7.65625 6.46324 8.275 6.46324 9C6.46324 9.725 6.7114 10.3438 7.20772 10.8563C7.70404 11.3688 8.31373 11.625 9.03676 11.625Z\", fill: \"currentColor\" }));\nexport default SvgSettings;\n","import * as React from \"react\";\nconst SvgShieldCheck = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m9 12 2 2 4-4\" }));\nexport default SvgShieldCheck;\n","import * as React from \"react\";\nconst SvgSlider = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M15.75 11.5C15.285 11.5 14.865 11.3583 14.49 11.075C14.115 10.7917 13.845 10.4333 13.68 10H0.9C0.645 10 0.43125 9.90417 0.25875 9.7125C0.08625 9.52083 0 9.28333 0 9C0 8.71667 0.08625 8.47917 0.25875 8.2875C0.43125 8.09583 0.645 8 0.9 8H13.68C13.845 7.56667 14.115 7.20833 14.49 6.925C14.865 6.64167 15.285 6.5 15.75 6.5C16.38 6.5 16.9125 6.74167 17.3475 7.225C17.7825 7.70833 18 8.3 18 9C18 9.7 17.7825 10.2917 17.3475 10.775C16.9125 11.2583 16.38 11.5 15.75 11.5Z\", fill: \"currentColor\" }));\nexport default SvgSlider;\n","import * as React from \"react\";\nconst SvgSliders = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"-1 -1 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M8 16C7.74815 16 7.53704 15.9148 7.36667 15.7444C7.1963 15.5741 7.11111 15.363 7.11111 15.1111V11.5556C7.11111 11.3037 7.1963 11.0926 7.36667 10.9222C7.53704 10.7519 7.74815 10.6667 8 10.6667C8.25185 10.6667 8.46296 10.7519 8.63333 10.9222C8.8037 11.0926 8.88889 11.3037 8.88889 11.5556V12.4444H15.1111C15.363 12.4444 15.5741 12.5296 15.7444 12.7C15.9148 12.8704 16 13.0815 16 13.3333C16 13.5852 15.9148 13.7963 15.7444 13.9667C15.5741 14.137 15.363 14.2222 15.1111 14.2222H8.88889V15.1111C8.88889 15.363 8.8037 15.5741 8.63333 15.7444C8.46296 15.9148 8.25185 16 8 16ZM0.888889 14.2222C0.637037 14.2222 0.425926 14.137 0.255556 13.9667C0.0851852 13.7963 0 13.5852 0 13.3333C0 13.0815 0.0851852 12.8704 0.255556 12.7C0.425926 12.5296 0.637037 12.4444 0.888889 12.4444H4.44444C4.6963 12.4444 4.90741 12.5296 5.07778 12.7C5.24815 12.8704 5.33333 13.0815 5.33333 13.3333C5.33333 13.5852 5.24815 13.7963 5.07778 13.9667C4.90741 14.137 4.6963 14.2222 4.44444 14.2222H0.888889ZM4.44444 10.6667C4.19259 10.6667 3.98148 10.5815 3.81111 10.4111C3.64074 10.2407 3.55556 10.0296 3.55556 9.77778V8.88889H0.888889C0.637037 8.88889 0.425926 8.8037 0.255556 8.63333C0.0851852 8.46296 0 8.25185 0 8C0 7.74815 0.0851852 7.53704 0.255556 7.36667C0.425926 7.1963 0.637037 7.11111 0.888889 7.11111H3.55556V6.22222C3.55556 5.97037 3.64074 5.75926 3.81111 5.58889C3.98148 5.41852 4.19259 5.33333 4.44444 5.33333C4.6963 5.33333 4.90741 5.41852 5.07778 5.58889C5.24815 5.75926 5.33333 5.97037 5.33333 6.22222V9.77778C5.33333 10.0296 5.24815 10.2407 5.07778 10.4111C4.90741 10.5815 4.6963 10.6667 4.44444 10.6667ZM8 8.88889C7.74815 8.88889 7.53704 8.8037 7.36667 8.63333C7.1963 8.46296 7.11111 8.25185 7.11111 8C7.11111 7.74815 7.1963 7.53704 7.36667 7.36667C7.53704 7.1963 7.74815 7.11111 8 7.11111H15.1111C15.363 7.11111 15.5741 7.1963 15.7444 7.36667C15.9148 7.53704 16 7.74815 16 8C16 8.25185 15.9148 8.46296 15.7444 8.63333C15.5741 8.8037 15.363 8.88889 15.1111 8.88889H8ZM11.5556 5.33333C11.3037 5.33333 11.0926 5.24815 10.9222 5.07778C10.7519 4.90741 10.6667 4.6963 10.6667 4.44444V0.888889C10.6667 0.637037 10.7519 0.425926 10.9222 0.255556C11.0926 0.0851852 11.3037 0 11.5556 0C11.8074 0 12.0185 0.0851852 12.1889 0.255556C12.3593 0.425926 12.4444 0.637037 12.4444 0.888889V1.77778H15.1111C15.363 1.77778 15.5741 1.86296 15.7444 2.03333C15.9148 2.2037 16 2.41481 16 2.66667C16 2.91852 15.9148 3.12963 15.7444 3.3C15.5741 3.47037 15.363 3.55556 15.1111 3.55556H12.4444V4.44444C12.4444 4.6963 12.3593 4.90741 12.1889 5.07778C12.0185 5.24815 11.8074 5.33333 11.5556 5.33333ZM0.888889 3.55556C0.637037 3.55556 0.425926 3.47037 0.255556 3.3C0.0851852 3.12963 0 2.91852 0 2.66667C0 2.41481 0.0851852 2.2037 0.255556 2.03333C0.425926 1.86296 0.637037 1.77778 0.888889 1.77778H8C8.25185 1.77778 8.46296 1.86296 8.63333 2.03333C8.8037 2.2037 8.88889 2.41481 8.88889 2.66667C8.88889 2.91852 8.8037 3.12963 8.63333 3.3C8.46296 3.47037 8.25185 3.55556 8 3.55556H0.888889Z\", fill: \"currentColor\" }));\nexport default SvgSliders;\n","import * as React from \"react\";\nconst SvgTag = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M17.0106 10.9125L10.9255 16.99C10.7553 17.16 10.5638 17.2875 10.3511 17.3725C10.1383 17.4575 9.92553 17.5 9.71277 17.5C9.5 17.5 9.28723 17.4575 9.07447 17.3725C8.8617 17.2875 8.67021 17.16 8.5 16.99L0.989362 9.48875C0.833333 9.33292 0.712766 9.15229 0.62766 8.94687C0.542553 8.74146 0.5 8.52542 0.5 8.29875V2.2C0.5 1.7325 0.666667 1.33229 1 0.999375C1.33333 0.666458 1.73404 0.5 2.20213 0.5H8.30851C8.53546 0.5 8.75532 0.546042 8.96809 0.638125C9.18085 0.730208 9.36525 0.854167 9.52128 1.01L17.0106 8.51125C17.1809 8.68125 17.305 8.8725 17.383 9.085C17.461 9.2975 17.5 9.51 17.5 9.7225C17.5 9.935 17.461 10.144 17.383 10.3494C17.305 10.5548 17.1809 10.7425 17.0106 10.9125ZM9.71277 15.8L15.7979 9.7225L8.28723 2.2H2.20213V8.2775L9.71277 15.8ZM4.32979 5.6C4.6844 5.6 4.98582 5.47604 5.23404 5.22813C5.48227 4.98021 5.60638 4.67917 5.60638 4.325C5.60638 3.97083 5.48227 3.66979 5.23404 3.42188C4.98582 3.17396 4.6844 3.05 4.32979 3.05C3.97518 3.05 3.67376 3.17396 3.42553 3.42188C3.1773 3.66979 3.05319 3.97083 3.05319 4.325C3.05319 4.67917 3.1773 4.98021 3.42553 5.22813C3.67376 5.47604 3.97518 5.6 4.32979 5.6Z\", fill: \"currentColor\" }));\nexport default SvgTag;\n","import * as React from \"react\";\nconst SvgText = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M6.025 16C5.67083 16 5.36979 15.8724 5.12188 15.6172C4.87396 15.362 4.75 15.0521 4.75 14.6875V4.625H1.775C1.42083 4.625 1.11979 4.4974 0.871875 4.24219C0.623958 3.98698 0.5 3.67708 0.5 3.3125C0.5 2.94792 0.623958 2.63802 0.871875 2.38281C1.11979 2.1276 1.42083 2 1.775 2H10.275C10.6292 2 10.9302 2.1276 11.1781 2.38281C11.426 2.63802 11.55 2.94792 11.55 3.3125C11.55 3.67708 11.426 3.98698 11.1781 4.24219C10.9302 4.4974 10.6292 4.625 10.275 4.625H7.3V14.6875C7.3 15.0521 7.17604 15.362 6.92812 15.6172C6.68021 15.8724 6.37917 16 6.025 16ZM13.675 16C13.3208 16 13.0198 15.8724 12.7719 15.6172C12.524 15.362 12.4 15.0521 12.4 14.6875V9H11.125C10.7708 9 10.4698 8.8724 10.2219 8.61719C9.97396 8.36198 9.85 8.05208 9.85 7.6875C9.85 7.32292 9.97396 7.01302 10.2219 6.75781C10.4698 6.5026 10.7708 6.375 11.125 6.375H16.225C16.5792 6.375 16.8802 6.5026 17.1281 6.75781C17.376 7.01302 17.5 7.32292 17.5 7.6875C17.5 8.05208 17.376 8.36198 17.1281 8.61719C16.8802 8.8724 16.5792 9 16.225 9H14.95V14.6875C14.95 15.0521 14.826 15.362 14.5781 15.6172C14.3302 15.8724 14.0292 16 13.675 16Z\", fill: \"currentColor\" }));\nexport default SvgText;\n","import * as React from \"react\";\nconst SvgToggle = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M4.90909 13.9091C3.54545 13.9091 2.38636 13.4319 1.43182 12.4773C0.477273 11.5228 0 10.3637 0 9.00003C0 7.6364 0.477273 6.47731 1.43182 5.52276C2.38636 4.56822 3.54545 4.09094 4.90909 4.09094H13.0909C14.4545 4.09094 15.6136 4.56822 16.5682 5.52276C17.5227 6.47731 18 7.6364 18 9.00003C18 10.3637 17.5227 11.5228 16.5682 12.4773C15.6136 13.4319 14.4545 13.9091 13.0909 13.9091H4.90909ZM4.90909 12.2728H13.0909C13.9909 12.2728 14.7614 11.9523 15.4023 11.3114C16.0432 10.6705 16.3636 9.90003 16.3636 9.00003C16.3636 8.10003 16.0432 7.32958 15.4023 6.68867C14.7614 6.04776 13.9909 5.72731 13.0909 5.72731H4.90909C4.00909 5.72731 3.23864 6.04776 2.59773 6.68867C1.95682 7.32958 1.63636 8.10003 1.63636 9.00003C1.63636 9.90003 1.95682 10.6705 2.59773 11.3114C3.23864 11.9523 4.00909 12.2728 4.90909 12.2728ZM13.0909 11.4546C13.7727 11.4546 14.3523 11.2159 14.8295 10.7387C15.3068 10.2614 15.5455 9.68185 15.5455 9.00003C15.5455 8.31822 15.3068 7.73867 14.8295 7.2614C14.3523 6.78412 13.7727 6.54549 13.0909 6.54549C12.4091 6.54549 11.8295 6.78412 11.3523 7.2614C10.875 7.73867 10.6364 8.31822 10.6364 9.00003C10.6364 9.68185 10.875 10.2614 11.3523 10.7387C11.8295 11.2159 12.4091 11.4546 13.0909 11.4546Z\", fill: \"currentColor\" }));\nexport default SvgToggle;\n","import * as React from \"react\";\nconst SvgUndo = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M4.94302 16C4.67014 16 4.44141 15.9079 4.25682 15.7238C4.07223 15.5397 3.97994 15.3116 3.97994 15.0395C3.97994 14.7673 4.07223 14.5392 4.25682 14.3551C4.44141 14.171 4.67014 14.0789 4.94302 14.0789H10.8178C11.8291 14.0789 12.7079 13.7587 13.4543 13.1184C14.2006 12.478 14.5738 11.6775 14.5738 10.717C14.5738 9.75643 14.2006 8.95598 13.4543 8.31561C12.7079 7.67524 11.8291 7.35506 10.8178 7.35506H4.7504L6.58026 9.1801C6.75682 9.3562 6.8451 9.58033 6.8451 9.85249C6.8451 10.1246 6.75682 10.3488 6.58026 10.5249C6.40369 10.701 6.17897 10.789 5.9061 10.789C5.63323 10.789 5.40851 10.701 5.23194 10.5249L1.76485 7.0669C1.66854 6.97084 1.60032 6.86678 1.56019 6.75472C1.52006 6.64265 1.5 6.52258 1.5 6.39451C1.5 6.26644 1.52006 6.14637 1.56019 6.03431C1.60032 5.92224 1.66854 5.81818 1.76485 5.72213L5.23194 2.26415C5.40851 2.08805 5.63323 2 5.9061 2C6.17897 2 6.40369 2.08805 6.58026 2.26415C6.75682 2.44025 6.8451 2.66438 6.8451 2.93654C6.8451 3.20869 6.75682 3.43282 6.58026 3.60892L4.7504 5.43396H10.8178C12.3748 5.43396 13.7111 5.93825 14.8266 6.94683C15.9422 7.9554 16.5 9.21212 16.5 10.717C16.5 12.2218 15.9422 13.4786 14.8266 14.4871C13.7111 15.4957 12.3748 16 10.8178 16H4.94302Z\", fill: \"currentColor\" }));\nexport default SvgUndo;\n","import * as React from \"react\";\nconst SvgUnfoldMore = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9.0001 14.7901L11.2253 12.565C11.4167 12.3736 11.648 12.2779 11.9191 12.2779C12.1903 12.2779 12.4216 12.3736 12.613 12.565C12.8044 12.7564 12.9001 12.9877 12.9001 13.2589C12.9001 13.53 12.8044 13.7613 12.613 13.9527L9.67004 16.8957C9.57433 16.9914 9.47065 17.0592 9.35899 17.099C9.24734 17.1389 9.12771 17.1589 9.0001 17.1589C8.87249 17.1589 8.75286 17.1389 8.6412 17.099C8.52955 17.0592 8.42586 16.9914 8.33016 16.8957L5.38721 13.9527C5.1958 13.7613 5.1001 13.53 5.1001 13.2589C5.1001 12.9877 5.1958 12.7564 5.38721 12.565C5.57863 12.3736 5.80991 12.2779 6.08108 12.2779C6.35224 12.2779 6.58353 12.3736 6.77494 12.565L9.0001 14.7901ZM9.0001 3.20978L6.77494 5.43493C6.58353 5.62634 6.35224 5.72205 6.08108 5.72205C5.80991 5.72205 5.57863 5.62634 5.38721 5.43493C5.1958 5.24352 5.1001 5.01223 5.1001 4.74106C5.1001 4.4699 5.1958 4.23861 5.38721 4.0472L8.33016 1.10425C8.42586 1.00855 8.52955 0.940758 8.6412 0.90088C8.75286 0.861003 8.87249 0.841064 9.0001 0.841064C9.12771 0.841064 9.24734 0.861003 9.35899 0.90088C9.47065 0.940758 9.57433 1.00855 9.67004 1.10425L12.613 4.0472C12.8044 4.23861 12.9001 4.4699 12.9001 4.74106C12.9001 5.01223 12.8044 5.24352 12.613 5.43493C12.4216 5.62634 12.1903 5.72205 11.9191 5.72205C11.648 5.72205 11.4167 5.62634 11.2253 5.43493L9.0001 3.20978Z\", fill: \"currentColor\" }));\nexport default SvgUnfoldMore;\n","import * as React from \"react\";\nconst SvgUnlock = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M4.125 17C3.67812 17 3.29557 16.8508 2.97734 16.5524C2.65911 16.254 2.5 15.8952 2.5 15.4762V7.85714C2.5 7.4381 2.65911 7.07937 2.97734 6.78095C3.29557 6.48254 3.67812 6.33333 4.125 6.33333H11.4375V4.80952C11.4375 4.1746 11.2005 3.63492 10.7266 3.19048C10.2526 2.74603 9.67708 2.52381 9 2.52381C8.43125 2.52381 7.93359 2.68571 7.50703 3.00952C7.08047 3.33333 6.79271 3.73651 6.64375 4.21905C6.58958 4.39683 6.47786 4.53968 6.30859 4.64762C6.13932 4.75556 5.95312 4.80952 5.75 4.80952C5.51979 4.80952 5.32682 4.73968 5.17109 4.6C5.01536 4.46032 4.95781 4.29524 4.99844 4.10476C5.18802 3.22857 5.65521 2.49206 6.4 1.89524C7.14479 1.29841 8.01146 1 9 1C10.124 1 11.082 1.37143 11.8742 2.11429C12.6664 2.85714 13.0625 3.75556 13.0625 4.80952V6.33333H13.875C14.3219 6.33333 14.7044 6.48254 15.0227 6.78095C15.3409 7.07937 15.5 7.4381 15.5 7.85714V15.4762C15.5 15.8952 15.3409 16.254 15.0227 16.5524C14.7044 16.8508 14.3219 17 13.875 17H4.125ZM4.125 15.4762H13.875V7.85714H4.125V15.4762ZM9 13.1905C9.44687 13.1905 9.82943 13.0413 10.1477 12.7429C10.4659 12.4444 10.625 12.0857 10.625 11.6667C10.625 11.2476 10.4659 10.8889 10.1477 10.5905C9.82943 10.2921 9.44687 10.1429 9 10.1429C8.55312 10.1429 8.17057 10.2921 7.85234 10.5905C7.53411 10.8889 7.375 11.2476 7.375 11.6667C7.375 12.0857 7.53411 12.4444 7.85234 12.7429C8.17057 13.0413 8.55312 13.1905 9 13.1905Z\", fill: \"currentColor\" }));\nexport default SvgUnlock;\n","import * as React from \"react\";\nconst SvgUnsupported = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9 16.5C7.9625 16.5 6.9875 16.3031 6.075 15.9094C5.1625 15.5156 4.36875 14.9813 3.69375 14.3063C3.01875 13.6313 2.48438 12.8375 2.09063 11.925C1.69688 11.0125 1.5 10.0375 1.5 9C1.5 7.9625 1.69688 6.9875 2.09063 6.075C2.48438 5.1625 3.01875 4.36875 3.69375 3.69375C4.36875 3.01875 5.1625 2.48438 6.075 2.09063C6.9875 1.69688 7.9625 1.5 9 1.5C10.0375 1.5 11.0125 1.69688 11.925 2.09063C12.8375 2.48438 13.6313 3.01875 14.3063 3.69375C14.9813 4.36875 15.5156 5.1625 15.9094 6.075C16.3031 6.9875 16.5 7.9625 16.5 9C16.5 10.0375 16.3031 11.0125 15.9094 11.925C15.5156 12.8375 14.9813 13.6313 14.3063 14.3063C13.6313 14.9813 12.8375 15.5156 11.925 15.9094C11.0125 16.3031 10.0375 16.5 9 16.5ZM9 15C9.675 15 10.325 14.8906 10.95 14.6719C11.575 14.4531 12.15 14.1375 12.675 13.725L4.275 5.325C3.8625 5.85 3.54688 6.425 3.32813 7.05C3.10938 7.675 3 8.325 3 9C3 10.675 3.58125 12.0938 4.74375 13.2563C5.90625 14.4188 7.325 15 9 15ZM13.725 12.675C14.1375 12.15 14.4531 11.575 14.6719 10.95C14.8906 10.325 15 9.675 15 9C15 7.325 14.4188 5.90625 13.2563 4.74375C12.0938 3.58125 10.675 3 9 3C8.325 3 7.675 3.10938 7.05 3.32813C6.425 3.54688 5.85 3.8625 5.325 4.275L13.725 12.675Z\", fill: \"currentColor\" }));\nexport default SvgUnsupported;\n","import * as React from \"react\";\nconst SvgUpload = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 -2.5 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M8.18182 7.19062L7.44545 7.90156C7.29545 8.05052 7.10795 8.125 6.88295 8.125C6.65795 8.125 6.46364 8.04375 6.3 7.88125C6.15 7.73229 6.075 7.54271 6.075 7.3125C6.075 7.08229 6.15 6.89271 6.3 6.74375L8.42727 4.63125C8.59091 4.46875 8.78182 4.3875 9 4.3875C9.21818 4.3875 9.40909 4.46875 9.57273 4.63125L11.7 6.74375C11.85 6.89271 11.9284 7.07891 11.9352 7.30234C11.942 7.52578 11.8636 7.71875 11.7 7.88125C11.55 8.03021 11.3625 8.10807 11.1375 8.11484C10.9125 8.12161 10.7182 8.05052 10.5545 7.90156L9.81818 7.19062V11.375H14.3182C14.8909 11.375 15.375 11.1786 15.7705 10.7859C16.1659 10.3932 16.3636 9.9125 16.3636 9.34375C16.3636 8.775 16.1659 8.29427 15.7705 7.90156C15.375 7.50885 14.8909 7.3125 14.3182 7.3125H13.0909V5.6875C13.0909 4.56354 12.692 3.60547 11.8943 2.81328C11.0966 2.02109 10.1318 1.625 9 1.625C7.86818 1.625 6.90341 2.02109 6.10568 2.81328C5.30795 3.60547 4.90909 4.56354 4.90909 5.6875H4.5C3.70909 5.6875 3.03409 5.9651 2.475 6.52031C1.91591 7.07552 1.63636 7.74583 1.63636 8.53125C1.63636 9.31667 1.91591 9.98698 2.475 10.5422C3.03409 11.0974 3.70909 11.375 4.5 11.375H5.72727C5.95909 11.375 6.15341 11.4529 6.31023 11.6086C6.46705 11.7643 6.54545 11.9573 6.54545 12.1875C6.54545 12.4177 6.46705 12.6107 6.31023 12.7664C6.15341 12.9221 5.95909 13 5.72727 13H4.5C3.25909 13 2.19886 12.5734 1.31932 11.7203C0.439773 10.8672 0 9.82448 0 8.59219C0 7.53594 0.320455 6.59479 0.961364 5.76875C1.60227 4.94271 2.44091 4.41458 3.47727 4.18437C3.81818 2.93854 4.5 1.92969 5.52273 1.15781C6.54545 0.385937 7.70455 0 9 0C10.5955 0 11.9489 0.551823 13.0602 1.65547C14.1716 2.75911 14.7273 4.10312 14.7273 5.6875C15.6682 5.79583 16.4489 6.1987 17.0693 6.89609C17.6898 7.59349 18 8.40937 18 9.34375C18 10.3594 17.642 11.2227 16.9261 11.9336C16.2102 12.6445 15.3409 13 14.3182 13H9.81818C9.36818 13 8.98295 12.8409 8.6625 12.5227C8.34205 12.2044 8.18182 11.8219 8.18182 11.375V7.19062Z\", fill: \"currentColor\" }));\nexport default SvgUpload;\n","import * as React from \"react\";\nconst SvgUser = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 12, cy: 7, r: 4 }));\nexport default SvgUser;\n","import * as React from \"react\";\nconst SvgUsers = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M16 3.128a4 4 0 0 1 0 7.744\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M22 21v-2a4 4 0 0 0-3-3.87\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 9, cy: 7, r: 4 }));\nexport default SvgUsers;\n","import * as React from \"react\";\nconst SvgUsersRound = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M18 21a8 8 0 0 0-16 0\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 10, cy: 8, r: 5 }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M22 20c0-3.37-2-6.5-4-8a5 5 0 0 0-.45-8.3\" }));\nexport default SvgUsersRound;\n","import * as React from \"react\";\nconst SvgVal = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M11.9017 4.15293C11.757 4.11732 11.5959 4.11337 11.0779 4.11337H4.20803C3.65187 4.11337 3.26996 4.11382 2.9739 4.13804C2.68468 4.16171 2.52931 4.2051 2.41688 4.26249C2.15981 4.39367 1.95084 4.60299 1.81987 4.86043C1.76257 4.97306 1.71924 5.12867 1.69561 5.41835C1.67141 5.71487 1.67096 6.09737 1.67096 6.65438V11.3455C1.67096 11.9025 1.67141 12.2851 1.69561 12.5816C1.71924 12.8712 1.76257 13.0269 1.81987 13.1395C1.95084 13.3969 2.15981 13.6062 2.41688 13.7374C2.52931 13.7948 2.68468 13.8382 2.9739 13.8619C3.26996 13.8861 3.65187 13.8865 4.20803 13.8865H11.0779C11.5959 13.8865 11.757 13.8826 11.9017 13.847C12.0441 13.8119 12.18 13.7541 12.3041 13.6757C12.4301 13.5962 12.5448 13.4827 12.9043 13.1093L15.1625 10.7638C15.5362 10.3757 15.7921 10.1093 15.9745 9.88653C16.1524 9.66926 16.2278 9.53138 16.2652 9.4133C16.3503 9.14434 16.3503 8.85558 16.2652 8.58662C16.2278 8.46854 16.1524 8.33066 15.9745 8.11338C15.7921 7.89063 15.5362 7.62423 15.1625 7.23614L12.9043 4.89057C12.5448 4.51718 12.4301 4.40373 12.3041 4.32418C12.18 4.24584 12.0441 4.188 11.9017 4.15293ZM11.1419 2.94057C11.5694 2.94039 11.8815 2.94026 12.1812 3.01406C12.4458 3.07919 12.6981 3.18658 12.9286 3.3321C13.1896 3.49696 13.4062 3.72207 13.7028 4.0304C13.7174 4.04556 13.7322 4.06093 13.7472 4.07651L16.0221 6.43937C16.375 6.80593 16.664 7.1061 16.8799 7.36962C17.1035 7.64274 17.2807 7.91379 17.3815 8.23232C17.5395 8.73185 17.5395 9.26807 17.3815 9.76759C17.2807 10.0861 17.1035 10.3572 16.8799 10.6303C16.664 10.8938 16.375 11.194 16.0221 11.5605L13.7472 13.9234C13.7322 13.939 13.7174 13.9544 13.7028 13.9695C13.4062 14.2778 13.1896 14.503 12.9286 14.6678C12.6981 14.8133 12.4458 14.9207 12.1812 14.9859C11.8815 15.0597 11.5694 15.0595 11.1419 15.0593C11.1209 15.0593 11.0996 15.0593 11.0779 15.0593H4.1835C3.65784 15.0593 3.22794 15.0593 2.87855 15.0308C2.51692 15.0012 2.1903 14.938 1.88526 14.7824C1.40788 14.5388 1.01976 14.15 0.776526 13.6719C0.621106 13.3664 0.558082 13.0393 0.528535 12.6771C0.499988 12.3272 0.499994 11.8966 0.5 11.3701V6.62983C0.499994 6.10335 0.499988 5.67276 0.528535 5.32284C0.558082 4.96063 0.621106 4.6335 0.776526 4.32801C1.01976 3.84989 1.40788 3.46115 1.88526 3.21754C2.1903 3.06187 2.51692 2.99876 2.87855 2.96916C3.22794 2.94057 3.65784 2.94057 4.1835 2.94059H11.0779C11.0996 2.94059 11.1209 2.94057 11.1419 2.94057Z\", fill: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M6.82244 9.36049C6.48776 9.23665 6.48776 8.76327 6.82244 8.63942C7.66426 8.32792 8.32797 7.66421 8.63946 6.82241C8.76331 6.48771 9.23669 6.48771 9.36054 6.82241C9.67203 7.66421 10.3357 8.32792 11.1776 8.63942C11.5122 8.76327 11.5122 9.23665 11.1776 9.36049C10.3357 9.67199 9.67203 10.3357 9.36054 11.1775C9.23669 11.5122 8.76331 11.5122 8.63946 11.1775C8.32797 10.3357 7.66426 9.67199 6.82244 9.36049Z\", fill: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M11.9017 4.15293C11.757 4.11732 11.5959 4.11337 11.0779 4.11337H4.20803C3.65187 4.11337 3.26996 4.11382 2.9739 4.13804C2.68468 4.16171 2.52931 4.2051 2.41688 4.26249C2.15981 4.39367 1.95084 4.60299 1.81987 4.86043C1.76257 4.97306 1.71924 5.12867 1.69561 5.41835C1.67141 5.71487 1.67096 6.09737 1.67096 6.65438V11.3455C1.67096 11.9025 1.67141 12.2851 1.69561 12.5816C1.71924 12.8712 1.76257 13.0269 1.81987 13.1395C1.95084 13.3969 2.15981 13.6062 2.41688 13.7374C2.52931 13.7948 2.68468 13.8382 2.9739 13.8619C3.26996 13.8861 3.65187 13.8865 4.20803 13.8865H11.0779C11.5959 13.8865 11.757 13.8826 11.9017 13.847C12.0441 13.8119 12.18 13.7541 12.3041 13.6757C12.4301 13.5962 12.5448 13.4827 12.9043 13.1093L15.1625 10.7638C15.5362 10.3757 15.7921 10.1093 15.9745 9.88653C16.1524 9.66926 16.2278 9.53138 16.2652 9.4133C16.3503 9.14434 16.3503 8.85558 16.2652 8.58662C16.2278 8.46854 16.1524 8.33066 15.9745 8.11338C15.7921 7.89063 15.5362 7.62423 15.1625 7.23614L12.9043 4.89057C12.5448 4.51718 12.4301 4.40373 12.3041 4.32418C12.18 4.24584 12.0441 4.188 11.9017 4.15293ZM11.1419 2.94057C11.5694 2.94039 11.8815 2.94026 12.1812 3.01406C12.4458 3.07919 12.6981 3.18658 12.9286 3.3321C13.1896 3.49696 13.4062 3.72207 13.7028 4.0304C13.7174 4.04556 13.7322 4.06093 13.7472 4.07651L16.0221 6.43937C16.375 6.80593 16.664 7.1061 16.8799 7.36962C17.1035 7.64274 17.2807 7.91379 17.3815 8.23232C17.5395 8.73185 17.5395 9.26807 17.3815 9.76759C17.2807 10.0861 17.1035 10.3572 16.8799 10.6303C16.664 10.8938 16.375 11.194 16.0221 11.5605L13.7472 13.9234C13.7322 13.939 13.7174 13.9544 13.7028 13.9695C13.4062 14.2778 13.1896 14.503 12.9286 14.6678C12.6981 14.8133 12.4458 14.9207 12.1812 14.9859C11.8815 15.0597 11.5694 15.0595 11.1419 15.0593C11.1209 15.0593 11.0996 15.0593 11.0779 15.0593H4.1835C3.65784 15.0593 3.22794 15.0593 2.87855 15.0308C2.51692 15.0012 2.1903 14.938 1.88526 14.7824C1.40788 14.5388 1.01976 14.15 0.776526 13.6719C0.621106 13.3664 0.558082 13.0393 0.528535 12.6771C0.499988 12.3272 0.499994 11.8966 0.5 11.3701V6.62983C0.499994 6.10335 0.499988 5.67276 0.528535 5.32284C0.558082 4.96063 0.621106 4.6335 0.776526 4.32801C1.01976 3.84989 1.40788 3.46115 1.88526 3.21754C2.1903 3.06187 2.51692 2.99876 2.87855 2.96916C3.22794 2.94057 3.65784 2.94057 4.1835 2.94059H11.0779C11.0996 2.94059 11.1209 2.94057 11.1419 2.94057Z\", stroke: \"#8F8D8B\", strokeWidth: 0.4 }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M6.82244 9.36049C6.48776 9.23665 6.48776 8.76327 6.82244 8.63942C7.66426 8.32792 8.32797 7.66421 8.63946 6.82241C8.76331 6.48771 9.23669 6.48771 9.36054 6.82241C9.67203 7.66421 10.3357 8.32792 11.1776 8.63942C11.5122 8.76327 11.5122 9.23665 11.1776 9.36049C10.3357 9.67199 9.67203 10.3357 9.36054 11.1775C9.23669 11.5122 8.76331 11.5122 8.63946 11.1775C8.32797 10.3357 7.66426 9.67199 6.82244 9.36049Z\", stroke: \"#8F8D8B\", strokeWidth: 0.4 }));\nexport default SvgVal;\n","import * as React from \"react\";\nconst SvgVolumeOff = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M12.375 9C12.375 7.6725 11.61 6.5325 10.5 5.9775V7.635L12.3375 9.4725C12.36 9.3225 12.375 9.165 12.375 9ZM14.25 9C14.25 9.705 14.1 10.365 13.845 10.98L14.9775 12.1125C15.4725 11.1825 15.75 10.125 15.75 9C15.75 5.79 13.5075 3.105 10.5 2.4225V3.9675C12.6675 4.6125 14.25 6.6225 14.25 9ZM3.2025 2.25L2.25 3.2025L5.7975 6.75H2.25V11.25H5.25L9 15V9.9525L12.1875 13.14C11.685 13.53 11.1225 13.8375 10.5 14.025V15.57C11.535 15.3375 12.4725 14.8575 13.2675 14.2125L14.7975 15.75L15.75 14.7975L9 8.0475L3.2025 2.25ZM9 3L7.4325 4.5675L9 6.135V3Z\", fill: \"currentColor\" }));\nexport default SvgVolumeOff;\n","import * as React from \"react\";\nconst SvgVolumeUp = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M2.25 6.75V11.25H5.25L9 15V3L5.25 6.75H2.25ZM12.375 9C12.375 7.6725 11.61 6.5325 10.5 5.9775V12.0225C11.61 11.4675 12.375 10.3275 12.375 9ZM10.5 2.4225V3.9675C12.6675 4.6125 14.25 6.6225 14.25 9C14.25 11.3775 12.6675 13.3875 10.5 14.0325V15.5775C13.5075 14.895 15.75 12.21 15.75 9C15.75 5.79 13.5075 3.105 10.5 2.4225Z\", fill: \"currentColor\" }));\nexport default SvgVolumeUp;\n","import * as React from \"react\";\nconst SvgWarning = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M1.77047 16C1.62757 16 1.49766 15.9644 1.38074 15.8931C1.26382 15.8218 1.17288 15.7278 1.10793 15.6111C1.04297 15.4944 1.00725 15.3681 1.00075 15.2319C0.994254 15.0958 1.02998 14.963 1.10793 14.8333L8.31797 2.38889C8.39592 2.25926 8.4966 2.16204 8.62001 2.09722C8.74343 2.03241 8.87009 2 9 2C9.12991 2 9.25657 2.03241 9.37999 2.09722C9.5034 2.16204 9.60408 2.25926 9.68203 2.38889L16.8921 14.8333C16.97 14.963 17.0057 15.0958 16.9993 15.2319C16.9928 15.3681 16.957 15.4944 16.8921 15.6111C16.8271 15.7278 16.7362 15.8218 16.6193 15.8931C16.5023 15.9644 16.3724 16 16.2295 16H1.77047ZM3.11505 14.4444H14.885L9 4.33333L3.11505 14.4444ZM9 13.6667C9.22085 13.6667 9.40597 13.5921 9.55537 13.4431C9.70477 13.294 9.77946 13.1093 9.77946 12.8889C9.77946 12.6685 9.70477 12.4838 9.55537 12.3347C9.40597 12.1856 9.22085 12.1111 9 12.1111C8.77915 12.1111 8.59403 12.1856 8.44463 12.3347C8.29523 12.4838 8.22054 12.6685 8.22054 12.8889C8.22054 13.1093 8.29523 13.294 8.44463 13.4431C8.59403 13.5921 8.77915 13.6667 9 13.6667ZM9 11.3333C9.22085 11.3333 9.40597 11.2588 9.55537 11.1097C9.70477 10.9606 9.77946 10.7759 9.77946 10.5556V8.22222C9.77946 8.00185 9.70477 7.81713 9.55537 7.66806C9.40597 7.51898 9.22085 7.44444 9 7.44444C8.77915 7.44444 8.59403 7.51898 8.44463 7.66806C8.29523 7.81713 8.22054 8.00185 8.22054 8.22222V10.5556C8.22054 10.7759 8.29523 10.9606 8.44463 11.1097C8.59403 11.2588 8.77915 11.3333 9 11.3333Z\", fill: \"currentColor\" }));\nexport default SvgWarning;\n","import * as React from \"react\";\nconst SvgWaypoints = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"m10.586 5.414-5.172 5.172\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"m18.586 13.414-5.172 5.172\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M6 12h12\" }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 12, cy: 20, r: 2 }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 12, cy: 4, r: 2 }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 20, cy: 12, r: 2 }), /* @__PURE__ */ React.createElement(\"circle\", { cx: 4, cy: 12, r: 2 }));\nexport default SvgWaypoints;\n","import * as React from \"react\";\nconst SvgWorkflow = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"rect\", { width: 8, height: 8, x: 3, y: 3, rx: 2 }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M7 11v4a2 2 0 0 0 2 2h4\" }), /* @__PURE__ */ React.createElement(\"rect\", { width: 8, height: 8, x: 13, y: 13, rx: 2 }));\nexport default SvgWorkflow;\n","import * as React from \"react\";\nconst SvgWorkspaces = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: \"1em\", height: \"1em\", viewBox: \"0 0 18 18\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M9.88889 5.44444V1.88889C9.88889 1.63704 9.97407 1.42593 10.1444 1.25556C10.3148 1.08519 10.5259 1 10.7778 1H16.1111C16.363 1 16.5741 1.08519 16.7444 1.25556C16.9148 1.42593 17 1.63704 17 1.88889V5.44444C17 5.6963 16.9148 5.90741 16.7444 6.07778C16.5741 6.24815 16.363 6.33333 16.1111 6.33333H10.7778C10.5259 6.33333 10.3148 6.24815 10.1444 6.07778C9.97407 5.90741 9.88889 5.6963 9.88889 5.44444ZM1 9V1.88889C1 1.63704 1.08519 1.42593 1.25556 1.25556C1.42593 1.08519 1.63704 1 1.88889 1H7.22222C7.47407 1 7.68519 1.08519 7.85556 1.25556C8.02593 1.42593 8.11111 1.63704 8.11111 1.88889V9C8.11111 9.25185 8.02593 9.46296 7.85556 9.63333C7.68519 9.8037 7.47407 9.88889 7.22222 9.88889H1.88889C1.63704 9.88889 1.42593 9.8037 1.25556 9.63333C1.08519 9.46296 1 9.25185 1 9ZM9.88889 16.1111V9C9.88889 8.74815 9.97407 8.53704 10.1444 8.36667C10.3148 8.1963 10.5259 8.11111 10.7778 8.11111H16.1111C16.363 8.11111 16.5741 8.1963 16.7444 8.36667C16.9148 8.53704 17 8.74815 17 9V16.1111C17 16.363 16.9148 16.5741 16.7444 16.7444C16.5741 16.9148 16.363 17 16.1111 17H10.7778C10.5259 17 10.3148 16.9148 10.1444 16.7444C9.97407 16.5741 9.88889 16.363 9.88889 16.1111ZM1 16.1111V12.5556C1 12.3037 1.08519 12.0926 1.25556 11.9222C1.42593 11.7519 1.63704 11.6667 1.88889 11.6667H7.22222C7.47407 11.6667 7.68519 11.7519 7.85556 11.9222C8.02593 12.0926 8.11111 12.3037 8.11111 12.5556V16.1111C8.11111 16.363 8.02593 16.5741 7.85556 16.7444C7.68519 16.9148 7.47407 17 7.22222 17H1.88889C1.63704 17 1.42593 16.9148 1.25556 16.7444C1.08519 16.5741 1 16.363 1 16.1111ZM2.77778 8.11111H6.33333V2.77778H2.77778V8.11111ZM11.6667 15.2222H15.2222V9.88889H11.6667V15.2222ZM11.6667 4.55556H15.2222V2.77778H11.6667V4.55556ZM2.77778 15.2222H6.33333V13.4444H2.77778V15.2222Z\", fill: \"currentColor\" }));\nexport default SvgWorkspaces;\n","import * as React from \"react\";\nconst SvgZap = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", width: \"1em\", height: \"1em\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: 2, strokeLinecap: \"round\", strokeLinejoin: \"round\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z\" }));\nexport default SvgZap;\n","import clsx from \"clsx\";\nimport React, { type FC } from \"react\";\n\nimport { Spinner } from \"@/components/Spinner\";\nimport AIIcon from \"@/img/AI.svg?react\";\nimport ActivityIcon from \"@/img/Activity.svg?react\";\nimport AddIcon from \"@/img/Add.svg?react\";\nimport AnnotateIcon from \"@/img/Annotate.svg?react\";\nimport ArrowDownIcon from \"@/img/ArrowDown.svg?react\";\nimport ArrowLeftIcon from \"@/img/ArrowLeft.svg?react\";\nimport ArrowRightIcon from \"@/img/ArrowRight.svg?react\";\nimport ArrowUpIcon from \"@/img/ArrowUp.svg?react\";\nimport ArrowUpRightIcon from \"@/img/ArrowUpRight.svg?react\";\nimport BlocksIcon from \"@/img/Blocks.svg?react\";\nimport BoxesIcon from \"@/img/Boxes.svg?react\";\nimport CalendarClockIcon from \"@/img/CalendarClock.svg?react\";\nimport CaretDownIcon from \"@/img/CaretDown.svg?react\";\nimport CheckIcon from \"@/img/Check.svg?react\";\nimport CheckboxIcon from \"@/img/Checkbox.svg?react\";\nimport ChecklistIcon from \"@/img/Checklist.svg?react\";\nimport ChevronBottomIcon from \"@/img/ChevronBottom.svg?react\";\nimport ChevronLeftIcon from \"@/img/ChevronLeft.svg?react\";\nimport ChevronRightIcon from \"@/img/ChevronRight.svg?react\";\nimport ChevronTopIcon from \"@/img/ChevronTop.svg?react\";\nimport CircleIcon from \"@/img/Circle.svg?react\";\nimport CircleUserIcon from \"@/img/CircleUser.svg?react\";\nimport CloseIcon from \"@/img/Close.svg?react\";\nimport CloudIcon from \"@/img/Cloud.svg?react\";\nimport CloudCogIcon from \"@/img/CloudCog.svg?react\";\nimport CodeIcon from \"@/img/Code.svg?react\";\nimport CogIcon from \"@/img/Cog.svg?react\";\nimport ContactIcon from \"@/img/Contact.svg?react\";\nimport ContentCopyIcon from \"@/img/ContentCopy.svg?react\";\nimport DatabaseIcon from \"@/img/Database.svg?react\";\nimport DateRangeIcon from \"@/img/DateRange.svg?react\";\nimport DeleteIcon from \"@/img/Delete.svg?react\";\nimport DetectionIcon from \"@/img/Detection.svg?react\";\nimport DownloadIcon from \"@/img/Download.svg?react\";\nimport DragIcon from \"@/img/Drag.svg?react\";\nimport DrawIcon from \"@/img/Draw.svg?react\";\nimport EditIcon from \"@/img/Edit.svg?react\";\nimport EmbeddingsIcon from \"@/img/Embeddings.svg?react\";\nimport EnterIcon from \"@/img/Enter.svg?react\";\nimport ErrorIcon from \"@/img/Error.svg?react\";\nimport ExitWorkspaceIcon from \"@/img/ExitWorkspace.svg?react\";\nimport ExternalLinkIcon from \"@/img/ExternalLink.svg?react\";\nimport FileClockIcon from \"@/img/FileClock.svg?react\";\nimport FineTuneIcon from \"@/img/FineTune.svg?react\";\nimport FingerprintIcon from \"@/img/Fingerprint.svg?react\";\nimport FullscreenIcon from \"@/img/Fullscreen.svg?react\";\nimport GridViewIcon from \"@/img/GridView.svg?react\";\nimport HistoryIcon from \"@/img/History.svg?react\";\nimport IdCardIcon from \"@/img/IdCard.svg?react\";\nimport ImageSearchIcon from \"@/img/ImageSearch.svg?react\";\nimport InfoIcon from \"@/img/Info.svg?react\";\nimport InsightsIcon from \"@/img/Insights.svg?react\";\nimport InspectIcon from \"@/img/Inspect.svg?react\";\nimport JSONIcon from \"@/img/JSON.svg?react\";\nimport KeyIcon from \"@/img/Key.svg?react\";\nimport KeyRoundIcon from \"@/img/KeyRound.svg?react\";\nimport KeySquareIcon from \"@/img/KeySquare.svg?react\";\nimport LabelIcon from \"@/img/Label.svg?react\";\nimport LockIcon from \"@/img/Lock.svg?react\";\nimport LogsIcon from \"@/img/Logs.svg?react\";\nimport MenuIcon from \"@/img/Menu.svg?react\";\nimport MoreHorizontalIcon from \"@/img/MoreHorizontal.svg?react\";\nimport MoreVerticalIcon from \"@/img/MoreVertical.svg?react\";\nimport MoveIcon from \"@/img/Move.svg?react\";\nimport NotebookPenIcon from \"@/img/NotebookPen.svg?react\";\nimport NotesIcon from \"@/img/Notes.svg?react\";\nimport OrchestratorIcon from \"@/img/Orchestrator.svg?react\";\nimport PauseIcon from \"@/img/Pause.svg?react\";\nimport PencilIcon from \"@/img/Pencil.svg?react\";\nimport PinIcon from \"@/img/Pin.svg?react\";\nimport PlayIcon from \"@/img/Play.svg?react\";\nimport PolylineIcon from \"@/img/Polyline.svg?react\";\nimport PuzzleIcon from \"@/img/Puzzle.svg?react\";\nimport RadioIcon from \"@/img/Radio.svg?react\";\nimport RedoIcon from \"@/img/Redo.svg?react\";\nimport RefreshIcon from \"@/img/Refresh.svg?react\";\nimport RemoveIcon from \"@/img/Remove.svg?react\";\nimport ReviewIcon from \"@/img/Review.svg?react\";\nimport SearchIcon from \"@/img/Search.svg?react\";\nimport ServerIcon from \"@/img/Server.svg?react\";\nimport SettingsIcon from \"@/img/Settings.svg?react\";\nimport ShieldCheckIcon from \"@/img/ShieldCheck.svg?react\";\nimport SliderIcon from \"@/img/Slider.svg?react\";\nimport SlidersIcon from \"@/img/Sliders.svg?react\";\nimport TagIcon from \"@/img/Tag.svg?react\";\nimport TextIcon from \"@/img/Text.svg?react\";\nimport ToggleIcon from \"@/img/Toggle.svg?react\";\nimport UndoIcon from \"@/img/Undo.svg?react\";\nimport UnfoldMoreIcon from \"@/img/UnfoldMore.svg?react\";\nimport UnlockIcon from \"@/img/Unlock.svg?react\";\nimport UnsupportedIcon from \"@/img/Unsupported.svg?react\";\nimport UploadIcon from \"@/img/Upload.svg?react\";\nimport UserIcon from \"@/img/User.svg?react\";\nimport UsersIcon from \"@/img/Users.svg?react\";\nimport UsersRoundIcon from \"@/img/UsersRound.svg?react\";\nimport VALIcon from \"@/img/VAL.svg?react\";\nimport VolumeOffIcon from \"@/img/VolumeOff.svg?react\";\nimport VolumeUpIcon from \"@/img/VolumeUp.svg?react\";\nimport WarningIcon from \"@/img/Warning.svg?react\";\nimport WaypointsIcon from \"@/img/Waypoints.svg?react\";\nimport WorkflowIcon from \"@/img/Workflow.svg?react\";\nimport WorkspacesIcon from \"@/img/Workspaces.svg?react\";\nimport ZapIcon from \"@/img/Zap.svg?react\";\nimport { BrandColor, IconColor, TextColor, textColorClass } from \"@/types\";\nimport { IconName } from \"@/types/icons\";\nimport { Size } from \"@/types/size\";\n\ntype SvgComponent = React.FC<React.SVGProps<SVGSVGElement>>;\n\n/**\n * To add a new icon:\n * 1. add the SVG file to the image directory,\n * 2. create a enum value for the icon name\n * 3. import the SVG file and add it to this map\n */\nexport const iconMap: Record<\n Exclude<IconName, IconName.Spinner>,\n SvgComponent\n> = {\n [IconName.Activity]: ActivityIcon,\n [IconName.Add]: AddIcon,\n [IconName.AI]: AIIcon,\n [IconName.Annotate]: AnnotateIcon,\n [IconName.ArrowDown]: ArrowDownIcon,\n [IconName.ArrowLeft]: ArrowLeftIcon,\n [IconName.ArrowRight]: ArrowRightIcon,\n [IconName.ArrowUp]: ArrowUpIcon,\n [IconName.ArrowUpRight]: ArrowUpRightIcon,\n [IconName.Blocks]: BlocksIcon,\n [IconName.Boxes]: BoxesIcon,\n [IconName.CalendarClock]: CalendarClockIcon,\n [IconName.CaretDown]: CaretDownIcon,\n [IconName.Check]: CheckIcon,\n [IconName.Checkbox]: CheckboxIcon,\n [IconName.Checklist]: ChecklistIcon,\n [IconName.ChevronBottom]: ChevronBottomIcon,\n [IconName.ChevronLeft]: ChevronLeftIcon,\n [IconName.ChevronRight]: ChevronRightIcon,\n [IconName.ChevronTop]: ChevronTopIcon,\n [IconName.Circle]: CircleIcon,\n [IconName.CircleUser]: CircleUserIcon,\n [IconName.Close]: CloseIcon,\n [IconName.Cloud]: CloudIcon,\n [IconName.CloudCog]: CloudCogIcon,\n [IconName.Code]: CodeIcon,\n [IconName.Cog]: CogIcon,\n [IconName.Contact]: ContactIcon,\n [IconName.ContentCopy]: ContentCopyIcon,\n [IconName.Database]: DatabaseIcon,\n [IconName.DateRange]: DateRangeIcon,\n [IconName.Delete]: DeleteIcon,\n [IconName.Detection]: DetectionIcon,\n [IconName.Download]: DownloadIcon,\n [IconName.Drag]: DragIcon,\n [IconName.Draw]: DrawIcon,\n [IconName.Edit]: EditIcon,\n [IconName.Embeddings]: EmbeddingsIcon,\n [IconName.Enter]: EnterIcon,\n [IconName.Error]: ErrorIcon,\n [IconName.ExitWorkspace]: ExitWorkspaceIcon,\n [IconName.ExternalLink]: ExternalLinkIcon,\n [IconName.FileClock]: FileClockIcon,\n [IconName.FineTune]: FineTuneIcon,\n [IconName.Fingerprint]: FingerprintIcon,\n [IconName.Fullscreen]: FullscreenIcon,\n [IconName.GridView]: GridViewIcon,\n [IconName.History]: HistoryIcon,\n [IconName.IdCard]: IdCardIcon,\n [IconName.ImageSearch]: ImageSearchIcon,\n [IconName.Info]: InfoIcon,\n [IconName.Insights]: InsightsIcon,\n [IconName.Inspect]: InspectIcon,\n [IconName.JSON]: JSONIcon,\n [IconName.Key]: KeyIcon,\n [IconName.KeyRound]: KeyRoundIcon,\n [IconName.KeySquare]: KeySquareIcon,\n [IconName.Label]: LabelIcon,\n [IconName.Lock]: LockIcon,\n [IconName.Logs]: LogsIcon,\n [IconName.Menu]: MenuIcon,\n [IconName.MoreHorizontal]: MoreHorizontalIcon,\n [IconName.MoreVertical]: MoreVerticalIcon,\n [IconName.Move]: MoveIcon,\n [IconName.NotebookPen]: NotebookPenIcon,\n [IconName.Notes]: NotesIcon,\n [IconName.Orchestrator]: OrchestratorIcon,\n [IconName.Pause]: PauseIcon,\n [IconName.Pencil]: PencilIcon,\n [IconName.Pin]: PinIcon,\n [IconName.Play]: PlayIcon,\n [IconName.Polyline]: PolylineIcon,\n [IconName.Puzzle]: PuzzleIcon,\n [IconName.Radio]: RadioIcon,\n [IconName.Redo]: RedoIcon,\n [IconName.Refresh]: RefreshIcon,\n [IconName.Remove]: RemoveIcon,\n [IconName.Review]: ReviewIcon,\n [IconName.Search]: SearchIcon,\n [IconName.Server]: ServerIcon,\n [IconName.Settings]: SettingsIcon,\n [IconName.ShieldCheck]: ShieldCheckIcon,\n [IconName.Slider]: SliderIcon,\n [IconName.Sliders]: SlidersIcon,\n [IconName.Tag]: TagIcon,\n [IconName.Text]: TextIcon,\n [IconName.Toggle]: ToggleIcon,\n [IconName.Undo]: UndoIcon,\n [IconName.UnfoldMore]: UnfoldMoreIcon,\n [IconName.Unlock]: UnlockIcon,\n [IconName.Unsupported]: UnsupportedIcon,\n [IconName.Upload]: UploadIcon,\n [IconName.User]: UserIcon,\n [IconName.Users]: UsersIcon,\n [IconName.UsersRound]: UsersRoundIcon,\n [IconName.VAL]: VALIcon,\n [IconName.VolumeOff]: VolumeOffIcon,\n [IconName.VolumeUp]: VolumeUpIcon,\n [IconName.Warning]: WarningIcon,\n [IconName.Waypoints]: WaypointsIcon,\n [IconName.Workflow]: WorkflowIcon,\n [IconName.Workspaces]: WorkspacesIcon,\n [IconName.Zap]: ZapIcon,\n};\n\ntype IconSize = Exclude<Size, \"Xs\">;\n\nconst sizeMap: Partial<Record<IconSize, number>> = {\n [Size.Sm]: 12,\n [Size.Md]: 14,\n [Size.Lg]: 16,\n [Size.Xl]: 18,\n};\n\nexport interface IconProps {\n name: IconName;\n size?: Size;\n className?: string;\n color?: TextColor | IconColor | BrandColor;\n style?: React.CSSProperties;\n}\n\n/**\n * An generic icon component which will take the form of the icon specified by `name`.\n *\n * @example\n * ```tsx\n * <Icon name={IconName.Edit} size={Size.Md} />\n * ```\n *\n * @param name Icon to display. See {@link IconName}.\n * @param size The size of the icon. See {@link Size}.\n * @param className `class` overrides to apply to the component.\n * @param color Color of the icon. By default, the icon inherits the text color of its container.\n * @param style `style` overrides to apply to the icon.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const Icon: FC<IconProps> = ({\n name,\n size = undefined, // if no size specified, fill the parent container\n className,\n color,\n ...props\n}) => {\n // We are making a strong opinion here that we should treat the SVG\n // as a square - the viewbox on the SVG will still handle the aspect\n // ratio but it's possible that VERY rectangular SVGs will not behave\n // as expected.\n const iconSize = size ? sizeMap[size] : undefined;\n const IconComponent = name === IconName.Spinner ? Spinner : iconMap[name];\n\n return (\n <IconComponent\n width={iconSize}\n height={iconSize}\n size={size}\n className={clsx(color && textColorClass(color), className)}\n {...props}\n />\n );\n};\n","import { type FC } from \"react\";\n\nimport { IconName } from \"@/types/icons\";\nimport { Size } from \"@/types/size\";\nimport { cn } from \"@/util/classes\";\n\nimport { Icon } from \"./Icon\";\n\nexport interface IconWrapperProps {\n content?: FC | IconName;\n size?: Size;\n className?: string;\n}\n\n/**\n * Helper component which resolves {@link FC} | {@link IconName} | ``undefined`` to a rendered icon.\n *\n * Wraps content in a span; use `className` to constrain icon bounds or apply color styling.\n *\n * @param content Icon {@link FC}, icon name, or undefined\n * @param size Size forwarded to {@link Icon} when resolving by name\n * @param className Classes applied to the wrapping span\n */\nexport const IconWrapper: FC<IconWrapperProps> = ({\n content,\n size,\n className,\n}) => {\n if (!content) return null;\n\n const Content =\n typeof content === \"string\"\n ? () => <Icon name={content} size={size} />\n : content;\n\n return (\n <span className={cn(className)}>\n <Content />\n </span>\n );\n};\n\nIconWrapper.displayName = \"IconWrapper\";\n","import { TextColor, TextVariant, Variant } from \"@/types\";\n\nexport const TEXT_STYLES: Record<TextVariant, string> = {\n [TextVariant.Xxs]: \"text-xxs/4\",\n [TextVariant.Xs]: \"text-xs/5\",\n [TextVariant.Sm]: \"text-sm/6\",\n [TextVariant.Md]: \"text-md/7\",\n [TextVariant.Lg]: \"text-lg/9\",\n [TextVariant.Xl]: \"text-xl/11\",\n [TextVariant.Xxl]: \"text-xxl/13\",\n [TextVariant.Label]: \"text-xs/5 font-bold uppercase\",\n [TextVariant.Caption]: \"text-xs/5 text-content-text-tertiary\",\n};\n\nexport const textStyles = (variant: TextVariant): string | null => {\n if (!variant) return null;\n return TEXT_STYLES[variant];\n};\n\nexport const textColor = (variant: Variant): TextColor | undefined => {\n if (!variant) {\n return;\n }\n\n switch (variant) {\n case Variant.Primary:\n return TextColor.Primary;\n case Variant.Secondary:\n return TextColor.Secondary;\n case Variant.Success:\n return TextColor.Success;\n case Variant.Danger:\n return TextColor.Destructive;\n case Variant.Icon:\n return TextColor.Primary;\n default:\n return TextColor.Primary;\n }\n};\n","import clsx from \"clsx\";\nimport type { FC, HTMLAttributes } from \"react\";\n\nimport { textStyles } from \"@/styles/text\";\nimport { IconColor, TextColor, TextVariant } from \"@/types\";\nimport { BrandColor, textColorClass } from \"@/types/color\";\n\nexport interface TextProps extends HTMLAttributes<HTMLSpanElement> {\n variant?: TextVariant;\n color?: TextColor | IconColor | BrandColor;\n}\n\n/**\n * A basic text component.\n *\n * All text in the app should be wrapped in this component to ensure compatibility with theme changes.\n *\n * @example\n * ```tsx\n * <Text>\n * Some text\n * </Text>\n * ```\n *\n * @param variant The variant of the text; this controls the size and related styling of the text. See {@link Variant}.\n * @param color The color of the text. See {@link TextColor}.\n * @param children The content wrapped by this component.\n * @param className `class` overrides to apply to the component.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const Text: FC<TextProps> = ({\n variant = TextVariant.Md,\n color = TextColor.Primary,\n children,\n className,\n ...props\n}) => {\n return (\n <span\n className={clsx(textColorClass(color), textStyles(variant), className)}\n {...props}\n >\n {children}\n </span>\n );\n};\n\nText.displayName = \"Text\";\n","import clsx from \"clsx\";\nimport type { FC, HTMLAttributes } from \"react\";\n\nimport { Anchor } from \"@/types\";\n\nexport interface ToastContainerProps extends HTMLAttributes<HTMLDivElement> {\n anchor?: Anchor;\n open?: boolean;\n}\n\nconst anchorStyles: Record<Anchor, string> = {\n [Anchor.TopLeft]: \"top-4 left-4\",\n [Anchor.Top]: \"top-4 left-1/2 -translate-x-1/2\",\n [Anchor.TopRight]: \"top-4 right-4\",\n [Anchor.Right]: \"right-4 top-1/2 -translate-y-1/2\",\n [Anchor.BottomRight]: \"bottom-4 right-4\",\n [Anchor.Bottom]: \"bottom-4 left-1/2 -translate-x-1/2\",\n [Anchor.BottomLeft]: \"bottom-4 left-4\",\n [Anchor.Left]: \"left-4 top-1/2 -translate-y-1/2\",\n};\n\n/**\n * A layout component which acts as a container for toast-like components.\n *\n * @param anchor The location in the viewport to anchor the toast. See {@link Anchor}.\n * @param children Content wrapped by this component.\n * @param open If `true`, this component and its children will be rendered; otherwise it will be hidden.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const ToastContainer: FC<ToastContainerProps> = ({\n anchor = Anchor.Bottom,\n children,\n open,\n ...props\n}) => (\n <>\n {open && (\n <div className={clsx(\"fixed\", \"z-9999\", anchorStyles[anchor])} {...props}>\n {children}\n </div>\n )}\n </>\n);\n\nToastContainer.displayName = \"ToastContainer\";\n","import { Radius } from \"@/types/radius\";\n\nexport const RADIUS_STYLES: Record<Radius, string> = {\n [Radius.None]: \"rounded-none\",\n [Radius.Xs]: \"rounded-xs\",\n [Radius.Sm]: \"rounded-sm\",\n [Radius.Md]: \"rounded-md\",\n [Radius.Lg]: \"rounded-lg\",\n [Radius.Xl]: \"rounded-xl\",\n [Radius.Full]: \"rounded-full\",\n};\n\nexport default function radiusStyles(radius: Radius): string {\n return RADIUS_STYLES[radius];\n}\n","import type { FC, HTMLAttributes } from \"react\";\n\nimport { IconWrapper } from \"@/components/Icons\";\nimport { Text } from \"@/components/Text\";\nimport { ToastContainer } from \"@/components/ToastContainer\";\nimport radiusStyles from \"@/styles/radius\";\nimport { textColor } from \"@/styles/text\";\nimport {\n Anchor,\n BackgroundColor,\n bgColorClass,\n BorderColor,\n borderColorClass,\n IconName,\n Radius,\n textColorClass,\n Variant,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport interface ActivityToastProps extends HTMLAttributes<HTMLDivElement> {\n anchor?: Anchor;\n icon?: FC | IconName;\n message?: string;\n open?: boolean;\n variant?: Variant;\n}\n\n/**\n * A component which renders simple toast-style notifications.\n *\n * This component is best suited for non-interactive, ephemeral notifications.\n *\n * See also {@link Toast}.\n *\n * @example\n * ```tsx\n * <ActivityToast\n * open={true}\n * icon={() => <Icon name={IconName.Check}/>}\n * message={\"Operation successful\"}\n * variant={Variant.Success}\n * />\n * ```\n *\n * @param anchor Position within the viewport to anchor the notification.\n * Options include all cardinal directions as well as all four corners.\n * @param className `class` overrides to apply to the component.\n * @param icon Reference (`FC`) to an icon or an {@link IconName} to render which prefixes the toast message. See {@link Icon}.\n * @param message Message to include in the toast.\n * @param open Boolean controlling whether the toast is visible.\n * @param variant The toast variant; this controls the general styling of the toast. See {@link Variant}.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const ActivityToast: FC<ActivityToastProps> = ({\n anchor = Anchor.BottomRight,\n className,\n icon,\n message,\n open,\n variant = Variant.Primary,\n ...props\n}) => (\n <ToastContainer open={open} anchor={anchor}>\n <div\n className={cn(\n \"flex flex-nowrap\",\n \"gap-x-sm\",\n \"items-center\",\n \"py-2 pr-4 pl-3\",\n \"border\",\n borderColorClass(BorderColor.Default),\n bgColorClass(BackgroundColor.Card1),\n radiusStyles(Radius.Md),\n className\n )}\n {...props}\n >\n <IconWrapper\n content={icon}\n className={cn(\"size-5\", textColorClass(textColor(variant)!))}\n />\n\n {message && <Text color={textColor(variant)}>{message}</Text>}\n </div>\n </ToastContainer>\n);\n\nActivityToast.displayName = \"ActivityToast\";\n","import { Button as HeadlessButton } from \"@headlessui/react\";\nimport clsx from \"clsx\";\nimport { ButtonHTMLAttributes, FC } from \"react\";\n\nimport { IconWrapper } from \"@/components/Icons\";\nimport radiusStyles from \"@/styles/radius\";\nimport {\n ActionColor,\n BackgroundColor,\n bgColorClass,\n BorderColor,\n borderColorClass,\n ElementState,\n IconName,\n Radius,\n Size,\n TextColor,\n textColorClass,\n Variant,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\ntype ButtonSize = Exclude<Size, Size.Lg | Size.Xl>;\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: Variant;\n size?: ButtonSize;\n leadingIcon?: FC | IconName;\n trailingIcon?: FC | IconName;\n borderless?: boolean;\n}\n\nconst variantStyles: Record<Variant, string> = {\n [Variant.Primary]: clsx(\n bgColorClass(ActionColor.PrimaryDefault),\n bgColorClass(ActionColor.PrimaryHover, ElementState.Hover),\n bgColorClass(ActionColor.PrimaryFocus, ElementState.Active)\n ),\n [Variant.Secondary]: clsx(\n \"border-1\",\n \"bg-transparent\",\n borderColorClass(BorderColor.Default),\n borderColorClass(BorderColor.Focus, ElementState.Hover), // design calls for focus color on hover\n borderColorClass(BorderColor.Focus, ElementState.Active),\n borderColorClass(BorderColor.Disabled, ElementState.Disabled),\n bgColorClass(ActionColor.SecondaryFocus, ElementState.Active)\n ),\n [Variant.Success]: clsx(\n bgColorClass(ActionColor.SuccessDefault),\n bgColorClass(ActionColor.SuccessHover, ElementState.Hover),\n bgColorClass(ActionColor.SuccessFocus, ElementState.Active)\n ),\n [Variant.Danger]: clsx(\n bgColorClass(ActionColor.DangerDefault),\n bgColorClass(ActionColor.DangerHover, ElementState.Hover),\n bgColorClass(ActionColor.DangerFocus, ElementState.Active)\n ),\n [Variant.Icon]: clsx(\n \"px-2.5 py-2.5\",\n \"bg-transparent\",\n bgColorClass(BackgroundColor.CardElevated, ElementState.Hover)\n ),\n [Variant.Borderless]: clsx(\n \"bg-transparent\",\n \"border-0\",\n bgColorClass(BackgroundColor.CardElevated, ElementState.Hover),\n radiusStyles(Radius.Full)\n ),\n};\n\nconst variantTextStyles: Record<Variant, string> = {\n [Variant.Primary]: textColorClass(ActionColor.PrimaryText),\n [Variant.Secondary]: textColorClass(ActionColor.SecondaryText),\n [Variant.Success]: textColorClass(ActionColor.SuccessText),\n [Variant.Danger]: textColorClass(ActionColor.DangerText),\n [Variant.Icon]: textColorClass(ActionColor.IconDefault),\n [Variant.Borderless]: clsx(\n textColorClass(TextColor.Secondary),\n textColorClass(ActionColor.PrimaryText, ElementState.Hover)\n ),\n};\n\nconst sizeStyles: Record<ButtonSize, string> = {\n [Size.Xs]: clsx(\"px-2.5 py-0.75\", \"text-xs/5\"),\n [Size.Sm]: clsx(\"px-3.5 py-1.5\", \"text-sm/5\"),\n [Size.Md]: clsx(\"px-4 py-2\", \"text-md/5\"),\n};\n\nconst iconStyles: Record<ButtonSize, string> = {\n [Size.Xs]: clsx(\"w-4 h-4\", \"leading-none\"),\n [Size.Sm]: clsx(\"w-4 h-4\", \"leading-none\"),\n [Size.Md]: clsx(\"w-5 h-5\", \"leading-none\"),\n};\n\n/**\n * A basic button component.\n *\n * @example\n * ```tsx\n * <Button onClick={() => alert(\"Button clicked\")}>\n * Click me\n * </Button>\n * ```\n *\n * @param variant The button variant; this controls the general styling of the button. See {@link Variant}.\n * @param size The size of the button; this controls both the text size and the button size. See {@link Size}.\n * @param borderless Boolean controlling whether the button should be \"borderless,\" removing any borders and\n * rounding the corners.\n * @param leadingIcon Optional reference ({@link FC}) to an icon or an {@link IconName} which prefixes the button's content. See {@link Icon}.\n * @param trailingIcon Optional reference ({@link FC}) to an icon or an {@link IconName} which postfixes the button's content. See {@link Icon}.\n * @param className `class` overrides to apply to the component.\n * @param children Button content.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const Button: FC<ButtonProps> = ({\n variant = Variant.Primary,\n size = Size.Md,\n borderless = false,\n leadingIcon,\n trailingIcon,\n className,\n children,\n ...props\n}) => {\n return (\n <HeadlessButton\n className={cn(\n \"inline-flex items-center justify-center\",\n borderless && \"aspect-square min-w-0 shrink-0\", // circular\n borderless ? radiusStyles(Radius.Full) : radiusStyles(Radius.Sm),\n \"font-medium\",\n \"transition-colors\",\n \"hover:cursor-pointer\",\n \"disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none\",\n sizeStyles[size],\n variantStyles[variant],\n borderless && \"border-0\",\n className\n )}\n {...props}\n >\n <div\n className={clsx(\n \"flex flex-nowrap items-center justify-center gap-x-sm\",\n variantTextStyles[variant]\n )}\n >\n <IconWrapper\n content={leadingIcon}\n size={size}\n className={clsx(iconStyles[size], \"flex justify-center items-center\")}\n />\n\n {children}\n\n <IconWrapper\n content={trailingIcon}\n size={size}\n className={clsx(iconStyles[size], \"flex justify-center items-center\")}\n />\n </div>\n </HeadlessButton>\n );\n};\n\nButton.displayName = \"Button\";\n","import { ElementState, withElementState } from \"@/types/element\";\nimport Shadow from \"@/types/shadow\";\n\nexport const SHADOW_STYLES: Record<Shadow, string> = {\n [Shadow.None]: \"shadow-none\",\n [Shadow.Xs]: \"shadow-xs\",\n [Shadow.Sm]: \"shadow-sm\",\n [Shadow.Md]: \"shadow-md\",\n [Shadow.Lg]: \"shadow-lg\",\n [Shadow.Xl]: \"shadow-xl\",\n};\n\nexport default function shadowStyles(\n shadow?: Shadow,\n elementState?: ElementState\n): string | null {\n if (!shadow) return null;\n\n if (elementState === ElementState.None) {\n return SHADOW_STYLES[shadow];\n }\n\n return withElementState(SHADOW_STYLES[shadow], elementState);\n}\n","import type { FC, HTMLAttributes } from \"react\";\n\nimport radiusStyles from \"@/styles/radius\";\nimport shadowStyles from \"@/styles/shadow\";\nimport {\n BackgroundColor,\n bgColorClass,\n BorderColor,\n borderColorClass,\n Color,\n Radius,\n Shadow,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport enum CardBackground {\n Primary = \"primary\",\n Secondary = \"secondary\",\n Elevated = \"elevated\",\n}\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n background?: CardBackground;\n border?: boolean;\n className?: string;\n compact?: boolean;\n shadow?: Shadow;\n outlined?: boolean;\n}\n\nconst bgColorMap: Record<CardBackground, Color> = {\n [CardBackground.Primary]: BackgroundColor.Card1,\n [CardBackground.Secondary]: BackgroundColor.Card2,\n [CardBackground.Elevated]: BackgroundColor.CardElevated,\n};\n\n/**\n * A styled container component with configurable background, shadow, and padding.\n *\n * @example\n * ```tsx\n * <Card background={CardBackground.Secondary} compact>\n * Card content here\n * </Card>\n * ```\n *\n * @param background The background color variant. Defaults to {@link CardBackground.Primary}.\n * @param border Whether to render a border around the card.\n * @param className Additional CSS class names to apply to the card.\n * @param compact When true, reduces internal padding.\n * @param shadow The shadow depth applied to the card. Defaults to {@link Shadow.Md}.\n * @param outlined When true, replaces the shadow with a border outline.\n * @param children The content of the card.\n * @param props Additional HTML properties to apply to the card.\n */\nexport const Card: FC<CardProps> = ({\n children,\n className,\n compact,\n background = CardBackground.Primary,\n outlined,\n shadow = Shadow.Md,\n ...props\n}) => {\n const backgroundColor = bgColorMap[background];\n\n return (\n <div\n className={cn(\n outlined ? \"border-1\" : shadowStyles(shadow),\n outlined && borderColorClass(BorderColor.Default),\n bgColorClass(backgroundColor),\n compact ? \"p-2.5\" : \"p-5\",\n radiusStyles(Radius.Lg),\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n};\n\nCard.displayName = \"Card\";\n","import { FC, HTMLAttributes } from \"react\";\n\nimport { Align, Justify, Orientation, Spacing } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport interface StackProps extends HTMLAttributes<HTMLDivElement> {\n align?: Align;\n justify?: Justify;\n orientation?: Orientation;\n spacing?: Spacing;\n}\n\nconst alignStyles: Record<Align, string> = {\n [Align.Baseline]: \"items-baseline\",\n [Align.Center]: \"items-center\",\n [Align.End]: \"items-end\",\n [Align.Start]: \"items-start\",\n};\n\nconst justifyStyles: Record<Justify, string> = {\n [Justify.Around]: \"justify-around\",\n [Justify.Between]: \"justify-between\",\n [Justify.Center]: \"justify-center\",\n [Justify.End]: \"justify-end\",\n [Justify.Evenly]: \"justify-evenly\",\n [Justify.Start]: \"justify-start\",\n};\n\nconst spacingStyles: Record<Spacing, string> = {\n [Spacing.None]: \"\",\n [Spacing.Xs]: \"gap-xs\",\n [Spacing.Sm]: \"gap-sm\",\n [Spacing.Md]: \"gap-md\",\n [Spacing.Lg]: \"gap-lg\",\n [Spacing.Xl]: \"gap-xl\",\n};\n\n/**\n * A layout component which organizes children into a vertical or horizontal stack.\n *\n * @example\n * ```tsx\n * <Stack orientation={Orientation.Vertical} spacing={Spacing.Md}>\n * <Text>Top</Text>\n * <Text>Middle</Text>\n * <Text>Bottom</Text>\n * </Stack>\n * ```\n *\n * @example\n * ```tsx\n * <Stack orientation={Orientation.Horizontal} spacing={Spacing.Md}>\n * <Text>Left</Text>\n * <Text>Middle</Text>\n * <Text>Right</Text>\n * </Stack>\n * ```\n *\n * @example\n * ```tsx\n * <Stack orientation={Orientation.Horizontal} align={Align.Center} justify={Justify.Between}>\n * <Text>Left</Text>\n * <Text>Middle</Text>\n * <Text>Right</Text>\n * </Stack>\n * ```\n *\n * @param align Alignment of children along the stack's cross axis. See {@link Align}.\n * @param justify Justification of children along the stack's primary axis. See {@link Justify}.\n * @param orientation Orientation of the stack. See {@link Orientation}.\n * @param spacing Spacing between child components in the stack. See {@link Spacing}.\n * @param children Content which is wrapped by this component.\n * @param className `class` overrides to apply to the component.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const Stack: FC<StackProps> = ({\n align,\n justify,\n orientation = Orientation.Row,\n spacing = Spacing.None,\n children,\n className,\n ...props\n}) => {\n return (\n <div\n className={cn(\n \"flex\",\n orientation === Orientation.Column && \"flex-col\",\n spacingStyles[spacing],\n align && alignStyles[align],\n justify && justifyStyles[justify],\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n};\n\nStack.displayName = \"Stack\";\n","import type { FC } from \"react\";\nimport React from \"react\";\n\nimport { Card, CardBackground, CardProps } from \"@/components/Card\";\nimport { Icon } from \"@/components/Icons\";\nimport { Stack } from \"@/components/Stack\";\nimport { Text } from \"@/components/Text\";\nimport {\n Align,\n BrandColor,\n IconName,\n Justify,\n Orientation,\n Shadow,\n Size,\n Spacing,\n TextColor,\n textColorClass,\n TextVariant,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport interface RichCardProps extends CardProps {\n badge?: string;\n compact?: boolean;\n description?: string | string[];\n icon?: IconName;\n title?: string;\n action?: React.ReactNode;\n}\n\n/**\n * A card component that displays an icon, title, description, and badge.\n * Designed for richer content such as dashboards or item lists.\n *\n * @example\n * ```tsx\n * <RichCard\n * icon={IconName.Star}\n * title=\"Getting Started\"\n * description=\"Follow these steps to set up your workspace.\"\n * badge=\"New\"\n * />\n * ```\n *\n * @param badge A small badge for supplementary info such as status or count.\n * @param compact When true, uses a horizontal layout with tighter spacing.\n * @param description Body text. Pass an array of strings to render a bulleted list.\n * @param icon The icon to display beside the title. See {@link IconName}.\n * @param title The card heading.\n * @param action A React node (e.g. a button) rendered in the action slot.\n * @param children Content displayed inside the card, below the description.\n * @param props Additional HTML properties to apply to the card.\n */\nexport const RichCard: FC<RichCardProps> = ({\n children,\n action,\n badge,\n description,\n icon,\n title,\n compact,\n ...props\n}) => {\n return (\n <Card {...props}>\n <Stack\n orientation={compact ? Orientation.Row : Orientation.Column}\n spacing={compact ? Spacing.Lg : Spacing.Md}\n align={Align.Start}\n justify={Justify.Between}\n className={cn(\"w-full h-full\")}\n >\n <Stack\n orientation={Orientation.Column}\n spacing={compact ? Spacing.Xs : Spacing.Md}\n >\n <Stack\n spacing={compact ? Spacing.Sm : Spacing.Md}\n align={Align.Center}\n >\n {icon && !compact && (\n <Card\n compact\n background={CardBackground.Elevated}\n shadow={Shadow.None}\n >\n <Icon name={icon} size={Size.Xl} color={BrandColor.Accent} />\n </Card>\n )}\n {icon && compact && (\n <Icon name={icon} size={Size.Xl} color={BrandColor.Accent} />\n )}\n <Stack\n orientation={Orientation.Column}\n spacing={compact ? Spacing.Xs : Spacing.Sm}\n >\n {badge && (\n <Text\n variant={TextVariant.Md}\n color={BrandColor.Accent}\n className={cn(\"leading-normal\")}\n >\n {badge}\n </Text>\n )}\n {title && (\n <Text variant={TextVariant.Lg} className={cn(\"leading-normal\")}>\n {title}\n </Text>\n )}\n </Stack>\n </Stack>\n {description && <Description text={description} />}\n {children}\n </Stack>\n {action && <div className={cn(!compact && \"w-full\")}>{action}</div>}\n </Stack>\n </Card>\n );\n};\n\n/**\n * Renders card body text. A plain string is displayed as a single paragraph;\n * an array of strings is rendered as a bulleted list.\n *\n * @param text The description content.\n */\nexport const Description: FC<{ text: string | string[] }> = ({ text }) => {\n if (typeof text === \"string\") {\n return <Text color={TextColor.Secondary}>{text}</Text>;\n }\n\n return (\n <ul className=\"list-disc list-inside mx-2 marker:text-xs\">\n {text.map((line) => (\n <li key={line} className={textColorClass(TextColor.Secondary)}>\n <Text color={TextColor.Secondary}>{line}</Text>\n </li>\n ))}\n </ul>\n );\n};\n\nRichCard.displayName = \"RichCard\";\n","/**\n * Checks if a value is nullish (null or undefined).\n * @param value The value to check.\n * @returns True if the value is nullish, otherwise false.\n */\nexport function isNullish(value: unknown): boolean {\n return value === undefined || value === null;\n}\n","import type { FC } from \"react\";\n\nimport { Text, TextProps } from \"@/components/Text\";\nimport { TextColor, TextVariant } from \"@/types\";\nimport { isNullish } from \"@/util/type-check\";\n\nexport interface UnsetHintProps extends TextProps {\n value?: unknown;\n hint: string;\n}\n\n/**\n * A basic hint to display to the user.\n *\n * This is an alias for {@link Text} with {@link TextVariant.Xxs}.\n *\n * @param value A value used to determine whether to display the hint.\n * If this value is nullish, then the hint is shown.\n * See {@link isNullish}.\n * @param hint The hint to display when `value` is nullish.\n * @param props Additional HTML properties to apply to the component.\n *\n * @internal For use by VOODO form controls.\n */\nexport const UnsetHint: FC<UnsetHintProps> = ({ value, hint, ...props }) => {\n const isUnset = isNullish(value);\n\n return isUnset ? (\n <Text color={TextColor.Muted} variant={TextVariant.Xxs} {...props}>\n {hint}\n </Text>\n ) : null;\n};\n\nUnsetHint.displayName = \"UnsetHint\";\n","import { Field, Checkbox as HeadlessCheckbox, Label } from \"@headlessui/react\";\nimport clsx from \"clsx\";\nimport { type FC, InputHTMLAttributes } from \"react\";\n\nimport { Icon } from \"@/components/Icons/Icon\";\nimport { UnsetHint } from \"@/components/UnsetHint\";\nimport radiusStyles from \"@/styles/radius\";\nimport { TEXT_STYLES } from \"@/styles/text\";\nimport {\n ActionColor,\n bgColorClass,\n BorderColor,\n borderColorClass,\n BrandColor,\n ElementState,\n IconName,\n Radius,\n Size,\n TextColor,\n textColorClass,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\ntype ModifiedCheckboxProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"size\" | \"onChange\" | \"checked\" | \"disabled\" | \"className\"\n>;\n\nexport interface CheckboxProps extends ModifiedCheckboxProps {\n checked?: boolean;\n onChange?: (checked: boolean) => void;\n indeterminate?: boolean;\n label?: string;\n disabled?: boolean;\n size?: Size;\n radius?: Radius;\n className?: string;\n labelClassName?: string;\n showUnsetHint?: boolean;\n}\n\nconst sizeStyles: Record<Size, string> = {\n [Size.Xs]: clsx(\"w-3 h-3\"),\n [Size.Sm]: clsx(\"w-4 h-4\"),\n [Size.Md]: clsx(\"w-5 h-5\"),\n [Size.Lg]: clsx(\"w-6 h-6\"),\n [Size.Xl]: clsx(\"w-7 h-7\"),\n};\n\nconst checkmarkSizeStyles: Record<Size, string> = {\n [Size.Xs]: clsx(\"checked:after:text-xs\"),\n [Size.Sm]: clsx(\"checked:after:text-sm\"),\n [Size.Md]: clsx(\"checked:after:text-base\"),\n [Size.Lg]: clsx(\"checked:after:text-lg\"),\n [Size.Xl]: clsx(\"checked:after:text-xl\"),\n};\n\n/**\n * A basic checkbox component.\n *\n * This component operates exclusively as a controlled component. See `checked` and `onChange` for controls.\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const [checked, setChecked] = useState<boolean>(false);\n *\n * return (\n * <Checkbox\n * checked={checked}\n * onChange={(newValue: boolean) => setChecked(newValue)}\n * label={\"Create new dataset\"}\n * />\n * );\n * };\n * ```\n *\n * @param checked `checked` state of the checkbox.\n * @param onChange Change handler for when the checked state changes.\n * @param indeterminate When true (and `checked` is false), renders a dash icon,\n * indicating partial selection among descendants. Ignored when `checked` is true.\n * @param size Size of the checkbox; this controls both the checkbox itself and the associated label. See {@link Size}.\n * @param radius Border radius of the checkbox; this controls the styling of the checkbox itself. See {@link Radius}.\n * @param className `class` overrides to apply to the checkbox.\n * @param labelClassName `class` overrides for custom styling of the checkbox's label.\n * @param label Label to display alongside the checkbox.\n * @param showUnsetHint If `true`, displays a hint to the user for checkbox interaction.\n * @param props Additional HTML properties to apply to the checkbox.\n */\nexport const Checkbox: FC<CheckboxProps> = ({\n checked,\n onChange,\n indeterminate,\n size = Size.Md,\n radius = Radius.Xs,\n className,\n labelClassName,\n label,\n showUnsetHint,\n ...props\n}) => {\n const showIndeterminate = !!indeterminate && !checked;\n\n return (\n <Field className=\"group flex items-center gap-2\">\n <HeadlessCheckbox\n checked={checked}\n onChange={onChange}\n indeterminate={showIndeterminate}\n className={cn(\n \"group\",\n \"relative\",\n \"cursor-pointer\",\n \"appearance-none\",\n \"border\",\n borderColorClass(BorderColor.Default),\n \"group-hover:border-action-primary-primary\",\n radiusStyles(radius),\n sizeStyles[size],\n checkmarkSizeStyles[size],\n \"disabled:opacity-50\",\n \"disabled:cursor-not-allowed\",\n bgColorClass(ActionColor.PrimaryDefault, ElementState.Checked),\n borderColorClass(BorderColor.Active, ElementState.Checked),\n showIndeterminate &&\n \"bg-[var(--color-brand-primary)]/25 border-[var(--color-brand-primary)] \",\n className\n )}\n {...props}\n >\n {showIndeterminate ? (\n <Icon\n name={IconName.Remove}\n color={BrandColor.Primary}\n className=\"absolute inset-0 w-full h-full\"\n />\n ) : (\n <Icon\n name={IconName.Check}\n color={TextColor.Primary}\n className={clsx(\n \"absolute inset-0 w-full h-full opacity-0 group-data-checked:opacity-100\"\n )}\n />\n )}\n </HeadlessCheckbox>\n {label && (\n <Label\n className={cn(\n textColorClass(TextColor.Primary),\n TEXT_STYLES[size],\n \"cursor-pointer\",\n labelClassName\n )}\n >\n {label}\n </Label>\n )}\n {showUnsetHint && (\n <UnsetHint value={checked} hint=\"Click the checkbox to set a value\" />\n )}\n </Field>\n );\n};\n\nCheckbox.displayName = \"Checkbox\";\n","import clsx from \"clsx\";\nimport type { FC, HTMLAttributes } from \"react\";\n\n/**\n * A wrapper component which applies styling to make its children appear clickable to the user.\n *\n * Clickable components have their cursor set to the `pointer` cursor option when hovering.\n *\n * @example\n * ```tsx\n * <Clickable onClick={() => deleteEntry()}}>\n * <Icon name={IconName.Delete} />\n * </Clickable>\n * ```\n *\n * @param children Content wrapped by this component.\n * @param className `class` overrides to apply to the component.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const Clickable: FC<HTMLAttributes<HTMLSpanElement>> = ({\n children,\n className,\n ...props\n}) => {\n return (\n <span className={clsx(\"cursor-pointer\", className)} {...props}>\n {children}\n </span>\n );\n};\n\nClickable.displayName = \"Clickable\";\n","import { useCallback, useMemo, useState } from \"react\";\n\n/**\n * Props for {@link useControllableState}.\n *\n * A component is \"controlled\" when `value` is defined and \"uncontrolled\"\n * otherwise. In uncontrolled mode the hook owns the state and seeds it with\n * `initializer`; in controlled mode the consumer owns the state and is\n * responsible for updating `value` in response to `onChange`.\n */\nexport type ControllableStateProps<T> = {\n /** Lazily produces the initial value used when the hook is uncontrolled. */\n initializer: () => T;\n /** Invoked with the next value on every change, in both controlled and uncontrolled modes. */\n onChange?: (value: T) => void;\n /** When defined, switches the hook into controlled mode and uses this as the resolved value. */\n value?: T;\n};\n\n/**\n * Tuple of `[value, onChange]` returned by {@link useControllableState}, mirroring\n * the shape of `useState`.\n */\nexport type Controllable<T> = [value: T, onChange: (value: T) => void];\n\n/**\n * Hook for implementing components that may be either controlled or\n * uncontrolled, following the same convention as native form inputs.\n *\n * - If `value` is `undefined`, the hook manages internal state seeded by\n * `initializer` and updates it on every change.\n * - If `value` is defined, the hook returns `value` as-is and never mutates\n * internal state; the consumer is responsible for re-rendering with the\n * next value.\n *\n * `onChange` (when provided) fires on every change in either mode.\n *\n * @example\n * ```tsx\n * const [value, setValue] = useControllableState({\n * initializer: () => defaultValue,\n * onChange,\n * value: controlledValue,\n * });\n * ```\n */\nexport const useControllableState = <T>({\n initializer,\n onChange,\n value,\n}: ControllableStateProps<T>): Controllable<T> => {\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<T>(initializer);\n\n const resolvedValue = isControlled ? value : internalValue;\n const resolvedOnChange = useCallback(\n (value: T) => {\n onChange?.(value);\n if (!isControlled) {\n setInternalValue(value);\n }\n },\n [isControlled, onChange]\n );\n\n return useMemo(\n () => [resolvedValue, resolvedOnChange],\n [resolvedOnChange, resolvedValue]\n );\n};\n","import { useCallback } from \"react\";\n\nimport { useControllableState } from \"@/util/useControllableState\";\n\n/**\n * Options for {@link useDisclosure}.\n *\n * Provide `defaultOpen` for an uncontrolled disclosure, or `open` (with\n * `onOpenChange`) for a controlled disclosure.\n */\nexport interface UseDisclosureOptions {\n /** Initial open state when uncontrolled. Default `true`. */\n defaultOpen?: boolean;\n /** When defined, switches the hook into controlled mode and uses this as the resolved open state. */\n open?: boolean;\n /** Invoked with the next open state on every change, in both controlled and uncontrolled modes. */\n onOpenChange?: (open: boolean) => void;\n}\n\n/**\n * Return value of {@link useDisclosure}.\n */\nexport interface UseDisclosureReturn {\n /** Current open state. */\n open: boolean;\n /** Flip the open state. In controlled mode this only fires `onOpenChange` and does not update internal state. */\n toggle: () => void;\n /** Set the open state. In controlled mode this only fires `onOpenChange` and does not update internal state. */\n setOpen: (next: boolean) => void;\n}\n\n/**\n * Hook for managing a boolean \"open / closed\" state, suitable for popovers,\n * dialogs, accordions, and other disclosures.\n *\n * Supports both controlled and uncontrolled usage via {@link useControllableState}:\n * pass `defaultOpen` for uncontrolled, or `open` (typically alongside\n * `onOpenChange`) for controlled.\n *\n * @example\n * ```tsx\n * // Uncontrolled\n * const { open, toggle, setOpen } = useDisclosure({ defaultOpen: false });\n *\n * // Controlled\n * const { open, toggle } = useDisclosure({ open: isOpen, onOpenChange: setIsOpen });\n * ```\n */\nexport function useDisclosure({\n defaultOpen = true,\n open: controlledOpen,\n onOpenChange,\n}: UseDisclosureOptions = {}): UseDisclosureReturn {\n const [open, setOpen] = useControllableState({\n initializer: () => defaultOpen,\n onChange: onOpenChange,\n value: controlledOpen,\n });\n\n const toggle = useCallback(() => setOpen(!open), [open, setOpen]);\n\n return { open, toggle, setOpen };\n}\n","import clsx from \"clsx\";\nimport React from \"react\";\n\nimport { useDisclosure, UseDisclosureOptions } from \"@/util/useDisclosure\";\n\nimport styles from \"./Collapsible.module.css\";\n\n/**\n * Snapshot of open/close state passed to the `header` render prop so the\n * caller can style the trigger element (e.g. rotate a chevron icon).\n */\nexport interface CollapsibleState {\n /** Whether the content area is currently open. */\n open: boolean;\n /** Toggles the open state. Calls `onOpenChange` when in controlled mode. */\n toggle: () => void;\n}\n\n/**\n * Props for {@link Collapsible}.\n *\n * Extends {@link UseDisclosureOptions} so the component supports both\n * uncontrolled (`defaultOpen`) and controlled (`open` + `onOpenChange`) usage.\n */\nexport interface CollapsibleProps extends UseDisclosureOptions {\n /**\n * Render prop for the clickable header. Receives the current\n * {@link CollapsibleState} so the caller can wire up the toggle and reflect\n * open state in the trigger UI.\n *\n * @example\n * ```tsx\n * <Collapsible header={({ open, toggle }) => (\n * <button onClick={toggle}>{open ? \"Hide\" : \"Show\"}</button>\n * )}>\n * content\n * </Collapsible>\n * ```\n */\n header?: (state: CollapsibleState) => React.ReactNode;\n /**\n * When `true` (default), the content area expands and collapses with a CSS\n * `max-height` transition so the DOM node stays mounted and accessible while\n * collapsed. When `false`, children are unmounted immediately with no animation.\n * @default true\n */\n animated?: boolean;\n /** Content to show or hide. */\n children?: React.ReactNode;\n /** Additional class name applied to the root element. */\n className?: string;\n /** Inline styles applied to the root element. */\n style?: React.CSSProperties;\n}\n\n/**\n * A vertically collapsible container with an optional header trigger.\n *\n * Supports uncontrolled and controlled open state via {@link useDisclosure}.\n * When `animated` is true, content visibility is driven by a CSS `max-height`\n * transition so the DOM node stays mounted and accessible while collapsed.\n *\n * @example\n * ```tsx\n * // Uncontrolled — starts open\n * <Collapsible\n * header={({ open, toggle }) => (\n * <button onClick={toggle}>{open ? \"Collapse\" : \"Expand\"}</button>\n * )}\n * >\n * <p>Hidden content</p>\n * </Collapsible>\n *\n * // Controlled\n * const [open, setOpen] = useState(false);\n * <Collapsible open={open} onOpenChange={setOpen} header={({ toggle }) => (\n * <button onClick={toggle}>Toggle</button>\n * )}>\n * <p>Controlled content</p>\n * </Collapsible>\n * ```\n */\nconst Collapsible: React.FC<CollapsibleProps> = ({\n defaultOpen = true,\n open: controlledOpen,\n onOpenChange,\n header,\n animated = true,\n children,\n className,\n style,\n}) => {\n const { open, toggle } = useDisclosure({\n defaultOpen,\n open: controlledOpen,\n onOpenChange,\n });\n\n return (\n <div className={clsx(styles.root, className)} style={style}>\n {header?.({ open, toggle })}\n {animated ? (\n <div className={clsx(styles.content, { [styles.contentOpen]: open })}>\n {children}\n </div>\n ) : open ? (\n children\n ) : null}\n </div>\n );\n};\n\nexport default Collapsible;\n","import { MenuItem } from \"@headlessui/react\";\nimport type { FC, HTMLAttributes } from \"react\";\n\nimport { Icon } from \"@/components/Icons\";\nimport { Text } from \"@/components/Text\";\nimport radiusStyles from \"@/styles/radius\";\nimport {\n BackgroundColor,\n bgColorClass,\n ElementState,\n IconName,\n Radius,\n Size,\n TextColor,\n TextVariant,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\n/**\n * Props for {@link MenuCheckItem}.\n */\nexport interface MenuCheckItemProps extends HTMLAttributes<HTMLButtonElement> {\n /** Whether this item is currently checked/selected. */\n checked?: boolean;\n /** If `true`, the item cannot be interacted with and is rendered in a muted style. */\n disabled?: boolean;\n}\n\n/**\n * A selectable menu item with a leading checkmark indicator.\n * The checkmark is shown when `checked` is `true`; otherwise the slot is empty\n * but reserved so that text alignment stays consistent across items.\n *\n * @example\n * ```tsx\n * <Dropdown trigger={<DropdownTrigger>Sort</DropdownTrigger>}>\n * <MenuCheckItem checked={sort === \"asc\"} onClick={() => setSort(\"asc\")}>\n * Ascending\n * </MenuCheckItem>\n * <MenuCheckItem checked={sort === \"desc\"} onClick={() => setSort(\"desc\")}>\n * Descending\n * </MenuCheckItem>\n * </Dropdown>\n * ```\n *\n * @param checked If `true`, a checkmark is shown in the leading slot.\n * @param disabled If `true`, the item cannot be interacted with.\n * @param children The label text.\n * @param className `class` overrides to apply to the component.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const MenuCheckItem: FC<MenuCheckItemProps> = ({\n checked,\n disabled,\n children,\n className,\n ...props\n}) => {\n return (\n <MenuItem disabled={disabled}>\n {({ focus }) => (\n <button\n type=\"button\"\n role=\"menuitemcheckbox\"\n aria-checked={checked}\n disabled={disabled}\n className={cn(\n \"flex w-full items-center gap-2\",\n \"px-3 py-1.5\",\n radiusStyles(Radius.Sm),\n \"cursor-pointer\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n focus && bgColorClass(BackgroundColor.CardElevated),\n bgColorClass(BackgroundColor.CardElevated, ElementState.Hover),\n className\n )}\n {...props}\n >\n {/* Reserved slot so text aligns whether checked or not */}\n <span className=\"flex size-4 shrink-0 items-center justify-center\">\n {checked && (\n <Icon\n name={IconName.Check}\n size={Size.Sm}\n color={TextColor.Primary}\n />\n )}\n </span>\n <Text\n variant={TextVariant.Sm}\n color={TextColor.Primary}\n className=\"block min-w-0 truncate\"\n >\n {children}\n </Text>\n </button>\n )}\n </MenuItem>\n );\n};\n\nMenuCheckItem.displayName = \"MenuCheckItem\";\n","import { MenuItem } from \"@headlessui/react\";\nimport type { FC, HTMLAttributes, ReactNode } from \"react\";\n\nimport { Icon } from \"@/components/Icons\";\nimport { Text } from \"@/components/Text\";\nimport radiusStyles from \"@/styles/radius\";\nimport {\n BackgroundColor,\n bgColorClass,\n ElementState,\n IconColor,\n IconName,\n Radius,\n Size,\n TextColor,\n TextVariant,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\n/**\n * Props for {@link MenuIconTextItem}.\n */\nexport interface MenuIconTextItemProps extends HTMLAttributes<HTMLButtonElement> {\n /** Icon to display to the left of the text content. */\n icon: IconName | ReactNode;\n /** Primary label text. */\n text: string;\n /** Optional secondary description shown below the primary text. */\n subtext?: string;\n /** If `true`, the item cannot be interacted with and is rendered in a muted style. */\n disabled?: boolean;\n /** If `true`, renders text and icon in the destructive color palette. */\n destructive?: boolean;\n}\n\n/**\n * A menu item displaying an icon alongside primary text and an optional subtext description.\n * Matches the layout shown for action menus such as \"Sort by similarity / Find visually similar\".\n *\n * @example\n * ```tsx\n * <Dropdown trigger={<DropdownTrigger>Open</DropdownTrigger>}>\n * <MenuIconTextItem\n * icon={IconName.ImageSearch}\n * text=\"Sort by similarity\"\n * subtext=\"Find visually similar\"\n * onClick={() => {}}\n * />\n * </Dropdown>\n * ```\n *\n * @param icon An {@link IconName} or a custom ReactNode rendered in the leading slot.\n * @param text The primary label for the item.\n * @param subtext An optional secondary line rendered below the primary text in muted color.\n * @param disabled If `true`, the item cannot be interacted with.\n * @param destructive If `true`, renders text colors in the destructive palette.\n * @param className `class` overrides to apply to the component.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const MenuIconTextItem: FC<MenuIconTextItemProps> = ({\n icon,\n text,\n subtext,\n disabled,\n destructive,\n className,\n ...props\n}) => {\n const textColor = destructive ? TextColor.Destructive : TextColor.Primary;\n const subtextColor = destructive\n ? TextColor.Destructive\n : TextColor.Secondary;\n const iconColor = destructive ? IconColor.Destructive : IconColor.Default;\n\n return (\n <MenuItem disabled={disabled}>\n {({ focus }) => (\n <button\n type=\"button\"\n disabled={disabled}\n className={cn(\n \"flex w-full items-center gap-2.5\",\n \"px-3 py-1.5\",\n radiusStyles(Radius.Sm),\n \"cursor-pointer text-left\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n focus && bgColorClass(BackgroundColor.CardElevated),\n bgColorClass(BackgroundColor.CardElevated, ElementState.Hover),\n className\n )}\n {...props}\n >\n <span className=\"flex size-5 shrink-0 items-center justify-center\">\n {typeof icon === \"string\" ? (\n <Icon name={icon as IconName} size={Size.Lg} color={iconColor} />\n ) : (\n icon\n )}\n </span>\n\n <span className=\"flex flex-col gap-0.5 min-w-0\">\n <Text\n variant={TextVariant.Sm}\n color={textColor}\n className=\"block truncate\"\n >\n {text}\n </Text>\n {subtext && (\n <Text\n variant={TextVariant.Xs}\n color={subtextColor}\n className=\"block truncate\"\n >\n {subtext}\n </Text>\n )}\n </span>\n </button>\n )}\n </MenuItem>\n );\n};\n\nMenuIconTextItem.displayName = \"MenuIconTextItem\";\n","import type { FC, HTMLAttributes } from \"react\";\n\nimport { Text } from \"@/components/Text\";\nimport { TextColor, TextVariant } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\n/**\n * Props for {@link MenuSectionTitle}.\n */\nexport interface MenuSectionTitleProps extends HTMLAttributes<HTMLDivElement> {\n /** The section title text. Rendered as an uppercase muted label. */\n children: string;\n}\n\n/**\n * A non-interactive section title within a menu (e.g. {@link Dropdown}).\n * Renders as an uppercase label above a group of items.\n *\n * @example\n * ```tsx\n * <Dropdown trigger={<DropdownTrigger>Open</DropdownTrigger>}>\n * <MenuSectionTitle>Actions</MenuSectionTitle>\n * <MenuIconTextItem icon={IconName.Edit} text=\"Edit\" />\n * </Dropdown>\n * ```\n *\n * @param children The section title text.\n * @param className `class` overrides to apply to the component.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const MenuSectionTitle: FC<MenuSectionTitleProps> = ({\n children,\n className,\n ...props\n}) => {\n return (\n <div\n role=\"presentation\"\n className={cn(\"px-3 pt-2.5 pb-1\", className)}\n {...props}\n >\n <Text variant={TextVariant.Label} color={TextColor.Muted}>\n {children}\n </Text>\n </div>\n );\n};\n\nMenuSectionTitle.displayName = \"MenuSectionTitle\";\n","import type { FC, HTMLAttributes } from \"react\";\n\nimport { borderColorClass, BorderColor } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\n/**\n * Props for {@link MenuSeparator}. Accepts any standard div HTML attributes.\n */\nexport type MenuSeparatorProps = HTMLAttributes<HTMLDivElement>;\n\n/**\n * A horizontal rule separator within a menu (e.g. {@link Dropdown}).\n * Used to visually divide groups of items.\n *\n * @example\n * ```tsx\n * <Dropdown trigger={<DropdownTrigger>Open</DropdownTrigger>}>\n * <MenuTextItem onClick={() => {}}>First group</MenuTextItem>\n * <MenuSeparator />\n * <MenuTextItem onClick={() => {}}>Second group</MenuTextItem>\n * </Dropdown>\n * ```\n *\n * @param className `class` overrides to apply to the component.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const MenuSeparator: FC<MenuSeparatorProps> = ({\n className,\n ...props\n}) => {\n return (\n <div\n role=\"separator\"\n className={cn(\n \"my-1 -mx-1.5 border-t\",\n borderColorClass(BorderColor.Subtle),\n className\n )}\n {...props}\n />\n );\n};\n\nMenuSeparator.displayName = \"MenuSeparator\";\n","import { MenuItem } from \"@headlessui/react\";\nimport type { FC, HTMLAttributes } from \"react\";\n\nimport { Text } from \"@/components/Text\";\nimport radiusStyles from \"@/styles/radius\";\nimport {\n BackgroundColor,\n bgColorClass,\n ElementState,\n Radius,\n TextColor,\n TextVariant,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\n/**\n * Props for {@link MenuTextItem}.\n */\nexport interface MenuTextItemProps extends HTMLAttributes<HTMLButtonElement> {\n /** If `true`, the item cannot be interacted with and is rendered in a muted style. */\n disabled?: boolean;\n /** If `true`, renders the label in the destructive text color (e.g. for \"Delete\"). */\n destructive?: boolean;\n}\n\n/**\n * A simple text-only item within a menu (e.g. {@link Dropdown}).\n *\n * @example\n * ```tsx\n * <Dropdown trigger={<DropdownTrigger>Open</DropdownTrigger>}>\n * <MenuTextItem onClick={() => console.log(\"clicked\")}>\n * Delete item\n * </MenuTextItem>\n * </Dropdown>\n * ```\n *\n * @param children The label text.\n * @param disabled If `true`, the item cannot be interacted with.\n * @param destructive If `true`, renders the label in the destructive text color.\n * @param className `class` overrides to apply to the component.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const MenuTextItem: FC<MenuTextItemProps> = ({\n children,\n disabled,\n destructive,\n className,\n ...props\n}) => {\n return (\n <MenuItem disabled={disabled}>\n {({ focus }) => (\n <button\n type=\"button\"\n disabled={disabled}\n className={cn(\n \"flex w-full items-center\",\n \"px-3 py-1.5\",\n radiusStyles(Radius.Sm),\n \"cursor-pointer\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n focus && bgColorClass(BackgroundColor.CardElevated),\n bgColorClass(BackgroundColor.CardElevated, ElementState.Hover),\n className\n )}\n {...props}\n >\n <Text\n variant={TextVariant.Sm}\n color={destructive ? TextColor.Destructive : TextColor.Primary}\n className=\"block min-w-0 truncate\"\n >\n {children}\n </Text>\n </button>\n )}\n </MenuItem>\n );\n};\n\nMenuTextItem.displayName = \"MenuTextItem\";\n","import radiusStyles from \"@/styles/radius\";\nimport shadowStyles from \"@/styles/shadow\";\nimport { BackgroundColor, bgColorClass, Radius, Shadow } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\n/**\n * Shared visual styles for menu panels (Dropdown, ContextMenu, etc.).\n *\n * Provides the popover background, padding, min/max-width, radius, shadow,\n * and focus outline reset that define the menu's visual identity.\n */\nexport const menuPanelStyles = (): string =>\n cn(\n \"min-w-[120px] max-w-xs\",\n \"p-1.5\",\n bgColorClass(BackgroundColor.Popover),\n radiusStyles(Radius.Lg),\n shadowStyles(Shadow.Lg),\n \"focus:outline-none\"\n );\n","import { Menu, MenuButton, MenuItems } from \"@headlessui/react\";\nimport {\n useRef,\n useState,\n type FC,\n type HTMLAttributes,\n type MouseEvent,\n type ReactNode,\n} from \"react\";\nimport { flushSync } from \"react-dom\";\n\nimport { menuPanelStyles } from \"@/components/Menu\";\nimport { ZIndex, zIndexStyles } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\n/**\n * Anchor placements used when the cursor is far from any viewport edge\n * vs. flipped placements when the menu would overflow.\n */\ntype MenuAnchor = \"bottom start\" | \"bottom end\" | \"top start\" | \"top end\";\n\n/**\n * Conservative estimate of the menu panel size (px). Used at right-click\n * time to decide whether to flip the anchor away from the viewport edge.\n * The actual menu is capped at `max-w-xs` (320px); the height bound is a\n * generous worst-case for typical menus (8–10 items + sections).\n */\nconst ESTIMATED_MENU_SIZE = { width: 320, height: 320 };\n\n/**\n * Pick the menu anchor based on whether the menu would overflow the\n * viewport when opened in the default `bottom start` direction.\n *\n * @internal\n */\nexport const pickAnchor = (\n cursor: { x: number; y: number },\n viewport: { width: number; height: number },\n menu: { width: number; height: number } = ESTIMATED_MENU_SIZE\n): MenuAnchor => {\n const edge = cursor.y + menu.height > viewport.height ? \"top\" : \"bottom\";\n const alignment = cursor.x + menu.width > viewport.width ? \"end\" : \"start\";\n return `${edge} ${alignment}` as MenuAnchor;\n};\n\n/**\n * Props for {@link ContextMenu}.\n */\nexport interface ContextMenuProps extends HTMLAttributes<HTMLDivElement> {\n /** The right-clickable area. Right-click anywhere inside opens the menu. */\n children: ReactNode;\n /** Menu content. Use the Menu* primitive components. */\n menu: ReactNode;\n /** If `true`, right-click is ignored and the menu does not open. */\n disabled?: boolean;\n}\n\n/**\n * A right-click triggered menu. Opens at the cursor position, dismisses on\n * click outside, item selection, or Escape.\n *\n * Composes with the Menu primitives ({@link MenuTextItem},\n * {@link MenuIconTextItem}, {@link MenuCheckItem}, {@link MenuSectionTitle},\n * {@link MenuSeparator}). Built on HeadlessUI's `Menu`, so keyboard\n * navigation and ARIA `role=\"menu\"` semantics work out of the box.\n *\n * @example\n * ```tsx\n * <ContextMenu\n * menu={\n * <>\n * <MenuTextItem onClick={handleEdit}>Edit</MenuTextItem>\n * <MenuTextItem onClick={handleDuplicate}>Duplicate</MenuTextItem>\n * <MenuSeparator />\n * <MenuTextItem destructive onClick={handleDelete}>\n * Delete\n * </MenuTextItem>\n * </>\n * }\n * >\n * <div className=\"size-full\">Right-click me</div>\n * </ContextMenu>\n * ```\n *\n * @param children The right-clickable area.\n * @param menu Menu content — use the Menu* primitive components.\n * @param disabled If `true`, right-click is ignored.\n * @param className `class` overrides for the wrapper element.\n * @param props Additional HTML properties for the wrapper element.\n */\nexport const ContextMenu: FC<ContextMenuProps> = ({\n children,\n menu,\n disabled,\n className,\n onContextMenu,\n ...props\n}) => {\n const buttonRef = useRef<HTMLButtonElement>(null);\n const closeRef = useRef<(() => void) | null>(null);\n const [position, setPosition] = useState({ x: 0, y: 0 });\n const [anchor, setAnchor] = useState<MenuAnchor>(\"bottom start\");\n\n const handleContextMenu = (e: MouseEvent<HTMLDivElement>): void => {\n onContextMenu?.(e);\n if (e.defaultPrevented || disabled) return;\n e.preventDefault();\n closeRef.current?.();\n const nextAnchor = pickAnchor(\n { x: e.clientX, y: e.clientY },\n { width: window.innerWidth, height: window.innerHeight }\n );\n flushSync(() => {\n setPosition({ x: e.clientX, y: e.clientY });\n setAnchor(nextAnchor);\n });\n buttonRef.current?.click();\n };\n\n return (\n <>\n <div onContextMenu={handleContextMenu} className={className} {...props}>\n {children}\n </div>\n <Menu>\n {({ close }) => {\n closeRef.current = close;\n return (\n <>\n <MenuButton\n ref={buttonRef}\n as=\"div\"\n aria-hidden\n tabIndex={-1}\n style={{\n position: \"fixed\",\n left: position.x,\n top: position.y,\n width: 1,\n height: 1,\n opacity: 0,\n pointerEvents: \"none\",\n }}\n />\n <MenuItems\n anchor={{ to: anchor, gap: 0 }}\n portal\n className={cn(\n menuPanelStyles(),\n zIndexStyles(ZIndex.AboveModal)\n )}\n >\n {menu}\n </MenuItems>\n </>\n );\n }}\n </Menu>\n </>\n );\n};\n\nContextMenu.displayName = \"ContextMenu\";\n","import clsx from \"clsx\";\n\nimport { Size } from \"@/types\";\n\nexport const sizeStyles: Partial<Record<Size, string>> = {\n [Size.Sm]: clsx(\"py-1.75\", \"text-sm/5\", \"h-[2rem]\"),\n [Size.Md]: clsx(\"py-2\", \"text-md/5\", \"h-[2.25rem]\"),\n [Size.Lg]: clsx(\"py-2.25\", \"text-lg/5\", \"h-[2.5rem]\"),\n};\n\nexport const iconPaddingStyles: Partial<Record<Size, string>> = {\n [Size.Sm]: \"pl-2.5\",\n [Size.Md]: \"pl-2.75\",\n [Size.Lg]: \"pl-3\",\n};\n\nexport const iconSizeStyles: Partial<Record<Size, string>> = {\n [Size.Sm]: \"w-3.5 h-3.5\",\n [Size.Md]: \"w-3.75 h-3.75\",\n [Size.Lg]: \"w-4 h-4\",\n};\n\nexport const paddingLeftStyles: Partial<Record<Size, string>> = {\n [Size.Sm]: \"pl-7.5\",\n [Size.Md]: \"pl-8\",\n [Size.Lg]: \"pl-8.25\",\n};\n","import { Button } from \"@headlessui/react\";\nimport { type FC } from \"react\";\n\nimport { Icon } from \"@/components/Icons\";\nimport { IconColor, Size, textColorClass } from \"@/types\";\nimport { IconName } from \"@/types/icons\";\nimport { cn } from \"@/util/classes\";\n\nimport { iconPaddingStyles, iconSizeStyles } from \"../Input/styles\";\n\nexport enum IconPosition {\n Leading = \"leading\",\n Trailing = \"trailing\",\n}\n\nexport interface DatepickerIconButtonProps {\n onClick: () => void;\n disabled?: boolean;\n hasValue?: boolean;\n size?: Size;\n ariaLabel?: string;\n iconName: IconName;\n position?: IconPosition;\n}\n\n/**\n * An interactable icon to display within the datepicker input.\n *\n * @param onClick Callback triggered when the icon is clicked.\n * @param disabled If `true`, disables interaction with the icon.\n * @param size Size of the icon. See {@link Size}.\n * @param ariaLabel Optional aria label for the icon; only used for accessibility.\n * @param iconName Name of the icon. See {@link IconName}.\n * @param position The position of the icon. See {@link IconPosition}.\n *\n * @internal For use by {@link DatepickerInput}.\n */\nexport const DatepickerIconButton: FC<DatepickerIconButtonProps> = ({\n onClick,\n disabled,\n size = Size.Md,\n ariaLabel = \"Open date picker\",\n iconName,\n position = IconPosition.Leading,\n}) => {\n const positionClasses =\n position === IconPosition.Leading\n ? \"absolute left-0\"\n : \"absolute right-0 pr-3\";\n\n return (\n <Button\n onClick={onClick}\n disabled={disabled}\n className={cn(\n positionClasses,\n \"flex items-center justify-center\",\n \"cursor-pointer\",\n \"disabled:cursor-not-allowed\",\n position === IconPosition.Leading && iconPaddingStyles[size],\n \"z-10\"\n )}\n aria-label={ariaLabel}\n >\n <Icon\n name={iconName}\n className={cn(iconSizeStyles[size], textColorClass(IconColor.Disabled))}\n />\n </Button>\n );\n};\n\nexport default DatepickerIconButton;\n","import { type FC, useCallback, useRef } from \"react\";\n\nimport radiusStyles from \"@/styles/radius\";\nimport {\n BackgroundColor,\n bgColorClass,\n BorderColor,\n borderColorClass,\n ElementState,\n Radius,\n Size,\n TextColor,\n textColorClass,\n} from \"@/types\";\nimport { IconName } from \"@/types/icons\";\nimport { cn } from \"@/util/classes\";\n\nimport { paddingLeftStyles, sizeStyles } from \"../Input/styles\";\n\nimport DatepickerIconButton, { IconPosition } from \"./DatepickerIconButton\";\n\nconst datePickerInputStyle = ({\n disabled,\n error,\n radius = Radius.Sm,\n size = Size.Md,\n}: {\n disabled?: boolean;\n error?: boolean;\n radius?: Radius;\n size?: Size;\n}): string =>\n cn(\n \"w-full\",\n bgColorClass(BackgroundColor.Background),\n textColorClass(TextColor.Primary),\n \"placeholder:text-content-text-tertiary\",\n \"transition-colors\",\n \"border\",\n error\n ? borderColorClass(BorderColor.Error)\n : borderColorClass(BorderColor.Default),\n !disabled &&\n !error &&\n borderColorClass(BorderColor.Hover, ElementState.Hover),\n \"focus:outline-none\",\n error\n ? borderColorClass(BorderColor.Error, ElementState.Focus)\n : borderColorClass(BorderColor.Focus, ElementState.Focus),\n \"disabled:opacity-50\",\n \"disabled:cursor-not-allowed\",\n borderColorClass(BorderColor.Disabled, ElementState.Disabled),\n radiusStyles(radius),\n sizeStyles[size],\n paddingLeftStyles[size],\n \"pr-8\"\n );\n\nexport interface DatepickerInputProps {\n value?: string;\n onClick?: () => void;\n disabled?: boolean;\n error?: boolean;\n size?: Size;\n radius?: Radius;\n hasValue?: boolean;\n}\n\n/**\n * An input component supporting dates and date-times.\n *\n * This component operates exclusively as a controlled component. See `value` and `onChange` for controlled behavior.\n *\n * @param value The text representation of the date.\n * @param onClick Callback triggered when the input is clicked.\n * @param disabled If `true`, disables the input.\n * @param error If `true`, renders the input in an error state.\n * @param size The size of the input; this controls the size of the text and the input's padding. See {@link Size}.\n * @param radius The border radius of the input. See {@link Radius}.\n * @param hasValue Unused\n *\n * @internal For use by {@link DatePicker}.\n */\nexport const DatepickerInput: FC<DatepickerInputProps> = ({\n value,\n onClick,\n disabled,\n error,\n size = Size.Md,\n radius = Radius.Sm,\n hasValue,\n}) => {\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleIconClick = useCallback(() => {\n if (disabled) return;\n if (onClick) {\n onClick();\n } else if (inputRef.current) {\n inputRef.current.focus();\n inputRef.current.click();\n }\n }, [disabled, onClick]);\n\n const inputClasses = datePickerInputStyle({\n disabled,\n error,\n radius,\n size,\n });\n\n return (\n <div className=\"relative flex items-center\">\n {/* Calendar icon on the left */}\n <DatepickerIconButton\n onClick={handleIconClick}\n disabled={disabled}\n hasValue={hasValue}\n size={size}\n position={IconPosition.Leading}\n iconName={IconName.DateRange}\n />\n <input\n ref={inputRef}\n value={value}\n onClick={onClick}\n disabled={disabled}\n className={inputClasses}\n />\n {/* Caret down icon on the right */}\n <DatepickerIconButton\n onClick={handleIconClick}\n disabled={disabled}\n hasValue={hasValue}\n size={size}\n position={IconPosition.Trailing}\n iconName={IconName.CaretDown}\n />\n </div>\n );\n};\n\nexport default DatepickerInput;\n","import { Field } from \"@headlessui/react\";\nimport { useMemo, type FC } from \"react\";\nimport type { DatePickerProps as ReactDatePickerProps } from \"react-datepicker\";\nimport ReactDatePicker from \"react-datepicker\";\nimport \"react-datepicker/dist/react-datepicker.css\";\nimport \"./Datepicker.css\";\n\nimport { Radius, Size } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nimport DatepickerInput from \"./DatepickerInput\";\n\nexport interface DatePickerProps extends Omit<\n ReactDatePickerProps,\n \"size\" | \"className\" | \"customInput\" | \"dateFormat\" | \"selected\"\n> {\n size?: Size;\n radius?: Radius;\n className?: string;\n error?: boolean;\n dateFormat?: string;\n selected?: Date | null;\n}\n\n/**\n * A datepicker component which allows selecting a date, time, or date-time using a calendar-like interface.\n *\n * @example\n * ```tsx\n * const MyComponent = ({disabled, dateOnly}: {disabled: boolean, dateOnly: boolean}) => {\n * const [value, setValue] = useState<Date | null>(null);\n *\n * const onChange = useCallback((date: Date | null) => {\n * if (date && !Number.isNaN(date.getTime())) {\n * console.log(\"valid date set\", date);\n * }\n *\n * setValue(date);\n * }, [setValue]);\n *\n * return (\n * <DatePicker\n * disabled={disabled}\n * selected={value}\n * showTimeSelect={!dateOnly}\n * onChange={onChange}\n * />\n * );\n * };\n * ```\n *\n * @param size Size of the datepicker input. See {@link Size}.\n * @param radius Border radius of the datepicker input. See {@link Radius}.\n * @param className `class` overrides to apply to the component.\n * @param disabled If `true`, disables the datepicker input and interaction.\n * @param selected The controlled value of the datepicker.\n * @param error If `true`, displays an error state in the datepicker input.\n * @param dateFormat The format to use for displaying the value.\n * If not specified, the following formats are used in order of precedence:\n * - `HH:mm` if `showTimeSelectOnly` is `true`\n * - `yyyy-MM-dd · HH:mm` if `showTimeSelect` is `true`\n * - `yyyy-MM-dd`\n * @param onChange Callback triggered when the user changes the date/time value.\n * @param minDate Optional minimum date; dates before this will be disabled.\n * @param maxDate Optional maximum date; dates after this will be disabled.\n * @param placeholderText Optional placeholder text when no value is present.\n * @param showTimeSelect If `true`, allows the user to select a time value in addition to date.\n * @param showTimeSelectOnly If `true`, allows the user to select *only* a time value (no date).\n * Note that when setting this value to `true`, `showTimeSelect` should also be set to `true`.\n * @param timeIntervals Optional time interval (in minutes) to apply to time selection.\n * Time selection will be limited to times with these increments.\n * If not provided, a default value of `30` is used.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const DatePicker: FC<DatePickerProps> = ({\n size = Size.Md,\n radius = Radius.Sm,\n className,\n disabled,\n selected,\n error,\n dateFormat,\n onChange,\n minDate,\n maxDate,\n placeholderText,\n showTimeSelect,\n showTimeSelectOnly,\n timeIntervals,\n ...props\n}) => {\n const hasValue = Boolean(selected);\n\n const finalDateFormat = useMemo(() => {\n if (dateFormat) return dateFormat; // user provided date format\n if (showTimeSelect && showTimeSelectOnly) return \"HH:mm\";\n if (showTimeSelect) return \"yyyy-MM-dd · HH:mm\";\n return \"yyyy-MM-dd\";\n }, [dateFormat, showTimeSelect, showTimeSelectOnly]);\n\n return (\n <Field className={cn(\"flex flex-col gap-1\", className)}>\n <ReactDatePicker\n selected={selected}\n onChange={!disabled ? onChange : undefined}\n disabled={disabled}\n dateFormat={finalDateFormat}\n minDate={minDate}\n maxDate={maxDate}\n placeholderText={placeholderText}\n showTimeSelect={showTimeSelect}\n showTimeSelectOnly={showTimeSelectOnly}\n timeIntervals={timeIntervals}\n popperClassName=\"!z-[9999]\"\n customInput={\n <DatepickerInput\n disabled={disabled}\n error={error}\n size={size}\n radius={radius}\n hasValue={hasValue}\n />\n }\n {...(props as any)} // eslint-disable-line\n />\n </Field>\n );\n};\n\nDatePicker.displayName = \"DatePicker\";\n","import type { FC, HTMLAttributes } from \"react\";\n\nimport { Text, TextProps } from \"@/components/Text\";\nimport {\n bgColorClass,\n Orientation,\n TextColor,\n textColorClass,\n TextVariant,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport interface DividerProps extends HTMLAttributes<HTMLDivElement> {\n orientation?: Orientation;\n label?: string;\n textProps?: TextProps;\n}\n\ninterface LineProps extends HTMLAttributes<HTMLDivElement> {\n orientation?: Orientation;\n}\n\n/**\n * A divider component used to separate content.\n * This is an alias for {@link Text} with {@link TextVariant.Xxs}.\n *\n * @param orientation A value used to determine whether to display the divider.\n * @param label The label to display on the divider.\n * @param props Additional HTML properties to apply to the component.\n *\n */\nexport const Divider: FC<DividerProps> = ({\n orientation,\n label,\n textProps,\n ...props\n}) => {\n const isColumn = orientation === Orientation.Column;\n\n return (\n <div\n className={cn(\"flex items-center\", isColumn ? \"flex-col h-full\" : \"\")}\n {...props}\n >\n <Line orientation={orientation} data-testid=\"divider-line-before\" />\n {label && (\n <>\n <Text\n color={TextColor.Primary}\n variant={TextVariant.Caption}\n className={cn(\n isColumn ? \"my-1\" : \"mx-2\",\n textColorClass(TextColor.Primary)\n )}\n data-testid=\"divider-label\"\n {...textProps}\n >\n {label}\n </Text>\n <Line orientation={orientation} data-testid=\"divider-line-after\" />\n </>\n )}\n </div>\n );\n};\n\nconst Line: FC<LineProps> = ({ orientation, ...props }) => {\n const isColumn = orientation === Orientation.Column;\n\n return (\n <div\n className={cn(\n bgColorClass(TextColor.Placeholder),\n isColumn ? \"w-px h-full\" : \"h-px flex-1\"\n )}\n {...props}\n />\n );\n};\n\nDivider.displayName = \"Divider\";\n","import { useRef } from \"react\";\nimport type { RefObject } from \"react\";\n\n/**\n * Hook that returns a ref whose `.current` always points to the most recent\n * value passed in.\n *\n * Useful for letting an otherwise-stable callback (e.g. one returned by\n * `useCallback` with no dependencies) read fresh values without re-subscribing\n * — typically a parent-supplied handler or a frequently-changing piece of\n * state. The returned ref's identity is stable across renders.\n *\n * The assignment happens during render. Do not read `ref.current` during the\n * same render in which the value is captured; only read it from event\n * handlers, effects, or other deferred work.\n *\n * @example\n * ```tsx\n * const onChangeRef = useLatest(onChange);\n * const handler = useCallback(() => {\n * onChangeRef.current?.(nextValue);\n * }, []);\n * ```\n */\nexport function useLatest<T>(value: T): RefObject<T> {\n const ref = useRef(value);\n ref.current = value;\n return ref;\n}\n","import React, { useCallback, useRef, useState } from \"react\";\n\nimport { useLatest } from \"./useLatest\";\n\n/**\n * Axis along which a drag delta is measured.\n *\n * - `\"horizontal\"` reports `clientX` deltas.\n * - `\"vertical\"` reports `clientY` deltas.\n */\nexport type DragAxis = \"horizontal\" | \"vertical\";\n\n/**\n * Options for {@link useDragDelta}.\n */\nexport interface UseDragDeltaOptions {\n /** Axis to measure the drag along. */\n axis: DragAxis;\n /** Invoked once when a drag begins (on pointer-down). */\n onDragStart?: () => void;\n /**\n * Invoked on every pointer-move during a drag with the signed pixel delta\n * from the drag start position. Positive values mean right (horizontal) or\n * down (vertical).\n */\n onDelta: (delta: number) => void;\n /** Invoked once when a drag ends (on pointer-up). */\n onDragEnd?: () => void;\n}\n\n/**\n * Return value of {@link useDragDelta}.\n */\nexport interface UseDragDeltaReturn {\n /** `true` while a drag is in progress (between pointer-down and pointer-up). */\n isDragging: boolean;\n /** Props to spread onto the drag handle element. */\n handleProps: {\n onPointerDown: (e: React.PointerEvent<HTMLElement>) => void;\n onPointerMove: (e: React.PointerEvent<HTMLElement>) => void;\n onPointerUp: () => void;\n };\n}\n\n/**\n * Hook that tracks a single-axis pointer drag and reports the running delta\n * from the drag start position.\n *\n * Uses pointer capture, so the drag continues correctly even if the pointer\n * leaves the handle element. The supplied callbacks may be inline; the hook\n * routes them through {@link useLatest} so the returned `handleProps` are\n * stable across renders.\n *\n * @example\n * ```tsx\n * const { isDragging, handleProps } = useDragDelta({\n * axis: \"horizontal\",\n * onDelta: (delta) => setX((x) => x + delta),\n * });\n * return <div {...handleProps} />;\n * ```\n */\nexport function useDragDelta({\n axis,\n onDragStart,\n onDelta,\n onDragEnd,\n}: UseDragDeltaOptions): UseDragDeltaReturn {\n const [isDragging, setIsDragging] = useState(false);\n const isDraggingRef = useRef(false);\n const startPosRef = useRef(0);\n\n // Latest-value refs so handlers stay stable across re-renders.\n const onDragStartRef = useLatest(onDragStart);\n const onDeltaRef = useLatest(onDelta);\n const onDragEndRef = useLatest(onDragEnd);\n\n const onPointerDown = useCallback(\n (e: React.PointerEvent<HTMLElement>) => {\n isDraggingRef.current = true;\n setIsDragging(true);\n startPosRef.current = axis === \"horizontal\" ? e.clientX : e.clientY;\n e.currentTarget.setPointerCapture(e.pointerId);\n onDragStartRef.current?.();\n },\n [axis, onDragStartRef]\n );\n\n const onPointerMove = useCallback(\n (e: React.PointerEvent<HTMLElement>) => {\n if (!isDraggingRef.current) return;\n const current = axis === \"horizontal\" ? e.clientX : e.clientY;\n onDeltaRef.current(current - startPosRef.current);\n },\n [axis, onDeltaRef]\n );\n\n const onPointerUp = useCallback(() => {\n isDraggingRef.current = false;\n setIsDragging(false);\n onDragEndRef.current?.();\n }, [onDragEndRef]);\n\n return {\n isDragging,\n handleProps: { onPointerDown, onPointerMove, onPointerUp },\n };\n}\n","import { useCallback, useRef, useState } from \"react\";\n\n/**\n * Return value of {@link useElementSize}.\n */\nexport interface UseElementSizeReturn {\n /** Callback ref to attach to the element you want to measure. */\n ref: (el: HTMLElement | null) => void;\n /** Current width of the observed element in pixels. `0` before the ref attaches. */\n width: number;\n /** Current height of the observed element in pixels. `0` before the ref attaches. */\n height: number;\n}\n\n/**\n * Hook that tracks the pixel dimensions of a DOM element via\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver | ResizeObserver}.\n *\n * Attach the returned `ref` callback to any element; `width` and `height`\n * update on mount and on every subsequent resize. The observer is\n * automatically disconnected when the element is unmounted or replaced.\n *\n * @example\n * ```tsx\n * function Panel() {\n * const { ref, width, height } = useElementSize();\n * return <div ref={ref}>Size: {width} × {height}</div>;\n * }\n * ```\n */\nexport function useElementSize(): UseElementSizeReturn {\n const [size, setSize] = useState({ width: 0, height: 0 });\n const roRef = useRef<ResizeObserver | null>(null);\n\n const ref = useCallback((el: HTMLElement | null) => {\n roRef.current?.disconnect();\n roRef.current = null;\n if (!el) return;\n const measure = (): void =>\n setSize({ width: el.offsetWidth, height: el.offsetHeight });\n measure();\n roRef.current = new ResizeObserver(measure);\n roRef.current.observe(el);\n }, []);\n\n return { ref, width: size.width, height: size.height };\n}\n","import React, { useCallback, useLayoutEffect, useRef, useState } from \"react\";\n\nimport {\n UseDisclosureOptions,\n UseDisclosureReturn,\n useDisclosure,\n} from \"./useDisclosure\";\nimport { DragAxis, useDragDelta } from \"./useDragDelta\";\nimport { useElementSize } from \"./useElementSize\";\nimport { useLatest } from \"./useLatest\";\n\nexport type { DragAxis };\n\nexport interface UseResizableDrawerOptions extends UseDisclosureOptions {\n /** Axis the drawer resizes along. `\"horizontal\"` for left/right drawers, `\"vertical\"` for top/bottom. */\n axis: DragAxis;\n /**\n * Maximum content-area size in pixels. The header and handle are excluded —\n * `maxSize` caps only the scrollable body region.\n */\n maxSize: number;\n /** Flip the delta sign — use for right-side and bottom-side handles. */\n invert?: boolean;\n /** Invoked with the new content-area size on every drag-induced resize. */\n onSizeChange?: (size: number) => void;\n}\n\nexport interface UseResizableDrawerReturn extends UseDisclosureReturn {\n /** Current content-area size in pixels (0 when closed or not yet measured). */\n size: number;\n /** `true` while the user is actively dragging the resize handle. */\n isDragging: boolean;\n /**\n * `true` only when the current size change should be animated — i.e. an\n * open/close toggle. Content-driven resizes and drags are instant (`false`),\n * so the size snaps and doesn't fight the header's un-animated layout change.\n */\n animating: boolean;\n /** Props to spread onto the drag handle element. */\n dragHandleProps: {\n onPointerDown: (e: React.PointerEvent<HTMLElement>) => void;\n onPointerMove: (e: React.PointerEvent<HTMLElement>) => void;\n onPointerUp: () => void;\n };\n /**\n * Attach the size-bearing wrapper's `onTransitionEnd` to this so `animating`\n * clears when the open/close transition completes.\n */\n onTransitionEnd: () => void;\n /**\n * Attach to the content element. The hook observes it via ResizeObserver and\n * keeps the open size equal to `min(contentHeight, maxSize)` automatically.\n */\n contentRef: (el: HTMLElement | null) => void;\n}\n\nexport function useResizableDrawer({\n axis,\n maxSize,\n invert = false,\n onSizeChange,\n ...disclosureOptions\n}: UseResizableDrawerOptions): UseResizableDrawerReturn {\n const { open, setOpen } = useDisclosure(disclosureOptions);\n // Measured natural content height (synced every commit, below).\n const [contentHeight, setContentHeight] = useState(0);\n // Manual drag override in pixels; `null` means \"auto-size to content\".\n const [userSize, setUserSize] = useState<number | null>(null);\n // Only open/close toggles animate. Drags and content resizes are instant.\n const [animating, setAnimating] = useState(false);\n\n // useElementSize's ResizeObserver re-renders on *external* content changes\n // (image/font load, reflow). We capture the element to measure it\n // synchronously on every commit (below). Its reported height is unused.\n const { ref: observeRef } = useElementSize();\n const contentElRef = useRef<HTMLElement | null>(null);\n const contentRef = useCallback(\n (el: HTMLElement | null) => {\n contentElRef.current = el;\n observeRef(el);\n },\n [observeRef]\n );\n\n // Derived sizes:\n // - autoSize: the natural open size — content height, capped at maxSize.\n // - openSize: a manual drag can only shrink *below* autoSize; otherwise follow content.\n // - size: collapses to 0 when closed.\n const autoSize = Math.min(contentHeight, maxSize);\n const openSize = userSize != null ? Math.min(userSize, autoSize) : autoSize;\n const size = open ? openSize : 0;\n\n const openRef = useLatest(open);\n const sizeRef = useLatest(size);\n const invertRef = useLatest(invert);\n const maxSizeRef = useLatest(maxSize);\n const onSizeChangeRef = useLatest(onSizeChange);\n\n const dragStartSizeRef = useRef(0);\n const isDraggingRef = useRef(false);\n\n // Measure content synchronously on every commit (skipped mid-drag, when the\n // content can't change). Running in the same commit that changed the\n // content/header means `size` updates before paint — no one-frame flicker.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useLayoutEffect(() => {\n if (isDraggingRef.current) return;\n const h = contentElRef.current?.offsetHeight ?? 0;\n setContentHeight((prev) => (prev === h ? prev : h));\n });\n\n const onDragStart = useCallback(() => {\n isDraggingRef.current = true;\n setAnimating(false);\n dragStartSizeRef.current = openRef.current ? sizeRef.current : 0;\n }, [openRef, sizeRef]);\n\n const onDelta = useCallback(\n (delta: number) => {\n const adjusted = invertRef.current ? -delta : delta;\n const raw = dragStartSizeRef.current + adjusted;\n if (raw <= 0) {\n // Dragged shut: close and drop the manual override so reopening auto-sizes.\n if (openRef.current) {\n setOpen(false);\n setUserSize(null);\n }\n return;\n }\n const auto = Math.min(\n contentElRef.current?.offsetHeight ?? 0,\n maxSizeRef.current\n );\n const clamped = Math.min(raw, auto);\n // Dragging all the way up to the natural size re-enters auto mode.\n setUserSize(clamped >= auto ? null : clamped);\n if (!openRef.current) setOpen(true);\n onSizeChangeRef.current?.(clamped);\n },\n [invertRef, maxSizeRef, onSizeChangeRef, openRef, setOpen]\n );\n\n const onDragEnd = useCallback(() => {\n isDraggingRef.current = false;\n }, []);\n\n const { isDragging, handleProps } = useDragDelta({\n axis,\n onDragStart,\n onDelta,\n onDragEnd,\n });\n\n const toggle = useCallback(() => {\n setAnimating(true);\n // Both directions clear the manual override: reopening always auto-sizes\n // (no memory of the last dragged size) and closing renders size 0.\n setUserSize(null);\n setOpen(!openRef.current);\n }, [openRef, setOpen]);\n\n // Clear `animating` once the open/close transition finishes.\n const onTransitionEnd = useCallback(() => {\n if (!isDraggingRef.current) setAnimating(false);\n }, []);\n\n return {\n open,\n toggle,\n setOpen,\n size,\n isDragging,\n animating,\n onTransitionEnd,\n dragHandleProps: handleProps,\n contentRef,\n };\n}\n","import clsx from \"clsx\";\nimport React from \"react\";\n\nimport type { UseDisclosureOptions } from \"@/util/useDisclosure\";\nimport { useResizableDrawer } from \"@/util/useResizableDrawer\";\n\nimport styles from \"./Drawer.module.css\";\n\nexport type DrawerSide = \"left\" | \"right\" | \"top\" | \"bottom\";\n\nexport interface DrawerHeaderState {\n open: boolean;\n toggle: () => void;\n}\n\nfunction sideConfig(side: DrawerSide): {\n axis: \"horizontal\" | \"vertical\";\n invert: boolean;\n} {\n return {\n axis: side === \"left\" || side === \"right\" ? \"horizontal\" : \"vertical\",\n invert: side === \"right\" || side === \"bottom\",\n };\n}\n\nexport interface DrawerProps extends UseDisclosureOptions {\n side?: DrawerSide;\n /**\n * Maximum content-area size in pixels. The header and resize handle are\n * excluded — `maxSize` caps only the scrollable body region.\n */\n maxSize: number;\n mode?: \"push\" | \"float\";\n header?: (state: DrawerHeaderState) => React.ReactNode;\n onSizeChange?: (size: number) => void;\n children?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}\n\nconst Drawer: React.FC<DrawerProps> = ({\n side = \"bottom\",\n maxSize,\n mode = \"push\",\n defaultOpen = true,\n open: controlledOpen,\n onOpenChange,\n onSizeChange,\n header,\n children,\n className,\n style,\n}) => {\n const { axis, invert } = sideConfig(side);\n const isVertical = axis === \"vertical\";\n\n const {\n open,\n toggle,\n size,\n isDragging,\n animating,\n onTransitionEnd,\n dragHandleProps,\n contentRef,\n } = useResizableDrawer({\n axis,\n invert,\n defaultOpen,\n open: controlledOpen,\n onOpenChange,\n maxSize,\n onSizeChange,\n });\n\n const contentWrapperSizeStyle = isVertical\n ? { height: size }\n : { width: size };\n\n return (\n <div\n className={clsx(styles.root, styles[mode], styles[side], className)}\n style={style}\n >\n <div\n className={clsx(styles.handle, { [styles.handleDisabled]: !open })}\n {...dragHandleProps}\n />\n {header && (\n <div className={styles.header}>{header({ open, toggle })}</div>\n )}\n <div\n className={styles.contentWrapper}\n onTransitionEnd={onTransitionEnd}\n style={{\n ...contentWrapperSizeStyle,\n // Animate the open/close toggle only. Drags track the pointer 1:1 and\n // content-driven resizes snap, both via `animating === false`.\n transition: animating && !isDragging ? undefined : \"none\",\n }}\n >\n <div ref={contentRef} className={styles.content}>\n {children}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Drawer;\n","import { Menu, MenuButton, MenuItems } from \"@headlessui/react\";\nimport {\n isValidElement,\n type FC,\n type HTMLAttributes,\n type ReactNode,\n} from \"react\";\n\nimport { menuPanelStyles } from \"@/components/Menu\";\nimport { ZIndex, zIndexStyles } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\n/**\n * Position of the dropdown menu panel relative to its trigger.\n * Values follow the `<edge> <alignment>` convention used by HeadlessUI's\n * floating UI — e.g. `BottomStart` opens the menu below the trigger,\n * left-aligned with it.\n */\nexport enum DropdownAnchor {\n /** Below the trigger, horizontally centered. */\n Bottom = \"bottom\",\n /** Below the trigger, aligned with its leading (start) edge. */\n BottomStart = \"bottom start\",\n /** Below the trigger, aligned with its trailing (end) edge. */\n BottomEnd = \"bottom end\",\n /** Above the trigger, horizontally centered. */\n Top = \"top\",\n /** Above the trigger, aligned with its leading (start) edge. */\n TopStart = \"top start\",\n /** Above the trigger, aligned with its trailing (end) edge. */\n TopEnd = \"top end\",\n}\n\n/**\n * Props for {@link Dropdown}.\n */\nexport interface DropdownProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * The element that opens the dropdown when clicked.\n * Rendered inside a `MenuButton` wrapper — any focusable element works.\n */\n trigger: ReactNode;\n /** Menu content. Use the Menu* primitive components as children. */\n children: ReactNode;\n /** Position of the menu panel relative to the trigger. */\n anchor?: DropdownAnchor;\n /**\n * Renders the menu panel in a portal so it escapes overflow-hidden\n * ancestors and stacks above complex layouts (modals, mosaic grids,\n * scrollable regions). Defaults to `true` — opt out by passing `false`\n * when the menu must stay inside its trigger's DOM subtree (e.g. tightly\n * scoped to a virtualized list).\n * @default true\n */\n portal?: boolean;\n /** Explicit z-index override for the menu panel. */\n zIndex?: ZIndex;\n /**\n * If `true`, the trigger cannot open the menu. Also inferred automatically\n * when the `trigger` element has `disabled` set on its props.\n */\n disabled?: boolean;\n}\n\n/**\n * A click-triggered menu component. Composes with the Menu primitives:\n * {@link MenuTextItem}, {@link MenuIconTextItem}, {@link MenuCheckItem},\n * {@link MenuSectionTitle}, and {@link MenuSeparator}.\n *\n * Built on HeadlessUI's `Menu`, providing full keyboard navigation\n * (arrow keys, Enter, Escape) and ARIA `role=\"menu\"` semantics automatically.\n *\n * @example\n * ```tsx\n * <Dropdown trigger={<DropdownTrigger>Actions</DropdownTrigger>}>\n * <MenuSectionTitle>Actions</MenuSectionTitle>\n * <MenuIconTextItem\n * icon={IconName.ImageSearch}\n * text=\"Sort by similarity\"\n * subtext=\"Find visually similar\"\n * onClick={() => {}}\n * />\n * <MenuIconTextItem\n * icon={IconName.Embeddings}\n * text=\"Run embeddings\"\n * subtext=\"Compute vector embeddings\"\n * onClick={() => {}}\n * />\n * <MenuSeparator />\n * <MenuTextItem destructive onClick={() => {}}>\n * Delete\n * </MenuTextItem>\n * </Dropdown>\n * ```\n *\n * @param trigger The trigger element that opens the menu.\n * @param children Menu content — use the Menu* primitive components.\n * @param anchor Position of the menu panel relative to the trigger. See {@link DropdownAnchor}.\n * @param portal If `true`, renders the panel in a portal with a high z-index.\n * @param zIndex Explicit z-index for the panel.\n * @param disabled If `true`, the menu cannot be opened.\n * @param className `class` overrides for the root wrapper.\n * @param props Additional HTML properties for the root wrapper.\n */\nexport const Dropdown: FC<DropdownProps> = ({\n trigger,\n children,\n anchor = DropdownAnchor.BottomStart,\n portal = true,\n zIndex,\n disabled,\n className,\n ...props\n}) => {\n const panelZIndex = portal\n ? zIndexStyles(ZIndex.AboveModal)\n : zIndex\n ? zIndexStyles(zIndex)\n : zIndexStyles(ZIndex.High);\n\n const triggerDisabled = isValidElement<{ disabled?: boolean }>(trigger)\n ? !!trigger.props.disabled\n : false;\n const isDisabled = disabled || triggerDisabled;\n\n return (\n <div className={cn(\"relative inline-block\", className)} {...props}>\n <Menu>\n <MenuButton\n as=\"div\"\n disabled={isDisabled}\n className={isDisabled ? \"cursor-not-allowed\" : \"cursor-pointer\"}\n >\n {trigger}\n </MenuButton>\n\n <MenuItems\n anchor={{ to: anchor, gap: 4 }}\n portal={portal}\n className={cn(menuPanelStyles(), panelZIndex)}\n >\n {children}\n </MenuItems>\n </Menu>\n </div>\n );\n};\n\nDropdown.displayName = \"Dropdown\";\n","import type { FC } from \"react\";\n\nimport { Button, type ButtonProps } from \"@/components/Button\";\nimport { IconName, Size, Variant } from \"@/types\";\n\n/**\n * Props for {@link DropdownTrigger}. Accepts {@link ButtonProps} except\n * `variant` and `trailingIcon`, which are fixed by the trigger preset\n * (secondary variant + caret-down icon).\n */\nexport type DropdownTriggerProps = Omit<\n ButtonProps,\n \"variant\" | \"trailingIcon\"\n>;\n\n/**\n * The standard trigger button for a {@link Dropdown}.\n * Always renders as a secondary button with a trailing caret-down icon\n * so users know the element opens a menu.\n *\n * @example\n * ```tsx\n * <Dropdown trigger={<DropdownTrigger>Actions</DropdownTrigger>}>\n * <DropdownTextItem onClick={() => {}}>Edit</DropdownTextItem>\n * </Dropdown>\n * ```\n *\n * @param children Button label.\n * @param size Button size. Defaults to {@link Size.Sm}.\n * @param props Additional {@link ButtonProps} (excluding `variant` and `trailingIcon`).\n */\nexport const DropdownTrigger: FC<DropdownTriggerProps> = ({\n children,\n size = Size.Sm,\n ...props\n}) => (\n <Button\n variant={Variant.Secondary}\n size={size}\n trailingIcon={IconName.CaretDown}\n {...props}\n >\n {children}\n </Button>\n);\n\nDropdownTrigger.displayName = \"DropdownTrigger\";\n","import type { FC } from \"react\";\n\nimport { Icon } from \"@/components/Icons\";\nimport { Stack, StackProps } from \"@/components/Stack\";\nimport { Text } from \"@/components/Text\";\nimport radiusStyles from \"@/styles/radius\";\nimport {\n BackgroundColor,\n bgColorClass,\n Align,\n BrandColor,\n IconName,\n Orientation,\n Radius,\n Size,\n TextColor,\n TextVariant,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport interface EmptyStateProps extends StackProps {\n icon: IconName;\n title: string;\n description?: string;\n}\n\n/**\n * A basic empty state to display to the user.\n *\n * @param icon The icon to display in the empty state.\n * @param title The title to display in the empty state.\n * @param description An optional description to display in the empty state.\n * @param props Additional HTML properties to apply to the component.\n *\n *\n */\nexport const EmptyState: FC<EmptyStateProps> = ({\n icon,\n title,\n description,\n className,\n ...props\n}) => {\n return (\n <Stack\n orientation={Orientation.Column}\n align={Align.Center}\n className={cn(\n \"text-center p-10\",\n radiusStyles(Radius.Md),\n bgColorClass(BackgroundColor.Card1),\n className\n )}\n {...props}\n >\n {icon && (\n <span\n className={cn(\n \"p-3\",\n radiusStyles(Radius.Full),\n bgColorClass(BackgroundColor.CardElevated)\n )}\n >\n <Icon name={icon} size={Size.Lg} color={BrandColor.Accent} />\n </span>\n )}\n <Text variant={TextVariant.Xl}>{title}</Text>\n {description && <Text color={TextColor.Muted}>{description}</Text>}\n </Stack>\n );\n};\nEmptyState.displayName = \"EmptyState\";\n","import { Description, Field, Label } from \"@headlessui/react\";\nimport type { FC, HTMLAttributes, ReactNode } from \"react\";\n\nimport { Stack } from \"@/components/Stack\";\nimport { Text } from \"@/components/Text\";\nimport { Orientation, Spacing, TextColor } from \"@/types\";\n\nexport interface FormFieldProps extends HTMLAttributes<HTMLDivElement> {\n control: ReactNode;\n label?: ReactNode;\n description?: ReactNode;\n disabled?: boolean;\n error?: ReactNode;\n spacing?: Spacing;\n}\n\n/**\n * A component which represents a composite form field, consisting of a label, form control, description,\n * and error message.\n *\n * This component applies standard form best-practices to the contained elements, such as ensuring the label and form\n * control are properly linked.\n *\n * See also {@link FormFieldGroup}.\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const [value, setValue] = useState<string>(\"\");\n * const [error, setError] = useState<string | null>(null);\n *\n * const onChange = useCallback((newValue: string) => {\n * setValue(newValue);\n * if (newValue.length < 5) {\n * setError(\"Name must be at least 5 characters\");\n * } else {\n * setError(null);\n * }\n * },\n * [setError, setValue]\n * );\n *\n * return (\n * <FormField\n * control={<Input value={value} onChange={onChange} />}\n * label={\"Dataset name\"}\n * description={\"Name of the dataset to create\"}\n * error={error}\n * />\n * );\n * };\n * ```\n *\n * @param control The form control to use in this field. This can be any component.\n * @param label Optional label to display for the form field.\n * @param description Optional description to display for the form field.\n * @param disabled If `true`, disables the form field.\n * @param error Optional error message to display for the form field.\n * @param spacing Spacing between elements in the field. Defaults to {@link Spacing.Sm}.\n * @param className `class` overrides to apply to the field container.\n * @param props Additional HTML properties to apply to the field container.\n */\nexport const FormField: FC<FormFieldProps> = ({\n control,\n label,\n description,\n disabled,\n error,\n spacing = Spacing.Sm,\n className,\n ...props\n}) => {\n return (\n <Field disabled={disabled} className={className}>\n <Stack orientation={Orientation.Column} spacing={spacing} {...props}>\n {label && (\n <Stack orientation={Orientation.Row} spacing={Spacing.Sm}>\n <Label>\n <Text color={TextColor.Primary}>{label}</Text>\n </Label>\n\n {description && (\n <Description>\n <Text color={TextColor.Secondary}>{description}</Text>\n </Description>\n )}\n </Stack>\n )}\n\n {control}\n\n {error && <Text color={TextColor.Destructive}>{error}</Text>}\n </Stack>\n </Field>\n );\n};\n\nFormField.displayName = \"FormField\";\n","import { Fieldset } from \"@headlessui/react\";\nimport type { FC, HTMLAttributes } from \"react\";\n\nimport { Stack } from \"@/components/Stack\";\nimport Orientation from \"@/types/orientation.ts\";\nimport Spacing from \"@/types/spacing\";\n\nexport interface FormFieldGroupProps extends HTMLAttributes<HTMLFieldSetElement> {\n disabled?: boolean;\n orientation?: Orientation;\n spacing?: Spacing;\n}\n\n/**\n * A logical grouping of form fields.\n *\n * This component wraps its children in a `fieldset` tag.\n *\n * See also {@link FormField}.\n *\n * @example\n * ```tsx\n * <FormFieldGroup orientation={Orientation.Vertical} spacing={Spacing.Lg}>\n * <FormField\n * control={\n * <Input\n * // input configuration\n * />\n * }\n * label=\"First name\"\n * />\n *\n * <FormField\n * control={\n * <Input\n * // input configuration\n * />\n * }\n * label=\"Last name\"\n * />\n * </FormFieldGroup>\n * ```\n *\n * @param orientation The orientation of the form group;\n * controls whether children are stacked horizontally or vertically.\n * See {@link Orientation}.\n * @param spacing Spacing to apply between form fields. See {@link Spacing}.\n * @param disabled If `true`, disables the form group.\n * @param children Form controls wrapped by this component.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const FormFieldGroup: FC<FormFieldGroupProps> = ({\n orientation = Orientation.Column,\n spacing = Spacing.Lg,\n disabled,\n children,\n ...props\n}) => (\n <Fieldset disabled={disabled} {...props}>\n <Stack orientation={orientation} spacing={spacing}>\n {children}\n </Stack>\n </Fieldset>\n);\n\nFormFieldGroup.displayName = \"FormFieldGroup\";\n","import clsx from \"clsx\";\nimport type { FC, HTMLAttributes } from \"react\";\n\nimport { textStyles } from \"@/styles/text\";\nimport { TextColor, textColorClass, TextVariant } from \"@/types\";\nimport HeadingLevel from \"@/types/heading\";\n\nexport interface HeadingProps extends HTMLAttributes<HTMLHeadingElement> {\n level?: HeadingLevel;\n}\n\nconst elementMap: Record<HeadingLevel, FC<HeadingProps>> = {\n h1: ({ children, ...props }: HeadingProps) => <h1 {...props}>{children}</h1>,\n h2: ({ children, ...props }: HeadingProps) => <h2 {...props}>{children}</h2>,\n h3: ({ children, ...props }: HeadingProps) => <h3 {...props}>{children}</h3>,\n h4: ({ children, ...props }: HeadingProps) => <h4 {...props}>{children}</h4>,\n};\n\nconst variantStyles: Record<HeadingLevel, string> = {\n h1: clsx(textStyles(TextVariant.Xxl), \"text-bold\"),\n h2: clsx(textStyles(TextVariant.Xl), \"text-semibold\"),\n h3: clsx(textStyles(TextVariant.Lg), \"text-semibold\"),\n h4: clsx(textStyles(TextVariant.Md)),\n};\n\n/**\n * A basic heading component.\n *\n * This component leverages standard heading tags `h1`, `h2`, etc.\n *\n * @example\n * ```tsx\n * <Heading level={HeadingLevel.H2}>\n * Heading content here\n * </Heading>\n * ```\n *\n * @param level Heading level to use. See {@link HeadingLevel}.\n * @param className `class` overrides to apply to the component.\n * @param children The content of the heading.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const Heading: FC<HeadingProps> = ({\n level = HeadingLevel.H1,\n className,\n children,\n ...props\n}: HeadingProps) => {\n const Element = elementMap[level];\n\n return (\n <Element\n className={clsx(\n textColorClass(TextColor.Primary),\n variantStyles[level],\n className\n )}\n {...props}\n >\n {children}\n </Element>\n );\n};\n\nHeading.displayName = \"Heading\";\n","import {\n CSSProperties,\n HTMLAttributes,\n ReactElement,\n ReactNode,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\n\nimport { Spinner } from \"@/components/Spinner\";\nimport { Descriptor, Orientation, Size } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport interface ImageListProps<\n T = unknown,\n> extends HTMLAttributes<HTMLDivElement> {\n /** Items to display in the grid. */\n items: Descriptor<T>[];\n /** Renders the content of each grid cell. */\n renderItem: (data: T, id: string) => ReactNode;\n /**\n * Number of columns for vertical orientation, or number of rows for\n * horizontal orientation. Defaults to `3`.\n */\n cols?: number;\n /** Gap between cells in pixels. Defaults to `8`. */\n gap?: number;\n /**\n * Controls the scroll axis.\n * - `Orientation.Column` (default) — items flow into columns; the list\n * scrolls **vertically**.\n * - `Orientation.Row` — items flow into rows; the list scrolls\n * **horizontally**.\n */\n orientation?: Orientation;\n /**\n * Fixed height of each row in pixels for vertical orientation.\n * Defaults to `164`.\n */\n rowHeight?: number;\n /**\n * Fixed width of each auto-generated column in pixels for horizontal\n * orientation. Defaults to `164`.\n */\n colWidth?: number;\n /**\n * Called when the sentinel element near the end of the list becomes\n * visible. Use this to fetch and append more items.\n */\n onLoadMore?: () => void;\n /** Set to `true` while loading additional items. */\n hasMore?: boolean;\n /** Displays a {@link Spinner} in the sentinel area while `true`. */\n loading?: boolean;\n}\n\n/**\n * A scrollable grid that lays items out in a uniform, non-masonry grid.\n * Supports vertical and horizontal scroll directions and infinite scroll\n * via `onLoadMore`.\n *\n * @example\n * ```tsx\n * <ImageList\n * items={photos.map((p) => ({ id: p.id, data: p }))}\n * renderItem={(photo) => (\n * <img src={photo.src} alt={photo.alt} className=\"size-full object-cover\" />\n * )}\n * cols={3}\n * rowHeight={200}\n * onLoadMore={fetchMore}\n * hasMore={hasMore}\n * loading={loading}\n * />\n * ```\n */\nexport function ImageList<T = unknown>({\n items,\n renderItem,\n cols = 3,\n gap = 8,\n orientation = Orientation.Column,\n rowHeight = 164,\n colWidth = 164,\n onLoadMore,\n hasMore = false,\n loading = false,\n className,\n style,\n ...rest\n}: ImageListProps<T>): ReactElement {\n const sentinelRef = useRef<HTMLDivElement>(null);\n\n const handleIntersection = useCallback(\n (entries: IntersectionObserverEntry[]) => {\n const [entry] = entries;\n if (entry.isIntersecting && hasMore && !loading && onLoadMore) {\n onLoadMore();\n }\n },\n [hasMore, loading, onLoadMore]\n );\n\n useEffect(() => {\n const el = sentinelRef.current;\n if (!el || !onLoadMore) return;\n\n const observer = new IntersectionObserver(handleIntersection, {\n threshold: 0,\n rootMargin: \"200px\",\n });\n\n observer.observe(el);\n return () => observer.disconnect();\n }, [handleIntersection, onLoadMore]);\n\n const isVertical = orientation === Orientation.Column;\n\n const gridStyle: CSSProperties = isVertical\n ? {\n gridTemplateColumns: `repeat(${cols}, 1fr)`,\n gridAutoRows: `${rowHeight}px`,\n gap: `${gap}px`,\n }\n : {\n gridTemplateRows: `repeat(${cols}, 1fr)`,\n gridAutoFlow: \"column\",\n gridAutoColumns: `${colWidth}px`,\n gap: `${gap}px`,\n };\n\n const sentinelStyle: CSSProperties = isVertical\n ? { gridColumn: \"1 / -1\" }\n : { gridRow: \"1 / -1\" };\n\n return (\n <div\n className={cn(\n \"grid\",\n isVertical\n ? \"overflow-y-auto overflow-x-hidden\"\n : \"overflow-x-auto overflow-y-hidden\",\n className\n )}\n style={{ ...gridStyle, ...style }}\n {...rest}\n >\n {items.map(({ id, data }) => (\n <div key={id} className=\"overflow-hidden\">\n {renderItem(data, id)}\n </div>\n ))}\n\n {onLoadMore && (\n <div\n ref={sentinelRef}\n style={sentinelStyle}\n className=\"flex items-center justify-center py-2\"\n >\n {loading && <Spinner size={Size.Lg} />}\n </div>\n )}\n </div>\n );\n}\n\nImageList.displayName = \"ImageList\";\n","import { type FC } from \"react\";\n\nimport { IconWrapper } from \"@/components/Icons\";\nimport { IconName, Size, TextColor, textColorClass } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nimport { iconPaddingStyles } from \"./styles\";\n\nexport interface InputIconProps {\n icon: FC | IconName;\n size: Size;\n hasText?: boolean;\n}\n\n/**\n * A wrapper component for properly formatting an icon to display within the {@link Input} component.\n *\n * @param icon Icon reference ({@link FC}) or an {@link IconName} specifying the icon to use.\n * @param size The size of the icon. See {@link Size}.\n * @param hasText If `true`, de-emphasizes the icon in favor of the input text.\n *\n * @internal For use by {@link Input}.\n */\nexport const InputIcon: FC<InputIconProps> = ({ icon, size, hasText }) => {\n return (\n <span\n className={cn(\n \"absolute left-0 flex items-center justify-center\",\n hasText\n ? textColorClass(TextColor.Primary)\n : textColorClass(TextColor.Secondary),\n iconPaddingStyles[size]\n )}\n >\n <IconWrapper size={size} content={icon} />\n </span>\n );\n};\n\nInputIcon.displayName = \"InputIcon\";\n","import { Field, Input as HeadlessInput } from \"@headlessui/react\";\nimport { type FC, InputHTMLAttributes } from \"react\";\n\nimport { IconProps } from \"@/components/Icons/types\";\nimport radiusStyles from \"@/styles/radius\";\nimport {\n BackgroundColor,\n bgColorClass,\n BorderColor,\n borderColorClass,\n ElementState,\n IconName,\n Radius,\n Size,\n TextColor,\n textColorClass,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nimport { InputIcon } from \"./InputIcon\";\nimport { paddingLeftStyles, sizeStyles } from \"./styles\";\n\ntype ModifiedInputProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"size\" | \"className\"\n>;\n\nexport enum InputType {\n Text = \"text\",\n Email = \"email\",\n Password = \"password\",\n Number = \"number\",\n Tel = \"tel\",\n Url = \"url\",\n Search = \"search\",\n}\n\nexport interface InputProps extends ModifiedInputProps {\n size?: Size;\n radius?: Radius;\n className?: string;\n type?: InputType;\n error?: boolean;\n icon?: FC<IconProps> | IconName;\n}\n\n/**\n * A utility function which returns the classes required for styling an input component.\n *\n * @param disabled If `true`, applies styling for a disabled input.\n * @param error If `true`, applies styling for the input error state.\n * @param icon If `true`, prefixes input content with padding to allow space for an icon.\n * @param radius Border radius of the input. See {@link Radius}.\n * @param size Size of the input; this controls the text size and padding. See {@link Size}.\n *\n * @internal For consistent application of input styling of native `input` elements.\n */\nexport const inputStyle = ({\n disabled,\n error,\n icon,\n radius = Radius.Sm,\n size = Size.Md,\n}: {\n disabled?: boolean;\n error?: boolean;\n icon?: boolean;\n radius?: Radius;\n size?: Size;\n}): string =>\n cn(\n \"w-full\",\n bgColorClass(BackgroundColor.Transparent),\n textColorClass(TextColor.Primary),\n \"placeholder:text-content-text-tertiary\",\n \"transition-colors\",\n \"border\",\n error\n ? borderColorClass(BorderColor.Error)\n : borderColorClass(BorderColor.Default),\n !disabled &&\n !error &&\n borderColorClass(BorderColor.Hover, ElementState.Hover),\n \"focus:outline-none\",\n error\n ? borderColorClass(BorderColor.Error, ElementState.Focus)\n : borderColorClass(BorderColor.Focus, ElementState.Focus),\n \"disabled:opacity-50\",\n \"disabled:cursor-not-allowed\",\n borderColorClass(BorderColor.Disabled, ElementState.Disabled),\n radiusStyles(radius),\n sizeStyles[size],\n icon ? paddingLeftStyles[size] : \"pl-3\"\n );\n\n/**\n * A basic input component.\n *\n * This component operates exclusively as a controlled component. See `value` and `onChange` for controlled behavior.\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const [value, setValue] = useState<string>(\"\");\n * const [error, setError] = useState<string | null>(null);\n *\n * const onChange = useCallback((newValue: string) => {\n * setValue(newValue);\n * if (newValue.length < 5) {\n * setError(\"Value must be at least 5 characters\");\n * } else {\n * setError(null);\n * }\n * },\n * [setError, setValue]\n * );\n *\n * return (\n * <Input value={value} onChange={onChange} error={!!error} />\n * );\n * };\n * ```\n *\n * @param size The size of the input. See {@link Size}.\n * @param radius The border radius of the input. See {@link Radius}.\n * @param type The type of the input. This should adhere to the standard HTML `input` types.\n * @param className `class` overrides to apply to the component.\n * @param disabled If `true`, disables the input.\n * @param value The controlled value of the input.\n * @param onChange Callback triggered when the input value changes.\n * @param error If `true`, formats the input to appear in an error state.\n * @param icon Optional reference ({@link FC}) to an icon or an {@link IconName} to prefix the input's value. See {@link Icon}.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const Input: FC<InputProps> = ({\n size = Size.Md,\n radius = Radius.Sm,\n type = InputType.Text,\n className,\n disabled,\n value,\n onChange,\n error,\n icon,\n ...props\n}) => {\n const inputClasses = cn(\n inputStyle({\n disabled,\n error,\n icon: !!icon,\n radius,\n size,\n }),\n className\n );\n\n // we track and change styles if the input has a value\n const hasText = Boolean(value && String(value).trim().length > 0);\n\n return (\n <Field className=\"flex flex-col gap-1\">\n <div className={cn(\"relative\", icon && \"flex items-center\")}>\n {icon && <InputIcon icon={icon} size={size} hasText={hasText} />}\n <HeadlessInput\n className={inputClasses}\n disabled={disabled}\n type={type}\n value={value}\n onChange={onChange}\n {...props}\n />\n </div>\n </Field>\n );\n};\n\nInput.displayName = \"Input\";\n","import type { SyntheticListenerMap } from \"@dnd-kit/core/dist/hooks/utilities\";\nimport type { FC, HTMLAttributes, ReactNode } from \"react\";\n\nimport { Checkbox } from \"@/components/Checkbox\";\nimport { DragHandleIcon } from \"@/components/Icons/DragHandle\";\nimport { Text } from \"@/components/Text\";\nimport radiusStyles from \"@/styles/radius\";\nimport {\n BackgroundColor,\n bgColorClass,\n Radius,\n TextColor,\n textColorClass,\n TextVariant,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport interface ListItemProps extends HTMLAttributes<HTMLDivElement> {\n canSelect?: boolean;\n selected?: boolean;\n onSelected?: (selected: boolean) => void;\n canDrag?: boolean;\n dragHandleListeners?: SyntheticListenerMap;\n primaryContent?: ReactNode;\n secondaryContent?: ReactNode;\n actions?: ReactNode;\n additionalContent?: ReactNode;\n}\n\n/**\n * An item to be displayed in a list.\n *\n * @param canSelect If `true`, the component will include a {@link Checkbox} to enable selection.\n * @param selected Controls the selection state of the list item. If `canSelect` is not truthy, this has no effect.\n * @param onSelected Callback triggered when this item is selected.\n * @param canDrag If `true`, displays a {@link DragHandleIcon} to allow dragging this component.\n * @param dragHandleListeners Optional mapping of `listenerId: listener` for drag events.\n * @param primaryContent Primary content to display in the list item.\n * @param secondaryContent Secondary content to display in the list item.\n * @param actions Content to display as \"actions\" for the list item.\n * This content will be pushed to the trailing edge of the list item.\n * @param additionalContent Additional content to display in the list item.\n * This content will be placed between the `secondaryContent` and the `actions.\n * @param className `class` overrides to apply to the component.\n * @param props Additional HTML properties to apply to the component.\n *\n * @internal For use by the {@link RichList} component.\n */\nexport const ListItem: FC<ListItemProps> = ({\n canSelect = false,\n selected = false,\n onSelected = undefined,\n canDrag = false,\n dragHandleListeners,\n primaryContent = undefined,\n secondaryContent = undefined,\n actions = undefined,\n additionalContent = undefined,\n className,\n ...props\n}) => {\n return (\n <div\n className={cn(\n \"flex flex-col\",\n \"w-full\",\n \"py-3 px-3.5\",\n bgColorClass(BackgroundColor.Card2),\n radiusStyles(Radius.Sm),\n className\n )}\n {...props}\n >\n <div\n className={cn(\n \"flex flex-nowrap items-center justify-between\",\n \"w-full\",\n \"gap-x-lg\"\n )}\n >\n <div className={cn(\"flex flex-nowrap items-center\", \"gap-x-md\")}>\n {canSelect && (\n <Checkbox\n checked={selected}\n onChange={(checked) => onSelected?.(checked)}\n />\n )}\n {canDrag && (\n <span\n className=\"flex align-items cursor-grab touch-none\"\n {...dragHandleListeners}\n >\n <DragHandleIcon\n className={cn(\"size-4\", textColorClass(TextColor.Secondary))}\n />\n </span>\n )}\n <Text variant={TextVariant.Lg}>{primaryContent}</Text>\n <div\n className={cn(\n \"flex items-center\",\n \"text-md/7\",\n textColorClass(TextColor.Secondary)\n )}\n >\n {secondaryContent}\n </div>\n </div>\n\n <span>{actions}</span>\n </div>\n {additionalContent && (\n <div\n className={cn(\n \"px-sm py-3\",\n // Align with primaryContent by adding margin for checkbox/drag handle\n canSelect && canDrag && \"ml-12\",\n canSelect && !canDrag && \"ml-6\",\n !canSelect && canDrag && \"ml-6\"\n )}\n >\n {additionalContent}\n </div>\n )}\n </div>\n );\n};\n\nListItem.displayName = \"ListItem\";\n","import clsx from \"clsx\";\nimport type { FC, HTMLAttributes } from \"react\";\n\nimport { Icon } from \"@/components/Icons\";\nimport { Stack } from \"@/components/Stack\";\nimport radiusStyles from \"@/styles/radius\";\nimport shadowStyles from \"@/styles/shadow\";\nimport {\n BackgroundColor,\n IconName,\n Radius,\n SemanticColor,\n Shadow,\n Size,\n Spacing,\n StatusColor,\n TextColor,\n} from \"@/types\";\nimport { bgColorClass, textColorClass } from \"@/types/color\";\nimport { cn } from \"@/util/classes\";\n\nexport type PillSize = Exclude<Size, Size.Lg | Size.Xl>;\nexport type PillColor = BackgroundColor | SemanticColor | StatusColor;\n\nexport interface PillProps extends HTMLAttributes<HTMLSpanElement> {\n size?: PillSize;\n radius?: Radius;\n shadow?: Shadow;\n color?: TextColor;\n isStatus?: boolean;\n backgroundColor?: PillColor;\n icon?: IconName;\n onRemove?: () => void;\n}\n\nconst sizeStyles: Record<PillSize, string> = {\n [Size.Xs]: clsx(\"px-2.5 py-0.75\", \"text-xs/5\"),\n [Size.Sm]: clsx(\"px-3.5 py-1.5\", \"text-sm/5\"),\n [Size.Md]: clsx(\"px-4 py-2\", \"text-md/5\"),\n};\n\n/**\n * A basic pill component.\n *\n * @example\n * ```tsx\n * <Pill isStatus={true}>\n * Success\n * </Pill>\n * ```\n *\n * @param size The size of the pill. See {@link Size}.\n * @param radius The border radius of the pill. See {@link Radius}.\n * @param shadow Optional drop shadow to apply to the pill. See {@link Shadow}.\n * @param color Text color of the pill. See {@link TextColor}.\n * @param backgroundColor Background color of the pill. See {@link BackgroundColor}.\n * @param isStatus If `true`, prefixes the content with a bullet-like icon.\n * @param className `class` overrides to apply to the component.\n * @param children Content of the pill.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const Pill: FC<PillProps> = ({\n size = Size.Sm,\n radius = Radius.Full,\n shadow = undefined,\n color = TextColor.Muted,\n backgroundColor = BackgroundColor.Muted,\n icon,\n isStatus = false,\n onRemove,\n className,\n children,\n ...props\n}) => {\n return (\n <Stack\n spacing={Spacing.Xs}\n className={clsx(\n \"items-center\",\n \"font-small\",\n textColorClass(color),\n bgColorClass(backgroundColor),\n radiusStyles(radius),\n shadowStyles(shadow),\n sizeStyles[size],\n className\n )}\n {...props}\n >\n {isStatus && (\n <div>\n <Icon\n size={Size.Xs}\n name={IconName.Circle}\n color={color}\n style={{ minWidth: 10 }}\n />\n </div>\n )}\n {icon && (\n <div>\n <Icon size={size} name={icon} color={color} />\n </div>\n )}\n <div>{children}</div>\n {onRemove && (\n <button\n type=\"button\"\n aria-label=\"Remove\"\n onClick={(e) => {\n e.stopPropagation();\n onRemove();\n }}\n className=\"shrink-0 cursor-pointer group\"\n >\n <Icon\n size={Size.Xs}\n name={IconName.Close}\n color={color}\n className={cn(\n \"min-w-[10px]\",\n \"group-hover:text-content-text-primary\",\n \"transition-colors duration-150\"\n )}\n />\n </button>\n )}\n </Stack>\n );\n};\n\nPill.displayName = \"Pill\";\n","import clsx from \"clsx\";\nimport { FC } from \"react\";\n\nimport { IconProps } from \"@/components/Icons/types\";\n\n/**\n * An icon used to display a selected state of a radio control.\n *\n * @param className `class` overrides to apply to the component.\n * @param props Additional HTML properties to apply to the component.\n *\n * @internal For use by the {@link Radio} component.\n */\nexport const RadioDotIcon: FC<IconProps> = ({ className, ...props }) => {\n return (\n <svg\n className={clsx(\n \"fill-action-primary-primary opacity-0 peer-checked:opacity-100\",\n className\n )}\n viewBox=\"0 0 8 8\"\n fill=\"none\"\n {...props}\n >\n <circle cx=\"4\" cy=\"4\" r=\"1\" />\n </svg>\n );\n};\n","import { Field, Radio as HeadlessRadio, Label } from \"@headlessui/react\";\nimport clsx from \"clsx\";\nimport { type FC, InputHTMLAttributes } from \"react\";\n\nimport { textStyles } from \"@/styles/text.ts\";\nimport { Size, TextColor, textColorClass, TextVariant } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nimport { RadioDotIcon } from \"../Icons/RadioDot\";\n\ntype ModifiedRadioProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n \"size\" | \"onChange\" | \"checked\" | \"disabled\" | \"className\" | \"type\"\n>;\n\nexport interface RadioProps extends ModifiedRadioProps {\n value?: string;\n label?: string;\n disabled?: boolean;\n size?: Size;\n className?: string;\n labelClassName?: string;\n}\n\nconst textSizeStyles: Partial<Record<Size, string | null>> = {\n [Size.Sm]: textStyles(TextVariant.Sm),\n [Size.Md]: textStyles(TextVariant.Md),\n [Size.Lg]: textStyles(TextVariant.Lg),\n};\n\nconst sizeStyles: Partial<Record<Size, string>> = {\n [Size.Sm]: clsx(\"w-4 h-4\"),\n [Size.Md]: clsx(\"w-5 h-5\"),\n [Size.Lg]: clsx(\"w-6 h-6\"),\n};\n\nconst dotSizeStyles: Partial<Record<Size, string>> = {\n [Size.Sm]: clsx(\"before:w-1 before:h-1\"),\n [Size.Md]: clsx(\"before:w-1.5 before:h-1.5\"),\n [Size.Lg]: clsx(\"before:w-2 before:h-2\"),\n};\n\n/**\n * A basic radio component.\n *\n * @example\n * ```tsx\n * <Radio value=\"car\" label=\"Car\" />\n * ```\n *\n * @param value The value of the radio element.\n * @param size The size of the radio element. See {@link Size}.\n * @param className `class` overrides to apply to the radio.\n * @param labelClassName `class` overrides to apply to the radio's label.\n * @param label Label to display for the radio element.\n * @param disabled If `true`, disables the radio element.\n * @param props Additional HTML properties to apply to the radio.\n */\nexport const Radio: FC<RadioProps> = ({\n value,\n size = Size.Sm,\n className,\n labelClassName,\n label,\n disabled,\n ...props\n}) => {\n return (\n <Field className=\"group flex items-center gap-2\">\n <HeadlessRadio\n value={value}\n disabled={disabled}\n className={cn(\n \"peer\",\n !disabled && \"cursor-pointer\",\n \"appearance-none\",\n \"border\",\n \"border-content-text-tertiary\",\n disabled && \"opacity-50\",\n \"rounded-full\",\n sizeStyles[size],\n // on focus - unchecked\n !disabled && \"focus:outline-none\",\n !disabled && \"focus:ring-2\",\n !disabled && \"focus:ring-action-primary-primary\",\n // on hover - unchecked (only when not disabled)\n !disabled && \"hover:border-action-primary-primary\",\n !disabled && \"hover:border-1\",\n // when hovering label, also hover radio (only when not disabled)\n !disabled && \"group-hover:border-action-primary-primary\",\n !disabled && \"group-hover:border-1\",\n // checked styles (override base styles)\n \"data-[checked]:border-2\",\n \"data-[checked]:border-action-primary-primary\",\n \"data-[checked]:focus:ring-0\",\n \"relative\",\n // for the dot\n \"before:content-['']\",\n \"before:absolute\",\n dotSizeStyles[size],\n \"before:top-1/2\",\n \"before:left-1/2\",\n \"before:-translate-x-1/2\",\n \"before:-translate-y-1/2\",\n \"before:rounded-full\",\n \"before:bg-action-primary-primary\",\n \"before:opacity-0\",\n \"data-[checked]:before:opacity-100\",\n className\n )}\n {...props}\n >\n <div\n className={cn(\n \"absolute\",\n \"inset-0\",\n \"flex\",\n \"items-center\",\n \"justify-center\",\n \"pointer-events-none\"\n )}\n >\n <RadioDotIcon />\n </div>\n </HeadlessRadio>\n {label && (\n <Label\n className={cn(\n textColorClass(disabled ? TextColor.Secondary : TextColor.Primary),\n textSizeStyles[size],\n !disabled && \"cursor-pointer\",\n labelClassName\n )}\n >\n {label}\n </Label>\n )}\n </Field>\n );\n};\n\nRadio.displayName = \"Radio\";\n","export const randomString = (): string =>\n Math.random().toString(36).substring(2, 9).trim();\n","import { RadioGroup as HeadlessRadioGroup } from \"@headlessui/react\";\nimport { FC, HTMLAttributes, useMemo } from \"react\";\n\nimport { Size } from \"@/types\";\nimport { randomString } from \"@/util/random\";\n\nimport { Radio, RadioProps } from \"./Radio\";\n\nexport interface RadioOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport type RadioGroupSize = Exclude<Size, Size.Xs>;\n\nexport interface RadioGroupProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\"\n> {\n className?: string;\n defaultValue?: string;\n options: RadioOption[];\n value?: string;\n onChange: (value: string) => void;\n name?: string;\n size?: RadioGroupSize;\n disabled?: boolean;\n radioProps?: RadioProps;\n}\n\n/**\n * A group of radio controls; supports selection via one-of semantics.\n *\n * This component operates exclusively as a controlled component. See `value` and `onChange` for controlled behavior.\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const [value, setValue] = useState<string | null>(null);\n *\n * const onChange = useCallback((selectedValue: string) => {\n * setValue(selectedValue);\n * },\n * [setValue]\n * );\n *\n * const options: RadioOption[] = useMemo(() => {\n * return [\n * {value: \"car\", label: \"Car\"},\n * {value: \"truck\", label: \"Truck\"},\n * {value: \"bus\", label: \"Bus\"},\n * ];\n * },\n * []\n * );\n *\n * return (\n * <RadioGroup\n * value={value}\n * onChange={onChange}\n * options={options}\n * />\n * );\n * };\n * ```\n *\n * @param options List of {@link RadioOption}s to display. Each option will correspond to a {@link Radio} component.\n * @param value The value of the group.\n * @param defaultValue The default value to use when no selection has been made.\n * @param onChange Callback triggered when the selection value changes.\n * @param name Optional name of the radio group.\n * @param size The size of the radio group; this property will be forwarded to the wrapped {@link Radio} components.\n * See {@link Size}.\n * @param disabled If `true`, disables the radio group.\n * @param className `class` overrides to apply to the radio group.\n * @param radioProps Additional HTML properties to apply to each of the wrapped {@link Radio} components.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const RadioGroup: FC<RadioGroupProps> = ({\n options,\n value,\n defaultValue,\n onChange,\n name,\n size = Size.Sm,\n disabled = false,\n className,\n radioProps,\n ...props\n}) => {\n const groupName = useMemo(\n () => name || `radio-group-${randomString()}`,\n [name]\n );\n\n return (\n <HeadlessRadioGroup\n value={value}\n defaultValue={defaultValue}\n onChange={onChange}\n name={groupName}\n disabled={disabled}\n className={className}\n {...props}\n >\n {options.map((option) => (\n <Radio\n key={option.value}\n value={option.value}\n label={option.label}\n size={size}\n disabled={disabled || option.disabled}\n {...radioProps}\n />\n ))}\n </HeadlessRadioGroup>\n );\n};\n\nRadioGroup.displayName = \"RadioGroup\";\n","import clsx from \"clsx\";\nimport type { FC, HTMLAttributes, ReactNode } from \"react\";\n\nimport { Clickable } from \"@/components/Clickable\";\nimport { IconWrapper } from \"@/components/Icons\";\nimport { Text } from \"@/components/Text\";\nimport radiusStyles from \"@/styles/radius\";\nimport {\n BorderColor,\n borderColorClass,\n BrandColor,\n ElementState,\n getColorCssVar,\n IconColor,\n IconName,\n Radius,\n TextColor,\n textColorClass,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport interface RichButtonProps extends HTMLAttributes<HTMLDivElement> {\n active?: boolean;\n description?: ReactNode;\n icon?: FC | IconName;\n label?: ReactNode;\n onClick?: () => void;\n}\n\n/**\n * A component which supports a toggled \"active\" state with rich content.\n *\n * This component operates exclusively as a controlled component. See `active` and `onClick` for controlled behavior.\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const [active, setActive] = useState<boolean>(false);\n *\n * const onClick = useCallback(() => setActive(prev => !prev), [setActive]);\n *\n * return (\n * <RichButton\n * label=\"Detection\"\n * description=\"Create a new detection\"\n * onClick={onClick}\n * />\n * );\n * };\n * ```\n *\n * @param active If `true`, renders the component in its active state.\n * @param description Content to display as the description of the component. This is the component's secondary content.\n * @param icon Icon reference ({@link FC}) or an {@link IconName} to display in the component. See {@link Icon}.\n * @param label Content to display as the label of the component. This is the component's primary content.\n * @param onClick Callback triggered when the component is clicked.\n * @param className `class` overrides to apply to the component.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const RichButton: FC<RichButtonProps> = ({\n active,\n description,\n icon,\n label,\n onClick,\n className,\n style,\n ...props\n}) => (\n <Clickable>\n <div\n className={clsx(\n \"border\",\n active\n ? borderColorClass(BorderColor.Active)\n : borderColorClass(BorderColor.Default),\n !active && borderColorClass(BorderColor.Hover, ElementState.Hover),\n \"p-3\",\n radiusStyles(Radius.Md),\n className\n )}\n style={{\n ...(active && {\n backgroundColor: `color-mix(in srgb, var(${getColorCssVar(BrandColor.Primary)}) 10%, transparent)`,\n }),\n ...style,\n }}\n onClick={onClick}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick?.();\n }\n }}\n role=\"button\"\n tabIndex={0}\n {...props}\n >\n <div className=\"flex flex-col\">\n <span className=\"flex gap-x-md items-center\">\n <IconWrapper\n content={icon}\n className={cn(\n \"size-5\",\n active\n ? textColorClass(IconColor.Brand)\n : textColorClass(IconColor.Default)\n )}\n />\n {label && <Text>{label}</Text>}\n </span>\n\n {description && <Text color={TextColor.Secondary}>{description}</Text>}\n </div>\n </div>\n </Clickable>\n);\n\nRichButton.displayName = \"RichButton\";\n","import { FC, HTMLAttributes, useCallback, useState } from \"react\";\n\nimport { RichButton, RichButtonProps } from \"@/components/RichButton\";\nimport { Descriptor } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport interface RichButtonGroupProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\"\n> {\n buttons: Descriptor<RichButtonProps>[];\n exclusive?: boolean;\n onChange?: (active: string[]) => void;\n}\n\n/**\n * A grouping of {@link RichButton} components with linked selection state.\n *\n * This component operates exclusively as an uncontrolled component.\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const [activeButtons, setActiveButtons] = useState<string[]>(() => []);\n *\n * const onChange = useCallback((active: string[]) => {\n * setActiveButtons(active);\n * },\n * [setActiveButtons]\n * );\n *\n * const buttons: Descriptor<RichButtonProps>[] = useMemo(() => {\n * return [\n * {id: \"cls\", data: {label: \"Classification\", description: \"Create new classification\"}},\n * {id: \"det\", data: {label: \"Detection\", description: \"Create new detection\"}},\n * {id: \"seg\", data: {label: \"Segmentation\", description: \"Create new segmentation mask\"}},\n * ];\n * },\n * []\n * );\n *\n * return (\n * <RichButtonGroup\n * buttons={buttons}\n * exclusive={true}\n * onChange={onChange}\n * />\n * );\n * };\n * ```\n *\n * @param buttons List of component descriptors which will be used to create {@link RichButton} child components.\n * @param className `class` overrides to apply to the group's container.\n * @param exclusive If `true`, enforces mutual exclusion in child selection state.\n * @param onChange Callback triggered when child selection state changes.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const RichButtonGroup: FC<RichButtonGroupProps> = ({\n buttons,\n className,\n exclusive,\n onChange,\n ...props\n}) => {\n const [active, setActive] = useState<string[]>(() => []);\n\n const activate = useCallback(\n (id: string) => {\n if (!active.includes(id)) {\n const newActiveArray = exclusive ? [id] : [...active, id];\n setActive(newActiveArray);\n onChange?.(newActiveArray);\n }\n },\n [active, exclusive, onChange]\n );\n const deactivate = useCallback(\n (id: string) => {\n if (active.includes(id)) {\n const newActiveArray = active.filter((elem) => elem !== id);\n setActive(newActiveArray);\n onChange?.(newActiveArray);\n }\n },\n [active, onChange]\n );\n\n return (\n <div className={cn(\"flex\", \"gap-x-md\", className)} {...props}>\n {buttons.map((buttonProps) => (\n <RichButton\n key={buttonProps.id}\n {...buttonProps.data}\n active={active.includes(buttonProps.id)}\n onClick={() => {\n if (active.includes(buttonProps.id)) {\n deactivate(buttonProps.id);\n } else {\n activate(buttonProps.id);\n }\n\n buttonProps.data.onClick?.();\n }}\n />\n ))}\n </div>\n );\n};\n\nRichButtonGroup.displayName = \"RichButtonGroup\";\n","import { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { FC } from \"react\";\n\nimport { ListItem, ListItemProps } from \"@/components/ListItem\";\n\ninterface SortableListItemProps extends ListItemProps {\n id: string;\n disabled?: boolean;\n}\n\nexport const SortableListItem: FC<SortableListItemProps> = ({\n id,\n disabled = false,\n ...props\n}) => {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging,\n } = useSortable({ id, disabled });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.5 : 1,\n cursor: isDragging ? \"grabbing\" : undefined,\n };\n\n return (\n <div ref={setNodeRef} style={style} {...attributes}>\n <ListItem {...props} dragHandleListeners={listeners} />\n </div>\n );\n};\n\nSortableListItem.displayName = \"SortableListItem\";\n","import {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent,\n} from \"@dnd-kit/core\";\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy,\n} from \"@dnd-kit/sortable\";\nimport clsx from \"clsx\";\nimport {\n FC,\n HTMLAttributes,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\n\nimport { ListItemProps } from \"@/components/ListItem\";\nimport { Descriptor, Spacing } from \"@/types\";\n\nimport { SortableListItem } from \"./SortableListItem\";\n\nconst gapStyles: Record<Spacing, string> = {\n [Spacing.None]: \"gap-y-0\",\n [Spacing.Xs]: \"gap-y-xs\",\n [Spacing.Sm]: \"gap-y-sm\",\n [Spacing.Md]: \"gap-y-md\",\n [Spacing.Lg]: \"gap-y-lg\",\n [Spacing.Xl]: \"gap-y-xl\",\n};\n\nexport interface RichListProps extends HTMLAttributes<HTMLDivElement> {\n listItems: Descriptor<ListItemProps>[];\n draggable?: boolean;\n onSelected?: (selectedItems: string[]) => void;\n onOrderChange?: (newItems: Descriptor<ListItemProps>[]) => void;\n selected?: string[];\n spacing?: Spacing;\n}\n\n/**\n * A list-like component which renders a group of {@link ListItem} children.\n *\n * This component operates as both a controlled and uncontrolled component.\n * See `selected`/`onSelected` and `listItems`/`onOrderChange` for controlled behavior.\n *\n * @example\n * ```tsx\n * const MyComponent = ({openSettings}: {openSettings: (id: string) => void}) => {\n * const items: Descriptor<ListItemProps>[] = useMemo(() => [\n * {\n * id: \"1\",\n * data: {\n * primaryContent: \"First Item\",\n * secondaryContent: \"First item description\"\n * actions: (\n * <Clickable onClick={() => openSettings(\"1\")}>\n * <Icon name={IconName.Settings} />\n * </Clickable>\n * )\n * },\n * },\n * {\n * id: \"2\",\n * data: {\n * primaryContent: \"Second Item\",\n * secondaryContent: \"Second item description\"\n * actions: (\n * <Clickable onClick={() => openSettings(\"2\")}>\n * <Icon name={IconName.Settings} />\n * </Clickable>\n * )\n * },\n * {\n * id: \"3\",\n * data: {\n * primaryContent: \"Third Item\",\n * secondaryContent: \"Third item description\"\n * actions: (\n * <Clickable onClick={() => openSettings(\"3\")}>\n * <Icon name={IconName.Settings} />\n * </Clickable>\n * )\n * },\n * },\n * ],\n * []\n * );\n *\n * return (\n * <RichList listItems={items} />\n * );\n * };\n * ```\n *\n * @param className `class` overrides to apply to the list's container.\n * @param listItems List of component descriptors which will be used to create {@link ListItem} child components.\n * The order of this list dictates the order of the children from top to bottom.\n * @param draggable If `true`, allows reordering of children via dragging {@link ListItem} components.\n * @param onSelected Callback triggered when selection state changes.\n * This callback includes a list of currently-selected descriptor IDs.\n * @param onOrderChange Callback triggered when {@link ListItem} ordering changes.\n * This callback includes the descriptors in order from top to bottom.\n * @param selected List of descriptor IDs which should be selected; this allows for controlled selection behavior.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const RichList: FC<RichListProps> = ({\n className,\n listItems,\n draggable = false,\n onSelected,\n onOrderChange,\n selected,\n spacing = Spacing.Md,\n ...props\n}) => {\n // transientSelected contains the ID for each selected element in the list\n const [transientSelected, setTransientSelected] = useState<string[]>(\n () => []\n );\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n );\n\n // allow for controlled selection behavior\n useEffect(() => {\n setTransientSelected([...(selected ?? [])]);\n }, [selected]);\n\n const onSelect = useCallback(\n (itemId: string, isSelected: boolean) => {\n if (transientSelected.includes(itemId)) {\n if (!isSelected) {\n // remove element\n const newSelectionState = transientSelected.filter(\n (v) => v !== itemId\n );\n setTransientSelected(newSelectionState);\n onSelected?.(newSelectionState);\n }\n } else {\n if (isSelected) {\n // add element\n const newSelectionState = [...transientSelected, itemId];\n setTransientSelected(newSelectionState);\n onSelected?.(newSelectionState);\n }\n }\n },\n [transientSelected, onSelected]\n );\n\n const handleDragEnd = (event: DragEndEvent): void => {\n const { active, over } = event;\n\n if (over && active.id !== over.id) {\n const oldIndex = listItems.findIndex((item) => item.id === active.id);\n const newIndex = listItems.findIndex((item) => item.id === over.id);\n const newItems = arrayMove(listItems, oldIndex, newIndex);\n onOrderChange?.(newItems);\n }\n };\n\n const listContent = useMemo(\n () =>\n listItems.map((descriptor) => (\n <SortableListItem\n key={descriptor.id}\n id={descriptor.id}\n disabled={!draggable}\n data-testid={descriptor.id}\n {...descriptor.data}\n canDrag={draggable && descriptor.data.canDrag !== false}\n selected={transientSelected.includes(descriptor.id)}\n onSelected={(isSelected) => onSelect(descriptor.id, isSelected)}\n />\n )),\n [listItems, draggable, onSelect, transientSelected]\n );\n\n return (\n <div\n className={clsx(\"flex flex-col\", \"w-full\", gapStyles[spacing], className)}\n {...props}\n >\n {draggable ? (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <SortableContext\n items={listItems.map((item) => item.id)}\n strategy={verticalListSortingStrategy}\n >\n {listContent}\n </SortableContext>\n </DndContext>\n ) : (\n listContent\n )}\n </div>\n );\n};\n\nRichList.displayName = \"RichList\";\n","import { ComboboxOption } from \"@headlessui/react\";\nimport clsx from \"clsx\";\nimport type { FC, HTMLAttributes } from \"react\";\n\nimport { Icon } from \"@/components/Icons/Icon\";\nimport { Text } from \"@/components/Text\";\nimport radiusStyles from \"@/styles/radius\";\nimport {\n BackgroundColor,\n bgColorClass,\n ElementState,\n IconName,\n Radius,\n Size,\n BrandColor,\n textColorClass,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport interface OptionProps extends HTMLAttributes<HTMLDivElement> {\n value?: unknown;\n selected?: boolean;\n}\n\n/**\n * A selectable option.\n *\n * @param children The content to render in the list option.\n * @param selected If `true`, the list option is rendered with a selected state.\n * @param value The value of the list option.\n * @param props Additional HTML properties to apply to the component.\n *\n * @internal For use by {@link Select}.\n */\nexport const Option: FC<OptionProps> = ({\n children,\n selected,\n value,\n ...props\n}) => (\n <ComboboxOption value={value} {...props}>\n <div\n className={clsx(\n \"flex flex-nowrap items-center justify-between\",\n \"gap-x-md\",\n \"py-2 px-3\",\n radiusStyles(Radius.Sm),\n cn(\n bgColorClass(BackgroundColor.Card1),\n selected && bgColorClass(BackgroundColor.Selected)\n ),\n bgColorClass(BackgroundColor.CardElevated, ElementState.Hover)\n )}\n >\n <Text>{children}</Text>\n <span\n className={clsx(\n \"size-5 flex items-center\",\n textColorClass(BrandColor.Primary)\n )}\n >\n {selected && <Icon name={IconName.Check} size={Size.Sm} />}\n </span>\n </div>\n </ComboboxOption>\n);\n\nOption.displayName = \"Option\";\n","import { Combobox, ComboboxInput, ComboboxOptions } from \"@headlessui/react\";\nimport clsx from \"clsx\";\nimport {\n FC,\n HTMLAttributes,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { Icon } from \"@/components/Icons\";\nimport { inputStyle } from \"@/components/Input\";\nimport { Text } from \"@/components/Text\";\nimport radiusStyles from \"@/styles/radius\";\nimport shadowStyles from \"@/styles/shadow\";\nimport {\n BackgroundColor,\n bgColorClass,\n BorderColor,\n borderColorClass,\n Descriptor,\n Radius,\n Shadow,\n Size,\n TextColor,\n textColorClass,\n ZIndex,\n zIndexStyles,\n} from \"@/types\";\nimport { IconName } from \"@/types/icons\";\nimport { useElementSize } from \"@/util/useElementSize\";\n\nimport { Option } from \"./Option\";\n\nexport enum SelectAnchor {\n Bottom = \"bottom\",\n BottomStart = \"bottom start\",\n BottomEnd = \"bottom end\",\n Top = \"top\",\n TopStart = \"top start\",\n TopEnd = \"top end\",\n}\n\nexport interface SelectProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\"\n> {\n anchor?: SelectAnchor;\n disabled?: boolean;\n exclusive?: boolean;\n onChange?: (value: string | string[] | null) => void;\n options?: Descriptor<{ label: string; content?: ReactNode }>[];\n zIndex?: ZIndex;\n portal?: boolean;\n value?: string | string[];\n}\n\n/**\n * Returns the appropriate z-index utility class for the select options dropdown.\n *\n * When `portal` is `true`, this always uses z-index above modal content to\n * ensure the dropdown overlays other layered UI. Otherwise, it uses the provided\n * `zIndex` level or leaves the z-index unset.\n *\n * @param zIndex Z-index level for the dropdown options list.\n * @param portal If `true`, forces z-index above modal layers for portal rendering.\n */\nfunction getZIndexClass(zIndex?: ZIndex, portal?: boolean): string | undefined {\n if (portal) {\n return zIndexStyles(ZIndex.AboveModal);\n }\n if (zIndex) {\n return zIndexStyles(zIndex);\n }\n return undefined;\n}\n\n/**\n * A select/combobox component which supports single/multi-selection and typeahead filtering.\n *\n * This component operates as both a controlled and uncontrolled component.\n * See `value` and `onChange` for controlled behavior.\n *\n * @example\n * ```tsx\n * // Single selection\n * const MyComponent = () => {\n * const [value, setValue] = useState<string | null>(null);\n *\n * const onChange = useCallback((selected: string) => setValue(selected), [setSelected]);\n *\n * const options: Descriptor<{label: string, content: ReactNode}>[] = useMemo(() => [\n * {id: \"id-a\", data: {label: \"A\", content: \"Option A\"}},\n * {id: \"id-b\", data: {label: \"B\", content: \"Option B\"}},\n * {id: \"id-c\", data: {label: \"C\", content: \"Option C\"}},\n * ],\n * []\n * );\n *\n * return (\n * <Select\n * exclusive={true}\n * value={value}\n * onChange={onChange}\n * options={options}\n * />\n * );\n * };\n * ```\n *\n * @example\n * ```tsx\n * // Multiple selection\n * const MyComponent = () => {\n * const [value, setValue] = useState<string[]>(() => []);\n *\n * const onChange = useCallback((selected: string[]) => setValue(selected), [setSelected]);\n *\n * const options: Descriptor<{label: string, content: ReactNode}>[] = useMemo(() => [\n * {id: \"id-a\", data: {label: \"A\", content: \"Option A\"}},\n * {id: \"id-b\", data: {label: \"B\", content: \"Option B\"}},\n * {id: \"id-c\", data: {label: \"C\", content: \"Option C\"}},\n * ],\n * []\n * );\n *\n * return (\n * <Select\n * value={value}\n * onChange={onChange}\n * options={options}\n * />\n * );\n * };\n * ```\n *\n * @param anchor Relative position to place the dropdown menu when focusing the component. See {@link SelectAnchor}.\n * @param className `class` overrides to apply to the component.\n * @param disabled If `true`, disables the component.\n * @param exclusive If `true`, allows only a single element to be selected;\n * otherwise, multiple items can be selected concurrently.\n * @param onChange Callback triggered when selection state changes.\n * The callback includes a list of selected option values.\n * @param options List of component descriptors which will be used to create {@link Option} child components.\n * @param zIndex Z-index level for the dropdown.\n * @param portal If `true`, ensures a high z-index for layered components (equivalent to above-modal when zIndex is not set).\n * @param value List of values for selected options; this property allows for controlled selection.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const Select: FC<SelectProps> = ({\n anchor = SelectAnchor.BottomStart,\n className,\n disabled,\n zIndex,\n exclusive,\n onChange,\n options,\n portal,\n value,\n ...props\n}) => {\n const [query, setQuery] = useState(\"\");\n const [selectionState, setSelectionState] = useState<string[]>(() => []);\n const inputRef = useRef<HTMLInputElement>(null);\n const { ref: triggerRef, width: triggerWidth } = useElementSize();\n\n const filteredOptions = useMemo(\n () =>\n query\n ? options?.filter((opt) =>\n opt.data.label.trim().toLowerCase().includes(query.toLowerCase())\n )\n : options,\n [options, query]\n );\n\n useEffect(() => {\n if (value && value.length > 0) {\n setSelectionState([...value]);\n }\n }, [value]);\n\n const handleChange = useCallback(\n (value: string | string[] | null) => {\n if (value) {\n if (typeof value === \"string\") {\n setSelectionState([value]);\n } else {\n setSelectionState([...value]);\n }\n }\n\n setQuery(\"\");\n onChange?.(value);\n\n if (exclusive) {\n window.setTimeout(() => {\n inputRef.current?.blur();\n }, 0);\n }\n },\n [exclusive, onChange]\n );\n\n const getDisplayValue = useCallback(\n (v: string | string[] | null): string =>\n v && v.length > 0\n ? typeof v === \"string\"\n ? (options?.find((e) => e.id === v)?.data.label ?? \"\")\n : v\n .map((id) => options?.find((e) => e.id === id)?.data.label)\n .filter((e) => !!e)\n .join(\", \")\n : \"\",\n [options]\n );\n\n return (\n <div className={clsx(className, \"w-full\")} {...props}>\n <Combobox\n disabled={disabled}\n value={value}\n onChange={handleChange}\n multiple={!exclusive}\n immediate\n onClose={() => setQuery(\"\")}\n >\n <div ref={triggerRef} className=\"relative flex items-center\">\n <ComboboxInput\n ref={inputRef}\n autoComplete=\"off\" // interferes with dropdown menu\n displayValue={getDisplayValue}\n onChange={(e) => setQuery(e.target.value)}\n // We'd normally prefer to use `as={Input}`,\n // but ref forwarding doesn't work here properly in react 18,\n // which causes the dropdown menu to be anchored in the wrong place.\n // Until we switch to react 19,\n // we'll just style this component using the same classes as the `Input` component.\n className={clsx(\n inputStyle({ disabled }),\n \"w-full pr-8 cursor-pointer\"\n )}\n />\n <span\n className={clsx(\n \"pointer-events-none absolute right-2.5 flex items-center\",\n disabled && \"opacity-50\"\n )}\n aria-hidden\n >\n <Icon\n name={IconName.CaretDown}\n size={Size.Sm}\n className={textColorClass(TextColor.Secondary)}\n />\n </span>\n </div>\n\n <ComboboxOptions\n anchor={{ to: anchor, gap: 2 }}\n portal={portal}\n style={triggerWidth ? { width: triggerWidth } : undefined}\n className={clsx(\n \"p-1\",\n \"border\",\n borderColorClass(BorderColor.Default),\n bgColorClass(BackgroundColor.Card1),\n getZIndexClass(zIndex, portal),\n radiusStyles(Radius.Lg),\n shadowStyles(Shadow.Lg)\n )}\n >\n {filteredOptions?.map((opt) => {\n // Support both single-select (string) and multi-select (string[]) modes\n const currentValue = value ?? selectionState;\n const isSelected = Array.isArray(currentValue)\n ? currentValue.includes(opt.id)\n : currentValue === opt.id;\n return (\n <Option\n key={opt.id}\n value={opt.id}\n selected={isSelected}\n className={clsx(\"cursor-pointer\")}\n >\n <Text>{opt.data.content ?? opt.data.label}</Text>\n </Option>\n );\n })}\n </ComboboxOptions>\n </Combobox>\n </div>\n );\n};\n\nSelect.displayName = \"Select\";\n","import clsx from \"clsx\";\nimport { DragEventHandler, FC, HTMLAttributes } from \"react\";\n\nimport radiusStyles from \"@/styles/radius\";\nimport { bgColorClass, BrandColor, Radius } from \"@/types\";\n\ninterface SliderKnobProps extends HTMLAttributes<HTMLDivElement> {\n position: number;\n onDragStart: DragEventHandler<HTMLDivElement>;\n value: number;\n}\n\n/**\n * A knob element to overlay on a {@link SliderBar}.\n *\n * The knob allows for user interaction via dragging along the slider's primary axis.\n *\n * @param position The relative position of the knob; this must be a value in the range `[0, 1]`.\n * @param onDragStart Callback triggered on the start of a drag event.\n * @param value Value of the knob; this is expected to be `position * (max - min)` and is only used for accessibility.\n * @param props Additional HTML properties to apply to the component.\n *\n * @internal For use by {@link SliderBar}.\n */\nexport const SliderKnob: FC<SliderKnobProps> = ({\n position,\n onDragStart,\n value,\n ...props\n}) => {\n return (\n <div\n className={clsx(\n \"absolute\",\n \"size-4 -ml-2\",\n \"cursor-pointer\",\n bgColorClass(BrandColor.Primary),\n radiusStyles(Radius.Full),\n \"hover:scale-110 transition-transform\"\n )}\n style={{ left: `${position * 100}%` }}\n onMouseDown={onDragStart}\n role=\"slider\"\n aria-valuenow={value}\n tabIndex={0}\n {...props}\n />\n );\n};\n\nSliderKnob.displayName = \"SliderKnob\";\n","/**\n * Truncate a value to the specified precision.\n *\n * @example\n * ```typescript\n * const truncated = truncate(0.12345, 0.001);\n * console.log(truncated); // 0.123\n * ```\n *\n * @param value Value to truncate\n * @param precision Precision\n */\nexport const truncate = (value: number, precision: number): number => {\n const factor = 1 / precision;\n return Math.trunc(value * factor) / factor;\n};\n\n/**\n * Clean a float value, potentially trimming floating point precision errors.\n *\n * This function is meant to retain as much precision as possible while removing trailing noise.\n * For explicit truncation, see {@link truncate}.\n *\n * @example\n * ```typescript\n * const cleaned = cleanFloat(0.1 + 0.2);\n * console.log(cleaned); // 0.3 rather than 0.30000000000000004\n * ```\n *\n * @param value Value to clean\n * @param maxDigits Maximum number of digits to keep\n */\nexport const cleanFloat = (value: number, maxDigits: number = 10): number => {\n return parseFloat(value.toFixed(maxDigits));\n};\n","import clsx from \"clsx\";\nimport { FC, HTMLAttributes, MouseEvent, useCallback, useRef } from \"react\";\n\nimport { SliderKnob } from \"@/components/Slider/SliderKnob\";\nimport radiusStyles from \"@/styles/radius\";\nimport { BackgroundColor, bgColorClass, BrandColor, Radius } from \"@/types\";\nimport { cleanFloat } from \"@/util/math\";\nimport { isNullish } from \"@/util/type-check\";\n\ninterface SliderBarProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\"\n> {\n min: number;\n max: number;\n multi?: boolean;\n onChange?: (value: number | number[]) => void;\n onChangeCommitted?: (value: number | number[]) => void;\n step: number;\n value?: number | number[];\n}\n\n/**\n * Component which renders the bar and knobs to form the basis of a slider.\n *\n * This component operates as both a controlled and uncontrolled component.\n * See `value` and `onChange` for controlled behavior.\n *\n * @param max Maximum allowed value.\n * @param min Minimum allowed value.\n * @param multi If `true`, provides knob controls for both a \"low\" and a \"high value.\n * @param onChange Callback triggered when slider values change.\n * If `multi` is `true`, emits a value of the form [low, high]; otherwise, emits a single value.\n * @param step Step size of the slider; moving a knob will modify the current value by a minimum of this size.\n * @param value Value of the slider.\n * If `multi` is true, this must be a value of the form [low, high]; otherwise, this is a single numeric value.\n * @param props Additional HTML properties to apply to the component.\n *\n * @internal For use by {@link Slider}.\n */\nexport const SliderBar: FC<SliderBarProps> = ({\n max,\n min,\n multi,\n onChange,\n onChangeCommitted,\n step,\n value,\n ...props\n}) => {\n const sliderTrackRef = useRef<HTMLDivElement>(null);\n // tracks the latest value emitted during a drag so the drag-end handler can\n // commit it (the document `mouseup` that ends the drag carries no position)\n const lastValueRef = useRef<number | number[] | undefined>(value);\n\n const values = Array.isArray(value) ? value : [min, value ?? max];\n const minValue = values[0];\n const maxValue = values[1];\n const isUnset = isNullish(value);\n\n /**\n * Get the knob position in the range [0, 1] from the given value.\n */\n const getKnobPosition = useCallback(\n (v: number) => (v - min) / (max - min),\n [max, min]\n );\n\n /**\n * Get the knob value in the range [min, max] from the given position.\n */\n const getKnobValue = useCallback(\n (xPos: number) => {\n const rawValue = min + xPos * (max - min);\n const stepValue = Math.round(rawValue / step) * step;\n return Math.min(Math.max(stepValue, min), max);\n },\n [max, min, step]\n );\n\n /**\n * Get the x-position in the range [0, 1] for the given x-coordinate relative to the bounds of the slider track.\n */\n const getRelativeX = useCallback((mouseX: number): number => {\n const trackElement = sliderTrackRef.current;\n if (!trackElement) {\n return 0;\n }\n\n const boundingRect = trackElement.getBoundingClientRect();\n const relativeX = Math.min(\n Math.max(mouseX - boundingRect.left, 0),\n boundingRect.width\n );\n return relativeX / boundingRect.width;\n }, []);\n\n /**\n * Drag handler which updates current value as a function of knob x-position.\n */\n const handleDrag = useCallback(\n (mouseX: number, knob: \"min\" | \"max\") => {\n if (!sliderTrackRef.current) {\n return;\n }\n\n const relativePosition = getRelativeX(mouseX);\n const newValue = cleanFloat(getKnobValue(relativePosition));\n\n let next: number | number[] | undefined;\n if (multi) {\n if (knob === \"min\") {\n if (newValue <= maxValue) {\n next = [newValue, maxValue];\n }\n } else {\n if (newValue >= minValue) {\n next = [minValue, newValue];\n }\n }\n } else {\n next = newValue;\n }\n\n if (next !== undefined) {\n lastValueRef.current = next;\n onChange?.(next);\n }\n },\n [getKnobValue, getRelativeX, maxValue, minValue, multi, onChange]\n );\n\n /**\n * Register drag handlers for knob interaction.\n */\n const registerKnobDragHandlers = useCallback(\n (e: MouseEvent, knob: \"min\" | \"max\") => {\n e.preventDefault();\n\n const handleMouseMove = (e: globalThis.MouseEvent): void =>\n handleDrag(e.clientX, knob);\n\n const handleMouseUp = (): void => {\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n // drag ended — commit the final value once\n if (lastValueRef.current !== undefined) {\n onChangeCommitted?.(lastValueRef.current);\n }\n };\n\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n },\n [handleDrag, onChangeCommitted]\n );\n\n /**\n * Click handler which updates knob position to the position clicked on the track.\n *\n * In the case of multiple knobs, the knob closest to the click is chosen for update.\n */\n const handleTrackClick = useCallback(\n (e: MouseEvent) => {\n if (!sliderTrackRef.current) {\n return;\n }\n\n const clickPos = getRelativeX(e.clientX);\n const clickValue = getKnobValue(clickPos);\n\n let next: number | number[];\n if (multi) {\n const minKnobPos = getKnobPosition(minValue);\n const maxKnobPos = getKnobPosition(maxValue);\n\n const minKnobDist = Math.abs(clickPos - minKnobPos);\n const maxKnobDist = Math.abs(clickPos - maxKnobPos);\n\n if (clickPos < minKnobPos || minKnobDist < maxKnobDist) {\n next = [clickValue, maxValue];\n } else {\n next = [minValue, clickValue];\n }\n } else {\n next = clickValue;\n }\n\n lastValueRef.current = next;\n onChange?.(next);\n // a track click is a complete interaction — commit immediately\n onChangeCommitted?.(next);\n },\n [\n getRelativeX,\n getKnobValue,\n multi,\n getKnobPosition,\n minValue,\n maxValue,\n onChange,\n onChangeCommitted,\n ]\n );\n\n return (\n <div\n ref={sliderTrackRef}\n className={clsx(\n \"relative\",\n \"flex items-center\",\n \"w-full h-2\",\n \"cursor-pointer\",\n bgColorClass(BackgroundColor.CardElevated),\n radiusStyles(Radius.Full)\n )}\n onClick={handleTrackClick}\n onKeyDown={(e) => e.stopPropagation()}\n role=\"presentation\"\n {...props}\n >\n {!isUnset && (\n <>\n <div\n className={clsx(\n \"absolute\",\n \"h-2\",\n bgColorClass(BrandColor.Primary),\n radiusStyles(Radius.Full)\n )}\n style={{\n left: `${getKnobPosition(minValue) * 100}%`,\n right: `${(1 - getKnobPosition(maxValue)) * 100}%`,\n }}\n />\n\n {multi && (\n <SliderKnob\n position={getKnobPosition(minValue)}\n onDragStart={(e) => registerKnobDragHandlers(e, \"min\")}\n value={minValue}\n />\n )}\n <SliderKnob\n position={getKnobPosition(maxValue)}\n onDragStart={(e) => registerKnobDragHandlers(e, \"max\")}\n value={maxValue}\n />\n </>\n )}\n </div>\n );\n};\n\nSliderBar.displayName = \"SliderBar\";\n","import clsx from \"clsx\";\nimport type { FC, HTMLAttributes } from \"react\";\n\nimport { Text } from \"@/components/Text\";\nimport { TextVariant } from \"@/types\";\nimport { cn } from \"@/util/classes\";\nimport { truncate } from \"@/util/math\";\n\ninterface SliderLabelProps extends HTMLAttributes<HTMLDivElement> {\n knobLabel?: boolean;\n min: number;\n minLabel?: boolean;\n max: number;\n maxLabel?: boolean;\n precision: number;\n value?: number | number[];\n}\n\n/**\n * Get the relative value [0, 1] for a given value in a range.\n *\n * @param value Raw value\n * @param min Range minimum\n * @param max Range maximum\n */\nconst getRelativeValue = (value: number, min: number, max: number): number =>\n (value - min) / (max - min);\n\n/**\n * Component which renders a label above a {@link SliderKnob}.\n *\n * @param max Maximum value of the slider.\n * @param min Minimum value of the slider.\n * @param precision Numeric precision to use when rendering labels; label values will be truncated to this precision.\n * See {@link truncate}.\n * @param value Current value of the knob.\n * @param threshold Threshold in the range `[0, 1]` to prevent label overlap.\n * If the `value` is within this relative threshold as determined by\n * `value / (max - min)` or `1 - (value / (max - min))`,\n * then the label is hidden.\n * For example, a threshold of `0.1` indicates that if `relativeValue < 0.1 || relativeValue > 0.9`,\n * the label will not be rendered.\n * This is intended to prevent labels from overlapping with minimum and maximum labels.\n *\n * @internal For use by {@link SliderLabels}.\n */\nconst KnobLabel: FC<{\n max: number;\n min: number;\n precision: number;\n value: number;\n threshold?: number;\n}> = ({ max, min, precision, value, threshold = 0.1 }) => {\n const relativeValue = getRelativeValue(value, min, max);\n\n // don't display the knob label if we're too close to the start/end\n if (relativeValue < threshold || 1 - relativeValue < threshold) {\n return null;\n }\n\n const displayValue = truncate(value, precision);\n if (!Number.isFinite(displayValue)) {\n return null;\n }\n\n return (\n <Text\n className={clsx(\"absolute\", \"-translate-x-1/2\")}\n style={{ left: `${relativeValue * 100}%` }}\n variant={TextVariant.Sm}\n >\n {displayValue}\n </Text>\n );\n};\n\n/**\n * Component which renders relevant labels above a {@link SliderBar}.\n *\n * @param className `class` overrides to apply to the labels' container.\n * @param knobLabel If `true`, displays a label above the current knob position(s).\n * @param max Maximum value of the slider.\n * @param maxLabel If `true`, displays a label above the maximal endpoint of the slider.\n * @param min Minimum value of the slider.\n * @param minLabel if `true`, displays a label above the minimal endpoint of the slider.\n * @param precision Numeric precision to use when rendering labels; label values will be truncated to this precision.\n * See {@link truncate}.\n * @param value Current value of the slider.\n * If the slider supports multiple values, this should be of the form [low, high];\n * otherwise, this is a single numeric value.\n * @param props Additional HTML properties to apply to the component.\n *\n * @internal For use by {@link Slider}.\n */\nexport const SliderLabels: FC<SliderLabelProps> = ({\n className,\n knobLabel,\n max,\n maxLabel,\n min,\n minLabel,\n precision,\n value,\n ...props\n}) => {\n return (\n <div\n className={cn(\n \"relative\",\n \"flex items-center justify-between\",\n \"w-full\",\n className\n )}\n {...props}\n >\n {minLabel && (\n <Text variant={TextVariant.Sm}>{truncate(min, precision)}</Text>\n )}\n {maxLabel && (\n <Text variant={TextVariant.Sm}>{truncate(max, precision)}</Text>\n )}\n\n {value !== undefined &&\n knobLabel &&\n (Array.isArray(value) ? (\n <>\n <KnobLabel\n max={max}\n min={min}\n precision={precision}\n value={value[0]}\n />\n <KnobLabel\n max={max}\n min={min}\n precision={precision}\n value={value[1]}\n />\n </>\n ) : (\n <KnobLabel max={max} min={min} precision={precision} value={value} />\n ))}\n </div>\n );\n};\n\nSliderLabels.displayName = \"SliderLabels\";\n","import debounce from \"lodash.debounce\";\nimport { useEffect, useMemo } from \"react\";\n\n/**\n * Re-definition of lodash's DebouncedFunc;\n * this type is not included in the lodash.debounce package.\n */\ninterface DebouncedFunc<T extends (...args: Parameters<T>) => ReturnType<T>> {\n (...args: Parameters<T>): ReturnType<T> | undefined;\n cancel(): void;\n flush(): ReturnType<T> | undefined;\n}\n\n/**\n * Hook which returns a debounced version of the provided callback.\n *\n * @example\n * ```tsx\n * const delay = 300;\n * const debouncedCallback = useDebouncedCallback(\n * useCallback(\n * (value: string) => {\n * doSomething(value);\n * },\n * [doSomething]\n * ),\n * delay\n * );\n * ```\n *\n * @param callback Callback to debounce; this is expected to be a stable ref\n * @param delay Debounce delay\n */\nexport const useDebouncedCallback = <\n T extends (...args: Parameters<T>) => ReturnType<T>,\n>(\n callback: T,\n delay: number\n): DebouncedFunc<T> => {\n const debouncedCallback = useMemo(\n () => debounce(callback, delay),\n [callback, delay]\n );\n\n useEffect(() => {\n return () => debouncedCallback.cancel();\n }, [debouncedCallback]);\n\n return debouncedCallback;\n};\n","/**\n * Type alias for a predicate function.\n */\nexport type Validator = (value: string | number | null | undefined) => boolean;\n\n/**\n * Returns true if the provided value is non-nullish.\n *\n * @param value Value to test\n */\nexport const nonNull: Validator = (value: string | number | null | undefined) =>\n value !== null && value !== undefined;\n\n/**\n * Returns true if the provided value is finite.\n *\n * @param value Value to test\n */\nexport const finite: Validator = (\n value: string | number | null | undefined\n) => {\n if (!nonNull(value)) {\n return false;\n }\n\n const parsedValue = Number.parseFloat(value!.toString());\n return Number.isFinite(parsedValue);\n};\n\n/**\n * Returns a {@link Validator} which returns true if the value is within the specified range.\n *\n * @param min Range minimum\n * @param max Range maximum\n */\nexport const makeRangeValidator =\n (min: number, max: number): Validator =>\n (value: string | number | null | undefined) => {\n if (!finite(value)) {\n return false;\n }\n\n const valueString = value!.toString();\n\n return (\n Number.parseFloat(valueString) >= min &&\n Number.parseFloat(valueString) <= max\n );\n };\n","import {\n ChangeEvent,\n FC,\n HTMLAttributes,\n ReactNode,\n useCallback,\n useEffect,\n useState,\n} from \"react\";\n\nimport { FormField } from \"@/components/FormField\";\nimport { Input } from \"@/components/Input\";\nimport { SliderBar } from \"@/components/Slider/SliderBar\";\nimport { SliderLabels } from \"@/components/Slider/SliderLabels\";\nimport { Stack } from \"@/components/Stack\";\nimport { UnsetHint } from \"@/components/UnsetHint\";\nimport { Orientation, Spacing } from \"@/types\";\nimport { useDebouncedCallback } from \"@/util/useDebouncedCallback.ts\";\nimport { makeRangeValidator } from \"@/util/validators\";\n\ntype ChangeHandler = (value: number | number[]) => void;\n\nexport interface SliderProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"onChange\"\n> {\n bare?: boolean;\n debounceDelay?: number;\n labeled?: boolean;\n knobLabel?: boolean;\n min: number;\n minLabel?: ReactNode;\n max: number;\n maxLabel?: ReactNode;\n multi?: boolean;\n onChange?: ChangeHandler;\n onChangeCommitted?: ChangeHandler;\n showUnsetHint?: boolean;\n step?: number;\n value?: number | number[];\n}\n\nexport interface SingleValueSliderProps extends Omit<\n SliderProps,\n \"multi\" | \"onChange\" | \"onChangeCommitted\" | \"value\"\n> {\n onChange?: (value: number) => void;\n onChangeCommitted?: (value: number) => void;\n value?: number;\n}\n\nexport interface MultiValueSliderProps extends Omit<\n SliderProps,\n \"multi\" | \"onChange\" | \"onChangeCommitted\" | \"value\"\n> {\n onChange?: (value: number[]) => void;\n onChangeCommitted?: (value: number[]) => void;\n value?: number[];\n}\n\n/**\n * Clamp a value to a given range.\n *\n * @param value Value to clamp\n * @param min Minimum value\n * @param max Maximum value\n */\nconst clamp = (value: number, min: number, max: number): number =>\n Math.min(Math.max(value, min), max);\n\n/**\n * A basic slider component.\n *\n * This component renders a slider with one or more draggable knobs, optional numeric inputs, and optional labels.\n *\n * This component operates as both a controlled and uncontrolled component.\n * See `value` and `onChange` for controlled behavior.\n *\n * @param bare If `true`, prevents rendering of value inputs; instead only renders the slider itself.\n * @param className `class` overrides to apply to the component.\n * @param debounceDelay Time in milliseconds to debounce `onChange` events.\n * Set this to `0` for a fully-responsive slider.\n * Note that internal state updates are *not* debounced, so this value does not affect slider responsiveness.\n * @param labeled If `true`, displays labels for `min` and `max` slider endpoints.\n * @param knobLabel If `true`, displays labels above all slider knobs.\n * @param max Maximum slider value\n * @param maxLabel Optional label to display for maximum numeric input.\n * @param min Minimum slider value.\n * @param minLabel Optional label to display for minimum numeric input.\n * @param multi Controls whether the slider supports setting multiple values.\n * If `true`:\n * - The slider will render two draggable knobs; one for a \"low\" value and one for a \"high\" value.\n * - `value` must be of the form `[low, high]`.\n * - `onChange` will emit values of the form `[low, high]`.\n * - See {@link MultiValueSlider} as a type-safe alias for this configuration.\n * If `false`:\n * - The slider will render a single draggable knob.\n * - `value` must be a single numeric value.\n * - `onChange` will emit a single numeric value.\n * - See {@link SingleValueSlider} as a type-safe alias for this configuration.\n * @param onChange Callback triggered when values change.\n * This change can be triggered in three ways:\n * - The user modifies the value in the minimum or maximum input field.\n * - The user drags a slider knob.\n * - The user clicks on the slider track.\n * If `multi` is `true`, this callback emits a value of the form `[low, high]`;\n * otherwise, this callback emits a single numeric value.\n * @param onChangeCommitted Callback triggered once when an interaction completes —\n * a drag release, a track click, or an input blur — rather than continuously.\n * Pair it with a responsive `onChange` (e.g. `debounceDelay={0}`) to get live\n * updates during a drag while committing only once on release. Emits the same\n * value shape as `onChange`.\n * @param step Numeric step size for slider increments.\n * @param value The controlled value of the slider.\n * If `multi` is `true`, this must be of the form `[low, high]`;\n * otherwise, this must be a single numeric value.\n * In all cases, `min <= value <= max`.\n * @param showUnsetHint If `true`, shows a hint to the user to initialize the slider's value.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const BaseSlider: FC<SliderProps> = ({\n bare,\n className,\n debounceDelay = 200,\n labeled,\n knobLabel,\n max,\n maxLabel,\n min,\n minLabel,\n multi,\n onChange,\n onChangeCommitted,\n step = 0.001,\n value,\n showUnsetHint,\n ...props\n}) => {\n // transient state\n const [transientValue, setTransientValue] = useState<\n number | number[] | undefined\n >(value);\n const [minValue, setMinValue] = useState<string>(() =>\n Array.isArray(value) ? value[0].toString() : min.toString()\n );\n const [maxValue, setMaxValue] = useState<string>(() =>\n Array.isArray(value) ? value[1].toString() : (value ?? max).toString()\n );\n\n /**\n * Check whether values are ordered such that min <= newMin <= newMax <= max.\n */\n const isValidRange = useCallback(\n (newMin: string | number, newMax: string | number) =>\n makeRangeValidator(min, Number.parseFloat(newMax.toString()))(newMin) &&\n makeRangeValidator(Number.parseFloat(newMin.toString()), max)(newMax),\n [max, min]\n );\n\n // synchronize transient state with changes in controlled value\n useEffect(() => {\n setTransientValue(value);\n }, [value]);\n\n // synchronize inputs with changes in transient state\n useEffect(() => {\n if (transientValue !== null && transientValue !== undefined) {\n if (Array.isArray(transientValue)) {\n setMinValue(clamp(transientValue[0], min, max).toString());\n setMaxValue(clamp(transientValue[1], min, max).toString());\n } else {\n setMinValue(min.toString());\n setMaxValue(clamp(transientValue, min, max).toString());\n }\n }\n }, [max, min, transientValue]);\n\n // debounce onChange events to prevent excessive updates when e.g. dragging the slider\n const debouncedOnChange = useDebouncedCallback(\n useCallback((value: number | number[]) => onChange?.(value), [onChange]),\n debounceDelay\n );\n\n const handleChange = useCallback(\n (value: number | number[]) => {\n // update transient value to provide responsive slider while debouncing onChange emission\n setTransientValue(value);\n debouncedOnChange(value);\n },\n [debouncedOnChange]\n );\n\n const handleMinInputChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n setMinValue(e.target.value);\n\n const v = Number.parseFloat(e.target.value);\n if (isValidRange(v, maxValue) && v !== Number.parseFloat(minValue)) {\n handleChange([v, Number.parseFloat(maxValue)]);\n }\n },\n [handleChange, isValidRange, maxValue, minValue]\n );\n\n const handleMaxInputChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n setMaxValue(e.target.value);\n\n const v = Number.parseFloat(e.target.value);\n if (isValidRange(minValue, v) && v !== Number.parseFloat(maxValue)) {\n handleChange(multi ? [Number.parseFloat(minValue), v] : v);\n }\n },\n [handleChange, isValidRange, maxValue, minValue, multi]\n );\n\n // commit the current input value(s) once editing settles (blur / Enter)\n const handleInputCommit = useCallback(() => {\n if (!onChangeCommitted) return;\n\n const maxNum = Number.parseFloat(maxValue);\n if (multi) {\n const minNum = Number.parseFloat(minValue);\n if (isValidRange(minNum, maxNum)) {\n onChangeCommitted([minNum, maxNum]);\n }\n } else if (Number.isFinite(maxNum)) {\n onChangeCommitted(maxNum);\n }\n }, [isValidRange, maxValue, minValue, multi, onChangeCommitted]);\n\n const hint = bare\n ? \"Click on the slider to set a value\"\n : \"Click on the slider or enter a number to set a value\";\n\n return (\n <Stack\n orientation={Orientation.Column}\n spacing={Spacing.Md}\n className={className}\n {...props}\n >\n {(labeled || knobLabel) && (\n <SliderLabels\n knobLabel={knobLabel}\n min={min}\n minLabel={labeled} // todo - dedicated prop\n max={max}\n maxLabel={labeled} // todo - dedicated prop\n precision={step}\n value={transientValue}\n />\n )}\n\n <SliderBar\n min={min}\n max={max}\n multi={multi}\n step={step}\n value={transientValue}\n onChange={handleChange}\n onChangeCommitted={onChangeCommitted}\n />\n\n {!bare && (\n <div className=\"flex justify-between items-center\">\n {multi && (\n <FormField\n label={minLabel}\n control={\n <Input\n value={minValue}\n onChange={handleMinInputChange}\n onBlur={handleInputCommit}\n error={!isValidRange(minValue, maxValue)}\n />\n }\n />\n )}\n <FormField\n label={maxLabel}\n control={\n <Input\n value={maxValue}\n onChange={handleMaxInputChange}\n onBlur={handleInputCommit}\n error={!isValidRange(minValue, maxValue)}\n />\n }\n />\n </div>\n )}\n {showUnsetHint && <UnsetHint value={value} hint={hint} />}\n </Stack>\n );\n};\n\n/**\n * A slider supporting selection of a single value.\n *\n * See also {@link BaseSlider}.\n * See also {@link MultiValueSlider}.\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const [value, setValue] = useState<number>(0.5);\n *\n * const onChange = useCallback((newValue: number) => setValue(newValue), [setValue]);\n *\n * return (\n * <SingleValueSlider\n * min={0}\n * max={1}\n * onChange={onChange}\n * value={value}\n * />\n * );\n * };\n * ```\n *\n * @param onChange Callback triggered when the slider value changes.\n * This change can be triggered in three ways:\n * - The user modifies the value in the minimum or maximum input field.\n * - The user drags a slider knob.\n * - The user clicks on the slider track.\n * @param max Maximum value of the slider\n * @param min Minimum value of the slider\n * @param props See {@link BaseSlider} for all available properties.\n */\nexport const SingleValueSlider: FC<SingleValueSliderProps> = ({\n onChange,\n onChangeCommitted,\n max,\n min,\n ...props\n}) => (\n <BaseSlider\n min={min}\n max={max}\n {...props}\n multi={false}\n onChange={onChange as ChangeHandler}\n onChangeCommitted={onChangeCommitted as ChangeHandler}\n />\n);\n\n/**\n * A slider supporting selection of a \"low\" value and a \"high\" value.\n *\n * See also {@link BaseSlider}.\n * See also {@link SingleValueSlider}.\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const [value, setValue] = useState<number[]>(() => [0.25, 0.75]);\n *\n * const onChange = useCallback((newValue: number[]) => setValue(newValue), [setValue]);\n *\n * return (\n * <MultiValueSlider\n * min={0}\n * max={1}\n * onChange={onChange}\n * value={value}\n * />\n * );\n * };\n * ```\n *\n * @param onChange Callback triggered when the slider value changes.\n * This change can be triggered in three ways:\n * - The user modifies the value in the minimum or maximum input field.\n * - The user drags a slider knob.\n * - The user clicks on the slider track.\n * @param max Maximum value of the slider\n * @param min Minimum value of the slider\n * @param props See {@link BaseSlider} for all available properties.\n */\nexport const MultiValueSlider: FC<MultiValueSliderProps> = ({\n onChange,\n onChangeCommitted,\n max,\n min,\n ...props\n}) => (\n <BaseSlider\n min={min}\n max={max}\n {...props}\n multi={true}\n onChange={onChange as ChangeHandler}\n onChangeCommitted={onChangeCommitted as ChangeHandler}\n />\n);\n\nBaseSlider.displayName = \"BaseSlider\";\nSingleValueSlider.displayName = \"SingleValueSlider\";\nMultiValueSlider.displayName = \"MultiValueSlider\";\n","import type { FC, HTMLAttributes } from \"react\";\n\nimport radiusStyles from \"@/styles/radius\";\nimport { textStyles } from \"@/styles/text\";\nimport {\n BackgroundColor,\n bgColorClass,\n BorderColor,\n borderColorClass,\n Radius,\n TextColor,\n textColorClass,\n TextVariant,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport const Table: FC<HTMLAttributes<HTMLTableElement>> = ({\n children,\n className,\n ...props\n}) => {\n return (\n <table\n className={cn(\n \"w-full border-collapse\",\n bgColorClass(BackgroundColor.Card1),\n radiusStyles(Radius.Md),\n className\n )}\n {...props}\n >\n {children}\n </table>\n );\n};\n\nexport const TableRow: FC<HTMLAttributes<HTMLTableRowElement>> = ({\n children,\n className,\n ...props\n}) => {\n const isClickable = typeof props.onClick === \"function\";\n return (\n <tr\n className={cn(\n \"border-b last:border-0\",\n borderColorClass(BorderColor.CardElevated),\n isClickable &&\n `hover:cursor-pointer hover:bg-[var(--color-content-bg-card-2)]`,\n className\n )}\n {...props}\n >\n {children}\n </tr>\n );\n};\n\nexport const TableHeader: FC<HTMLAttributes<HTMLTableSectionElement>> = ({\n children,\n className,\n ...props\n}) => {\n return (\n <thead\n className={cn(\n \"border-b\",\n borderColorClass(BorderColor.CardElevated),\n className\n )}\n {...props}\n >\n {children}\n </thead>\n );\n};\n\nexport const TableBody: FC<HTMLAttributes<HTMLTableSectionElement>> = ({\n children,\n ...props\n}) => {\n return <tbody {...props}>{children}</tbody>;\n};\n\nexport const TableCell: FC<HTMLAttributes<HTMLTableCellElement>> = ({\n children,\n className,\n ...props\n}) => {\n return (\n <td\n className={cn(\n \"px-6 py-3 text-left font-normal\",\n textColorClass(TextColor.Primary),\n textStyles(TextVariant.Md),\n className\n )}\n {...props}\n >\n {children}\n </td>\n );\n};\n\nexport const TableHead: FC<HTMLAttributes<HTMLTableCellElement>> = ({\n children,\n className,\n ...props\n}) => {\n return (\n <th\n className={cn(\n \"px-6 py-3 text-left font-normal\",\n textColorClass(TextColor.Secondary),\n textStyles(TextVariant.Md),\n className\n )}\n {...props}\n >\n {children}\n </th>\n );\n};\n\nTable.displayName = \"Table\";\nTableBody.displayName = \"TableBody\";\nTableCell.displayName = \"TableCell\";\nTableHead.displayName = \"TableHead\";\nTableHeader.displayName = \"TableHeader\";\nTableRow.displayName = \"TableRow\";\n","import { Field, Textarea as HeadlessTextarea } from \"@headlessui/react\";\nimport clsx from \"clsx\";\nimport { type FC, TextareaHTMLAttributes } from \"react\";\n\nimport radiusStyles from \"@/styles/radius\";\nimport { Radius, Size } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport enum ResizeBehavior {\n None = \"None\",\n Vertical = \"Vertical\",\n Horizontal = \"Horizontal\",\n BiDirectional = \"BiDirectional\",\n}\n\nexport interface TextAreaProps extends TextareaHTMLAttributes<HTMLTextAreaElement> {\n size?: Size;\n radius?: Radius;\n className?: string;\n containerClassName?: string;\n error?: boolean;\n resize?: ResizeBehavior;\n}\n\nconst sizeStyles: Record<Size, string> = {\n [Size.Xs]: clsx(\"px-2.5 py-1.5\", \"text-xs/5\"),\n [Size.Sm]: clsx(\"px-3 py-2\", \"text-sm/6\"),\n [Size.Md]: clsx(\"px-3.5 py-2.5\", \"text-md/7\"),\n [Size.Lg]: clsx(\"px-4 py-3\", \"text-lg/9\"),\n [Size.Xl]: clsx(\"px-4.5 py-3.5\", \"text-xl/10\"),\n};\n\nconst resizeStyles: Record<ResizeBehavior, string> = {\n [ResizeBehavior.None]: \"resize-none\",\n [ResizeBehavior.Vertical]: \"resize-y\",\n [ResizeBehavior.Horizontal]: \"resize-x\",\n [ResizeBehavior.BiDirectional]: \"resize\",\n};\n\n/**\n * A textarea component.\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const [value, setValue] = useState<string>(\"\");\n *\n * const onChange = useCallback((newValue: string) => setValue(newValue), [setValue]);\n *\n * return (\n * <TextArea\n * onChange={onChange}\n * resize={ResizeBehavior.None}\n * rows={10}\n * value={value}\n * />\n * );\n * };\n * ```\n *\n * @param size The size of the textarea; this controls the size of the text itself and container padding.\n * See {@link Size}.\n * @param radius The border radius to apply to the textarea. See {@link Radius}.\n * @param error If `true`, renders the textarea in an error state.\n * @param resize Resize behavior. See {@link ResizeBehavior}.\n * @param rows The number of text rows to display in the textarea.\n * @param className `class` overrides to apply to the component.\n * @param containerClassName `class` overrides to apply to the component's container.\n * @param disabled If `true`, disables the textarea.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const TextArea: FC<TextAreaProps> = ({\n size = Size.Md,\n radius = Radius.Sm,\n error = false,\n resize = ResizeBehavior.Vertical,\n rows = 3,\n className,\n containerClassName,\n disabled,\n ...props\n}) => {\n return (\n <Field className={cn(\"flex flex-col gap-1\", containerClassName)}>\n <HeadlessTextarea\n rows={rows}\n disabled={disabled}\n className={cn(\n \"w-full\",\n \"appearance-none\",\n \"border\",\n\n \"bg-content-bg-card-1\",\n \"border-content-border-secondary-primary\",\n \"text-content-text-primary\",\n \"placeholder:text-content-text-tertiary\",\n\n \"hover:border-content-border-secondary-secondary\",\n\n \"focus:outline-none\",\n \"focus:ring-2\",\n \"focus:ring-action-primary-primary\",\n \"focus:ring-offset-2\",\n \"focus:border-action-primary-primary\",\n\n \"disabled:opacity-50\",\n \"disabled:cursor-not-allowed\",\n \"disabled:bg-content-bg-muted\",\n\n error && \"border-semantic-destructive\",\n error && \"focus:ring-semantic-destructive\",\n\n sizeStyles[size],\n radiusStyles(radius),\n resizeStyles[resize],\n className\n )}\n {...props}\n />\n </Field>\n );\n};\n\nTextArea.displayName = \"TextArea\";\n","import type { FC, HTMLAttributes } from \"react\";\n\nimport { Text } from \"@/components/Text\";\nimport { IconColor, TextColor, TextVariant } from \"@/types\";\n\nexport interface TextBadgeProps extends HTMLAttributes<HTMLSpanElement> {\n color?: TextColor | IconColor;\n}\n\n/**\n * A simple badge-like component for displaying text in an opinionated way.\n *\n * This component is an alias for {@link Text} with {@link TextVariant.Label}.\n *\n * @example\n * ```tsx\n * <TextBadge color={TextColor.Success}>\n * completed\n * </TextBadge>\n * ```\n *\n * @param color Color of the content. See {@link Color}.\n * @param children Content wrapped by this component.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const TextBadge: FC<TextBadgeProps> = ({\n color = IconColor.Brand,\n children,\n ...props\n}) => (\n <Text color={color} variant={TextVariant.Label} {...props}>\n {children}\n </Text>\n);\n\nTextBadge.displayName = \"TextBadge\";\n","import clsx from \"clsx\";\nimport type { FC, HTMLAttributes, ReactNode } from \"react\";\n\nimport { IconWrapper } from \"@/components/Icons\";\nimport { Stack } from \"@/components/Stack\";\nimport { Text } from \"@/components/Text\";\nimport { ToastContainer } from \"@/components/ToastContainer\";\nimport radiusStyles from \"@/styles/radius\";\nimport shadowStyles from \"@/styles/shadow\";\nimport {\n Align,\n Anchor,\n BackgroundColor,\n bgColorClass,\n IconColor,\n IconName,\n Orientation,\n Radius,\n Shadow,\n Spacing,\n TextColor,\n textColorClass,\n Variant,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\ntype ToastVariant = Exclude<Variant, Variant.Borderless>;\n\nexport interface ToastProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"title\"\n> {\n action?: ReactNode;\n anchor?: Anchor;\n description?: ReactNode;\n icon?: FC | IconName;\n open?: boolean;\n title?: ReactNode;\n variant?: ToastVariant;\n}\n\nconst variantStyles: Record<ToastVariant, string> = {\n [Variant.Primary]: textColorClass(TextColor.Primary),\n [Variant.Secondary]: textColorClass(TextColor.Secondary),\n [Variant.Success]: textColorClass(IconColor.Success),\n [Variant.Danger]: textColorClass(IconColor.Destructive),\n [Variant.Icon]: textColorClass(TextColor.Primary),\n};\n\n/**\n * A toast component with opinionated slots for content.\n *\n * See also {@link ActivityToast}.\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const [open, setOpen] = useState<boolean>(true);\n *\n * return (\n * <Toast\n * open={open}\n * title=\"Message sent\"\n * description=\"You will be notified when the recipient opens your message\"\n * icon={IconName.Check}\n * action={\n * <Button onClick={() => setOpen(false)}>\n * Close\n * </Button>\n * }\n * variant={Variant.Success}\n * />\n * );\n * };\n * ```\n *\n * @param action Optional content to display in the \"action\" slot; this is typically something like a button/CTA.\n * @param anchor The location in the viewport to anchor the toast. See {@link Anchor}.\n * @param className `class` overrides to apply to the component.\n * @param description Optional content to display in the \"description\" slot; this should be considered secondary content.\n * @param icon An optional reference ({@link FC}) to an icon or an {@link IconName} to display in the \"icon\" slot.\n * @param open If `true`, the toast will be visible; otherwise it will be hidden.\n * @param title Optional content to display in the \"title\" slot; this should be considered the primary content.\n * @param variant The variant of the toast; this controls icon styling. See {@link Variant}.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const Toast: FC<ToastProps> = ({\n action,\n anchor = Anchor.Bottom,\n className,\n description,\n icon,\n open,\n title,\n variant = Variant.Primary,\n ...props\n}) => {\n const toastContent = (\n <Stack\n spacing={Spacing.Xl}\n className={cn(\n \"p-4\",\n radiusStyles(Radius.Md),\n bgColorClass(BackgroundColor.Card2),\n shadowStyles(Shadow.Md),\n className\n )}\n {...props}\n >\n <Stack orientation={Orientation.Column}>\n <Stack spacing={Spacing.Sm} align={Align.Center}>\n <IconWrapper\n content={icon}\n className={clsx(\"size-5\", variantStyles[variant])}\n />\n {title && <Text className=\"font-semibold\">{title}</Text>}\n </Stack>\n {description && <Text color={TextColor.Secondary}>{description}</Text>}\n </Stack>\n {action && <Stack align={Align.Center}>{action}</Stack>}\n </Stack>\n );\n\n return (\n <ToastContainer open={open} anchor={anchor}>\n {toastContent}\n </ToastContainer>\n );\n};\n","import { Field, Switch as HeadlessSwitch, Label } from \"@headlessui/react\";\nimport { ButtonHTMLAttributes, type FC } from \"react\";\n\nimport { UnsetHint } from \"@/components/UnsetHint\";\nimport radiusStyles from \"@/styles/radius\";\nimport { TEXT_STYLES } from \"@/styles/text\";\nimport {\n BackgroundColor,\n bgColorClass,\n BorderColor,\n borderColorClass,\n Radius,\n Size,\n TextColor,\n textColorClass,\n TextVariant,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\ntype ModifiedToggleProps = Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n \"size\" | \"onChange\" | \"checked\" | \"disabled\" | \"className\" | \"value\"\n>;\n\ntype ToggleSize = Extract<Size, Size.Sm | Size.Md>;\n\nexport interface ToggleProps extends ModifiedToggleProps {\n checked?: boolean;\n onChange?: (checked: boolean) => void;\n label?: string;\n disabled?: boolean;\n size?: ToggleSize;\n className?: string;\n labelClassName?: string;\n showUnsetHint?: boolean;\n}\n\nconst trackSizeStyles: Record<ToggleSize, string> = {\n [Size.Sm]: cn(\"w-8 h-4\"),\n [Size.Md]: cn(\"w-9 h-5\"),\n};\n\nconst thumbSizeStyles: Record<ToggleSize, string> = {\n [Size.Sm]: cn(\"w-3 h-3\"),\n [Size.Md]: cn(\"w-4 h-4\"),\n};\n\nconst textStyles: Record<ToggleSize, string> = {\n [Size.Sm]: TEXT_STYLES[TextVariant.Sm],\n [Size.Md]: TEXT_STYLES[TextVariant.Md],\n};\n\n/**\n * Gets the translate styles for the thumb based on the\n * size of the toggle. A-B-C syntax where:\n * A - The width of the track\n * B - The width of the thumb\n * C - padding/gaps on the side\n * @param size - The size of the toggle\n * @returns The translate styles for the thumb\n */\nconst getThumbTranslateStyles = (size: Size): string => {\n switch (size) {\n case Size.Sm:\n return \"group-data-checked:translate-x-[calc(2.3rem-1rem-0.28rem)]\";\n case Size.Md:\n return \"group-data-checked:translate-x-[calc(2.8rem-1.5rem-0.28rem)]\";\n default:\n return \"\";\n }\n};\n\n/**\n * A component supporting a boolean toggle.\n *\n * This component operates exclusively as a controlled component. See `value` and `onChange` for controlled behavior.\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const [enabled, setEnabled] = useState<boolean>(false);\n *\n * const onChange = useCallback((status: boolean) => setEnabled(status), [setEnabled]);\n *\n * return (\n * <Toggle\n * checked={enabled}\n * onChange={onChange}\n * label=\"Run with debug enabled\"\n * />\n * );\n * };\n * ```\n *\n * @param checked If `true`, renders the toggle in the \"active\" state.\n * @param disabled If `true`, disables the toggle.\n * @param onChange Callback triggered when the toggle value changes.\n * @param size Size of the toggle. See {@link Size}.\n * @param className `class` overrides to apply to the component.\n * @param labelClassName `class` overrides to apply to the toggle's label.\n * @param label Optional label for the toggle.\n * @param showUnsetHint If `true`, displays a hint to the user to initialize the toggle's value.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const Toggle: FC<ToggleProps> = ({\n checked,\n disabled = false,\n onChange,\n size = Size.Md,\n className,\n labelClassName,\n label,\n showUnsetHint,\n ...props\n}) => {\n return (\n <Field className=\"flex items-center gap-2\">\n <HeadlessSwitch\n checked={checked}\n onChange={onChange}\n disabled={disabled}\n className={cn(\n \"group\",\n \"relative\",\n \"inline-flex\",\n \"cursor-pointer\",\n \"items-center\",\n bgColorClass(BackgroundColor.CardElevated),\n \"border\",\n borderColorClass(BorderColor.Default),\n \"transition-colors\",\n // when hovered\n \"hover:bg-[#999999]\", // TODO - current scheme doesn't have a light grey\n \"focus:outline-none\",\n \"focus:ring-0\",\n \"focus-visible:outline-none\",\n \"focus-visible:ring-0\",\n // when disabled\n \"disabled:opacity-50\",\n \"disabled:cursor-not-allowed\",\n // when checked\n \"data-checked:bg-action-primary-primary\",\n \"data-checked:border-action-primary-primary\",\n trackSizeStyles[size],\n radiusStyles(Radius.Full), // intentionally require Full radius\n className\n )}\n {...props}\n >\n <span\n className={cn(\n \"pointer-events-none\",\n // center the thumb vertically\n \"absolute\",\n \"top-1/2\",\n \"-translate-y-1/2\",\n \"inline-block\",\n \"rounded-full\",\n \"bg-content-bg-card-1\",\n \"group-data-checked:bg-white\",\n \"shadow-sm\",\n \"ring-0\", // show focus on outside of track\n \"transition-transform\",\n \"translate-x-0.5\",\n thumbSizeStyles[size],\n getThumbTranslateStyles(size)\n )}\n />\n </HeadlessSwitch>\n {label && (\n <Label\n className={cn(\n textColorClass(TextColor.Muted),\n textStyles[size],\n \"cursor-pointer\",\n labelClassName\n )}\n >\n {label}\n </Label>\n )}\n {showUnsetHint && (\n <UnsetHint value={checked} hint={\"Click the toggle to set a value\"} />\n )}\n </Field>\n );\n};\n\nToggle.displayName = \"Toggle\";\n","import clsx from \"clsx\";\nimport {\n type CSSProperties,\n type FC,\n type HTMLAttributes,\n type ReactNode,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport radiusStyles from \"@/styles/radius\";\nimport shadowStyles from \"@/styles/shadow\";\nimport {\n Anchor,\n BackgroundColor,\n bgColorClass,\n BorderColor,\n borderColorClass,\n Radius,\n Shadow,\n TextColor,\n textColorClass,\n ZIndex,\n zIndexStyles,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport type TooltipAnchor = Extract<\n Anchor,\n Anchor.Top | Anchor.Right | Anchor.Bottom | Anchor.Left\n>;\n\nexport interface TooltipProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"content\"\n> {\n anchor?: TooltipAnchor;\n content: ReactNode;\n portal?: boolean;\n shadow?: Shadow;\n wrapperClassName?: string;\n}\n\nconst rotatedSquareStyles: Record<TooltipAnchor, string> = {\n [Anchor.Top]: \"bottom-0 left-1/2 -translate-x-1/2 translate-y-1/2\",\n [Anchor.Right]: \"left-0 top-1/2 -translate-x-1/2 -translate-y-1/2\",\n [Anchor.Bottom]: \"top-0 left-1/2 -translate-x-1/2 -translate-y-1/2\",\n [Anchor.Left]: \"right-0 top-1/2 translate-x-1/2 -translate-y-1/2\",\n};\n\nconst ANCHOR_GAP = 8;\n\nfunction getFixedPosition(rect: DOMRect, anchor: TooltipAnchor): CSSProperties {\n switch (anchor) {\n case Anchor.Top:\n return {\n left: rect.left + rect.width / 2,\n top: rect.top - ANCHOR_GAP,\n transform: \"translate(-50%, -100%)\",\n };\n case Anchor.Bottom:\n return {\n left: rect.left + rect.width / 2,\n top: rect.bottom + ANCHOR_GAP,\n transform: \"translateX(-50%)\",\n };\n case Anchor.Right:\n return {\n left: rect.right + ANCHOR_GAP * 2,\n top: rect.top + rect.height / 2,\n transform: \"translateY(-50%)\",\n };\n case Anchor.Left:\n return {\n left: rect.left - ANCHOR_GAP * 2,\n top: rect.top + rect.height / 2,\n transform: \"translate(-100%, -50%)\",\n };\n }\n}\n\nconst rotatedSquareBorderStyles: Record<TooltipAnchor, string> = {\n [Anchor.Top]: \"border-b border-r\",\n [Anchor.Bottom]: \"border-t border-l\",\n [Anchor.Right]: \"border-b border-l\",\n [Anchor.Left]: \"border-t border-r\",\n};\n\nconst RotatedSquare: FC<{ anchor: TooltipAnchor; borderClass: string }> = ({\n anchor,\n borderClass,\n}) => {\n return (\n <div\n className={clsx(\n \"absolute\",\n \"w-2 h-2\",\n \"rotate-45\",\n \"bg-inherit\",\n rotatedSquareBorderStyles[anchor],\n borderClass,\n rotatedSquareStyles[anchor]\n )}\n />\n );\n};\n\n/**\n * A tooltip which appears when hovering over the wrapped content.\n *\n * @example\n * ```tsx\n * <Tooltip content={<Text>Tooltip content goes here</Text>}>\n * <Text>Hover this text to see the tooltip</Text>\n * </Tooltip>\n * ```\n *\n * @param anchor Position to anchor the tooltip relative to its content. See {@link Anchor}.\n * @param content The content of the tooltip.\n * @param children The content which this component wraps; this acts as the element anchor and the hover trigger.\n * @param className `class` overrides to apply to the tooltip panel.\n * @param portal If `true`, renders the tooltip via a React portal into `document.body` with an\n * above-modal z-index, so it escapes ancestor stacking contexts (e.g. inside modals). The default\n * tooltip already uses fixed positioning, so it is never clipped by overflow-hidden/scroll ancestors.\n * @param shadow The shadow to apply to the tooltip. See {@link Shadow}.\n * @param wrapperClassName Additional classes to apply to the outer wrapper element.\n * @param props Additional HTML properties to apply to the component.\n */\nexport const Tooltip: FC<TooltipProps> = ({\n anchor = Anchor.Top,\n content,\n children,\n className,\n portal = false,\n shadow = Shadow.Lg,\n wrapperClassName,\n ...props\n}) => {\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const wrapperRef = useRef<HTMLDivElement>(null);\n const [positionStyle, setPositionStyle] = useState<CSSProperties>({});\n\n const handleMouseEnter = useCallback(() => {\n if (wrapperRef.current) {\n const rect = wrapperRef.current.getBoundingClientRect();\n setPositionStyle(getFixedPosition(rect, anchor));\n }\n setIsOpen(true);\n }, [anchor]);\n\n const handleMouseLeave = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n // Dismisses the tooltip when scrolling is detected; the fixed position is\n // measured on open and would otherwise go stale\n useEffect(() => {\n if (!isOpen) return;\n const handleScroll = (): void => setIsOpen(false);\n window.addEventListener(\"scroll\", handleScroll, {\n passive: true,\n capture: true,\n });\n return () =>\n window.removeEventListener(\"scroll\", handleScroll, { capture: true });\n }, [isOpen]);\n\n const borderClass = borderColorClass(BorderColor.Subtle);\n\n const panelClasses = cn(\n \"w-max\",\n \"py-0.75 px-2.5\",\n \"border\",\n borderClass,\n \"!overflow-visible\",\n bgColorClass(BackgroundColor.Card2),\n textColorClass(TextColor.Primary),\n radiusStyles(Radius.Sm),\n shadowStyles(shadow),\n className\n );\n\n // Fixed positioning keeps the tooltip out of ancestor overflow clipping\n // (e.g. scrollable panel frames) even when rendered inline; portal mode\n // additionally escapes ancestor stacking contexts\n const tooltipPanel = (\n <div\n className={cn(\n \"fixed\",\n zIndexStyles(portal ? ZIndex.AboveModal : ZIndex.High),\n panelClasses\n )}\n style={positionStyle}\n >\n <div className=\"max-w-[500px] break-words\">{content}</div>\n <RotatedSquare anchor={anchor} borderClass={borderClass} />\n </div>\n );\n\n return (\n <div\n {...props}\n ref={wrapperRef}\n className={cn(\"relative\", wrapperClassName)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {children}\n {isOpen &&\n (portal ? createPortal(tooltipPanel, document.body) : tooltipPanel)}\n </div>\n );\n};\n\nTooltip.displayName = \"Tooltip\";\n","import { Tab, TabGroup, TabList, TabPanel, TabPanels } from \"@headlessui/react\";\nimport clsx from \"clsx\";\nimport type { FC, HTMLAttributes, ReactNode } from \"react\";\n\nimport { Tooltip } from \"@/components/Tooltip\";\nimport { textStyles } from \"@/styles/text\";\nimport {\n BackgroundColor,\n bgColorClass,\n BorderColor,\n borderColorClass,\n BrandColor,\n Descriptor,\n ElementState,\n Size,\n TextColor,\n textColorClass,\n TextVariant,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport interface ToggleSwitchTab {\n label: ReactNode;\n content: ReactNode;\n disabled?: boolean;\n tooltip?: ReactNode;\n}\n\nexport enum ToggleSwitchVariant {\n Default = \"default\",\n Soft = \"soft\",\n Full = \"full\",\n Borderless = \"borderless\",\n}\n\nexport type ToggleSwitchSize = Exclude<Size, Size.Lg | Size.Xl>;\n\nexport interface ToggleSwitchProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"children\" | \"onChange\"\n> {\n variant?: ToggleSwitchVariant;\n tabs: Descriptor<ToggleSwitchTab>[];\n defaultIndex?: number;\n index?: number;\n onChange?: (index: number) => void;\n size?: ToggleSwitchSize;\n tabListClassName?: string;\n tabPanelClassName?: string;\n fullWidth?: boolean;\n}\n\nconst tabSizeStyles: Record<ToggleSwitchSize, string> = {\n [Size.Xs]: clsx(textStyles(TextVariant.Xs), \"min-w-5 min-h-5\"),\n [Size.Sm]: clsx(textStyles(TextVariant.Sm), \"min-w-6 min-h-6\"),\n [Size.Md]: clsx(textStyles(TextVariant.Md), \"min-w-7 min-h-7\"),\n};\n\nconst softSizeStyles: Record<ToggleSwitchSize, string> = {\n [Size.Xs]: clsx(\"min-w-5 min-h-5\"),\n [Size.Sm]: clsx(\"min-w-6 min-h-6\"),\n [Size.Md]: clsx(\"min-w-7 min-h-7\"),\n};\n\nconst tabPaddingStyles: Record<ToggleSwitchSize, string> = {\n [Size.Xs]: clsx(\"py-1 px-3\"),\n [Size.Sm]: clsx(\"py-1.5 px-3.75\"),\n [Size.Md]: clsx(\"py-2 px-4\"),\n};\n\nconst tabVariantStyles: Record<ToggleSwitchVariant, string> = {\n [ToggleSwitchVariant.Soft]: clsx(\n \"m-1\",\n \"py-1 px-1.5\",\n \"rounded-sm\",\n textColorClass(BrandColor.Accent, ElementState.Selected)\n ),\n [ToggleSwitchVariant.Default]: clsx(),\n [ToggleSwitchVariant.Full]: clsx(\n textColorClass(TextColor.Primary, ElementState.Selected)\n ),\n [ToggleSwitchVariant.Borderless]: clsx(\n \"bg-transparent\",\n \"hover:bg-transparent\",\n \"data-[selected]:bg-transparent\",\n textColorClass(TextColor.Primary, ElementState.Selected),\n \"data-[selected]:border-b-2\"\n ),\n};\n\nconst getTabBorderRadius = (\n variant: ToggleSwitchVariant,\n isFirst: boolean,\n isLast: boolean\n): string => {\n if (\n variant === ToggleSwitchVariant.Soft ||\n variant === ToggleSwitchVariant.Borderless\n )\n return \"\";\n if (isFirst && isLast) return \"rounded-md\";\n if (isFirst) return \"rounded-l-md\";\n if (isLast) return \"rounded-r-md\";\n return \"\";\n};\n\nconst getTabStyles = (\n variant: ToggleSwitchVariant,\n size: ToggleSwitchSize\n): string => {\n const classNames = [tabVariantStyles[variant], tabSizeStyles[size]];\n\n if (variant !== ToggleSwitchVariant.Soft) {\n classNames.push(tabPaddingStyles[size]);\n } else {\n classNames.push(softSizeStyles[size]);\n }\n\n return clsx(...classNames);\n};\n\nconst getTabListBorderStyles = (variant: ToggleSwitchVariant): string[] => {\n if (variant === ToggleSwitchVariant.Borderless) return [];\n if (variant === ToggleSwitchVariant.Soft) return [];\n return [\"border\", borderColorClass(BorderColor.CardElevated)];\n};\n\nconst getTabTextColorClass = (selected: boolean): string => {\n if (selected) return textColorClass(TextColor.Primary, ElementState.Selected);\n return cn(\n // TODO - this is a hack. But it might be the least bad option.\n // override global FO css that targets <button>; secondary only when not hovered\n \"!text-content-text-secondary hover:!text-content-text-primary\"\n );\n};\n\n/**\n * A component which supports rendering a tabbed content container.\n *\n * This component enforces mutual exclusivity in active tabs, and only the content for the active tab is visible.\n *\n * @example\n * ```tsx\n * const MyComponent = () => {\n * const tabs: Descriptor<ToggleSwitchTab>[] = useMemo(() => [\n * {id: \"1\", data: {label: \"Tab 1\", content: \"Tab 1 content\"}}\n * {id: \"2\", data: {label: \"Tab 2\", content: \"Tab 2 content\"}}\n * {id: \"3\", data: {label: \"Tab 3\", content: \"Tab 3 content\"}}\n * ],\n * []\n * );\n *\n * return (\n * <ToggleSwitch\n * tabs={tabs}\n * defaultIndex={0}\n * onChange={(activeIndex: number) => console.log(`Switched to tab index ${activeIndex}`)}\n * />\n * );\n * };\n * ```\n *\n * @param tabs List of component descriptors which will be used to create {@link ToggleSwitchTab} children.\n * Each tab supports optional `disabled` and `tooltip` fields. See {@link ToggleSwitchTab}.\n * @param variant Variant of the tabs.\n * The variants have the following behaviors:\n * - {@link ToggleSwitchVariant.Default} - tabs are bordered and have visible boundaries;\n * the active tab has a distinct background from inactive tabs.\n * - {@link ToggleSwitchVariant.Soft} - tabs are not bordered;\n * the active tab has a distinct background and is highlighted in an accent color.\n * - {@link ToggleSwitchVariant.Full} - similar to {@link ToggleSwitchVariant.Default} and expands to fill\n * its container.\n * - {@link ToggleSwitchVariant.Borderless} - tabs are not bordered; the active tab has a bottom border.\n * See {@link ToggleSwitchVariant}.\n * @param defaultIndex The index of the tab which should be considered active when the component first renders (uncontrolled).\n * @param index The active tab index for controlled usage; when set it drives the active tab and overrides `defaultIndex`.\n * @param onChange Callback triggered when the active tab changes.\n * @param size Size of the tabs; this controls the text size and padding. See {@link Size}.\n * @param fullWidth If `true`, the tab group will fill the width of their container.\n * @param tabListClassName `class` overrides to apply to the tabs.\n * @param tabPanelClassName `class` overrides to apply to the active content container.\n * @param props Additional HTML properties to apply to the tab group.\n */\nexport const ToggleSwitch: FC<ToggleSwitchProps> = ({\n tabs,\n variant = ToggleSwitchVariant.Default,\n defaultIndex = 0,\n index,\n onChange,\n size = Size.Sm,\n fullWidth,\n tabListClassName,\n tabPanelClassName,\n ...props\n}) => {\n return (\n <TabGroup\n // `index` (controlled) wins when provided; otherwise fall back to\n // `defaultIndex` (uncontrolled). Headless UI ignores `selectedIndex` when\n // it is `undefined`, so passing both keeps the existing default behavior.\n selectedIndex={index}\n defaultIndex={defaultIndex}\n onChange={onChange}\n {...props}\n >\n <TabList\n className={cn(\n \"toggle-switch-tab-list\",\n \"flex flex-nowrap items-center\",\n \"rounded-md\",\n fullWidth ? \"w-full\" : \"w-fit\",\n ...getTabListBorderStyles(variant),\n tabListClassName\n )}\n >\n {tabs.map(({ id, data }, index) => {\n const isFirst = index === 0;\n const isLast = index === tabs.length - 1;\n const tabClassName = ({ selected }: { selected: boolean }): string =>\n cn(\n \"cursor-pointer\",\n \"flex-1\",\n \"flex items-center justify-center\",\n \"whitespace-nowrap\",\n \"font-medium\",\n \"outline-none\",\n \"transition-colors\",\n \"bg-transparent\",\n bgColorClass(BackgroundColor.CardElevated, ElementState.Selected),\n getTabTextColorClass(selected),\n data.disabled && \"hover:!text-content-text-secondary\",\n \"data-[focus]:outline-none\",\n \"data-[disabled]:opacity-50\",\n \"data-[disabled]:cursor-not-allowed\",\n getTabBorderRadius(variant, isFirst, isLast),\n getTabStyles(variant, size)\n );\n\n const tab = (\n <Tab disabled={data.disabled} className={tabClassName}>\n {data.label}\n </Tab>\n );\n\n return data.tooltip ? (\n <Tooltip\n key={id}\n content={data.tooltip}\n wrapperClassName=\"flex-1 flex\"\n portal\n >\n {tab}\n </Tooltip>\n ) : (\n <div key={id} className=\"flex-1 flex\">\n {tab}\n </div>\n );\n })}\n </TabList>\n <TabPanels className={cn(tabPanelClassName)}>\n {tabs.map(({ id, data }) => (\n <TabPanel key={id} className={cn(\"focus:outline-none\")}>\n {data.content}\n </TabPanel>\n ))}\n </TabPanels>\n </TabGroup>\n );\n};\n\nToggleSwitch.displayName = \"ToggleSwitch\";\n","/**\n * Copyright 2017-2026, Voxel51, Inc.\n */\n\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\n\nconst clamp = (\n lock: boolean,\n pos: number,\n delta: number,\n max: number\n): number => (lock ? pos : Math.max(0, Math.min(max, pos + delta)));\n\nexport interface UseDraggableOptions {\n /** Initial offset from the left edge of the bounding container. Accepts any CSS length (e.g. `0`, `\"10%\"`, `\"2rem\"`). Default `0`. */\n initialX?: string | number;\n /** Initial offset from the top edge of the bounding container. Accepts any CSS length (e.g. `0`, `\"10%\"`, `\"2rem\"`). Default `0`. */\n initialY?: string | number;\n /** Lock horizontal (x-axis) movement. Default `false`. */\n lockX?: boolean;\n /** Lock vertical (y-axis) movement. Default `false`. */\n lockY?: boolean;\n /**\n * When `true`, bounds are computed against the viewport (`window.innerWidth` /\n * `window.innerHeight`) instead of the element's parent. Use together with\n * `position: fixed`. Default `false`.\n */\n portal?: boolean;\n /**\n * Called after every drag move with the new pixel position.\n * Always delivers pixel values regardless of what type `initialX`/`initialY` were.\n */\n onPositionChange?: (pos: { x: number; y: number }) => void;\n}\n\nexport interface UseDraggableReturn {\n /** Current `{ x, y }` position. Before the first drag this reflects the initial CSS value; after the first drag it is always a pixel number. */\n position: { x: string | number; y: string | number };\n /** `true` while the user is actively dragging. */\n isDragging: boolean;\n /** Attach to the element that should be repositioned. */\n containerRef: React.RefObject<HTMLElement | null>;\n /**\n * `onMouseDown` handler for the drag-handle element.\n * Only has an effect when both `lockX` and `lockY` are not both `true`.\n */\n handleDragStart: (e: React.MouseEvent) => void;\n}\n\n/**\n * Hook that provides drag-to-reposition behaviour for a floating element.\n *\n * The hook tracks mouse interactions and keeps the element within the bounds of\n * either its nearest parent element or the viewport (when `portal` is `true`).\n *\n * @example\n * ```tsx\n * const { position, isDragging, containerRef, handleDragStart } = useDraggable({\n * initialX: 20,\n * initialY: 100,\n * });\n *\n * return (\n * <div\n * ref={containerRef}\n * data-dragging={isDragging || undefined}\n * style={{ position: \"absolute\", left: position.x, top: position.y }}\n * >\n * <button onMouseDown={handleDragStart}>drag me</button>\n * </div>\n * );\n * ```\n */\nexport const useDraggable = ({\n initialX = 0,\n initialY = 0,\n lockX = false,\n lockY = false,\n portal = false,\n onPositionChange,\n}: UseDraggableOptions = {}): UseDraggableReturn => {\n const canDrag = !(lockX && lockY);\n\n const [position, setPosition] = useState<{\n x: string | number;\n y: string | number;\n }>({ x: initialX, y: initialY });\n const [isDragging, setIsDragging] = useState(false);\n\n const containerRef = useRef<HTMLElement | null>(null);\n const dragStartRef = useRef<{\n clientX: number;\n clientY: number;\n pos: { x: number; y: number };\n }>({\n clientX: 0,\n clientY: 0,\n pos: { x: 0, y: 0 },\n });\n // Mutable mirror of position so handleDragStart can read the current numeric\n // position without being listed as a useCallback dependency.\n const positionRef = useRef<{ x: string | number; y: string | number }>({\n x: initialX,\n y: initialY,\n });\n\n const handleDragStart = useCallback(\n (e: React.MouseEvent) => {\n if (!canDrag) return;\n e.preventDefault();\n e.stopPropagation();\n setIsDragging(true);\n const el = containerRef.current;\n const cur = positionRef.current;\n // For numeric positions use the tracked value (avoids jsdom offsetLeft=0).\n // For CSS string positions (e.g. \"4rem\", \"22%\") read offsetLeft/offsetTop\n // so the browser-resolved pixel value is used as the drag origin.\n dragStartRef.current = {\n clientX: e.clientX,\n clientY: e.clientY,\n pos: {\n x: typeof cur.x === \"number\" ? cur.x : (el?.offsetLeft ?? 0),\n y: typeof cur.y === \"number\" ? cur.y : (el?.offsetTop ?? 0),\n },\n };\n },\n [canDrag]\n );\n\n const handleMouseMove = useCallback(\n (e: MouseEvent) => {\n const el = containerRef.current;\n const fallback = {\n clientWidth: window.innerWidth,\n clientHeight: window.innerHeight,\n };\n const parent = portal ? fallback : (el?.parentElement ?? fallback);\n\n const toolbarW = el?.offsetWidth ?? 0;\n const toolbarH = el?.offsetHeight ?? 0;\n const { clientX, clientY, pos } = dragStartRef.current;\n\n const nextX = clamp(\n lockX,\n pos.x,\n e.clientX - clientX,\n parent.clientWidth - toolbarW\n );\n const nextY = clamp(\n lockY,\n pos.y,\n e.clientY - clientY,\n parent.clientHeight - toolbarH\n );\n\n positionRef.current = { x: nextX, y: nextY };\n setPosition({ x: nextX, y: nextY });\n onPositionChange?.({ x: nextX, y: nextY });\n },\n [lockX, lockY, portal, onPositionChange]\n );\n\n useEffect(() => {\n if (!isDragging) return;\n const handleMouseUp = (): void => setIsDragging(false);\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n return () => {\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n };\n }, [isDragging, handleMouseMove]);\n\n return { position, isDragging, containerRef, handleDragStart };\n};\n","import { createContext, useContext } from \"react\";\n\nimport { Orientation } from \"@/types\";\n\nexport const OrientationContext = createContext<Orientation>(\n Orientation.Column\n);\n\nexport const useOrientationContext = (): Orientation =>\n useContext(OrientationContext);\n","// Copyright 2017-2026, Voxel51, Inc.\n\nimport {\n useCallback,\n useState,\n CSSProperties,\n HTMLAttributes,\n JSX,\n RefObject,\n ReactNode,\n} from \"react\";\n\nimport { DragHandleIcon } from \"@/components/Icons\";\nimport { Stack } from \"@/components/Stack\";\nimport radiusStyles from \"@/styles/radius\";\nimport shadowStyles from \"@/styles/shadow\";\nimport {\n Align,\n BackgroundColor,\n BorderColor,\n borderColorClass,\n ElementState,\n getColorCssVar,\n IconColor,\n Orientation,\n Radius,\n Spacing,\n Shadow,\n textColorClass,\n ZIndex,\n zIndexStyles,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\nimport { useDraggable } from \"@/util/useDraggable\";\n\nimport { OrientationContext } from \"./context\";\n\nexport interface ToolbarProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"children\"\n> {\n children: ReactNode;\n /** Layout direction for groups and actions. Default `Orientation.Column`. */\n orientation?: Orientation;\n /** Lock horizontal (x-axis) movement. Default `false`. */\n lockX?: boolean;\n /** Lock vertical (y-axis) movement. Default `false`. */\n lockY?: boolean;\n /** Initial offset from the left edge of the parent container. Accepts any CSS length (e.g. `20`, `\"10%\"`, `\"2rem\"`). Default `20`. */\n xOffset?: string | number;\n /** Initial offset from the top edge of the parent container. Accepts any CSS length (e.g. `20`, `\"10%\"`, `\"2rem\"`). Default `20`. */\n yOffset?: string | number;\n /** Stacking layer for the toolbar. Default `ZIndex.AboveModal`. */\n zIndex?: ZIndex;\n /** Whether the toolbar is rendered. Default `true`. */\n visible?: boolean;\n /**\n * Called after every drag move with the new pixel position.\n * Use this to persist the toolbar's position across remounts.\n */\n onPositionChange?: (pos: { x: number; y: number }) => void;\n}\n\nconst DEFAULT_X_OFFSET = 20;\nconst DEFAULT_Y_OFFSET = 20;\n\n/**\n * A generic floating, draggable toolbar.\n *\n * Completely abstract — knows nothing about segmentation, 3D, or any specific\n * domain. Compose it with `ToolbarGroup` and `ToolbarAction` to build any\n * tool palette.\n *\n * Double-clicking the drag handle collapses the toolbar to just the handle.\n *\n * @param props.children - Tool groups and actions to render inside the toolbar.\n * @param props.orientation - Layout direction for groups and actions. Default `Orientation.Column`.\n * @param props.lockX - Lock horizontal (x-axis) movement. Default `false`.\n * @param props.lockY - Lock vertical (y-axis) movement. Default `false`.\n * @param props.xOffset - Initial offset from the left edge of the parent container. Accepts any CSS length (e.g. `20`, `\"10%\"`, `\"2rem\"`). Default `20`.\n * @param props.yOffset - Initial offset from the top edge of the parent container. Accepts any CSS length (e.g. `20`, `\"10%\"`, `\"2rem\"`). Default `20`.\n * @param props.zIndex - Stacking layer for the toolbar. Default `ZIndex.AboveModal`.\n * @param props.visible - Whether the toolbar is rendered. Default `true`.\n * @param props.onPositionChange - Called after every drag move with the new pixel position.\n * @param props - Any additional `HTMLDivElement` attributes (e.g. `data-testid`, `aria-label`) are\n * forwarded to the root `div`. Internal `onPointerDown`, `onClick`, and `onKeyDown` handlers that\n * call `stopPropagation` are merged with any consumer-provided handlers.\n *\n * @example\n * ```tsx\n * <Toolbar orientation={Orientation.Column} xOffset={20} yOffset={100}>\n * <ToolbarGroup label=\"Tool\">\n * <ToolbarAction active>\n * <BrushIcon />\n * </ToolbarAction>\n * </ToolbarGroup>\n * </Toolbar>\n * ```\n */\nexport const Toolbar = ({\n children,\n orientation = Orientation.Column,\n lockX = false,\n lockY = false,\n xOffset = DEFAULT_X_OFFSET,\n yOffset = DEFAULT_Y_OFFSET,\n zIndex = ZIndex.AboveModal,\n className,\n style,\n visible = true,\n onPointerDown,\n onClick,\n onKeyDown,\n onPositionChange,\n ...props\n}: ToolbarProps): JSX.Element | null => {\n const canDrag = !(lockX && lockY);\n\n const { position, isDragging, containerRef, handleDragStart } = useDraggable({\n initialX: xOffset,\n initialY: yOffset,\n lockX,\n lockY,\n onPositionChange,\n });\n\n const [isCollapsed, setIsCollapsed] = useState(false);\n const [collapsedSize, setCollapsedSize] = useState<number | null>(null);\n\n const handleDragHandleDoubleClick = useCallback(() => {\n setIsCollapsed((prev) => {\n if (!prev) {\n const el = containerRef.current;\n setCollapsedSize(\n orientation === Orientation.Column\n ? (el?.offsetWidth ?? null)\n : (el?.offsetHeight ?? null)\n );\n } else {\n setCollapsedSize(null);\n }\n return !prev;\n });\n }, [containerRef, orientation]);\n\n if (!visible) return null;\n\n const dragHandleClass = cn(\n \"flex items-center justify-center\",\n \"cursor-grab group-data-dragging:cursor-grabbing\",\n textColorClass(IconColor.Emphasis),\n radiusStyles(Radius.Md),\n orientation === Orientation.Column\n ? \"self-stretch py-2 px-1 [&_svg]:rotate-90\"\n : \"self-stretch px-2 py-1.5\",\n !isCollapsed && orientation === Orientation.Column && \"pb-0\",\n !isCollapsed && orientation === Orientation.Row && \"pr-0\"\n );\n\n const containerClass = cn(\n \"group absolute flex select-none\",\n orientation === Orientation.Column ? \"flex-col\" : \"flex-row\",\n zIndexStyles(zIndex),\n \"border\",\n borderColorClass(BorderColor.Strong),\n radiusStyles(Radius.Md),\n \"backdrop-blur-sm\",\n shadowStyles(Shadow.Md),\n shadowStyles(Shadow.Xl, ElementState.Dragging),\n \"transition-[opacity,box-shadow] data-dragging:transition-none\",\n className\n );\n\n const containerStyle: CSSProperties = {\n left: position.x,\n top: position.y,\n backgroundColor: `color-mix(in srgb, var(${getColorCssVar(BackgroundColor.Card2)}) 85%, transparent)`,\n ...(isCollapsed && collapsedSize !== null\n ? orientation === Orientation.Column\n ? { width: collapsedSize }\n : { height: collapsedSize }\n : {}),\n ...style,\n };\n\n const toolbar = (\n <OrientationContext.Provider value={orientation}>\n <div\n ref={containerRef as RefObject<HTMLDivElement>}\n role=\"toolbar\"\n aria-orientation={\n orientation === Orientation.Column ? \"vertical\" : \"horizontal\"\n }\n data-dragging={isDragging || undefined}\n className={containerClass}\n style={containerStyle}\n onPointerDown={(e) => {\n e.stopPropagation();\n onPointerDown?.(e);\n }}\n onClick={(e) => {\n e.stopPropagation();\n onClick?.(e);\n }}\n onKeyDown={(e) => {\n e.stopPropagation();\n onKeyDown?.(e);\n }}\n {...props}\n >\n {canDrag && (\n <div\n role=\"button\"\n tabIndex={0}\n aria-label=\"Drag to reposition toolbar\"\n onMouseDown={handleDragStart}\n onDoubleClick={handleDragHandleDoubleClick}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n handleDragHandleDoubleClick();\n }\n }}\n className={dragHandleClass}\n >\n <DragHandleIcon />\n </div>\n )}\n {!isCollapsed && (\n <Stack\n orientation={orientation}\n align={Align.Center}\n spacing={Spacing.Xs}\n className=\"p-1.5\"\n >\n {children}\n </Stack>\n )}\n </div>\n </OrientationContext.Provider>\n );\n\n return toolbar;\n};\n\nToolbar.displayName = \"Toolbar\";\n","/**\n * Copyright 2017-2026, Voxel51, Inc.\n *\n * A single clickable icon-button within a `Toolbar`.\n */\n\nimport { Button } from \"@headlessui/react\";\nimport {\n CSSProperties,\n ComponentPropsWithoutRef,\n forwardRef,\n ReactNode,\n MouseEvent,\n} from \"react\";\n\nimport radiusStyles from \"@/styles/radius\";\nimport {\n ActionColor,\n bgColorClass,\n BorderColor,\n ElementState,\n getColorCssVar,\n IconColor,\n Radius,\n textColorClass,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nexport interface ToolbarActionProps extends Omit<\n ComponentPropsWithoutRef<\"button\">,\n \"onClick\"\n> {\n children: ReactNode;\n active?: boolean;\n disabled?: boolean;\n onClick?: (e: MouseEvent) => void;\n}\n\nconst toolbarActionClass = (\n isInteractive: boolean,\n className?: string\n): string =>\n cn(\n \"size-10 flex items-center justify-center transition-all\",\n radiusStyles(Radius.Md),\n isInteractive &&\n bgColorClass(ActionColor.SecondaryHover, ElementState.Hover),\n \"data-[disabled]:opacity-50\",\n \"data-[disabled]:cursor-not-allowed\",\n \"outline-none\",\n \"data-[focus]:ring-2\",\n `data-[focus]:ring-[var(${getColorCssVar(BorderColor.Focus)})]`,\n \"data-[focus]:ring-offset-1\",\n className\n );\n\nconst iconClass = (active: boolean, isInteractive: boolean): string =>\n cn(\n \"size-full flex items-center justify-center\",\n active\n ? textColorClass(IconColor.BrandAccent)\n : textColorClass(IconColor.Default),\n isInteractive && textColorClass(IconColor.Emphasis, ElementState.Hover)\n );\n\n/**\n * A single clickable icon-button within a `Toolbar`.\n *\n * @param active Whether the action is currently active/selected.\n * @param disabled Whether the action is disabled.\n * @param title Native title attribute for a basic tooltip. Callers can wrap with any tooltip component they prefer.\n * @param aria-label Accessible label for screen readers. Prefer this over `title` for a11y.\n * @param className Optional additional classes to apply to the button.\n * @param onClick Click handler.\n * @param children Icon content rendered inside the button.\n *\n * @example\n * ```tsx\n * <ToolbarAction active={tool === \"brush\"} onClick={() => setTool(\"brush\")} aria-label=\"Brush\">\n * <BrushIcon />\n * </ToolbarAction>\n * ```\n */\nexport const ToolbarAction = forwardRef<HTMLButtonElement, ToolbarActionProps>(\n (\n {\n children,\n active = false,\n disabled = false,\n className,\n onClick,\n style,\n ...rest\n },\n ref\n ) => {\n const isInteractive = !disabled && !active;\n\n const activeStyle: CSSProperties | undefined = active\n ? {\n backgroundColor: `color-mix(in srgb, var(${getColorCssVar(IconColor.BrandAccent)}) 20%, transparent)`,\n }\n : undefined;\n\n return (\n <Button\n ref={ref}\n disabled={disabled}\n aria-pressed={active}\n onClick={onClick}\n className={toolbarActionClass(isInteractive, className)}\n style={{ ...activeStyle, ...style }}\n {...rest}\n >\n <div className={iconClass(active, isInteractive)}>{children}</div>\n </Button>\n );\n }\n);\n\nToolbarAction.displayName = \"ToolbarAction\";\n","/**\n * Copyright 2017-2026, Voxel51, Inc.\n *\n * A group of `ToolbarAction` items within a `Toolbar`.\n */\n\nimport { HTMLAttributes, JSX, ReactNode } from \"react\";\n\nimport { Stack } from \"@/components/Stack\";\nimport {\n Align,\n BorderColor,\n borderColorClass,\n Orientation,\n Spacing,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nimport { useOrientationContext } from \"./context\";\n\nexport interface ToolbarGroupProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n \"children\"\n> {\n children: ReactNode;\n}\n\n/**\n * A group of `ToolbarAction` items within a `Toolbar`.\n *\n * Reads orientation from `OrientationContext` — no need to pass it explicitly.\n * A divider is automatically rendered after each group; the last group's divider is hidden.\n *\n * @param children `ToolbarAction` items to render within the group.\n * @param props Additional `HTMLDivElement` attributes (e.g. `data-testid`, `aria-label`) forwarded to the root element.\n *\n * @example\n * ```tsx\n * <ToolbarGroup aria-label=\"Draw\">\n * <ToolbarAction active={tool === \"brush\"} onClick={() => setTool(\"brush\")}>\n * <BrushIcon />\n * </ToolbarAction>\n * </ToolbarGroup>\n * ```\n */\nexport const ToolbarGroup = ({\n children,\n className,\n ...props\n}: ToolbarGroupProps): JSX.Element => {\n const orientation = useOrientationContext();\n\n return (\n <div\n className={cn(\n `group/toolbar-group flex gap-${Spacing.Xs}`,\n orientation === Orientation.Column\n ? \"w-full flex-col\"\n : \"h-full flex-row\"\n )}\n >\n <Stack\n role=\"group\"\n orientation={orientation}\n align={Align.Center}\n spacing={Spacing.Xs}\n className={cn(\n orientation !== Orientation.Column && \"self-stretch\",\n className\n )}\n {...props}\n >\n {children}\n </Stack>\n <div\n role=\"separator\"\n className={cn(\n orientation === Orientation.Column\n ? \"w-full my-0.5 border-t-1\"\n : \"h-full mx-0.5 border-l-1\",\n borderColorClass(BorderColor.Strong),\n \"group-last/toolbar-group:hidden\"\n )}\n />\n </div>\n );\n};\n\nToolbarGroup.displayName = \"ToolbarGroup\";\n","import type { ResolvedNode, TreeNode, TreePath } from \"./types\";\n\nconst PATH_SEPARATOR = \"/\";\n\n/**\n * Encode a single node name for use as a path segment. Only `/` and `%`\n * are encoded — the two characters that would break path parsing.\n * All other characters pass through unchanged, keeping paths readable.\n */\nfunction encodeSegment(name: string): string {\n return name.replace(/%/g, \"%25\").replace(/\\//g, \"%2F\");\n}\n\n/**\n * Decode a single encoded path segment back to the original node name.\n * Decoding order is the reverse of encoding: `%2F` first, then `%25`.\n */\nfunction decodeSegment(seg: string): string {\n return seg.replace(/%2F/gi, \"/\").replace(/%25/gi, \"%\");\n}\n\n/**\n * Join an array of (raw, unencoded) node names into a safe path string.\n * Each segment is encoded before joining so slashes in names cannot be\n * mistaken for path separators.\n */\nfunction joinPath(segments: string[]): string {\n return segments.map(encodeSegment).join(PATH_SEPARATOR);\n}\n\n/**\n * Converts a {@link TreePath} of raw node names to an internal encoded string.\n * @internal\n */\nexport function toInternalPath(segments: TreePath): string {\n return joinPath([...segments]);\n}\n\n/**\n * Converts an internal encoded path string to a {@link TreePath} of raw node names.\n * @internal\n */\nexport function fromInternalPath(path: string): TreePath {\n return splitPath(path);\n}\n\n/**\n * Whether a node counts as a leaf (has no children).\n *\n * Only `values: undefined` indicates a leaf. `values: []` represents a\n * branch whose children have not yet been loaded (truncated by the\n * source) and is therefore *not* a leaf — it should still render with\n * a chevron.\n */\nfunction nodeIsLeaf(node: TreeNode): boolean {\n return node.values === undefined;\n}\n\n/**\n * Whether a node is selectable given the current mode flags.\n *\n * A node is selectable when:\n * 1. Its `can_select` is not explicitly `false` (defaults to `true`).\n * 2. If `leavesOnly` is enabled, the node must be a leaf.\n */\nexport function isSelectable(node: TreeNode, leavesOnly = false): boolean {\n if (node.can_select === false) return false;\n if (leavesOnly && !nodeIsLeaf(node)) return false;\n return true;\n}\n\n/**\n * Recursively resolves a {@link TreeNode} subtree into a parallel\n * {@link ResolvedNode} tree with pre-computed paths, depths, and\n * selectability flags.\n *\n * @param root The root node of the tree.\n * @param options.leavesOnly When `true`, branch nodes are marked non-selectable.\n * @param loadedChildren Cache of asynchronously fetched children, keyed by\n * slash-delimited path. When a node has `values: []` and a cache entry\n * exists, the cached children are used in place of the empty array.\n * @returns The resolved root node (callers typically render its `children`).\n */\nexport function buildResolvedTree(\n root: TreeNode,\n options: { leavesOnly?: boolean } = {},\n loadedChildren?: Map<string, TreeNode[]>\n): ResolvedNode {\n function walk(\n node: TreeNode,\n parentPath: string,\n depth: number,\n index: number,\n siblingCount: number\n ): ResolvedNode {\n const path = parentPath\n ? `${parentPath}${PATH_SEPARATOR}${encodeSegment(node.name)}`\n : encodeSegment(node.name);\n\n const isLeaf = nodeIsLeaf(node);\n const cached = loadedChildren?.get(path);\n const sourceIsTruncatedBranch =\n Array.isArray(node.values) && node.values.length === 0;\n const isLazyBranch = sourceIsTruncatedBranch && !cached?.length;\n\n const childValues = isLeaf\n ? []\n : node.values?.length\n ? node.values\n : (cached ?? []);\n const children = childValues.map((child, i) =>\n walk(child, path, depth + 1, i, childValues.length)\n );\n\n return {\n node,\n path,\n depth,\n selectable: isSelectable(node, options.leavesOnly),\n isLeaf,\n isLazyBranch,\n children,\n posinset: index + 1,\n setsize: siblingCount,\n };\n }\n\n return walk(root, \"\", 0, 0, 1);\n}\n\n/**\n * Filters a resolved tree for a search query, returning a pruned copy of the\n * tree that contains only:\n * - Matched nodes (case-insensitive name substring match, any node)\n * - Every ancestor of a match (force-expanded so the match is visible)\n * - Siblings of each match (rendered but subtrees pruned)\n * - Direct children of each match (rendered collapsed)\n *\n * Returns `null` when no nodes match the query.\n */\nexport function filterTreeForQuery(\n resolved: ResolvedNode,\n query: string\n): { tree: ResolvedNode; forceOpenPaths: Set<string> } | null {\n const lowerQuery = query.toLowerCase();\n\n const matchedPaths = new Set<string>();\n\n function collectMatches(node: ResolvedNode): void {\n if (node.node.name.toLowerCase().includes(lowerQuery)) {\n matchedPaths.add(node.path);\n }\n for (const child of node.children) {\n collectMatches(child);\n }\n }\n\n collectMatches(resolved);\n\n if (matchedPaths.size === 0) return null;\n\n const includedPaths = new Set<string>();\n const forceOpenPaths = new Set<string>();\n\n function addAncestors(path: string): void {\n const segments = splitPath(path);\n for (let i = 0; i < segments.length - 1; i++) {\n const current = joinPath(segments.slice(0, i + 1));\n includedPaths.add(current);\n forceOpenPaths.add(current);\n }\n }\n\n for (const matchPath of matchedPaths) {\n includedPaths.add(matchPath);\n addAncestors(matchPath);\n }\n\n function addSubtree(node: ResolvedNode): void {\n includedPaths.add(node.path);\n for (const child of node.children) {\n addSubtree(child);\n }\n }\n\n function findNode(\n root: ResolvedNode,\n path: string\n ): ResolvedNode | undefined {\n if (root.path === path) return root;\n for (const child of root.children) {\n const found = findNode(child, path);\n if (found) return found;\n }\n return undefined;\n }\n\n for (const matchPath of matchedPaths) {\n const matchNode = findNode(resolved, matchPath);\n if (matchNode) {\n addSubtree(matchNode);\n }\n }\n\n function pruneTree(node: ResolvedNode): ResolvedNode {\n const filteredChildren = node.children\n .filter((child) => includedPaths.has(child.path))\n .map((child, i, arr) => {\n const pruned = pruneTree(child);\n return { ...pruned, posinset: i + 1, setsize: arr.length };\n });\n\n return { ...node, children: filteredChildren };\n }\n\n return { tree: pruneTree(resolved), forceOpenPaths };\n}\n\n/**\n * Resolves a {@link TreePath} back to the corresponding\n * {@link TreeNode} in the original tree.\n *\n * @returns The matching node, or `undefined` if the path doesn't match.\n *\n * @example\n * ```ts\n * const node = getNodeByPath(root, [\"vehicle_type\", \"car\", \"make\", \"Honda\"]);\n * // node?.name === \"Honda\"\n * ```\n */\nexport function getNodeByPath(\n root: TreeNode,\n path: TreePath\n): TreeNode | undefined {\n if (path.length === 0) return undefined;\n\n if (path[0] !== root.name) return undefined;\n\n let current: TreeNode = root;\n for (let i = 1; i < path.length; i++) {\n const child = current.values?.find((v) => v.name === path[i]);\n if (!child) return undefined;\n current = child;\n }\n\n return current;\n}\n\n/**\n * Internal variant of {@link getNodeByPath} that accepts an encoded\n * internal path string. Used by `TreeSelect.tsx` to resolve nodes from\n * the encoded paths stored on {@link ResolvedNode}.\n * @internal\n */\nexport function getNodeByInternalPath(\n root: TreeNode,\n internalPath: string\n): TreeNode | undefined {\n return getNodeByPath(root, splitPath(internalPath));\n}\n\n/**\n * Splits an internal encoded path string into decoded node-name segments.\n * @internal\n */\nfunction splitPath(path: string): string[] {\n if (!path) return [];\n return path.split(PATH_SEPARATOR).map(decodeSegment);\n}\n\n/**\n * Returns the parent of an internal encoded path by stripping the last\n * segment, or `undefined` for root-level paths (single segment).\n * @internal\n */\nexport function getParentPath(path: string): string | undefined {\n const idx = path.lastIndexOf(PATH_SEPARATOR);\n return idx === -1 ? undefined : path.slice(0, idx);\n}\n\n/**\n * Depth-first walk of a resolved tree returning nodes in DOM render order.\n * Skips the root itself (callers render `root.children`). For each child,\n * includes the child, then if `isOpen(child.path)` returns true, recurses\n * into its children. This mirrors exactly what `TreeItem` renders.\n */\nexport function flattenVisible(\n root: ResolvedNode,\n isOpen: (path: string) => boolean\n): ResolvedNode[] {\n const result: ResolvedNode[] = [];\n\n function walk(node: ResolvedNode): void {\n result.push(node);\n if (!node.isLeaf && isOpen(node.path)) {\n for (const child of node.children) {\n walk(child);\n }\n }\n }\n\n for (const child of root.children) {\n walk(child);\n }\n\n return result;\n}\n\n/**\n * Collects the paths of every non-leaf (branch) node in a resolved tree.\n * Useful for resolving `defaultExpanded: true` into a concrete set of paths.\n */\nexport function collectBranchPaths(root: ResolvedNode): Set<string> {\n const paths = new Set<string>();\n\n function walk(node: ResolvedNode): void {\n if (!node.isLeaf) {\n paths.add(node.path);\n for (const child of node.children) {\n walk(child);\n }\n }\n }\n\n for (const child of root.children) {\n walk(child);\n }\n\n return paths;\n}\n\n/**\n * Formats a {@link TreePath} as a human-readable breadcrumb string.\n *\n * @example\n * ```ts\n * formatBreadcrumb([\"vehicle_type\", \"car\", \"make\", \"Honda\"]);\n * // \"vehicle_type / car / make / Honda\"\n *\n * formatBreadcrumb([\"music\", \"rock\", \"AC/DC\"]);\n * // \"music / rock / AC/DC\"\n * ```\n */\nexport function formatBreadcrumb(path: TreePath): string {\n return path.join(\" / \");\n}\n","import React, { type FC } from \"react\";\n\nimport { Checkbox } from \"@/components/Checkbox\";\nimport { Icon } from \"@/components/Icons/Icon\";\nimport { Stack } from \"@/components/Stack\";\nimport { Text } from \"@/components/Text\";\nimport radiusStyles from \"@/styles/radius\";\nimport {\n Align,\n BackgroundColor,\n BrandColor,\n bgColorClass,\n ElementState,\n IconName,\n Justify,\n Orientation,\n Radius,\n Size,\n Spacing,\n TextColor,\n TextVariant,\n textColorClass,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nimport { fromInternalPath } from \"./tree\";\nimport type { RenderTreeLabel, ResolvedNode } from \"./types\";\nimport type { UseTreeReturn } from \"./useTree\";\n\nconst DEPTH_INDENT = \"var(--spacing-md)\";\n\nexport interface TreeItemViewProps {\n resolved: ResolvedNode;\n tree: UseTreeReturn;\n query?: string;\n multiSelect?: boolean;\n onRetryLoad?: (path: string) => void;\n renderLabel?: RenderTreeLabel;\n}\n\nfunction highlightMatch(text: string, query?: string): React.ReactNode {\n if (!query) return text;\n\n const idx = text.toLowerCase().indexOf(query.toLowerCase());\n if (idx === -1) return text;\n\n const before = text.slice(0, idx);\n const match = text.slice(idx, idx + query.length);\n const after = text.slice(idx + query.length);\n\n return (\n <>\n {before}\n <span className={textColorClass(BrandColor.Primary)}>{match}</span>\n {after}\n </>\n );\n}\n\n/**\n * Renders a single node row. The parent renders a flat list of all visible\n * nodes (via `tree.visibleNodes`), so this component never recurses.\n * Depth-based indentation produces the visual tree hierarchy.\n * All state is driven by the `tree` hook — this component is purely\n * presentational.\n *\n * @internal Shared by TreeSelectPanel and TreeBody.\n */\nexport const TreeItem: FC<TreeItemViewProps> = ({\n resolved,\n tree,\n query,\n multiSelect,\n onRetryLoad,\n renderLabel,\n}) => {\n const { node, path, depth } = resolved;\n const isBranch = !resolved.isLeaf;\n const isSelected = tree.isSelected(resolved);\n const isActive = tree.isActive(path);\n const effectiveOpen = tree.isOpen(path);\n const nodeLoadState = tree.getLoadState(path);\n\n const showIndeterminate =\n !!multiSelect &&\n isBranch &&\n !isSelected &&\n tree.hasSelectedDescendant(resolved);\n\n const itemProps = tree.getItemProps(resolved);\n const textColor = node.deprecated ? TextColor.Muted : TextColor.Primary;\n\n const indentStyle = {\n paddingLeft: `calc(${depth - 1} * ${DEPTH_INDENT} + var(--spacing-xs))`,\n };\n\n const rowClasses = cn(\n \"flex-nowrap\",\n \"py-1\",\n radiusStyles(Radius.Sm),\n \"cursor-pointer\",\n bgColorClass(BackgroundColor.Card1),\n isSelected && bgColorClass(BackgroundColor.Selected),\n bgColorClass(BackgroundColor.CardElevated, ElementState.Hover),\n bgColorClass(BackgroundColor.CardElevated, ElementState.Active)\n );\n\n const chevronButton = (\n iconName: IconName,\n extraClassName: string,\n props: ReturnType<typeof tree.getChevronProps> | null,\n onClick?: (e: React.MouseEvent) => void\n ): React.ReactElement => (\n <button\n type=\"button\"\n tabIndex={-1}\n {...(props ?? {})}\n onClick={onClick ?? props?.onClick}\n className={cn(\n \"group\",\n \"cursor-pointer\",\n \"shrink-0 flex items-center justify-center size-5 rounded-full\",\n bgColorClass(BackgroundColor.CardElevated, ElementState.Hover)\n )}\n >\n <Icon\n name={iconName}\n size={Size.Sm}\n className={cn(\n \"text-content-text-secondary\",\n !extraClassName && \"group-hover:text-content-text-primary\",\n extraClassName\n )}\n />\n </button>\n );\n\n let chevron: React.ReactNode;\n if (!isBranch) {\n chevron = <span className=\"size-5 shrink-0\" />;\n } else if (nodeLoadState === \"loading\") {\n chevron = chevronButton(IconName.Spinner, \"animate-spin\", null, (e) => {\n e.stopPropagation();\n e.preventDefault();\n });\n } else if (nodeLoadState === \"error\") {\n chevron = chevronButton(\n IconName.Refresh,\n textColorClass(BrandColor.Primary),\n null,\n (e) => {\n e.stopPropagation();\n e.preventDefault();\n onRetryLoad?.(path);\n }\n );\n } else {\n chevron = chevronButton(\n IconName.ChevronRight,\n effectiveOpen ? \"rotate-90\" : \"\",\n tree.getChevronProps(resolved)\n );\n }\n\n const defaultLabel = (\n <Text\n variant={TextVariant.Sm}\n color={textColor}\n className=\"whitespace-nowrap\"\n >\n {highlightMatch(node.name, query)}\n </Text>\n );\n\n const labelContent = (\n <>\n <Stack orientation={Orientation.Column} className=\"min-w-0 flex-1\">\n <Stack align={Align.Center} spacing={Spacing.Xs}>\n {chevron}\n {multiSelect && (resolved.selectable || showIndeterminate) && (\n <div className=\"pr-1\">\n <Checkbox\n checked={isSelected}\n indeterminate={showIndeterminate}\n size={Size.Sm}\n radius={Radius.Xs}\n className=\"pointer-events-none\"\n />\n </div>\n )}\n {renderLabel ? (\n <div className=\"min-w-0 flex-1\">\n {renderLabel(node, fromInternalPath(path), defaultLabel)}\n </div>\n ) : (\n defaultLabel\n )}\n </Stack>\n {node.description && (\n <Text\n variant={TextVariant.Xs}\n color={TextColor.Tertiary}\n className=\"whitespace-nowrap\"\n style={{\n paddingLeft: `calc(var(--spacing-md) + var(--spacing-xs) * 2)`,\n }}\n >\n {node.description}\n </Text>\n )}\n </Stack>\n\n {!multiSelect && (\n <span\n className={cn(\n \"size-5 shrink-0 flex items-center\",\n textColorClass(BrandColor.Primary)\n )}\n >\n {isSelected && <Icon name={IconName.Check} size={Size.Sm} />}\n </span>\n )}\n </>\n );\n\n return (\n <div {...itemProps} aria-level={depth}>\n <Stack\n align={Align.Center}\n justify={Justify.Between}\n spacing={Spacing.Md}\n className={rowClasses}\n style={indentStyle}\n data-active={isActive || undefined}\n >\n {labelContent}\n </Stack>\n </div>\n );\n};\n\nTreeItem.displayName = \"TreeItem\";\n","import { type FC, type KeyboardEvent, type Ref } from \"react\";\n\nimport { Icon } from \"@/components/Icons\";\nimport { inputStyle } from \"@/components/Input\";\nimport { Stack } from \"@/components/Stack\";\nimport {\n Align,\n BackgroundColor,\n bgColorClass,\n ElementState,\n Size,\n TextColor,\n textColorClass,\n} from \"@/types\";\nimport { IconName } from \"@/types/icons\";\nimport { cn } from \"@/util/classes\";\n\nexport interface TreeSearchInputProps {\n value: string;\n onChange: (value: string) => void;\n onKeyDown: (e: KeyboardEvent) => void;\n inputRef: Ref<HTMLInputElement>;\n activeDescendantId?: string;\n}\n\n/**\n * Sticky search bar rendered at the top of a tree panel.\n * Owns the magnifier icon, text input, and clear button.\n *\n * @internal Shared by TreeSelectPanel and TreeBody.\n */\nexport const TreeSearchInput: FC<TreeSearchInputProps> = ({\n value,\n onChange,\n onKeyDown,\n inputRef,\n activeDescendantId,\n}) => {\n return (\n <div className={cn(\"shrink-0 p-1.5\", bgColorClass(BackgroundColor.Card1))}>\n <Stack align={Align.Center} className=\"relative\">\n <span className=\"pointer-events-none absolute left-2.5 flex items-center\">\n <Icon\n name={IconName.Search}\n size={Size.Sm}\n className={textColorClass(TextColor.Tertiary)}\n />\n </span>\n <input\n ref={inputRef}\n type=\"text\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n onMouseDown={(e) => e.stopPropagation()}\n onKeyDown={onKeyDown}\n aria-label=\"Search tree\"\n aria-activedescendant={activeDescendantId}\n placeholder=\"Search...\"\n className={cn(inputStyle({ disabled: false }), \"w-full px-8\")}\n />\n {value && (\n <button\n type=\"button\"\n aria-label=\"Clear search\"\n onClick={() => {\n onChange(\"\");\n if (inputRef && typeof inputRef === \"object\") {\n inputRef.current?.focus();\n }\n }}\n className={cn(\n \"group\",\n \"absolute right-1 flex items-center justify-center\",\n \"p-[5px]\",\n \"cursor-pointer\",\n \"rounded-full\",\n \"transition-[background-color] duration-150\",\n bgColorClass(BackgroundColor.Card2, ElementState.Hover)\n )}\n >\n <Icon\n name={IconName.Close}\n size={Size.Sm}\n className={cn(\n textColorClass(TextColor.Secondary),\n \"group-hover:text-content-text-primary\",\n \"transition-colors duration-150\"\n )}\n />\n </button>\n )}\n </Stack>\n </div>\n );\n};\n\nTreeSearchInput.displayName = \"TreeSearchInput\";\n","import { useVirtualizer } from \"@tanstack/react-virtual\";\nimport { type FC, type RefObject, useCallback, useEffect, useRef } from \"react\";\n\nimport { Stack } from \"@/components/Stack\";\nimport { Text } from \"@/components/Text\";\nimport { Justify, TextColor, TextVariant } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nimport { TreeItem } from \"./TreeItem\";\nimport { TreeSearchInput } from \"./TreeSearchInput\";\nimport type { RenderTreeLabel } from \"./types\";\nimport type { UseTreeReturn } from \"./useTree\";\n\nconst ROW_HEIGHT_ESTIMATE = 36;\nconst VIRTUALIZER_OVERSCAN = 8;\n\nexport interface TreeBodyProps {\n tree: UseTreeReturn;\n query: string;\n onQueryChange: (q: string) => void;\n debouncedQuery: string;\n filteredTree: boolean;\n multiSelect?: boolean;\n onRetryLoad?: (path: string) => void;\n searchInputRef: RefObject<HTMLInputElement | null>;\n /** When false, the search input is hidden and the wrapper becomes the keyboard focus target. */\n showSearch?: boolean;\n /**\n * When `true`, hovering the tree focuses the search input (or wrapper)\n * so keyboard navigation works without a click. Only safe inside a\n * transient surface like the TreeSelect dropdown — an embedded TreeView\n * must not steal focus from the rest of the page. When `false`, hover\n * only retargets focus that is already inside the tree.\n * @default false\n */\n focusOnHover?: boolean;\n /** Custom label renderer forwarded to each {@link TreeItem}. */\n renderLabel?: RenderTreeLabel;\n className?: string;\n}\n\n/**\n * Shared tree rendering body: virtualizer + optional search input + empty state.\n *\n * Owns no chrome (border, shadow, z-index, portal). The parent\n * (`TreeSelectPanel` or `TreeView`) provides that.\n *\n * @internal Shared by TreeSelectPanel and TreeView.\n */\nexport const TreeBody: FC<TreeBodyProps> = ({\n tree,\n query,\n onQueryChange,\n debouncedQuery,\n filteredTree,\n multiSelect,\n onRetryLoad,\n searchInputRef,\n showSearch = true,\n focusOnHover = false,\n renderLabel,\n className,\n}) => {\n const scrollRef = useRef<HTMLDivElement>(null);\n\n const rowVirtualizer = useVirtualizer({\n count: tree.visibleNodes.length,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => ROW_HEIGHT_ESTIMATE,\n overscan: VIRTUALIZER_OVERSCAN,\n getItemKey: (index) => tree.visibleNodes[index].path,\n });\n\n useEffect(() => {\n if (!tree.activePath) return;\n const idx = tree.visibleNodes.findIndex((n) => n.path === tree.activePath);\n if (idx >= 0) {\n rowVirtualizer.scrollToIndex(idx, { align: \"auto\" });\n }\n }, [tree.activePath, tree.visibleNodes, rowVirtualizer]);\n\n const noMatches = debouncedQuery && !filteredTree;\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const handleMouseEnter = useCallback(() => {\n if (\n !focusOnHover &&\n !wrapperRef.current?.contains(document.activeElement)\n ) {\n return;\n }\n if (showSearch) {\n searchInputRef.current?.focus({ preventScroll: true });\n } else {\n wrapperRef.current?.focus({ preventScroll: true });\n }\n }, [focusOnHover, showSearch, searchInputRef]);\n\n return (\n <div\n ref={wrapperRef}\n className={cn(\"flex flex-col overflow-hidden outline-none\", className)}\n onMouseEnter={handleMouseEnter}\n {...(!showSearch && {\n tabIndex: 0,\n onKeyDown: tree.handleKeyDown,\n \"aria-activedescendant\": tree.activeDescendantId,\n })}\n >\n {showSearch && (\n <TreeSearchInput\n value={query}\n onChange={onQueryChange}\n onKeyDown={tree.handleKeyDown}\n inputRef={searchInputRef}\n activeDescendantId={tree.activeDescendantId}\n />\n )}\n\n <div ref={scrollRef} className=\"flex-1 min-h-0 overflow-auto\">\n <div className={cn(\"p-1.5\", showSearch && \"pt-0\")}>\n {noMatches ? (\n <Stack justify={Justify.Center}>\n <Text\n variant={TextVariant.Sm}\n color={TextColor.Tertiary}\n className=\"px-3 py-2\"\n >\n No matches found\n </Text>\n </Stack>\n ) : (\n <div\n style={{\n height: rowVirtualizer.getTotalSize(),\n minWidth: \"100%\",\n position: \"relative\",\n }}\n >\n {rowVirtualizer.getVirtualItems().map((virtualRow) => {\n const node = tree.visibleNodes[virtualRow.index];\n return (\n <div\n key={node.path}\n ref={rowVirtualizer.measureElement}\n data-index={virtualRow.index}\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n minWidth: \"100%\",\n transform: `translateY(${virtualRow.start}px)`,\n }}\n >\n <TreeItem\n resolved={node}\n tree={tree}\n query={filteredTree ? query : undefined}\n multiSelect={multiSelect}\n onRetryLoad={onRetryLoad}\n renderLabel={renderLabel}\n />\n </div>\n );\n })}\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nTreeBody.displayName = \"TreeBody\";\n","import { FloatingPortal } from \"@floating-ui/react\";\nimport {\n type CSSProperties,\n type FC,\n type ReactElement,\n type ReactNode,\n type RefObject,\n} from \"react\";\n\nimport radiusStyles from \"@/styles/radius\";\nimport shadowStyles from \"@/styles/shadow\";\nimport {\n BackgroundColor,\n bgColorClass,\n BorderColor,\n borderColorClass,\n Radius,\n Shadow,\n ZIndex,\n zIndexStyles,\n} from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nimport { TreeBody } from \"./TreeBody\";\nimport type { UseTreeReturn } from \"./useTree\";\n\nfunction getZIndexClass(zIndex?: ZIndex, portal?: boolean): string {\n if (portal) {\n return zIndexStyles(ZIndex.AboveModal);\n }\n if (zIndex) {\n return zIndexStyles(zIndex);\n }\n return zIndexStyles(ZIndex.High);\n}\n\nfunction PortalWrapper({\n portal,\n children,\n}: {\n portal?: boolean;\n children: ReactNode;\n}): ReactElement {\n if (portal) {\n return <FloatingPortal>{children}</FloatingPortal>;\n }\n return <>{children}</>;\n}\n\nexport interface TreeSelectPanelProps {\n floatingRef: (node: HTMLElement | null) => void;\n floatingStyles: CSSProperties;\n portal?: boolean;\n zIndex?: ZIndex;\n panelId: string;\n query: string;\n onQueryChange: (q: string) => void;\n debouncedQuery: string;\n searchInputRef: RefObject<HTMLInputElement | null>;\n tree: UseTreeReturn;\n filteredTree: boolean;\n multiSelect?: boolean;\n onRetryLoad?: (path: string) => void;\n panelMaxHeight?: string;\n}\n\n/**\n * Floating panel for TreeSelect. Provides the dropdown shell (border,\n * shadow, z-index, portal, max-height) and delegates the tree body\n * rendering to {@link TreeBody}.\n *\n * @internal For use by TreeSelect.\n */\nexport const TreeSelectPanel: FC<TreeSelectPanelProps> = ({\n floatingRef,\n floatingStyles,\n portal,\n zIndex,\n panelId,\n query,\n onQueryChange,\n debouncedQuery,\n searchInputRef,\n tree,\n filteredTree,\n multiSelect,\n onRetryLoad,\n panelMaxHeight,\n}) => {\n return (\n <PortalWrapper portal={portal}>\n <div\n ref={floatingRef}\n id={panelId}\n role=\"tree\"\n aria-label=\"Tree selection\"\n style={{ ...floatingStyles, maxHeight: panelMaxHeight ?? \"18rem\" }}\n className={cn(\n \"flex flex-col overflow-hidden\",\n \"border\",\n borderColorClass(BorderColor.Default),\n bgColorClass(BackgroundColor.Card1),\n getZIndexClass(zIndex, portal),\n radiusStyles(Radius.Lg),\n shadowStyles(Shadow.Lg),\n \"focus:outline-none\"\n )}\n >\n <TreeBody\n tree={tree}\n query={query}\n onQueryChange={onQueryChange}\n debouncedQuery={debouncedQuery}\n filteredTree={filteredTree}\n multiSelect={multiSelect}\n onRetryLoad={onRetryLoad}\n searchInputRef={searchInputRef}\n showSearch\n focusOnHover\n />\n </div>\n </PortalWrapper>\n );\n};\n\nTreeSelectPanel.displayName = \"TreeSelectPanel\";\n","import React, { type FC, useState } from \"react\";\n\nimport { Icon } from \"@/components/Icons\";\nimport { inputStyle } from \"@/components/Input\";\nimport { Pill } from \"@/components/Pill\";\nimport { Stack } from \"@/components/Stack\";\nimport {\n Align,\n BackgroundColor,\n bgColorClass,\n ElementState,\n Size,\n TextColor,\n textColorClass,\n} from \"@/types\";\nimport { IconName } from \"@/types/icons\";\nimport { cn } from \"@/util/classes\";\n\nexport interface TreeSelectTriggerProps {\n multiSelect?: boolean;\n value: string | string[] | undefined;\n disabled?: boolean;\n placeholder?: string;\n isOpen: boolean;\n panelId: string;\n hasValue: boolean;\n getDisplayValue: (path: string | null) => string;\n onToggle: () => void;\n onClear: () => void;\n onRemoveOne: (path: string) => void;\n}\n\nfunction ChevronIndicator({\n isOpen,\n disabled,\n}: {\n isOpen: boolean;\n disabled?: boolean;\n}): React.ReactElement {\n return (\n <span\n className={cn(\n \"pointer-events-none absolute right-2.5 flex items-center\",\n \"transition-transform duration-150\",\n isOpen ? \"-rotate-90\" : \"rotate-90\",\n disabled && \"opacity-50\"\n )}\n aria-hidden\n >\n <Icon\n name={IconName.ChevronRight}\n size={Size.Sm}\n className={textColorClass(TextColor.Secondary)}\n />\n </span>\n );\n}\n\nfunction ClearButton({\n onClick,\n}: {\n onClick: (e: React.MouseEvent) => void;\n}): React.ReactElement {\n return (\n <button\n type=\"button\"\n aria-label=\"Clear selection\"\n onClick={onClick}\n className={cn(\n \"group\",\n \"absolute right-7 flex items-center justify-center\",\n \"p-[5px]\",\n \"cursor-pointer\",\n \"rounded-full\",\n \"transition-[background-color] duration-150\",\n bgColorClass(BackgroundColor.Card2, ElementState.Hover)\n )}\n >\n <Icon\n name={IconName.Close}\n size={Size.Sm}\n className={cn(\n textColorClass(TextColor.Secondary),\n \"group-hover:text-content-text-primary\",\n \"transition-colors duration-150\"\n )}\n />\n </button>\n );\n}\n\n/**\n * Trigger element for TreeSelect. Renders either a pill-based multi-select\n * trigger or a single-select read-only input, branching on `multiSelect`.\n *\n * @internal For use by TreeSelect.\n */\nexport const TreeSelectTrigger: FC<TreeSelectTriggerProps> = ({\n multiSelect,\n value,\n disabled,\n placeholder,\n isOpen,\n panelId,\n hasValue,\n getDisplayValue,\n onToggle,\n onClear,\n onRemoveOne,\n}) => {\n const [isHovered, setIsHovered] = useState(false);\n\n const handleClear = (e: React.MouseEvent): void => {\n e.stopPropagation();\n onClear();\n };\n\n if (multiSelect) {\n return (\n <div\n role=\"combobox\"\n tabIndex={disabled ? -1 : 0}\n aria-haspopup=\"tree\"\n aria-expanded={isOpen}\n aria-controls={isOpen ? panelId : undefined}\n onClick={() => {\n if (!disabled) onToggle();\n }}\n onKeyDown={(e) => {\n if (disabled) return;\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onToggle();\n }\n }}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n className={cn(\n inputStyle({ disabled }),\n \"relative flex flex-wrap items-center gap-1\",\n \"h-auto min-h-[2.25rem]\",\n disabled ? \"cursor-not-allowed\" : \"cursor-pointer\",\n hasValue ? \"pr-14\" : \"pr-8\"\n )}\n >\n {((value as string[] | undefined) ?? []).map((p) => (\n <Pill\n key={p}\n size={Size.Xs}\n onRemove={disabled ? undefined : () => onRemoveOne(p)}\n backgroundColor={BackgroundColor.CardElevated}\n className=\"py-0\"\n >\n {getDisplayValue(p)}\n </Pill>\n ))}\n {!hasValue && placeholder && (\n <span className={textColorClass(TextColor.Tertiary)}>\n {placeholder}\n </span>\n )}\n <ChevronIndicator isOpen={isOpen} disabled={disabled} />\n {hasValue && !disabled && isHovered && (\n <ClearButton onClick={handleClear} />\n )}\n </div>\n );\n }\n\n return (\n <Stack\n align={Align.Center}\n className=\"relative\"\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n <input\n readOnly\n autoComplete=\"off\"\n role=\"combobox\"\n aria-haspopup=\"tree\"\n aria-expanded={isOpen}\n aria-controls={isOpen ? panelId : undefined}\n disabled={disabled}\n value={getDisplayValue((value as string | undefined) ?? null)}\n onClick={onToggle}\n placeholder={placeholder}\n className={cn(\n inputStyle({ disabled }),\n \"w-full cursor-pointer\",\n hasValue ? \"pr-14\" : \"pr-8\"\n )}\n />\n <ChevronIndicator isOpen={isOpen} disabled={disabled} />\n {hasValue && !disabled && isHovered && (\n <ClearButton onClick={handleClear} />\n )}\n </Stack>\n );\n};\n\nTreeSelectTrigger.displayName = \"TreeSelectTrigger\";\n","import {\n type KeyboardEvent,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport {\n collectBranchPaths,\n flattenVisible,\n getParentPath,\n} from \"@/components/Tree/tree\";\nimport type { ResolvedNode } from \"@/components/Tree/types\";\n\nfunction encodeRowId(prefix: string, path: string): string {\n return `${prefix}-${path.replace(/\\//g, \"-\")}`;\n}\n\nexport interface UseTreeOptions {\n /** Pre-resolved (and optionally pre-filtered) tree. */\n tree: ResolvedNode;\n /**\n * Set of currently selected paths, used for `aria-selected` and `isSelected`.\n * For single-select, pass a Set with one element. For multi-select, pass\n * all selected paths. The hook is mode-agnostic.\n */\n selection?: Set<string>;\n /**\n * Paths that must be treated as expanded regardless of user expansion state\n * (e.g. ancestors of a search match).\n */\n forceOpenPaths?: Set<string>;\n /** Optional id prefix override; defaults to a `useId()` value. */\n idPrefix?: string;\n /** Scroll the active row into view on change. @default true */\n scrollActiveIntoView?: boolean;\n /** Fires on selectable row click and Enter on active selectable row. */\n onSelect?: (path: string) => void;\n /** Fires on Escape key. */\n onEscape?: () => void;\n /**\n * Fires when a branch is newly opened by user interaction\n * (`toggleExpand`, `expand`, or ArrowRight). Does **not** fire for paths\n * opened solely via `forceOpenPaths` (search auto-expand), and fires at\n * most once per path transition from closed → open.\n */\n onExpand?: (path: string) => void;\n /**\n * Async load state for lazy branches. Exposed via `getLoadState` so\n * renderers can show spinners / error icons without direct access to the\n * map.\n */\n loadState?: Map<string, \"loading\" | \"error\">;\n /**\n * Branches to expand initially. User can still collapse them.\n * `resetExpansion()` restores this set rather than clearing to empty.\n *\n * - `Set<string>` — explicit branch paths.\n * - `true` — expand every branch in `tree`.\n * - `false` / `undefined` — expand nothing.\n */\n defaultExpanded?: Set<string> | boolean;\n}\n\nexport interface TreeItemProps {\n id: string;\n role: \"treeitem\";\n \"aria-selected\": boolean | undefined;\n \"aria-expanded\": boolean | undefined;\n \"aria-posinset\": number;\n \"aria-setsize\": number;\n tabIndex: -1;\n \"data-active\": true | undefined;\n onClick: () => void;\n onMouseDown: (e: { preventDefault: () => void }) => void;\n onMouseEnter: () => void;\n}\n\nexport interface TreeChevronProps {\n \"aria-expanded\": boolean;\n \"aria-label\": string;\n onClick: (e: {\n stopPropagation: () => void;\n preventDefault: () => void;\n }) => void;\n onPointerDown: (e: {\n stopPropagation: () => void;\n preventDefault: () => void;\n }) => void;\n onPointerUp: (e: {\n stopPropagation: () => void;\n preventDefault: () => void;\n }) => void;\n}\n\nexport interface UseTreeReturn {\n /** Flat list of visible nodes in DOM render order. */\n visibleNodes: ResolvedNode[];\n\n /** Set of explicitly expanded paths (excludes forceOpenPaths). */\n expandedPaths: Set<string>;\n /** Path of the keyboard-active row, or `null`. */\n activePath: string | null;\n /** DOM id of the active row, for `aria-activedescendant`. */\n activeDescendantId: string | undefined;\n\n /** Toggle a branch open/closed. */\n toggleExpand: (path: string) => void;\n /** Expand a branch (no-op if already open). */\n expand: (path: string) => void;\n /** Collapse a branch (no-op if already closed). */\n collapse: (path: string) => void;\n /** Clear all user-expanded paths. */\n resetExpansion: () => void;\n /** Set the active (keyboard-highlighted) path. */\n setActivePath: (path: string | null) => void;\n\n /** Spread onto the outer `<div role=\"treeitem\">` wrapper. */\n getItemProps: (node: ResolvedNode) => TreeItemProps;\n /** Spread onto the chevron `<button>`. */\n getChevronProps: (node: ResolvedNode) => TreeChevronProps;\n\n /** `onKeyDown` handler for the element that holds virtual focus (e.g. search input). */\n handleKeyDown: (e: KeyboardEvent) => void;\n\n /** Get the DOM id for a given path. */\n rowId: (path: string) => string;\n /** Whether a path is effectively open (expanded or force-open). */\n isOpen: (path: string) => boolean;\n /** Whether a path is the keyboard-active row. */\n isActive: (path: string) => boolean;\n /** Whether a node is the selected value. */\n isSelected: (node: ResolvedNode) => boolean;\n /** Whether any descendant of a node is in the current selection. */\n hasSelectedDescendant: (node: ResolvedNode) => boolean;\n /** Async load state for a path: `\"loading\"`, `\"error\"`, or `undefined`. */\n getLoadState: (path: string) => \"loading\" | \"error\" | undefined;\n}\n\n/**\n * **UI mechanics layer** — sits below {@link useTreeViewState} in the stack.\n *\n * Headless hook that manages pure interaction state: which branches are\n * expanded, which node has the keyboard cursor (`activePath`), keyboard\n * navigation per WAI-ARIA treeview semantics, ARIA prop generation, and\n * scroll-into-view. Owns no data fetching, search, filtering, or selection\n * values — it operates on a pre-resolved, pre-filtered `ResolvedNode` tree\n * that the caller is responsible for producing.\n *\n * {@link useTreeViewState} calls this hook after handling search, debouncing,\n * async `loadChildren`, and selection bookkeeping. Neither `TreeSelect` nor\n * `TreeView` calls `useTree` directly — they receive its return value via\n * `state.tree` from `useTreeViewState`.\n */\nexport function useTree(options: UseTreeOptions): UseTreeReturn {\n const {\n tree,\n selection,\n forceOpenPaths,\n idPrefix: idPrefixOption,\n scrollActiveIntoView = true,\n onSelect,\n onEscape,\n onExpand,\n loadState,\n defaultExpanded,\n } = options;\n\n const generatedPrefix = useId();\n const idPrefix = idPrefixOption ?? generatedPrefix;\n\n const seedPaths = useMemo<Set<string>>(() => {\n if (defaultExpanded instanceof Set) return defaultExpanded;\n if (defaultExpanded === true) return collectBranchPaths(tree);\n return new Set();\n }, [defaultExpanded, tree]);\n\n const seedRef = useRef(seedPaths);\n seedRef.current = seedPaths;\n\n const [expandedPaths, setExpandedPaths] = useState<Set<string>>(\n () => new Set(seedPaths)\n );\n\n const expandedRef = useRef(expandedPaths);\n expandedRef.current = expandedPaths;\n\n const [activePath, setActivePath] = useState<string | null>(null);\n\n const isOpen = useCallback(\n (path: string) =>\n expandedPaths.has(path) || (forceOpenPaths?.has(path) ?? false),\n [expandedPaths, forceOpenPaths]\n );\n\n const visibleNodes = useMemo(\n () => flattenVisible(tree, isOpen),\n [tree, isOpen]\n );\n\n const activeDescendantId = activePath\n ? encodeRowId(idPrefix, activePath)\n : undefined;\n\n // --- Expansion actions ---\n\n const toggleExpand = useCallback(\n (path: string) => {\n const wasOpen = expandedRef.current.has(path);\n setExpandedPaths((prev) => {\n const next = new Set(prev);\n if (next.has(path)) next.delete(path);\n else next.add(path);\n return next;\n });\n if (!wasOpen) onExpand?.(path);\n },\n [onExpand]\n );\n\n const expand = useCallback(\n (path: string) => {\n const wasOpen = expandedRef.current.has(path);\n setExpandedPaths((prev) => {\n if (prev.has(path)) return prev;\n const next = new Set(prev);\n next.add(path);\n return next;\n });\n if (!wasOpen) onExpand?.(path);\n },\n [onExpand]\n );\n\n const collapse = useCallback((path: string) => {\n setExpandedPaths((prev) => {\n if (!prev.has(path)) return prev;\n const next = new Set(prev);\n next.delete(path);\n return next;\n });\n }, []);\n\n const resetExpansion = useCallback(() => {\n setExpandedPaths(new Set(seedRef.current));\n }, []);\n\n // --- Scroll active into view ---\n\n useEffect(() => {\n if (!scrollActiveIntoView || !activePath) return;\n const el = document.getElementById(encodeRowId(idPrefix, activePath));\n if (el && typeof el.scrollIntoView === \"function\") {\n el.scrollIntoView({ block: \"nearest\" });\n }\n }, [activePath, idPrefix, scrollActiveIntoView]);\n\n // --- Per-node helpers ---\n\n const rowId = useCallback(\n (path: string) => encodeRowId(idPrefix, path),\n [idPrefix]\n );\n\n const isActive = useCallback(\n (path: string) => activePath === path,\n [activePath]\n );\n\n const isSelected = useCallback(\n (node: ResolvedNode) => selection?.has(node.path) ?? false,\n [selection]\n );\n\n const ancestorsOfSelected = useMemo<Set<string>>(() => {\n if (!selection) return new Set();\n const acc = new Set<string>();\n for (const path of selection) {\n let parent = getParentPath(path);\n while (parent) {\n acc.add(parent);\n parent = getParentPath(parent);\n }\n }\n return acc;\n }, [selection]);\n\n const hasSelectedDescendant = useCallback(\n (node: ResolvedNode) => ancestorsOfSelected.has(node.path),\n [ancestorsOfSelected]\n );\n\n const getLoadState = useCallback(\n (path: string): \"loading\" | \"error\" | undefined => loadState?.get(path),\n [loadState]\n );\n\n // --- Prop getters ---\n\n const getItemProps = useCallback(\n (node: ResolvedNode): TreeItemProps => {\n const active = activePath === node.path;\n const selected = selection?.has(node.path) ?? false;\n const isBranch = !node.isLeaf;\n\n return {\n id: encodeRowId(idPrefix, node.path),\n role: \"treeitem\",\n \"aria-selected\": node.selectable ? selected : undefined,\n \"aria-expanded\": isBranch ? isOpen(node.path) : undefined,\n \"aria-posinset\": node.posinset,\n \"aria-setsize\": node.setsize,\n tabIndex: -1,\n \"data-active\": active || undefined,\n onClick: () => {\n if (node.selectable) {\n onSelect?.(node.path);\n } else if (isBranch) {\n toggleExpand(node.path);\n }\n },\n onMouseDown: (e) => {\n e.preventDefault();\n },\n onMouseEnter: () => {\n setActivePath(node.path);\n },\n };\n },\n [activePath, selection, idPrefix, isOpen, onSelect, toggleExpand]\n );\n\n const getChevronProps = useCallback(\n (node: ResolvedNode): TreeChevronProps => {\n const open = isOpen(node.path);\n const stop = (e: {\n stopPropagation: () => void;\n preventDefault: () => void;\n }): void => {\n e.stopPropagation();\n e.preventDefault();\n };\n\n return {\n \"aria-expanded\": open,\n \"aria-label\": open\n ? `Collapse ${node.node.name}`\n : `Expand ${node.node.name}`,\n onClick: (e) => {\n stop(e);\n toggleExpand(node.path);\n },\n onPointerDown: stop,\n onPointerUp: stop,\n };\n },\n [isOpen, toggleExpand]\n );\n\n // --- Keyboard handler ---\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n const currentIdx = activePath\n ? visibleNodes.findIndex((n) => n.path === activePath)\n : -1;\n const activeNode = currentIdx >= 0 ? visibleNodes[currentIdx] : null;\n\n switch (e.key) {\n case \"ArrowDown\": {\n e.preventDefault();\n if (currentIdx < visibleNodes.length - 1) {\n setActivePath(visibleNodes[currentIdx + 1].path);\n } else if (currentIdx === -1 && visibleNodes.length > 0) {\n setActivePath(visibleNodes[0].path);\n }\n break;\n }\n\n case \"ArrowUp\": {\n e.preventDefault();\n if (currentIdx > 0) {\n setActivePath(visibleNodes[currentIdx - 1].path);\n }\n break;\n }\n\n case \"ArrowRight\": {\n if (!activeNode || activeNode.isLeaf) break;\n e.preventDefault();\n if (!isOpen(activeNode.path)) {\n toggleExpand(activeNode.path);\n } else if (activeNode.children.length > 0) {\n setActivePath(activeNode.children[0].path);\n }\n break;\n }\n\n case \"ArrowLeft\": {\n if (!activeNode) break;\n e.preventDefault();\n if (!activeNode.isLeaf && isOpen(activeNode.path)) {\n toggleExpand(activeNode.path);\n } else {\n const parentPath = getParentPath(activeNode.path);\n if (parentPath) {\n const parentVisible = visibleNodes.some(\n (n) => n.path === parentPath\n );\n if (parentVisible) {\n setActivePath(parentPath);\n }\n }\n }\n break;\n }\n\n case \"Enter\": {\n if (!activeNode) break;\n e.preventDefault();\n if (activeNode.selectable) {\n onSelect?.(activeNode.path);\n }\n break;\n }\n\n case \"Escape\": {\n e.preventDefault();\n onEscape?.();\n break;\n }\n }\n },\n [activePath, visibleNodes, isOpen, toggleExpand, onSelect, onEscape]\n );\n\n return {\n visibleNodes,\n expandedPaths,\n activePath,\n activeDescendantId,\n\n toggleExpand,\n expand,\n collapse,\n resetExpansion,\n setActivePath,\n\n getItemProps,\n getChevronProps,\n\n handleKeyDown,\n\n rowId,\n isOpen,\n isActive,\n isSelected,\n hasSelectedDescendant,\n getLoadState,\n };\n}\n","import {\n type RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { useDebouncedCallback } from \"@/util/useDebouncedCallback\";\n\nimport {\n buildResolvedTree,\n filterTreeForQuery,\n fromInternalPath,\n getNodeByInternalPath,\n toInternalPath,\n} from \"./tree\";\nimport type { TreeNode, TreePath } from \"./types\";\nimport { type UseTreeReturn, useTree } from \"./useTree\";\n\nexport interface UseTreeViewStateOptions {\n root: TreeNode;\n multiSelect?: boolean;\n leavesOnly?: boolean;\n defaultExpanded?: readonly TreePath[] | boolean;\n loadChildren?: (path: TreePath) => Promise<TreeNode[]>;\n value?: TreePath | readonly TreePath[];\n onChange?: ((p: TreePath | null) => void) | ((p: TreePath[]) => void);\n onEscape?: () => void;\n onAfterSelect?: (internalPath: string) => void;\n /**\n * When provided, the hook treats query as controlled and skips\n * internal query state. The consumer must also provide `onQueryChange`.\n */\n query?: string;\n /** Required when `query` is controlled. */\n onQueryChange?: (q: string) => void;\n scrollActiveIntoView?: boolean;\n /**\n * When `true`, single-select picks reset the search query. Correct for\n * TreeSelect, where selecting closes the panel and the query is stale on\n * re-open. Persistent consumers (TreeView) must leave this off: the tree\n * stays on screen, so wiping the filter — and firing `onQueryChange(\"\")`\n * behind a controlled-query consumer's back — discards user state.\n * @default false\n */\n clearQueryOnSelect?: boolean;\n}\n\nexport interface UseTreeViewStateReturn {\n tree: UseTreeReturn;\n query: string;\n setQuery: (q: string) => void;\n debouncedQuery: string;\n filteredTree: boolean;\n onRetryLoad: (path: string) => void;\n searchInputRef: RefObject<HTMLInputElement | null>;\n clearSelection: () => void;\n}\n\n/**\n * **Data layer** — sits above {@link useTree} in the stack.\n *\n * Shared data-layer hook for tree components. Manages:\n * - Search query (internal or controlled) + 200ms debounce\n * - Async `loadChildren` with loading/error state and retry\n * - `buildResolvedTree` / `filterTreeForQuery` memoization\n * - Selection logic (single/multi) with `toInternalPath` encoding\n * - Wiring into {@link useTree} (the UI mechanics layer below)\n *\n * Consumed by both `TreeSelect` and `TreeView`. Each consumer composes\n * its own UI around the returned `tree` and query state. Neither component\n * calls `useTree` directly — they receive its return value via `state.tree`.\n *\n * @internal\n */\nexport function useTreeViewState(\n options: UseTreeViewStateOptions\n): UseTreeViewStateReturn {\n const {\n root,\n multiSelect,\n leavesOnly = false,\n defaultExpanded,\n loadChildren,\n value,\n onChange,\n onEscape,\n onAfterSelect,\n query: controlledQuery,\n onQueryChange: controlledOnQueryChange,\n scrollActiveIntoView = false,\n clearQueryOnSelect = false,\n } = options;\n\n const isControlledQuery = controlledQuery !== undefined;\n\n const [internalQuery, setInternalQuery] = useState(\"\");\n const [debouncedQuery, setDebouncedQuery] = useState(\"\");\n const searchInputRef = useRef<HTMLInputElement>(null);\n\n const query = isControlledQuery ? controlledQuery : internalQuery;\n\n const setQuery = useCallback(\n (q: string) => {\n if (isControlledQuery) {\n controlledOnQueryChange?.(q);\n } else {\n setInternalQuery(q);\n }\n },\n [isControlledQuery, controlledOnQueryChange]\n );\n\n // --- Async children loading ---\n\n const [loadedChildren, setLoadedChildren] = useState(\n () => new Map<string, TreeNode[]>()\n );\n const [loadState, setLoadState] = useState(\n () => new Map<string, \"loading\" | \"error\">()\n );\n\n useEffect(() => {\n setLoadedChildren(new Map());\n setLoadState(new Map());\n }, [root]);\n\n // --- Debounce ---\n\n const debouncedSetQuery = useDebouncedCallback(setDebouncedQuery, 200);\n\n useEffect(() => {\n if (!query) {\n debouncedSetQuery.cancel();\n setDebouncedQuery(\"\");\n return;\n }\n debouncedSetQuery(query);\n }, [query, debouncedSetQuery]);\n\n // --- Resolved + filtered trees ---\n\n const resolved = useMemo(\n () => buildResolvedTree(root, { leavesOnly }, loadedChildren),\n [root, leavesOnly, loadedChildren]\n );\n\n const filtered = useMemo(\n () =>\n debouncedQuery ? filterTreeForQuery(resolved, debouncedQuery) : null,\n [resolved, debouncedQuery]\n );\n\n // --- Selection ---\n\n const selection = useMemo<Set<string> | undefined>(() => {\n if (multiSelect) {\n const paths = value as readonly TreePath[] | undefined;\n return paths?.length\n ? new Set(paths.map((p) => toInternalPath(p)))\n : undefined;\n }\n const path = value as TreePath | undefined;\n return path?.length ? new Set([toInternalPath(path)]) : undefined;\n }, [multiSelect, value]);\n\n const handleSelect = useCallback(\n (selected: string) => {\n if (multiSelect) {\n const multiOnChange = onChange as\n | ((paths: TreePath[]) => void)\n | undefined;\n const currentInternal = selection ? [...selection] : [];\n const next = currentInternal.includes(selected)\n ? currentInternal.filter((p) => p !== selected)\n : [...currentInternal, selected];\n multiOnChange?.(next.map(fromInternalPath));\n } else {\n if (clearQueryOnSelect) {\n setQuery(\"\");\n }\n const singleOnChange = onChange as\n | ((path: TreePath | null) => void)\n | undefined;\n singleOnChange?.(fromInternalPath(selected));\n }\n onAfterSelect?.(selected);\n },\n [\n multiSelect,\n selection,\n onChange,\n onAfterSelect,\n setQuery,\n clearQueryOnSelect,\n ]\n );\n\n const clearSelection = useCallback(() => {\n setQuery(\"\");\n if (multiSelect) {\n const multiOnChange = onChange as\n | ((paths: TreePath[]) => void)\n | undefined;\n multiOnChange?.([]);\n } else {\n const singleOnChange = onChange as\n | ((path: TreePath | null) => void)\n | undefined;\n singleOnChange?.(null);\n }\n }, [multiSelect, onChange, setQuery]);\n\n // --- Async children handlers ---\n\n const fetchChildren = useCallback(\n (path: string) => {\n setLoadState((prev) => new Map(prev).set(path, \"loading\"));\n loadChildren!(fromInternalPath(path)).then(\n (children) => {\n setLoadedChildren((prev) => new Map(prev).set(path, children));\n setLoadState((prev) => {\n const next = new Map(prev);\n next.delete(path);\n return next;\n });\n },\n () => {\n setLoadState((prev) => new Map(prev).set(path, \"error\"));\n }\n );\n },\n [loadChildren]\n );\n\n const handleExpand = useCallback(\n (path: string) => {\n if (!loadChildren) return;\n if (loadedChildren.has(path)) return;\n if (loadState.get(path) === \"loading\") return;\n const sourceNode = getNodeByInternalPath(root, path);\n if (\n !sourceNode ||\n !Array.isArray(sourceNode.values) ||\n sourceNode.values.length > 0\n )\n return;\n fetchChildren(path);\n },\n [fetchChildren, loadChildren, loadedChildren, loadState, root]\n );\n\n const handleRetryLoad = useCallback(\n (path: string) => {\n setLoadState((prev) => {\n const next = new Map(prev);\n next.delete(path);\n return next;\n });\n if (!loadChildren) return;\n const sourceNode = getNodeByInternalPath(root, path);\n if (\n !sourceNode ||\n !Array.isArray(sourceNode.values) ||\n sourceNode.values.length > 0\n )\n return;\n fetchChildren(path);\n },\n [fetchChildren, loadChildren, root]\n );\n\n // --- Default expansion ---\n\n const internalDefaultExpanded = useMemo<Set<string> | boolean>(() => {\n if (typeof defaultExpanded === \"boolean\" || defaultExpanded === undefined) {\n return defaultExpanded ?? false;\n }\n return new Set(defaultExpanded.map((p) => toInternalPath(p)));\n }, [defaultExpanded]);\n\n // --- useTree ---\n\n const tree = useTree({\n tree: filtered?.tree ?? resolved,\n selection,\n forceOpenPaths: filtered?.forceOpenPaths,\n defaultExpanded: internalDefaultExpanded,\n scrollActiveIntoView,\n onSelect: handleSelect,\n onEscape,\n onExpand: handleExpand,\n loadState,\n });\n\n return {\n tree,\n query,\n setQuery,\n debouncedQuery,\n filteredTree: !!filtered,\n onRetryLoad: handleRetryLoad,\n searchInputRef,\n clearSelection,\n };\n}\n","import {\n autoUpdate,\n flip,\n offset,\n shift,\n size,\n useFloating,\n type Placement,\n} from \"@floating-ui/react\";\nimport { type FC, useCallback, useEffect, useState } from \"react\";\n\nimport { SelectAnchor } from \"@/components/Select\";\nimport { cn } from \"@/util/classes\";\n\nimport { TreeSelectPanel } from \"./TreeSelectPanel\";\nimport { TreeSelectTrigger } from \"./TreeSelectTrigger\";\nimport {\n fromInternalPath,\n getNodeByInternalPath,\n toInternalPath,\n} from \"./tree\";\nimport type { TreePath, TreeSelectProps } from \"./types\";\nimport { useTreeViewState } from \"./useTreeViewState\";\n\nconst ANCHOR_TO_PLACEMENT: Record<SelectAnchor, Placement> = {\n [SelectAnchor.Bottom]: \"bottom\",\n [SelectAnchor.BottomStart]: \"bottom-start\",\n [SelectAnchor.BottomEnd]: \"bottom-end\",\n [SelectAnchor.Top]: \"top\",\n [SelectAnchor.TopStart]: \"top-start\",\n [SelectAnchor.TopEnd]: \"top-end\",\n};\n\n/**\n * A tree-shaped selection control that renders nodes in a\n * searchable dropdown panel styled to match {@link Select}.\n *\n * Supports single-select with full keyboard navigation (ARIA treeview pattern).\n *\n * Paths are represented as {@link TreePath} — ordered arrays of raw node\n * names. No encoding is needed, even when names contain `/` or `%`.\n *\n * @example\n * ```tsx\n * const tree: TreeNode = {\n * name: \"vehicle_type\",\n * values: [\n * { name: \"car\", values: [{ name: \"Honda\" }, { name: \"Toyota\" }] },\n * { name: \"motorcycle\" },\n * ],\n * };\n *\n * const [value, setValue] = useState<TreePath | undefined>();\n *\n * <TreeSelect\n * root={tree}\n * value={value}\n * onChange={(path) => setValue(path ?? undefined)}\n * placeholder=\"Select a vehicle…\"\n * />\n * ```\n */\nexport const TreeSelect: FC<TreeSelectProps> = ({\n root,\n value,\n onChange,\n multiSelect,\n leavesOnly = false,\n disabled,\n placeholder,\n anchor = SelectAnchor.BottomStart,\n portal,\n zIndex,\n panelMaxHeight,\n displayValue: displayValueProp,\n defaultExpanded,\n loadChildren,\n className,\n ...props\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const handleEscape = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n const handleAfterSelect = useCallback(() => {\n if (!multiSelect) {\n setIsOpen(false);\n }\n }, [multiSelect]);\n\n const state = useTreeViewState({\n root,\n value,\n onChange,\n multiSelect,\n leavesOnly,\n defaultExpanded,\n loadChildren,\n onEscape: handleEscape,\n onAfterSelect: handleAfterSelect,\n scrollActiveIntoView: false,\n clearQueryOnSelect: true,\n });\n\n const { refs, floatingStyles } = useFloating({\n placement: ANCHOR_TO_PLACEMENT[anchor],\n open: isOpen,\n middleware: [\n offset(4),\n flip(),\n shift({ padding: 8 }),\n size({\n apply({ rects, elements }) {\n Object.assign(elements.floating.style, {\n minWidth: `${rects.reference.width}px`,\n });\n },\n }),\n ],\n whileElementsMounted: autoUpdate,\n });\n\n const getDisplayValue = useCallback(\n (v: string | null): string => {\n if (!v) return \"\";\n\n const node = getNodeByInternalPath(root, v);\n if (!node) return v;\n\n if (displayValueProp) {\n return displayValueProp(fromInternalPath(v), node);\n }\n\n return node.name;\n },\n [root, displayValueProp]\n );\n\n const toggleOpen = useCallback(() => {\n if (!disabled) setIsOpen((prev) => !prev);\n }, [disabled]);\n\n const handleToggle = useCallback(() => {\n state.setQuery(\"\");\n toggleOpen();\n }, [toggleOpen, state]);\n\n const handleClear = useCallback(() => {\n setIsOpen(false);\n state.clearSelection();\n }, [state]);\n\n // Focus search input when panel opens; initialize active path\n useEffect(() => {\n if (isOpen) {\n window.requestAnimationFrame(() => state.searchInputRef.current?.focus());\n const singleValue = multiSelect ? undefined : value;\n const singleInternal = singleValue?.length\n ? toInternalPath(singleValue)\n : undefined;\n const initial =\n singleInternal &&\n state.tree.visibleNodes.some((n) => n.path === singleInternal)\n ? singleInternal\n : (state.tree.visibleNodes[0]?.path ?? null);\n state.tree.setActivePath(initial);\n } else {\n state.tree.setActivePath(null);\n state.tree.resetExpansion();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- only fire on isOpen toggle\n }, [isOpen]);\n\n // Reset active path when the filtered tree changes\n useEffect(() => {\n if (isOpen && state.debouncedQuery) {\n state.tree.setActivePath(state.tree.visibleNodes[0]?.path ?? null);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- reset on query change only\n }, [state.debouncedQuery]);\n\n useEffect(() => {\n if (!isOpen) return;\n\n const handleClickOutside = (e: MouseEvent): void => {\n const target = e.target as Node;\n const reference = refs.reference.current as Element | null;\n const floating = refs.floating.current;\n if (reference?.contains(target) || floating?.contains(target)) {\n return;\n }\n setIsOpen(false);\n state.setQuery(\"\");\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [isOpen, refs.reference, refs.floating, state]);\n\n const hasValue = !!value?.length;\n\n // Narrow value to its concrete type for each mode. TypeScript loses the\n // discriminated-union narrowing after destructuring, so we re-assert here.\n const multiValue = value as readonly TreePath[] | undefined;\n const singleValue = value as TreePath | undefined;\n\n const removeOne = useCallback(\n (pathToRemove: string) => {\n if (!multiSelect) return;\n const multiOnChange = onChange as\n | ((paths: TreePath[]) => void)\n | undefined;\n const currentInternal = multiValue?.map(toInternalPath) ?? [];\n multiOnChange?.(\n currentInternal.filter((p) => p !== pathToRemove).map(fromInternalPath)\n );\n },\n [multiSelect, multiValue, onChange]\n );\n\n const panelId = state.tree.rowId(\"panel\");\n\n return (\n <div ref={refs.setReference} className={cn(className, \"w-full\")} {...props}>\n <TreeSelectTrigger\n multiSelect={multiSelect}\n value={\n multiSelect\n ? multiValue?.map(toInternalPath)\n : singleValue?.length\n ? toInternalPath(singleValue)\n : undefined\n }\n disabled={disabled}\n placeholder={placeholder}\n isOpen={isOpen}\n panelId={panelId}\n hasValue={hasValue}\n getDisplayValue={getDisplayValue}\n onToggle={handleToggle}\n onClear={handleClear}\n onRemoveOne={removeOne}\n />\n\n {isOpen && (\n <TreeSelectPanel\n floatingRef={refs.setFloating}\n floatingStyles={floatingStyles}\n portal={portal}\n zIndex={zIndex}\n panelMaxHeight={panelMaxHeight}\n panelId={panelId}\n query={state.query}\n onQueryChange={state.setQuery}\n debouncedQuery={state.debouncedQuery}\n searchInputRef={state.searchInputRef}\n tree={state.tree}\n filteredTree={state.filteredTree}\n multiSelect={multiSelect}\n onRetryLoad={state.onRetryLoad}\n />\n )}\n </div>\n );\n};\n\nTreeSelect.displayName = \"TreeSelect\";\n","import { type FC, useCallback } from \"react\";\n\nimport { BackgroundColor, bgColorClass } from \"@/types\";\nimport { cn } from \"@/util/classes\";\n\nimport { TreeBody } from \"./TreeBody\";\nimport { fromInternalPath } from \"./tree\";\nimport type { TreePath, TreeViewProps } from \"./types\";\nimport { useTreeViewState } from \"./useTreeViewState\";\n\n/**\n * A tree-shaped navigation or selection component. Drop it into a sidebar,\n * panel, or inline layout.\n *\n * Supports three modes via the `selectable` prop:\n * - **Navigate (default)**: clicking a leaf fires `onChange` with the\n * path; clicking a branch toggles expansion. No selection state is\n * tracked, no checkboxes, no \"selected\" highlight.\n * - **Single-select** (`selectable={true}`): same as TreeSelect's\n * single-select but always visible.\n * - **Multi-select** (`selectable={true} multiSelect={true}`): same as\n * TreeSelect's multi-select but always visible.\n *\n * @example\n * ```tsx\n * <TreeView root={tree} onChange={(path) => navigate(path)} />\n * ```\n *\n * @example\n * ```tsx\n * <TreeView\n * root={tree}\n * selectable\n * value={selected}\n * onChange={(path) => setSelected(path ?? undefined)}\n * />\n * ```\n */\nexport const TreeView: FC<TreeViewProps> = (props) => {\n const {\n root,\n leavesOnly: leavesOnlyProp,\n defaultExpanded,\n loadChildren,\n showSearch: showSearchProp,\n query: queryProp,\n onQueryChange: onQueryChangeProp,\n renderLabel,\n maxHeight,\n className,\n ...rest\n } = props;\n\n const isSelectable = props.selectable === true;\n const isMulti = isSelectable && props.multiSelect === true;\n\n const handleNavigate = useCallback(\n (internalPath: string) => {\n if (isSelectable) return;\n const onChange = props.onChange as ((p: TreePath) => void) | undefined;\n onChange?.(fromInternalPath(internalPath));\n },\n [isSelectable, props.onChange]\n );\n\n const state = useTreeViewState({\n root,\n value: isSelectable ? props.value : undefined,\n onChange: isSelectable\n ? (props.onChange as\n | ((p: TreePath | null) => void)\n | ((p: TreePath[]) => void)\n | undefined)\n : undefined,\n multiSelect: isMulti,\n leavesOnly: isSelectable ? (leavesOnlyProp ?? false) : true,\n defaultExpanded,\n loadChildren,\n query: queryProp,\n onQueryChange: onQueryChangeProp,\n onAfterSelect: !isSelectable ? handleNavigate : undefined,\n scrollActiveIntoView: true,\n });\n\n const effectiveShowSearch =\n queryProp !== undefined ? false : (showSearchProp ?? true);\n\n // Strip out props that are specific to the three mode variants so they\n // don't leak onto the DOM wrapper via `rest`.\n const {\n selectable: _selectable,\n multiSelect: _multiSelect,\n value: _value,\n onChange: _onChange,\n ...domProps\n } = rest as Record<string, unknown>;\n\n return (\n <div\n role=\"tree\"\n aria-label=\"Tree view\"\n style={{ maxHeight: maxHeight ?? \"100%\" }}\n className={cn(\n \"flex flex-col overflow-hidden\",\n bgColorClass(BackgroundColor.Card1),\n className\n )}\n {...domProps}\n >\n <TreeBody\n tree={state.tree}\n query={state.query}\n onQueryChange={state.setQuery}\n debouncedQuery={state.debouncedQuery}\n filteredTree={state.filteredTree}\n multiSelect={isMulti}\n onRetryLoad={state.onRetryLoad}\n searchInputRef={state.searchInputRef}\n showSearch={effectiveShowSearch}\n renderLabel={renderLabel}\n />\n </div>\n );\n};\n\nTreeView.displayName = \"TreeView\";\n","/**\n * Transition design tokens for the VOODO design system.\n *\n * Three layers:\n * 1. `duration` — how long a transition takes\n * 2. `easing` — the timing curve (how it accelerates / decelerates)\n * 3. `preset` — pre-composed shorthand values for common UI patterns\n *\n * These are compiled into CSS custom properties by the generate-tailwind-theme\n * script and consumed through the TypeScript helpers in `src/types/transition.ts`.\n */\nexport const transitions = {\n /**\n * Duration tokens — semantic names for how long an animation takes.\n *\n * instant (0ms) Use for state that should feel truly immediate.\n * fast (100ms) Micro-interactions: hover highlights, icon swaps.\n * normal (200ms) Default: color, border, and opacity changes.\n * moderate (300ms) Slightly heavier state changes: panel reveals, tooltips.\n * slow (500ms) Deliberate motion: drawers, slide-in panels.\n * deliberate(700ms) Page-level or dramatic transitions.\n */\n duration: {\n instant: \"0ms\",\n fast: \"100ms\",\n normal: \"200ms\",\n moderate: \"300ms\",\n slow: \"500ms\",\n deliberate: \"700ms\",\n },\n\n /**\n * Easing (timing-function) tokens.\n *\n * linear Constant speed. Mechanical feel; suits progress bars/loaders.\n * in Starts slow, accelerates. Best for exits / elements leaving the screen.\n * out Starts fast, decelerates. Best for entrances / elements arriving.\n * in-out Slow start and end. Best for general UI state changes.\n * spring Slight overshoot then settles. Adds energy to interactive elements.\n * sharp Quick in, gradual out. Crisp, snappy feel for menus/overlays.\n */\n easing: {\n linear: \"linear\",\n in: \"cubic-bezier(0.4, 0, 1, 1)\",\n out: \"cubic-bezier(0, 0, 0.2, 1)\",\n \"in-out\": \"cubic-bezier(0.4, 0, 0.2, 1)\",\n spring: \"cubic-bezier(0.34, 1.56, 0.64, 1)\",\n sharp: \"cubic-bezier(0.4, 0, 0.6, 1)\",\n },\n\n /**\n * Pre-composed transition shorthands for common UI patterns.\n * These bake in the right duration + easing for each context so\n * component authors pick semantics, not numbers.\n *\n * colors Background, text, border, fill, and stroke color changes.\n * opacity Fade in/out.\n * transform Scale, translate, and rotate.\n * shadow Box-shadow elevation changes.\n * menu Dropdown / context menu appear and disappear.\n * panel Drawers and slide-in sheets.\n * overlay Modal backdrop fade.\n * all General-purpose catch-all.\n */\n preset: {\n colors:\n \"color 200ms cubic-bezier(0.4, 0, 0.2, 1), background-color 200ms cubic-bezier(0.4, 0, 0.2, 1), border-color 200ms cubic-bezier(0.4, 0, 0.2, 1), fill 200ms cubic-bezier(0.4, 0, 0.2, 1), stroke 200ms cubic-bezier(0.4, 0, 0.2, 1)\",\n opacity: \"opacity 200ms cubic-bezier(0.4, 0, 0.2, 1)\",\n transform: \"transform 200ms cubic-bezier(0, 0, 0.2, 1)\",\n shadow: \"box-shadow 200ms cubic-bezier(0.4, 0, 0.2, 1)\",\n menu: \"opacity 100ms cubic-bezier(0, 0, 0.2, 1), transform 100ms cubic-bezier(0, 0, 0.2, 1)\",\n panel: \"transform 300ms cubic-bezier(0, 0, 0.2, 1)\",\n overlay: \"opacity 200ms cubic-bezier(0.4, 0, 0.2, 1)\",\n all: \"all 200ms cubic-bezier(0.4, 0, 0.2, 1)\",\n },\n} as const;\n"],"names":["DragHandleIcon","className","props","jsx","clsx","SpinnerIcon","jsxs","Align","Anchor","ElementState","withElementState","cssClass","state","ActionColor","BackgroundColor","BorderColor","BrandColor","IconColor","SemanticColor","StatusColor","TextColor","textColorMap","backgroundColorMap","borderColorMap","bgColorClass","color","elementState","getColorCssVar","isEnumValue","value","enumType","borderColorClass","textColorClass","ZIndex","Z_INDEX_VALUES","zIndexStyles","zIndex","HeadingLevel","IconName","Justify","Orientation","Radius","Shadow","Size","Spacing","TextVariant","TransitionDuration","TransitionEasing","TransitionPreset","transitionDuration","duration","transitionEasing","easing","transitionPreset","preset","transitionPresetValue","Variant","cn","classes","twMerge","sizeStyles","Spinner","size","SvgAi","React","SvgActivity","SvgAdd","SvgAnnotate","SvgArrowDown","SvgArrowLeft","SvgArrowRight","SvgArrowUp","SvgArrowUpRight","SvgBlocks","SvgBoxes","SvgCalendarClock","SvgCaretDown","SvgCheck","SvgCheckbox","SvgChecklist","SvgChevronBottom","SvgChevronLeft","SvgChevronRight","SvgChevronTop","SvgCircle","SvgCircleUser","SvgClose","SvgCloud","SvgCloudCog","SvgCode","SvgCog","SvgContact","SvgContentCopy","SvgDatabase","SvgDateRange","SvgDelete","SvgDetection","SvgDownload","SvgDrag","SvgDraw","SvgEdit","SvgEmbeddings","SvgEnter","SvgError","SvgExitWorkspace","SvgExternalLink","SvgFileClock","SvgFineTune","SvgFingerprint","SvgFullscreen","SvgGridView","SvgHistory","SvgIdCard","SvgImageSearch","SvgInfo","SvgInsights","SvgInspect","SvgJson","SvgKey","SvgKeyRound","SvgKeySquare","SvgLabel","SvgLock","SvgLogs","SvgMenu","SvgMoreHorizontal","SvgMoreVertical","SvgMove","SvgNotebookPen","SvgNotes","SvgOrchestrator","SvgPause","SvgPencil","SvgPin","SvgPlay","SvgPolyline","SvgPuzzle","SvgRadio","SvgRedo","SvgRefresh","SvgRemove","SvgReview","SvgSearch","SvgServer","SvgSettings","SvgShieldCheck","SvgSlider","SvgSliders","SvgTag","SvgText","SvgToggle","SvgUndo","SvgUnfoldMore","SvgUnlock","SvgUnsupported","SvgUpload","SvgUser","SvgUsers","SvgUsersRound","SvgVal","SvgVolumeOff","SvgVolumeUp","SvgWarning","SvgWaypoints","SvgWorkflow","SvgWorkspaces","SvgZap","iconMap","ActivityIcon","AddIcon","AIIcon","AnnotateIcon","ArrowDownIcon","ArrowLeftIcon","ArrowRightIcon","ArrowUpIcon","ArrowUpRightIcon","BlocksIcon","BoxesIcon","CalendarClockIcon","CaretDownIcon","CheckIcon","CheckboxIcon","ChecklistIcon","ChevronBottomIcon","ChevronLeftIcon","ChevronRightIcon","ChevronTopIcon","CircleIcon","CircleUserIcon","CloseIcon","CloudIcon","CloudCogIcon","CodeIcon","CogIcon","ContactIcon","ContentCopyIcon","DatabaseIcon","DateRangeIcon","DeleteIcon","DetectionIcon","DownloadIcon","DragIcon","DrawIcon","EditIcon","EmbeddingsIcon","EnterIcon","ErrorIcon","ExitWorkspaceIcon","ExternalLinkIcon","FileClockIcon","FineTuneIcon","FingerprintIcon","FullscreenIcon","GridViewIcon","HistoryIcon","IdCardIcon","ImageSearchIcon","InfoIcon","InsightsIcon","InspectIcon","JSONIcon","KeyIcon","KeyRoundIcon","KeySquareIcon","LabelIcon","LockIcon","LogsIcon","MenuIcon","MoreHorizontalIcon","MoreVerticalIcon","MoveIcon","NotebookPenIcon","NotesIcon","OrchestratorIcon","PauseIcon","PencilIcon","PinIcon","PlayIcon","PolylineIcon","PuzzleIcon","RadioIcon","RedoIcon","RefreshIcon","RemoveIcon","ReviewIcon","SearchIcon","ServerIcon","SettingsIcon","ShieldCheckIcon","SliderIcon","SlidersIcon","TagIcon","TextIcon","ToggleIcon","UndoIcon","UnfoldMoreIcon","UnlockIcon","UnsupportedIcon","UploadIcon","UserIcon","UsersIcon","UsersRoundIcon","VALIcon","VolumeOffIcon","VolumeUpIcon","WarningIcon","WaypointsIcon","WorkflowIcon","WorkspacesIcon","ZapIcon","sizeMap","Icon","name","iconSize","IconComponent","IconWrapper","content","Content","TEXT_STYLES","textStyles","variant","textColor","Text","children","anchorStyles","ToastContainer","anchor","open","Fragment","RADIUS_STYLES","radiusStyles","radius","ActivityToast","icon","message","variantStyles","variantTextStyles","iconStyles","Button","borderless","leadingIcon","trailingIcon","HeadlessButton","SHADOW_STYLES","shadowStyles","shadow","CardBackground","bgColorMap","Card","compact","background","outlined","backgroundColor","alignStyles","justifyStyles","spacingStyles","Stack","align","justify","orientation","spacing","RichCard","action","badge","description","title","Description","text","line","isNullish","UnsetHint","hint","checkmarkSizeStyles","Checkbox","checked","onChange","indeterminate","labelClassName","label","showUnsetHint","showIndeterminate","Field","HeadlessCheckbox","Label","Clickable","useControllableState","initializer","isControlled","internalValue","setInternalValue","useState","resolvedValue","resolvedOnChange","useCallback","useMemo","useDisclosure","defaultOpen","controlledOpen","onOpenChange","setOpen","toggle","Collapsible","header","animated","style","styles","MenuCheckItem","disabled","MenuItem","focus","MenuIconTextItem","subtext","destructive","subtextColor","iconColor","MenuSectionTitle","MenuSeparator","MenuTextItem","menuPanelStyles","ESTIMATED_MENU_SIZE","pickAnchor","cursor","viewport","menu","edge","alignment","ContextMenu","onContextMenu","buttonRef","useRef","closeRef","position","setPosition","setAnchor","e","nextAnchor","flushSync","Menu","close","MenuButton","MenuItems","iconPaddingStyles","iconSizeStyles","paddingLeftStyles","IconPosition","DatepickerIconButton","onClick","ariaLabel","iconName","datePickerInputStyle","error","DatepickerInput","hasValue","inputRef","handleIconClick","inputClasses","DatePicker","selected","dateFormat","minDate","maxDate","placeholderText","showTimeSelect","showTimeSelectOnly","timeIntervals","finalDateFormat","ReactDatePicker","Divider","textProps","isColumn","Line","useLatest","ref","useDragDelta","axis","onDragStart","onDelta","onDragEnd","isDragging","setIsDragging","isDraggingRef","startPosRef","onDragStartRef","onDeltaRef","onDragEndRef","onPointerDown","onPointerMove","current","onPointerUp","useElementSize","setSize","roRef","el","measure","useResizableDrawer","maxSize","invert","onSizeChange","disclosureOptions","contentHeight","setContentHeight","userSize","setUserSize","animating","setAnimating","observeRef","contentElRef","contentRef","autoSize","openSize","openRef","sizeRef","invertRef","maxSizeRef","onSizeChangeRef","dragStartSizeRef","useLayoutEffect","h","prev","delta","adjusted","raw","auto","clamped","handleProps","onTransitionEnd","sideConfig","side","Drawer","mode","isVertical","dragHandleProps","contentWrapperSizeStyle","DropdownAnchor","Dropdown","trigger","portal","panelZIndex","triggerDisabled","isValidElement","isDisabled","DropdownTrigger","EmptyState","FormField","control","FormFieldGroup","Fieldset","elementMap","Heading","level","Element","ImageList","items","renderItem","cols","gap","rowHeight","colWidth","onLoadMore","hasMore","loading","rest","sentinelRef","handleIntersection","entries","entry","useEffect","observer","gridStyle","sentinelStyle","id","data","InputIcon","hasText","InputType","inputStyle","Input","type","HeadlessInput","ListItem","canSelect","onSelected","canDrag","dragHandleListeners","primaryContent","secondaryContent","actions","additionalContent","Pill","isStatus","onRemove","RadioDotIcon","textSizeStyles","dotSizeStyles","Radio","HeadlessRadio","randomString","RadioGroup","options","defaultValue","radioProps","groupName","HeadlessRadioGroup","option","RichButton","active","RichButtonGroup","buttons","exclusive","setActive","activate","newActiveArray","deactivate","elem","buttonProps","SortableListItem","attributes","listeners","setNodeRef","transform","transition","useSortable","CSS","gapStyles","RichList","listItems","draggable","onOrderChange","transientSelected","setTransientSelected","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","onSelect","itemId","isSelected","newSelectionState","v","handleDragEnd","event","over","oldIndex","item","newIndex","newItems","arrayMove","listContent","descriptor","DndContext","closestCenter","SortableContext","verticalListSortingStrategy","Option","ComboboxOption","SelectAnchor","getZIndexClass","Select","query","setQuery","selectionState","setSelectionState","triggerRef","triggerWidth","filteredOptions","opt","handleChange","getDisplayValue","Combobox","ComboboxInput","ComboboxOptions","currentValue","SliderKnob","truncate","precision","factor","cleanFloat","maxDigits","SliderBar","max","min","multi","onChangeCommitted","step","sliderTrackRef","lastValueRef","values","minValue","maxValue","isUnset","getKnobPosition","getKnobValue","xPos","rawValue","stepValue","getRelativeX","mouseX","trackElement","boundingRect","handleDrag","knob","relativePosition","newValue","next","registerKnobDragHandlers","handleMouseMove","handleMouseUp","handleTrackClick","clickPos","clickValue","minKnobPos","maxKnobPos","minKnobDist","maxKnobDist","getRelativeValue","KnobLabel","threshold","relativeValue","displayValue","SliderLabels","knobLabel","maxLabel","minLabel","useDebouncedCallback","callback","delay","debouncedCallback","debounce","nonNull","finite","parsedValue","makeRangeValidator","valueString","clamp","BaseSlider","bare","debounceDelay","labeled","transientValue","setTransientValue","setMinValue","setMaxValue","isValidRange","newMin","newMax","debouncedOnChange","handleMinInputChange","handleMaxInputChange","handleInputCommit","maxNum","minNum","SingleValueSlider","MultiValueSlider","Table","TableRow","isClickable","TableHeader","TableBody","TableCell","TableHead","ResizeBehavior","resizeStyles","TextArea","resize","rows","containerClassName","HeadlessTextarea","TextBadge","Toast","toastContent","trackSizeStyles","thumbSizeStyles","getThumbTranslateStyles","Toggle","HeadlessSwitch","rotatedSquareStyles","ANCHOR_GAP","getFixedPosition","rect","rotatedSquareBorderStyles","RotatedSquare","borderClass","Tooltip","wrapperClassName","isOpen","setIsOpen","wrapperRef","positionStyle","setPositionStyle","handleMouseEnter","handleMouseLeave","handleScroll","panelClasses","tooltipPanel","createPortal","ToggleSwitchVariant","tabSizeStyles","softSizeStyles","tabPaddingStyles","tabVariantStyles","getTabBorderRadius","isFirst","isLast","getTabStyles","classNames","getTabListBorderStyles","getTabTextColorClass","ToggleSwitch","tabs","defaultIndex","index","fullWidth","tabListClassName","tabPanelClassName","TabGroup","TabList","tabClassName","tab","Tab","TabPanels","TabPanel","lock","pos","useDraggable","initialX","initialY","lockX","lockY","onPositionChange","containerRef","dragStartRef","positionRef","handleDragStart","cur","fallback","parent","toolbarW","toolbarH","clientX","clientY","nextX","nextY","OrientationContext","createContext","useOrientationContext","useContext","DEFAULT_X_OFFSET","DEFAULT_Y_OFFSET","Toolbar","xOffset","yOffset","visible","onKeyDown","isCollapsed","setIsCollapsed","collapsedSize","setCollapsedSize","handleDragHandleDoubleClick","dragHandleClass","containerClass","containerStyle","toolbarActionClass","isInteractive","iconClass","ToolbarAction","forwardRef","activeStyle","ToolbarGroup","PATH_SEPARATOR","encodeSegment","decodeSegment","seg","joinPath","segments","toInternalPath","fromInternalPath","path","splitPath","nodeIsLeaf","node","isSelectable","leavesOnly","buildResolvedTree","root","loadedChildren","walk","parentPath","depth","siblingCount","isLeaf","cached","isLazyBranch","childValues","child","i","filterTreeForQuery","resolved","lowerQuery","matchedPaths","collectMatches","includedPaths","forceOpenPaths","addAncestors","matchPath","addSubtree","findNode","found","matchNode","pruneTree","filteredChildren","arr","getNodeByPath","getNodeByInternalPath","internalPath","getParentPath","idx","flattenVisible","result","collectBranchPaths","paths","formatBreadcrumb","DEPTH_INDENT","highlightMatch","before","match","after","TreeItem","tree","multiSelect","onRetryLoad","renderLabel","isBranch","isActive","effectiveOpen","nodeLoadState","itemProps","indentStyle","rowClasses","chevronButton","extraClassName","chevron","defaultLabel","labelContent","TreeSearchInput","activeDescendantId","ROW_HEIGHT_ESTIMATE","VIRTUALIZER_OVERSCAN","TreeBody","onQueryChange","debouncedQuery","filteredTree","searchInputRef","showSearch","focusOnHover","scrollRef","rowVirtualizer","useVirtualizer","n","noMatches","virtualRow","PortalWrapper","FloatingPortal","TreeSelectPanel","floatingRef","floatingStyles","panelId","panelMaxHeight","ChevronIndicator","ClearButton","TreeSelectTrigger","placeholder","onToggle","onClear","onRemoveOne","isHovered","setIsHovered","handleClear","p","encodeRowId","prefix","useTree","selection","idPrefixOption","scrollActiveIntoView","onEscape","onExpand","loadState","defaultExpanded","generatedPrefix","useId","idPrefix","seedPaths","seedRef","expandedPaths","setExpandedPaths","expandedRef","activePath","setActivePath","visibleNodes","toggleExpand","wasOpen","expand","collapse","resetExpansion","rowId","ancestorsOfSelected","acc","hasSelectedDescendant","getLoadState","getItemProps","getChevronProps","stop","handleKeyDown","currentIdx","activeNode","useTreeViewState","loadChildren","onAfterSelect","controlledQuery","controlledOnQueryChange","clearQueryOnSelect","isControlledQuery","internalQuery","setInternalQuery","setDebouncedQuery","q","setLoadedChildren","setLoadState","debouncedSetQuery","filtered","handleSelect","multiOnChange","currentInternal","clearSelection","fetchChildren","handleExpand","sourceNode","handleRetryLoad","internalDefaultExpanded","ANCHOR_TO_PLACEMENT","TreeSelect","displayValueProp","handleEscape","handleAfterSelect","refs","useFloating","offset","flip","shift","rects","elements","autoUpdate","toggleOpen","handleToggle","singleValue","singleInternal","initial","handleClickOutside","target","reference","floating","multiValue","removeOne","pathToRemove","TreeView","leavesOnlyProp","showSearchProp","queryProp","onQueryChangeProp","maxHeight","isMulti","handleNavigate","effectiveShowSearch","_selectable","_multiSelect","_value","_onChange","domProps","transitions"],"mappings":"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"}
|