@keboola/design 1.2.0 → 1.2.1

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.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/classNames.ts","../src/utils/copyToClipboard.ts","../src/utils/createChangeInputEvent.ts","../src/constants/keyCodes.ts","../src/components/Tooltip/TooltipContent.tsx","../src/components/Tooltip/TooltipRoot.tsx","../src/components/Tooltip/TooltipTrigger.tsx","../src/components/Tooltip/Tooltip.tsx","../src/utils/createPrefixedString.ts","../src/utils/escapeStringRegexp.ts","../src/utils/mergeRefs.ts","../src/utils/noop.ts","../src/utils/debounce.ts","../src/utils/isMac.ts","../src/utils/useSHA256.ts","../src/components/Icon/Icon.tsx","../src/components/Icon/index.ts","../src/components/Button/styles.ts","../src/components/Button/Button.tsx","../src/components/Button/ButtonInline.tsx","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/Calendar/Calendar.tsx","../src/components/Popover/PopoverContent.tsx","../src/components/Popover/Popover.tsx","../src/components/DatePicker/DatePicker.tsx","../src/components/ScrollArea/ScrollBar.tsx","../src/components/ScrollArea/ScrollArea.tsx","../src/components/TimePicker/TimePickerButton.tsx","../src/components/TimePicker/utils.ts","../src/components/TimePicker/TimePicker.tsx","../src/components/InputGroup/InputGroupAddon.tsx","../src/components/InputGroup/InputGroupButton.tsx","../src/components/InputGroup/InputGroupInput.tsx","../src/components/InputGroup/InputGroupText.tsx","../src/components/InputGroup/InputGroupTextArea.tsx","../src/components/InputGroup/InputGroup.tsx","../src/components/Input/utils.ts","../src/components/Input/Input.tsx","../src/components/Input/DateInput/helpers.ts","../src/components/Input/DateInput/DateInput.tsx","../src/components/Input/DateRangeInput/helpers.ts","../src/components/Input/DateRangeInput/DateRangeInput.tsx","../src/components/Input/TextInput/TextInput.tsx","../src/components/Input/TimeInput/TimeInput.tsx","../src/components/Label/Label.tsx","../src/components/Card/CardContent.tsx","../src/components/Card/CardHeader.tsx","../src/components/Card/styles.ts","../src/components/Card/CardTitle.tsx","../src/components/Card/Card.tsx","../src/components/Clipboard/Clipboard.tsx","../src/components/FieldBox/FieldBoxDescription.tsx","../src/components/FieldBox/FieldBoxTitle.tsx","../src/components/FieldBox/styles.ts","../src/components/FieldBox/FieldBox.tsx","../src/components/Switch/styles.ts","../src/components/Switch/Switch.tsx","../src/components/HelpBlock/HelpBlock.tsx","../src/components/HoverCard/HoverCardContent.tsx","../src/components/HoverCard/HoverCard.tsx","../src/components/Separator/Separator.tsx","../src/components/RadioGroup/context.ts","../src/components/RadioGroup/Radio.tsx","../src/components/RadioGroup/RadioGroupItemButton.tsx","../src/components/RadioGroup/RadioGroupItem.tsx","../src/components/RadioGroup/RadioGroupSeparator.tsx","../src/components/RadioGroup/RadioGroup.tsx","../src/components/Slider/useInteracting.ts","../src/components/Slider/SliderThumb.tsx","../src/components/Slider/SliderTrack.tsx","../src/components/Slider/Slider.tsx","../src/components/Search/ClearButton.tsx","../src/components/Search/styles.ts","../src/components/Search/utils.ts","../src/components/Search/Search.tsx","../src/components/Search/SearchForm.tsx","../src/components/Select/SelectContent.tsx","../src/components/Select/SelectGroup.tsx","../src/components/Select/SelectItem.tsx","../src/components/Select/SelectLabel.tsx","../src/components/Select/SelectRoot.tsx","../src/components/Select/SelectSeparator.tsx","../src/components/Select/SelectTrigger.tsx","../src/components/Select/Select.tsx","../src/components/Checkbox/styles.ts","../src/components/Checkbox/Checkbox.tsx","../src/components/DropdownMenu/DropdownMenuItemIndicator.tsx","../src/components/DropdownMenu/ItemIcon.tsx","../src/components/DropdownMenu/styles.ts","../src/components/DropdownMenu/DropdownMenuCheckboxItem.tsx","../src/components/DropdownMenu/DropdownMenuContext.tsx","../src/components/DropdownMenu/DropdownMenuContent.tsx","../src/components/DropdownMenu/DropdownMenuItem.tsx","../src/components/DropdownMenu/DropdownMenuItemDescription.tsx","../src/components/DropdownMenu/DropdownMenuLabel.tsx","../src/components/DropdownMenu/DropdownMenuRadioGroup/DropdownMenuRadioGroup.tsx","../src/components/DropdownMenu/DropdownMenuRadioGroup/DropdownMenuRadioItem.tsx","../src/components/DropdownMenu/DropdownMenuSeparator.tsx","../src/components/DropdownMenu/DropdownMenuSub/DropdownMenuSub.tsx","../src/components/DropdownMenu/DropdownMenuSub/DropdownMenuSubContent.tsx","../src/components/DropdownMenu/DropdownMenuSub/DropdownMenuSubTrigger.tsx","../src/components/DropdownMenu/DropdownMenuTrigger.tsx","../src/components/DropdownMenu/DropdownMenu.tsx","../src/components/Modal/ModalBody.tsx","../src/components/Modal/ModalOverlay.tsx","../src/components/Modal/ModalContent.tsx","../src/components/Modal/ModalFooter.tsx","../src/components/Modal/ModalCloseIcon.tsx","../src/components/Modal/ModalDescription.tsx","../src/components/Modal/ModalTitle.tsx","../src/components/Modal/ModalHeader.tsx","../src/components/Modal/ModalIcon.tsx","../src/components/Modal/Modal.tsx","../src/components/FullScreenModal/FullScreenModalBody.tsx","../src/components/Truncated.tsx","../src/components/FullScreenModal/FullScreenModalHeader.tsx","../src/components/FullScreenModal/FullScreenModalRoot.tsx","../src/components/FullScreenModal/FullScreenModal.tsx","../src/components/Popconfirm/context.ts","../src/components/Popconfirm/PopconfirmBody.tsx","../src/components/Popconfirm/PopconfirmCancel.tsx","../src/components/Popconfirm/PopconfirmConfirm.tsx","../src/components/Popconfirm/PopconfirmContent.tsx","../src/components/Popconfirm/PopconfirmFooter.tsx","../src/components/Popconfirm/PopconfirmTrigger.tsx","../src/components/Popconfirm/Popconfirm.tsx","../src/blocks/SplitButton/SplitButton.tsx","../src/components/Sheet/SheetBody.tsx","../src/components/Sheet/SheetOverlay.tsx","../src/components/Sheet/SheetContent.tsx","../src/components/Sheet/SheetFooter.tsx","../src/components/Sheet/SheetHeader.tsx","../src/components/Sheet/SheetTitle.tsx","../src/components/Sheet/Sheet.tsx","../src/components/Sidebar/SidebarProvider/useTransitionPresence.ts","../src/hooks/useElement.ts","../src/hooks/useScrollbarPosition.ts","../src/components/Sidebar/SidebarContent.tsx","../src/components/Sidebar/utils.ts","../src/components/Sidebar/SidebarProvider/context.ts","../src/components/Sidebar/SidebarProvider/useHoverTracking.ts","../src/components/Sidebar/SidebarProvider/useSidebarState.ts","../src/components/Sidebar/SidebarProvider/SidebarProvider.tsx","../src/components/Sidebar/SidebarFillTrigger.tsx","../src/components/Sidebar/SidebarFooter.tsx","../src/components/Sidebar/SidebarGroup/SidebarGroup.tsx","../src/components/Sidebar/SidebarGroup/SidebarGroupContent.tsx","../src/components/Sidebar/SidebarGroup/SidebarGroupAction.tsx","../src/components/Sidebar/SidebarGroup/SidebarGroupLabel.tsx","../src/components/Sidebar/SidebarHeader.tsx","../src/components/Sidebar/SidebarInstanceContext.ts","../src/components/Sidebar/SidebarMenu/SidebarMenu.tsx","../src/components/Sidebar/SidebarMenu/SidebarMenuIcon.tsx","../src/components/Sidebar/SidebarMenu/SidebarMenuButton.tsx","../src/components/Sidebar/SidebarMenu/SidebarMenuItem.tsx","../src/components/Sidebar/SidebarMenu/SidebarMenuAction.tsx","../src/components/Sidebar/SidebarMenu/SidebarSearchInput.tsx","../src/components/Sidebar/SidebarMenu/SidebarMenuCard.tsx","../src/components/Sidebar/SidebarMenu/SidebarMenuBadge.tsx","../src/components/Collapsible/CollapsibleContent.tsx","../src/components/Collapsible/Collapsible.tsx","../src/components/Sidebar/SidebarMenu/SidebarMenuSub.tsx","../src/components/Sidebar/SidebarMenu/SidebarMenuSubItem.tsx","../src/components/Sidebar/useResizeSidebar.ts","../src/components/Sidebar/SidebarResizeHandle.tsx","../src/components/Sidebar/SidebarSeparator.tsx","../src/components/Sidebar/SidebarTrigger.tsx","../src/components/Sidebar/Sidebar.tsx","../src/components/Command/CommandContent.tsx","../src/components/Command/CommandEmpty.tsx","../src/components/Command/CommandGroup.tsx","../src/components/Command/CommandInput.tsx","../src/components/Command/CommandItem/CheckIndicator.tsx","../src/components/Command/CommandItem/CommandItem.tsx","../src/components/Command/CommandList.tsx","../src/components/Command/CommandSeparator.tsx","../src/components/Command/Command.tsx","../src/components/Badge/BadgeAddon.tsx","../src/components/Badge/BadgeButton.tsx","../src/components/Badge/BadgeLabel.tsx","../src/components/Badge/styles.ts","../src/components/Badge/BadgeRoot.tsx","../src/components/Badge/Badge.tsx","../src/components/Combobox/utils.ts","../src/components/Combobox/ComboboxChips.tsx","../src/components/Combobox/ComboboxContent.tsx","../src/components/Combobox/ComboboxEmpty.tsx","../src/components/Combobox/ComboboxInput.tsx","../src/components/Combobox/ComboboxInputGroup.tsx","../src/components/Combobox/ComboboxItemIndicator.tsx","../src/components/Combobox/ComboboxItem.tsx","../src/components/Combobox/ComboboxList.tsx","../src/components/Combobox/ComboboxRoot.tsx","../src/components/Combobox/ComboboxSeparator.tsx","../src/components/Combobox/Group/ComboboxGroup.tsx","../src/components/Combobox/Group/ComboboxGroupLabel.tsx","../src/components/Combobox/Group/ComboboxCollection.tsx","../src/components/Combobox/Combobox.tsx","../src/components/Breadcrumb/BreadcrumbEllipsis.tsx","../src/components/Breadcrumb/BreadcrumbItem.tsx","../src/components/Breadcrumb/BreadcrumbLink.tsx","../src/components/Breadcrumb/BreadcrumbList.tsx","../src/components/Breadcrumb/BreadcrumbPage.tsx","../src/components/Breadcrumb/BreadcrumbSeparator.tsx","../src/components/Breadcrumb/Breadcrumb.tsx","../src/components/Navbar/NavbarContent.tsx","../src/components/Navbar/NavbarFooter.tsx","../src/components/Navbar/NavbarHeader.tsx","../src/components/Navbar/NavbarMenu.tsx","../src/components/Navbar/NavbarMenuAvatar.tsx","../src/components/Navbar/NavbarMenuItemAdornment.tsx","../src/components/Navbar/NavbarMenuButton.tsx","../src/components/Navbar/NavbarMenuItem.tsx","../src/components/Navbar/Navbar.tsx","../src/components/Pagination/PaginationButton.tsx","../src/components/Pagination/PaginationContent.tsx","../src/components/Pagination/PaginationEllipsis.tsx","../src/components/Pagination/PaginationItem.tsx","../src/components/Pagination/PaginationNext.tsx","../src/components/Pagination/PaginationPrevious.tsx","../src/components/Pagination/Pagination.tsx","../src/components/ThemeProvider/AIGradientSvg.tsx","../src/components/ThemeProvider/ThemeProvider.tsx","../src/components/Avatar.tsx","../src/components/MarkedText/utils.ts","../src/components/MarkedText/MarkedText.tsx","../src/components/Toggle/Toggle.tsx","../src/components/Timeline/useLastLineHeight.ts","../src/components/Timeline/TimelineConnector.tsx","../src/components/Timeline/TimelineContent.tsx","../src/components/Timeline/TimelineItem.tsx","../src/components/Timeline/Timeline.tsx","../src/components/Kbd/KbdSeparator.tsx","../src/components/Kbd/KbdGroup.tsx","../src/components/Kbd/styles.ts","../src/components/Kbd/Kbd.tsx","../src/components/Kbd/keyboardKeys.ts","../src/components/Progress/Progress.tsx","../src/components/DiffView/DiffViewMark.tsx","../src/components/DiffView/DiffViewTd.tsx","../src/components/DiffView/DiffViewTh.tsx","../src/components/DiffView/util.ts","../src/components/DiffView/DiffView.tsx","../src/blocks/Textarea/Textarea.tsx","../src/blocks/MultiCombobox/MultiCombobox.tsx","../src/components/FormGroup/context.ts","../src/blocks/ColorInput/utils.ts","../src/blocks/ColorInput/ColorPicker.tsx","../src/blocks/ColorInput/ColorInput.tsx","../src/components/FormGroup/FormGroupColorInput.tsx","../src/components/FormGroup/FormGroupHelp.tsx","../src/blocks/NumberInput/NumberInput.tsx","../src/components/FormGroup/FormGroupNumberInput.tsx","../src/components/FormGroup/FormGroupTextarea.tsx","../src/components/FormGroup/FormGroupTextInput.tsx","../src/components/FormGroup/FormGroup.tsx","../src/components/Link.tsx","../src/components/Tabs.tsx","../src/components/Alert/AlertAction.tsx","../src/components/Alert/AlertCollapsibleIcon.tsx","../src/components/Alert/AlertDescription.tsx","../src/components/Alert/AlertIcon.tsx","../src/components/Alert/AlertRoot.tsx","../src/components/Alert/AlertTitle.tsx","../src/components/Alert/Alert.tsx","../src/blocks/ClipboardButton/ClipboardButton.tsx","../src/blocks/ClipboardButton/ClipboardInline.tsx","../src/components/CodeEditor/ButtonToolbar.tsx","../src/components/CodeEditor/helpers.ts","../src/components/CodeEditor/ToggleComponentHelp.tsx","../src/components/CodeEditor/CodeEditor.tsx","../src/components/CodeEditor/activeQueryHighlight.ts","../src/components/CodeEditor/highlighting.ts","../src/components/CodeEditor/search.ts","../src/components/CodeEditor/SqlEditor.tsx","../src/components/MergeEditor/constants.ts","../src/components/MergeEditor/AcceptControls/AcceptButton.tsx","../src/components/MergeEditor/AcceptControls/AcceptControls.tsx","../src/components/MergeEditor/decorations.ts","../src/components/MergeEditor/MergePane.tsx","../src/components/MergeEditor/useScrollSync.ts","../src/components/MergeEditor/MergeEditor.tsx","../src/components/MergeEditor/PaneHeader.tsx","../src/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.tsx","../src/components/MergeEditor/helpers.ts","../src/components/MergeEditor/useMergeDiff.ts","../src/components/Collapse.tsx","../src/components/CollapsiblePanel.tsx","../src/components/PanelWithDetails.tsx","../src/components/Skeleton/Skeleton.tsx","../src/components/Skeleton/SkeletonList.tsx","../src/components/EmptySearchContent.tsx","../src/components/DotsLoader.tsx","../src/components/Table/TableBody.tsx","../src/components/Table/TableCell.tsx","../src/components/Table/TableFooter.tsx","../src/components/Table/TableHead.tsx","../src/components/Table/TableHeader.tsx","../src/components/Table/TableRow.tsx","../src/components/Table/Table.tsx","../src/components/Resizable/ResizableHandle.tsx","../src/components/Resizable/ResizablePanel.tsx","../src/components/Resizable/ResizablePanelGroup.tsx","../src/components/Toast/ToastAction.tsx","../src/components/Toast/ToastDescription.tsx","../src/components/Toast/ToastDismiss.tsx","../src/components/Toast/ToastDuration.tsx","../src/components/Toast/ToastTitle.tsx","../src/components/Toast/ToastRoot.tsx","../src/components/Toast/toast.tsx","../src/components/Toast/useNotification.tsx","../src/components/Toast/Toaster.tsx","../src/blocks/EmptyConfigurationActionCard/EmptyConfigurationActionCard.tsx","../src/blocks/EmptyState/EmptyState.tsx","../src/blocks/ErrorState/ErrorState.tsx","../src/blocks/PageLayout/PageLayout.tsx","../src/blocks/PageHeader/styles.ts","../src/blocks/PageHeader/PageHeaderDetail.tsx","../src/blocks/PageHeader/PageHeaderIndex.tsx","../src/blocks/PageHeader/PageHeader.tsx","../src/blocks/SearchInput/SearchInput.tsx","../src/blocks/SearchInputWithNavigation/SearchInputWithNavigation.tsx","../src/blocks/Tagger/TagItem.tsx","../src/blocks/Tagger/TagSelectPopover/TagSelectCreateItem.tsx","../src/blocks/Tagger/TagSelectPopover/TagSelectItem.tsx","../src/blocks/Tagger/TagSelectPopover/TagSelectValue.tsx","../src/blocks/Tagger/TagSelectPopover/TagSelectList.tsx","../src/blocks/Tagger/TagSelectPopover/TagSelectPopover.tsx","../src/blocks/Tagger/Tagger.tsx","../src/blocks/MultiActionButtonGroup/MultiActionButton.tsx","../src/blocks/MultiActionButtonGroup/MultiActionButtonGroup.tsx","../src/blocks/AIKit/CollapsibleStepHeader.tsx","../src/blocks/AIKit/InlineStepDetail.tsx","../src/blocks/AIKit/InlineStepLabel.tsx","../src/blocks/AIKit/AnswerSummary.tsx","../src/blocks/AIKit/MessageBubble.tsx","../src/blocks/AIKit/PlanApproval.tsx","../src/blocks/AIKit/PlanRewritingIndicator.tsx","../src/blocks/AIKit/PromptInputAction.tsx","../src/blocks/AIKit/PromptInputSubmit.tsx","../src/blocks/AIKit/PromptInput.tsx","../src/blocks/AIKit/Question.tsx","../src/blocks/AIKit/QuestionBlock.tsx","../src/blocks/AIKit/SuggestedPrompt.tsx","../src/blocks/AIKit/ThinkingIndicator.tsx","../src/blocks/AutoSaveTextarea/AutoSaveTextarea.tsx","../src/blocks/PasswordInput/PasswordInput.tsx","../src/blocks/Form/contexts.ts","../src/blocks/Form/components/FormBody.tsx","../src/blocks/Form/components/SubmitButton.tsx","../src/blocks/Form/connectors/FieldShell.tsx","../src/blocks/Form/connectors/CheckboxField.tsx","../src/blocks/Form/connectors/NumberField.tsx","../src/blocks/Form/connectors/PasswordField.tsx","../src/blocks/Form/connectors/SelectField.tsx","../src/blocks/Form/connectors/SwitchField.tsx","../src/blocks/Form/connectors/TextAreaField.tsx","../src/blocks/Form/connectors/TextField.tsx","../src/blocks/Form/formHook.ts","../src/blocks/Form/setServerFieldErrors.ts","../src/components/ZoomableSvg/ZoomableSvg.tsx","../src/hooks/useAutosizeInput.tsx"],"names":["extendTailwindMerge","clsx","cva","Portal","jsx","Content","Root","Trigger","Provider","useState","jsxs","useEffect","FontAwesomeIcon","fas","Slottable","getDefaultClassNames","DayPicker","variants","Close","ScrollAreaPrimitive","ScrollAreaPrimitive2","Fragment","TextareaAutosize","useRef","RLabel","text","Tooltip","cn","useId","Thumb","RSeparator","createContext","use","Item","Indicator","RRadioGroup","setRef","useCallback","RadixThumb","RadixTrack","RadixRange","useMemo","SelectPrimitive","SelectPrimitive2","SelectPrimitive3","SelectPrimitive4","SelectPrimitive5","SelectPrimitive6","DropdownMenuPrimitive","DropdownMenuPrimitive2","DropdownMenuPrimitive3","DropdownMenuPrimitive4","DropdownMenuPrimitive5","value","DropdownMenuPrimitive6","DropdownMenuPrimitive7","DropdownMenuPrimitive8","DropdownMenuPrimitive9","DropdownMenuPrimitive10","DropdownMenuPrimitive11","Group","Overlay","DialogPrimitive","Title","handleKeyDown","createPortal","Slot","noop","open","useReducer","useLayoutEffect","ref","CollapsibleTrigger","styles","CommandPrimitive","CmdInput","addonVariants","BaseCombobox","RadixAvatar","BoringAvatar","Icon","library","all","connector","Children","diffWords","diffLines","defaultFilter","r","RadixTabs","rest","colors","githubLightInit","python","sql","StreamLanguage","sfsql","PLSQL","shell","javascript","json","linter","jsonParseLinter","EditorView","EditorState","completeAnyWord","keymap","autocompletion","cmPlaceholder","unifiedMergeView","CodeMirror","Decoration","view","ViewPlugin","GutterMarker","StateEffect","StateField","gutter","RangeSet","BASIS_SETUP","defaultKeymap","installExtensions","RangeSetBuilder","gutterLineClass","theme","diff3Merge","keys","className","ResizablePrimitive","ResizablePrimitive2","ResizablePrimitive3","sonnerToast","toast","SonnerToaster","Tabs","TextInput","Separator","ButtonGroup","Button","useCommandState","defaultOptions","renderVariantIcon","createFormHookContexts","FormGroup","Label","Checkbox","PasswordInput","Select","Switch","createFormHook","stopPropagation"],"mappings":"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","file":"index.cjs","sourcesContent":["import { clsx } from 'clsx';\nimport { extendTailwindMerge } from 'tailwind-merge';\n\nconst twMerge = extendTailwindMerge({\n prefix: 'tw-',\n});\n\ntype Mapping = Record<string, unknown>;\ntype Argument = string | boolean | undefined | Mapping;\n\nexport const cn = (...classes: Argument[]) => twMerge(clsx(...classes));\n\nexport const extractExternalClasses = (className?: string) => {\n if (!className) {\n return ['', ''];\n }\n\n const [extCls, rest] = className.split(' ').reduce(\n (acc, cls) => {\n acc[cls.startsWith('extCls-') ? 0 : 1].push(cls);\n return acc;\n },\n [[], []] as [string[], string[]],\n );\n\n return [extCls.join(' '), rest.join(' ')];\n};\n","export const copyToClipboard = (text: string) => {\n return navigator.clipboard.writeText(text);\n};\n","import type { ChangeEvent } from 'react';\n\nexport const createChangeInputEvent = (input: HTMLInputElement) => {\n const changeEvent: ChangeEvent<HTMLInputElement> = {\n target: input,\n currentTarget: input,\n type: 'change',\n nativeEvent: new Event('change', { bubbles: true }),\n bubbles: true,\n cancelable: false,\n defaultPrevented: false,\n eventPhase: 2, // AT_TARGET\n isTrusted: false, // Synthetic events are not trusted\n preventDefault: () => {}, // Provide dummy functions if not needed\n isDefaultPrevented: () => false,\n stopPropagation: () => {},\n isPropagationStopped: () => false,\n persist: () => {},\n timeStamp: Date.now(),\n };\n\n Object.defineProperty(changeEvent, 'target', {\n value: input,\n writable: false,\n });\n\n return changeEvent;\n};\n","export const keyCodes = {\n ENTER: 'Enter',\n ESCAPE: 'Escape',\n SPACE: ' ',\n};\n","import type { ComponentProps } from 'react';\nimport { Content, Portal } from '@radix-ui/react-tooltip';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nconst tooltipVariants = cva(\n [\n 'tailwindcss-preflight',\n 'tw-inline-block',\n 'tw-rounded',\n 'tw-bg-neutral-800',\n 'tw-text-white',\n 'tw-break-anywhere',\n 'tw-max-h-96',\n 'tw-overflow-y-auto',\n 'tw-z-[1060]',\n ],\n {\n defaultVariants: {\n variant: 'action',\n },\n variants: {\n variant: {\n action: [\n 'tw-max-w-fit',\n 'tw-px-3',\n 'tw-py-2',\n\n 'tw-text-center',\n 'tw-text-xs',\n 'tw-font-medium',\n 'tw-uppercase',\n 'tw-tracking-wider',\n ],\n explanatory: [\n 'tw-max-w-80',\n 'tw-px-4',\n 'tw-py-3',\n 'tw-text-left',\n\n 'tw-text-sm',\n 'tw-font-normal',\n ],\n },\n },\n },\n);\n\ntype Props = {\n keepOpenOnPointerDownOutside?: boolean;\n placement?: ComponentProps<typeof Content>['side'];\n} & Omit<ComponentProps<typeof Content>, 'side'> &\n VariantProps<typeof tooltipVariants>;\n\nexport const TooltipContent = ({\n className,\n variant,\n keepOpenOnPointerDownOutside = false,\n children,\n onPointerDownOutside,\n sideOffset = 8,\n collisionPadding = 8,\n hideWhenDetached = true,\n placement = 'right',\n ...rest\n}: Props) => {\n const handlePointerDownOutside: ComponentProps<typeof Content>['onPointerDownOutside'] = (\n event,\n ) => {\n if (keepOpenOnPointerDownOutside) event.preventDefault();\n onPointerDownOutside?.(event);\n };\n\n return (\n <Portal>\n <Content\n {...rest}\n data-tooltip-content\n sideOffset={sideOffset}\n collisionPadding={collisionPadding}\n onPointerDownOutside={handlePointerDownOutside}\n className={tooltipVariants({ className, variant: variant })}\n hideWhenDetached={hideWhenDetached}\n side={placement}\n >\n {children}\n </Content>\n </Portal>\n );\n};\n","import type { ComponentProps } from 'react';\nimport { Root } from '@radix-ui/react-tooltip';\n\ntype Props = ComponentProps<typeof Root>;\n\nconst DELAY_SHOW_TOOLTIP = 300;\n\nexport const TooltipRoot = ({ children, delayDuration = DELAY_SHOW_TOOLTIP, ...rest }: Props) => (\n <Root {...rest} delayDuration={delayDuration}>\n {children}\n </Root>\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Trigger } from '@radix-ui/react-tooltip';\n\nimport { cn } from '../../utils';\n\ntype Props = {\n keepOpenOnClick?: boolean;\n} & ComponentProps<typeof Trigger>;\n\nexport const TooltipTrigger = ({\n ref,\n children,\n className,\n keepOpenOnClick = false,\n onClick,\n onPointerDown,\n asChild,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => {\n const handleClick: ComponentProps<typeof Trigger>['onClick'] = (event) => {\n if (keepOpenOnClick) event.preventDefault();\n onClick?.(event);\n };\n\n const handePointerDown: ComponentProps<typeof Trigger>['onPointerDown'] = (event) => {\n if (keepOpenOnClick) event.preventDefault();\n onPointerDown?.(event);\n };\n\n return (\n <Trigger\n {...rest}\n asChild\n ref={ref}\n className={cn('tailwindcss-preflight', className)}\n onClick={handleClick}\n onPointerDown={handePointerDown}\n >\n {asChild ? children : <span>{children}</span>}\n </Trigger>\n );\n};\n","import { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport type { Content, Trigger } from '@radix-ui/react-tooltip';\nimport { Provider } from '@radix-ui/react-tooltip';\n\nimport { keyCodes } from '../../constants/keyCodes';\n\nimport { TooltipContent } from './TooltipContent';\nimport { TooltipRoot } from './TooltipRoot';\nimport { TooltipTrigger } from './TooltipTrigger';\n\nconst ACTION_TOOLTIP_LIMIT = 30;\n\ntype TriggerProps = {\n triggerAsChild?: boolean;\n};\n\nexport type Props = {\n keepOpenOnTriggerClick?: boolean;\n tooltip: ReactNode;\n children: ReactNode;\n placement?: ComponentProps<typeof Content>['side'];\n forceHide?: boolean;\n forceShow?: boolean;\n className?: string;\n} & TriggerProps &\n Pick<ComponentProps<typeof TooltipContent>, 'variant' | 'className'>;\n\nexport const TooltipProvider = Provider;\n\nexport const Tooltip = ({\n tooltip,\n children,\n className,\n keepOpenOnTriggerClick = false,\n variant,\n placement = 'right',\n forceHide = false,\n forceShow = false,\n // trigger props\n triggerAsChild = false,\n}: Props) => {\n const [open, setOpen] = useState(false);\n\n const resolvedVariant = (() => {\n if (!!variant) return variant;\n if (typeof tooltip === 'string' && tooltip.length > ACTION_TOOLTIP_LIMIT) return 'explanatory';\n\n return 'action';\n })();\n\n const isActionVariant = resolvedVariant === 'action';\n\n const handleKeyUp: ComponentProps<typeof Trigger>['onKeyUp'] = (event) => {\n if (![keyCodes.ENTER, keyCodes.SPACE].includes(event.key)) return;\n event.stopPropagation();\n };\n\n return (\n <TooltipRoot\n open={!!tooltip && (open || forceShow) && !forceHide}\n onOpenChange={setOpen}\n disableHoverableContent={isActionVariant}\n >\n <TooltipTrigger\n asChild={triggerAsChild}\n keepOpenOnClick={keepOpenOnTriggerClick}\n onKeyUp={handleKeyUp}\n >\n {children}\n </TooltipTrigger>\n\n <TooltipContent\n className={className}\n variant={resolvedVariant}\n placement={placement}\n keepOpenOnPointerDownOutside={keepOpenOnTriggerClick}\n >\n {tooltip}\n </TooltipContent>\n </TooltipRoot>\n );\n};\n\nTooltip.Root = TooltipRoot;\nTooltip.Content = TooltipContent;\nTooltip.Trigger = TooltipTrigger;\n","export const createPrefixedString = (prefix: string) => (literals: TemplateStringsArray) =>\n literals.reduce((acc, literal) => acc + literal, `${prefix}-`);\n","// Escape characters with special meaning either inside or outside character sets.\n// Use a simple backslash escape when it's always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns' stricter grammar.\nexport const escapeStringRegexp = (string: string) =>\n string.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d');\n","import type { MutableRefObject, RefCallback } from 'react';\n\ntype PossibleRef<T> = MutableRefObject<T> | RefCallback<T> | null;\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref != null) {\n ref.current = value;\n }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nexport const mergeRefs = <T>(...refs: PossibleRef<T>[]) => {\n return (node: T) => refs.forEach((ref) => setRef(ref, node));\n};\n","export const noop = () => void 0;\n","type DebouncedFn<T extends (...args: any[]) => void> = {\n (...args: Parameters<T>): void;\n cancel: () => void;\n};\n\nexport const debounce = <T extends (...args: any[]) => void>(\n fn: T,\n delay: number,\n): DebouncedFn<T> => {\n let timeoutId: ReturnType<typeof setTimeout>;\n const debounced = (...args: Parameters<T>) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn(...args), delay);\n };\n debounced.cancel = () => clearTimeout(timeoutId);\n return debounced;\n};\n","// Platform detection\ntype NavigatorUAData = {\n platform: string;\n brands: { brand: string; version: string }[];\n mobile: boolean;\n};\n\nconst getIsMac = (): boolean => {\n // Modern approach using navigator.userAgentData\n if (typeof navigator !== 'undefined' && 'userAgentData' in navigator) {\n const platform = (navigator.userAgentData as NavigatorUAData).platform;\n\n if (typeof platform === 'string') {\n return platform.toLowerCase() === 'macos';\n }\n }\n\n if (typeof navigator !== 'undefined' && typeof navigator.platform === 'string') {\n return navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n }\n\n // Server-side rendering fallback\n return false;\n};\n\nexport const isMac = getIsMac();\n","import { useEffect, useState } from 'react';\n\n// https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest#converting_a_digest_to_a_hex_string\nconst sha256 = async (text: string) => {\n const msgUint8 = new TextEncoder().encode(text);\n const hashBuffer = await crypto.subtle.digest('SHA-256', msgUint8);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n return hashArray.map((b) => b.toString(16).padStart(2, '0')).join('');\n};\n\nexport const useSHA256 = (text?: string) => {\n const [hash, setHash] = useState('');\n\n useEffect(() => {\n if (text) {\n sha256(text).then(setHash);\n }\n }, [text]);\n\n return hash;\n};\n","import type { ElementRef, Ref } from 'react';\nimport type { IconName, IconPrefix } from '@awesome.me/kit-be8bcf7e5e/icons';\nimport type { IconProp } from '@fortawesome/fontawesome-svg-core';\nimport { FontAwesomeIcon, type FontAwesomeIconProps } from '@fortawesome/react-fontawesome';\n\ntype Props = Omit<FontAwesomeIconProps, 'icon'> & { icon: IconName | [IconPrefix, IconName] };\n\nexport const Icon = ({ ref, icon, ...rest }: Props & { ref?: Ref<ElementRef<'svg'>> }) => (\n <FontAwesomeIcon {...rest} ref={ref} icon={icon as IconProp} />\n);\n","import type { IconName } from '@awesome.me/kit-be8bcf7e5e/icons';\nimport { fas } from '@awesome.me/kit-be8bcf7e5e/icons';\n\nexport * from './Icon';\nexport type { IconName } from '@awesome.me/kit-be8bcf7e5e/icons';\n\nlet validIconNames: Set<string> | undefined;\n\nconst getValidIconNames = (): Set<string> => {\n if (validIconNames) return validIconNames;\n validIconNames = new Set<string>(\n Object.values(fas).flatMap((def) => {\n if (\n def !== null &&\n typeof def === 'object' &&\n 'iconName' in def &&\n typeof def.iconName === 'string'\n ) {\n return [def.iconName];\n }\n return [];\n }),\n );\n return validIconNames;\n};\n\nexport const isIconName = (name: string): name is IconName => getValidIconNames().has(name);\n","import { cva } from 'class-variance-authority';\n\nexport const variants = cva(\n [\n 'tailwindcss-preflight',\n 'tw-group/button',\n 'tw-border-box',\n\n // layout\n 'tw-relative',\n 'tw-flex',\n 'tw-items-center',\n 'tw-justify-center',\n 'tw-gap-2',\n\n // text\n 'tw-text-xs',\n 'tw-leading-5',\n 'tw-font-medium',\n 'tw-tracking-[1px]',\n 'tw-uppercase',\n\n // border\n 'tw-rounded',\n 'tw-border',\n 'tw-border-transparent',\n\n // styling\n 'tw-shadow-none',\n '[a]:tw-cursor-pointer', // explicitly set for anchor\n\n 'focus-visible:tw-outline',\n 'focus-visible:tw-outline-1',\n 'focus-visible:-tw-outline-offset-1',\n 'focus-visible:tw-outline-secondary-500',\n 'focus-visible:tw-ring-4',\n 'focus-visible:tw-ring-secondary-200',\n\n // disabled\n 'disabled:tw-opacity-40',\n 'disabled:tw-cursor-not-allowed',\n\n // anchor support\n '!tw-no-underline',\n 'aria-disabled:tw-opacity-40',\n 'aria-disabled:tw-cursor-not-allowed',\n\n '[&_svg]:tw-shrink-0',\n ],\n {\n defaultVariants: {\n size: 'medium',\n variant: 'primary',\n block: false,\n },\n variants: {\n block: {\n true: ['tw-w-full'],\n },\n variant: {\n primary: [\n 'tw-text-white',\n 'tw-bg-primary-500',\n\n 'focus:tw-text-white',\n 'hover:tw-text-white',\n 'hover:not-disabled:tw-bg-primary-600',\n 'active:not-disabled:tw-bg-primary-800',\n\n // anchor disabled override\n 'aria-disabled:!tw-bg-primary-500',\n ],\n secondary: [\n 'tw-text-white',\n 'tw-bg-secondary-500',\n\n 'focus:tw-text-white',\n 'hover:tw-text-white',\n 'hover:not-disabled:tw-bg-secondary-700',\n 'active:not-disabled:tw-bg-secondary-800',\n\n // anchor disabled override\n 'aria-disabled:!tw-bg-secondary-500',\n ],\n danger: [\n 'tw-text-white',\n 'tw-bg-error-500',\n\n 'focus:tw-text-white',\n 'hover:tw-text-white',\n 'hover:not-disabled:tw-bg-error-600',\n 'active:not-disabled:tw-bg-error-700',\n\n // anchor disabled override\n 'aria-disabled:!tw-bg-error-500',\n ],\n invisible: [\n 'tw-text-neutral-800',\n 'tw-bg-transparent',\n\n 'focus:tw-text-neutral-800',\n 'hover:not-disabled:tw-bg-neutral-100',\n 'hover:tw-text-neutral-800',\n 'active:not-disabled:tw-bg-neutral-150',\n\n // contrasting icon on hover/active\n '[&_svg]:tw-text-neutral-400',\n '[&_svg]:hover:not-disabled:tw-text-secondary-600',\n '[&_svg]:active:not-disabled:tw-text-secondary-600',\n\n // anchor disabled override\n 'aria-disabled:!tw-bg-transparent',\n ],\n outline: [\n 'tw-text-neutral-800',\n 'tw-bg-white',\n // border\n '!tw-border-neutral-200',\n 'hover:tw-text-neutral-800',\n 'focus:tw-text-neutral-800',\n 'hover:not-disabled:!tw-border-neutral-300',\n 'hover:not-disabled:tw-bg-neutral-100',\n 'active:not-disabled:tw-bg-neutral-200',\n\n // contrasting icon hover, same as invisible\n '[&_svg]:tw-text-neutral-400',\n '[&_svg]:not-disabled:hover:tw-text-secondary-600',\n '[&_svg]:active:not-disabled:tw-text-secondary-600',\n\n // anchor disabled override\n 'aria-disabled:!tw-bg-white',\n 'aria-disabled:!tw-border-neutral-200',\n ],\n\n inline: [\n 'tw-text-neutral-800',\n 'tw-bg-transparent',\n 'tw-rounded-full',\n\n '[&_svg]:tw-text-neutral-400',\n '[&_svg]:not-disabled:hover:tw-text-secondary-600',\n '[&_svg]:not-disabled:focus:tw-text-secondary-600',\n ],\n },\n size: {\n medium: ['tw-max-h-10', 'tw-min-h-10', 'tw-px-4', 'tw-py-2.5', '[&_svg]:tw-size-4'],\n small: ['tw-max-h-8', 'tw-min-h-8', 'tw-px-4', 'tw-py-1.5', '[&_svg]:tw-size-4'],\n large: ['tw-max-h-12', 'tw-min-h-12', 'tw-px-4', 'tw-py-3.5', '[&_svg]:tw-size-4'],\n\n 'icon-lg': ['tw-size-12', 'tw-p-0', '[&_svg]:tw-size-6'],\n icon: ['tw-size-10', 'tw-p-0', '[&_svg]:tw-size-4'],\n 'icon-sm': ['tw-size-8', 'tw-p-0', '[&_svg]:tw-size-4'],\n 'icon-xs': ['tw-size-6', 'tw-p-0', '[&_svg]:tw-size-4'],\n 'icon-2xs': ['!tw-inline-flex', 'tw-size-5', 'tw-max-h-5', '[&_svg]:tw-size-3'],\n 'icon-3xs': ['tw-h-fit', 'tw-w-fit', '[&_svg]:tw-size-4'],\n },\n },\n },\n);\n\nexport const argoVariants = cva(\n [\n 'tailwindcss-preflight',\n\n // layout\n 'tw-relative',\n 'tw-inline-flex',\n 'tw-items-center',\n 'tw-justify-center',\n 'tw-whitespace-nowrap',\n 'tw-gap-2',\n\n // border\n 'tw-border',\n 'tw-border-transparent',\n 'tw-rounded-lg',\n\n // text\n 'tw-font-medium',\n 'tw-select-none',\n\n // focus visible\n '!tw-outline-none',\n 'focus-visible:tw-ring-2',\n\n // disabled\n 'disabled:tw-cursor-not-allowed',\n 'disabled:tw-opacity-50',\n 'active:tw-opacity-60',\n\n 'tw-transition-all',\n 'tw-bg-clip-padding',\n\n // anchor support\n '!tw-no-underline',\n\n // icon\n 'tw-shrink-0',\n '[&_svg]:tw-pointer-events-none',\n '[&_svg]:tw-shrink-0',\n \"[&_svg:not([class*='tw-size-'])]:tw-size-4\",\n ],\n {\n defaultVariants: {\n variant: 'primary',\n size: 'medium',\n },\n variants: {\n block: {\n true: ['tw-w-full'],\n },\n variant: {\n primary: [\n 'tw-bg-primary',\n 'tw-text-primary-foreground',\n '[a]:hover:tw-bg-primary/80',\n 'hover:not-disabled:tw-bg-primary/90',\n 'hover:tw-text-primary-foreground',\n 'focus:tw-text-primary-foreground',\n\n 'focus-visible:tw-border-primary',\n 'focus-visible:tw-ring-primary/50',\n ],\n secondary: [\n 'tw-bg-secondary',\n 'tw-text-secondary-foreground',\n 'hover:tw-bg-secondary/80',\n 'hover:tw-text-secondary-foreground',\n 'focus:tw-text-secondary-foreground',\n\n 'focus-visible:tw-border-secondary',\n 'focus-visible:tw-ring-primary/50',\n ],\n\n // should be called \"destructive\" by Figma\n danger: [\n 'tw-bg-destructive',\n 'tw-text-destructive-foreground',\n 'hover:tw-text-destructive-foreground',\n 'focus:tw-text-destructive-foreground',\n\n 'focus-visible:tw-border-destructive',\n 'focus-visible:tw-ring-destructive/20',\n ],\n outline: [\n '!tw-border-input',\n 'tw-bg-background',\n 'hover:not-disabled:tw-bg-accent',\n 'hover:not-disabled:tw-text-accent-foreground',\n 'hover:active:tw-bg-background',\n 'focus-visible:!tw-border-primary',\n 'focus-visible:tw-ring-primary/50',\n ],\n\n // should be called \"ghost\" by Figma\n invisible: [\n 'tw-bg-transparent',\n 'tw-text-foreground',\n 'hover:not-disabled:tw-bg-accent',\n 'hover:not-disabled:tw-text-accent-foreground',\n 'hover:not-disabled:tw-border-accent',\n\n 'focus-visible:tw-ring-primary/50',\n ],\n // should be called \"link\" by Figma\n inline: [\n 'tw-bg-transparent',\n 'tw-text-primary',\n 'hover:tw-underline',\n 'hover:active:tw-bg-transparent',\n 'focus-visible:tw-ring-primary/50',\n ],\n },\n size: {\n // should be called \"default\" by Figma\n medium: ['tw-max-h-9', 'tw-py-2', 'tw-px-4', 'tw-text-sm'],\n // should be called \"small\" by Figma\n small: ['tw-max-h-8', 'tw-py-2', 'tw-px-3', 'tw-text-xs'],\n // should be called \"large\" by Figma\n large: ['tw-max-h-10', 'tw-py-2.5', 'tw-px-6', 'tw-text-sm'],\n\n 'icon-lg': ['tw-size-10'],\n icon: ['tw-size-9'],\n 'icon-sm': ['tw-size-8'],\n // unsupported in ARGO, remove when old design is gone\n 'icon-xs': [],\n 'icon-2xs': [],\n 'icon-3xs': [],\n },\n },\n },\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Root, Slottable } from '@radix-ui/react-slot';\nimport type { VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\n\nimport { argoVariants, variants } from './styles';\n\ntype Props = {\n icon?: ComponentProps<typeof Icon>['icon'];\n isLoading?: boolean;\n asChild?: boolean;\n argo?: boolean;\n} & ComponentProps<'button'> &\n VariantProps<typeof variants>;\n\nexport const Button = ({\n ref,\n children,\n disabled = false,\n className,\n type = 'button',\n icon: iconProp,\n isLoading = false,\n asChild = false,\n onClick,\n argo = false,\n variant = 'primary',\n size = 'medium',\n block = false,\n ...buttonProps\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => {\n const Comp = asChild ? Root : 'button';\n const icon = isLoading ? 'spinner' : iconProp;\n const classNames = argo\n ? argoVariants({ variant: variant, size, block, className })\n : variants({\n size,\n variant,\n block,\n className,\n });\n\n const handleClick: ComponentProps<'button'>['onClick'] = (event) => {\n const isAnchor = event.currentTarget.tagName === 'A';\n\n // <a/> does not support disabled by default, and we cannot use pointer-events: none because cursor-not-allowed would not work.\n if (isAnchor && disabled) {\n event.preventDefault();\n return;\n }\n\n onClick?.(event);\n };\n\n return (\n <Comp\n {...buttonProps}\n ref={ref}\n disabled={disabled}\n aria-disabled={disabled}\n data-variant={variant}\n data-icon-only={!children}\n type={type}\n onClick={handleClick}\n className={cn(classNames)}\n >\n {icon && <Icon spin={isLoading} icon={icon} />}\n <Slottable>{children}</Slottable>\n </Comp>\n );\n};\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Root } from '@radix-ui/react-slot';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nconst buttonInlineVariants = cva(\n [\n 'tailwindcss-preflight',\n\n 'tw-inline-flex',\n 'tw-items-center',\n 'tw-gap-2',\n\n 'tw-underline-offset-2',\n\n 'disabled:tw-opacity-40',\n 'disabled:tw-cursor-not-allowed',\n 'disabled:tw-text-neutral-500',\n 'disabled:tw-no-underline',\n '[&_svg]:disabled:tw-text-neutral-400',\n ],\n {\n defaultVariants: {\n variant: 'link',\n color: 'link',\n },\n variants: {\n color: {\n link: [\n 'tw-text-secondary-500',\n 'hover:tw-text-secondary-600',\n '[&_svg]:tw-text-secondary-500',\n ],\n dark: ['tw-text-neutral-800 [&_svg]:tw-text-neutral-400'],\n danger: ['tw-text-error-500 [&_svg]:tw-text-error-500'],\n muted: ['tw-text-muted-foreground [&_svg]:tw-text-muted-foreground'],\n custom: [],\n },\n variant: {\n link: ['tw-underline', 'hover:tw-no-underline'],\n 'link-reverse': ['tw-no-underline', '', 'hover:tw-underline'],\n custom: [],\n },\n },\n },\n);\n\ntype Props = ComponentProps<'button'> &\n VariantProps<typeof buttonInlineVariants> & { asChild?: boolean };\n\nexport const ButtonInline = ({\n ref,\n children,\n className,\n variant,\n color,\n type = 'button',\n asChild = false,\n ...buttonProps\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => {\n const Comp = asChild ? Root : 'button';\n\n return (\n <Comp\n {...buttonProps}\n ref={ref}\n type={asChild ? undefined : type}\n className={buttonInlineVariants({ variant, color, className })}\n >\n {children}\n </Comp>\n );\n};\n","import type { ComponentProps, ElementRef, ReactNode, Ref } from 'react';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nconst buttonGroupVariant = cva(\n ['tailwindcss-preflight', 'tw-inline-flex', 'tw-items-center', 'tw-group/button-group'],\n {\n defaultVariants: {\n variant: 'inline',\n space: 'small',\n },\n variants: {\n variant: {\n inline: [],\n block: [\n 'tw-w-full',\n 'tw-flex-col',\n 'sm:tw-flex-row',\n '[&_a]:tw-flex-1',\n '[&>button:not([data-icon-only=true])]:tw-flex-1',\n ],\n },\n space: {\n 'extra-small': 'tw-gap-1',\n 'little-small': 'tw-gap-2',\n small: 'tw-gap-3',\n medium: 'tw-gap-4',\n large: 'tw-gap-6',\n compact: [\n 'tw-border-collapse',\n '!tw-gap-0',\n\n // ensure that focus visible outline is at the top\n '[&>*:focus-visible]:!tw-z-10',\n\n '[&>*:not(:first-child)]:tw-rounded-l-none',\n '[&>*:not(:last-child)]:tw-rounded-r-none',\n '[&>*:not(:last-child)]:tw-border-r-0',\n '[&>*:not(:first-child)]:tw-border-l-0',\n\n // separator\n '[&>*:not(:first-child)]:before:tw-content',\n '[&>*:not(:first-child)]:before:tw-absolute',\n '[&>*:not(:first-child)]:before:tw-left-0',\n '[&>*:not(:first-child)]:before:tw-h-full',\n '[&>*:not(:first-child)]:before:tw-w-px',\n '[&>*:not(:first-child)]:before:tw-bg-black/10',\n ],\n },\n },\n },\n);\n\ntype Props = {\n children: ReactNode;\n className?: string;\n} & VariantProps<typeof buttonGroupVariant> &\n ComponentProps<'div'>;\n\nexport const ButtonGroup = ({\n ref,\n children,\n space = 'small',\n className,\n variant,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => {\n return (\n <div\n ref={ref}\n {...rest}\n role=\"group\"\n data-variant={variant}\n className={buttonGroupVariant({ variant, className, space })}\n >\n {children}\n </div>\n );\n};\n","import type { PropsBase, PropsRange, PropsSingle } from 'react-day-picker';\nimport { DayPicker, getDefaultClassNames } from 'react-day-picker';\n\nimport { cn } from '../../utils';\nimport 'react-day-picker/src/style.css';\n\nexport type CalendarProps = Omit<PropsBase, 'required' | 'captionLayout'> &\n (PropsSingle | PropsRange);\n\nconst dayPickerClassNames: CalendarProps['classNames'] = {\n selected: `tw-bg-secondary-500 tw-border-secondary-500 tw-font-medium hover:tw-bg-secondary-600 hover:tw-border-secondary-600 tw-text-white tw-rounded`,\n};\n\nconst rangePickerClassNames: CalendarProps['classNames'] = {\n range_start: `tw-bg-secondary-500 tw-rounded-r-none tw-font-medium tw-border-secondary-500 hover:tw-bg-secondary-600 hover:tw-border-secondary-600 tw-text-white`,\n range_end: `tw-bg-secondary-500 tw-rounded-l-none tw-font-medium tw-border-secondary-500 hover:tw-bg-secondary-600 hover:tw-border-secondary-600 tw-text-white`,\n selected: `tw-font-medium tw-rounded`,\n range_middle: `tw-bg-secondary-300 tw-border-secondary-300 tw-rounded-none tw-font-medium`,\n};\n\nexport const Calendar = ({ className, classNames, ...props }: CalendarProps) => {\n const defaultClassNames = getDefaultClassNames();\n\n return (\n <DayPicker\n {...props}\n captionLayout=\"dropdown\"\n className={cn(className, 'tw-p-3')}\n classNames={{\n chevron: `${defaultClassNames.chevron} tw-fill-secondary-500`,\n day: `${defaultClassNames.day} hover:tw-bg-secondary-200 tw-rounded`,\n day_button: `${defaultClassNames.day_button} tw-rounded`,\n today: `tw-bg-secondary-100 tw-font-medium`,\n ...dayPickerClassNames,\n ...rangePickerClassNames,\n selected: `${props.mode === 'range' ? rangePickerClassNames.selected : dayPickerClassNames.selected}`,\n ...classNames,\n }}\n required={false}\n />\n );\n};\n\nCalendar.displayName = 'Calendar';\n","import type { ComponentPropsWithoutRef, ElementRef, Ref } from 'react';\nimport { Content, Portal } from '@radix-ui/react-popover';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nconst variants = cva(\n [\n 'tailwindcss-preflight',\n 'tw-group/popover-content',\n 'tw-z-[1055]',\n 'focus-visible:tw-outline-none',\n\n // sizing\n 'tw-min-w-32',\n 'tw-max-h-[var(--radix-popover-content-available-height)]',\n 'tw-origin-[--radix-popover-content-transform-origin]',\n\n // layout\n 'tw-flex',\n 'tw-flex-col',\n 'tw-overflow-y-auto',\n\n // border\n 'tw-box-border',\n 'tw-border',\n 'tw-border-solid',\n 'tw-border-neutral-100',\n 'tw-shadow-lg',\n\n // colors\n 'tw-bg-white',\n 'tw-text-neutral-800',\n\n // open animation\n 'data-[state=open]:tw-animate-in',\n 'data-[state=open]:tw-fade-in-0',\n 'data-[state=open]:tw-zoom-in-95',\n\n // closed animation\n 'data-[state=closed]:tw-animate-out',\n 'data-[state=closed]:tw-fade-out-0',\n 'data-[state=closed]:tw-zoom-out-95',\n\n // position animation\n 'data-[side=bottom]:tw-slide-in-from-top-2',\n 'data-[side=left]:tw-slide-in-from-right-2',\n 'data-[side=right]:tw-slide-in-from-left-2',\n 'data-[side=top]:tw-slide-in-from-bottom-2',\n ],\n {\n defaultVariants: {\n matchTriggerWidth: false,\n variant: 'default',\n },\n variants: {\n variant: {\n default: ['tw-rounded-md'],\n argo: ['tw-rounded-2xl'],\n },\n matchTriggerWidth: {\n true: ['tw-w-[var(--radix-popover-trigger-width)]'],\n false: [],\n },\n },\n },\n);\n\ntype Props = ComponentPropsWithoutRef<typeof Content> & VariantProps<typeof variants>;\n\nexport const PopoverContent = ({\n ref,\n className,\n align = 'center',\n sideOffset = 4,\n matchTriggerWidth = false,\n children,\n variant,\n onEscapeKeyDown,\n ...props\n}: Props & { ref?: Ref<ElementRef<typeof Content>> }) => (\n <Portal>\n <Content\n ref={ref}\n align={matchTriggerWidth ? 'start' : align}\n sideOffset={sideOffset}\n className={cn(variants({ className, matchTriggerWidth, variant }))}\n onEscapeKeyDown={(event) => {\n // Stop propagation to prevent parent modals (like FullScreenModal) from closing\n event.stopPropagation();\n onEscapeKeyDown?.(event);\n }}\n {...props}\n >\n {children}\n </Content>\n </Portal>\n);\n","import type { ComponentProps } from 'react';\nimport { Close, Root, Trigger } from '@radix-ui/react-popover';\n\nimport { PopoverContent } from './PopoverContent';\n\ntype Props = ComponentProps<typeof Root>;\n\nexport const Popover = (props: Props) => <Root {...props} />;\n\n/**\n * Main Layout\n */\nPopover.Content = PopoverContent;\nPopover.Trigger = Trigger;\nPopover.Close = Close;\n","import type { PropsWithChildren } from 'react';\nimport type { PopoverContentProps, PopoverProps } from '@radix-ui/react-popover';\n\nimport type { CalendarProps } from '../Calendar';\nimport { Calendar } from '../Calendar';\nimport { Popover } from '../Popover';\n\ntype OwnPopoverProps = PropsWithChildren &\n Pick<PopoverProps, 'open' | 'onOpenChange' | 'defaultOpen'> &\n Pick<PopoverContentProps, 'align' | 'alignOffset' | 'sideOffset'>;\n\ntype DatePickerProps = OwnPopoverProps & CalendarProps;\n\nexport const DatePicker = ({\n align = 'end',\n alignOffset = -18,\n children,\n defaultOpen,\n onOpenChange,\n open,\n sideOffset = 12,\n ...calendarProps\n}: DatePickerProps) => (\n <Popover defaultOpen={defaultOpen} open={open} onOpenChange={onOpenChange}>\n <Popover.Trigger asChild>{children}</Popover.Trigger>\n <Popover.Content\n align={align}\n alignOffset={alignOffset}\n className=\"tw-w-auto tw-p-0\"\n sideOffset={sideOffset}\n >\n <Calendar {...calendarProps} />\n </Popover.Content>\n </Popover>\n);\n\nDatePicker.displayName = 'DatePicker';\n","import type { ComponentProps } from 'react';\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>;\n\nexport const ScrollBar = ({ className, orientation = 'vertical', ...props }: Props) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n orientation={orientation}\n className={cn(\n 'tw-flex tw-touch-none tw-select-none tw-transition-color',\n '[data-state=\"hidden\"]:tw-bg-pink-500',\n {\n 'tw-h-full tw-w-2.5 tw-p-px': orientation === 'vertical',\n 'tw-h-2.5 tw-flex-col tw-p-px': orientation === 'horizontal',\n },\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n className={cn(\n 'tw-relative',\n 'tw-flex-1',\n 'tw-rounded-full',\n 'tw-bg-neutral-200',\n 'hover:tw-bg-neutral-400',\n )}\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\n\nimport { cn } from '../../utils';\n\nimport { ScrollBar } from './ScrollBar';\n\ntype Props = ComponentProps<typeof ScrollAreaPrimitive.Root> & {\n viewPortClassName?: string;\n scrollBarClassName?: string;\n orientation?: ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>['orientation'];\n};\n\nexport const ScrollArea = ({\n ref,\n className,\n children,\n viewPortClassName,\n orientation,\n scrollBarClassName,\n ...props\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\n 'tw-peer/scroll-area tw-relative tw-overflow-hidden focus-visible:tw-outline-none',\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n ref={ref}\n className={cn(\n 'tw-h-full tw-w-full tw-rounded-[inherit] focus-visible:tw-outline-none',\n viewPortClassName,\n )}\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n {orientation ? (\n <ScrollBar className={scrollBarClassName} orientation={orientation} />\n ) : (\n <>\n <ScrollBar className={scrollBarClassName} orientation=\"vertical\" />\n <ScrollBar className={scrollBarClassName} orientation=\"horizontal\" />\n </>\n )}\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'button'>;\n\nexport const TimePickerButton = ({\n ref,\n className,\n children,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => (\n <button\n {...rest}\n ref={ref}\n type=\"button\"\n className={cn(\n 'tailwindcss-preflight',\n\n 'tw-flex',\n 'tw-items-center',\n 'tw-justify-center',\n\n 'tw-size-10',\n 'tw-rounded',\n 'tw-transition-colors',\n 'tw-select-none',\n 'hover:tw-bg-secondary-200',\n 'focus-visible:tw-outline',\n 'focus-visible:tw-outline-2',\n 'focus-visible:tw-outline-secondary-500',\n 'aria-selected:tw-bg-secondary-500',\n 'aria-selected:tw-text-white',\n className,\n )}\n >\n {children}\n </button>\n);\n","export const pad = (n: number) => n.toString().padStart(2, '0');\n\nexport const parseTime = (time?: string | null) => {\n if (!time) return { hour: null, minute: null };\n\n const match = /^(\\d{1,2}):(\\d{1,2})$/.exec(time.trim());\n if (!match) return { hour: null, minute: null };\n\n const hour = Number(match[1]);\n const minute = Number(match[2]);\n if (\n Number.isNaN(hour) ||\n Number.isNaN(minute) ||\n hour < 0 ||\n hour > 23 ||\n minute < 0 ||\n minute > 59\n )\n return { hour: null, minute: null };\n\n return { hour, minute };\n};\n\nexport const scrollToSelected = (viewport: HTMLDivElement | null) => {\n if (!viewport) return;\n // Defer scroll until after the popover open animation completes and layout is calculated\n requestAnimationFrame(() => {\n const selected = viewport.querySelector('[aria-selected=\"true\"]');\n selected?.scrollIntoView({ block: 'center' });\n });\n};\n","import { useState } from 'react';\nimport type { ReactNode } from 'react';\nimport type { PopoverContentProps, PopoverProps } from '@radix-ui/react-popover';\n\nimport { Popover } from '../Popover';\nimport { ScrollArea } from '../ScrollArea';\n\nimport { TimePickerButton } from './TimePickerButton';\nimport { pad, parseTime, scrollToSelected } from './utils';\n\nconst HOURS = Array.from({ length: 24 }, (_, i) => i);\nconst MINUTES = Array.from({ length: 60 }, (_, i) => i);\n\ntype Props = {\n children?: ReactNode;\n defaultSelected?: string | null;\n selected?: string | null;\n onSelect?: (time: string) => void;\n} & Pick<PopoverProps, 'open' | 'onOpenChange' | 'defaultOpen'> &\n Pick<PopoverContentProps, 'align' | 'alignOffset' | 'sideOffset'>;\n\nexport const TimePicker = ({\n align = 'end',\n alignOffset = -18,\n children,\n defaultOpen,\n defaultSelected,\n onOpenChange,\n onSelect,\n open,\n selected,\n sideOffset = 12,\n}: Props) => {\n const [internalSelected, setInternalSelected] = useState<string | null>(defaultSelected ?? null);\n\n const isControlled = selected !== undefined;\n const currentValue = isControlled ? selected : internalSelected;\n\n const parsed = parseTime(currentValue);\n const hour = parsed.hour ?? null;\n const minute = parsed.minute ?? null;\n\n const handleSelect = (time: string) => {\n if (!isControlled) {\n setInternalSelected(time);\n }\n onSelect?.(time);\n };\n\n const handleHourSelect = (h: number) => {\n const m = minute ?? 0;\n handleSelect(`${pad(h)}:${pad(m)}`);\n };\n\n const handleMinuteSelect = (m: number) => {\n const h = hour ?? 0;\n handleSelect(`${pad(h)}:${pad(m)}`);\n };\n\n return (\n <Popover defaultOpen={defaultOpen} onOpenChange={onOpenChange} open={open}>\n <Popover.Trigger asChild>{children}</Popover.Trigger>\n <Popover.Content\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className=\"tw-flex tw-flex-row\"\n >\n <ScrollArea type=\"always\" ref={scrollToSelected} viewPortClassName=\"tw-h-60 tw-px-3\">\n {HOURS.map((value) => (\n <TimePickerButton\n key={value}\n onClick={() => handleHourSelect(value)}\n aria-selected={value === hour}\n >\n {pad(value)}\n </TimePickerButton>\n ))}\n </ScrollArea>\n\n <ScrollArea type=\"always\" ref={scrollToSelected} viewPortClassName=\"tw-h-60 tw-px-3\">\n {MINUTES.map((value) => (\n <TimePickerButton\n key={value}\n onClick={() => handleMinuteSelect(value)}\n aria-selected={value === minute}\n >\n {pad(value)}\n </TimePickerButton>\n ))}\n </ScrollArea>\n </Popover.Content>\n </Popover>\n );\n};\n","import type { ComponentProps } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\n// Padding only fires when the addon actually has content — keeps an empty\n// `<Addon>{maybeNull}</Addon>` from carving 16px out of the input row.\nconst addonVariants = cva(['tw-flex', 'tw-items-center', 'tw-gap-1'], {\n defaultVariants: {\n align: 'inline-start',\n },\n variants: {\n align: {\n 'inline-start': ['tw-order-first', '[&:not(:empty)]:tw-pl-4'],\n 'inline-end': ['tw-order-last', '[&:not(:empty)]:tw-pr-4'],\n 'block-start': [\n 'tw-order-first',\n // `tw-w-full` needs to be empty-conditional too — when the addon\n // has no content the root stays in flex-row, and a 100%-wide\n // empty addon would claim half of the input row beside the input.\n '[&:not(:empty)]:tw-w-full',\n '[&:not(:empty)]:tw-px-4',\n '[&:not(:empty)]:tw-py-1.5',\n ],\n 'block-end': [\n 'tw-order-last',\n '[&:not(:empty)]:tw-w-full',\n '[&:not(:empty)]:tw-px-4',\n '[&:not(:empty)]:tw-py-1.5',\n ],\n },\n },\n});\n\ntype Props = ComponentProps<'div'> & VariantProps<typeof addonVariants>;\n\nexport const InputGroupAddon = ({\n children,\n align = 'inline-start',\n className,\n ...props\n}: Props) => (\n <div {...props} data-align={align} className={cn(addonVariants({ align, className }))}>\n {children}\n </div>\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\n\ntype ButtonProps = ComponentProps<typeof Button>;\n\ntype Props = Omit<ButtonProps, 'size' | 'block' | 'variant'>;\n\nexport const InputGroupButton = ({\n ref,\n className,\n tabIndex = -1,\n ...props\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => (\n <Button\n argo\n {...props}\n tabIndex={tabIndex}\n ref={ref}\n variant=\"invisible\"\n size=\"icon-sm\"\n className={cn('tw-size-5', '[&_svg]:tw-text-muted-foreground', className)}\n />\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'input'>;\n\nexport const InputGroupInput = ({\n ref,\n className,\n ...inputProps\n}: Props & { ref?: Ref<ElementRef<'input'>> }) => (\n <input\n {...inputProps}\n ref={ref}\n className={cn(\n 'tw-w-full',\n 'tw-bg-transparent',\n 'tw-outline-none',\n\n // font\n 'tw-font-sans',\n 'tw-text-sm',\n\n // placeholder\n 'placeholder:tw-text-neutral-400',\n 'placeholder:tw-font-normal',\n\n // disabled\n 'disabled:tw-cursor-not-allowed',\n\n className,\n )}\n />\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'span'>;\n\nexport const InputGroupText = ({ className, ...props }: Props) => (\n <span\n className={cn(\n 'tw-flex',\n 'tw-items-center',\n 'tw-gap-2',\n 'tw-text-sm',\n 'tw-text-muted-foreground',\n '[&_svg]:tw-pointer-events-none',\n '[&_svg:not([class*=\"tw-size-\"])]:tw-size-4',\n className,\n )}\n {...props}\n />\n);\n","import type { ChangeEventHandler, ComponentProps, ElementRef, FocusEventHandler, Ref } from 'react';\nimport TextareaAutosize from 'react-textarea-autosize';\n\nimport { cn } from '../../utils';\n\ntype TextareaNativeProps = Omit<\n ComponentProps<typeof TextareaAutosize>,\n 'value' | 'defaultValue' | 'rows' | 'maxRows'\n>;\n\ntype Props = TextareaNativeProps & {\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string) => void;\n onValueBlur?: (value: string) => void;\n maxRows?: number | 'unlimited';\n disableResize?: boolean;\n};\n\nexport const InputGroupTextArea = ({\n ref,\n className,\n onChange,\n onValueChange,\n value,\n defaultValue,\n onBlur,\n onValueBlur,\n disableResize = false,\n minRows = 1,\n maxRows = 4,\n ...props\n}: Props & { ref?: Ref<ElementRef<'textarea'>> }) => {\n const handleChange: ChangeEventHandler<HTMLTextAreaElement> = (event) => {\n onValueChange?.(event.target.value);\n onChange?.(event);\n };\n\n const handleBlur: FocusEventHandler<HTMLTextAreaElement> = (event) => {\n onValueBlur?.(event.target.value);\n onBlur?.(event);\n };\n\n return (\n <TextareaAutosize\n {...props}\n ref={ref}\n value={value ?? undefined}\n defaultValue={defaultValue ?? undefined}\n onChange={handleChange}\n onBlur={handleBlur}\n minRows={minRows}\n maxRows={maxRows === 'unlimited' ? undefined : maxRows}\n className={cn(\n 'tw-w-full',\n 'tw-bg-transparent',\n 'tw-outline-none',\n 'tw-px-4',\n\n // font\n 'tw-font-sans',\n 'tw-text-sm',\n\n // placeholder\n 'placeholder:tw-text-neutral-400',\n 'placeholder:tw-font-normal',\n\n // disabled\n 'disabled:tw-cursor-not-allowed',\n {\n 'tw-resize-none': disableResize,\n },\n\n className,\n )}\n />\n );\n};\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nimport { InputGroupAddon } from './InputGroupAddon';\nimport { InputGroupButton } from './InputGroupButton';\nimport { InputGroupInput } from './InputGroupInput';\nimport { InputGroupText } from './InputGroupText';\nimport { InputGroupTextArea } from './InputGroupTextArea';\n\nconst inputGroupVariants = cva(\n [\n 'tailwindcss-preflight',\n 'tw-group',\n\n 'tw-overflow-hidden',\n 'tw-box-border',\n\n // positioning\n 'tw-flex',\n 'tw-items-center',\n\n // base\n 'tw-rounded',\n 'tw-border',\n 'tw-border-solid',\n 'tw-border-neutral-200',\n 'tw-text-neutral-800',\n 'tw-transition',\n\n // focus\n 'has-[:is(input,textarea):focus]:tw-ring-4',\n\n // readonly\n 'has-[:is(input,textarea)[readonly]]:tw-bg-neutral-150',\n 'has-[:is(input,textarea)[readonly]]:focus-within:tw-ring-0',\n 'has-[:is(input,textarea)[readonly]]:tw-border-neutral-150',\n\n // disabled cursor (opacity owned by variant)\n 'has-[:is(input,textarea):disabled]:tw-cursor-not-allowed',\n\n // textarea: top-align addons, allow vertical expansion, own its y-padding\n 'has-[textarea]:tw-items-start',\n\n 'has-[[data-align=block-start]:not(:empty)]:tw-flex-wrap',\n 'has-[[data-align=block-end]:not(:empty)]:tw-flex-wrap',\n '[&>input]:has-[[data-align=block-start]:not(:empty)]:tw-w-auto',\n '[&>input]:has-[[data-align=block-start]:not(:empty)]:tw-flex-1',\n '[&>input]:has-[[data-align=block-end]:not(:empty)]:tw-w-auto',\n '[&>input]:has-[[data-align=block-end]:not(:empty)]:tw-flex-1',\n\n '[&>input]:tw-px-4',\n '[&>input]:has-[[data-align=inline-start]:not(:empty)]:tw-pl-2',\n '[&>input]:has-[[data-align=inline-end]:not(:empty)]:tw-pr-2',\n ],\n {\n defaultVariants: {\n variant: 'primary',\n state: 'default',\n sizing: 'default',\n focusVariant: 'default',\n },\n compoundVariants: [\n {\n variant: 'secondary',\n state: 'error',\n className: ['tw-bg-error-100'],\n },\n {\n variant: 'secondary',\n state: 'warning',\n className: ['tw-bg-warning-100'],\n },\n {\n variant: 'primary',\n state: 'default',\n focusVariant: 'off',\n className: ['has-[:is(input,textarea):focus]:tw-border-neutral-200'],\n },\n {\n variant: 'secondary',\n state: 'default',\n focusVariant: 'off',\n className: ['has-[:is(input,textarea):focus]:tw-border-neutral-100'],\n },\n {\n variant: ['primary', 'secondary'],\n state: 'error',\n focusVariant: 'on',\n className: ['!tw-border-error-500', '!tw-ring-error-200'],\n },\n {\n variant: ['primary', 'secondary'],\n state: 'warning',\n focusVariant: 'on',\n className: ['!tw-border-warning-500', '!tw-ring-warning-200'],\n },\n // --- argo ---\n {\n variant: 'argo',\n state: 'default',\n className: [\n 'has-[:is(input,textarea):focus]:tw-border-primary',\n 'has-[:is(input,textarea):focus]:tw-ring-primary/50',\n ],\n },\n {\n variant: 'argo',\n state: 'error',\n className: [\n 'tw-border-destructive',\n 'has-[:is(input,textarea):focus]:tw-border-destructive',\n 'has-[:is(input,textarea):focus]:tw-ring-destructive/20',\n ],\n },\n {\n variant: 'argo',\n focusVariant: 'on',\n className: ['!tw-border-primary', '!tw-ring-primary/50'],\n },\n {\n variant: 'argo',\n state: 'error',\n focusVariant: 'on',\n className: ['!tw-border-destructive', '!tw-ring-destructive/20'],\n },\n {\n variant: 'argo',\n state: 'default',\n focusVariant: 'off',\n className: ['has-[:is(input,textarea):focus]:tw-border-input'],\n },\n ],\n variants: {\n focusVariant: {\n default: [],\n on: ['!tw-border-secondary-500', '!tw-ring-secondary-200', '!tw-ring-4'],\n off: ['has-[:is(input,textarea):focus]:!tw-ring-0'],\n },\n variant: {\n primary: ['tw-bg-white', 'has-[:is(input,textarea):disabled]:tw-opacity-40'],\n secondary: [\n 'tw-bg-neutral-100',\n 'tw-border-neutral-100',\n 'has-[:is(input,textarea):disabled]:tw-opacity-40',\n ],\n argo: [\n 'tw-bg-background',\n 'tw-border-input',\n 'tw-rounded-lg',\n 'tw-text-foreground',\n 'has-[:is(input,textarea):disabled]:tw-opacity-50',\n // higher specificity than has-[:is(input,textarea):focus] — prevents focus border on readonly\n 'has-[:is(input,textarea)[readonly]:focus]:tw-border-neutral-150',\n ],\n },\n sizing: {\n default: [\n '[&>:is(input,textarea)]:tw-py-2.5',\n '[&>:is(input,textarea)]:tw-leading-[18px]',\n '[&>textarea]:!tw-min-h-[calc(2.5rem-2px)]',\n ],\n small: [\n '[&>:is(input,textarea)]:tw-py-2',\n '[&>:is(input,textarea)]:tw-leading-[16px]',\n '[&>textarea]:!tw-min-h-[calc(2rem-2px)]',\n ],\n medium: [\n '[&>:is(input,textarea)]:tw-py-2',\n '[&>:is(input,textarea)]:tw-leading-[18px]',\n '[&>textarea]:!tw-min-h-[calc(2.25rem-2px)]',\n ],\n },\n state: {\n default: [\n 'has-[:is(input,textarea):focus]:tw-border-secondary-500',\n 'has-[:is(input,textarea):focus]:tw-ring-secondary-200',\n ],\n error: [\n 'tw-border-error-500',\n 'has-[:is(input,textarea):focus]:tw-border-error-500',\n 'has-[:is(input,textarea):focus]:tw-ring-error-200',\n ],\n warning: [\n 'tw-border-warning-500',\n 'has-[:is(input,textarea):focus]:tw-border-warning-500',\n 'has-[:is(input,textarea):focus]:tw-ring-warning-200',\n ],\n },\n },\n },\n);\n\ntype Props = ComponentProps<'div'> & VariantProps<typeof inputGroupVariants>;\n\nconst InputGroupRoot = ({\n ref,\n children,\n state,\n variant,\n sizing,\n focusVariant,\n className,\n ...props\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => (\n <div\n {...props}\n ref={ref}\n className={cn(inputGroupVariants({ state, variant, sizing, focusVariant, className }))}\n >\n {children}\n </div>\n);\n\nexport const InputGroup = InputGroupRoot as typeof InputGroupRoot & {\n Input: typeof InputGroupInput;\n Addon: typeof InputGroupAddon;\n Button: typeof InputGroupButton;\n TextArea: typeof InputGroupTextArea;\n Text: typeof InputGroupText;\n};\n\nInputGroup.Input = InputGroupInput;\nInputGroup.Addon = InputGroupAddon;\nInputGroup.Button = InputGroupButton;\nInputGroup.TextArea = InputGroupTextArea;\nInputGroup.Text = InputGroupText;\n","import { createPrefixedString } from '../../utils';\n\nexport const genInputTestId = (prefix: string = '') => {\n const ps = createPrefixedString(prefix);\n return {\n toString: () => prefix,\n inputWrapper: ps`input-wrapper`,\n input: ps`input`,\n clearButton: ps`clear-button`,\n };\n};\n","import { useRef, useState } from 'react';\nimport type {\n ChangeEventHandler,\n ComponentProps,\n ElementRef,\n FocusEventHandler,\n MouseEventHandler,\n ReactNode,\n Ref,\n} from 'react';\n\nimport { cn, createChangeInputEvent, mergeRefs } from '../../utils';\nimport { InputGroup } from '../InputGroup/InputGroup';\n\nimport { genInputTestId } from './utils';\n\ntype InputGroupProps = Pick<\n ComponentProps<typeof InputGroup>,\n 'variant' | 'focusVariant' | 'sizing' | 'state'\n>;\n\ntype OwnProps = {\n prefix?: ReactNode;\n rightSuffix?: ReactNode;\n rightSuffixVariant?: 'addon' | 'default';\n leftSuffix?: ReactNode;\n allowClear?: boolean;\n onClear?: () => void;\n testId?: string;\n value?: ComponentProps<'input'>['value'] | null;\n defaultValue?: ComponentProps<'input'>['defaultValue'] | null;\n};\n\ntype Props = InputGroupProps &\n OwnProps &\n Omit<ComponentProps<'input'>, 'prefix' | 'value' | 'defaultValue'>;\n\nexport const Input = ({\n ref: forwardedRef,\n state = 'default',\n sizing = 'default',\n className,\n prefix = null,\n rightSuffix = null,\n rightSuffixVariant = 'default',\n leftSuffix = null,\n allowClear = false,\n onClear,\n disabled = false,\n testId: prefixTestId = '',\n autoFocus = false,\n id,\n name,\n variant,\n readOnly,\n type = 'text',\n focusVariant = 'default',\n onChange,\n onBlur,\n value,\n defaultValue,\n ...inputProps\n}: Props & { ref?: Ref<ElementRef<'input'>> }) => {\n const [hasUncontrolledValue, setHasUncontrolledValue] = useState(() => !!defaultValue);\n const hasValue = !!value || hasUncontrolledValue;\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const testId = genInputTestId(prefixTestId);\n const isClearButtonVisible = (hasValue && !disabled && !readOnly) || !!onClear;\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n const val = event.target.value;\n setHasUncontrolledValue(val !== '');\n onChange?.(event);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n const val = event.target.value;\n setHasUncontrolledValue(val !== '');\n onBlur?.(event);\n };\n\n const handleClear: MouseEventHandler<HTMLButtonElement> = () => {\n if (inputRef.current === null) return;\n inputRef.current.value = ''; // necessary for uncontrolled state\n inputRef.current.focus();\n onClear?.();\n setHasUncontrolledValue(false);\n onChange?.(createChangeInputEvent(inputRef.current));\n };\n\n const isControlled = value !== undefined;\n const valueProp = isControlled ? { value: value ?? '' } : { defaultValue: defaultValue ?? '' };\n\n return (\n <InputGroup\n state={state}\n variant={variant}\n sizing={sizing}\n focusVariant={focusVariant}\n className={className}\n data-testid={testId.inputWrapper}\n >\n {prefix && <InputGroup.Addon align=\"inline-start\">{prefix}</InputGroup.Addon>}\n\n <InputGroup.Input\n {...inputProps}\n {...valueProp}\n autoFocus={autoFocus}\n type={type}\n onChange={handleChange}\n onBlur={handleBlur}\n ref={mergeRefs(forwardedRef ?? null, inputRef)}\n disabled={disabled}\n id={id}\n name={name}\n readOnly={readOnly}\n data-testid={testId.input}\n />\n\n {(leftSuffix || allowClear || rightSuffix) && (\n <InputGroup.Addon align=\"inline-end\">\n {leftSuffix}\n {allowClear && isClearButtonVisible && (\n <InputGroup.Button\n icon=\"xmark\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={handleClear}\n data-testid={testId.clearButton}\n />\n )}\n {rightSuffix && (\n <div\n className={cn({\n 'tw-whitespace-nowrap tw-bg-neutral-200 tw-px-4 -tw-mr-4 tw-py-2.5':\n rightSuffixVariant === 'addon',\n })}\n >\n {rightSuffix}\n </div>\n )}\n </InputGroup.Addon>\n )}\n </InputGroup>\n );\n};\n","export const formatDate = (date: Date | null | undefined, inputValue: string): string => {\n if (!date) {\n return inputValue;\n }\n return date.toLocaleDateString();\n};\n\n// Detect locale day/month/year order once, matching toLocaleDateString() output\nconst datePartOrder = new Intl.DateTimeFormat()\n .formatToParts(new Date(2000, 0, 2))\n .filter(\n (p): p is { type: 'day' | 'month' | 'year'; value: string } =>\n p.type === 'day' || p.type === 'month' || p.type === 'year',\n )\n .map((p) => p.type);\n\nexport const parseDate = (value: string): Date | null => {\n if (!value.trim()) return null;\n\n // Try locale-aware parsing first (matches toLocaleDateString round-trip)\n const nums = value.match(/\\d+/g)?.map(Number);\n if (nums && nums.length >= 3) {\n const parts = Object.fromEntries(datePartOrder.map((type, i) => [type, nums[i]]));\n const year = parts.year;\n const month = parts.month;\n const day = parts.day;\n\n if (\n year != null &&\n month != null &&\n day != null &&\n month >= 1 &&\n month <= 12 &&\n day >= 1 &&\n day <= 31\n ) {\n const date = new Date(year, month - 1, day);\n if (date.getFullYear() === year && date.getMonth() === month - 1 && date.getDate() === day) {\n return date;\n }\n }\n }\n\n // Fallback: detect ISO YYYY-MM-DD and construct as local midnight to avoid UTC offset issues\n const isoMatch = value.match(/^(\\d{4})-(\\d{1,2})-(\\d{1,2})$/);\n if (isoMatch) {\n const y = Number(isoMatch[1]);\n const m = Number(isoMatch[2]) - 1;\n const d = Number(isoMatch[3]);\n const date = new Date(y, m, d);\n if (date.getFullYear() === y && date.getMonth() === m && date.getDate() === d) {\n return date;\n }\n return null;\n }\n\n const fallback = new Date(value);\n return isNaN(fallback.getTime()) ? null : fallback;\n};\n","import { useState } from 'react';\nimport type { ChangeEventHandler, ComponentProps, ElementRef, FocusEventHandler, Ref } from 'react';\nimport type { Matcher } from 'react-day-picker';\n\nimport { Button } from '../../Button';\nimport { DatePicker } from '../../DatePicker';\nimport { Input } from '../Input';\n\nimport { formatDate, parseDate } from './helpers';\n\ntype InputProps = ComponentProps<typeof Input>;\n\ntype Props = Omit<InputProps, 'type' | 'value' | 'defaultValue'> & {\n defaultValue?: Date | null;\n disabledDays?: Matcher | Matcher[];\n endMonth?: Date;\n onValueBlur?: (value: Date | null) => void;\n onValueChange?: (value: Date | null) => void;\n startMonth?: Date;\n value?: Date | null;\n};\n\nexport const DateInput = ({\n ref,\n defaultValue,\n disabled,\n disabledDays,\n endMonth,\n onBlur,\n onChange,\n onValueBlur,\n onValueChange,\n placeholder = 'Select a date',\n readOnly,\n startMonth,\n value,\n ...props\n}: Props & { ref?: Ref<ElementRef<'input'>> }) => {\n const [inputValue, setInputValue] = useState('');\n const [hasFocus, setHasFocus] = useState(false);\n const [isOpen, setIsOpen] = useState(false);\n const [internalValue, setInternalValue] = useState<Date | null>(defaultValue ?? null);\n const [month, setMonth] = useState<Date>(new Date());\n\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n const newValue = event.target.value;\n setInputValue(newValue);\n onChange?.(event);\n\n const parsedDate = parseDate(newValue);\n if (parsedDate !== null || !newValue.trim()) {\n onValueChange?.(parsedDate);\n }\n };\n\n const handleFocus: FocusEventHandler<HTMLInputElement> = (event) => {\n const formatted = formatDate(currentValue, '');\n setInputValue(formatted);\n setHasFocus(true);\n props.onFocus?.(event);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n setHasFocus(false);\n onBlur?.(event);\n\n const parsedDate = parseDate(event.target.value);\n onValueBlur?.(parsedDate);\n\n if (!isControlled) {\n setInternalValue(parsedDate);\n }\n };\n\n const handleDatePickerChange = (newValue?: Date) => {\n const dateValue = newValue ?? null;\n\n if (isControlled) {\n onValueChange?.(dateValue);\n } else {\n setInternalValue(dateValue);\n onValueChange?.(dateValue);\n }\n\n setHasFocus(false);\n setIsOpen(false);\n };\n\n const handleClear = () => {\n setInputValue('');\n setInternalValue(null);\n onValueChange?.(null);\n };\n\n const handleOpenChange = (open: boolean) => {\n if (open) {\n setMonth(currentValue ?? new Date());\n }\n setIsOpen(open);\n };\n\n const displayValue = hasFocus ? inputValue : formatDate(currentValue, '');\n\n return (\n <Input\n {...props}\n disabled={disabled}\n onBlur={handleBlur}\n onChange={handleChange}\n onClear={handleClear}\n onFocus={handleFocus}\n placeholder={placeholder}\n readOnly={readOnly}\n ref={ref}\n value={displayValue}\n rightSuffix={\n !disabled && !readOnly ? (\n <DatePicker\n disabled={disabledDays}\n endMonth={endMonth}\n mode=\"single\"\n month={month}\n onMonthChange={setMonth}\n onOpenChange={handleOpenChange}\n onSelect={handleDatePickerChange}\n open={isOpen}\n selected={currentValue ?? undefined}\n startMonth={startMonth}\n >\n <Button aria-label=\"Select Date\" icon=\"calendar\" variant=\"inline\" size=\"icon-3xs\" />\n </DatePicker>\n ) : undefined\n }\n type=\"text\"\n />\n );\n};\n","import type { DateRange } from 'react-day-picker';\n\nexport const formatDateRange = (\n range: DateRange | null | undefined,\n inputValue: string,\n): string => {\n if (!range) {\n return inputValue;\n }\n\n const { from, to } = range;\n const fromStr = from?.toLocaleDateString();\n const toStr = to?.toLocaleDateString();\n return `${fromStr} - ${toStr}`;\n};\n\nexport const parseDateRange = (value: string): DateRange | null => {\n const parts = value.split(' - ');\n if (parts.length !== 2) {\n return null;\n }\n\n const [fromPart, toPart] = parts;\n if (!fromPart || !toPart) {\n return null;\n }\n\n const from = new Date(fromPart.trim());\n const to = new Date(toPart.trim());\n\n if (isNaN(from.getTime()) || isNaN(to.getTime())) {\n return null;\n }\n\n return { from, to };\n};\n","import { useState } from 'react';\nimport type { ChangeEventHandler, ComponentProps, ElementRef, FocusEventHandler, Ref } from 'react';\nimport type { DateRange } from 'react-day-picker';\n\nimport { Button } from '../../Button';\nimport { DatePicker } from '../../DatePicker';\nimport { Input } from '../Input';\n\nimport { formatDateRange, parseDateRange } from './helpers';\n\ntype InputProps = ComponentProps<typeof Input>;\n\ntype Props = Omit<InputProps, 'type' | 'value' | 'defaultValue'> & {\n defaultValue?: DateRange | null;\n endMonth?: Date;\n onValueBlur?: (value: DateRange | null) => void;\n onValueChange?: (value: DateRange | null) => void;\n startMonth?: Date;\n value?: DateRange | null;\n};\n\nexport const DateRangeInput = ({\n ref,\n defaultValue,\n disabled,\n endMonth,\n onBlur,\n onChange,\n onValueBlur,\n onValueChange,\n placeholder = 'Select a date range',\n readOnly,\n startMonth,\n value,\n ...props\n}: Props & { ref?: Ref<ElementRef<'input'>> }) => {\n const [inputValue, setInputValue] = useState('');\n const [hasFocus, setHasFocus] = useState(false);\n const [isOpen, setIsOpen] = useState(false);\n const [internalValue, setInternalValue] = useState<DateRange | null>(defaultValue ?? null);\n const [month, setMonth] = useState<Date>(new Date());\n\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n const newValue = event.target.value;\n setInputValue(newValue);\n onChange?.(event);\n\n const parsedRange = parseDateRange(newValue);\n if (parsedRange !== null || !newValue.trim()) {\n onValueChange?.(parsedRange);\n }\n };\n\n const handleFocus: FocusEventHandler<HTMLInputElement> = (event) => {\n const formatted = formatDateRange(currentValue, '');\n setInputValue(formatted);\n setHasFocus(true);\n props.onFocus?.(event);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n setHasFocus(false);\n onBlur?.(event);\n\n const parsedRange = parseDateRange(event.target.value);\n onValueBlur?.(parsedRange);\n\n if (!isControlled) {\n setInternalValue(parsedRange);\n }\n };\n\n const handleDatePickerChange = (newValue: DateRange | undefined) => {\n const rangeValue = newValue ?? null;\n\n if (isControlled) {\n onValueChange?.(rangeValue);\n } else {\n setInternalValue(rangeValue);\n onValueChange?.(rangeValue);\n }\n\n setHasFocus(false);\n };\n\n const handleClear = () => {\n setInputValue('');\n setInternalValue(null);\n onValueChange?.(null);\n };\n\n const handleOpenChange = (open: boolean) => {\n if (open) {\n setMonth(currentValue?.from ?? new Date());\n }\n setIsOpen(open);\n };\n\n const displayValue = hasFocus ? inputValue : formatDateRange(currentValue, '');\n\n return (\n <Input\n {...props}\n disabled={disabled}\n onBlur={handleBlur}\n onChange={handleChange}\n onClear={handleClear}\n onFocus={handleFocus}\n placeholder={placeholder}\n readOnly={readOnly}\n ref={ref}\n value={displayValue}\n rightSuffix={\n !disabled && !readOnly ? (\n <DatePicker\n endMonth={endMonth}\n mode=\"range\"\n month={month}\n onMonthChange={setMonth}\n onOpenChange={handleOpenChange}\n onSelect={handleDatePickerChange}\n open={isOpen}\n startMonth={startMonth}\n selected={currentValue ?? undefined}\n >\n <Button\n aria-label=\"Select Date Range\"\n icon=\"calendar\"\n variant=\"inline\"\n size=\"icon-3xs\"\n />\n </DatePicker>\n ) : undefined\n }\n type=\"text\"\n />\n );\n};\n","import type { ChangeEventHandler, ComponentProps, ElementRef, FocusEventHandler, Ref } from 'react';\n\nimport { Input } from '../Input';\n\ntype NativeProps = Omit<\n ComponentProps<typeof Input>,\n 'type' | 'value' | 'defaultValue' | 'accept' | 'step'\n>;\n\ntype OwnProps = {\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string) => void;\n onValueBlur?: (value: string) => void;\n type?: 'text' | 'email' | 'password' | 'datetime-local' | 'date';\n};\n\nexport type Props = OwnProps & NativeProps;\n\nconst sanitizeTextInputValue = (value: string | null | undefined) => {\n if (typeof value === 'string' && value.trim() === '') return '';\n return value;\n};\n\nexport const TextInput = ({\n ref,\n value,\n defaultValue,\n type = 'text',\n onValueChange,\n onChange,\n onValueBlur,\n onBlur,\n ...props\n}: Props & { ref?: Ref<ElementRef<'input'>> }) => {\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n onValueChange?.(event.target.value);\n onChange?.(event);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n onValueBlur?.(event.target.value);\n onBlur?.(event);\n };\n\n return (\n <Input\n {...props}\n ref={ref}\n onChange={handleChange}\n onBlur={handleBlur}\n type={type}\n value={sanitizeTextInputValue(value)}\n defaultValue={sanitizeTextInputValue(defaultValue)}\n />\n );\n};\n","import { useState } from 'react';\nimport type { ChangeEventHandler, ComponentProps, ElementRef, FocusEventHandler, Ref } from 'react';\n\nimport { cn } from '../../../utils';\nimport { Button } from '../../Button';\nimport { TimePicker } from '../../TimePicker';\nimport { Input } from '../Input';\n\ntype InputProps = ComponentProps<typeof Input>;\n\ntype Props = Omit<\n InputProps,\n 'type' | 'value' | 'defaultValue' | 'rightSuffix' | 'rightSuffixVariant'\n> & {\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string | null) => void;\n onValueBlur?: (value: string | null) => void;\n};\n\nexport const TimeInput = ({\n ref,\n defaultValue,\n disabled,\n onBlur,\n onChange,\n onValueBlur,\n onValueChange,\n placeholder = 'Select time',\n readOnly,\n value,\n className,\n ...props\n}: Props & { ref?: Ref<ElementRef<'input'>> }) => {\n const [isOpen, setIsOpen] = useState(false);\n const [internalValue, setInternalValue] = useState<string | null>(defaultValue ?? null);\n\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n const newValue = event.target.value || null;\n onChange?.(event);\n onValueChange?.(newValue);\n\n if (!isControlled) {\n setInternalValue(newValue);\n }\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n const newValue = event.target.value || null;\n onBlur?.(event);\n onValueBlur?.(newValue);\n\n if (!isControlled) {\n setInternalValue(newValue);\n }\n };\n\n const handleTimePickerSelect = (time: string) => {\n if (!isControlled) setInternalValue(time);\n onValueChange?.(time);\n };\n\n const handleClear = () => {\n if (!isControlled) setInternalValue(null);\n onValueChange?.(null);\n };\n\n const handleOpenChange = (open: boolean) => {\n setIsOpen(open);\n };\n\n return (\n <Input\n {...props}\n ref={ref}\n type=\"time\"\n disabled={disabled}\n readOnly={readOnly}\n placeholder={placeholder}\n // hide native time picker indicator to avoid confusion with custom picker\n className={cn('[&_input::-webkit-calendar-picker-indicator]:tw-hidden', className)}\n value={currentValue}\n onChange={handleChange}\n onBlur={handleBlur}\n onClear={currentValue ? handleClear : undefined}\n rightSuffix={\n !disabled && !readOnly ? (\n <TimePicker\n open={isOpen}\n onOpenChange={handleOpenChange}\n onSelect={handleTimePickerSelect}\n selected={currentValue}\n >\n <Button aria-label=\"Select Time\" icon=\"clock\" variant=\"inline\" size=\"icon-3xs\" />\n </TimePicker>\n ) : undefined\n }\n />\n );\n};\n","import type { LabelProps as RLabelProps } from '@radix-ui/react-label';\nimport * as RLabel from '@radix-ui/react-label';\n\nimport { cn } from '../../utils';\n\ntype LabelProps = { id?: string | number; htmlFor?: string | number } & Omit<\n RLabelProps,\n 'id' | 'htmlFor'\n>;\n\nconst Optional = ({ className }: { className?: string }) => (\n <span className={cn('tw-text-neutral-400', className)}>(optional)</span>\n);\n\nexport const Label = ({ className, children, id, htmlFor, ...rest }: LabelProps) => {\n return (\n <RLabel.Root\n {...rest}\n id={id?.toString()}\n htmlFor={htmlFor?.toString()}\n className={cn(\n 'tw-m-0 tw-text-neutral-800 tw-font-normal peer-disabled:tw-opacity-50',\n className,\n )}\n >\n {children}\n </RLabel.Root>\n );\n};\n\nLabel.Optional = Optional;\n","import type { HTMLAttributes } from 'react';\n\ntype Props = HTMLAttributes<HTMLDivElement>;\n\nexport const CardContent = ({ children, ...rest }: Props) => <div {...rest}>{children}</div>;\n","import type { HTMLAttributes } from 'react';\n\ntype Props = HTMLAttributes<HTMLDivElement>;\n\nexport const CardHeader = ({ children, ...rest }: Props) => <div {...rest}>{children}</div>;\n","import { cva } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nexport const cardClassnames = cva(\n ['tw-bg-white', 'tw-flex', 'tw-flex-col', 'tw-rounded-lg', 'tw-gap-4'],\n {\n defaultVariants: {\n padding: 'small',\n },\n variants: {\n bordered: {\n true: 'tw-border tw-border-solid tw-border-neutral-200',\n false: 'tw-shadow-[0_2px_6px_0_rgba(100,135,153,0.13)]',\n },\n padding: {\n none: 'tw-p-0',\n small: 'tw-px-6 tw-py-4',\n medium: 'tw-p-7',\n large: 'tw-p-8',\n },\n },\n },\n);\n\nexport const cardTitleClassnames = cn(\n 'tw-m-0',\n 'tw-leading-6',\n 'tw-font-medium',\n 'tw-text-base',\n 'tw-neutral-800',\n);\n","import type { HTMLAttributes } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { cardTitleClassnames } from './styles';\n\ntype Props = HTMLAttributes<HTMLHeadingElement>;\n\nexport const CardTitle = ({ children, className, ...rest }: Props) => (\n <h3 className={cn(cardTitleClassnames, className)} {...rest}>\n {children}\n </h3>\n);\n","import type { HTMLAttributes } from 'react';\nimport type { VariantProps } from 'class-variance-authority';\n\nimport { CardContent } from './CardContent';\nimport { CardHeader } from './CardHeader';\nimport { CardTitle } from './CardTitle';\nimport { cardClassnames } from './styles';\n\ntype Props = HTMLAttributes<HTMLDivElement> & VariantProps<typeof cardClassnames>;\n\nexport const Card = ({\n children,\n className,\n bordered = false,\n padding = 'small',\n ...rest\n}: Props) => (\n <div className={cardClassnames({ className, bordered, padding })} {...rest}>\n {children}\n </div>\n);\n\nCard.Header = CardHeader;\nCard.Content = CardContent;\nCard.Title = CardTitle;\n","import { useState } from 'react';\nimport type { ComponentProps, ElementRef, MouseEventHandler, Ref } from 'react';\n\nimport type { TooltipProps } from '@keboola/design';\nimport { cn, Tooltip } from '@keboola/design';\n\nimport { copyToClipboard } from '../../utils';\n\ntype Props = {\n tooltip?: TooltipProps['tooltip'];\n tooltipPlacement?: TooltipProps['placement'];\n tooltipVariant?: TooltipProps['variant'];\n asChild?: TooltipProps['triggerAsChild'];\n text?: string | (() => string);\n} & ComponentProps<'button'>;\n\nexport const Clipboard = ({\n ref,\n text: textProp,\n children,\n tooltip = 'Copy to Clipboard',\n tooltipPlacement = 'top',\n tooltipVariant: tooltipVariantProp = 'action',\n asChild = false,\n onClick,\n className,\n ...restButtonProps\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => {\n const [isTooltipOpen, setIsTooltipOpen] = useState(false);\n const [state, setState] = useState<'ready' | 'copied' | 'error'>('ready');\n const text = typeof textProp === 'function' ? textProp() : textProp;\n\n const copy = async (text: string) => {\n try {\n // For the clipboard feature to work reliably, the window must be in focus for security reasons.\n // However, the button can be clicked without the window being focused.\n if (!document.hasFocus()) window.focus();\n\n await copyToClipboard(text);\n setState('copied');\n } catch {\n setState('error');\n }\n };\n\n const handleOnClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n if (text && state === 'ready') void copy(text);\n onClick?.(event);\n };\n\n const handleOnOpenChange: ComponentProps<typeof Tooltip.Root>['onOpenChange'] = (open) => {\n // Reset when the tooltip closes, allowing the user to leave the copy button.\n if (!open && state !== 'ready') setState('ready');\n setIsTooltipOpen(open);\n };\n\n const tooltipContent = (() => {\n if (!text) return 'Nothing to copy';\n if (state === 'error') return 'Failed to copy';\n if (state === 'copied') return 'Copied to Clipboard';\n return tooltip;\n })();\n\n const tooltipVariant: TooltipProps['variant'] =\n state === 'ready' && !!text ? tooltipVariantProp : 'action';\n\n return (\n <Tooltip.Root open={isTooltipOpen} onOpenChange={handleOnOpenChange}>\n <Tooltip.Trigger\n {...restButtonProps}\n asChild={asChild}\n keepOpenOnClick\n onClick={handleOnClick}\n className={cn('tw-cursor-pointer', className)}\n ref={ref}\n >\n {children ?? text}\n </Tooltip.Trigger>\n\n <Tooltip.Content\n keepOpenOnPointerDownOutside\n placement={tooltipPlacement}\n variant={tooltipVariant}\n >\n {tooltipContent}\n </Tooltip.Content>\n </Tooltip.Root>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'span'>;\n\nexport const FieldBoxDescription = ({ className, ...props }: Props) => (\n <span\n {...props}\n data-slot=\"field-box-description\"\n className={cn(\n 'tw-text-xs',\n 'tw-text-muted-foreground',\n 'group-has-[:disabled]/field-box:tw-opacity-50',\n className,\n )}\n />\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'span'>;\n\nexport const FieldBoxTitle = ({ className, ...props }: Props) => (\n <span\n {...props}\n data-slot=\"field-box-title\"\n className={cn(\n 'tw-text-sm',\n 'tw-font-medium',\n 'tw-text-foreground',\n 'group-has-[:disabled]/field-box:tw-cursor-not-allowed',\n 'group-has-[:disabled]/field-box:tw-opacity-50',\n className,\n )}\n />\n);\n","import { cva } from 'class-variance-authority';\n\nexport const fieldBoxVariants = cva(\n [\n 'tw-group/field-box',\n 'tw-m-0',\n 'tw-inline-flex',\n 'tw-gap-3',\n 'tw-items-center',\n 'has-[[data-slot=field-box-description]]:tw-items-start',\n 'tw-cursor-pointer',\n 'tw-select-none',\n 'has-[:disabled]:tw-cursor-not-allowed',\n ],\n {\n variants: {\n variant: {\n default: [],\n boxed: [\n 'tw-rounded-lg',\n 'tw-border',\n 'tw-border-solid',\n 'tw-border-border',\n 'tw-p-3',\n 'tw-transition-colors',\n 'has-[[data-state=checked]]:tw-border-primary',\n 'has-[[data-state=checked]]:tw-bg-accent',\n 'has-[[data-state=indeterminate]]:tw-border-primary',\n 'has-[[data-state=indeterminate]]:tw-bg-accent',\n ],\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n","import type { ComponentProps, ElementRef, ReactNode, Ref } from 'react';\nimport type { VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nimport { FieldBoxDescription } from './FieldBoxDescription';\nimport { FieldBoxTitle } from './FieldBoxTitle';\nimport { fieldBoxVariants } from './styles';\n\ntype Props = {\n control: ReactNode;\n position?: 'start' | 'end';\n} & ComponentProps<'label'> &\n VariantProps<typeof fieldBoxVariants>;\n\nconst FieldBoxRoot = ({\n ref,\n className,\n variant,\n position = 'start',\n control,\n children,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'label'>> }) => (\n <label\n {...rest}\n ref={ref}\n className={cn(\n fieldBoxVariants({ variant, className }),\n position === 'end' && 'tw-flex-row-reverse',\n )}\n >\n <span className=\"tw-inline-flex tw-min-h-5 tw-shrink-0 tw-items-center\">{control}</span>\n {children != null && (\n <span className=\"tw-flex tw-flex-1 tw-flex-col tw-gap-0.5\">{children}</span>\n )}\n </label>\n);\n\nexport const FieldBox = Object.assign(FieldBoxRoot, {\n Title: FieldBoxTitle,\n Description: FieldBoxDescription,\n});\n","import { cva } from 'class-variance-authority';\n\nexport const switchVariants = cva(\n [\n 'tailwindcss-preflight',\n 'tw-shrink-0',\n 'tw-cursor-pointer',\n 'disabled:tw-cursor-not-allowed',\n 'disabled:tw-opacity-50',\n ],\n {\n defaultVariants: {\n size: 'medium',\n variant: 'default',\n },\n variants: {\n variant: {\n default: [\n 'tw-peer/switch',\n 'tw-group/switch',\n 'tw-relative',\n\n // positioning\n 'tw-flex',\n 'tw-items-center',\n 'tw-gap-2',\n\n 'tw-min-h-5',\n\n // label\n 'tw-text-neutral-800',\n 'tw-font-normal',\n\n // before pseudo element\n 'before:tw-content-[\" \"]',\n 'before:tw-block',\n 'before:tw-relative',\n\n // color\n 'aria-checked:before:tw-bg-primary-500',\n 'before:tw-bg-neutral-200',\n\n // hover\n 'aria-checked:before:hover:tw-bg-primary-600',\n 'before:hover:tw-bg-neutral-300',\n\n // disabled\n 'before:disabled:hover:tw-bg-neutral-200',\n\n // others\n 'tw-transition-colors',\n\n 'focus-visible:tw-outline-none',\n 'before:focus-visible:tw-outline',\n 'before:focus-visible:tw-outline-1',\n 'before:focus-visible:tw-outline-secondary-500',\n 'before:focus-visible:tw-ring-4',\n 'before:focus-visible:tw-ring-secondary-200',\n ],\n argo: [\n 'tw-peer',\n 'tw-inline-flex',\n 'tw-items-center',\n\n // track\n 'tw-w-9',\n 'tw-h-5',\n 'tw-rounded-full',\n 'tw-border',\n 'tw-border-transparent',\n 'tw-bg-input',\n 'tw-transition-colors',\n\n // checked\n 'data-[state=checked]:tw-bg-primary',\n\n // focus\n 'focus-visible:tw-outline-none',\n 'focus-visible:tw-border-primary',\n 'focus-visible:tw-ring-3',\n 'focus-visible:tw-ring-primary/50',\n ],\n },\n size: {\n small: [],\n medium: [],\n large: [],\n },\n },\n compoundVariants: [\n {\n variant: 'default',\n size: 'small',\n class: ['before:tw-w-6', 'before:tw-h-4', 'before:tw-rounded-lg'],\n },\n {\n variant: 'default',\n size: 'medium',\n class: ['before:tw-w-8', 'before:tw-h-4', 'before:tw-rounded-lg'],\n },\n {\n variant: 'default',\n size: 'large',\n class: ['before:tw-w-10', 'before:tw-h-5', 'before:tw-rounded-xl'],\n },\n ],\n },\n);\n\nexport const thumbVariants = cva(\n ['tw-block', 'tw-shrink-0', 'tw-pointer-events-none', 'tw-bg-white', 'tw-rounded-full'],\n {\n defaultVariants: {\n size: 'medium',\n variant: 'default',\n },\n variants: {\n variant: {\n default: [\n 'tw-absolute',\n 'tw-left-0',\n 'tw-transition-transform',\n 'tw-ease-in-out',\n 'tw-shadow-[0_2px_5px_rgba(0,0,0,.26)]',\n ],\n argo: [\n 'tw-size-4',\n 'tw-shadow-sm',\n 'tw-transition-transform',\n 'data-[state=checked]:tw-translate-x-[16px]',\n 'data-[state=unchecked]:tw-translate-x-0.5',\n ],\n },\n size: {\n small: [],\n medium: [],\n large: [],\n },\n },\n compoundVariants: [\n {\n variant: 'default',\n size: 'small',\n class: [\n 'tw-w-3',\n 'tw-h-3',\n 'data-[state=checked]:tw-translate-x-2.5',\n 'data-[state=unchecked]:tw-translate-x-0.5',\n ],\n },\n {\n variant: 'default',\n size: 'medium',\n class: [\n 'tw-w-3',\n 'tw-h-3',\n 'data-[state=checked]:tw-translate-x-[18px]',\n 'data-[state=unchecked]:tw-translate-x-0.5',\n ],\n },\n {\n variant: 'default',\n size: 'large',\n class: [\n 'tw-w-3.5',\n 'tw-h-3.5',\n 'data-[state=checked]:tw-translate-x-6',\n 'data-[state=unchecked]:tw-translate-x-0.5',\n ],\n },\n ],\n },\n);\n","import { useId } from 'react';\nimport type { ComponentProps, ElementRef, ReactNode, Ref } from 'react';\nimport { Root, Thumb } from '@radix-ui/react-switch';\nimport type { VariantProps } from 'class-variance-authority';\n\nimport { FieldBox } from '../FieldBox';\nimport type { fieldBoxVariants } from '../FieldBox/styles';\n\nimport { switchVariants, thumbVariants } from './styles';\n\ntype Props = {\n id?: string | number;\n children?: ReactNode;\n argo?: boolean;\n description?: ReactNode;\n variant?: VariantProps<typeof fieldBoxVariants>['variant'];\n position?: 'start' | 'end';\n} & Omit<ComponentProps<typeof Root>, 'asChild' | 'id'> &\n Omit<VariantProps<typeof switchVariants>, 'variant'>;\n\nexport const Switch = ({\n ref,\n className,\n size,\n disabled = false,\n id: idProp,\n children,\n argo = false,\n description,\n variant,\n position,\n ...props\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => {\n const fallbackId = useId();\n const id = idProp?.toString() ?? fallbackId;\n const switchVariant = argo ? 'argo' : 'default';\n\n const switchElement = (\n <Root\n {...props}\n ref={ref}\n id={id}\n disabled={disabled}\n className={switchVariants({ className, size, variant: switchVariant })}\n >\n <Thumb className={thumbVariants({ size, variant: switchVariant })} />\n </Root>\n );\n\n if (!children) return switchElement;\n\n return (\n <FieldBox htmlFor={id} variant={variant} position={position} control={switchElement}>\n <FieldBox.Title>{children}</FieldBox.Title>\n {description && <FieldBox.Description>{description}</FieldBox.Description>}\n </FieldBox>\n );\n};\n","import type { ReactNode } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nconst helpVariants = cva(['tw-m-0', 'tw-text-xs'], {\n defaultVariants: {\n state: 'default',\n },\n variants: {\n state: {\n default: ['tw-text-neutral-500'],\n error: ['tw-text-error-500'],\n warning: ['tw-text-warning-500'],\n },\n },\n});\n\ntype Props = {\n className?: string;\n children?: ReactNode;\n testId?: string;\n} & VariantProps<typeof helpVariants>;\n\nexport const HelpBlock = ({ children, className, state = 'default', testId }: Props) => {\n if (!children) return null;\n\n return (\n <p data-testid={testId} className={helpVariants({ state, className })}>\n {children}\n </p>\n );\n};\n","import type { ComponentPropsWithoutRef, ElementRef, Ref } from 'react';\nimport { Content, Portal } from '@radix-ui/react-hover-card';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentPropsWithoutRef<typeof Content>;\n\nexport const HoverCardContent = ({\n ref,\n className,\n align = 'center',\n sideOffset = 4,\n children,\n ...props\n}: Props & { ref?: Ref<ElementRef<typeof Content>> }) => (\n <Portal>\n <Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n data-slot=\"hover-card-content\"\n className={cn(\n 'tailwindcss-preflight',\n 'tw-group/hover-card-content',\n 'tw-z-50',\n\n // border\n 'tw-box-border',\n 'tw-border',\n 'tw-border-neutral-150',\n 'tw-rounded-2xl',\n\n // sizing\n 'tw-min-w-32',\n 'tw-origin-[--radix-hover-card-content-transform-origin]',\n 'tw-max-h-[var(--radix-hover-card-content-available-height)]',\n\n // styles\n 'tw-bg-white',\n 'tw-p-4',\n 'tw-shadow-md',\n\n // directional animations\n 'data-[side=bottom]:tw-slide-in-from-top-2',\n 'data-[side=left]:tw-slide-in-from-right-2',\n 'data-[side=right]:tw-slide-in-from-left-2',\n 'data-[side=top]:tw-slide-in-from-bottom-2',\n\n // animations\n 'data-[state=open]:tw-animate-in',\n 'data-[state=open]:tw-fade-in-0',\n 'data-[state=open]:tw-zoom-in-95',\n 'data-[state=closed]:tw-animate-out',\n 'data-[state=closed]:tw-fade-out-0',\n 'data-[state=closed]:tw-zoom-out-95',\n className,\n )}\n {...props}\n >\n {children}\n </Content>\n </Portal>\n);\n","import type { ComponentProps } from 'react';\nimport { Root, Trigger } from '@radix-ui/react-hover-card';\n\nimport { HoverCardContent } from './HoverCardContent';\n\ntype Props = ComponentProps<typeof Root>;\n\nexport const HoverCard = ({ openDelay = 200, closeDelay = 200, ...rest }: Props) => (\n <Root {...rest} openDelay={openDelay} closeDelay={closeDelay} />\n);\n\nHoverCard.Content = HoverCardContent;\nHoverCard.Trigger = Trigger;\n","import type { ComponentProps } from 'react';\nimport * as RSeparator from '@radix-ui/react-separator';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nconst separatorVariants = cva(\n [\n // position\n 'tw-flex',\n 'tw-items-center',\n 'tw-justify-center',\n 'tw-self-stretch',\n\n // before\n \"before:tw-content-['']\",\n 'before:tw-bg-neutral-150',\n ],\n {\n defaultVariants: {\n orientation: 'vertical',\n size: 'full',\n },\n compoundVariants: [\n {\n orientation: 'horizontal',\n size: 'full',\n className: ['before:tw-w-full'],\n },\n {\n orientation: 'horizontal',\n size: '1/2',\n className: ['before:tw-w-1/2'],\n },\n {\n orientation: 'horizontal',\n size: '3/4',\n className: ['before:tw-w-3/4'],\n },\n {\n orientation: 'vertical',\n size: 'full',\n className: ['before:tw-h-full'],\n },\n {\n orientation: 'vertical',\n size: '1/2',\n className: ['before:tw-h-1/2'],\n },\n {\n orientation: 'vertical',\n size: '3/4',\n className: ['before:tw-h-3/4'],\n },\n ],\n variants: {\n size: {\n full: ['before:tw-h-full'],\n '1/2': [],\n '3/4': [],\n },\n orientation: {\n vertical: ['before:tw-w-px'],\n horizontal: ['before:tw-h-px'],\n },\n },\n },\n);\n\ntype Props = VariantProps<typeof separatorVariants> &\n Omit<ComponentProps<typeof RSeparator.Root>, 'decorative'>;\n\nexport const Separator = ({\n className,\n orientation = 'vertical',\n size = 'full',\n ...props\n}: Props) => (\n <RSeparator.Root\n {...props}\n decorative\n orientation={orientation}\n className={separatorVariants({ size, orientation, className })}\n />\n);\n","import { createContext, use } from 'react';\n\nexport type Variant = 'radio' | 'button' | 'radio-block';\nexport type Orientation = 'vertical' | 'horizontal';\n\nconst RadioGroupContext = createContext<{ variant: Variant; orientation: Orientation }>({\n variant: 'radio',\n orientation: 'horizontal',\n});\n\nexport const RadioGroupProvider = RadioGroupContext;\n\nexport const useRadioGroupContext = () => use(RadioGroupContext);\n","import type { ComponentProps } from 'react';\nimport { Indicator, Item } from '@radix-ui/react-radio-group';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof Item>;\n\nexport const Radio = ({ className, ...props }: Props) => (\n <Item\n {...props}\n className={cn(\n // reset\n 'tw-bg-transparent',\n 'tw-p-0',\n 'tw-peer',\n 'tw-cursor-pointer',\n 'tw-whitespace-nowrap',\n 'tw-shrink-0',\n\n // position\n 'tw-flex',\n 'tw-items-center',\n 'tw-justify-center',\n\n // disabled\n 'disabled:tw-opacity-40',\n 'disabled:tw-cursor-not-allowed',\n\n 'tw-size-4',\n\n // border\n 'tw-rounded-full',\n 'tw-border',\n 'tw-border-solid',\n\n // checked state - border only\n 'data-[state=checked]:tw-border-primary',\n\n // unchecked state\n 'data-[state=unchecked]:tw-border-neutral-200',\n\n // unchecked:hover state\n 'data-[state=unchecked]:hover:tw-border-primary',\n\n // unchecked:hover:disabled state\n 'data-[state=unchecked]:disabled:hover:tw-border-neutral-200',\n\n // focus-visible ring\n 'focus-visible:tw-ring-2',\n 'focus-visible:tw-ring-secondary-200',\n className,\n )}\n >\n <Indicator\n className={cn(\n 'tw-flex',\n 'tw-items-center',\n 'tw-justify-center',\n 'after:tw-content-[\"\"]',\n 'after:tw-block',\n 'after:tw-size-2.5',\n 'after:tw-rounded-full',\n 'after:tw-bg-primary',\n )}\n />\n </Item>\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Item } from '@radix-ui/react-radio-group';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof Item>;\n\nexport const RadioGroupItemButton = ({\n ref,\n className,\n children,\n ...props\n}: Props & { ref?: Ref<ElementRef<typeof Item>> }) => (\n <Item\n ref={ref}\n {...props}\n className={cn(\n // reset\n 'tw-bg-transparent',\n 'tw-p-0',\n 'tw-peer',\n 'tw-cursor-pointer',\n 'tw-whitespace-nowrap',\n\n // position\n 'tw-flex',\n 'tw-items-center',\n 'tw-justify-center',\n\n // disabled\n 'disabled:tw-opacity-40',\n 'disabled:tw-cursor-not-allowed',\n\n // layouts\n 'tw-w-full',\n 'tw-px-2',\n 'tw-py-1.5',\n\n // fonts\n 'tw-text-secondary-600',\n 'tw-uppercase',\n 'tw-font-semibold',\n 'tw-font-sans',\n 'tw-text-[11px]',\n 'tw-whitespace-nowrap',\n 'tw-tracking-widest',\n 'tw-leading-[18px]',\n\n // border\n 'tw-border',\n 'tw-border-solid',\n 'tw-border-secondary-500',\n 'tw-rounded',\n\n // hover\n 'data-[state=unchecked]:hover:tw-bg-secondary-500',\n 'data-[state=unchecked]:hover:tw-text-white',\n\n // disabled\n 'data-[state=unchecked]:disabled:hover:tw-bg-white',\n 'data-[state=unchecked]:disabled:hover:tw-text-secondary-500',\n 'data-[state=checked]:disabled:tw-cursor-not-allowed',\n\n // states\n 'data-[state=unchecked]:tw-bg-white',\n 'data-[state=checked]:tw-bg-secondary-500',\n 'data-[state=checked]:tw-text-white',\n 'data-[state=checked]:tw-cursor-default',\n\n 'focus-visible:tw-outline',\n 'focus-visible:tw-outline-secondary-500',\n 'focus-visible:tw-ring-4',\n 'focus-visible:tw-ring-secondary-200',\n className,\n )}\n >\n {children}\n </Item>\n);\n","import { useId } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport type { Item } from '@radix-ui/react-radio-group';\n\nimport { FieldBox } from '../FieldBox';\nimport type { Props as TooltipProps } from '../Tooltip';\nimport { Tooltip } from '../Tooltip';\n\nimport { useRadioGroupContext } from './context';\nimport { Radio } from './Radio';\nimport { RadioGroupItemButton } from './RadioGroupItemButton';\n\ntype ItemProps = Omit<ComponentProps<typeof Item>, 'asChild' | 'value'>;\n\ntype Props<T extends string = string> = ItemProps & {\n value: T;\n tooltip?: ReactNode;\n tooltipVariant?: TooltipProps['variant'];\n tooltipPlacement?: TooltipProps['placement'];\n description?: ReactNode;\n};\n\nexport const RadioGroupItem = <T extends string = string>({\n children,\n tooltip,\n tooltipVariant,\n tooltipPlacement,\n description,\n ...props\n}: Props<T>) => {\n const { variant } = useRadioGroupContext();\n const id = useId();\n\n const item = (() => {\n if (variant === 'button')\n return <RadioGroupItemButton {...props}>{children}</RadioGroupItemButton>;\n\n return (\n <FieldBox\n variant={variant === 'radio-block' ? 'boxed' : 'default'}\n htmlFor={id}\n control={<Radio {...props} id={id} />}\n className={variant === 'radio-block' ? 'tw-flex-1' : undefined}\n >\n <FieldBox.Title>{children}</FieldBox.Title>\n {description && <FieldBox.Description>{description}</FieldBox.Description>}\n </FieldBox>\n );\n })();\n\n if (!tooltip) {\n return item;\n }\n\n return (\n <Tooltip tooltip={tooltip} variant={tooltipVariant} placement={tooltipPlacement} triggerAsChild>\n {item}\n </Tooltip>\n );\n};\n","import { Separator } from '../Separator';\n\nimport { useRadioGroupContext } from './context';\n\nexport const RadioGroupSeparator = () => {\n const { orientation } = useRadioGroupContext();\n const invertedOrientation = orientation === 'horizontal' ? 'vertical' : 'horizontal';\n const size = orientation === 'horizontal' ? '1/2' : 'full';\n const className = orientation === 'horizontal' ? 'tw-mx-2' : 'tw-my-2';\n\n return <Separator orientation={invertedOrientation} size={size} className={className} />;\n};\n","import type { ComponentProps } from 'react';\nimport * as RRadioGroup from '@radix-ui/react-radio-group';\nimport { cva } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nimport type { Orientation, Variant } from './context';\nimport { RadioGroupProvider } from './context';\nimport { RadioGroupItem } from './RadioGroupItem';\nimport { RadioGroupSeparator } from './RadioGroupSeparator';\n\nconst radioGroupVariants = cva(['tw-flex'], {\n variants: {\n orientation: {\n horizontal: ['tw-gap-2'],\n vertical: ['tw-flex-col', 'tw-gap-3'],\n },\n variant: {\n button: [],\n radio: [],\n 'radio-block': ['tw-w-full'],\n },\n },\n});\n\ntype Props<Value> = {\n variant?: Variant;\n orientation?: Orientation;\n onValueChange?: (value: Value) => void;\n value?: Value | null;\n defaultValue?: Value | null;\n} & Omit<\n ComponentProps<typeof RRadioGroup.Root>,\n 'asChild' | 'orientation' | 'onValueChange' | 'onChange' | 'value' | 'defaultValue'\n>;\n\nexport const RadioGroup = <Value extends string = string>({\n variant = 'radio',\n className,\n disabled = false,\n orientation = 'horizontal',\n onValueChange,\n children,\n value,\n defaultValue,\n ...props\n}: Props<Value>) => {\n return (\n <RRadioGroup.Root\n {...props}\n onValueChange={onValueChange}\n orientation={orientation}\n className={cn(radioGroupVariants({ orientation, variant, className }))}\n disabled={disabled}\n value={value ?? void 0}\n defaultValue={defaultValue ?? void 0}\n >\n <RadioGroupProvider value={{ variant, orientation }}>{children}</RadioGroupProvider>\n </RRadioGroup.Root>\n );\n};\n\nRadioGroup.Item = RadioGroupItem;\nRadioGroup.Separator = RadioGroupSeparator;\n","import { useCallback, useRef, useState } from 'react';\n\ntype InteractingRef = (element: HTMLElement | null) => void;\n\nexport const useInteracting = (): readonly [boolean, InteractingRef] => {\n const [isInteracting, setIsInteracting] = useState(false);\n const cleanupRef = useRef<(() => void) | null>(null);\n\n const setRef = useCallback<InteractingRef>((element) => {\n cleanupRef.current?.();\n cleanupRef.current = null;\n if (!element) return;\n\n let hover = false;\n let focus = false;\n let press = false;\n const recompute = () => setIsInteracting(hover || focus || press);\n\n const handleEnter = () => {\n hover = true;\n recompute();\n };\n const handleLeave = () => {\n hover = false;\n recompute();\n };\n const handleFocus = () => {\n focus = true;\n recompute();\n };\n const handleBlur = () => {\n focus = false;\n recompute();\n };\n const handleDown = () => {\n press = true;\n recompute();\n };\n const handleRelease = () => {\n press = false;\n recompute();\n };\n\n element.addEventListener('pointerenter', handleEnter);\n element.addEventListener('pointerleave', handleLeave);\n element.addEventListener('focus', handleFocus);\n element.addEventListener('blur', handleBlur);\n element.addEventListener('pointerdown', handleDown);\n element.addEventListener('pointerup', handleRelease);\n element.addEventListener('pointercancel', handleRelease);\n\n cleanupRef.current = () => {\n element.removeEventListener('pointerenter', handleEnter);\n element.removeEventListener('pointerleave', handleLeave);\n element.removeEventListener('focus', handleFocus);\n element.removeEventListener('blur', handleBlur);\n element.removeEventListener('pointerdown', handleDown);\n element.removeEventListener('pointerup', handleRelease);\n element.removeEventListener('pointercancel', handleRelease);\n };\n }, []);\n\n return [isInteracting, setRef] as const;\n};\n","import type { ComponentProps, ElementRef, ReactNode, Ref } from 'react';\nimport { Thumb as RadixThumb } from '@radix-ui/react-slider';\n\nimport { cn, mergeRefs } from '../../utils';\nimport { argoVariants } from '../Button';\nimport { Tooltip } from '../Tooltip';\n\nimport { useInteracting } from './useInteracting';\n\ntype Props = ComponentProps<typeof RadixThumb> & {\n tooltip?: ReactNode;\n tooltipSide?: ComponentProps<typeof Tooltip.Content>['placement'];\n};\n\nexport const SliderThumb = ({\n ref: forwardedRef,\n className,\n tooltip,\n tooltipSide = 'top',\n ...props\n}: Props & { ref?: Ref<ElementRef<typeof RadixThumb>> }) => {\n const [isInteracting, interactingRef] = useInteracting();\n\n const thumb = (\n <RadixThumb\n ref={mergeRefs(forwardedRef ?? null, interactingRef)}\n className={cn(\n argoVariants({ variant: 'outline', size: 'icon-sm' }),\n\n // layout\n 'tw-p-0',\n 'active:tw-opacity-100',\n 'tw-block',\n 'tw-size-4',\n 'tw-rounded-full',\n\n // cursors\n 'data-[disabled]:tw-cursor-not-allowed',\n '[&:not([data-disabled])]:tw-cursor-pointer',\n\n className,\n )}\n {...props}\n />\n );\n\n if (tooltip == null) return thumb;\n\n return (\n <Tooltip.Root open={isInteracting}>\n <Tooltip.Trigger asChild>{thumb}</Tooltip.Trigger>\n <Tooltip.Content variant=\"action\" placement={tooltipSide}>\n {tooltip}\n </Tooltip.Content>\n </Tooltip.Root>\n );\n};\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Range as RadixRange, Track as RadixTrack } from '@radix-ui/react-slider';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof RadixTrack> & { rangeClassName?: string };\n\nexport const SliderTrack = ({\n ref,\n className,\n ...props\n}: Props & { ref?: Ref<ElementRef<typeof RadixTrack>> }) => (\n <RadixTrack\n ref={ref}\n className={cn(\n // layout\n 'tw-relative',\n 'tw-grow',\n 'tw-w-full',\n 'tw-h-1.5',\n 'tw-overflow-hidden',\n\n // style\n 'tw-rounded-full',\n 'tw-bg-muted',\n\n // vertical orientation\n 'data-[orientation=vertical]:tw-h-full',\n 'data-[orientation=vertical]:tw-w-1.5',\n )}\n {...props}\n >\n <RadixRange\n className={cn(\n // layout\n 'tw-absolute',\n 'tw-h-full',\n\n // style\n 'tw-bg-primary',\n\n // vertical orientation\n 'data-[orientation=vertical]:tw-w-full',\n\n className,\n )}\n />\n </RadixTrack>\n);\n","import { useState } from 'react';\nimport type { ComponentProps, ElementRef, ReactNode, Ref } from 'react';\nimport { Root } from '@radix-ui/react-slider';\n\nimport { cn } from '../../utils';\nimport { TooltipProvider } from '../Tooltip';\n\nimport { SliderThumb } from './SliderThumb';\nimport { SliderTrack } from './SliderTrack';\n\nexport type ThumbTooltipFn = (value: number, index: number) => ReactNode;\n\ntype Props = ComponentProps<typeof Root> & {\n thumbTooltip?: ThumbTooltipFn;\n thumbTooltipSide?: ComponentProps<typeof SliderThumb>['tooltipSide'];\n rangeClassName?: string;\n};\n\nexport const Slider = ({\n ref,\n className,\n value,\n defaultValue,\n min = 0,\n max = 100,\n onValueChange,\n thumbTooltip,\n thumbTooltipSide,\n rangeClassName,\n ...rest\n}: Props & { ref?: Ref<ElementRef<typeof Root>> }) => {\n const isControlled = Array.isArray(value);\n\n const [internalValues, setInternalValues] = useState<number[]>(() => {\n if (isControlled) return value;\n if (Array.isArray(defaultValue)) return defaultValue;\n return [min];\n });\n\n const liveValues = isControlled ? value : internalValues;\n\n const handleValueChange = (next: number[]) => {\n if (!isControlled) setInternalValues(next);\n onValueChange?.(next);\n };\n\n const body = (\n <Root\n ref={ref}\n value={liveValues}\n min={min}\n max={max}\n onValueChange={handleValueChange}\n className={cn(\n 'tw-relative',\n 'tw-flex',\n 'tw-items-center',\n 'tw-w-full',\n\n 'tw-touch-none',\n 'tw-select-none',\n\n 'data-[orientation=vertical]:tw-h-full',\n 'data-[orientation=vertical]:tw-w-auto',\n 'data-[orientation=vertical]:tw-flex-col',\n\n 'data-[disabled]:tw-opacity-50',\n className,\n )}\n {...rest}\n >\n <SliderTrack className={rangeClassName} />\n {liveValues.map((thumbValue, index) => (\n <SliderThumb\n // oxlint-disable-next-line react/no-array-index-key\n key={index}\n tooltip={thumbTooltip?.(thumbValue, index)}\n tooltipSide={thumbTooltipSide}\n />\n ))}\n </Root>\n );\n\n return thumbTooltip ? <TooltipProvider>{body}</TooltipProvider> : body;\n};\n","import type { MouseEventHandler } from 'react';\n\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\n\ntype Props = {\n onClick: MouseEventHandler<HTMLButtonElement>;\n testId?: string;\n};\n\nexport const ClearButton = ({ onClick, testId }: Props) => {\n // Prevent default, as we do not want to lose input focus.\n const handleMouseDown: MouseEventHandler<HTMLButtonElement> = (event) => {\n event.preventDefault();\n };\n\n return (\n <button\n type=\"button\"\n onClick={onClick}\n tabIndex={-1} // clear button should not be focusable\n onMouseDown={handleMouseDown}\n className={cn(\n // reset\n 'tw-border-none',\n 'tw-bg-transparent',\n 'tw-p-0',\n\n // positioning\n 'tw-flex',\n 'tw-items-center',\n\n 'tw-cursor-pointer',\n 'tw-text-neutral-300',\n 'hover:tw-text-neutral-800',\n )}\n data-testid={testId}\n >\n <Icon className=\"tw-size-4\" icon=\"xmark\" />\n </button>\n );\n};\n","import { cva } from 'class-variance-authority';\n\nexport const searchWrapperVariants = cva(\n [\n // positioning\n 'tw-flex',\n 'tw-items-center',\n 'tw-gap-2.5',\n\n // base\n 'tw-text-neutral-800',\n 'tw-transition-all',\n 'tw-font-sans',\n\n // readonly\n 'has-[input[readonly]]:tw-bg-neutral-150',\n 'has-[input[readonly]]:focus-within:tw-ring-0',\n 'has-[input[readonly]]:tw-outline-0',\n\n // disabled\n 'disabled:tw-opacity-40',\n\n // default input padding (was sizing.default)\n '[&>input]:tw-py-[15px]',\n ],\n {\n defaultVariants: {\n variant: 'default',\n },\n variants: {\n variant: {\n default: [\n 'tw-rounded-lg',\n 'tw-px-5',\n 'tw-bg-white',\n 'tw-shadow-[0_2px_6px_0_rgba(100,135,153,0.13)]',\n // outline\n 'tw-outline',\n 'tw-outline-1',\n 'tw-outline-transparent',\n // focus\n 'has-[input:focus]:tw-outline-1',\n 'has-[input:focus]:tw-ring-4',\n 'has-[input:focus]:tw-outline-secondary-500',\n 'has-[input:focus]:tw-ring-secondary-200',\n ],\n ai: [\n 'tailwindcss-preflight',\n 'tw-relative',\n 'tw-rounded-card',\n 'tw-px-4',\n 'tw-cursor-text',\n 'tw-border-2',\n 'tw-border-transparent',\n 'tw-bg-gradient-to-br',\n 'tw-from-secondary-600',\n 'tw-to-purple-600',\n 'tw-bg-origin-border',\n 'tw-shadow-[inset_0_100vw_white]',\n // focus\n 'has-[input:focus]:tw-ring-4',\n 'has-[input:focus]:tw-ring-secondary-200',\n ],\n },\n },\n },\n);\n\nexport const searchInputClassnames = [\n // reset\n 'tw-border-none',\n 'tw-bg-transparent',\n 'tw-outline-none',\n 'tw-w-full',\n 'tw-p-0',\n\n // base\n 'tw-text-base',\n 'tw-leading-6',\n 'tw-font-normal',\n 'tw-font-sans',\n\n // placeholder\n 'placeholder:tw-text-neutral-400',\n\n // disabled\n 'disabled:tw-cursor-not-allowed',\n].join(' ');\n","import { createPrefixedString } from '../../utils';\n\nexport const genSearchTestId = (prefix: string = '') => {\n const ps = createPrefixedString(prefix);\n return {\n toString: () => prefix,\n wrapper: ps`search-wrapper`,\n input: ps`search-input`,\n clearButton: ps`search-clear-button`,\n };\n};\n","import { useEffect, useMemo, useState } from 'react';\nimport type {\n ChangeEvent,\n ChangeEventHandler,\n ElementRef,\n FocusEvent,\n FocusEventHandler,\n InputHTMLAttributes,\n MouseEvent,\n MouseEventHandler,\n ReactNode,\n Ref,\n} from 'react';\n\nimport { cn, debounce, noop } from '../../utils';\nimport { Icon } from '../Icon';\n\nimport { ClearButton } from './ClearButton';\nimport { searchInputClassnames, searchWrapperVariants } from './styles';\nimport { genSearchTestId } from './utils';\n\ntype SearchChangeEventHandler = (\n value: string,\n event: ChangeEvent<HTMLInputElement> | MouseEvent<HTMLButtonElement>,\n) => void;\n\ntype SearchBlurEventHandler = (value: string, event: FocusEvent<HTMLInputElement, Element>) => void;\n\ntype Props = {\n suffix?: ReactNode;\n disableDebounce?: boolean;\n debounceDelay?: number;\n onChange?: SearchChangeEventHandler;\n onBlur?: SearchBlurEventHandler;\n value?: string | null;\n defaultValue?: string | null;\n testId?: string;\n onClear?: () => void;\n variant?: 'default' | 'ai';\n} & Omit<\n InputHTMLAttributes<HTMLInputElement>,\n 'type' | 'onBlur' | 'onChange' | 'value' | 'defaultValue' | 'prefix' | 'suffix'\n>;\n\n/**\n * @deprecated Use `SearchInput` instead. `Search` is kept only for the legacy (non-sidebar) layout.\n */\nexport const Search = ({\n ref,\n suffix,\n className,\n onBlur,\n onChange = noop,\n disabled = false,\n readOnly = false,\n disableDebounce = false,\n debounceDelay = 300,\n value: externalValue,\n defaultValue,\n testId: prefixTestId = '',\n placeholder = 'Search',\n onClear,\n variant = 'default',\n ...rest\n}: Props & { ref?: Ref<ElementRef<'input'>> }) => {\n const [internalValue, setInternalValue] = useState(() =>\n externalValue != null ? externalValue : defaultValue,\n );\n const hasValue = internalValue !== '';\n\n const isClearButtonVisible = hasValue && !disabled && !readOnly;\n const testId = genSearchTestId(prefixTestId);\n\n const debouncedOnChange = useMemo(\n () => (disableDebounce ? onChange : debounce(onChange, debounceDelay)),\n [disableDebounce, debounceDelay, onChange],\n );\n\n useEffect(() => {\n if (externalValue == null) return; // uncontrolled state\n // oxlint-disable-next-line react-x/set-state-in-effect\n setInternalValue(externalValue);\n }, [externalValue]);\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n const currentValue = event.target.value;\n setInternalValue(currentValue);\n debouncedOnChange(currentValue, event);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n const currentValue = event.target.value;\n setInternalValue(currentValue);\n onBlur?.(currentValue, event);\n };\n\n const handleClear: MouseEventHandler<HTMLButtonElement> = (event) => {\n setInternalValue('');\n onChange?.('', event);\n onClear?.();\n };\n\n return (\n <div\n className={cn(\n searchWrapperVariants({ variant }),\n {\n 'tw-cursor-not-allowed tw-opacity-40': disabled,\n },\n className,\n )}\n data-testid={testId.wrapper}\n >\n {variant === 'ai' ? (\n <Icon icon={['far', 'sparkles']} className=\"[&_path]:tw-fill-aigradient-600\" />\n ) : (\n <Icon className=\"tw-text-base tw-text-neutral-400\" icon=\"magnifying-glass\" />\n )}\n\n <input\n {...rest}\n ref={ref}\n placeholder={placeholder}\n data-testid={testId.input}\n type=\"text\"\n value={internalValue ?? ''}\n onChange={handleChange}\n onBlur={handleBlur}\n className={searchInputClassnames}\n disabled={disabled}\n readOnly={readOnly}\n />\n\n {isClearButtonVisible && <ClearButton onClick={handleClear} testId={testId.clearButton} />}\n\n {suffix}\n </div>\n );\n};\n","import type { ComponentProps, ElementRef, FormEventHandler, Ref } from 'react';\n\nimport { Search } from './Search';\n\ntype Props = {\n onSubmit: (value: string) => void;\n} & Omit<ComponentProps<typeof Search>, 'onClear' | 'onBlur' | 'onSubmit'>;\n\nexport const SearchForm = ({\n ref,\n onSubmit,\n name = 'search-field',\n ...props\n}: Props & { ref?: Ref<ElementRef<'input'>> }) => {\n const handleSubmit: FormEventHandler<HTMLFormElement> = (event) => {\n event.preventDefault();\n const searchEl = event.currentTarget.elements.namedItem(name) as HTMLInputElement;\n onSubmit(searchEl.value);\n };\n\n const onClear = () => {\n onSubmit('');\n };\n\n return (\n <form onSubmit={handleSubmit}>\n <Search\n {...props}\n ref={ref}\n onClear={onClear}\n name={name}\n // Debounce has no meaning when we use submit, which is triggered by pressing enter.\n disableDebounce\n />\n </form>\n );\n};\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\n\nconst scrollButtonStyles = cn(\n 'tw-flex',\n 'tw-items-center',\n 'tw-justify-center',\n 'tw-rounded-sm',\n 'tw-p-1',\n '[&_svg]:tw-size-3',\n);\n\ntype Variant = 'default' | 'argo';\n\ntype Props = ComponentProps<typeof SelectPrimitive.Content> & {\n container?: HTMLElement | null;\n variant?: Variant;\n};\n\nexport const SelectContent = ({\n ref,\n className,\n children,\n container,\n position = 'popper',\n sideOffset = 4,\n variant = 'default',\n ...props\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => (\n <SelectPrimitive.Portal container={container}>\n <SelectPrimitive.Content\n {...props}\n ref={ref}\n position={position}\n sideOffset={sideOffset}\n data-variant={variant}\n className={cn(\n 'tailwindcss-preflight',\n 'tw-group/select-content',\n 'tw-z-[1040]',\n\n // layout\n 'tw-flex tw-flex-col',\n 'tw-p-1',\n 'data-[variant=default]:tw-p-0',\n 'tw-overflow-hidden',\n 'tw-origin-[--radix-select-content-transform-origin]',\n\n // sizing\n 'tw-max-h-[var(--radix-select-content-available-height)]',\n 'tw-min-w-[var(--radix-select-trigger-width)]',\n\n // appearance\n 'tw-bg-popover',\n 'tw-text-popover-foreground',\n 'tw-shadow-md',\n 'tw-ring-1',\n 'tw-ring-foreground/10',\n 'tw-rounded-lg',\n 'data-[variant=default]:tw-rounded',\n\n // open animation\n 'data-[state=open]:tw-animate-in',\n 'data-[state=open]:tw-fade-in-0',\n 'data-[state=open]:tw-zoom-in-95',\n\n // closed animation\n 'data-[state=closed]:tw-animate-out',\n 'data-[state=closed]:tw-fade-out-0',\n 'data-[state=closed]:tw-zoom-out-95',\n\n // position animations\n 'data-[side=bottom]:tw-slide-in-from-top-2',\n 'data-[side=left]:tw-slide-in-from-right-2',\n 'data-[side=right]:tw-slide-in-from-left-2',\n 'data-[side=top]:tw-slide-in-from-bottom-2',\n className,\n )}\n >\n <SelectPrimitive.ScrollUpButton className={scrollButtonStyles}>\n <Icon icon=\"chevron-up\" />\n </SelectPrimitive.ScrollUpButton>\n\n <SelectPrimitive.Viewport\n className={cn({\n 'tw-h-[var(--radix-select-trigger-height)] tw-w-full tw-min-w-[var(--radix-select-trigger-width)]':\n position === 'popper',\n })}\n >\n {children}\n </SelectPrimitive.Viewport>\n\n <SelectPrimitive.ScrollDownButton className={scrollButtonStyles}>\n <Icon icon=\"chevron-down\" />\n </SelectPrimitive.ScrollDownButton>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n);\n","import type { ComponentProps } from 'react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof SelectPrimitive.Group>;\n\nexport const SelectGroup = ({ className, ...props }: Props) => (\n <SelectPrimitive.Group {...props} className={cn('tw-flex tw-flex-col tw-gap-0.5', className)} />\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\n\ntype Props = ComponentProps<typeof SelectPrimitive.Item> & {\n icon?: ComponentProps<typeof Icon>['icon'];\n};\n\nexport const SelectItem = ({\n ref,\n className,\n children,\n icon,\n ...props\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => (\n <SelectPrimitive.Item\n {...props}\n ref={ref}\n className={cn(\n 'tw-group/select-item',\n\n // layout\n 'tw-relative',\n 'tw-flex',\n 'tw-flex-1',\n 'tw-items-center',\n 'tw-gap-2',\n\n // spacing — default variant uses tighter radius and wider horizontal padding\n 'tw-py-2',\n 'tw-px-2',\n 'group-data-[variant=default]/select-content:tw-px-4',\n 'tw-rounded-lg',\n 'group-data-[variant=default]/select-content:tw-rounded-none',\n\n // typography\n 'tw-text-sm',\n 'tw-select-none',\n 'tw-cursor-default',\n 'tw-outline-hidden',\n\n // highlighted (keyboard / hover)\n 'focus:tw-outline-none',\n 'data-[highlighted]:tw-bg-accent',\n 'group-data-[variant=default]/select-content:data-[highlighted]:tw-bg-neutral-100',\n 'data-[highlighted]:tw-text-accent-foreground',\n 'group-data-[variant=default]/select-content:data-[highlighted]:tw-text-foreground',\n\n // disabled\n 'data-[disabled]:tw-pointer-events-none',\n 'data-[disabled]:tw-opacity-50',\n\n // child svg defaults\n '[&_svg]:tw-pointer-events-none',\n '[&_svg]:tw-shrink-0',\n '[&_svg]:tw-text-muted-foreground',\n \"[&_svg:not([class*='tw-size-'])]:tw-size-4\",\n className,\n )}\n >\n {icon && <Icon icon={icon} />}\n <span className=\"tw-flex-1 tw-truncate\">\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </span>\n <SelectPrimitive.ItemIndicator className=\"tw-pointer-events-none\">\n <Icon icon=\"check\" className=\"tw-size-4\" />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n);\n","import type { ComponentProps } from 'react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof SelectPrimitive.Label>;\n\nexport const SelectLabel = ({ className, ...props }: Props) => (\n <SelectPrimitive.Label\n {...props}\n className={cn(\n // Base (argo variant) — soft gray section label\n 'tw-px-2',\n 'tw-py-1.5',\n 'tw-text-xs',\n 'tw-font-medium',\n 'tw-leading-none',\n 'tw-text-neutral-500',\n\n // Default variant — uppercase tracked label, matches Combobox default\n 'group-data-[variant=default]/select-content:tw-uppercase',\n 'group-data-[variant=default]/select-content:tw-font-semibold',\n 'group-data-[variant=default]/select-content:tw-tracking-wider',\n 'group-data-[variant=default]/select-content:tw-text-[11px]',\n 'group-data-[variant=default]/select-content:tw-text-black',\n 'group-data-[variant=default]/select-content:tw-pt-2',\n 'group-data-[variant=default]/select-content:tw-px-4',\n\n className,\n )}\n />\n);\n","import type { ComponentProps } from 'react';\nimport { Root } from '@radix-ui/react-select';\n\ntype Props = ComponentProps<typeof Root>;\n\nexport const SelectRoot = (props: Props) => <Root {...props} />;\n","import type { ComponentProps } from 'react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof SelectPrimitive.Separator>;\n\nexport const SelectSeparator = ({ className, ...props }: Props) => (\n <SelectPrimitive.Separator\n {...props}\n className={cn('tw-mx-2 tw-my-1 tw-h-px tw-bg-neutral-100', className)}\n />\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\n\nconst variants = cva(\n [\n 'tailwindcss-preflight',\n 'tw-group',\n 'tw-box-border',\n\n // layout\n 'tw-inline-flex',\n 'tw-items-center',\n 'tw-justify-between',\n 'tw-gap-2',\n 'tw-w-full',\n 'tw-text-left',\n\n // base appearance\n 'tw-rounded',\n 'tw-border',\n 'tw-border-solid',\n 'tw-border-neutral-200',\n 'tw-text-neutral-800',\n // Scoped transition (no `outline`) — prevents the UA focus-outline color\n // from interpolating through its dark default during state changes.\n 'tw-transition-[color,background-color,border-color,box-shadow]',\n\n // focus base — ring width here, color comes from state variant\n '!tw-outline-none',\n 'focus:tw-ring-4',\n 'data-[state=open]:tw-ring-4',\n\n // disabled\n 'disabled:tw-cursor-not-allowed',\n 'aria-disabled:tw-cursor-not-allowed',\n\n // placeholder (Radix sets data-placeholder on the trigger when no value)\n 'data-[placeholder]:tw-text-muted-foreground',\n\n // child svg defaults\n '[&_svg]:tw-shrink-0',\n '[&_svg]:tw-pointer-events-none',\n ],\n {\n defaultVariants: {\n variant: 'primary',\n state: 'default',\n sizing: 'default',\n },\n compoundVariants: [\n {\n variant: 'secondary',\n state: 'error',\n className: ['tw-bg-error-100'],\n },\n {\n variant: 'secondary',\n state: 'warning',\n className: ['tw-bg-warning-100'],\n },\n // --- argo ---\n {\n variant: 'argo',\n state: 'default',\n className: [\n 'focus:tw-border-primary',\n 'focus:tw-ring-primary/50',\n 'data-[state=open]:tw-border-primary',\n 'data-[state=open]:tw-ring-primary/50',\n ],\n },\n {\n variant: 'argo',\n state: 'error',\n className: [\n 'tw-border-destructive',\n 'focus:tw-border-destructive',\n 'focus:tw-ring-destructive/20',\n 'data-[state=open]:tw-border-destructive',\n 'data-[state=open]:tw-ring-destructive/20',\n ],\n },\n ],\n variants: {\n variant: {\n primary: ['tw-bg-white', 'disabled:tw-opacity-40', 'aria-disabled:tw-opacity-40'],\n secondary: [\n 'tw-bg-neutral-100',\n 'tw-border-neutral-100',\n 'disabled:tw-opacity-40',\n 'aria-disabled:tw-opacity-40',\n ],\n argo: [\n 'tw-bg-background',\n 'tw-border-input',\n 'tw-rounded-lg',\n 'tw-text-foreground',\n 'disabled:tw-opacity-50',\n 'aria-disabled:tw-opacity-50',\n ],\n },\n sizing: {\n // border-inclusive heights: 40 / 36 / 34 px\n default: ['tw-px-4', 'tw-py-2.5', 'tw-text-sm/[18px]', 'tw-h-10', 'tw-min-h-10'],\n medium: ['tw-px-4', 'tw-py-2', 'tw-text-sm/[18px]', 'tw-h-9', 'tw-min-h-9'],\n small: ['tw-px-4', 'tw-py-2', 'tw-text-sm/[16px]', 'tw-h-[34px]', 'tw-min-h-[34px]'],\n },\n state: {\n default: [\n 'focus:tw-border-secondary-500',\n 'focus:tw-ring-secondary-200',\n 'data-[state=open]:tw-border-secondary-500',\n 'data-[state=open]:tw-ring-secondary-200',\n ],\n error: [\n 'tw-border-error-500',\n 'focus:tw-border-error-500',\n 'focus:tw-ring-error-200',\n 'data-[state=open]:tw-border-error-500',\n 'data-[state=open]:tw-ring-error-200',\n ],\n warning: [\n 'tw-border-warning-500',\n 'focus:tw-border-warning-500',\n 'focus:tw-ring-warning-200',\n 'data-[state=open]:tw-border-warning-500',\n 'data-[state=open]:tw-ring-warning-200',\n ],\n },\n },\n },\n);\n\ntype Props = ComponentProps<typeof SelectPrimitive.Trigger> &\n VariantProps<typeof variants> &\n Pick<ComponentProps<typeof SelectPrimitive.Value>, 'placeholder'>;\n\nexport const SelectTrigger = ({\n ref,\n className,\n variant,\n state,\n sizing,\n placeholder,\n ...props\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(variants({ variant, state, sizing }), className)}\n {...props}\n >\n <SelectPrimitive.Value placeholder={placeholder} />\n <SelectPrimitive.Icon asChild>\n <Icon icon=\"chevron-down\" className=\"tw-size-3.5 tw-text-muted-foreground\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n);\n","import { useId } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport type { Icon } from '../Icon';\n\nimport { SelectContent } from './SelectContent';\nimport { SelectGroup } from './SelectGroup';\nimport { SelectItem as SelectItemComponent } from './SelectItem';\nimport { SelectLabel } from './SelectLabel';\nimport { SelectRoot } from './SelectRoot';\nimport { SelectSeparator } from './SelectSeparator';\nimport { SelectTrigger } from './SelectTrigger';\n\ntype IconName = ComponentProps<typeof Icon>['icon'];\n\nexport type SelectItem = {\n value: string;\n label: ReactNode;\n icon?: IconName;\n disabled?: boolean;\n};\n\nexport type SelectItemGroup = {\n label?: ReactNode;\n items: readonly SelectItem[];\n};\n\nconst isGroup = (itemOrGroup: SelectItem | SelectItemGroup): itemOrGroup is SelectItemGroup =>\n 'items' in itemOrGroup;\n\ntype RootProps = ComponentProps<typeof SelectRoot>;\ntype TriggerProps = ComponentProps<typeof SelectTrigger>;\n\ntype Props = Pick<\n RootProps,\n | 'value'\n | 'defaultValue'\n | 'onValueChange'\n | 'disabled'\n | 'name'\n | 'required'\n | 'open'\n | 'defaultOpen'\n | 'onOpenChange'\n> &\n Pick<TriggerProps, 'variant' | 'state' | 'sizing' | 'placeholder' | 'id' | 'className'> & {\n items?: readonly (SelectItem | SelectItemGroup)[];\n };\n\nexport const Select = ({\n // root\n value,\n defaultValue,\n onValueChange,\n disabled,\n name,\n required,\n open,\n defaultOpen,\n onOpenChange,\n // trigger\n variant,\n state,\n sizing,\n placeholder,\n id,\n className,\n // items\n items = [],\n}: Props) => {\n const contentVariant = variant === 'argo' ? 'argo' : 'default';\n const groupKeyId = useId();\n\n const renderItem = (item: SelectItem) => (\n <SelectItemComponent\n key={item.value}\n value={item.value}\n icon={item.icon}\n disabled={item.disabled}\n >\n {item.label}\n </SelectItemComponent>\n );\n\n return (\n <SelectRoot\n value={value}\n defaultValue={defaultValue}\n onValueChange={onValueChange}\n disabled={disabled}\n name={name}\n required={required}\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}\n >\n <SelectTrigger\n variant={variant}\n state={state}\n sizing={sizing}\n placeholder={placeholder}\n id={id}\n className={className}\n />\n <SelectContent variant={contentVariant}>\n {items.map((itemOrGroup, index) => {\n if (isGroup(itemOrGroup)) {\n return (\n // oxlint-disable-next-line react/no-array-index-key\n <SelectGroup key={`${groupKeyId}-group-${index}`}>\n {itemOrGroup.label && <SelectLabel>{itemOrGroup.label}</SelectLabel>}\n {itemOrGroup.items.map(renderItem)}\n </SelectGroup>\n );\n }\n\n return renderItem(itemOrGroup);\n })}\n </SelectContent>\n </SelectRoot>\n );\n};\n\nSelect.Root = SelectRoot;\nSelect.Trigger = SelectTrigger;\nSelect.Content = SelectContent;\nSelect.Item = SelectItemComponent;\nSelect.Group = SelectGroup;\nSelect.Label = SelectLabel;\nSelect.Separator = SelectSeparator;\n","import { cva } from 'class-variance-authority';\n\nexport const rootVariants = cva(\n [\n // reset\n 'tailwindcss-preflight',\n\n // position\n 'tw-flex',\n 'tw-items-center',\n 'tw-justify-center',\n\n 'tw-peer',\n 'tw-size-4',\n 'tw-shrink-0',\n 'tw-cursor-pointer',\n\n // border\n 'tw-border',\n 'tw-border-solid',\n\n // disabled\n 'disabled:tw-opacity-50',\n 'disabled:tw-cursor-not-allowed',\n ],\n {\n defaultVariants: {\n variant: 'default',\n },\n variants: {\n variant: {\n default: [\n 'tw-rounded',\n 'tw-border-neutral-200',\n\n 'data-[state=checked]:tw-bg-secondary-500',\n 'data-[state=checked]:tw-border-secondary-500',\n\n 'data-[state=indeterminate]:tw-bg-white',\n 'data-[state=indeterminate]:tw-border-neutral-200',\n ],\n argo: [\n 'tw-rounded',\n 'tw-border-input',\n 'tw-transition-colors',\n\n 'data-[state=checked]:tw-bg-primary',\n 'data-[state=checked]:tw-border-primary',\n\n 'data-[state=indeterminate]:tw-bg-primary',\n 'data-[state=indeterminate]:tw-border-primary',\n\n // focus\n 'focus-visible:tw-outline-none',\n 'focus-visible:tw-border-primary',\n 'focus-visible:tw-ring-2',\n 'focus-visible:tw-ring-primary/50',\n ],\n },\n },\n },\n);\n\nexport const indicatorVariants = cva(['tw-group', 'tw-flex', 'tw-items-center'], {\n defaultVariants: {\n variant: 'default',\n },\n variants: {\n variant: {\n default: [\n 'data-[state=checked]:tw-text-white',\n 'data-[state=indeterminate]:tw-text-neutral-200',\n ],\n argo: ['tw-text-primary-foreground'],\n },\n },\n});\n","import { useId } from 'react';\nimport type { ComponentProps, JSX, ReactNode } from 'react';\nimport type { CheckedState } from '@radix-ui/react-checkbox';\nimport { Indicator, Root } from '@radix-ui/react-checkbox';\nimport type { VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\nimport { FieldBox } from '../FieldBox';\nimport type { fieldBoxVariants } from '../FieldBox/styles';\nimport { Icon } from '../Icon';\nimport type { Props as TooltipProps } from '../Tooltip';\nimport { Tooltip } from '../Tooltip';\n\nimport { indicatorVariants, rootVariants } from './styles';\n\ntype Props = {\n id?: string | number;\n argo?: boolean;\n description?: ReactNode;\n variant?: VariantProps<typeof fieldBoxVariants>['variant'];\n position?: 'start' | 'end';\n tooltip?: TooltipProps['tooltip'];\n tooltipPlacement?: TooltipProps['placement'];\n} & Omit<ComponentProps<typeof Root>, 'id'>;\n\n// First overload - for strict boolean usage\nexport function Checkbox(\n prop: Omit<Props, 'checked' | 'onCheckedChange'> & {\n checked?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n },\n): JSX.Element;\n\n// Second overload - for CheckedState usage (boolean | 'indeterminate')\nexport function Checkbox(\n prop: Omit<Props, 'checked' | 'onCheckedChange'> & {\n checked?: CheckedState;\n onCheckedChange?: (checked: CheckedState) => void;\n },\n): JSX.Element;\n\nexport function Checkbox({\n className,\n id: idProp,\n children,\n argo = false,\n description,\n variant,\n position,\n tooltip,\n tooltipPlacement = 'top',\n ...rest\n}: Props) {\n const fallbackId = useId();\n const id = idProp?.toString() ?? fallbackId;\n const styleVariant = argo ? 'argo' : 'default';\n\n const checkboxElement = (\n <Root id={id} {...rest} className={cn(rootVariants({ variant: styleVariant, className }))}>\n <Indicator className={cn(indicatorVariants({ variant: styleVariant }))}>\n <Icon icon=\"check\" className=\"tw-hidden tw-size-3 group-data-[state=checked]:tw-block\" />\n <Icon\n icon=\"minus\"\n className=\"tw-hidden tw-size-3 group-data-[state=indeterminate]:tw-block\"\n />\n </Indicator>\n </Root>\n );\n\n const rendered = !children ? (\n checkboxElement\n ) : (\n <FieldBox htmlFor={id} variant={variant} position={position} control={checkboxElement}>\n <FieldBox.Title>{children}</FieldBox.Title>\n {description && <FieldBox.Description>{description}</FieldBox.Description>}\n </FieldBox>\n );\n\n if (!tooltip) return rendered;\n\n return (\n <Tooltip tooltip={tooltip} placement={tooltipPlacement} triggerAsChild>\n {rendered}\n </Tooltip>\n );\n}\n","import type { ComponentProps } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { Icon } from '../Icon';\n\nconst variants = cva(\n [\n 'tailwindcss-preflight',\n 'tw-pointer-events-none',\n\n // sizing\n 'tw-size-4',\n 'tw-aspect-square',\n 'tw-shrink-0',\n\n // layout\n 'tw-flex',\n 'tw-items-center',\n 'tw-justify-center',\n ],\n {\n variants: {\n variant: {\n none: [],\n radio: [\n 'tw-border',\n 'tw-border-solid',\n 'tw-border-border',\n 'tw-rounded-full',\n 'tw-bg-white',\n\n '[&_svg]:tw-size-2',\n '[&_svg]:data-[state=unchecked]:tw-hidden',\n 'group-data-[variant=argo]/dropdown-menu-content:[&_svg]:tw-text-primary',\n 'group-data-[variant=default]/dropdown-menu-content:[&_svg]:tw-text-secondary-500',\n ],\n check: ['[&_svg]:tw-size-3.5', '[&_svg]:tw-text-primary'],\n checkbox: [\n '[&_svg]:tw-text-white',\n 'tw-border',\n 'tw-border-solid',\n 'tw-border-neutral-200',\n 'tw-rounded',\n\n '[&_svg]:tw-size-3',\n '[&_svg]:data-[state=unchecked]:tw-hidden',\n 'group-data-[variant=argo]/dropdown-menu-content:data-[state=checked]:tw-border-primary',\n 'group-data-[variant=argo]/dropdown-menu-content:data-[state=checked]:tw-bg-primary',\n 'group-data-[variant=default]/dropdown-menu-content:data-[state=checked]:tw-border-secondary-500',\n 'group-data-[variant=default]/dropdown-menu-content:data-[state=checked]:tw-bg-secondary-500',\n ],\n switch: [\n 'tw-size-5',\n 'tw-text-neutral-400',\n 'data-[state=unchecked]:tw-rotate-180',\n 'group-data-[variant=default]/dropdown-menu-content:data-[state=checked]:tw-text-secondary-500',\n 'group-data-[variant=argo]/dropdown-menu-content:data-[state=checked]:tw-text-primary',\n ],\n },\n },\n },\n);\n\ntype Props = ComponentProps<typeof DropdownMenuPrimitive.ItemIndicator> &\n VariantProps<typeof variants>;\n\nexport const DropdownMenuItemIndicator = ({\n variant,\n className,\n forceMount: forceMountProp,\n ...rest\n}: Props) => {\n const icon: ComponentProps<typeof Icon>['icon'] = (() => {\n if (variant === 'switch') return 'toggle-large-on';\n if (variant === 'radio') return 'circle';\n return 'check';\n })();\n\n const forceMount = (() => {\n if (forceMountProp) return true;\n // All variants, except for check, require rendering at all times.\n return variant === 'check' ? undefined : true;\n })();\n\n if (variant === 'none') return null;\n\n return (\n <DropdownMenuPrimitive.ItemIndicator\n {...rest}\n forceMount={forceMount}\n className={variants({ variant, className })}\n >\n <Icon icon={icon} />\n </DropdownMenuPrimitive.ItemIndicator>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\n\ntype Props = ComponentProps<typeof Icon>;\n\nexport const ItemIcon = ({ className, ...props }: Props) => (\n <Icon\n {...props}\n className={cn(\n 'tw-aspect-square',\n 'tw-p-0.5',\n 'tw-size-4',\n 'group-data-[variant=default]/dropdown-menu-content:tw-text-neutral-400',\n 'group-data-[variant=argo]/dropdown-menu-content:tw-text-primary',\n 'group-data-[variant=argo]/dropdown-menu-content:group-aria-disabled:tw-text-muted-foreground',\n 'group-data-[variant=default]/dropdown-menu-content:group-hover:tw-text-secondary-500',\n className,\n )}\n />\n);\n","import { cn } from '../../utils';\n\nexport const itemVariants = cn(\n // reset\n 'tailwindcss-preflight',\n 'tw-outline-none',\n 'tw-group',\n 'tw-peer',\n 'tw-relative',\n\n // positioning\n 'tw-flex',\n 'tw-flex-1',\n 'tw-items-center',\n 'tw-gap-2',\n\n 'tw-cursor-pointer',\n 'tw-select-none',\n 'tw-transition-colors',\n\n // spacing\n 'tw-p-2',\n\n // typography\n 'tw-font-sans',\n 'tw-text-sm',\n\n 'aria-disabled:tw-pointer-events-none',\n 'aria-disabled:tw-opacity-50',\n\n 'focus-visible:tw-outline-none',\n\n 'group-data-[variant=default]/dropdown-menu-content:tw-rounded',\n 'group-data-[variant=default]/dropdown-menu-content:focus:tw-bg-neutral-100',\n 'group-data-[variant=default]/dropdown-menu-content:focus:tw-text-neutral-900',\n 'group-data-[variant=default]/dropdown-menu-content:hover:tw-bg-neutral-100',\n 'group-data-[variant=default]/dropdown-menu-content:hover:tw-text-neutral-900',\n\n 'group-data-[variant=argo]/dropdown-menu-content:tw-rounded-md',\n 'group-data-[variant=argo]/dropdown-menu-content:tw-text-slate-800',\n 'group-data-[variant=argo]/dropdown-menu-content:focus:tw-text-slate-800',\n 'group-data-[variant=argo]/dropdown-menu-content:focus:tw-bg-sky-100',\n 'group-data-[variant=argo]/dropdown-menu-content:hover:tw-text-slate-800',\n 'group-data-[variant=argo]/dropdown-menu-content:hover:tw-bg-sky-100',\n);\n\nexport const contentVariants = cn(\n 'tailwindcss-preflight',\n 'tw-group/dropdown-menu-content',\n 'tw-z-[1040]',\n 'tw-bg-white',\n\n // positioning\n 'tw-flex',\n 'tw-flex-col',\n 'tw-origin-[--radix-dropdown-menu-content-transform-origin]',\n\n // sizing\n 'tw-max-h-[var(--radix-dropdown-menu-content-available-height)]',\n 'tw-min-w-32',\n\n // border\n 'tw-border',\n 'tw-shadow-md',\n\n 'data-[variant=default]:tw-rounded-md',\n 'data-[variant=argo]:tw-rounded-2xl',\n\n // animations\n 'data-[state=open]:tw-animate-in',\n 'data-[state=open]:tw-fade-in-0',\n 'data-[state=open]:tw-zoom-in-95',\n\n 'data-[state=closed]:tw-animate-out',\n 'data-[state=closed]:tw-fade-out-0',\n 'data-[state=closed]:tw-zoom-out-95',\n\n 'data-[side=bottom]:tw-slide-in-from-top-2',\n 'data-[side=left]:tw-slide-in-from-right-2',\n 'data-[side=right]:tw-slide-in-from-left-2',\n 'data-[side=top]:tw-slide-in-from-bottom-2',\n);\n","import type { ComponentProps } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '../../utils';\n\nimport { DropdownMenuItemIndicator } from './DropdownMenuItemIndicator';\nimport { ItemIcon } from './ItemIcon';\nimport { itemVariants } from './styles';\n\ntype Props = ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem> & {\n closeOnSelect?: boolean;\n indicator?: 'switch' | 'checkbox' | 'check';\n indicatorAlign?: 'start' | 'end';\n isLoading?: boolean;\n};\n\nexport const DropdownMenuCheckboxItem = ({\n className,\n children,\n checked,\n closeOnSelect = false,\n onSelect,\n indicatorAlign = 'start',\n indicator = 'checkbox',\n isLoading = false,\n ...props\n}: Props) => {\n const isAtStart = indicatorAlign === 'start';\n const indicatorEle = isLoading ? (\n <ItemIcon spin icon=\"spinner\" className={isAtStart ? '' : 'tw-ml-auto'} />\n ) : (\n <DropdownMenuItemIndicator variant={indicator} className={isAtStart ? '' : 'tw-ml-auto'} />\n );\n\n const handleSelect = (event: Event) => {\n if (!closeOnSelect) event.preventDefault();\n onSelect?.(event);\n };\n\n return (\n <DropdownMenuPrimitive.CheckboxItem\n className={cn(itemVariants, className)}\n checked={checked}\n onSelect={handleSelect}\n {...props}\n >\n {isAtStart && indicatorEle}\n {children}\n {!isAtStart && indicatorEle}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n};\n","import { createContext, use } from 'react';\n\nexport type DropdownMenuVariant = 'default' | 'argo';\n\ntype DropdownMenuContextType = {\n variant: DropdownMenuVariant;\n};\n\nexport const DropdownMenuContext = createContext<DropdownMenuContextType>({\n variant: 'default',\n});\n\nexport const useDropdownMenuContext = () => use(DropdownMenuContext);\n","import type { ComponentProps } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '../../utils';\nimport { ScrollArea } from '../ScrollArea';\n\nimport { useDropdownMenuContext } from './DropdownMenuContext';\nimport { contentVariants } from './styles';\n\ntype Props = Omit<\n ComponentProps<typeof DropdownMenuPrimitive.Content>,\n 'forceMount' | 'asChild'\n> & {\n forceMount?: boolean;\n viewPortClassName?: string;\n container?: HTMLElement | null;\n};\n\nexport const DropdownMenuContent = ({\n className,\n sideOffset = 4,\n forceMount,\n children,\n viewPortClassName,\n container,\n ...props\n}: Props) => {\n const { variant } = useDropdownMenuContext();\n\n return (\n <DropdownMenuPrimitive.Portal forceMount={forceMount || undefined} container={container}>\n <DropdownMenuPrimitive.Content\n {...props}\n data-variant={variant}\n sideOffset={sideOffset}\n className={contentVariants}\n >\n <ScrollArea\n className={className}\n viewPortClassName={cn(\n 'tw-p-2',\n 'tw-max-h-[var(--radix-dropdown-menu-content-available-height)]',\n viewPortClassName,\n )}\n scrollBarClassName=\"tw-w-1.5\"\n >\n {children}\n </ScrollArea>\n </DropdownMenuPrimitive.Content>\n </DropdownMenuPrimitive.Portal>\n );\n};\n","import type { ComponentProps, ElementRef, PointerEventHandler, Ref } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport { Root, Slottable } from '@radix-ui/react-slot';\n\nimport { cn } from '../../utils';\nimport type { Icon } from '../Icon';\n\nimport { ItemIcon } from './ItemIcon';\nimport { itemVariants } from './styles';\n\ntype Props = ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n /**\n * Fix for `autoFocus` on inputs not working correctly in modals.\n * While the DropdownMenuItem was animating out and the modal was animating in, the dying DropdownMenuItem was constantly trying to steal focus while the Dialog was trying to correctly set the new focus.\n * https://github.com/radix-ui/primitives/issues/2193#issuecomment-2758461323\n */\n asModalTrigger?: boolean;\n icon?: ComponentProps<typeof Icon>['icon'];\n isLoading?: boolean;\n iconClassName?: string;\n};\n\nexport const DropdownMenuItem = ({\n ref,\n className,\n asModalTrigger = false,\n onSelect,\n onPointerLeave,\n onPointerMove,\n children,\n asChild,\n icon: iconProp,\n iconClassName,\n isLoading = false,\n ...props\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => {\n const Comp = asChild ? Root : 'div';\n const icon = isLoading ? 'spinner' : iconProp;\n\n const handleOnSelect = (event: Event) => {\n // prevents dropdown menu from closing to prevent modal unmounting from dom\n if (asModalTrigger) event.preventDefault();\n onSelect?.(event);\n };\n\n const handlePointerLeave: PointerEventHandler<HTMLDivElement> = (event) => {\n // prevents focus stealing from modal\n if (asModalTrigger) event.preventDefault();\n onPointerLeave?.(event);\n };\n\n const handlePointerMove: PointerEventHandler<HTMLDivElement> = (event) => {\n // prevents focus stealing from modal\n if (asModalTrigger) event.preventDefault();\n onPointerMove?.(event);\n };\n\n return (\n <DropdownMenuPrimitive.Item\n {...props}\n ref={ref}\n onSelect={handleOnSelect}\n onPointerLeave={handlePointerLeave}\n onPointerMove={handlePointerMove}\n className={cn(itemVariants, className)}\n asChild\n >\n <Comp>\n {icon && <ItemIcon spin={isLoading} icon={icon} className={iconClassName} />}\n <Slottable>{children}</Slottable>\n </Comp>\n </DropdownMenuPrimitive.Item>\n );\n};\n","import type { ComponentProps } from 'react';\nimport { cva } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nconst descriptionVariants = cva(\n [\n 'tw-box-border',\n 'tw-ml-auto',\n 'tw-font-sans',\n 'tw-tracking-normal',\n 'tw-font-normal',\n 'tw-text-xs',\n 'tw-text-muted-foreground',\n ],\n {\n variants: {\n hideOnHover: {\n true: ['group-focus-within:tw-hidden', 'group-hover:tw-hidden'],\n false: [],\n },\n },\n defaultVariants: {},\n },\n);\n\ntype Props = ComponentProps<'span'> & {\n hideOnHover?: boolean;\n};\n\nexport const DropdownMenuItemDescription = ({\n className,\n children,\n hideOnHover = false,\n ...props\n}: Props) => {\n return (\n <span {...props} className={cn(descriptionVariants({ hideOnHover }), className)}>\n {children}\n </span>\n );\n};\n","import type { ComponentProps } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof DropdownMenuPrimitive.Label>;\n\nexport const DropdownMenuLabel = ({ className, ...props }: Props) => {\n return (\n <DropdownMenuPrimitive.Label\n className={cn(\n 'tw-p-2',\n 'tw-font-medium',\n 'tw-text-xs',\n 'tw-text-muted-foreground',\n className,\n )}\n {...props}\n />\n );\n};\n","import type { ComponentProps } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\ntype Props<Value> = Omit<\n ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>,\n 'value' | 'onValueChange' | 'defaultValue'\n> & {\n value?: Value;\n defaultValue?: Value;\n onValueChange?: (value: Value) => void;\n};\n\nexport const DropdownMenuRadioGroup = <Value extends string = string>({\n value,\n defaultValue,\n onValueChange,\n ...props\n}: Props<Value>) => {\n const handleChange = (value: string) => {\n onValueChange?.(value as Value);\n };\n\n return (\n <DropdownMenuPrimitive.RadioGroup\n {...props}\n value={value}\n defaultValue={defaultValue}\n onValueChange={handleChange}\n />\n );\n};\n","import type { ComponentProps } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '../../../utils';\nimport type { Icon } from '../../Icon';\nimport { DropdownMenuItemIndicator } from '../DropdownMenuItemIndicator';\nimport { ItemIcon } from '../ItemIcon';\nimport { itemVariants } from '../styles';\n\ntype Props = ComponentProps<typeof DropdownMenuPrimitive.RadioItem> & {\n closeOnSelect?: boolean;\n indicatorAlign?: 'start' | 'end';\n indicator?: 'radio' | 'check' | 'none';\n icon?: ComponentProps<typeof Icon>['icon'];\n iconClassName?: string;\n isLoading?: boolean;\n};\n\nexport const DropdownMenuRadioItem = ({\n className,\n children,\n closeOnSelect,\n onSelect,\n indicatorAlign = 'start',\n indicator = 'radio',\n icon,\n iconClassName,\n isLoading = false,\n ...props\n}: Props) => {\n const isAtStart = indicatorAlign === 'start';\n const indicatorEle = isLoading ? (\n <ItemIcon spin icon=\"spinner\" className={iconClassName} />\n ) : (\n <DropdownMenuItemIndicator variant={indicator} />\n );\n\n const handleSelect = (event: Event) => {\n if (!closeOnSelect) event.preventDefault();\n onSelect?.(event);\n };\n\n return (\n <DropdownMenuPrimitive.RadioItem\n className={cn(\n itemVariants,\n 'data-[state=checked]:tw-cursor-default',\n {\n 'data-[state=checked]:tw-bg-neutral-100': indicator === 'none',\n 'group-data-[variant=argo]/dropdown-menu-content:data-[state=checked]:tw-bg-sky-100':\n indicator === 'check',\n },\n className,\n )}\n onSelect={handleSelect}\n {...props}\n >\n {isAtStart && indicatorEle}\n {icon && <ItemIcon icon={icon} className={iconClassName} />}\n <span className=\"tw-flex tw-min-w-0 tw-flex-1 tw-items-center tw-gap-2\">{children}</span>\n {!isAtStart && indicatorEle}\n </DropdownMenuPrimitive.RadioItem>\n );\n};\n","import type { ComponentProps } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof DropdownMenuPrimitive.Separator>;\n\nexport const DropdownMenuSeparator = ({ className, ...props }: Props) => (\n <DropdownMenuPrimitive.Separator\n className={cn(\n 'tw-relative',\n 'tw-z-10',\n\n // layout\n 'tw-flex',\n 'tw-items-center',\n 'tw-justify-center',\n 'tw-w-full',\n\n // separator line\n 'before:tw-content-[\"\"]',\n 'before:tw-w-full',\n 'before:tw-h-px',\n\n 'group-data-[variant=default]/dropdown-menu-content:tw-py-2',\n 'group-data-[variant=default]/dropdown-menu-content:before:tw-bg-neutral-150',\n\n 'group-data-[variant=argo]/dropdown-menu-content:tw-py-1',\n 'group-data-[variant=argo]/dropdown-menu-content:before:tw-bg-border',\n\n className,\n )}\n {...props}\n />\n);\n","import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nexport const DropdownMenuSub = DropdownMenuPrimitive.Sub;\n","import type { ComponentProps } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '../../../utils';\nimport { useDropdownMenuContext } from '../DropdownMenuContext';\nimport { contentVariants } from '../styles';\n\ntype Props = ComponentProps<typeof DropdownMenuPrimitive.SubContent>;\n\nexport const DropdownMenuSubContent = ({ className, ...props }: Props) => {\n const { variant } = useDropdownMenuContext();\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.SubContent\n data-variant={variant}\n className={cn(contentVariants, 'tw-z-[1041]', 'tw-p-2', className)}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n};\n","import type { ComponentProps } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '../../../utils';\nimport { Icon } from '../../Icon';\nimport { itemVariants } from '../styles';\n\ntype Props = ComponentProps<typeof DropdownMenuPrimitive.SubTrigger>;\n\nexport const DropdownMenuSubTrigger = ({ className, children, ...props }: Props) => {\n return (\n <DropdownMenuPrimitive.SubTrigger className={cn(itemVariants, className)} {...props}>\n {children}\n <Icon icon=\"chevron-right\" className=\"tw-ml-auto\" />\n </DropdownMenuPrimitive.SubTrigger>\n );\n};\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Trigger } from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof Trigger>;\n\nexport const DropdownMenuTrigger = ({\n ref,\n className,\n ...props\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => (\n <Trigger\n {...props}\n ref={ref}\n data-slot=\"dropdown-menu-trigger\"\n className={cn('tw-group/dropdown-menu-trigger', className)}\n />\n);\n","import { useMemo } from 'react';\nimport type { ComponentProps } from 'react';\nimport { Group, Root } from '@radix-ui/react-dropdown-menu';\n\nimport { DropdownMenuCheckboxItem } from './DropdownMenuCheckboxItem';\nimport { DropdownMenuContent } from './DropdownMenuContent';\nimport type { DropdownMenuVariant } from './DropdownMenuContext';\nimport { DropdownMenuContext } from './DropdownMenuContext';\nimport { DropdownMenuItem } from './DropdownMenuItem';\nimport { DropdownMenuItemDescription } from './DropdownMenuItemDescription';\nimport { DropdownMenuLabel } from './DropdownMenuLabel';\nimport { DropdownMenuRadioGroup, DropdownMenuRadioItem } from './DropdownMenuRadioGroup';\nimport { DropdownMenuSeparator } from './DropdownMenuSeparator';\nimport { DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger } from './DropdownMenuSub';\nimport { DropdownMenuTrigger } from './DropdownMenuTrigger';\n\ntype Props = ComponentProps<typeof Root> & {\n variant?: DropdownMenuVariant;\n};\n\nexport const DropdownMenu = ({\n // change a default value to false, for modal property, as it is not used in most cases\n modal = false,\n variant = 'default',\n ...props\n}: Props) => {\n const contextValue = useMemo(() => ({ variant }), [variant]);\n\n return (\n <DropdownMenuContext value={contextValue}>\n <Root {...props} modal={modal} />\n </DropdownMenuContext>\n );\n};\n\n/**\n * Main Layout\n */\nDropdownMenu.Trigger = DropdownMenuTrigger;\nDropdownMenu.Content = DropdownMenuContent;\nDropdownMenu.Group = Group;\n\n/**\n * Sub Layout\n */\nDropdownMenu.Sub = DropdownMenuSub;\nDropdownMenu.SubContent = DropdownMenuSubContent;\nDropdownMenu.SubTrigger = DropdownMenuSubTrigger;\n\n/**\n * Items can be used either Sub ar Main Layout\n */\nDropdownMenu.Separator = DropdownMenuSeparator;\nDropdownMenu.Label = DropdownMenuLabel;\nDropdownMenu.Item = DropdownMenuItem;\nDropdownMenu.CheckboxItem = DropdownMenuCheckboxItem;\nDropdownMenu.RadioGroup = DropdownMenuRadioGroup;\nDropdownMenu.RadioItem = DropdownMenuRadioItem;\n\n// item content\nDropdownMenu.ItemDescription = DropdownMenuItemDescription;\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'> & {\n as?: 'form';\n};\n\nexport const ModalBody = ({ className, ...props }: Props) => (\n <div\n data-slot=\"modal-body\"\n className={cn(\n // scrollable body - takes available space and scrolls when content overflows\n 'tw-flex-1',\n 'tw-overflow-y-auto',\n\n 'tw-px-1', // 4 px to complement ModalContent and still keep input focus outline visible\n 'tw-py-1',\n className,\n )}\n {...props}\n />\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Overlay } from '@radix-ui/react-dialog';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof Overlay> & {\n disableTransition?: boolean;\n};\n\nexport const ModalOverlay = ({\n ref,\n className,\n disableTransition = false,\n ...props\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => (\n <Overlay\n {...props}\n ref={ref}\n className={cn(\n // positioning\n 'tw-fixed',\n 'tw-inset-0',\n 'tw-z-[1051]',\n\n // background\n 'tw-bg-black/50',\n\n // opening animation\n 'data-[state=open]:tw-duration-500',\n 'data-[state=open]:tw-fade-in-0',\n\n // closing animation\n 'data-[state=closed]:tw-duration-500',\n 'data-[state=closed]:tw-fade-out-0',\n {\n 'data-[state=open]:tw-animate-in data-[state=closed]:tw-animate-out': !disableTransition,\n },\n className,\n )}\n onClick={(event) => event.stopPropagation()}\n />\n);\n","import type { ComponentProps } from 'react';\nimport { Content, Portal } from '@radix-ui/react-dialog';\n\nimport { cn } from '../../utils';\n\nimport { ModalOverlay } from './ModalOverlay';\n\ntype Props = ComponentProps<typeof Content> & { size?: 'small' | 'medium' | 'large' };\n\nexport const ModalContent = ({\n size = 'medium',\n className,\n children,\n onEscapeKeyDown,\n ...props\n}: Props) => {\n const handleEscapeKeyDown: typeof onEscapeKeyDown = (event) => {\n // Stop propagation to prevent parent modals (like FullScreenModal) from closing\n event.stopPropagation();\n onEscapeKeyDown?.(event);\n };\n\n return (\n <Portal>\n <ModalOverlay>\n <Content\n /**\n * Intentionally set undefined to avoid warning as suggested in docs, (https://www.radix-ui.com/primitives/docs/components/dialog#description)\n * as of now we don't use modal description anywhere, if we decide to fix this issue, we fix it everywhere at once.\n */\n aria-describedby={undefined}\n className={cn(\n // reset\n 'tailwindcss-preflight',\n\n // positioning - centered with viewport-relative constraints\n 'tw-fixed',\n 'tw-left-1/2',\n 'tw-top-20',\n 'tw--translate-x-1/2',\n 'tw-z-[1051]',\n\n // sizing - responsive max dimensions\n 'tw-w-full',\n 'tw-max-w-2xl',\n 'tw-max-h-[calc(100vh-2*theme(spacing.20))]',\n\n // layout\n 'tw-flex',\n 'tw-flex-col',\n 'tw-gap-4',\n 'tw-rounded-lg',\n 'tw-bg-white',\n 'tw-px-7', // 4 px less padding to prevent input focus rings/outlines from being clipped by overflow\n 'tw-py-8',\n\n // opening animation\n 'tw-duration-200',\n 'data-[state=open]:tw-animate-in',\n 'data-[state=open]:tw-fade-in-0',\n 'data-[state=open]:tw-zoom-in-80',\n 'data-[state=open]:tw-slide-in-from-left-1/2',\n 'data-[state=open]:tw-slide-in-from-top-[48%]',\n\n // closing animation\n 'data-[state=closed]:tw-animate-out',\n 'data-[state=closed]:tw-fade-out-0',\n 'data-[state=closed]:tw-zoom-out-80',\n 'data-[state=closed]:tw-slide-out-to-left-1/2',\n 'data-[state=closed]:tw-slide-out-to-top-[48%]',\n\n {\n 'tw-max-w-[480px]': size === 'small',\n 'tw-max-w-4xl': size === 'large',\n },\n\n className,\n )}\n onEscapeKeyDown={handleEscapeKeyDown}\n {...props}\n >\n {children}\n </Content>\n </ModalOverlay>\n </Portal>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const ModalFooter = ({ className, ...props }: Props) => (\n <div\n className={cn(\n 'tw-px-1', // 4 px to complement ModalContent and still keep input focus outline visible\n className,\n )}\n {...props}\n />\n);\n","import type { ComponentProps } from 'react';\nimport { Close } from '@radix-ui/react-dialog';\n\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\n\ntype Props = ComponentProps<typeof Close>;\n\nexport const ModalCloseIcon = ({ className, ...rest }: Props) => (\n <Close\n {...rest}\n className={cn(\n 'tw-group/modal-close-icon',\n 'tw-flex',\n 'tw-items-center',\n 'tw-justify-center',\n 'focus:tw-outline-none',\n className,\n )}\n >\n <Icon\n icon=\"close\"\n className={cn(\n 'tw-size-4',\n 'tw-text-neutral-400',\n 'group-focus/modal-close-icon:tw-text-neutral-500',\n 'group-hover/modal-close-icon:tw-text-neutral-500',\n )}\n />\n <span className=\"tw-sr-only\">Close</span>\n </Close>\n);\n","import type { ComponentProps } from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof DialogPrimitive.Description>;\n\nexport const ModalDescription = ({ className, ...props }: Props) => (\n <DialogPrimitive.Description\n className={cn(\n 'tw-text-sm',\n 'tw-font-sans',\n 'tw-tracking-normal',\n 'tw-font-normal',\n 'tw-text-neutral-400',\n className,\n )}\n {...props}\n />\n);\n","import type { ComponentProps } from 'react';\nimport { Title } from '@radix-ui/react-dialog';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof Title>;\n\nexport const ModalTitle = ({ children, className, ...props }: Props) => (\n <Title {...props} asChild className={cn('tw-flex-1 tw-break-anywhere', className)}>\n <h3>{children}</h3>\n </Title>\n);\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { ModalCloseIcon } from './ModalCloseIcon';\nimport { ModalDescription } from './ModalDescription';\nimport { ModalTitle } from './ModalTitle';\n\ntype Props = {\n title?: ReactNode;\n description?: ReactNode;\n hideCloseIcon?: boolean;\n} & ComponentProps<'div'>;\n\nexport const ModalHeader = ({\n className,\n title,\n description,\n hideCloseIcon = false,\n children,\n ...props\n}: Props) => (\n <div\n className={cn(\n 'tw-flex',\n 'tw-flex-col',\n 'tw-gap-3',\n 'tw-pb-5',\n // Show border separator only if body is visible\n '[&:has(~[data-slot=modal-body])]:tw-border-b',\n // Tabs render their own bottom border — drop header border + padding to avoid the double-line look\n '[&:has(~[data-slot=modal-body]_[data-slot=tabs-root])]:!tw-border-b-0',\n '[&:has(~[data-slot=modal-body]_[data-slot=tabs-root])]:!tw-pb-0',\n 'tw-border-neutral-150',\n 'tw-px-1', // 4 px to complement ModalContent and still keep input focus outline visible\n className,\n )}\n {...props}\n >\n <div className=\"tw-flex tw-flex-col\">\n <div className=\"tw-flex tw-justify-end tw-gap-2\">\n {title && <ModalTitle>{title}</ModalTitle>}\n {!hideCloseIcon && <ModalCloseIcon />}\n </div>\n {description && <ModalDescription>{description}</ModalDescription>}\n </div>\n\n {children}\n </div>\n);\n","import { useState } from 'react';\nimport type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\n\ntype NamedColor = 'orange' | 'blue' | 'red' | 'green' | 'gray' | 'violet';\n\ntype IconProps = Omit<ComponentProps<typeof Icon>, 'className'> & {\n color: NamedColor | (string & {});\n iconUrl?: never;\n iconAlt?: never;\n};\n\ntype ImageProps = {\n color?: never;\n iconUrl: string;\n iconAlt?: string;\n icon?: never;\n};\n\ntype Props = IconProps | ImageProps;\n\nconst NAMED_COLORS = new Set<string>(['orange', 'blue', 'red', 'green', 'gray', 'violet']);\n\nexport const ModalIcon = ({ color, ...props }: Props) => {\n const [hasImageError, setHasImageError] = useState(false);\n\n if ('iconUrl' in props && hasImageError) {\n return null;\n }\n\n return (\n <div\n className={cn('tw-absolute', 'tw-top-0', 'tw-left-8', 'tw-translate-y-[-50%]', 'tw-size-12')}\n >\n {'iconUrl' in props ? (\n <img\n src={props.iconUrl}\n alt={props.iconAlt ?? 'Modal icon'}\n className=\"tw-size-full tw-rounded-full tw-object-contain\"\n onError={() => setHasImageError(true)}\n />\n ) : (\n <div\n className={cn('tw-relative', 'tw-rounded-full', 'tw-size-12', {\n 'tw-bg-warning-500': color === 'orange',\n 'tw-bg-secondary-500': color === 'blue',\n 'tw-bg-primary-500': color === 'green',\n 'tw-bg-error-500': color === 'red',\n 'tw-bg-neutral-150': color === 'gray',\n 'tw-bg-purple-100': color === 'violet',\n })}\n style={color && !NAMED_COLORS.has(color) ? { backgroundColor: color } : undefined}\n >\n {/* Icon spinning uses CSS transforms, which conflict with center positioning, so a wrapper should be used */}\n <span\n className={cn(\n 'tw-absolute',\n 'tw-size-full',\n 'tw-flex',\n 'tw-items-center',\n 'tw-justify-center',\n 'tw-top-1/2',\n 'tw-left-1/2',\n '-tw-translate-x-1/2',\n '-tw-translate-y-1/2',\n )}\n >\n <Icon\n className={cn(\n { 'tw-text-white': color !== 'violet', 'tw-text-purple-500': color === 'violet' },\n 'tw-size-6',\n 'tw-aspect-square',\n )}\n {...props}\n />\n </span>\n </div>\n )}\n </div>\n );\n};\n","import type { ComponentProps } from 'react';\nimport { Close, Root, Trigger } from '@radix-ui/react-dialog';\n\nimport { ModalBody } from './ModalBody';\nimport { ModalContent } from './ModalContent';\nimport { ModalFooter } from './ModalFooter';\nimport { ModalHeader } from './ModalHeader';\nimport { ModalIcon } from './ModalIcon';\nimport { ModalOverlay } from './ModalOverlay';\n\ntype Props = ComponentProps<typeof Root>;\n\nexport const Modal = (props: Props) => <Root {...props} />;\n\nModal.Close = Close;\nModal.Trigger = Trigger;\n\nModal.Content = ModalContent;\nModal.Body = ModalBody;\nModal.Icon = ModalIcon;\nModal.Footer = ModalFooter;\nModal.Header = ModalHeader;\nModal.Overlay = ModalOverlay;\n","import type { HTMLAttributes, Ref } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = HTMLAttributes<HTMLDivElement>;\n\nexport const FullScreenModalBody = ({\n ref,\n className,\n children,\n ...props\n}: Props & { ref?: Ref<HTMLDivElement> }) => (\n <div ref={ref} className={cn('tw-flex-1 tw-min-h-0 tw-overflow-auto', className)} {...props}>\n {children}\n </div>\n);\n","import { useState } from 'react';\nimport type { ComponentPropsWithoutRef, ElementRef, ReactNode, Ref } from 'react';\n\nimport type { TooltipProps } from '@keboola/design';\nimport { cn, Tooltip } from '@keboola/design';\n\nconst OFFSET_TOLERANCE = 2;\n\ntype Props = {\n text: ReactNode;\n tooltip?: ReactNode;\n twoLines?: boolean;\n noTooltip?: boolean;\n redact?: boolean;\n tooltipVariant?: TooltipProps['variant'];\n tooltipPlacement?: TooltipProps['placement'];\n} & Omit<ComponentPropsWithoutRef<'span'>, 'children'>;\n\nexport const Truncated = ({\n ref,\n text,\n tooltip = text,\n className,\n twoLines = false,\n noTooltip = false,\n redact = false,\n tooltipVariant = 'explanatory',\n tooltipPlacement = 'top',\n ...rest\n}: Props & { ref?: Ref<ElementRef<'span'>> }) => {\n const tooltipText = typeof tooltip === 'string' ? tooltip : '';\n const [showTooltip, setShowTooltip] = useState(false);\n\n const isScrollableTarget = (e: HTMLElement): boolean => {\n return e.scrollHeight - OFFSET_TOLERANCE >= e.clientHeight;\n };\n\n const truncatedClasses = cn(\n className,\n 'tw-overflow-hidden [word-break:break-all]',\n '[display:-webkit-box!important] [-webkit-box-orient:vertical]',\n twoLines ? '[-webkit-line-clamp:2] [word-break:break-word]' : '[-webkit-line-clamp:1]',\n );\n\n if (noTooltip || !tooltipText) {\n return (\n <span ref={ref} className={truncatedClasses} {...rest}>\n {text}\n </span>\n );\n }\n\n return (\n <Tooltip\n placement={tooltipPlacement}\n variant={tooltipVariant}\n forceHide={!showTooltip}\n tooltip={<div data-heap-redact-text={redact}>{tooltipText}</div>}\n triggerAsChild\n >\n <span\n ref={ref}\n className={truncatedClasses}\n {...rest}\n onMouseOver={(e) => {\n setShowTooltip(isScrollableTarget(e.currentTarget));\n rest.onMouseOver?.(e);\n }}\n onFocus={(e) => {\n setShowTooltip(isScrollableTarget(e.currentTarget));\n rest.onFocus?.(e);\n }}\n >\n {text}\n </span>\n </Tooltip>\n );\n};\n","import { useMemo } from 'react';\nimport type { HTMLAttributes, PropsWithChildren, ReactNode } from 'react';\n\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport { Truncated } from '../Truncated';\n\nconst DEFAULT_TITLE_STYLES =\n 'tw-text-2xl tw-leading-8 tw-font-normal tw-text-neutral-900 tw-overflow-hidden';\n\ntype Props = PropsWithChildren<\n Omit<HTMLAttributes<HTMLDivElement>, 'title'> & {\n title: ReactNode;\n titleClassName?: string;\n titleWrapperClassName?: string;\n defaultTitleStyles?: boolean;\n isTitleWithIcon?: boolean;\n onClose?: () => void;\n showPreviousTitle?: boolean;\n }\n>;\n\nexport const FullScreenModalHeader = ({\n title,\n titleClassName,\n titleWrapperClassName,\n defaultTitleStyles = true,\n isTitleWithIcon = false,\n children,\n onClose,\n className,\n showPreviousTitle = true,\n ...props\n}: Props) => {\n const previousTitle = useMemo(() => {\n const modals = Array.from(document.querySelectorAll('[data-fullscreen-modal]'));\n return (\n showPreviousTitle &&\n modals?.length > 0 &&\n modals.at(-1)?.querySelector('[data-modal-title]')?.textContent\n );\n }, [showPreviousTitle]);\n\n return (\n <div\n className={cn('tw-p-4 tw-flex tw-shrink-0 tw-items-center tw-justify-between', className)}\n {...props}\n >\n <div className={cn('tw-flex tw-flex-1 tw-items-center', titleWrapperClassName)}>\n {previousTitle && onClose && (\n <Button icon=\"angle-left\" onClick={onClose} size=\"icon\" className=\"tw-mr-6\" />\n )}\n\n <div className=\"tw-w-full\">\n <div\n className={cn('tw-m-0', defaultTitleStyles && DEFAULT_TITLE_STYLES, titleClassName)}\n data-modal-title\n >\n {previousTitle && onClose && (\n <button\n type=\"button\"\n onClick={onClose}\n className=\"tailwindcss-preflight\"\n aria-label={`Go back to ${previousTitle}`}\n >\n <Truncated\n text={previousTitle}\n className={cn(\n 'tw-relative tw-top-0 tw-cursor-pointer tw-text-base tw-font-normal tw-text-neutral-400 tw-underline',\n 'hover:tw-text-neutral-800 hover:tw-no-underline',\n isTitleWithIcon && 'tw-ml-14',\n )}\n />\n </button>\n )}\n <div\n className={cn('tw-flex tw-items-center', {\n '[&>img]:-tw-mt-6': previousTitle,\n })}\n >\n {title}\n </div>\n </div>\n </div>\n </div>\n {children}\n </div>\n );\n};\n","import { useEffect, useRef } from 'react';\nimport type { HTMLAttributes, KeyboardEvent, ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { cn } from '../../utils';\n\ntype Props = HTMLAttributes<HTMLDivElement> & {\n children: ReactNode;\n /** Lock body scroll when modal is open. Default: true */\n lockBodyScroll?: boolean;\n /** Callback when ESC key is pressed */\n onEscapeKeyDown?: (event: KeyboardEvent<HTMLDivElement>) => void;\n};\n\nconst BODY_LOCK_CLASS = 'full-screen-modal-open';\n\nexport const FullScreenModalRoot = ({\n children,\n className,\n lockBodyScroll = true,\n onEscapeKeyDown,\n ...props\n}: Props) => {\n const modalRef = useRef<HTMLDivElement>(null);\n\n // Body scroll lock\n useEffect(() => {\n const modalElement = modalRef.current;\n\n if (lockBodyScroll) {\n document.body.classList.add(BODY_LOCK_CLASS);\n }\n\n return () => {\n // Filter out the current modal because it may still be in the DOM\n // when lockBodyScroll toggles from true to false (e.g. switching\n // from full-screen to half-screen mode).\n const hasOtherModals = Array.from(document.querySelectorAll('[data-fullscreen-modal]')).some(\n (el) => el !== modalElement,\n );\n\n if (!hasOtherModals) {\n document.body.classList.remove(BODY_LOCK_CLASS);\n }\n };\n }, [lockBodyScroll]);\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Escape' && !event.defaultPrevented) {\n onEscapeKeyDown?.(event);\n }\n };\n\n return createPortal(\n <div\n ref={modalRef}\n role=\"dialog\"\n aria-modal=\"true\"\n tabIndex={-1}\n data-fullscreen-modal\n onKeyDown={handleKeyDown}\n className={cn(\n 'tailwindcss-preflight',\n 'tw-fixed',\n 'tw-inset-0',\n 'tw-z-[1039]',\n 'tw-flex',\n 'tw-flex-col',\n 'tw-bg-neutral-50',\n 'focus-visible:tw-outline-none',\n className,\n )}\n {...props}\n >\n {children}\n </div>,\n document.body,\n );\n};\n","import { FullScreenModalBody } from './FullScreenModalBody';\nimport { FullScreenModalHeader } from './FullScreenModalHeader';\nimport { FullScreenModalRoot } from './FullScreenModalRoot';\n\nexport const FullScreenModal = Object.assign(FullScreenModalRoot, {\n Header: FullScreenModalHeader,\n Body: FullScreenModalBody,\n});\n","import { createContext, type MouseEvent, use } from 'react';\n\nexport type PopconfirmContextType = {\n variant: 'confirm' | 'danger';\n onConfirm: (event: MouseEvent<HTMLButtonElement>) => void | Promise<void>;\n onCancel: (event: MouseEvent<HTMLButtonElement>) => void;\n enabled: boolean;\n isLoading: boolean;\n};\n\nconst PopconfirmContext = createContext<PopconfirmContextType | null>(null);\n\nexport const PopconfirmContextProvider = PopconfirmContext;\n\nexport const usePopconfirmContext = () => {\n const context = use(PopconfirmContext);\n if (!context) throw new Error('usePopconfirmContext must be used within a Popconfirm');\n return context;\n};\n","import type { ComponentProps } from 'react';\n\ntype Props = ComponentProps<'div'>;\n\nexport const PopconfirmBody = (props: Props) => <div {...props} />;\n","import type { ComponentProps, ElementRef, ReactNode, Ref } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport { Popover } from '../Popover';\n\nimport { usePopconfirmContext } from './context';\n\ntype SlotProps = { asChild: true } & ComponentProps<'button'>;\ntype ButtonProps = { asChild?: false; children?: ReactNode } & Omit<\n ComponentProps<typeof Button>,\n 'children'\n>;\ntype Props = SlotProps | ButtonProps;\n\nexport const PopconfirmCancel = ({\n ref,\n onClick,\n children,\n asChild,\n className,\n ...props\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => {\n const { onCancel, isLoading } = usePopconfirmContext();\n\n const handleClick: ComponentProps<'button'>['onClick'] = (event) => {\n onClick?.(event);\n onCancel(event);\n };\n\n return (\n <Popover.Close asChild onClick={handleClick} disabled={isLoading}>\n {asChild ? (\n <Slot {...props} ref={ref} className={className}>\n {children}\n </Slot>\n ) : (\n <Button variant=\"outline\" size=\"small\" {...props} ref={ref} className={cn(className)}>\n {children ?? 'Cancel'}\n </Button>\n )}\n </Popover.Close>\n );\n};\n","import type { ComponentProps, ElementRef, ReactNode, Ref } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { cn } from '../../utils';\nimport { Button } from '../Button/Button';\nimport { Popover } from '../Popover';\n\nimport { usePopconfirmContext } from './context';\n\ntype SlotProps = { asChild: true } & ComponentProps<'button'>;\ntype ButtonProps = { asChild?: false; children?: ReactNode } & Omit<\n ComponentProps<typeof Button>,\n 'children' | 'isLoading'\n>;\ntype Props = SlotProps | ButtonProps;\n\nexport const PopconfirmConfirm = ({\n ref,\n onClick,\n children,\n asChild,\n className,\n ...props\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => {\n const { onConfirm, variant, isLoading } = usePopconfirmContext();\n\n const handleOnClick: ComponentProps<'button'>['onClick'] = (event) => {\n onClick?.(event);\n onConfirm(event);\n };\n\n const defaultLabel = (() => {\n if (children) return children;\n return variant === 'danger' ? 'Delete' : 'Confirm';\n })();\n\n return (\n <Popover.Close asChild onClick={handleOnClick} disabled={isLoading} data-loading={isLoading}>\n {asChild ? (\n <Slot {...props} ref={ref} className={className}>\n {children}\n </Slot>\n ) : (\n <Button\n size=\"small\"\n variant={variant === 'danger' ? 'danger' : 'primary'}\n {...props}\n ref={ref}\n className={cn('tw-flex-1', className)}\n isLoading={isLoading}\n >\n {defaultLabel}\n </Button>\n )}\n </Popover.Close>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\nimport { Popover } from '../Popover';\n\nimport { usePopconfirmContext } from './context';\n\ntype Props = Omit<ComponentProps<typeof Popover.Content>, 'showArrow'>;\n\nexport const PopconfirmContent = ({ className, onInteractOutside, ...props }: Props) => {\n const { isLoading } = usePopconfirmContext();\n\n const handleOnInteractOutside: Props['onInteractOutside'] = (event) => {\n if (isLoading) event.preventDefault();\n onInteractOutside?.(event);\n };\n\n return (\n <Popover.Content\n {...props}\n onInteractOutside={handleOnInteractOutside}\n className={cn(\n 'tw-flex',\n 'tw-flex-col',\n 'tw-gap-2',\n 'tw-gap-3',\n 'tw-px-4 ',\n 'tw-py-3',\n className,\n )}\n />\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const PopconfirmFooter = ({ className, ...props }: Props) => (\n <div {...props} className={cn('tw-flex tw-gap-2 tw-w-full', className)} />\n);\n","import type { ComponentProps, MouseEventHandler } from 'react';\n\nimport { Popover } from '../Popover';\n\nimport { usePopconfirmContext } from './context';\n\ntype Props = ComponentProps<typeof Popover.Trigger>;\n\nexport const PopconfirmTrigger = ({ onClick, ...props }: Props) => {\n const { enabled, onConfirm } = usePopconfirmContext();\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n if (!enabled) {\n event.preventDefault();\n onConfirm(event);\n }\n\n onClick?.(event);\n };\n\n return <Popover.Trigger {...props} onClick={handleClick} />;\n};\n","import { useMemo, useRef, useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { Popover } from '../Popover';\n\nimport { PopconfirmContextProvider, type PopconfirmContextType } from './context';\nimport { PopconfirmBody } from './PopconfirmBody';\nimport { PopconfirmCancel } from './PopconfirmCancel';\nimport { PopconfirmConfirm } from './PopconfirmConfirm';\nimport { PopconfirmContent } from './PopconfirmContent';\nimport { PopconfirmFooter } from './PopconfirmFooter';\nimport { PopconfirmTrigger } from './PopconfirmTrigger';\n\nconst noop = () => void 0;\n\ntype Props = {\n children: ReactNode;\n skipAsyncWait?: boolean;\n} & ComponentProps<typeof Popover> &\n Omit<Partial<PopconfirmContextType>, 'isLoading'>;\n\nexport const Popconfirm = ({\n children,\n onConfirm = noop,\n onCancel = noop,\n variant = 'confirm',\n enabled = true,\n onOpenChange = noop,\n open,\n skipAsyncWait = false,\n ...rest\n}: Props) => {\n const [isLoading, setIsLoading] = useState(false);\n const [isOpen, setIsOpen] = useState(false);\n\n const confirmRef = useRef(onConfirm);\n const cancelRef = useRef(onCancel);\n confirmRef.current = onConfirm;\n cancelRef.current = onCancel;\n\n const handleOnOpenChange = (open: boolean) => {\n setIsOpen(open);\n onOpenChange(open);\n };\n\n const context = useMemo<PopconfirmContextType>(\n () => ({\n variant,\n isLoading,\n enabled,\n onConfirm: (event) => {\n const result = confirmRef.current(event);\n\n if (!(result instanceof Promise) || skipAsyncWait) return;\n\n event.preventDefault();\n setIsLoading(true);\n result.finally(() => {\n setIsLoading(false);\n setIsOpen(false);\n });\n },\n onCancel: (event) => {\n cancelRef.current(event);\n },\n }),\n [variant, isLoading, enabled, skipAsyncWait],\n );\n\n return (\n <Popover {...rest} open={open || isOpen} onOpenChange={handleOnOpenChange}>\n <PopconfirmContextProvider value={context}>{children}</PopconfirmContextProvider>\n </Popover>\n );\n};\n\nPopconfirm.Confirm = PopconfirmConfirm;\nPopconfirm.Cancel = PopconfirmCancel;\nPopconfirm.Footer = PopconfirmFooter;\nPopconfirm.Content = PopconfirmContent;\nPopconfirm.Body = PopconfirmBody;\nPopconfirm.Trigger = PopconfirmTrigger;\n","import type { ComponentProps, ElementRef, ReactNode, Ref } from 'react';\n\nimport { Button } from '../../components/Button';\nimport { ButtonGroup } from '../../components/ButtonGroup';\nimport { DropdownMenu } from '../../components/DropdownMenu';\n\ntype Variant = ComponentProps<typeof Button>['variant'];\ntype Size = NonNullable<ComponentProps<typeof Button>['size']>;\ntype SpitButtonSize = Exclude<\n Size,\n 'icon' | 'icon-lg' | 'icon-sm' | 'icon-xs' | 'icon-2xs' | 'icon-3xs'\n>;\n\ntype Props = {\n actions?: ReactNode;\n isActionsOpen?: boolean;\n onActionsOpenChange?: (open: boolean) => void;\n // inline and invisible aren't supported in SplitButton\n variant?: Exclude<Variant, 'inline' | 'invisible'>;\n size?: SpitButtonSize;\n} & Omit<ComponentProps<typeof Button>, 'variant' | 'size'>;\n\nconst iconSizeMap: Record<SpitButtonSize, Size> = {\n medium: 'icon',\n large: 'icon-lg',\n small: 'icon-sm',\n};\n\nconst SplitButtonBase = ({\n ref,\n disabled,\n actions,\n variant,\n size = 'medium',\n isActionsOpen,\n onActionsOpenChange,\n argo = false,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => (\n <ButtonGroup space=\"compact\">\n <Button {...rest} ref={ref} disabled={disabled} variant={variant} size={size} argo={argo} />\n\n {actions && (\n <DropdownMenu\n open={isActionsOpen}\n onOpenChange={onActionsOpenChange}\n variant={argo ? 'argo' : 'default'}\n >\n {/* The trigger button is disabled if the main button is disabled, disabled has to be on trigger to prevent dropdown opening*/}\n <DropdownMenu.Trigger asChild disabled={disabled}>\n <Button\n argo={argo}\n size={iconSizeMap[size]}\n variant={variant}\n icon=\"caret-down\"\n aria-label=\"Additional actions\"\n />\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"end\">{actions}</DropdownMenu.Content>\n </DropdownMenu>\n )}\n </ButtonGroup>\n);\n\nexport const SplitButton = Object.assign(SplitButtonBase, {\n Action: DropdownMenu.Item,\n Actions: DropdownMenu.Group,\n});\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const SheetBody = ({ className, ...rest }: Props) => (\n <div\n {...rest}\n className={cn('tw-flex', 'tw-flex-col', 'tw-overflow-x-hidden', 'tw-px-4', className)}\n />\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { ModalOverlay } from '../Modal/ModalOverlay';\n\ntype Props = ComponentProps<typeof ModalOverlay>;\n\n// Assuming it should have the same style as standard modal, if not remove the modal dependency and style it separately.\nexport const SheetOverlay = ({\n ref,\n ...props\n}: Props & { ref?: Ref<ElementRef<typeof ModalOverlay>> }) => <ModalOverlay ref={ref} {...props} />;\n","import type { ComponentProps } from 'react';\nimport { Content, Portal } from '@radix-ui/react-dialog';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nimport { SheetOverlay } from './SheetOverlay';\n\nconst sheetContentVariants = cva(\n [\n // reset\n 'tailwindcss-preflight',\n\n // positioning\n 'tw-fixed',\n\n // Use standard tailwindcss class when, global override in tooltip.less file is removed.\n 'tw-z-[1051]',\n\n 'tw-flex',\n 'tw-flex-col',\n\n 'tw-bg-white',\n 'tw-shadow-lg',\n\n 'tw-ease-in-out',\n // opening animation\n 'data-[state=open]:tw-duration-200',\n\n // close animation\n 'data-[state=closed]:tw-duration-200',\n ],\n {\n defaultVariants: {\n side: 'right',\n disableTransition: false,\n },\n variants: {\n disableTransition: {\n true: [],\n false: ['data-[state=open]:tw-animate-in', 'data-[state=closed]:tw-animate-out'],\n },\n side: {\n top: [\n 'tw-inset-x-0',\n 'tw-top-0',\n 'tw-h-auto',\n 'data-[state=closed]:tw-slide-out-to-top',\n 'data-[state=open]:tw-slide-in-from-top',\n ],\n right: [\n 'tw-inset-y-0',\n 'tw-right-0',\n 'tw-h-full',\n 'data-[state=closed]:tw-slide-out-to-right',\n 'data-[state=open]:tw-slide-in-from-right',\n ],\n\n bottom: [\n 'tw-inset-x-0',\n 'tw-bottom-0',\n 'tw-h-auto',\n 'data-[state=closed]:tw-slide-out-to-bottom',\n 'data-[state=open]:tw-slide-in-from-bottom',\n 'tw-drop-shadow-2xl', // standard tailwindcss shadow is invisible for a bottom sheet because of positioning\n ],\n\n left: [\n 'tw-inset-y-0',\n 'tw-left-0',\n 'tw-h-full',\n 'data-[state=closed]:tw-slide-out-to-left',\n 'data-[state=open]:tw-slide-in-from-left',\n ],\n },\n },\n },\n);\n\ntype Props = ComponentProps<typeof Content> & {\n side?: 'top' | 'right' | 'bottom' | 'left';\n hideOverlay?: boolean;\n keepOpenOnPointerDownOutside?: boolean;\n} & VariantProps<typeof sheetContentVariants> &\n Pick<ComponentProps<typeof Portal>, 'container'>;\n\nexport const SheetContent = ({\n className,\n children,\n side = 'right',\n disableTransition = false,\n hideOverlay = false,\n keepOpenOnPointerDownOutside = false,\n onPointerDownOutside,\n onInteractOutside,\n container,\n ...props\n}: Props) => {\n const handleOnPointerDownOutside: ComponentProps<typeof Content>['onPointerDownOutside'] = (\n event,\n ) => {\n if (keepOpenOnPointerDownOutside) event.preventDefault();\n onPointerDownOutside?.(event);\n };\n\n const handleOnInteractOutside: ComponentProps<typeof Content>['onInteractOutside'] = (event) => {\n if (keepOpenOnPointerDownOutside) event.preventDefault();\n onInteractOutside?.(event);\n };\n\n return (\n <Portal container={container}>\n {!hideOverlay && <SheetOverlay disableTransition={disableTransition ?? false} />}\n <Content\n {...props}\n /**\n * Intentionally set undefined to avoid warning as suggested in docs, (https://www.radix-ui.com/primitives/docs/components/dialog#description)\n * as of now we don't use modal description anywhere, if we decide to fix this issue, we fix it everywhere at once.\n */\n aria-describedby={undefined}\n className={cn(sheetContentVariants({ side, className, disableTransition }))}\n onPointerDownOutside={handleOnPointerDownOutside}\n onInteractOutside={handleOnInteractOutside}\n data-side={side}\n >\n {children}\n </Content>\n </Portal>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const SheetFooter = ({ className, ...props }: Props) => (\n <div className={cn('tw-mt-auto tw-flex tw-flex-col tw-gap-2 tw-p-4', className)} {...props} />\n);\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { cn } from '../../utils';\nimport { ModalCloseIcon } from '../Modal/ModalCloseIcon';\nimport { ModalDescription } from '../Modal/ModalDescription';\nimport { ModalTitle } from '../Modal/ModalTitle';\n\ntype Props = {\n title?: ReactNode;\n description?: ReactNode;\n hideCloseIcon?: boolean;\n} & ComponentProps<'div'>;\n\nexport const SheetHeader = ({\n className,\n children,\n hideCloseIcon = false,\n title,\n description,\n ...props\n}: Props) => {\n const isHeaderRendered = title || description || !hideCloseIcon;\n\n return (\n <div className={cn('tw-flex', 'tw-flex-col', 'tw-gap-1.5', 'tw-p-4', className)} {...props}>\n {isHeaderRendered && (\n <div className=\"tw-flex tw-flex-col\">\n <div className=\"tw-flex tw-justify-end tw-gap-2\">\n {title && <ModalTitle>{title}</ModalTitle>}\n {!hideCloseIcon && <ModalCloseIcon />}\n </div>\n {description && <ModalDescription>{description}</ModalDescription>}\n </div>\n )}\n\n {children}\n </div>\n );\n};\n","import type { ComponentProps } from 'react';\nimport { Title } from '@radix-ui/react-dialog';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof Title> & {\n visuallyHidden?: boolean;\n};\n\nexport const SheetTitle = ({ className, visuallyHidden = false, ...props }: Props) => (\n <Title className={cn({ 'tw-sr-only': visuallyHidden }, className)} {...props} />\n);\n","import type { ComponentProps } from 'react';\nimport { Close, Root, Trigger } from '@radix-ui/react-dialog';\n\nimport { SheetBody } from './SheetBody';\nimport { SheetContent } from './SheetContent';\nimport { SheetFooter } from './SheetFooter';\nimport { SheetHeader } from './SheetHeader';\nimport { SheetTitle } from './SheetTitle';\n\ntype Props = ComponentProps<typeof Root>;\n\nexport const Sheet = ({ ...props }: Props) => <Root {...props} />;\n\nSheet.Close = Close;\nSheet.Trigger = Trigger;\nSheet.Content = SheetContent;\nSheet.Title = SheetTitle;\n\nSheet.Header = SheetHeader;\nSheet.Footer = SheetFooter;\nSheet.Body = SheetBody;\n","import { useEffect, useLayoutEffect, useMemo, useReducer } from 'react';\n\ntype MountState = 'mounted' | 'unmountSuspended' | 'unmounted';\ntype MountEvent = 'MOUNT' | 'TRANSITION_OUT' | 'TRANSITION_END';\n\ntype UseTransitionPresenceOptions = {\n mounted: boolean;\n keepMounted?: boolean;\n};\n\nconst FALLBACK_TIMEOUT_MS = 500;\n\nconst reducer = (state: MountState, event: MountEvent): MountState => {\n switch (event) {\n case 'MOUNT':\n return 'mounted';\n case 'TRANSITION_OUT':\n return state === 'mounted' ? 'unmountSuspended' : state;\n case 'TRANSITION_END':\n return state === 'unmountSuspended' ? 'unmounted' : state;\n default:\n return state;\n }\n};\n\nexport const useTransitionPresence = ({\n mounted,\n keepMounted = false,\n}: UseTransitionPresenceOptions) => {\n const [state, send] = useReducer(reducer, mounted ? 'mounted' : 'unmounted');\n\n useLayoutEffect(() => {\n if (keepMounted) return;\n mounted ? send('MOUNT') : send('TRANSITION_OUT');\n }, [mounted, keepMounted]);\n\n // Fallback: complete unmount if onTransitionEnd never fires\n // (e.g. prefers-reduced-motion, interrupted or missing transitions)\n useEffect(() => {\n if (state !== 'unmountSuspended') return;\n\n const id = setTimeout(() => send('TRANSITION_END'), FALLBACK_TIMEOUT_MS);\n return () => clearTimeout(id);\n }, [state]);\n\n return useMemo(\n () => ({\n isMounted: keepMounted || state !== 'unmounted',\n completeUnmount: () => send('TRANSITION_END'),\n }),\n [state, keepMounted],\n );\n};\n","import { useCallback, useState } from 'react';\n\n// This hook is used to set an element reference and ensure that it only updates once, when element is first set.\nexport const useElement = () => {\n const [element, _setElement] = useState<HTMLElement | null>(null);\n\n const setElement = useCallback((node: HTMLElement | null) => {\n _setElement((prev) => {\n // Only update if not already set\n if (prev !== null) return prev;\n return node;\n });\n }, []);\n\n return [element, setElement] as const;\n};\n","import { useEffect, useState } from 'react';\n\nimport { useElement } from './useElement';\n\nconst calcPosition = ({\n scrollHeight,\n clientHeight,\n scrollTop,\n}: {\n scrollHeight: number;\n clientHeight: number;\n scrollTop: number;\n}) => {\n // If content doesn't overflow, no scrollbar\n if (scrollHeight <= clientHeight) return 'none';\n\n if (scrollTop === 0) return 'top';\n\n // At the bottom (with small tolerance for precision issues)\n if (scrollTop + clientHeight >= scrollHeight - 1) return 'bottom';\n\n return 'middle';\n};\n\nexport const useScrollbarPosition = () => {\n const [element, setElement] = useElement();\n const [scrollbarPosition, setPosition] = useState<ReturnType<typeof calcPosition>>('none');\n\n useEffect(() => {\n if (element === null) return;\n\n const updatePosition = () => {\n if (element === null) return;\n\n const position = calcPosition({\n scrollHeight: element.scrollHeight,\n clientHeight: element.clientHeight,\n scrollTop: element.scrollTop,\n });\n\n setPosition(position);\n };\n\n // Initial check.\n const rafId = requestAnimationFrame(updatePosition);\n\n // Listening for scroll events.\n element.addEventListener('scroll', updatePosition);\n\n // Listen for the resize event that might affect scrollbar visibility.\n const resizeObserver = new ResizeObserver(updatePosition);\n resizeObserver.observe(element);\n\n return () => {\n cancelAnimationFrame(rafId);\n element.removeEventListener('scroll', updatePosition);\n resizeObserver.disconnect();\n };\n }, [element]);\n\n return {\n setElement,\n isTop: scrollbarPosition === 'top',\n isBottom: scrollbarPosition === 'bottom',\n isMiddle: scrollbarPosition === 'middle',\n isNone: scrollbarPosition === 'none',\n };\n};\n","import type { ComponentProps, ElementRef, ReactNode, Ref } from 'react';\n\nimport { useScrollbarPosition } from '../../hooks/useScrollbarPosition';\nimport { cn, mergeRefs } from '../../utils';\nimport { ScrollArea } from '../ScrollArea';\n\ntype Props = {\n className?: string;\n children?: ReactNode;\n contentRef?: ComponentProps<'div'>['ref'];\n};\n\nexport const SidebarContent = ({\n ref,\n className,\n children,\n contentRef,\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => {\n const { setElement, isBottom, isTop, isMiddle } = useScrollbarPosition();\n const mergedRefs = mergeRefs(ref ?? null, (ref) => setElement(ref));\n\n return (\n <ScrollArea\n ref={mergedRefs}\n type=\"scroll\"\n className=\"tw-group/sidebar-content tw-flex-1\"\n data-slot=\"sidebar-content\"\n scrollBarClassName=\"tw-w-1.5\"\n viewPortClassName={cn(\n 'tw-overflow-x-hidden',\n 'tw-overscroll-contain',\n '[&>div]:!tw-flex', // overflow fix for scrollbar\n // Hide scroll-position-based borders (top/bottom) if SidebarHeader or SidebarFooter is omitted.\n 'group-first/sidebar-content:before:tw-hidden',\n 'group-last/sidebar-content:after:tw-hidden',\n '!tw-box-border',\n {\n 'before:tw-absolute before:tw-top-0 before:tw-left-0 before:tw-right-0 before:tw-h-px before:tw-bg-neutral-100 before:tw-z-10 before:tw-content-[\"\"]':\n isBottom || isMiddle,\n 'after:tw-absolute after:tw-bottom-0 after:tw-left-0 after:tw-right-0 after:tw-h-px after:tw-bg-neutral-100 after:tw-z-10 after:tw-content-[\"\"]':\n isTop || isMiddle,\n },\n )}\n >\n <div\n ref={contentRef}\n className={cn(\n 'tw-flex',\n 'tw-flex-1',\n 'tw-flex-col',\n 'tw-gap-1',\n 'tw-overflow-x-hidden',\n 'tw-p-2',\n className,\n )}\n >\n {children}\n </div>\n </ScrollArea>\n );\n};\n","import type { SidebarCollapsible, SidebarMode, SidebarState, SidebarVariant } from './types';\n\nexport const SidebarWidthInPx = {\n MIN_DEFAULT: 256,\n\n // 8 px / 36 px / 8 px = 52 px\n // left padding / icon width / right padding\n COLLAPSED_ICON: 52,\n\n // padding from every side for floating variant (see --sidebar-floating-padding)\n FLOATING_VARIANT_PADDING: 8,\n} as const;\n\nconst floatingSideCount: Record<SidebarVariant, number> = {\n 'sided-floating': 1,\n floating: 2,\n inset: 0,\n none: 0,\n};\n\ntype Input = {\n variant: SidebarVariant;\n width?: number;\n collapsible: SidebarCollapsible;\n mode: SidebarMode;\n state: SidebarState;\n};\n\ntype EffectiveWidths = {\n sidebar: number;\n gap: number;\n fill: number;\n};\n\nexport const calcEffectiveWidths = ({\n variant,\n width: customWidth,\n collapsible,\n state,\n mode,\n}: Input) => {\n if (variant === 'none') return { sidebar: 0, gap: 0, fill: 0 };\n\n const padding = floatingSideCount[variant] * SidebarWidthInPx.FLOATING_VARIANT_PADDING;\n const width = Math.max(customWidth ?? 0, SidebarWidthInPx.MIN_DEFAULT) + padding;\n const iconWidth = SidebarWidthInPx.COLLAPSED_ICON + padding;\n const isExpanded = state === 'expanded';\n\n // Only compensate for floating padding when this sidebar itself has padding,\n // so the opposite filled sidebar doesn't double-count the gap.\n const reduction = variant === 'inset' ? 0 : SidebarWidthInPx.FLOATING_VARIANT_PADDING;\n\n const iconWidths = ((): EffectiveWidths => {\n const sidebar = isExpanded ? width : iconWidth;\n const gap = mode === 'expand-on-hover' ? iconWidth : sidebar;\n // Use gap (not sidebar) so the opposite filled sidebar stays stable\n // during expand-on-hover — gap stays at iconWidth while sidebar grows\n const fill = gap - reduction;\n return { sidebar, gap, fill };\n })();\n\n const offCanvasWidths = ((): EffectiveWidths => {\n const sidebar = width; //We use CSS translate to hide elements because it allows for transitions without shrinking the width.\n const gap = isExpanded ? width : SidebarWidthInPx.FLOATING_VARIANT_PADDING; // The gap is invisible and needs to be shrunk to move the content to its place.\n const fill = gap - reduction;\n return { sidebar, gap, fill };\n })();\n\n return collapsible === 'icon' ? iconWidths : offCanvasWidths;\n};\n","import { createContext, use } from 'react';\n\nimport type { SidebarCollapsible, SidebarSide, SidebarVariant } from '../types';\nimport type { calcEffectiveWidths } from '../utils';\n\nimport type { useSidebarState } from './useSidebarState';\n\ntype SidebarWidths = ReturnType<typeof calcEffectiveWidths>;\ntype SidebarState = ReturnType<typeof useSidebarState>;\n\ntype SidebarSideValue = SidebarState & {\n isFill: boolean;\n toggleFill: () => void;\n widths: SidebarWidths;\n collapsible: SidebarCollapsible;\n variant: SidebarVariant;\n baseWidth: number | undefined;\n onWidthChange: ((width: number) => void) | undefined;\n setDragWidth: (width: number | null) => void;\n isDragging: boolean;\n setIsDragging: (dragging: boolean) => void;\n};\n\nexport type SidebarContextValue = {\n left: SidebarSideValue;\n right: SidebarSideValue;\n};\n\nexport const SidebarContext = createContext<SidebarContextValue | null>(null);\n\nexport const useSidebar = (side: SidebarSide = 'left'): SidebarSideValue => {\n const context = use(SidebarContext);\n if (context === null) throw new Error('useSidebar must be used within a SidebarProvider.');\n return context[side];\n};\n","import { useEffect, useRef, useState } from 'react';\n\n/**\n * CSS selectors matching portal-based overlay triggers in their open state.\n *\n * The sidebar's hover tracking ignores `mouseleave` while any of these selectors\n * match inside the sidebar DOM — preventing the sidebar from collapsing while the\n * user interacts with portal content rendered outside the sidebar tree.\n *\n * Update this list when changing or adding new components:\n */\nconst PORTAL_OPEN_SELECTORS = [\n '[aria-haspopup=\"menu\"][aria-expanded=true]', // DropdownMenu\n '[aria-haspopup=\"dialog\"][aria-expanded=true]', // Popover, Dialogs (Modal, Sheet)\n];\n\nconst PORTAL_OPEN_SELECTORS_STRING = PORTAL_OPEN_SELECTORS.join(',');\n\nexport const useHoverTracking = (sidebarElement: HTMLElement | null) => {\n const [isHovered, setIsHovered] = useState(false);\n const isLockedRef = useRef(false);\n\n useEffect(() => {\n if (!sidebarElement) return;\n\n const handleMouseEnter = () => setIsHovered(true);\n const handleMouseLeave = () => {\n if (isLockedRef.current) return;\n setIsHovered(false);\n };\n\n sidebarElement.addEventListener('mouseenter', handleMouseEnter);\n sidebarElement.addEventListener('mouseleave', handleMouseLeave);\n\n return () => {\n sidebarElement.removeEventListener('mouseenter', handleMouseEnter);\n sidebarElement.removeEventListener('mouseleave', handleMouseLeave);\n };\n }, [sidebarElement]);\n\n useEffect(() => {\n if (!sidebarElement) return;\n let animationFrameId: number;\n\n const observer = new MutationObserver(() => {\n const hasOpenPortal = sidebarElement.querySelector(PORTAL_OPEN_SELECTORS_STRING) !== null;\n isLockedRef.current = hasOpenPortal;\n\n if (hasOpenPortal) return;\n\n animationFrameId = requestAnimationFrame(() => {\n setIsHovered(sidebarElement.matches(':hover'));\n });\n });\n\n // Sync lock state immediately in case a portal trigger is already open on mount.\n isLockedRef.current = sidebarElement.querySelector(PORTAL_OPEN_SELECTORS_STRING) !== null;\n\n observer.observe(sidebarElement, {\n attributes: true,\n attributeFilter: ['aria-expanded'],\n subtree: true,\n });\n\n return () => {\n cancelAnimationFrame(animationFrameId);\n observer.disconnect();\n };\n }, [sidebarElement]);\n\n return isHovered;\n};\n","import { useCallback, useMemo, useState } from 'react';\n\nimport { useElement } from '../../../hooks/useElement';\nimport type { SidebarMode, SidebarState } from '../types';\n\nimport { useHoverTracking } from './useHoverTracking';\n\ntype Props = {\n defaultMode?: SidebarMode;\n mode?: SidebarMode;\n onModeChange?: (state: SidebarMode) => void;\n};\n\nexport const useSidebarState = ({ defaultMode, mode: modeProp, onModeChange }: Props) => {\n const [sidebarElement, setSidebarElement] = useElement();\n const isHovered = useHoverTracking(sidebarElement);\n const [_mode, _setMode] = useState(defaultMode ?? 'expanded');\n const mode = modeProp ?? _mode;\n\n const setMode = useCallback(\n (dispatch: Parameters<typeof _setMode>[0]) => {\n const newState = typeof dispatch === 'function' ? dispatch(mode) : dispatch;\n const set = onModeChange ?? _setMode;\n set(newState);\n },\n [onModeChange, mode],\n );\n\n const toggle = useCallback(() => {\n setMode((currState) => (currState === 'expanded' ? 'collapsed' : 'expanded'));\n }, [setMode]);\n\n const state: SidebarState = (() => {\n if (mode === 'expand-on-hover') return isHovered ? 'expanded' : 'collapsed';\n return mode;\n })();\n\n return useMemo(\n () => ({\n isHovered,\n toggle,\n setMode,\n mode,\n state,\n sidebarElement,\n setSidebarElement,\n }),\n [isHovered, toggle, setMode, mode, state, sidebarElement, setSidebarElement],\n );\n};\n","import { type ReactNode, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport type { SidebarCollapsible, SidebarMode, SidebarSide, SidebarVariant } from '../types';\nimport { calcEffectiveWidths } from '../utils';\n\nimport type { SidebarContextValue } from './context';\nimport { SidebarContext } from './context';\nimport { useSidebarState } from './useSidebarState';\n\nconst DEFAULT_SIDEBAR_VARIANT: SidebarVariant = 'none';\nconst DEFAULT_SIDEBAR_MODE: SidebarMode = 'expanded';\nconst DEFAULT_SIDEBAR_COLLAPSIBLE: SidebarCollapsible = 'off-canvas';\n\ntype Props = {\n children?: ReactNode;\n // left state\n defaultLeftMode?: SidebarMode;\n leftMode?: SidebarMode;\n onLeftModeChange?: (mode: SidebarMode) => void;\n\n // right state\n defaultRightMode?: SidebarMode;\n rightMode?: SidebarMode;\n onRightModeChange?: (mode: SidebarMode) => void;\n\n // left\n leftVariant?: SidebarVariant;\n leftWidth?: number;\n leftCollapsible?: SidebarCollapsible;\n\n // right\n rightVariant?: SidebarVariant;\n rightWidth?: number;\n rightCollapsible?: SidebarCollapsible;\n\n // width change callbacks\n onLeftWidthChange?: (width: number) => void;\n onRightWidthChange?: (width: number) => void;\n\n // fill\n defaultFilledSide?: SidebarSide | null;\n};\n\nexport const SidebarProvider = ({\n children,\n // left state\n defaultLeftMode = DEFAULT_SIDEBAR_MODE,\n leftMode,\n onLeftModeChange,\n\n // right state\n defaultRightMode = DEFAULT_SIDEBAR_MODE,\n rightMode,\n onRightModeChange,\n\n // left\n leftCollapsible = DEFAULT_SIDEBAR_COLLAPSIBLE,\n leftVariant = DEFAULT_SIDEBAR_VARIANT,\n leftWidth,\n\n // right\n rightCollapsible = DEFAULT_SIDEBAR_COLLAPSIBLE,\n rightVariant = DEFAULT_SIDEBAR_VARIANT,\n rightWidth,\n\n // width change callbacks\n onLeftWidthChange,\n onRightWidthChange,\n\n // fill\n defaultFilledSide = null,\n}: Props) => {\n const [filledSide, setFilledSide] = useState<SidebarSide | null>(defaultFilledSide);\n const [isLeftDragging, setIsLeftDragging] = useState(false);\n const [isRightDragging, setIsRightDragging] = useState(false);\n const [leftDragWidth, setLeftDragWidth] = useState<number | null>(null);\n const [rightDragWidth, setRightDragWidth] = useState<number | null>(null);\n\n useEffect(() => {\n if (leftDragWidth !== null && leftWidth === leftDragWidth) setLeftDragWidth(null);\n }, [leftWidth, leftDragWidth]);\n\n useEffect(() => {\n if (rightDragWidth !== null && rightWidth === rightDragWidth) setRightDragWidth(null);\n }, [rightWidth, rightDragWidth]);\n\n const leftState = useSidebarState({\n defaultMode: defaultLeftMode,\n mode: leftMode,\n onModeChange: onLeftModeChange,\n });\n\n const rightState = useSidebarState({\n defaultMode: defaultRightMode,\n mode: rightMode,\n onModeChange: onRightModeChange,\n });\n\n const toggleLeftFill = useCallback(\n () => setFilledSide((prev) => (prev === 'left' ? null : 'left')),\n [],\n );\n const toggleRightFill = useCallback(\n () => setFilledSide((prev) => (prev === 'right' ? null : 'right')),\n [],\n );\n\n const value = useMemo<SidebarContextValue>(\n () => ({\n left: {\n ...leftState,\n isFill: filledSide === 'left',\n toggleFill: toggleLeftFill,\n widths: calcEffectiveWidths({\n variant: leftVariant,\n width: leftDragWidth ?? leftWidth,\n collapsible: leftCollapsible,\n state: leftState.state,\n mode: leftState.mode,\n }),\n collapsible: leftCollapsible,\n variant: leftVariant,\n baseWidth: leftDragWidth ?? leftWidth,\n onWidthChange: onLeftWidthChange,\n setDragWidth: setLeftDragWidth,\n isDragging: isLeftDragging,\n setIsDragging: setIsLeftDragging,\n },\n right: {\n ...rightState,\n isFill: filledSide === 'right',\n toggleFill: toggleRightFill,\n widths: calcEffectiveWidths({\n variant: rightVariant,\n width: rightDragWidth ?? rightWidth,\n collapsible: rightCollapsible,\n state: rightState.state,\n mode: rightState.mode,\n }),\n collapsible: rightCollapsible,\n variant: rightVariant,\n baseWidth: rightDragWidth ?? rightWidth,\n onWidthChange: onRightWidthChange,\n setDragWidth: setRightDragWidth,\n isDragging: isRightDragging,\n setIsDragging: setIsRightDragging,\n },\n }),\n [\n leftState,\n filledSide,\n toggleLeftFill,\n leftVariant,\n leftWidth,\n leftDragWidth,\n leftCollapsible,\n onLeftWidthChange,\n isLeftDragging,\n rightState,\n toggleRightFill,\n rightVariant,\n rightWidth,\n rightDragWidth,\n rightCollapsible,\n onRightWidthChange,\n isRightDragging,\n ],\n );\n\n return <SidebarContext value={value}>{children}</SidebarContext>;\n};\n","import type { ComponentProps, ElementRef, MouseEventHandler, Ref } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { useSidebar } from './SidebarProvider';\nimport type { SidebarSide } from './types';\n\ntype Props = ComponentProps<typeof Slot> & {\n side?: SidebarSide;\n};\n\nexport const SidebarFillTrigger = ({\n ref,\n side = 'left',\n onClick,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => {\n const { toggleFill, isFill } = useSidebar(side);\n\n const handleOnClick: MouseEventHandler<HTMLElement> = (event) => {\n toggleFill();\n onClick?.(event);\n };\n\n return <Slot {...rest} ref={ref} onClick={handleOnClick} aria-selected={isFill} />;\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const SidebarFooter = ({ className, ...props }: Props) => (\n <div\n data-slot=\"sidebar-footer\"\n className={cn('tw-flex', 'tw-flex-col', 'tw-gap-2', 'tw-p-2', className)}\n {...props}\n />\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const SidebarGroup = ({ className, ...props }: Props) => (\n <div\n className={cn(\n 'tw-group/sidebar-group',\n 'tw-relative',\n 'tw-w-full',\n\n // positioning\n 'tw-flex',\n 'tw-flex-col',\n 'tw-min-w-0',\n 'tw-rounded-lg',\n className,\n )}\n {...props}\n />\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const SidebarGroupContent = ({ className, ...props }: Props) => (\n <div\n className={cn(\n // positioning\n 'tw-flex',\n 'tw-flex-col',\n 'tw-gap-2',\n\n 'tw-w-full',\n className,\n )}\n {...props}\n />\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../../utils';\nimport { Icon } from '../../Icon';\n\ntype Props = Omit<ComponentProps<'button'>, 'children'> & Pick<ComponentProps<typeof Icon>, 'icon'>;\n\nexport const SidebarGroupAction = ({\n ref,\n className,\n type = 'button',\n icon,\n ...props\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => (\n <button\n {...props}\n type={type}\n ref={ref}\n className={cn(\n 'group-data-[state=collapsed]/sidebar:tw-hidden',\n\n // positioning\n 'tw-absolute',\n 'tw-right-1.5',\n 'tw-top-2',\n 'tw-flex',\n 'tw-items-center',\n 'tw-justify-center',\n\n // sizing\n 'tw-size-5',\n\n // styles\n 'tw-text-neutral-800',\n 'tw-rounded-full',\n\n 'hover:tw-bg-neutral-100',\n\n 'focus-visible:tw-ring-4',\n 'focus-visible:tw-ring-secondary-200',\n 'focus-visible:tw-outline',\n 'focus-visible:tw-outline-1',\n 'focus-visible:tw-outline-secondary-500',\n className,\n )}\n >\n <Icon icon={icon} className=\"tw-size-3 tw-text-neutral-400 hover:tw-text-secondary-600\" />\n </button>\n);\n","import type { ComponentProps, Ref } from 'react';\n\nimport { cn } from '../../../utils';\nimport { Separator } from '../../Separator';\n\ntype Props = ComponentProps<'div'>;\n\nexport const SidebarGroupLabel = ({\n ref,\n className,\n children,\n ...props\n}: Props & { ref?: Ref<HTMLDivElement> }) => (\n <div\n ref={ref}\n className={cn(\n 'tw-relative',\n // positioning\n 'tw-flex',\n 'tw-flex-col',\n 'tw-shrink-0',\n\n // styling\n 'tw-h-8',\n 'tw-px-2',\n '-tw-mb-1',\n 'tw-rounded-lg',\n\n // text\n 'tw-uppercase',\n 'tw-font-sans',\n 'tw-text-xs',\n 'tw-tracking-[1px]',\n className,\n )}\n {...props}\n >\n <Separator\n orientation=\"horizontal\"\n size=\"3/4\"\n className={cn(\n 'tw-opacity-0',\n 'group-data-[state=collapsed]/sidebar:tw-opacity-100',\n\n // positioning\n 'tw-absolute',\n 'tw-w-full',\n 'tw-left-0',\n 'tw-top-1/2 -tw-translate-y-1/2',\n\n 'tw-transition-opacity',\n 'tw-duration-200',\n 'tw-ease-linear',\n )}\n />\n\n <span\n className={cn(\n 'tw-flex',\n 'group-data-[state=collapsed]/sidebar:tw-opacity-0',\n\n 'tw-items-center',\n 'tw-flex-1',\n 'tw-text-neutral-400',\n 'tw-whitespace-nowrap',\n\n // transition\n 'tw-transition-opacity',\n 'tw-duration-200',\n 'tw-ease-linear',\n )}\n >\n {children}\n </span>\n </div>\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const SidebarHeader = ({ className, ...props }: Props) => (\n <div\n data-slot=\"sidebar-header\"\n className={cn(\n 'tw-peer/sidebar-header',\n 'tw-flex',\n 'tw-flex-col',\n 'tw-gap-2',\n 'tw-p-2',\n className,\n )}\n {...props}\n />\n);\n","import { createContext, use } from 'react';\n\nimport type { SidebarMode, SidebarSide, SidebarState } from './types';\n\ntype SidebarInstanceContextValue = {\n state: SidebarState;\n mode: SidebarMode;\n side: SidebarSide;\n};\n\nexport const SidebarInstanceContext = createContext<SidebarInstanceContextValue | null>(null);\n\nexport const useSidebarInstance = () => {\n const context = use(SidebarInstanceContext);\n if (context === null)\n throw new Error('useSidebarInstance must be used within a SidebarInstanceContext.');\n return context;\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../../utils';\n\ntype Props = ComponentProps<'ul'>;\n\nexport const SidebarMenu = ({ className, ...props }: Props) => (\n <ul\n data-sidebar=\"menu\"\n className={cn(\n 'tw-flex',\n 'tw-w-full',\n 'tw-min-w-0',\n 'tw-flex-col',\n 'tw-gap-1',\n\n // transition\n 'tw-transition-[margin,opacity]',\n 'tw-duration-200',\n 'tw-ease-linear',\n\n // TODO: remove when boostrap is gone\n 'tw-pl-0',\n className,\n )}\n {...props}\n />\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../../utils';\nimport { Icon } from '../../Icon';\n\ntype Props = {\n icon: ComponentProps<typeof Icon>['icon'];\n className?: string;\n};\n\nexport const SidebarMenuIcon = ({\n ref,\n className,\n icon,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'svg'>> }) => (\n <Icon\n {...rest}\n ref={ref}\n icon={icon}\n className={cn(\n 'tw-size-4',\n 'tw-aspect-square',\n 'tw-text-sidebar-primary',\n 'tw-shrink-0',\n 'tw-p-0.5',\n className,\n )}\n />\n);\n","import type { ComponentProps, ReactNode, Ref } from 'react';\nimport { Root, Slottable } from '@radix-ui/react-slot';\n\nimport { cn } from '../../../utils';\nimport { Tooltip } from '../../Tooltip';\nimport { useSidebarInstance } from '../SidebarInstanceContext';\n\nimport { SidebarMenuIcon } from './SidebarMenuIcon';\n\ntype Props = ComponentProps<'button'> & {\n asChild?: boolean;\n tooltip?: ReactNode;\n} & Partial<Pick<ComponentProps<typeof SidebarMenuIcon>, 'icon'>>;\n\nexport const SidebarMenuButton = ({\n ref,\n 'aria-selected': selected = false,\n className,\n children,\n asChild = false,\n icon,\n tooltip,\n ...props\n}: Props & { ref?: Ref<HTMLButtonElement> }) => {\n const Component = asChild ? Root : 'button';\n const { state, mode, side } = useSidebarInstance();\n\n const button = (\n <Component\n {...props}\n ref={ref}\n data-slot=\"sidebar-menu-button\"\n type=\"button\"\n aria-selected={selected}\n className={cn(\n 'tw-peer/sidebar-menu-button',\n 'tw-group/sidebar-menu-button',\n\n // if <SidebarMenuAction /> visible, prevent the text from being under the action button.\n 'group-data-[state=expanded]/sidebar:group-has-[[data-slot=sidebar-menu-action][data-hover-only=false]]/sidebar-menu-item:tw-pr-8',\n 'group-data-[state=expanded]/sidebar:[&:has(+[data-slot=\"sidebar-menu-action\"])]:group-hover/sidebar-menu-item:tw-pr-8',\n 'group-data-[state=expanded]/sidebar:[&:has(+[data-slot=\"sidebar-menu-action\"])]:group-focus-within/sidebar-menu-item:tw-pr-8',\n 'group-data-[state=expanded]/sidebar:[&:has(+[data-slot=\"sidebar-menu-action\"][data-hover-only=true][data-state=open])]:tw-pr-8',\n\n 'tw-flex',\n 'tw-w-full',\n 'tw-gap-2',\n 'tw-items-center',\n 'tw-z-10',\n 'tw-font-normal',\n 'tw-text-sidebar-foreground',\n 'tw-p-2',\n 'tw-whitespace-nowrap',\n 'tw-overflow-hidden',\n 'tw-rounded-lg',\n 'tw-text-start',\n 'tw-no-underline',\n 'tw-select-none',\n\n // hover\n 'hover:not-disabled:tw-bg-sidebar-accent',\n 'hover:tw-text-sidebar-accent-foreground',\n 'focus:tw-text-sidebar-accent-foreground', // anchor override\n 'data-[slot=dropdown-menu-trigger]:data-[state=open]:tw-bg-sidebar-accent',\n\n // disabled\n 'disabled:tw-opacity-50',\n 'disabled:tw-cursor-not-allowed',\n\n // active\n 'aria-selected:tw-font-medium',\n 'aria-selected:tw-bg-sidebar-accent',\n 'aria-selected:tw-cursor-default',\n // active for links https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Attributes/aria-current\n 'aria-[current=page]:tw-bg-sidebar-accent',\n 'aria-[current=page]:tw-font-medium',\n 'aria-[current=page]:focus:tw-text-sidebar-accent-foreground',\n\n // focus-visible\n 'focus-visible:tw-outline-none',\n 'focus-visible:tw-z-10',\n 'focus-visible:tw-ring-2',\n 'focus-visible:tw-ring-sidebar-ring/50',\n 'focus-visible:tw-text-sidebar-foreground', // anchor override\n className,\n )}\n // Explicitly set the tabIndex to 0 to ensure the button is focusable; in Safari, anchors are not focusable by default.\n tabIndex={0}\n >\n {icon && <SidebarMenuIcon icon={icon} />}\n <Slottable>{children}</Slottable>\n </Component>\n );\n\n const shouldShowTooltip = state === 'collapsed' && mode !== 'expand-on-hover' && tooltip;\n\n if (shouldShowTooltip) {\n const tooltipPlacement = side === 'right' ? 'left' : 'right';\n\n return (\n <Tooltip tooltip={tooltip} placement={tooltipPlacement} triggerAsChild>\n {button}\n </Tooltip>\n );\n }\n\n return button;\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../../utils';\n\ntype Props = ComponentProps<'li'>;\n\nexport const SidebarMenuItem = ({ className, ...props }: Props) => (\n <li className={cn('tw-group/sidebar-menu-item', 'tw-relative', className)} {...props} />\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { cn } from '../../../utils';\n\ntype Props = ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n};\n\nexport const SidebarMenuAction = ({\n ref,\n className,\n asChild = false,\n showOnHover = false,\n children,\n ...props\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => {\n const Comp = asChild ? Slot : 'button';\n return (\n <Comp\n {...props}\n data-slot=\"sidebar-menu-action\"\n data-hover-only={showOnHover}\n ref={ref}\n className={cn(\n 'tw-absolute',\n 'tw-top-1/2',\n '-tw-translate-y-1/2',\n 'tw-right-3',\n 'tw-z-10',\n 'tw-p-0.5',\n\n // display\n 'tw-flex',\n 'tw-items-center',\n 'tw-justify-center',\n 'tw-aspect-square',\n\n // hiding\n 'data-[hover-only=true]:tw-opacity-0',\n 'group-data-[state=collapsed]/sidebar:tw-hidden',\n\n 'group-data-[state=expanded]/sidebar:group-hover/sidebar-menu-item:tw-opacity-100',\n 'group-data-[state=expanded]/sidebar:group-focus-within/sidebar-menu-item:tw-opacity-100', // keyboard navigation\n\n 'group-data-[state=expanded]/sidebar:data-[hover-only=true]:data-[state=open]:tw-opacity-100', // for triggers (dropdown, tooltip, popover)\n\n 'tw-size-4',\n 'tw-rounded',\n\n // icon styling\n '[&_svg]:tw-shrink-0',\n '[&_svg]:tw-size-3.5',\n '[&_svg]:tw-text-sidebar-accent-foreground',\n\n // focus visible\n 'focus-visible:tw-outline-none',\n 'focus-visible:tw-z-10',\n 'focus-visible:tw-ring-2',\n 'focus-visible:tw-ring-sidebar-ring/50',\n 'focus-visible:tw-text-sidebar-foreground',\n className,\n )}\n >\n {children}\n </Comp>\n );\n};\n","import { useRef } from 'react';\nimport type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn, mergeRefs } from '../../../utils';\nimport { Icon } from '../../Icon';\nimport { useSidebarInstance } from '../SidebarInstanceContext';\nimport { useSidebar } from '../SidebarProvider';\n\nconst wrapperClassnames = cn(\n 'tw-group/search-input',\n 'tw-relative',\n 'tw-flex',\n 'tw-items-center',\n 'tw-min-h-9',\n 'tw-rounded-lg',\n 'tw-border',\n 'tw-transition-all',\n\n // collapsed state - transparent border/bg, hover like search button\n 'group-data-[state=collapsed]/sidebar:tw-cursor-pointer',\n 'group-data-[state=collapsed]/sidebar:tw-border-transparent',\n 'group-data-[state=collapsed]/sidebar:hover:tw-bg-sidebar-accent',\n\n // expanded state - visible border/bg, padding for input, text cursor\n 'group-data-[state=expanded]/sidebar:tw-cursor-text',\n 'group-data-[state=expanded]/sidebar:tw-px-2',\n 'group-data-[state=expanded]/sidebar:tw-border-neutral-200',\n\n // focus styles (only relevant when expanded)\n 'focus-within:tw-ring-2',\n 'focus-within:tw-ring-sidebar-ring/50',\n 'focus-within:tw-text-sidebar-foreground',\n);\n\ntype Props = Omit<ComponentProps<'input'>, 'prefix'>;\n\nexport const SidebarSearchInput = ({\n ref: forwardedRef,\n className,\n ...inputProps\n}: Props & { ref?: Ref<ElementRef<'input'>> }) => {\n const { side } = useSidebarInstance();\n const { setMode } = useSidebar(side);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const handleFocus = () => {\n setMode('expanded');\n };\n\n return (\n <div className={cn(wrapperClassnames, className)}>\n <Icon\n icon=\"search\"\n fixedWidth\n className={cn(\n 'tw-pointer-events-none',\n 'tw-absolute',\n 'tw-left-2',\n 'tw-h-4',\n\n 'tw-text-sidebar-primary',\n 'group-data-[state=expanded]/sidebar:tw-text-neutral-400',\n )}\n />\n <input\n ref={mergeRefs(forwardedRef ?? null, inputRef)}\n {...inputProps}\n onFocus={(e) => {\n handleFocus();\n inputProps.onFocus?.(e);\n }}\n className={cn(\n 'tw-w-full',\n 'tw-bg-transparent',\n 'tw-text-sm',\n 'tw-font-sans',\n 'tw-outline-none',\n 'placeholder:tw-text-neutral-400',\n\n // collapsed state - visually hidden but still focusable for a11y\n 'group-data-[state=collapsed]/sidebar:tw-opacity-0',\n 'group-data-[state=collapsed]/sidebar:tw-cursor-pointer',\n\n // expanded state\n 'group-data-[state=expanded]/sidebar:tw-pl-6',\n )}\n />\n </div>\n );\n};\n","import { useCallback, useState } from 'react';\nimport type { ComponentProps, HTMLAttributes, ReactNode } from 'react';\n\nimport { cn } from '../../../utils';\nimport { HoverCard } from '../../HoverCard';\nimport { useSidebarInstance } from '../SidebarInstanceContext';\nimport { useSidebar } from '../SidebarProvider';\n\nimport { SidebarMenuIcon } from './SidebarMenuIcon';\n\nconst Title = ({ children }: { children: ReactNode }) => (\n <div className=\"tw-flex tw-select-none tw-gap-2 tw-text-sm tw-font-semibold\">{children}</div>\n);\n\nconst Content = ({ children, className }: { children: ReactNode; className?: string }) => (\n <div\n className={cn(\n 'tw-whitespace-pre-line',\n 'group-data-[fill=false]/sidebar:group-data-[state=collapsed]/sidebar:group-data-[collapsible=icon]/sidebar:tw-invisible',\n className,\n )}\n >\n {children}\n </div>\n);\n\ntype Props = HTMLAttributes<HTMLDivElement> & {\n icon: ComponentProps<typeof SidebarMenuIcon>['icon'];\n title: ReactNode;\n};\n\nexport const SidebarMenuCard = ({ children, className, icon, title, ...rest }: Props) => {\n const [isOpen, setIsOpen] = useState(false);\n const { side = 'left' } = useSidebarInstance();\n const { state, isFill } = useSidebar(side);\n const isExpanded = state === 'expanded' || isFill;\n\n const handleOnOpenChange: ComponentProps<typeof HoverCard>['onOpenChange'] = useCallback(\n (open: boolean) => {\n setIsOpen(isExpanded || document.hidden ? false : open);\n },\n [isExpanded],\n );\n\n return (\n <HoverCard open={isOpen} onOpenChange={handleOnOpenChange}>\n <HoverCard.Trigger asChild>\n <div\n {...rest}\n data-slot=\"sidebar-menu-card\"\n tabIndex={isExpanded ? -1 : 0}\n className={cn(\n 'tw-group/sidebar-menu-card',\n 'tw-peer/sidebar-menu-card',\n\n 'tw-overflow-hidden',\n\n 'tw-border',\n 'tw-border-sidebar-border',\n 'tw-rounded-2xl',\n\n // layout\n 'tw-grid',\n 'tw-grid-rows-[1fr]',\n 'tw-flex-1',\n 'tw-p-4',\n\n // icon collapsed\n 'group-data-[fill=false]/sidebar:group-data-[state=collapsed]/sidebar:group-data-[collapsible=icon]/sidebar:tw-p-2',\n 'group-data-[fill=false]/sidebar:group-data-[state=collapsed]/sidebar:group-data-[collapsible=icon]/sidebar:tw-border-transparent',\n 'group-data-[fill=false]/sidebar:group-data-[state=collapsed]/sidebar:group-data-[collapsible=icon]/sidebar:tw-grid-rows-[18px]',\n 'group-data-[fill=false]/sidebar:group-data-[state=collapsed]/sidebar:group-data-[collapsible=icon]/sidebar:tw-rounded-md',\n\n // focus-visible\n 'tw-outline-none',\n 'group-data-[fill=false]/sidebar:group-data-[state=collapsed]/sidebar:group-data-[collapsible=icon]/sidebar:hover:tw-bg-sidebar-accent',\n 'group-data-[fill=false]/sidebar:group-data-[state=collapsed]/sidebar:group-data-[collapsible=icon]/sidebar:focus-visible:tw-ring-2',\n 'group-data-[fill=false]/sidebar:group-data-[state=collapsed]/sidebar:group-data-[collapsible=icon]/sidebar:focus-visible:tw-ring-sidebar-ring/50',\n\n // transition\n 'tw-transition-[padding,border]',\n 'tw-duration-200',\n 'tw-ease-linear',\n )}\n >\n <div className=\"tw-flex tw-flex-col tw-gap-2\">\n <Title>\n <SidebarMenuIcon className=\"tw-p-px\" icon={icon} />\n {title}\n </Title>\n <Content className={className}>{children}</Content>\n </div>\n </div>\n </HoverCard.Trigger>\n\n <HoverCard.Content\n sideOffset={10}\n align=\"center\"\n side={side === 'left' ? 'right' : 'left'}\n className=\"tw-flex tw-flex-col tw-gap-2\"\n >\n <Title>{title}</Title>\n <Content className={className}>{children}</Content>\n </HoverCard.Content>\n </HoverCard>\n );\n};\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const SidebarMenuBadge = ({\n ref,\n className,\n ...props\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => {\n return (\n <div\n ref={ref}\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n // layout\n 'tw-flex',\n 'tw-items-center',\n 'tw-justify-center',\n 'tw-z-20',\n\n 'tw-absolute',\n\n // menu button position\n 'peer-[]/sidebar-menu-button:tw-right-2',\n // menu card position\n 'peer-[]/sidebar-menu-card:tw-right-4',\n 'peer-[]/sidebar-menu-card:tw-top-4',\n\n // icon collapsed position\n 'group-data-[state=collapsed]/sidebar:group-data-[collapsible=icon]/sidebar:tw-right-0',\n 'group-data-[state=collapsed]/sidebar:group-data-[collapsible=icon]/sidebar:-tw-top-1',\n\n 'tw-text-xs',\n 'tw-text-sidebar-primary-foreground',\n 'tw-bg-sidebar-primary',\n 'tw-px-1',\n 'tw-min-w-5',\n 'tw-h-5',\n 'tw-rounded-full',\n 'tw-pointer-events-none',\n 'tw-font-medium',\n 'tw-tabular-nums',\n 'tw-select-none',\n\n 'tw-transition-[top,right]',\n 'tw-delay-50',\n 'tw-ease-linear',\n className,\n )}\n {...props}\n />\n );\n};\n","import type { ComponentPropsWithoutRef, ElementRef, Ref } from 'react';\nimport { Content } from '@radix-ui/react-collapsible';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentPropsWithoutRef<typeof Content>;\n\nexport const CollapsibleContent = ({\n ref,\n className,\n children,\n ...props\n}: Props & { ref?: Ref<ElementRef<typeof Content>> }) => (\n <Content\n ref={ref}\n className={cn(\n 'data-[state=closed]:tw-animate-collapsible-up',\n 'data-[state=open]:tw-animate-collapsible-down',\n className,\n )}\n {...props}\n >\n {children}\n </Content>\n);\n","import type { ComponentProps } from 'react';\nimport { CollapsibleTrigger, Root } from '@radix-ui/react-collapsible';\n\nimport { CollapsibleContent } from './CollapsibleContent';\n\ntype Props = ComponentProps<typeof Root>;\n\nexport const Collapsible = (props: Props) => <Root {...props} />;\n\nCollapsible.Trigger = CollapsibleTrigger;\nCollapsible.Content = CollapsibleContent;\n","import { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { cn } from '../../../utils';\nimport { Collapsible } from '../../Collapsible';\nimport { DropdownMenu } from '../../DropdownMenu';\nimport { Icon } from '../../Icon';\nimport { Tooltip } from '../../Tooltip';\nimport { useSidebarInstance } from '../SidebarInstanceContext';\n\nimport { SidebarMenuButton } from './SidebarMenuButton';\nimport type { SidebarMenuIcon } from './SidebarMenuIcon';\n\ntype Props = {\n children: ReactNode;\n icon: ComponentProps<typeof SidebarMenuIcon>['icon'];\n isActive?: boolean;\n label: string;\n} & Pick<ComponentProps<typeof Collapsible>, 'defaultOpen' | 'open' | 'onOpenChange'>;\n\nexport const SidebarMenuSub = ({\n children,\n icon,\n isActive = false,\n label,\n\n // collapsible props\n defaultOpen = false,\n open: openProp,\n onOpenChange,\n}: Props) => {\n const { state, side, mode } = useSidebarInstance();\n const [open, setOpen] = useState<'open-tooltip' | 'open-dropdown-menu' | null>(null);\n const [innerCollapsibleOpen, setInnerCollapsibleOpen] = useState(defaultOpen);\n\n const isCollapsibleOpen = (() => {\n // In the collapsed sidebar state, it is always closed.\n if (state === 'collapsed') return false;\n return openProp ?? innerCollapsibleOpen;\n })();\n\n const isDropdownMenu = mode === 'expand-on-hover' || mode === 'collapsed';\n\n const handleCollapsibleOpenChange = (open: boolean) => {\n if (openProp === undefined) setInnerCollapsibleOpen(open);\n\n onOpenChange?.(open);\n };\n\n const handleDropdownOpenChange = (open: boolean) => {\n setOpen(open ? 'open-dropdown-menu' : null);\n };\n\n const handleTooltipOpenChange = (open: boolean) => {\n setOpen((currentOpen) => {\n // dropdown menu has higher priority than tooltip, if it's open, keep it open\n if (currentOpen === 'open-dropdown-menu') return 'open-dropdown-menu';\n // no need to show tooltip in expanded state, so return null\n if (state === 'expanded') return null;\n return open ? 'open-tooltip' : null;\n });\n };\n\n if (isDropdownMenu) {\n return (\n <DropdownMenu\n open={open === 'open-dropdown-menu'}\n onOpenChange={handleDropdownOpenChange}\n variant=\"argo\"\n >\n <Tooltip.Root open={open === 'open-tooltip'} onOpenChange={handleTooltipOpenChange}>\n <Tooltip.Trigger asChild>\n <DropdownMenu.Trigger asChild>\n <SidebarMenuButton\n icon={icon}\n data-active={isActive}\n className={cn(\n 'data-[active=true]:tw-bg-sidebar-accent',\n 'data-[active=true]:tw-font-medium',\n )}\n >\n {label}\n </SidebarMenuButton>\n </DropdownMenu.Trigger>\n </Tooltip.Trigger>\n <Tooltip.Content variant=\"action\" placement={side}>\n {label}\n </Tooltip.Content>\n </Tooltip.Root>\n\n <DropdownMenu.Content side={side} align=\"start\">\n <DropdownMenu.Label>{label}</DropdownMenu.Label>\n {children}\n </DropdownMenu.Content>\n </DropdownMenu>\n );\n }\n\n return (\n <Collapsible open={isCollapsibleOpen} onOpenChange={handleCollapsibleOpenChange}>\n <Collapsible.Trigger asChild>\n <SidebarMenuButton\n icon={icon}\n data-active={isActive && !isCollapsibleOpen}\n className={cn(\n 'tw-group',\n 'data-[active=true]:tw-bg-sidebar-accent',\n 'data-[active=true]:tw-font-medium',\n )}\n >\n {label}\n <Icon\n icon={['far', 'angle-down']}\n className=\"tw-ml-auto tw-transition-transform tw-duration-200 group-data-[state=open]:tw-rotate-180\"\n />\n </SidebarMenuButton>\n </Collapsible.Trigger>\n <Collapsible.Content>\n <ul\n data-sidebar=\"menu-sub\"\n className={cn(\n 'tw-ml-3.5',\n 'tw-flex',\n 'tw-min-w-0',\n 'tw-translate-x-px',\n 'tw-flex-col',\n 'tw-gap-1',\n 'tw-border-l',\n 'tw-border-sidebar-border',\n 'tw-py-0.5',\n 'tw-pl-2.5',\n 'tw-pr-0',\n\n // TODO: remove when bootstrap is gone\n 'tw-list-none',\n )}\n >\n {children}\n </ul>\n </Collapsible.Content>\n </Collapsible>\n );\n};\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Root, Slottable } from '@radix-ui/react-slot';\n\nimport { cn } from '../../../utils';\nimport { DropdownMenu } from '../../DropdownMenu';\nimport { useSidebarInstance } from '../SidebarInstanceContext';\n\ntype Props = ComponentProps<'button'> & {\n asChild?: boolean;\n};\n\nexport const SidebarMenuSubItem = ({\n ref,\n className,\n asChild = false,\n children,\n disabled,\n 'aria-current': ariaCurrent,\n ...props\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => {\n const { mode } = useSidebarInstance();\n const isDropdownMenu = mode === 'collapsed' || mode === 'expand-on-hover';\n\n if (isDropdownMenu) {\n return (\n <DropdownMenu.Item\n aria-current={ariaCurrent}\n asChild={asChild}\n disabled={disabled}\n className={cn(\n // use sidebar colors for active and focus states\n 'focus:!tw-bg-sidebar-accent',\n 'aria-[current=page]:tw-bg-sidebar-accent',\n 'aria-[current=page]:focus:tw-text-sidebar-accent-foreground',\n className,\n )}\n >\n {children}\n </DropdownMenu.Item>\n );\n }\n\n const Component = asChild ? Root : 'button';\n\n return (\n <li className=\"tw-group/sidebar-menu-sub-item tw-relative\">\n <Component\n {...props}\n ref={ref}\n aria-current={ariaCurrent}\n data-slot=\"sidebar-menu-sub-button\"\n type=\"button\"\n disabled={disabled}\n className={cn(\n // layout\n 'tw-flex',\n 'tw-items-center',\n 'tw-gap-2',\n\n // sizing\n 'tw-h-7',\n 'tw-w-full',\n 'tw-min-w-0',\n 'tw-px-2',\n\n //font\n 'tw-text-sidebar-foreground',\n 'tw-text-sm',\n 'tw-font-normal',\n 'tw-text-start',\n 'tw-whitespace-nowrap',\n\n 'tw-overflow-hidden',\n 'tw-rounded-md',\n 'tw-no-underline',\n\n 'tw-select-none',\n 'tw-outline-none',\n\n // hover\n 'hover:not-disabled:tw-bg-sidebar-accent',\n 'hover:tw-text-sidebar-accent-foreground',\n 'focus:tw-text-sidebar-accent-foreground',\n\n // active\n 'aria-selected:tw-font-medium',\n 'aria-selected:tw-bg-sidebar-accent',\n 'aria-[current=page]:tw-bg-sidebar-accent',\n 'aria-[current=page]:tw-font-medium',\n\n // disabled\n 'disabled:tw-opacity-50',\n 'disabled:tw-cursor-not-allowed',\n\n // focus-visible\n 'focus-visible:tw-outline-none',\n 'focus-visible:tw-ring-2',\n 'focus-visible:tw-ring-sidebar-ring/50',\n className,\n )}\n >\n <Slottable>{children}</Slottable>\n </Component>\n </li>\n );\n};\n","import { type MouseEventHandler, useCallback, useEffect, useRef } from 'react';\n\nimport { useSidebar } from './SidebarProvider';\nimport type { SidebarSide } from './types';\nimport { SidebarWidthInPx } from './utils';\n\nconst DEFAULT_MIN_WIDTH = 384;\nconst DEFAULT_MAX_WIDTH = 800;\n\ntype UseResizeSidebarInput = {\n side: SidebarSide;\n minWidth?: number;\n maxWidth?: number;\n};\n\nexport const useResizeSidebar = ({\n side,\n minWidth = DEFAULT_MIN_WIDTH,\n maxWidth = DEFAULT_MAX_WIDTH,\n}: UseResizeSidebarInput) => {\n const { onWidthChange, baseWidth, isFill, state, isDragging, setIsDragging, setDragWidth } =\n useSidebar(side);\n const isResizable = state === 'expanded' && !isFill && onWidthChange !== undefined;\n const startXRef = useRef(0);\n const startWidthRef = useRef(0);\n const cleanupRef = useRef<(() => void) | null>(null);\n\n useEffect(() => {\n return () => {\n cleanupRef.current?.();\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n };\n }, []);\n\n const clampToRange = useCallback(\n (width: number) => {\n const effectiveMax = Math.max(minWidth, Math.min(maxWidth, window.innerWidth * 0.5));\n return Math.round(Math.min(effectiveMax, Math.max(minWidth, width)));\n },\n [minWidth, maxWidth],\n );\n\n const handleMouseDown: MouseEventHandler = useCallback(\n (e) => {\n if (!isResizable || isDragging) return;\n\n cleanupRef.current?.();\n setIsDragging(true);\n\n startWidthRef.current = baseWidth ?? SidebarWidthInPx.MIN_DEFAULT;\n startXRef.current = e.clientX;\n\n const handleMouseMove = (moveEvent: MouseEvent) => {\n const delta =\n side === 'right'\n ? startXRef.current - moveEvent.clientX\n : moveEvent.clientX - startXRef.current;\n setDragWidth(clampToRange(startWidthRef.current + delta));\n };\n\n const handleMouseUp = (upEvent: MouseEvent) => {\n const delta =\n side === 'right'\n ? startXRef.current - upEvent.clientX\n : upEvent.clientX - startXRef.current;\n onWidthChange?.(clampToRange(startWidthRef.current + delta));\n setIsDragging(false);\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n cleanupRef.current = null;\n };\n\n document.body.style.cursor = 'col-resize';\n document.body.style.userSelect = 'none';\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n\n cleanupRef.current = () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n setIsDragging(false);\n setDragWidth(null);\n };\n },\n [\n isResizable,\n isDragging,\n side,\n onWidthChange,\n baseWidth,\n setIsDragging,\n setDragWidth,\n clampToRange,\n ],\n );\n\n const handleDoubleClick = useCallback(() => {\n onWidthChange?.(minWidth);\n }, [onWidthChange, minWidth]);\n\n return {\n handleProps: {\n onMouseDown: handleMouseDown,\n onDoubleClick: handleDoubleClick,\n },\n isDragging,\n isResizable,\n };\n};\n","import { cn } from '../../utils';\n\nimport type { SidebarSide } from './types';\nimport { useResizeSidebar } from './useResizeSidebar';\n\ntype Props = {\n side: SidebarSide;\n minWidth?: number;\n maxWidth?: number;\n};\n\nexport const SidebarResizeHandle = ({ side, minWidth, maxWidth }: Props) => {\n const { handleProps, isResizable } = useResizeSidebar({ side, minWidth, maxWidth });\n\n if (!isResizable) return null;\n\n return (\n <div\n {...handleProps}\n aria-hidden\n className={cn(\n 'tw-absolute tw-inset-y-0 tw-z-10 tw-w-3',\n side === 'right' ? 'tw-left-0' : 'tw-right-0',\n 'tw-cursor-col-resize',\n )}\n />\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\nimport { Separator } from '../Separator';\n\ntype Props = Omit<ComponentProps<typeof Separator>, 'orientation' | 'size'>;\n\nexport const SidebarSeparator = ({ className, ...props }: Props) => (\n <Separator\n {...props}\n orientation=\"horizontal\"\n size=\"full\"\n className={cn('before:tw-bg-sidebar-border tw-p-2', className)}\n />\n);\n","import type { ComponentProps, MouseEventHandler } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { cn } from '../../utils';\n\nimport { useSidebar } from './SidebarProvider';\nimport type { SidebarSide } from './types';\n\ntype Props = ComponentProps<typeof Slot> & {\n side?: SidebarSide;\n hideWhenCollapsed?: boolean;\n};\n\nexport const SidebarTrigger = ({\n side = 'left',\n onClick,\n hideWhenCollapsed = false,\n className,\n ...rest\n}: Props) => {\n const { toggle } = useSidebar(side);\n\n const handleOnClick: MouseEventHandler<HTMLElement> = (event) => {\n toggle();\n onClick?.(event);\n };\n\n return (\n <Slot\n {...rest}\n onClick={handleOnClick}\n className={cn(\n {\n 'group-data-[state=collapsed]/sidebar:tw-hidden': hideWhenCollapsed,\n },\n className,\n )}\n />\n );\n};\n","import { useMemo } from 'react';\nimport type { CSSProperties, ReactNode, TransitionEventHandler } from 'react';\n\nimport { cn } from '../../utils';\nimport { TooltipProvider } from '../Tooltip';\n\nimport { useTransitionPresence } from './SidebarProvider/useTransitionPresence';\nimport { SidebarContent } from './SidebarContent';\nimport { SidebarFillTrigger } from './SidebarFillTrigger';\nimport { SidebarFooter } from './SidebarFooter';\nimport {\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n} from './SidebarGroup';\nimport { SidebarHeader } from './SidebarHeader';\nimport { SidebarInstanceContext } from './SidebarInstanceContext';\nimport {\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuCard,\n SidebarMenuIcon,\n SidebarMenuItem,\n SidebarMenuSub,\n SidebarMenuSubItem,\n SidebarSearchInput,\n} from './SidebarMenu';\nimport { useSidebar } from './SidebarProvider';\nimport { SidebarResizeHandle } from './SidebarResizeHandle';\nimport { SidebarSeparator } from './SidebarSeparator';\nimport { SidebarTrigger } from './SidebarTrigger';\nimport type { SidebarSide } from './types';\nimport { SidebarWidthInPx } from './utils';\n\ntype Props = {\n children: ReactNode;\n className?: string;\n id?: string;\n side?: SidebarSide;\n style?: CSSProperties;\n container?: boolean;\n keepMounted?: boolean;\n resizable?: boolean;\n};\n\nexport const Sidebar = ({\n children,\n className,\n id,\n side = 'left',\n style,\n container = false,\n keepMounted,\n resizable = false,\n}: Props) => {\n const oppositeSide = side === 'left' ? 'right' : 'left';\n const { setSidebarElement, state, mode, isFill, widths, collapsible, variant, isDragging } =\n useSidebar(side);\n\n const { isMounted, completeUnmount } = useTransitionPresence({\n mounted: collapsible !== 'off-canvas' || mode !== 'collapsed',\n keepMounted,\n });\n const { widths: oppositeWidths } = useSidebar(oppositeSide);\n const sidebarInstanceContextValue = useMemo(() => ({ state, mode, side }), [state, mode, side]);\n\n const handleTransitionEnd: TransitionEventHandler<HTMLDivElement> = (event) => {\n // Ignore bubbled transitions from child elements\n if (event.target !== event.currentTarget) return;\n completeUnmount();\n };\n\n const styles = {\n '--sidebar-floating-padding': `${SidebarWidthInPx.FLOATING_VARIANT_PADDING}px`,\n '--sidebar-width': `${widths.sidebar}px`,\n '--sidebar-width-gap': `${widths.gap}px`,\n '--opposite-sidebar-width': `${oppositeWidths.fill}px`,\n } as CSSProperties;\n\n if (variant === 'none') return null;\n\n return (\n <TooltipProvider>\n <SidebarInstanceContext value={sidebarInstanceContextValue}>\n <div\n id={id}\n ref={setSidebarElement}\n data-state={state}\n data-side={side}\n data-mode={mode}\n data-collapsible={collapsible}\n data-variant={variant}\n data-fill={isFill}\n style={styles}\n className={cn(\n 'tailwindcss-preflight',\n 'tw-flex',\n 'tw-relative',\n // expand-on-hover needs a higher z-index so the expanding sidebar\n // overlaps the opposite filled sidebar instead of sliding behind it\n mode === 'expand-on-hover' ? 'tw-z-[51]' : 'tw-z-50',\n {\n // group/peer scoping is only for page-level sidebars — container\n // sidebars are nested inside other components and must not leak\n // group/peer selectors to avoid clashing with the outer sidebar\n 'tw-group/sidebar tw-peer/sidebar': !container,\n },\n\n // ── GAP DIV ──\n '[&>[data-slot=gap]]:tw-w-[--sidebar-width-gap]',\n '[&[data-side=right]>[data-slot=gap]]:tw-rotate-180',\n\n // ── SIDEBAR-WRAPPER DIV ──\n '[&>[data-slot=sidebar-wrapper]]:tw-w-[--sidebar-width]',\n '[&[data-side=left]>[data-slot=sidebar-wrapper]]:tw-left-0',\n '[&[data-side=right]>[data-slot=sidebar-wrapper]]:tw-right-0',\n // off canvas hiding\n '[&[data-state=collapsed][data-collapsible=off-canvas][data-side=left]>[data-slot=sidebar-wrapper]]:-tw-translate-x-full',\n '[&[data-state=collapsed][data-collapsible=off-canvas][data-side=right]>[data-slot=sidebar-wrapper]]:tw-translate-x-full',\n\n // floating variants styles\n '[&[data-variant=sided-floating]>[data-slot=sidebar-wrapper]]:tw-pt-[--sidebar-floating-padding]',\n '[&[data-variant=sided-floating][data-side=left]>[data-slot=sidebar-wrapper]]:tw-pr-[--sidebar-floating-padding]',\n '[&[data-variant=sided-floating][data-side=right]>[data-slot=sidebar-wrapper]]:tw-pl-[--sidebar-floating-padding]',\n\n '[&[data-variant=floating]>[data-slot=sidebar-wrapper]]:tw-p-[--sidebar-floating-padding]',\n\n // fill state\n '[&[data-fill=true]>[data-slot=sidebar-wrapper]]:!tw-w-[calc(100svw-var(--opposite-sidebar-width))]',\n '[&[data-fill=true][data-variant=floating]>[data-slot=sidebar-wrapper]]:!tw-p-[--sidebar-floating-padding]',\n '[&[data-fill=true][data-variant=sided-floating][data-side=left]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:!tw-rounded-tr-xl',\n '[&[data-fill=true][data-variant=sided-floating][data-side=right]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:!tw-rounded-tl-xl',\n\n // ── SIDEBAR DIV (INNERMOST) ──\n '[&[data-variant=inset][data-side=left]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:tw-border-r',\n '[&[data-variant=inset][data-side=right]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:tw-border-l',\n '[&[data-variant=floating]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:tw-shadow',\n '[&[data-variant=floating]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:tw-rounded-xl',\n '[&[data-variant=sided-floating]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:tw-shadow',\n '[&[data-variant=sided-floating][data-side=left]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:tw-rounded-tr-xl',\n '[&[data-variant=sided-floating][data-side=right]>[data-slot=sidebar-wrapper]>[data-slot=sidebar]]:tw-rounded-tl-xl',\n\n // transitions\n isDragging\n ? 'tw-transition-none'\n : 'tw-transition-[width,transform] tw-duration-200 tw-ease-linear',\n )}\n >\n <div\n data-slot=\"gap\"\n className={cn(\n 'tw-bg-transparent',\n isDragging ? '' : 'tw-transition-width tw-duration-200 tw-ease-linear',\n )}\n />\n\n <div\n data-slot=\"sidebar-wrapper\"\n onTransitionEnd={handleTransitionEnd}\n className={cn(\n 'tw-fixed',\n 'tw-inset-y-0',\n 'tw-border-neutral-100',\n\n // transition\n isDragging\n ? 'tw-transition-none'\n : 'tw-transition-[width,transform] tw-duration-200 tw-ease-linear',\n className,\n )}\n style={style}\n >\n {resizable && <SidebarResizeHandle side={side} />}\n <div\n data-slot=\"sidebar\"\n className={cn(\n 'tw-bg-sidebar',\n 'tw-overflow-hidden',\n 'tw-relative',\n 'tw-flex',\n 'tw-flex-col',\n 'tw-size-full',\n 'tw-border-sidebar-border',\n 'group-[]/sidebar:tw-pt-2',\n )}\n >\n {isMounted ? children : null}\n </div>\n </div>\n </div>\n </SidebarInstanceContext>\n </TooltipProvider>\n );\n};\n\n// main layout\nSidebar.Header = SidebarHeader;\nSidebar.Content = SidebarContent;\nSidebar.Footer = SidebarFooter;\nSidebar.Trigger = SidebarTrigger;\nSidebar.FillTrigger = SidebarFillTrigger;\nSidebar.Separator = SidebarSeparator;\nSidebar.MenuIcon = SidebarMenuIcon;\n\n// group features\nSidebar.Group = SidebarGroup;\nSidebar.GroupLabel = SidebarGroupLabel;\nSidebar.GroupContent = SidebarGroupContent;\nSidebar.GroupAction = SidebarGroupAction;\n\n// menu features\nSidebar.Menu = SidebarMenu;\nSidebar.MenuItem = SidebarMenuItem;\nSidebar.MenuButton = SidebarMenuButton;\nSidebar.MenuAction = SidebarMenuAction;\nSidebar.SearchInput = SidebarSearchInput;\nSidebar.MenuCard = SidebarMenuCard;\nSidebar.MenuBadge = SidebarMenuBadge;\n\n// sub-menu features\nSidebar.SubMenu = SidebarMenuSub;\nSidebar.SubItem = SidebarMenuSubItem;\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const CommandContent = ({ className, ...rest }: Props) => (\n <div\n {...rest}\n className={cn(\n 'tw-flex',\n 'tw-flex-col',\n 'tw-p-2',\n 'group-data-[variant=argo]/command:tw-p-4',\n 'tw-gap-2',\n className,\n )}\n />\n);\n","import type { ComponentProps } from 'react';\nimport { Command as CommandPrimitive } from 'cmdk';\n\ntype Props = ComponentProps<typeof CommandPrimitive.Empty>;\n\nexport const CommandEmpty = ({ ...props }: Props) => <CommandPrimitive.Empty {...props} />;\n","import type { ComponentProps } from 'react';\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof CommandPrimitive.Group>;\n\nexport const CommandGroup = ({ className, ...props }: Props) => (\n <CommandPrimitive.Group\n className={cn(\n '[&_[cmdk-group-heading]]:tw-font-semibold',\n '[&_[cmdk-group-heading]]:tw-font-sans',\n '[&_[cmdk-group-heading]]:tw-px-4',\n '[&_[cmdk-group-heading]]:tw-py-0.5',\n '[&_[cmdk-group-heading]]:tw-uppercase',\n '[&_[cmdk-group-heading]]:tw-text-[11px]',\n '[&_[cmdk-group-heading]]:tw-text-neutral-400',\n '[&_[cmdk-group-heading]]:tw-tracking-[1px]',\n '[&_[cmdk-group-heading]]:tw-border-b',\n '[&_[cmdk-group-heading]]:tw-border-neutral-150',\n '[&_[cmdk-group-heading]]:tw-my-2',\n className,\n )}\n {...props}\n />\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { CommandInput as CmdInput } from 'cmdk';\n\nimport { cn } from '../../utils';\nimport { TextInput } from '../Input';\n\ntype Props = ComponentProps<typeof TextInput>;\n\nexport const CommandInput = ({\n ref,\n className,\n ...props\n}: Props & { ref?: Ref<ElementRef<'input'>> }) => (\n <CmdInput ref={ref} asChild>\n <TextInput\n {...props}\n className={cn(\n 'group-data-[variant=argo]/command:!tw-bg-transparent',\n 'group-data-[variant=argo]/command:!tw-border-transparent',\n 'group-data-[variant=argo]/command:!tw-rounded-none',\n 'group-data-[variant=argo]/command:tw-max-h-12',\n 'group-data-[variant=argo]/command:tw-h-12',\n className,\n )}\n />\n </CmdInput>\n);\n","import { cn } from '../../../utils';\nimport { Icon } from '../../Icon';\n\ntype Props = {\n variant?: 'checkbox' | 'radio' | 'argo' | 'default';\n};\n\nexport const CheckIndicator = ({ variant = 'default' }: Props) => {\n if (variant === 'default') return null;\n\n if (variant === 'argo') {\n return (\n <Icon\n icon=\"check\"\n className={cn(\n // visibility\n 'tw-hidden',\n 'group-data-[checked=true]/command-item:tw-block',\n\n // positioning\n 'tw-order-last',\n 'tw-ml-auto',\n\n // styling\n 'tw-text-primary',\n 'tw-size-4',\n 'tw-shrink-0',\n )}\n />\n );\n }\n\n return (\n <span\n data-variant={variant}\n className={cn(\n 'tw-group/check-indicator',\n // positioning\n 'tw-pointer-events-none',\n\n // sizing\n 'tw-size-4',\n 'tw-flex',\n 'tw-items-center',\n 'tw-justify-center',\n\n // border\n 'tw-border',\n 'tw-border-solid',\n 'tw-rounded',\n 'tw-border-neutral-200',\n\n 'data-[variant=radio]:tw-rounded-full',\n\n 'data-[variant=checkbox]:tw-rounded',\n 'data-[variant=checkbox]:group-data-[checked=true]/command-item:tw-border-secondary-500',\n 'data-[variant=checkbox]:group-data-[checked=true]/command-item:tw-bg-secondary-500',\n 'tw-shrink-0',\n )}\n >\n <Icon\n className={cn(\n 'tw-hidden',\n 'group-data-[checked=true]/command-item:tw-block',\n\n 'group-data-[variant=checkbox]/check-indicator:tw-text-white',\n 'group-data-[variant=radio]/check-indicator:tw-text-secondary-500',\n 'group-data-[variant=radio]/check-indicator:tw-size-3',\n )}\n icon={variant === 'checkbox' ? 'check' : 'circle'}\n />\n </span>\n );\n};\n","import type { ComponentProps, ReactNode } from 'react';\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '../../../utils';\nimport { Icon } from '../../Icon';\n\nimport { CheckIndicator } from './CheckIndicator';\n\ntype Props = ComponentProps<typeof CommandPrimitive.Item> & {\n icon?: ComponentProps<typeof Icon>['icon'];\n checked?: boolean;\n variant?: ComponentProps<typeof CheckIndicator>['variant'];\n actions?: ReactNode;\n};\n\nexport const CommandItem = ({\n className,\n icon,\n children,\n checked = false,\n variant = 'default',\n actions,\n ...props\n}: Props) => (\n <div className=\"tw-group tw-flex tw-items-center tw-justify-center\">\n <CommandPrimitive.Item\n {...props}\n data-checked={checked}\n data-variant={variant}\n className={cn(\n 'tw-group/command-item',\n 'tw-peer/command-item',\n\n // positioning\n 'tw-relative',\n 'tw-flex',\n 'tw-items-center',\n 'tw-gap-2',\n 'tw-flex-1',\n 'tw-p-2',\n\n // typography\n 'tw-font-sans',\n 'tw-text-sm',\n 'tw-leading-6',\n 'tw-cursor-pointer',\n 'tw-transition-colors',\n 'tw-select-none',\n 'tw-outline-none',\n\n 'group-data-[variant=argo]/command:tw-rounded-md',\n 'group-data-[variant=argo]/command:data-[selected=true]:tw-bg-accent',\n 'group-data-[variant=argo]/command:data-[checked=true]:tw-bg-accent',\n\n 'group-data-[variant=default]/command:tw-rounded',\n 'group-data-[variant=default]/command:data-[selected=true]:tw-bg-neutral-100',\n 'group-data-[variant=default]/command:data-[checked=true]:tw-bg-neutral-100',\n\n // disabled\n 'aria-disabled:tw-opacity-50',\n\n 'aria-disabled:tw-cursor-not-allowed',\n 'aria-disabled:hover:tw-bg-transparent',\n\n // reset styles for checked and disabled\n 'data-[checked=true]:aria-disabled:tw-opacity-100',\n 'data-[checked=true]:aria-disabled:tw-cursor-default',\n className,\n )}\n >\n <CheckIndicator variant={variant} />\n {icon && <Icon icon={icon} className=\"tw-size-4 tw-shrink-0 tw-text-neutral-400\" />}\n {children}\n </CommandPrimitive.Item>\n\n {actions && (\n <span\n data-slot=\"command-item-actions\"\n className={cn(\n 'tw-hidden',\n 'tw-mx-2',\n 'group-hover:tw-flex',\n 'peer-hover/command-item:tw-flex',\n 'peer-data-[selected=true]/command-item:tw-flex',\n )}\n >\n {actions}\n </span>\n )}\n </div>\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '../../utils';\nimport { ScrollArea } from '../ScrollArea';\n\ntype Props = ComponentProps<typeof CommandPrimitive.List> &\n Pick<ComponentProps<typeof ScrollArea>, 'viewPortClassName'>;\n\nexport const CommandList = ({\n ref,\n className,\n children,\n viewPortClassName,\n ...props\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => (\n <ScrollArea\n ref={ref}\n className={cn(\n 'group-data-[variant=argo]/command:tw-px-4',\n 'group-data-[variant=argo]/command:tw-pb-4',\n className,\n )}\n viewPortClassName={cn(\n '[&_[cmdk-list-sizer]]:tw-flex',\n '[&_[cmdk-list-sizer]]:tw-flex-col',\n viewPortClassName,\n )}\n >\n <CommandPrimitive.List {...props}>{children}</CommandPrimitive.List>\n </ScrollArea>\n);\n","import type { ComponentProps } from 'react';\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof CommandPrimitive.Separator>;\n\nexport const CommandSeparator = ({ className, ...props }: Props) => (\n <CommandPrimitive.Separator\n className={cn('tw-h-px', 'tw-bg-border', 'tw-my-2', className)}\n {...props}\n />\n);\n","import type { ComponentProps } from 'react';\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '../../utils';\n\nimport { CommandContent } from './CommandContent';\nimport { CommandEmpty } from './CommandEmpty';\nimport { CommandGroup } from './CommandGroup';\nimport { CommandInput } from './CommandInput';\nimport { CommandItem } from './CommandItem';\nimport { CommandList } from './CommandList';\nimport { CommandSeparator } from './CommandSeparator';\n\ntype Variant = 'default' | 'argo';\n\ntype Props = ComponentProps<typeof CommandPrimitive> & {\n variant?: Variant;\n};\n\nexport const Command = ({ className, variant = 'default', ...rest }: Props) => (\n <CommandPrimitive\n data-variant={variant}\n className={cn('tw-group/command', 'tailwindcss-preflight', className)}\n {...rest}\n />\n);\n\nCommand.Content = CommandContent;\n\nCommand.Separator = CommandSeparator;\nCommand.List = CommandList;\nCommand.Group = CommandGroup;\nCommand.Empty = CommandEmpty;\nCommand.Input = CommandInput;\n\n// items\nCommand.Item = CommandItem;\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nconst addonVariants = cva(\n [\n 'tw-flex',\n 'tw-items-center',\n 'tw-shrink-0',\n 'tw-bg-inherit',\n 'tw-self-stretch',\n 'tw-px-1',\n 'has-[button]:tw-px-0',\n '[&_svg]:tw-size-3',\n ],\n {\n defaultVariants: {\n align: 'inline-end',\n variant: 'inline',\n },\n variants: {\n align: {\n 'inline-start': ['tw-order-first'],\n 'inline-end': ['tw-order-last'],\n },\n variant: {\n inline: [],\n floating: [\n 'tw-hidden',\n 'group-hover/badge:tw-flex',\n\n 'tw-absolute',\n 'tw-top-0',\n 'tw-bottom-0',\n 'focus-within:tw-flex',\n ],\n },\n },\n compoundVariants: [\n { variant: 'floating', align: 'inline-end', className: ['tw-right-0'] },\n { variant: 'floating', align: 'inline-start', className: ['tw-left-0'] },\n ],\n },\n);\n\ntype Props = ComponentProps<'div'> & VariantProps<typeof addonVariants>;\n\nexport const BadgeAddon = ({\n ref,\n align = 'inline-end',\n variant = 'inline',\n className,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => (\n <div\n {...rest}\n ref={ref}\n data-align={align}\n data-variant={variant}\n className={cn(addonVariants({ align, variant, className }))}\n />\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\n\ntype Props = ComponentProps<'button'> & {\n icon: ComponentProps<typeof Icon>['icon'];\n};\n\nexport const BadgeButton = ({\n ref,\n className,\n icon,\n type = 'button',\n ...rest\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => (\n <button\n {...rest}\n ref={ref}\n type={type}\n className={cn(\n 'tailwindcss-preflight',\n\n 'tw-inline-flex',\n 'tw-items-center',\n 'tw-justify-center',\n 'tw-cursor-pointer',\n\n 'tw-bg-inherit',\n 'tw-text-inherit',\n\n 'hover:tw-brightness-95',\n 'tw-px-1',\n className,\n )}\n >\n <Icon icon={icon} />\n </button>\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'span'> & {\n asChild?: boolean;\n};\n\nexport const BadgeLabel = ({\n ref,\n className,\n asChild = false,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'span'>> }) => {\n const Comp = asChild ? Slot : 'span';\n return (\n <Comp\n {...rest}\n ref={ref}\n data-slot=\"badge-label\"\n className={cn(\n 'tw-max-w-56',\n 'tw-truncate',\n 'tw-px-2',\n 'tw-py-0.5',\n\n // Drop side padding only when an *inline* addon is present —\n // floating addons overlay the label without taking layout space,\n // so the label still needs full padding behind them.\n 'group-has-[[data-align=inline-start][data-variant=inline]:not(:empty)]/badge:tw-pl-0',\n 'group-has-[[data-align=inline-end][data-variant=inline]:not(:empty)]/badge:tw-pr-0',\n className,\n )}\n />\n );\n};\n","import { cva } from 'class-variance-authority';\n\nconst badgeColors = {\n gray: 'tw-bg-neutral-400 tw-text-white tw-decoration-neutral-400',\n 'gray-darker': 'tw-bg-neutral-500 tw-text-white tw-decoration-neutral-500',\n 'gray-inverse': 'tw-bg-neutral-100 tw-text-neutral-400 tw-decoration-neutral-100',\n green: 'tw-bg-primary-500 tw-text-white tw-decoration-primary-500',\n 'green-darker': 'tw-bg-primary-600 tw-text-white tw-decoration-primary-600',\n 'green-inverse': 'tw-bg-primary-100 tw-text-primary-900 tw-decoration-primary-100',\n blue: 'tw-bg-secondary-500 tw-text-white tw-decoration-secondary-500',\n 'blue-inverse': 'tw-bg-secondary-100 tw-text-secondary-600 tw-decoration-secondary-100',\n red: 'tw-bg-error-500 tw-text-white tw-decoration-error-500',\n orange: 'tw-bg-warning-500 tw-text-white tw-decoration-warning-500',\n 'orange-inverse': 'tw-bg-warning-100 tw-text-warning-500 tw-decoration-warning-100',\n teal: 'tw-bg-teal-500 tw-text-white tw-decoration-teal-500',\n 'teal-inverse': 'tw-bg-teal-100 tw-text-teal-800 tw-decoration-teal-100',\n purple: 'tw-bg-purple-500 tw-text-white tw-decoration-purple-500',\n 'purple-inverse': 'tw-bg-purple-100 tw-text-purple-800 tw-decoration-purple-100',\n cyan: 'tw-bg-cyan-500 tw-text-white tw-decoration-cyan-500',\n 'cyan-inverse': 'tw-bg-cyan-100 tw-text-cyan-800 tw-decoration-cyan-100',\n 'sidebar-primary': 'tw-bg-sidebar-primary tw-text-white tw-decoration-sidebar-primary',\n white: 'tw-bg-white/90 tw-text-neutral-600 tw-decoration-white/90',\n} as const;\n\nexport const badgeRootVariants = cva(\n [\n 'tailwindcss-preflight',\n 'tw-group/badge',\n\n // display\n 'tw-relative',\n 'tw-inline-flex',\n 'tw-justify-center',\n 'tw-items-center',\n 'tw-min-h-5',\n 'tw-h-fit',\n 'tw-shrink-0',\n 'tw-overflow-hidden',\n\n // text\n 'tw-whitespace-pre-wrap',\n 'tw-break-normal',\n 'tw-text-xs',\n 'tw-font-medium',\n 'tw-tracking-[1px]',\n 'tw-text-center',\n 'tw-underline',\n\n // content\n 'tw-border-none',\n '[&>svg]:tw-self-center',\n '[button&]:tw-cursor-pointer',\n\n // focus\n 'focus-visible:tw-outline-none',\n 'focus-visible:tw-ring-2',\n 'focus-visible:tw-ring-inset',\n 'focus-visible:tw-ring-secondary-500',\n ],\n {\n defaultVariants: {\n color: 'gray',\n variant: 'default',\n },\n variants: {\n variant: {\n default: ['tw-rounded tw-uppercase'],\n tag: ['tw-rounded tw-normal-case'],\n pill: ['tw-min-w-5 tw-rounded-full tw-normal-case tw-tracking-normal'],\n },\n color: badgeColors,\n },\n },\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nimport { badgeRootVariants } from './styles';\n\ntype Props = ComponentProps<'div'> & VariantProps<typeof badgeRootVariants>;\n\nexport const BadgeRoot = ({\n ref,\n variant,\n color,\n className,\n children,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => (\n <div {...rest} ref={ref} className={cn(badgeRootVariants({ variant, color, className }))}>\n {children}\n </div>\n);\n","import type { ComponentProps, ElementRef, ReactNode, Ref } from 'react';\n\nimport { BadgeAddon } from './BadgeAddon';\nimport { BadgeButton } from './BadgeButton';\nimport { BadgeLabel } from './BadgeLabel';\nimport { BadgeRoot } from './BadgeRoot';\n\ntype AddonVariant = ComponentProps<typeof BadgeAddon>['variant'];\ntype BadgeRootProps = ComponentProps<typeof BadgeRoot>;\ntype BadgeLabelProps = ComponentProps<typeof BadgeLabel>;\n\ntype Props = Pick<BadgeRootProps, 'variant' | 'color'> &\n Omit<BadgeLabelProps, 'prefix'> & {\n prefix?: ReactNode;\n prefixVariant?: AddonVariant;\n suffix?: ReactNode;\n suffixVariant?: AddonVariant;\n labelClassName?: string;\n };\n\nconst BadgeInner = ({\n ref,\n // root props\n variant,\n color,\n // custom props\n prefix,\n prefixVariant = 'inline',\n suffix,\n suffixVariant = 'inline',\n className,\n labelClassName,\n ...labelProps\n}: Props & { ref?: Ref<ElementRef<'span'>> }) => (\n <BadgeRoot className={className} variant={variant} color={color}>\n {prefix && (\n <BadgeAddon align=\"inline-start\" variant={prefixVariant}>\n {prefix}\n </BadgeAddon>\n )}\n <BadgeLabel {...labelProps} ref={ref} className={labelClassName} />\n {suffix && (\n <BadgeAddon align=\"inline-end\" variant={suffixVariant}>\n {suffix}\n </BadgeAddon>\n )}\n </BadgeRoot>\n);\n\nexport const Badge = Object.assign(BadgeInner, {\n Root: BadgeRoot,\n Button: BadgeButton,\n Label: BadgeLabel,\n Addon: BadgeAddon,\n});\n","import type { CreatableItem, Group, InternalItems, LabeledItem, SelectAllItem } from './types';\n\nconst isPlainObject = (item: unknown): item is Record<string, unknown> =>\n item !== null && typeof item === 'object';\n\nconst isNumber = (item: unknown): item is number => typeof item === 'number';\nconst isString = (item: unknown): item is string => typeof item === 'string';\n\nexport const isLabeledItem = (item: unknown): item is LabeledItem =>\n isPlainObject(item) && Reflect.has(item, 'label') && Reflect.has(item, 'value');\n\nconst isInternalItem = (item: unknown): item is InternalItems =>\n isLabeledItem(item) && '__marker' in item;\n\nexport const isSelectAllItem = (item: unknown): item is SelectAllItem =>\n isInternalItem(item) && item.__marker === 'selectAll';\n\nexport const isCreatableItem = (item: unknown): item is CreatableItem => {\n return isInternalItem(item) && item.__marker === 'creatable';\n};\n\nexport const isGroupItem = <Item>(itemOrGroup: Item | Group<Item>): itemOrGroup is Group<Item> =>\n itemOrGroup !== null && typeof itemOrGroup === 'object' && Reflect.has(itemOrGroup, 'items');\n\nexport const isGroupItems = <Item, GroupShape extends Group<Item> = Group<Item>>(\n items: readonly (Item | GroupShape)[],\n): items is GroupShape[] => {\n if (!Array.isArray(items)) return false;\n if (items.length === 0) return false; // Base UI treats an empty items array as non-grouped, so we must too for consistency\n return isGroupItem(items[0]); // Base UI only checks the first item to determine if it's a group or not, so we do the same for consistency\n};\n\nexport const defaultItemToLabel = <Item>(item: Item) => {\n if (isNumber(item) || isString(item)) return item;\n if (!isLabeledItem(item))\n throw new Error(\n 'Combobox: Item does not have a `label` field. Pass `itemToLabel` for custom item shapes.',\n );\n\n return item.label;\n};\n\n/** Display string for an item — mirrors base-ui's own default logic. */\nexport const toLabel = (item: unknown): string => {\n if (isString(item)) return item;\n if (isLabeledItem(item)) {\n if (item.label) return item.label;\n if (item.value) return item.value;\n }\n return String(item);\n};\n\n/** Equality key for an item — prefers .value for stable identity. */\nexport const toValueKey = (item: unknown): string => {\n if (isString(item)) return item;\n if (isLabeledItem(item)) {\n if (item.value) return item.value;\n if (item.label) return item.label;\n }\n return String(item);\n};\n\nexport const defaultItemToIcon = <Item>(item: Item) =>\n isLabeledItem(item) ? item.icon : undefined;\n\nexport const defaultItemToDisabled = <Item>(item: Item) =>\n isLabeledItem(item) ? (item.disabled ?? false) : false;\n\nexport const defaultGroupToLabel = () => undefined;\n\n// Internal markers ------------------------------------------------------------\n// Both `selectAll` and `creatable` are LabeledItem-shaped sentinels that we\n// inject into the items list passed to Base UI. They carry a `__marker`\n// discriminator so consumer code (and user-supplied callbacks) can't collide\n// with them by accident.\n\nexport const selectAllItem: SelectAllItem = {\n __marker: 'selectAll',\n value: '__select_all__',\n label: 'Select All',\n};\n\nexport const createCreatableItem = (query: string): CreatableItem => ({\n __marker: 'creatable',\n value: query,\n label: query,\n});\n\nexport const defaultToCreateValue = <Value>(\n query: string,\n value: Value | undefined,\n queryToCreateValue?: (query: string) => Value,\n): Value => {\n if (queryToCreateValue) return queryToCreateValue(query);\n if (value === undefined) return query as Value;\n if (isString(value)) return query as Value;\n if (isLabeledItem(value)) return { value: query, label: query } as Value;\n throw new Error(\n 'Combobox: Cannot infer item shape for `allowCreate`. Pass `queryToCreateValue` for custom item shapes.',\n );\n};\n\nexport const defaultQueryToCreateLabel = (query: string) => `Create \"${query}\"`;\n","import type { ComponentProps, ReactNode } from 'react';\nimport { Combobox as BaseCombobox } from '@base-ui/react/combobox';\n\nimport { Badge } from '../Badge';\n\nimport { defaultItemToLabel } from './utils';\n\ntype BadgeColor = ComponentProps<typeof Badge>['color'];\ntype BadgeVariant = ComponentProps<typeof Badge>['variant'];\n\ntype Props<Value> = {\n maxVisible?: number;\n itemToChipLabel?: (item: Value) => ReactNode;\n itemToChipColor?: (item: Value) => BadgeColor;\n variant?: BadgeVariant;\n};\n\nexport const ComboboxChips = <Value,>({\n maxVisible = 3,\n itemToChipLabel = defaultItemToLabel,\n itemToChipColor,\n variant = 'pill',\n}: Props<Value>) => (\n <BaseCombobox.Value>\n {(values: Value[]) => {\n if (!values.length) return null;\n\n const visible = values.slice(0, maxVisible);\n const overflow = values.slice(maxVisible);\n\n return (\n <>\n {visible.map((value: Value, index) => (\n <BaseCombobox.Chip\n // oxlint-disable-next-line react/no-array-index-key\n key={index}\n render={\n <Badge.Root\n color={itemToChipColor?.(value)}\n className=\"tw-max-w-40\"\n variant={variant}\n />\n }\n >\n <Badge.Label>{itemToChipLabel(value)}</Badge.Label>\n <Badge.Addon variant=\"inline\" align=\"inline-end\">\n <BaseCombobox.ChipRemove\n render={<Badge.Button icon=\"xmark\" aria-label=\"Remove value\" />}\n />\n </Badge.Addon>\n </BaseCombobox.Chip>\n ))}\n\n {overflow.length > 0 && (\n <Badge.Root variant=\"pill\">\n <Badge.Label>+{overflow.length}</Badge.Label>\n </Badge.Root>\n )}\n </>\n );\n }}\n </BaseCombobox.Value>\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Combobox as BaseCombobox } from '@base-ui/react/combobox';\n\nimport { cn } from '../../utils';\n\ntype PortalProps = ComponentProps<typeof BaseCombobox.Portal>;\ntype PositionerProps = ComponentProps<typeof BaseCombobox.Positioner>;\ntype PopupProps = Omit<ComponentProps<typeof BaseCombobox.Popup>, 'className'> & {\n className?: string;\n};\n\ntype Variant = 'default' | 'argo';\n\ntype Props = PopupProps &\n Pick<PositionerProps, 'side' | 'align' | 'sideOffset' | 'alignOffset' | 'anchor'> &\n Pick<PortalProps, 'container'> & {\n variant?: Variant;\n };\n\nexport const ComboboxContent = ({\n ref,\n align = 'start',\n side = 'bottom',\n sideOffset = 4,\n alignOffset,\n anchor,\n container,\n className,\n children,\n variant = 'default',\n ...popupProps\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => (\n <BaseCombobox.Portal container={container}>\n <BaseCombobox.Positioner\n align={align}\n side={side}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n anchor={anchor}\n className=\"tailwindcss-preflight tw-isolate tw-z-[1055]\"\n >\n <BaseCombobox.Popup\n ref={ref}\n data-chips={!!anchor}\n data-variant={variant}\n className={cn(\n '!tw-pointer-events-auto',\n 'tw-group/combobox-content',\n 'tw-relative',\n 'tw-flex tw-flex-col tw-overflow-hidden',\n\n // sizing\n 'tw-max-h-[var(--available-height)]',\n 'tw-w-[var(--anchor-width)]',\n 'tw-max-w-[var(--available-width)]',\n 'tw-origin-[var(--transform-origin)]',\n 'data-[chips=true]:tw-min-w-[var(--anchor-width)]',\n\n // appearance\n 'tw-rounded-lg',\n 'data-[variant=default]:tw-rounded',\n\n 'tw-bg-popover',\n 'tw-text-popover-foreground',\n 'tw-shadow-md',\n 'tw-ring-1',\n 'tw-ring-foreground/10',\n 'tw-duration-100',\n\n // open animation\n 'data-open:animate-in',\n 'data-open:fade-in-0',\n 'data-open:zoom-in-95',\n\n // closed animation\n 'data-closed:animate-out',\n 'data-closed:fade-out-0',\n 'data-closed:zoom-out-95',\n\n // position animations\n 'data-[side=bottom]:tw-slide-in-from-top-2',\n 'data-[side=top]:tw-slide-in-from-bottom-2',\n 'data-[side=left]:tw-slide-in-from-right-2',\n 'data-[side=right]:tw-slide-in-from-left-2',\n 'data-[side=inline-start]:tw-slide-in-from-right-2',\n 'data-[side=inline-end]:tw-slide-in-from-left-2',\n className,\n )}\n {...popupProps}\n >\n {children}\n </BaseCombobox.Popup>\n </BaseCombobox.Positioner>\n </BaseCombobox.Portal>\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Combobox as BaseCombobox } from '@base-ui/react/combobox';\n\nimport { cn } from '../../utils';\n\ntype Props = Omit<ComponentProps<typeof BaseCombobox.Empty>, 'className'> & {\n className?: string;\n};\n\nexport const ComboboxEmpty = ({\n ref,\n className,\n ...props\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => (\n <BaseCombobox.Empty\n ref={ref}\n className={cn(\n 'tw-hidden',\n 'group-data-[empty]/combobox-content:tw-flex',\n 'tw-justify-center',\n 'tw-items-center',\n 'tw-text-center',\n 'tw-px-2',\n 'tw-text-muted-foreground',\n 'tw-py-6',\n className,\n )}\n {...props}\n />\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Combobox as BaseCombobox } from '@base-ui/react/combobox';\n\nimport { InputGroup } from '../InputGroup';\n\ntype Props = Omit<ComponentProps<typeof BaseCombobox.Input>, 'render'>;\n\nexport const ComboboxInput = ({ ref, ...props }: Props & { ref?: Ref<ElementRef<'input'>> }) => (\n <BaseCombobox.Input {...props} ref={ref} render={<InputGroup.Input />} />\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Combobox as BaseCombobox } from '@base-ui/react/combobox';\n\nimport { InputGroup } from '../InputGroup';\n\ntype InputGroupProps = Pick<\n ComponentProps<typeof InputGroup>,\n 'variant' | 'focusVariant' | 'sizing' | 'state'\n>;\n\ntype Props = InputGroupProps &\n Omit<ComponentProps<typeof BaseCombobox.InputGroup>, 'render' | 'className'> & {\n className?: string;\n };\n\nexport const ComboboxInputGroup = ({\n ref,\n state,\n variant,\n sizing,\n focusVariant,\n className,\n ...props\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => (\n <BaseCombobox.InputGroup\n {...props}\n ref={ref}\n render={\n <InputGroup\n state={state}\n variant={variant}\n focusVariant={focusVariant}\n sizing={sizing}\n className={className}\n />\n }\n />\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Combobox as BaseCombobox } from '@base-ui/react/combobox';\n\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\n\ntype Variant = 'check' | 'checkbox';\n\ntype Props = Omit<ComponentProps<typeof BaseCombobox.ItemIndicator>, 'className' | 'children'> & {\n className?: string;\n variant?: Variant;\n};\n\nexport const ComboboxItemIndicator = ({\n ref,\n className,\n variant = 'check',\n ...props\n}: Props & { ref?: Ref<ElementRef<'span'>> }) => {\n if (variant === 'checkbox') {\n return (\n <BaseCombobox.ItemIndicator\n ref={ref}\n keepMounted\n className={cn(\n 'tw-group/combobox-item-indicator',\n\n 'tw-inline-flex',\n 'tw-items-center',\n 'tw-justify-center',\n 'tw-size-4',\n 'tw-shrink-0',\n\n 'tw-rounded',\n 'tw-border',\n 'tw-border-input',\n 'tw-bg-white',\n\n 'data-[selected]:tw-bg-primary',\n 'data-[selected]:tw-border-primary',\n className,\n )}\n {...props}\n >\n <Icon\n icon=\"check\"\n className={cn(\n 'tw-hidden',\n 'tw-size-3',\n '!tw-text-white',\n 'group-data-[selected]/combobox-item-indicator:tw-block',\n )}\n />\n </BaseCombobox.ItemIndicator>\n );\n }\n\n return (\n <BaseCombobox.ItemIndicator\n {...props}\n ref={ref}\n className={cn(\n 'tw-pointer-events-none',\n 'tw-absolute',\n 'tw-right-2',\n\n 'group-data-[variant=default]/combobox-content:tw-right-4',\n '[&_svg]:tw-size-4',\n 'group-data-[highlighted]/combobox-item:tw-text-accent-foreground',\n 'group-data-[variant=default]/combobox-content:group-data-[highlighted]/combobox-item:tw-text-foreground',\n className,\n )}\n render={<Icon icon=\"check\" />}\n />\n );\n};\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Combobox as BaseCombobox } from '@base-ui/react/combobox';\n\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\n\nimport { ComboboxItemIndicator } from './ComboboxItemIndicator';\n\ntype Props = Omit<ComponentProps<typeof BaseCombobox.Item>, 'className'> & {\n className?: string;\n icon?: ComponentProps<typeof Icon>['icon'];\n indicator?: ComponentProps<typeof ComboboxItemIndicator>['variant'];\n};\n\nexport const ComboboxItem = ({\n ref,\n className,\n children,\n icon,\n indicator: variant = 'check',\n ...props\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => (\n <BaseCombobox.Item\n {...props}\n ref={ref}\n data-slot=\"combobox-item\"\n className={cn(\n 'tw-group/combobox-item',\n // layout\n 'tw-relative',\n 'tw-flex',\n 'tw-flex-1',\n 'tw-items-center',\n 'tw-gap-2',\n\n // spacing\n 'tw-py-2',\n 'tw-px-2',\n 'group-data-[variant=default]/combobox-content:tw-px-4',\n 'tw-rounded-lg',\n 'group-data-[variant=default]/combobox-content:tw-rounded-none',\n\n // typography\n 'tw-text-sm',\n 'tw-select-none',\n 'tw-cursor-default',\n 'tw-outline-hidden',\n\n // highlighted (keyboard / hover)\n 'data-[highlighted]:tw-bg-accent',\n 'group-data-[variant=default]/combobox-content:data-[highlighted]:tw-bg-neutral-100',\n 'data-[highlighted]:tw-text-accent-foreground',\n 'group-data-[variant=default]/combobox-content:data-[highlighted]:tw-text-foreground',\n\n // disabled\n 'data-disabled:tw-pointer-events-none',\n 'data-disabled:tw-opacity-50',\n\n // child svg defaults\n '[&_svg]:tw-pointer-events-none',\n '[&_svg]:tw-shrink-0',\n '[&_svg]:tw-text-muted-foreground',\n \"[&_svg:not([class*='size-'])]:tw-size-4\",\n className,\n )}\n >\n {<ComboboxItemIndicator variant={variant} />}\n {icon && <Icon icon={icon} />}\n <span className=\"tw-truncate\">{children}</span>\n </BaseCombobox.Item>\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Combobox as BaseCombobox } from '@base-ui/react/combobox';\n\nimport { cn } from '../../utils';\n\ntype Props = Omit<ComponentProps<typeof BaseCombobox.List>, 'className'> & {\n className?: string;\n};\n\nexport const ComboboxList = ({\n ref,\n className,\n ...props\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => (\n <BaseCombobox.List\n ref={ref}\n className={cn(\n 'tw-no-scrollbar',\n 'tw-scroll-py-1',\n 'tw-overflow-y-auto',\n 'tw-overscroll-contain',\n 'tw-min-h-0',\n 'tw-flex-1',\n\n 'tw-p-2',\n 'data-[empty]:tw-p-0',\n 'group-data-[variant=default]/combobox-content:tw-p-0',\n className,\n )}\n {...props}\n />\n);\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox';\n\nexport const ComboboxRoot = <Value, Multiple extends boolean | undefined = false>(\n props: BaseCombobox.Root.Props<Value, Multiple>,\n) => <BaseCombobox.Root {...props} />;\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Combobox as BaseCombobox } from '@base-ui/react/combobox';\n\nimport { cn } from '../../utils';\n\ntype Props = Omit<ComponentProps<typeof BaseCombobox.Separator>, 'className'> & {\n className?: string;\n};\n\nexport const ComboboxSeparator = ({\n ref,\n className,\n ...props\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => (\n <BaseCombobox.Separator\n ref={ref}\n className={cn('tw-mx-2 tw-my-1 tw-h-px tw-bg-neutral-100', className)}\n {...props}\n />\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Combobox as BaseCombobox } from '@base-ui/react/combobox';\n\nimport { cn } from '../../../utils';\n\ntype Props = Omit<ComponentProps<typeof BaseCombobox.Group>, 'className'> & {\n className?: string;\n};\n\nexport const ComboboxGroup = ({\n ref,\n className,\n children,\n ...props\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => (\n <BaseCombobox.Group\n ref={ref}\n className={cn('tw-flex tw-flex-col tw-gap-0.5', className)}\n {...props}\n >\n {children}\n </BaseCombobox.Group>\n);\n","import type { ElementRef, Ref } from 'react';\nimport { Combobox as BaseCombobox } from '@base-ui/react/combobox';\n\nimport { cn } from '../../../utils';\n\ntype Props = Omit<BaseCombobox.GroupLabel.Props, 'className'> & {\n className?: string;\n};\n\nexport const ComboboxGroupLabel = ({\n ref,\n className,\n ...props\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => (\n <BaseCombobox.GroupLabel\n {...props}\n ref={ref}\n className={cn(\n // Base (argo variant) — soft gray section label.\n 'tw-px-2',\n 'tw-py-1.5',\n 'tw-text-xs',\n 'tw-font-medium',\n 'tw-leading-none',\n 'tw-text-neutral-500',\n\n 'group-data-[variant=default]/combobox-content:tw-uppercase',\n 'group-data-[variant=default]/combobox-content:tw-font-semibold',\n 'group-data-[variant=default]/combobox-content:tw-tracking-wider',\n 'group-data-[variant=default]/combobox-content:tw-text-[11px]',\n 'group-data-[variant=default]/combobox-content:tw-text-black',\n 'group-data-[variant=default]/combobox-content:tw-pt-2',\n 'group-data-[variant=default]/combobox-content:tw-px-4',\n\n className,\n )}\n />\n);\n","import { Combobox as BaseCombobox } from '@base-ui/react/combobox';\n\ntype Props = BaseCombobox.Collection.Props;\n\nexport const ComboboxCollection = ({ ...props }: Props) => (\n <BaseCombobox.Collection data-slot=\"combobox-collection\" {...props} />\n);\n","import { type ComponentProps, type ReactNode, useEffect, useRef, useState } from 'react';\nimport { Combobox as BaseCombobox } from '@base-ui/react/combobox';\n\nimport type { Icon } from '../Icon';\nimport { InputGroup } from '../InputGroup';\n\nimport { ComboboxChips } from './ComboboxChips';\nimport { ComboboxContent } from './ComboboxContent';\nimport { ComboboxEmpty } from './ComboboxEmpty';\nimport { ComboboxInput } from './ComboboxInput';\nimport { ComboboxInputGroup } from './ComboboxInputGroup';\nimport { ComboboxItem } from './ComboboxItem';\nimport { ComboboxList } from './ComboboxList';\nimport { ComboboxRoot } from './ComboboxRoot';\nimport { ComboboxSeparator } from './ComboboxSeparator';\nimport { ComboboxCollection, ComboboxGroup, ComboboxGroupLabel } from './Group';\nimport type { Group } from './types';\nimport {\n createCreatableItem,\n defaultGroupToLabel,\n defaultItemToDisabled,\n defaultItemToIcon,\n defaultItemToLabel,\n defaultQueryToCreateLabel,\n defaultToCreateValue,\n isCreatableItem,\n isGroupItem,\n isGroupItems,\n toLabel,\n toValueKey,\n} from './utils';\n\ntype ComboboxProps<Value> = BaseCombobox.Root.Props<Value, false>;\ntype ComboboxInputProps = ComponentProps<typeof ComboboxInput>;\ntype ComboboxInputGroupProps = ComponentProps<typeof ComboboxInputGroup>;\ntype ComboboxItemProps = ComponentProps<typeof ComboboxItem>;\n\ntype IconName = ComponentProps<typeof Icon>['icon'];\ntype Indicator = NonNullable<ComboboxItemProps['indicator']>;\n\ntype PublicComboboxInputProps = Pick<ComboboxInputProps, 'placeholder' | 'id'> &\n Pick<ComboboxInputGroupProps, 'variant' | 'focusVariant' | 'sizing' | 'state' | 'className'>;\n\ntype PublicComboboxProps<Value> = Pick<\n ComboboxProps<Value>,\n | 'disabled'\n | 'inputRef'\n | 'value'\n | 'defaultValue'\n | 'onValueChange'\n | 'itemToStringLabel'\n | 'itemToStringValue'\n | 'filter'\n | 'onOpenChangeComplete'\n | 'isItemEqualToValue'\n>;\n\ntype CreatableProps<Value> = {\n allowCreate?: boolean;\n queryToCreateLabel?: (query: string) => ReactNode;\n queryToCreateValue?: (query: string) => Value;\n};\n\ntype Props<Value, GroupShape extends Group<Value> = Group<Value>> = PublicComboboxInputProps &\n PublicComboboxProps<Value> &\n CreatableProps<Value> & {\n items?: readonly (Value | GroupShape)[];\n\n // root specific\n allowClear?: boolean;\n empty?: ReactNode;\n indicator?: Indicator;\n prefix?: ReactNode;\n\n // item specific\n itemToLabel?: (item: Value) => ReactNode;\n itemToIcon?: (item: Value) => IconName | undefined;\n itemToDisabled?: (item: Value) => boolean;\n\n // group specific\n groupToLabel?: (group: GroupShape) => ReactNode;\n };\n\nexport const Combobox = <Value, GroupShape extends Group<Value> = Group<Value>>({\n // root props\n items: _itemsProp,\n value,\n defaultValue,\n onValueChange,\n itemToStringLabel: itemToStringLabelProp,\n itemToStringValue,\n disabled,\n filter,\n inputRef,\n onOpenChangeComplete,\n isItemEqualToValue: isItemEqualToValueProp,\n\n // input props\n variant,\n sizing,\n focusVariant,\n state,\n placeholder,\n allowClear,\n id,\n className,\n\n // own props\n empty = 'No items',\n indicator,\n prefix,\n\n // creatable\n allowCreate,\n queryToCreateValue,\n queryToCreateLabel = defaultQueryToCreateLabel,\n\n // own item props\n itemToDisabled = defaultItemToDisabled,\n itemToLabel = defaultItemToLabel,\n itemToIcon = defaultItemToIcon,\n groupToLabel = defaultGroupToLabel,\n}: Props<Value, GroupShape>) => {\n const contentVariant = variant === 'argo' ? 'argo' : 'default';\n\n const closeReasonRef = useRef<'outside-click' | 'item-press' | 'creatable-item-press' | 'none'>(\n 'none',\n );\n const [inputValue, setInputValue] = useState(() => {\n const initial = value !== undefined ? value : defaultValue;\n if (initial == null) return '';\n return itemToStringLabelProp?.(initial) ?? toLabel(initial);\n });\n\n useEffect(() => {\n if (value === undefined) return;\n const label = value === null ? '' : (itemToStringLabelProp?.(value) ?? toLabel(value));\n setInputValue((prev) => (prev === label ? prev : label));\n }, [value]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const query = inputValue.trim();\n const queryLower = query.toLowerCase();\n\n const itemsProp = _itemsProp ?? [];\n const sampleItem = itemsProp.flatMap((item) => (isGroupItem(item) ? item.items : [item]))[0];\n\n const [createdItems, setCreatedItems] = useState<Value[]>([]);\n\n const allItems = (() => {\n if (createdItems.length === 0) return itemsProp as (Value | GroupShape)[];\n if (isGroupItems(itemsProp))\n return [...itemsProp, { items: createdItems } as unknown as GroupShape];\n return [...itemsProp, ...createdItems];\n })();\n\n const items = (() => {\n if (!allowCreate || disabled) return allItems;\n if (!query) return allItems;\n const exactMatch = allItems\n .flatMap((item) => (isGroupItem(item) ? item.items : [item]))\n .some(\n (item) => (itemToStringLabelProp?.(item) ?? toLabel(item)).toLowerCase() === queryLower,\n );\n if (exactMatch) return allItems;\n\n const creatable = isGroupItems(itemsProp)\n ? [{ items: [createCreatableItem(query)] }]\n : [createCreatableItem(query)];\n\n return [...allItems, ...creatable];\n })();\n\n const itemToStringLabel: ComboboxProps<Value>['itemToStringLabel'] = (value) => {\n if (isCreatableItem(value)) return value.value;\n return itemToStringLabelProp?.(value) ?? toLabel(value);\n };\n\n const wrappedFilter: ComboboxProps<Value>['filter'] =\n !allowCreate || !filter\n ? filter\n : (item, ...args) => isCreatableItem(item) || filter(item, ...args);\n\n const wrappedItemToStringValue: ComboboxProps<Value>['itemToStringValue'] =\n !allowCreate || !itemToStringValue\n ? itemToStringValue\n : (item) => (isCreatableItem(item) ? item.value : itemToStringValue(item));\n\n const isItemEqualToValue: ComboboxProps<Value>['isItemEqualToValue'] = (a, b) => {\n if (isCreatableItem(a) || isCreatableItem(b)) return toValueKey(a) === toValueKey(b);\n return isItemEqualToValueProp?.(a, b) ?? Object.is(a, b);\n };\n\n const handleInputValueChange: NonNullable<ComboboxProps<Value>['onInputValueChange']> = (\n value,\n { reason },\n ) => {\n if (\n ['input-clear', 'none'].includes(reason) &&\n ['item-press', 'creatable-item-press'].includes(closeReasonRef.current)\n ) {\n closeReasonRef.current = 'none';\n return;\n }\n\n if (reason === 'none' && closeReasonRef.current == 'outside-click') {\n closeReasonRef.current = 'none';\n setInputValue(value);\n return;\n }\n\n setInputValue(value);\n };\n\n const handleOnOpenChangeComplete: NonNullable<ComboboxProps<Value>['onOpenChangeComplete']> = (\n open,\n ) => {\n onOpenChangeComplete?.(open);\n if (open) return;\n if (closeReasonRef.current !== 'none') return;\n closeReasonRef.current = 'outside-click';\n };\n\n const handleOnValueChange: ComboboxProps<Value>['onValueChange'] = (next, event) => {\n if (isCreatableItem(next)) {\n const newValue = defaultToCreateValue(next.value, sampleItem, queryToCreateValue) as Value;\n closeReasonRef.current = 'creatable-item-press';\n setCreatedItems((prev) => [...prev, newValue]);\n onValueChange?.(newValue, event);\n return;\n }\n\n closeReasonRef.current = 'item-press';\n onValueChange?.(next, event);\n };\n\n const renderItem = (item: Value) => {\n return (\n <Combobox.Item\n value={item}\n indicator={indicator}\n icon={itemToIcon(item)}\n disabled={itemToDisabled(item)}\n >\n {itemToLabel(item)}\n </Combobox.Item>\n );\n };\n\n return (\n <BaseCombobox.Root<Value, false>\n items={items}\n value={value}\n defaultValue={defaultValue}\n filter={wrappedFilter}\n onValueChange={handleOnValueChange}\n itemToStringLabel={itemToStringLabel}\n isItemEqualToValue={isItemEqualToValue}\n itemToStringValue={wrappedItemToStringValue}\n onOpenChangeComplete={handleOnOpenChangeComplete}\n disabled={disabled}\n inputRef={inputRef}\n inputValue={inputValue}\n onInputValueChange={handleInputValueChange}\n >\n <ComboboxInputGroup\n variant={variant}\n sizing={sizing}\n state={state}\n focusVariant={focusVariant}\n className={className}\n >\n {prefix && <InputGroup.Addon align=\"inline-start\">{prefix}</InputGroup.Addon>}\n <ComboboxInput id={id} placeholder={placeholder} disabled={disabled} />\n <InputGroup.Addon align=\"inline-end\">\n {allowClear && (\n <InputGroup.Button asChild icon=\"xmark\" aria-label=\"Clear\" disabled={disabled}>\n <BaseCombobox.Clear />\n </InputGroup.Button>\n )}\n <InputGroup.Button\n disabled={disabled}\n asChild\n icon=\"chevron-down\"\n aria-label=\"Open combobox\"\n >\n <BaseCombobox.Trigger />\n </InputGroup.Button>\n </InputGroup.Addon>\n </ComboboxInputGroup>\n <ComboboxContent variant={contentVariant}>\n <ComboboxEmpty>{empty}</ComboboxEmpty>\n <ComboboxList>\n {(itemOrGroup: Value | GroupShape) => {\n if (isCreatableItem(itemOrGroup))\n return (\n <Combobox.Item value={itemOrGroup} icon=\"plus\">\n {queryToCreateLabel(itemOrGroup.value)}\n </Combobox.Item>\n );\n\n if (isGroupItem(itemOrGroup)) {\n const maybeCreatable = itemOrGroup.items[0];\n\n if (isCreatableItem(maybeCreatable)) {\n return (\n <Combobox.Item value={maybeCreatable} icon=\"plus\">\n {queryToCreateLabel(maybeCreatable.value)}\n </Combobox.Item>\n );\n }\n\n const groupLabel = groupToLabel(itemOrGroup);\n\n return (\n <Combobox.Group items={itemOrGroup.items}>\n {groupLabel && <Combobox.GroupLabel>{groupLabel}</Combobox.GroupLabel>}\n <Combobox.GroupList>{renderItem}</Combobox.GroupList>\n </Combobox.Group>\n );\n }\n\n return renderItem(itemOrGroup);\n }}\n </ComboboxList>\n </ComboboxContent>\n </BaseCombobox.Root>\n );\n};\n\n// Base\nCombobox.Root = ComboboxRoot;\nCombobox.InputGroup = ComboboxInputGroup;\nCombobox.Input = ComboboxInput;\nCombobox.Content = ComboboxContent;\nCombobox.List = ComboboxList;\nCombobox.Item = ComboboxItem;\nCombobox.Empty = ComboboxEmpty;\nCombobox.Value = BaseCombobox.Value;\nCombobox.Separator = ComboboxSeparator;\n\n// Group\nCombobox.Group = ComboboxGroup;\nCombobox.GroupLabel = ComboboxGroupLabel;\nCombobox.GroupList = ComboboxCollection;\n\n// Chips\nCombobox.Chips = ComboboxChips;\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\n\ntype Props = ComponentProps<'button'>;\n\nexport const BreadcrumbEllipsis = ({\n ref,\n className,\n ...props\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => (\n <button\n ref={ref}\n type=\"button\"\n className={cn(\n // layout\n 'tw-flex',\n 'tw-items-center',\n 'tw-justify-center',\n\n 'tw-rounded-sm',\n 'tw-border-none',\n 'tw-bg-transparent',\n 'tw-cursor-pointer',\n 'tw-text-muted-foreground',\n 'tw-transition-colors',\n 'hover:tw-text-foreground',\n\n // focus\n 'focus-visible:tw-outline-none',\n 'focus-visible:tw-ring-2',\n 'focus-visible:tw-ring-secondary-500/50',\n\n 'tw-p-1',\n className,\n )}\n {...props}\n >\n <Icon icon={['far', 'ellipsis']} className=\"tw-size-4\" />\n <span className=\"tw-sr-only\">More</span>\n </button>\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'li'>;\n\nexport const BreadcrumbItem = ({ className, ...props }: Props) => (\n <li className={cn('tw-inline-flex', 'tw-items-center', className)} {...props} />\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'a'> & {\n asChild?: boolean;\n};\n\nexport const BreadcrumbLink = ({\n ref,\n asChild = false,\n className,\n ...props\n}: Props & { ref?: Ref<ElementRef<'a'>> }) => {\n const Comp = asChild ? Slot : 'a';\n return (\n <Comp\n ref={ref}\n className={cn(\n 'tw-flex',\n 'tw-items-center',\n 'tw-gap-1.5',\n // font\n 'tw-text-muted-foreground',\n 'tw-font-normal',\n 'tw-no-underline',\n\n // hover\n 'hover:tw-text-foreground',\n\n // focus\n 'focus-visible:tw-outline-none',\n 'focus-visible:tw-ring-2',\n 'focus-visible:tw-ring-secondary-500/50',\n 'focus-visible:tw-rounded-sm',\n\n // Icon\n '[&_svg]:tw-size-2.5',\n\n // transition\n 'tw-transition-colors',\n className,\n )}\n {...props}\n />\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'ol'>;\n\nexport const BreadcrumbList = ({ className, ...props }: Props) => (\n <ol\n className={cn(\n // layout\n 'tw-flex',\n 'tw-flex-wrap',\n 'tw-items-center',\n 'tw-gap-2.5',\n 'tw-m-0',\n 'tw-p-0',\n\n // font\n 'tw-break-words',\n 'tw-text-sm',\n 'tw-text-muted-foreground',\n className,\n )}\n {...props}\n />\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'span'>;\n\nexport const BreadcrumbPage = ({\n ref,\n className,\n ...props\n}: Props & { ref?: Ref<ElementRef<'span'>> }) => (\n <span\n ref={ref}\n // Do not use the anchor, as this item is not clickable\n // oxlint-disable-next-line jsx_a11y/prefer-tag-over-role\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn('tw-font-medium', 'tw-text-foreground', className)}\n {...props}\n />\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\n\ntype Props = ComponentProps<'li'>;\n\nexport const BreadcrumbSeparator = ({ children, className, ...props }: Props) => (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\n // layout\n 'tw-flex',\n 'tw-items-center',\n 'tw-justify-center',\n\n 'tw-aspect-square',\n 'tw-size-[15px]',\n '[&_svg]:tw-size-2.5',\n 'tw-text-muted-foreground',\n className,\n )}\n {...props}\n >\n {children ?? <Icon icon=\"chevron-right\" />}\n </li>\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { BreadcrumbEllipsis } from './BreadcrumbEllipsis';\nimport { BreadcrumbItem } from './BreadcrumbItem';\nimport { BreadcrumbLink } from './BreadcrumbLink';\nimport { BreadcrumbList } from './BreadcrumbList';\nimport { BreadcrumbPage } from './BreadcrumbPage';\nimport { BreadcrumbSeparator } from './BreadcrumbSeparator';\n\ntype Props = ComponentProps<'nav'>;\n\nexport const Breadcrumb = ({ className, ...props }: Props) => (\n <nav aria-label=\"breadcrumb\" className={cn('tailwindcss-preflight', className)} {...props} />\n);\n\nBreadcrumb.List = BreadcrumbList;\nBreadcrumb.Item = BreadcrumbItem;\nBreadcrumb.Link = BreadcrumbLink;\nBreadcrumb.Page = BreadcrumbPage;\nBreadcrumb.Separator = BreadcrumbSeparator;\nBreadcrumb.Ellipsis = BreadcrumbEllipsis;\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../../utils';\nimport { ScrollArea } from '../ScrollArea';\n\ntype Props = {\n className?: string;\n children?: ReactNode;\n};\n\nexport const NavbarContent = ({ children, className }: Props) => (\n <ScrollArea\n type=\"auto\"\n orientation=\"horizontal\"\n className=\"tw-flex-1\"\n scrollBarClassName=\"tw-h-1.5\"\n >\n <div className={cn('tw-flex', 'tw-py-1.5', className)}>{children}</div>\n </ScrollArea>\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const NavbarFooter = ({ children, className, ...rest }: Props) => (\n <div {...rest} className={cn('tw-py-1.5', className)}>\n {children}\n </div>\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const NavbarHeader = ({ children, className, ...rest }: Props) => (\n <div {...rest} className={cn('tw-overflow-hidden', 'tw-py-1.5', className)}>\n {children}\n </div>\n);\n","import type { ComponentProps } from 'react';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nconst variants = cva(['tw-p-0', 'tw-flex', 'tw-items-center', 'tw-justify-center', 'tw-gap-2'], {\n variants: {\n marker: {\n none: [],\n 'forward-slash': [\n // Style all li children with pseudo-element marker\n '[&_li]:tw-flex',\n '[&_li]:tw-items-center',\n '[&_li]:before:tw-content-[\"/\"]',\n '[&_li]:before:tw-text-border',\n '[&_li]:before:tw-text-sm',\n '[&_li]:before:tw-mr-0.5',\n '[&_li:not(:first-child)]:before:tw-ml-0.5',\n ],\n },\n },\n defaultVariants: {\n marker: 'none',\n },\n});\n\ntype Props = ComponentProps<'ul'> & VariantProps<typeof variants>;\n\nexport const NavbarMenu = ({ className, marker, ...rest }: Props) => (\n <ul {...rest} className={variants({ marker, className })} />\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport * as RadixAvatar from '@radix-ui/react-avatar';\nimport BoringAvatar from 'boring-avatars';\n\nimport { cn } from '@keboola/design';\n\ntype Props = ComponentProps<'button'> & {\n src?: string;\n alt?: string;\n};\n\nexport const NavbarMenuAvatar = ({\n ref,\n className,\n type = 'button',\n src,\n alt,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => {\n const altText = alt ?? 'Avatar';\n\n return (\n <button\n {...rest}\n ref={ref}\n type={type}\n className={cn(\n 'tw-flex',\n 'tw-items-center',\n 'tw-justify-center',\n 'tw-size-8',\n\n 'tw-aspect-square',\n 'tw-overflow-hidden',\n 'tw-shrink-0',\n\n 'tw-rounded-lg',\n 'tw-bg-transparent',\n 'tw-cursor-pointer',\n\n // Disabled state\n 'disabled:tw-opacity-50',\n 'disabled:tw-cursor-not-allowed',\n\n // Focus-visible (matches SidebarMenuButton exactly)\n 'focus-visible:tw-outline-none',\n 'focus-visible:tw-ring-2',\n 'focus-visible:tw-ring-sidebar-ring/50',\n className,\n )}\n >\n <RadixAvatar.Root>\n <RadixAvatar.Image src={src} alt={altText} className=\"tw-size-full tw-object-cover\" />\n\n <RadixAvatar.Fallback asChild>\n <BoringAvatar\n square\n name={altText}\n variant=\"beam\"\n colors={['#1F8FFF', '#004787', '#28D8FF', '#925cff', '#A8C2E6']}\n size={32}\n />\n </RadixAvatar.Fallback>\n </RadixAvatar.Root>\n </button>\n );\n};\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nconst variants = cva(\n [\n 'tw-flex',\n 'tw-justify-center',\n 'tw-items-center',\n\n '[&_svg]:tw-size-3',\n '[&:not(svg)]:tw-h-5',\n '[&:not(svg)]:tw-min-w-5',\n\n 'tw-p-1',\n 'tw-aspect-square',\n 'tw-rounded-md',\n ],\n {\n defaultVariants: { variant: 'icon-accent' },\n variants: {\n variant: {\n icon: ['tw-text-sidebar-foreground', '[&_svg]:tw-text-sidebar-foreground'],\n 'icon-emphasized': ['tw-text-white', '[&_svg]:tw-text-white'],\n 'icon-accent': [\n // color-aware accent styling\n 'group-data-[accent=blue]/navbar:tw-text-sidebar-primary',\n 'group-data-[accent=blue]/navbar:[&_svg]:tw-text-sidebar-primary',\n 'group-data-[accent=purple]/navbar:tw-text-purple-500',\n 'group-data-[accent=purple]/navbar:[&_svg]:tw-text-purple-500',\n 'group-data-[accent=orange]/navbar:tw-text-warning-500',\n 'group-data-[accent=orange]/navbar:[&_svg]:tw-text-warning-500',\n 'group-data-[accent=green]/navbar:tw-text-primary-500',\n 'group-data-[accent=green]/navbar:[&_svg]:tw-text-primary-500',\n ],\n 'icon-accent-emphasized': [\n 'tw-text-white',\n '[&_svg]:tw-text-white',\n\n 'group-data-[accent=blue]/navbar:tw-bg-sidebar-primary',\n 'group-data-[accent=purple]/navbar:tw-bg-purple-500',\n 'group-data-[accent=orange]/navbar:tw-bg-warning-500',\n 'group-data-[accent=green]/navbar:tw-bg-primary-500',\n ],\n 'icon-button': ['tw-size-4', 'tw-max-h-9', 'tw-leading-9', 'tw-p-0'],\n shortcut: ['tw-bg-muted', 'tw-text-sidebar-foreground', 'tw-ml-auto'],\n },\n },\n },\n);\n\ntype Props = { asChild?: boolean } & ComponentProps<'span'> & VariantProps<typeof variants>;\n\nexport const NavbarMenuItemAdornment = ({\n ref,\n asChild = false,\n className,\n variant = 'icon-accent',\n ...props\n}: Props & { ref?: Ref<ElementRef<'span'>> }) => {\n const Comp = asChild ? Slot : 'span';\n\n return <Comp {...props} ref={ref} className={variants({ variant, className })} />;\n};\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Root, Slottable } from '@radix-ui/react-slot';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { cn, Icon } from '@keboola/design';\n\nimport { NavbarMenuItemAdornment } from './NavbarMenuItemAdornment';\n\nconst variants = cva(\n [\n 'tw-group/navbar-menu-button',\n 'tw-box-border',\n 'tw-flex',\n 'tw-items-center',\n 'tw-gap-2',\n 'tw-bg-transparent',\n\n 'tw-leading-9',\n\n 'tw-border',\n 'tw-rounded-lg',\n 'tw-whitespace-nowrap',\n 'tw-select-none',\n\n // focus-visible\n '!tw-outline-none',\n 'focus-visible:tw-ring-2',\n 'focus-visible:tw-ring-sidebar-ring/50',\n\n // disabled\n 'disabled:tw-opacity-50',\n 'disabled:hover:tw-bg-transparent',\n 'disabled:tw-cursor-not-allowed',\n ],\n {\n defaultVariants: {\n variant: 'default',\n },\n variants: {\n variant: {\n default: [\n 'tw-max-h-9',\n 'tw-border-transparent',\n 'tw-py-2',\n 'tw-px-1.5',\n 'tw-text-sidebar-foreground',\n 'hover:tw-bg-sidebar-accent',\n 'aria-expanded:tw-bg-sidebar-accent',\n ],\n emphasized: [\n 'tw-max-h-9',\n 'tw-border-transparent',\n 'tw-py-2',\n 'tw-px-1.5',\n\n 'tw-text-sidebar-foreground',\n 'hover:tw-bg-sidebar-accent',\n 'aria-expanded:tw-bg-sidebar-accent',\n\n 'tw-font-semibold',\n ],\n icon: [\n 'tw-size-8',\n 'tw-aspect-square',\n 'tw-justify-center',\n 'tw-font-normal',\n 'tw-border-transparent',\n 'tw-text-secondary-500',\n '[&_svg]:!tw-text-secondary-500',\n 'hover:tw-bg-sidebar-accent',\n 'aria-expanded:tw-bg-sidebar-accent',\n ],\n search: [\n 'tw-max-h-8',\n 'tw-min-w-52',\n 'tw-px-3',\n 'tw-py-1',\n 'tw-text-neutral-400',\n 'tw-font-normal',\n 'tw-border-input',\n 'tw-text-muted-foreground',\n '[&_svg]:!tw-text-muted-foreground',\n ],\n },\n },\n },\n);\n\ntype Icon = ComponentProps<typeof Icon>['icon'];\ntype Props = ComponentProps<'button'> & {\n icon?: Icon;\n asChild?: boolean;\n} & VariantProps<typeof variants>;\n\nexport const NavbarMenuButton = ({\n ref,\n className,\n type = 'button',\n children,\n icon: iconProp,\n asChild = false,\n variant = 'default',\n ...rest\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => {\n const Comp = asChild ? Root : 'button';\n const isSearchVariant = variant === 'search';\n const isEmphasizedVariant = variant === 'emphasized';\n const icon: Icon | undefined = isSearchVariant ? 'search' : iconProp;\n\n const adornmentVariant: ComponentProps<typeof NavbarMenuItemAdornment>['variant'] = (() => {\n if (isSearchVariant || variant === 'icon') return 'icon-button';\n if (isEmphasizedVariant) return 'icon-accent-emphasized';\n return 'icon-accent';\n })();\n\n return (\n <Comp\n {...rest}\n ref={ref}\n type={type}\n data-variant={variant}\n className={cn(variants({ className, variant }))}\n >\n {icon && (\n <NavbarMenuItemAdornment asChild variant={adornmentVariant}>\n <Icon icon={icon} />\n </NavbarMenuItemAdornment>\n )}\n\n <Slottable>{children}</Slottable>\n </Comp>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'li'>;\n\nexport const NavbarMenuItem = ({ className, ...rest }: Props) => (\n <li {...rest} className={cn('tw-flex', 'tw-items-center', 'tw-gap-2', className)} />\n);\n","import type { ComponentProps } from 'react';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { NavbarContent } from './NavbarContent';\nimport { NavbarFooter } from './NavbarFooter';\nimport { NavbarHeader } from './NavbarHeader';\nimport { NavbarMenu } from './NavbarMenu';\nimport { NavbarMenuAvatar } from './NavbarMenuAvatar';\nimport { NavbarMenuButton } from './NavbarMenuButton';\nimport { NavbarMenuItem } from './NavbarMenuItem';\nimport { NavbarMenuItemAdornment } from './NavbarMenuItemAdornment';\n\nconst navbarClassnames = cva(\n [\n 'tailwindcss-preflight',\n 'tw-group/navbar',\n 'tw-sticky',\n 'tw-top-0',\n 'tw-z-50',\n 'tw-flex',\n 'tw-gap-2',\n 'tw-items-center',\n\n // The left side is intentionally smaller to align the logo with the sidebar icons.\n 'tw-pl-2',\n 'tw-pr-3',\n\n 'tw-bg-white',\n 'tw-text-xs',\n 'tw-leading-4',\n ],\n {\n defaultVariants: {\n bordered: false,\n },\n variants: {\n bordered: {\n true: [\n 'before:tw-content',\n 'before:tw-h-0.5',\n 'before:tw-w-full',\n 'before:tw-absolute',\n 'before:tw-left-0',\n 'before:tw-top-0',\n 'before:data-[accent=blue]:tw-bg-sidebar-primary',\n 'before:data-[accent=purple]:tw-bg-purple-500',\n 'before:data-[accent=green]:tw-bg-primary-500',\n 'before:data-[accent=orange]:tw-bg-warning-500',\n ],\n false: '',\n },\n },\n },\n);\n\ntype Props = ComponentProps<'header'> &\n VariantProps<typeof navbarClassnames> & {\n accent?: 'blue' | 'purple' | 'green' | 'orange';\n };\n\n/**\n * WIP: The design is not yet complete, and the implementation is far from finished. Please do not use it.\n * As of now, its usage is hidden behind the feature flag `sidebar-navigation`.\n * Will be based on radix, which handles accessibility: https://www.radix-ui.com/primitives/docs/components/navigation-menu\n * Design (WIP), missing a lot of actual cases: https://www.figma.com/design/HEBm5hXa4AIxcCh5PGKoF9/Main-Navigation?node-id=1568-1126&t=s3RREpciWrKQTL8p-0\n */\nexport const Navbar = ({ className, accent = 'blue', bordered = false, ...rest }: Props) => (\n <header {...rest} data-accent={accent} className={navbarClassnames({ bordered, className })} />\n);\n\nNavbar.Header = NavbarHeader;\nNavbar.Footer = NavbarFooter;\nNavbar.Content = NavbarContent;\n\nNavbar.Menu = NavbarMenu;\nNavbar.MenuItem = NavbarMenuItem;\nNavbar.MenuButton = NavbarMenuButton;\nNavbar.MenuItemAdornment = NavbarMenuItemAdornment;\nNavbar.MenuAvatar = NavbarMenuAvatar;\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\n\ntype Props = {\n active?: boolean;\n} & Omit<ComponentProps<typeof Button>, 'argo' | 'variant'>;\n\nexport const PaginationButton = ({\n ref,\n active: isActive = false,\n className,\n children,\n size = 'icon',\n ...props\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => (\n <Button\n {...props}\n ref={ref}\n argo\n variant=\"invisible\"\n size={size}\n data-slot=\"pagination-link\"\n aria-current={isActive ? 'page' : undefined}\n data-active={isActive}\n className={cn(\n 'data-[active=true]:tw-bg-accent',\n 'data-[active=true]:tw-text-accent-foreground',\n 'data-[active=true]:tw-border-accent',\n className,\n )}\n >\n {children}\n </Button>\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'ul'>;\n\nexport const PaginationContent = ({ className, ...props }: Props) => (\n <ul\n {...props}\n className={cn('tw-flex', 'tw-flex-row', 'tw-items-center', 'tw-gap-1', className)}\n />\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\n\ntype Props = ComponentProps<'span'>;\n\nexport const PaginationEllipsis = ({ className, ...props }: Props) => (\n <span\n aria-hidden=\"true\"\n className={cn(\n // layout\n 'tw-flex',\n 'tw-p-2.5',\n 'tw-items-center',\n 'tw-justify-center',\n\n 'tw-text-foreground',\n '[&_svg]:tw-size-4',\n className,\n )}\n {...props}\n >\n <Icon icon={['far', 'ellipsis']} />\n </span>\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'li'>;\n\nexport const PaginationItem = ({ className, ...props }: Props) => (\n <li className={cn('tw-list-none', className)} {...props} />\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { PaginationButton } from './PaginationButton';\n\ntype Props = ComponentProps<typeof PaginationButton>;\n\nexport const PaginationNext = ({ children, className, ...props }: Props) => (\n <PaginationButton\n {...props}\n aria-label=\"Go to next page\"\n icon=\"chevron-right\"\n size=\"medium\"\n className={cn('tw-flex-row-reverse', className)}\n >\n {children ?? 'Next'}\n </PaginationButton>\n);\n","import type { ComponentProps } from 'react';\n\nimport { PaginationButton } from './PaginationButton';\n\ntype Props = ComponentProps<typeof PaginationButton>;\n\nexport const PaginationPrevious = ({ children, ...props }: Props) => (\n <PaginationButton {...props} size=\"medium\" aria-label=\"Go to previous page\" icon=\"chevron-left\">\n {children ?? 'Previous'}\n </PaginationButton>\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { PaginationButton } from './PaginationButton';\nimport { PaginationContent } from './PaginationContent';\nimport { PaginationEllipsis } from './PaginationEllipsis';\nimport { PaginationItem } from './PaginationItem';\nimport { PaginationNext } from './PaginationNext';\nimport { PaginationPrevious } from './PaginationPrevious';\n\ntype Props = ComponentProps<'nav'>;\n\nexport const Pagination = ({ className, ...props }: Props) => (\n <nav\n {...props}\n aria-label=\"pagination\"\n className={cn(\n 'tailwindcss-preflight',\n 'tw-mx-auto',\n 'tw-flex',\n 'tw-w-full',\n 'tw-justify-center',\n className,\n )}\n />\n);\n\nPagination.Content = PaginationContent;\nPagination.Item = PaginationItem;\nPagination.Button = PaginationButton;\nPagination.Previous = PaginationPrevious;\nPagination.Next = PaginationNext;\nPagination.Ellipsis = PaginationEllipsis;\n","export const AIGradientsSvg = () => (\n <svg width=\"0\" height=\"0\" style={{ position: 'absolute', visibility: 'hidden' }}>\n <defs>\n {/*aigradient-600*/}\n <linearGradient id=\"aigradient-600\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor=\"#61E4FF\" />\n <stop offset=\"50%\" stopColor=\"#1F8FFF\" />\n <stop offset=\"100%\" stopColor=\"#7C5CFF\" />\n </linearGradient>\n\n {/*aigradient-700*/}\n <linearGradient id=\"aigradient-700\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">\n <stop offset=\"0%\" stopColor=\"#075fb8\" />\n <stop offset=\"100%\" stopColor=\"#5b2cb8\" />\n </linearGradient>\n </defs>\n </svg>\n);\n","import type { ReactNode } from 'react';\nimport { all } from '@awesome.me/kit-be8bcf7e5e/icons';\nimport { library } from '@fortawesome/fontawesome-svg-core';\n\nimport { AIGradientsSvg } from './AIGradientSvg';\n\nlibrary.add(...all);\n\ntype Props = {\n children: ReactNode;\n};\n\n/**\n * Responsibilities:\n * - Register svg gradients\n * - Register fontawesome icons\n */\nexport const ThemeProvider = ({ children }: Props) => {\n return (\n <>\n <AIGradientsSvg />\n {children}\n </>\n );\n};\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport BoringAvatar from 'boring-avatars';\n\nimport { cn } from '@keboola/design';\n\nimport { useSHA256 } from '../utils/useSHA256';\n\nconst RANDOM_UUID = crypto.randomUUID();\n\nconst styles = {\n wrapper: {\n position: 'relative',\n display: 'inline-flex',\n verticalAlign: 'middle',\n },\n gravatar: {\n position: 'absolute',\n left: 0,\n },\n} as const;\n\ntype Props = {\n user?: {\n name: string | undefined;\n email: string | undefined;\n };\n fallback?: string;\n className?: string;\n size?: number;\n variant?: 'circle' | 'rounded';\n} & ComponentProps<'span'>;\n\nexport const Avatar = ({\n ref,\n user,\n fallback,\n size = 36,\n className,\n variant = 'circle',\n ...props\n}: Props & { ref?: Ref<ElementRef<'span'>> }) => {\n const userName = user?.name || user?.email;\n const email = user?.email;\n const hash = useSHA256(email ? email.trim().toLowerCase() : fallback || '');\n\n return (\n <span\n {...props}\n ref={ref}\n style={styles.wrapper}\n className={cn(\n variant === 'circle' ? 'tw-rounded-full' : 'tw-rounded-md',\n 'tw-overflow-hidden',\n 'focus-visible:tw-outline-none',\n 'tw-h-fit',\n 'tw-shrink-0',\n\n 'tw-border-solid',\n 'tw-border',\n 'tw-border-transparent',\n\n 'focus-visible:tw-ring-4',\n 'focus-visible:tw-ring-secondary-200',\n 'focus-visible:tw-border-secondary-500',\n className,\n )}\n >\n <BoringAvatar\n name={userName || fallback || RANDOM_UUID}\n variant=\"beam\"\n colors={['#1F8FFF', '#004787', '#28D8FF', '#925cff', '#A8C2E6']}\n size={size}\n square={variant === 'rounded'}\n />\n {hash && (\n <img\n src={`https://secure.gravatar.com/avatar/${hash}?s=${size * 3}&d=blank`}\n width={size}\n height={size}\n alt={userName || fallback || 'User avatar'}\n referrerPolicy=\"no-referrer\"\n loading=\"lazy\"\n style={styles.gravatar}\n />\n )}\n </span>\n );\n};\n","import { escapeStringRegexp } from '../../utils/escapeStringRegexp';\n\nconst createSearchRegex = ({\n mark,\n isCaseSensitive = false,\n}: {\n mark: string;\n isCaseSensitive?: boolean;\n}) => {\n const pattern = escapeStringRegexp(mark).split(' ').filter(Boolean).join('|');\n return new RegExp(`(${pattern})`, `g${isCaseSensitive ? '' : 'i'}`);\n};\n\nexport const createMarkedParts = ({\n mark,\n isCaseSensitive,\n source,\n}: {\n mark?: string;\n source: string;\n isCaseSensitive: boolean;\n}) => {\n if (!mark?.trim()) return [{ isMark: false, part: source }];\n\n const searchRegex = createSearchRegex({\n mark,\n isCaseSensitive,\n });\n\n return source\n .split(searchRegex)\n .map((part) => ({\n isMark: searchRegex.test(part),\n part,\n }))\n .filter(({ part }) => part !== '');\n};\n","import { useMemo } from 'react';\nimport type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { createMarkedParts } from './utils';\n\ntype Props = {\n source: string;\n className?: string;\n mark?: string;\n isCaseSensitive?: boolean;\n} & ComponentProps<'span'>;\n\nexport const MarkedText = ({\n ref,\n source,\n mark,\n isCaseSensitive = false,\n ...spanProps\n}: Props & { ref?: Ref<ElementRef<'span'>> }) => {\n const parts = useMemo(\n () =>\n createMarkedParts({\n mark,\n source,\n isCaseSensitive,\n }),\n [isCaseSensitive, mark, source],\n );\n\n return (\n <span {...spanProps} ref={ref}>\n {/* oxlint-disable-next-line react/no-array-index-key */}\n {parts.map(({ isMark, part }, index) => (isMark ? <mark key={index}>{part}</mark> : part))}\n </span>\n );\n};\n","import type { ComponentProps, ElementRef, ReactNode, Ref } from 'react';\nimport { Root } from '@radix-ui/react-toggle';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\n\nconst toggleVariants = cva(\n [\n 'tailwindcss-preflight',\n\n // layout\n 'tw-relative',\n 'tw-flex',\n 'tw-items-center',\n 'tw-justify-center',\n 'tw-gap-2',\n\n // text\n 'tw-uppercase',\n 'tw-text-xs',\n 'tw-leading-5',\n 'tw-font-medium',\n 'tw-tracking-[1px]',\n\n // border\n 'tw-border',\n\n // style\n 'tw-rounded',\n 'tw-whitespace-nowrap',\n\n // transitions\n 'tw-transition-colors',\n 'tw-duration-100',\n 'tw-ease-linear',\n '[&_svg]:tw-transition-colors',\n '[&_svg]:tw-duration-100',\n '[&_svg]:tw-ease-linear',\n\n // hover\n 'not-disabled:hover:tw-border-neutral-300',\n 'not-disabled:hover:tw-bg-neutral-100',\n\n 'disabled:tw-opacity-50',\n 'disabled:tw-cursor-not-allowed',\n\n // focus-visible\n '[&:not(:active)]:not-disabled:focus-visible:tw-outline',\n '!tw-outline-offset-0',\n '[&:not(:active)]:not-disabled:focus-visible:tw-outline-secondary-500',\n '[&:not(:active)]:not-disabled:focus-visible:tw-outline-1',\n '[&:not(:active)]:not-disabled:focus-visible:tw-shadow-[0_0_0_4px_rgba(31,143,255,0.2)]',\n ],\n {\n variants: {\n variant: {\n ai: [\n 'tw-border-0',\n\n // off state\n 'aria-[pressed=false]:tw-bg-gradient-to-br',\n 'aria-[pressed=false]:tw-from-secondary-100',\n 'aria-[pressed=false]:tw-to-purple-100',\n 'hover:aria-[pressed=false]:tw-from-secondary-200',\n 'hover:aria-[pressed=false]:tw-to-purple-200',\n\n // on state\n 'aria-pressed:tw-bg-gradient-to-br',\n 'aria-pressed:tw-from-secondary-600',\n 'aria-pressed:tw-to-purple-600',\n 'hover:aria-pressed:tw-from-secondary-700',\n 'hover:aria-pressed:tw-to-purple-700',\n\n // icon color - gradient when off, white when on\n '[&_path]:tw-fill-aigradient-600',\n '[&_path]:aria-pressed:tw-fill-white',\n '*:aria-pressed:tw-text-white',\n ],\n 'ai-vivid': [\n 'tw-border-0',\n 'tw-rounded-lg',\n 'tw-normal-case',\n 'tw-tracking-normal',\n 'tw-gap-1.5',\n\n // default: sky → violet gradient, white text\n 'tw-bg-gradient-to-br',\n 'tw-from-sky-400',\n 'tw-via-sky-600',\n 'tw-to-violet-600',\n 'tw-text-white',\n\n // hover: light sky bg, dark text\n 'not-disabled:hover:tw-bg-none',\n 'not-disabled:hover:tw-bg-sky-100',\n 'not-disabled:hover:tw-border-transparent',\n 'not-disabled:hover:tw-text-sky-700',\n 'not-disabled:hover:[&_svg]:tw-text-sky-700',\n\n // pressed: dark navy gradient, white\n 'aria-[pressed=true]:tw-bg-gradient-to-br',\n 'aria-[pressed=true]:tw-from-sky-700',\n 'aria-[pressed=true]:tw-to-sky-900',\n 'aria-[pressed=true]:tw-text-white',\n 'aria-[pressed=true]:[&_svg]:tw-text-white',\n ],\n ghost: [\n 'tw-border-0',\n 'tw-rounded-lg',\n\n // default state - transparent background\n 'tw-bg-transparent',\n '[&_svg]:tw-text-neutral-400',\n\n // hover state\n 'not-disabled:hover:tw-bg-neutral-100',\n '[&_svg]:not-disabled:hover:tw-text-secondary-500',\n\n // pressed state\n 'aria-pressed:tw-bg-secondary-100',\n '[&_svg]:aria-pressed:tw-text-secondary-500',\n\n // hover on pressed state\n 'not-disabled:hover:aria-pressed:tw-bg-secondary-200',\n '[&_svg]:not-disabled:hover:aria-pressed:tw-text-secondary-600',\n ],\n },\n size: {\n small: 'tw-max-h-8 tw-min-h-8 tw-px-2 tw-py-1.5',\n medium: 'tw-max-h-10 tw-min-h-10 tw-px-4 tw-py-2.5',\n large: 'tw-max-h-12 tw-min-h-12 tw-px-4 tw-py-3.5',\n },\n iconOnly: {\n true: 'tw-p-0',\n false: '',\n },\n },\n compoundVariants: [\n { iconOnly: true, size: 'small', className: 'tw-size-8' },\n { iconOnly: true, size: 'medium', className: 'tw-size-10' },\n { iconOnly: true, size: 'large', className: 'tw-size-12' },\n ],\n defaultVariants: {\n variant: 'ai',\n size: 'medium',\n iconOnly: false,\n },\n },\n);\n\ntype Props = {\n icon?: ComponentProps<typeof Icon>['icon'];\n badge?: ReactNode;\n} & ComponentProps<typeof Root> &\n Omit<VariantProps<typeof toggleVariants>, 'iconOnly'>;\n\nexport const Toggle = ({\n ref,\n className,\n variant = 'ai',\n size = 'medium',\n children,\n icon,\n badge,\n disabled = false,\n ...props\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => {\n const isAiVariant = variant === 'ai';\n const isIconOnly = Boolean(icon && children == null);\n\n return (\n <Root\n {...props}\n ref={ref}\n className={cn(toggleVariants({ variant, size, iconOnly: isIconOnly, className }))}\n disabled={disabled}\n >\n {badge && (\n <span className=\"tw-absolute tw-right-0 tw-top-0 -tw-translate-y-1/2 tw-translate-x-1/4\">\n {badge}\n </span>\n )}\n {icon && (\n <Icon icon={icon} className=\"tw-inline-block tw-size-4 tw-shrink-0 tw-align-middle\" />\n )}\n\n {isAiVariant ? (\n <div className=\"tw-bg-gradient-to-br tw-from-secondary-700 tw-to-purple-700 tw-bg-clip-text tw-text-transparent\">\n {children}\n </div>\n ) : (\n children\n )}\n </Root>\n );\n};\n","import { useEffect, useState } from 'react';\n\nimport { useElement } from '../../hooks/useElement';\n\nconst CONNECTOR_MARGIN_TOP = 8;\n\nexport const useLastLineHeight = () => {\n const [wrapper, setWrapper] = useElement();\n const [connector, setConnector] = useElement();\n const [height, setHeight] = useState(0);\n\n useEffect(() => {\n if (wrapper === null) return;\n if (connector === null) return;\n\n const updateHeight = () => {\n const wrapperRect = wrapper.getBoundingClientRect();\n const connectorRect = connector.getBoundingClientRect();\n const distance = connectorRect.top - wrapperRect.top - CONNECTOR_MARGIN_TOP;\n setHeight(distance);\n };\n\n // Initial check.\n const rafId = requestAnimationFrame(updateHeight);\n\n return () => {\n cancelAnimationFrame(rafId);\n };\n }, [wrapper, connector]);\n\n return {\n height,\n setWrapper,\n setConnector,\n };\n};\n","import type { ComponentProps, CSSProperties } from 'react';\nimport { Root } from '@radix-ui/react-slot';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { useLastLineHeight } from './useLastLineHeight';\n\nconst connectorWrapper = cva(\n [\n 'tw-grow',\n 'tw-min-h-8',\n 'tw-py-2',\n\n // layout\n 'tw-flex',\n 'tw-justify-center',\n\n // CONNECTOR LINE\n 'tw-relative',\n 'before:tw-absolute',\n 'before:tw-self-start',\n\n // Centered on x-axis\n 'before:tw-left-1/2',\n 'before:tw--translate-x-1/2',\n 'before:tw-w-px',\n 'before:tw-h-full',\n 'before:group-last/timeline-item:tw-h-[--connector-line-height]',\n\n // Solid line\n 'before:group-data-[variant=solid]/timeline:tw-bg-neutral-200',\n\n // Dashed line using gradient\n 'before:group-data-[variant=dashed]/timeline:tw-bg-gradient-to-b',\n 'before:group-data-[variant=dashed]/timeline:tw-from-neutral-200',\n 'before:group-data-[variant=dashed]/timeline:tw-from-50%',\n 'before:group-data-[variant=dashed]/timeline:tw-to-transparent',\n 'before:group-data-[variant=dashed]/timeline:tw-to-50%',\n 'before:group-data-[variant=dashed]/timeline:tw-bg-[length:1px_4px]',\n ],\n {\n defaultVariants: {\n align: 'start',\n },\n variants: {\n align: {\n start: ['tw-items-start'],\n center: ['tw-items-center'],\n end: ['tw-items-end'],\n baseline: ['tw-items-baseline'],\n },\n },\n },\n);\n\nconst connector = cva(\n [\n // ensure that it is always above the connector line.\n 'tw-z-10',\n 'tw-relative',\n ],\n {\n defaultVariants: {\n variant: 'label',\n },\n variants: {\n variant: {\n none: [],\n label: [\n 'tw-bg-neutral-100',\n 'tw-text-neutral-300',\n 'tw-rounded',\n 'tw-p-1.5',\n 'tw-text-nowrap',\n 'tw-text-xs',\n ],\n icon: ['tw-bg-white', '[&_svg]:tw-text-neutral-300'],\n line: [\n 'tw-min-w-8',\n 'tw-overflow-hidden',\n 'tw-w-full',\n // height of the curved corner\n 'tw-h-1',\n\n // small offset from top and bottom\n 'tw-my-1.5',\n // positioning\n 'tw-relative',\n 'before:tw-absolute',\n 'before:tw-left-1/2',\n 'before:tw-bottom-0',\n\n // sizing\n 'before:tw-w-full',\n 'before:tw-h-full',\n\n // l-shape\n 'before:tw-border-l',\n 'before:tw-border-b',\n 'before:tw-border-neutral-200',\n\n 'before:tw-rounded-bl',\n // Solid or dashed\n 'before:group-data-[variant=dashed]/timeline:tw-border-dashed',\n 'before:group-data-[variant=solid]/timeline:!tw-border-solid',\n ],\n },\n },\n },\n);\n\ntype Props = { asChild?: boolean; offset?: number } & ComponentProps<'div'> &\n VariantProps<typeof connectorWrapper> &\n VariantProps<typeof connector>;\n\nexport const TimelineConnector = ({\n className,\n children,\n asChild,\n variant,\n align,\n offset = 0,\n style,\n ...rest\n}: Props) => {\n const Comp = asChild ? Root : 'div';\n const { setConnector, setWrapper, height } = useLastLineHeight();\n\n return (\n <div\n ref={setWrapper}\n style={\n {\n '--connector-line-height': `${height}px`,\n } as CSSProperties\n }\n className={connectorWrapper({\n align,\n })}\n >\n <Comp\n {...rest}\n ref={setConnector}\n style={{\n top: align === 'end' ? -offset : offset,\n ...style,\n }}\n className={connector({ variant, className })}\n >\n {children}\n </Comp>\n </div>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const TimelineContent = ({ className, ...rest }: Props) => (\n <div\n {...rest}\n data-slot=\"timeline-content\"\n className={cn(\n 'tw-flex',\n // spacing in between timeline items\n 'tw-py-2',\n className,\n )}\n />\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'li'>;\n\nexport const TimelineItem = ({ className, ...rest }: Props) => {\n return (\n <li\n {...rest}\n className={cn('tw-contents', 'tw-relative', 'tw-group/timeline-item', className)}\n />\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { TimelineConnector } from './TimelineConnector';\nimport { TimelineContent } from './TimelineContent';\nimport { TimelineItem } from './TimelineItem';\n\ntype Props = ComponentProps<'ul'> & {\n variant?: 'solid' | 'dashed';\n};\n\nexport const Timeline = ({ className, variant = 'dashed', ...rest }: Props) => {\n return (\n <ul\n {...rest}\n data-variant={variant}\n className={cn(\n 'tailwindcss-preflight',\n 'tw-overflow-y-hidden',\n // reset default styling\n 'tw-p-0',\n 'tw-grid',\n 'tw-grid-cols-[auto_1fr]',\n 'tw-group/timeline',\n 'tw-gap-x-4',\n className,\n )}\n />\n );\n};\n\nTimeline.Item = TimelineItem;\nTimeline.Content = TimelineContent;\nTimeline.Connector = TimelineConnector;\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'span'>;\n\nexport const KbdSeparator = ({ className, ...props }: Props) => (\n <span {...props} className={cn('tw-text-xs tw-text-muted-foreground', className)} />\n);\n","import { Children, Fragment } from 'react';\nimport type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { KbdSeparator } from './KbdSeparator';\n\ntype Props = { separator?: string } & ComponentProps<'kbd'>;\n\nexport const KbdGroup = ({\n ref,\n className,\n children,\n separator,\n ...props\n}: Props & { ref?: Ref<ElementRef<'kbd'>> }) => {\n return (\n <kbd\n {...props}\n ref={ref}\n className={cn('tw-inline-flex', 'tw-items-center', 'tw-gap-1', className)}\n >\n {separator\n ? // oxlint-disable-next-line react-x/no-children-to-array\n Children.toArray(children).map((child, index) => (\n // oxlint-disable-next-line\n <Fragment key={index}>\n {index > 0 && <KbdSeparator>{separator}</KbdSeparator>}\n {child}\n </Fragment>\n ))\n : children}\n </kbd>\n );\n};\n","import { cva } from 'class-variance-authority';\n\nexport const kbdVariants = cva(\n [\n 'tailwindcss-preflight',\n // style\n 'tw-pointer-events-none',\n 'tw-w-fit',\n 'tw-h-5',\n 'tw-min-w-5',\n\n // layout\n 'tw-inline-flex',\n 'tw-items-center',\n 'tw-justify-center',\n 'tw-gap-1',\n 'tw-shrink-0',\n\n // spacing\n 'tw-px-1',\n '[&_svg:not([class*=\"size-\"])]:tw-size-2.5',\n\n 'tw-text-xs',\n 'tw-font-medium',\n\n 'tw-rounded',\n ],\n {\n defaultVariants: {\n variant: 'default',\n },\n variants: {\n variant: {\n default: 'tw-bg-muted tw-text-muted-foreground',\n primary: 'tw-bg-white/20 tw-text-white',\n },\n },\n },\n);\n","import type { ComponentProps } from 'react';\nimport type { VariantProps } from 'class-variance-authority';\n\nimport { KbdGroup } from './KbdGroup';\nimport { KbdSeparator } from './KbdSeparator';\nimport { kbdVariants } from './styles';\n\ntype Props = ComponentProps<'kbd'> & VariantProps<typeof kbdVariants>;\n\nexport const Kbd = ({ children, className, variant, ...rest }: Props) => (\n <kbd {...rest} className={kbdVariants({ className, variant })}>\n {children}\n </kbd>\n);\n\nKbd.Group = KbdGroup;\nKbd.Separator = KbdSeparator;\n","import { isMac } from '../../utils';\n\ntype KeyName = 'mod' | 'option' | 'shift' | 'enter';\ntype KeyRepresentation = { symbol: string; text: string };\n\ntype KeyDefinition = {\n mac: KeyRepresentation;\n windows: KeyRepresentation;\n};\n\nconst KEY_DEFINITIONS: Record<KeyName, KeyDefinition> = {\n mod: {\n mac: { symbol: '⌘', text: 'Command' },\n windows: { symbol: 'Ctrl', text: 'Ctrl' },\n },\n option: {\n mac: { symbol: '⌥', text: 'Option' },\n windows: { symbol: 'Alt', text: 'Alt' },\n },\n shift: {\n mac: { symbol: '⇧', text: 'Shift' },\n windows: { symbol: '⇧', text: 'Shift' },\n },\n enter: {\n mac: { symbol: '⏎', text: 'Enter' },\n windows: { symbol: '⏎', text: 'Enter' },\n },\n};\n\nconst createKeyboardKeys = () => {\n const keysObj: Record<KeyName, KeyRepresentation> = {} as Record<KeyName, KeyRepresentation>;\n\n for (const keyName of Object.keys(KEY_DEFINITIONS) as KeyName[]) {\n keysObj[keyName] = KEY_DEFINITIONS[keyName][isMac ? 'mac' : 'windows'];\n }\n\n return keysObj;\n};\n\nexport const keys = createKeyboardKeys();\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Indicator, Root } from '@radix-ui/react-progress';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nconst variants = cva(\n ['tw-relative', 'tw-flex', 'tw-items-center', 'tw-z-0', 'tw-overflow-x-hidden', 'tw-w-full'],\n {\n defaultVariants: {\n variant: 'default',\n size: 'lg',\n },\n variants: {\n variant: {\n default: ['tw-bg-primary/20', '[&_[data-slot=\"progress-indicator\"]]:tw-bg-primary'],\n success: ['tw-bg-success/20', '[&_[data-slot=\"progress-indicator\"]]:tw-bg-success'],\n },\n size: {\n sm: ['tw-rounded-full', 'tw-h-1'],\n lg: ['tw-rounded', 'tw-h-4'],\n },\n },\n },\n);\n\ntype Props = ComponentProps<typeof Root> & VariantProps<typeof variants>;\n\nexport const Progress = ({\n ref,\n className,\n value,\n variant,\n size,\n ...props\n}: Props & { ref?: Ref<ElementRef<typeof Root>> }) => (\n <Root {...props} ref={ref} className={cn(variants({ variant, size, className }))} value={value}>\n <Indicator\n data-slot=\"progress-indicator\"\n className=\"tw-size-full tw-flex-1 tw-transition-all\"\n style={{ transform: `translateX(-${100 - (value ?? 0)}%)` }}\n />\n </Root>\n);\n","import type { ComponentProps } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nconst variants = cva(['tw-p-0.5', 'tw-text-inherit', 'tw-inline-flex'], {\n variants: {\n diff: {\n added: ['tw-bg-primary-200'],\n removed: ['tw-bg-error-300'],\n },\n },\n});\n\ntype Props = ComponentProps<'span'> & VariantProps<typeof variants>;\n\nexport const DiffViewMark = ({ diff, children, className, ...props }: Props) => (\n <mark {...props} className={cn(variants({ diff, className }))}>\n {children}\n </mark>\n);\n","import type { ComponentProps } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nconst variants = cva(\n [\n // reset global styles\n '[&_pre]:tw-p-0',\n '[&_pre]:tw-m-0',\n '[&_pre]:tw-border-none',\n '[&_pre]:tw-rounded-none',\n\n 'tw-align-top',\n '[&_pre]:tw-bg-inherit',\n '[&_pre]:tw-text-inherit',\n '[&_pre]:tw-px-2',\n '[&_pre]:!tw-leading-7',\n '[&_pre]:tw-text-sm',\n '[&_pre]:tw-whitespace-pre-wrap',\n ],\n {\n defaultVariants: {\n variant: 'default',\n diff: 'default',\n },\n variants: {\n variant: {\n default: [],\n gutter: ['tw-w-14', 'tw-text-right', 'tw-whitespace-nowrap', 'tw-select-none'],\n code: [],\n },\n diff: {\n default: [],\n added: [],\n removed: [],\n },\n },\n compoundVariants: [\n {\n variant: 'gutter',\n diff: 'default',\n className: ['tw-bg-neutral-100', 'tw-text-neutral-400'],\n },\n {\n variant: 'gutter',\n diff: 'added',\n className: ['tw-bg-primary-200', 'tw-text-primary-600'],\n },\n {\n variant: 'gutter',\n diff: 'removed',\n className: ['tw-bg-error-200', 'tw-text-error-500'],\n },\n {\n variant: 'code',\n diff: 'default',\n className: ['tw-bg-neutral-50', 'tw-text-neutral-800'],\n },\n {\n variant: 'code',\n diff: 'added',\n className: ['tw-bg-primary-100'],\n },\n {\n variant: 'code',\n diff: 'removed',\n className: ['tw-bg-error-100'],\n },\n ],\n },\n);\n\ntype Props = ComponentProps<'td'> & VariantProps<typeof variants>;\n\nexport const DiffViewTd = ({ diff, variant = 'default', children, className, ...props }: Props) => {\n const needsCodeFormatting = variant === 'code' || variant === 'gutter';\n\n return (\n <td {...props} className={cn(variants({ variant, className, diff }))}>\n {needsCodeFormatting ? <pre>{children}</pre> : children}\n </td>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'th'> & {\n variant?: 'default' | 'gutter';\n};\n\nexport const DiffViewTh = ({ variant = 'default', children, className, ...props }: Props) => (\n <th\n {...props}\n className={cn(\n 'tw-bg-white',\n 'tw-py-3',\n 'tw-border-b',\n { 'tw-w-14': variant === 'gutter' },\n { 'last:tw-pr-8': variant === 'default' },\n className,\n )}\n >\n {children}\n </th>\n);\n","import { diffLines, diffWords } from 'diff';\n\nexport const DiffType = {\n DEFAULT: 'default',\n ADDED: 'added',\n REMOVED: 'removed',\n} as const;\n\ntype DiffTypeValue = (typeof DiffType)[keyof typeof DiffType];\n\nexport type DiffInformation = {\n value: string | DiffInformation[];\n lineNumber: number;\n type: DiffTypeValue;\n};\n\nexport type LineInformation = {\n left: DiffInformation;\n right: DiffInformation;\n};\n\ntype ComputedLineInformation = {\n lineInformation: LineInformation[];\n diffLines: number[];\n};\n\ntype SidedDiffInformation = {\n left: DiffInformation[];\n right: DiffInformation[];\n};\n\nexport type WordInformation = {\n value: string;\n type: DiffTypeValue;\n lineNumber: number;\n};\n\nexport type SideInformation = {\n type: DiffTypeValue;\n lineNumber: number;\n words: WordInformation[];\n};\n\nexport type DiffRow =\n | { kind: 'fold'; blockStart: number; lineCount: number; key: string }\n | { kind: 'line'; left: SideInformation; right: SideInformation; key: string };\n\nconst EXTRA_LINES = 3;\n\n// Sentinel blockStart for the region after the last diff; keeps distance checks\n// inert and lets `expandedBlocks` key on a real value.\nconst TAIL_BLOCK = Number.POSITIVE_INFINITY;\n\ntype Counters = {\n left: number;\n right: number;\n global: number;\n};\n\ntype DiffChunk = ReturnType<typeof diffLines>[number];\n\nconst splitLines = (value: string): string[] => {\n if (value === '') return [];\n return value.replace(/\\n$/, '').split('\\n');\n};\n\nconst computeWordDiff = (oldValue: string, newValue: string): SidedDiffInformation => {\n const result: SidedDiffInformation = { left: [], right: [] };\n\n diffWords(oldValue, newValue).forEach(({ added, removed, value }) => {\n if (added) {\n result.right.push({ type: DiffType.ADDED, value, lineNumber: 0 });\n return;\n }\n if (removed) {\n result.left.push({ type: DiffType.REMOVED, value, lineNumber: 0 });\n return;\n }\n const unchanged: DiffInformation = { type: DiffType.DEFAULT, value, lineNumber: 0 };\n result.right.push(unchanged);\n result.left.push(unchanged);\n });\n\n return result;\n};\n\n// Look ahead one chunk in the diff array and return the paired added-line string,\n// or null if there isn't one at the same lineIndex position.\nconst findPairedAddedLine = (\n diffArray: DiffChunk[],\n blockIndex: number,\n lineIndex: number,\n): string | null => {\n const nextBlock = diffArray[blockIndex + 1];\n if (!nextBlock?.added) return null;\n return splitLines(nextBlock.value)[lineIndex] ?? null;\n};\n\nconst buildUnchangedLine = (value: string, counters: Counters): LineInformation => {\n counters.left += 1;\n counters.right += 1;\n return {\n left: { type: DiffType.DEFAULT, value, lineNumber: counters.left },\n right: { type: DiffType.DEFAULT, value, lineNumber: counters.right },\n };\n};\n\nconst buildAddedLine = (value: string, counters: Counters): LineInformation => {\n counters.right += 1;\n return {\n left: {} as DiffInformation,\n right: { type: DiffType.ADDED, value, lineNumber: counters.right },\n };\n};\n\nconst buildRemovedLine = (value: string, counters: Counters): LineInformation => {\n counters.left += 1;\n return {\n left: { type: DiffType.REMOVED, value: value || ' ', lineNumber: counters.left },\n right: {} as DiffInformation,\n };\n};\n\n// Removed + paired added → one modification row with word-level diff.\n// Returns `isActualChange: false` for the quirky case where the two sides\n// resolve to the same string; the caller then omits it from diffLines.\nconst buildModifiedLine = (\n leftValue: string,\n rightValue: string,\n counters: Counters,\n): { line: LineInformation; isActualChange: boolean } => {\n counters.left += 1;\n counters.right += 1;\n const displayLeft = leftValue || ' ';\n\n if (displayLeft === rightValue) {\n return {\n line: {\n left: { type: DiffType.DEFAULT, value: rightValue, lineNumber: counters.left },\n right: { type: DiffType.DEFAULT, value: rightValue, lineNumber: counters.right },\n },\n isActualChange: false,\n };\n }\n\n const { left, right } = computeWordDiff(leftValue, rightValue);\n return {\n line: {\n left: { type: DiffType.REMOVED, value: left, lineNumber: counters.left },\n right: { type: DiffType.ADDED, value: right, lineNumber: counters.right },\n },\n isActualChange: true,\n };\n};\n\nexport const computeLineInformation = (\n oldString: string,\n newString: string,\n ignoreWhitespace?: boolean,\n): ComputedLineInformation => {\n const diffArray = diffLines(oldString.trimEnd(), newString.trimEnd(), { ignoreWhitespace });\n const counters: Counters = { left: 0, right: 0, global: 0 };\n const lineInformation: LineInformation[] = [];\n const diffLineSet = new Set<number>();\n const consumedAddedLines = new Set<string>();\n\n diffArray.forEach((block, blockIndex) => {\n splitLines(block.value).forEach((value, lineIndex) => {\n if (consumedAddedLines.has(`${blockIndex}-${lineIndex}`)) return;\n\n if (block.removed) {\n const paired = findPairedAddedLine(diffArray, blockIndex, lineIndex);\n if (paired !== null) {\n consumedAddedLines.add(`${blockIndex + 1}-${lineIndex}`);\n const { line, isActualChange } = buildModifiedLine(value, paired, counters);\n lineInformation.push(line);\n if (isActualChange) diffLineSet.add(counters.global);\n } else {\n lineInformation.push(buildRemovedLine(value, counters));\n diffLineSet.add(counters.global);\n }\n } else if (block.added) {\n lineInformation.push(buildAddedLine(value, counters));\n diffLineSet.add(counters.global);\n } else {\n lineInformation.push(buildUnchangedLine(value, counters));\n }\n\n counters.global += 1;\n });\n });\n\n return {\n lineInformation,\n diffLines: [...diffLineSet].sort((a, b) => a - b),\n };\n};\n\ntype ContextSegment = { kind: 'context'; lines: LineInformation[]; firstIndex: number };\ntype ChangeSegment = { kind: 'change'; lines: LineInformation[]; firstIndex: number };\ntype Segment = ContextSegment | ChangeSegment;\n\nconst toSegments = (\n lineInformation: LineInformation[],\n diffLineSet: ReadonlySet<number>,\n): Segment[] => {\n const segments: Segment[] = [];\n let current: Segment | null = null;\n\n lineInformation.forEach((line, index) => {\n const isChange = diffLineSet.has(index);\n if (current === null || (current.kind === 'change') !== isChange) {\n current = isChange\n ? { kind: 'change', lines: [line], firstIndex: index }\n : { kind: 'context', lines: [line], firstIndex: index };\n segments.push(current);\n } else {\n current.lines.push(line);\n }\n });\n\n return segments;\n};\n\nconst normalizeSide = (side: DiffInformation): SideInformation => {\n const raw = Array.isArray(side.value)\n ? side.value\n : [{ value: side.value, type: DiffType.DEFAULT, lineNumber: 0 }];\n\n return {\n type: side.type,\n lineNumber: side.lineNumber,\n words: raw.filter((w): w is WordInformation => typeof w.value === 'string'),\n };\n};\n\nconst renderLineRow = (line: LineInformation): DiffRow => ({\n kind: 'line',\n left: normalizeSide(line.left),\n right: normalizeSide(line.right),\n key: `${line.left.lineNumber}-${line.right.lineNumber}`,\n});\n\nconst renderContextSegment = (\n segment: ContextSegment,\n nextChangeIndex: number,\n hasPrevChange: boolean,\n hasNextChange: boolean,\n expanded: ReadonlySet<number>,\n): DiffRow[] => {\n if (expanded.has(nextChangeIndex)) {\n return segment.lines.map(renderLineRow);\n }\n\n const total = segment.lines.length;\n const trail = hasPrevChange ? Math.min(EXTRA_LINES, total) : 0;\n let lead = hasNextChange ? Math.min(EXTRA_LINES, total - trail) : 0;\n let foldCount = total - trail - lead;\n\n // Quirk from the original: a single trailing unchanged line is always rendered\n // (no one-line fold at the tail). Absorb it into the lead slice.\n if (!hasNextChange && foldCount === 1) {\n foldCount = 0;\n lead = 1;\n }\n\n const rows: DiffRow[] = [];\n if (trail > 0) {\n rows.push(...segment.lines.slice(0, trail).map(renderLineRow));\n }\n if (foldCount > 0) {\n rows.push({\n kind: 'fold',\n blockStart: nextChangeIndex,\n lineCount: foldCount,\n key: hasNextChange\n ? `fold-${nextChangeIndex}`\n : `fold-tail-${segment.firstIndex + total - 1}`,\n });\n }\n if (lead > 0) {\n rows.push(...segment.lines.slice(trail + foldCount).map(renderLineRow));\n }\n return rows;\n};\n\nexport const computeDiffRows = (\n lineInformation: LineInformation[],\n diffLines: number[],\n expandedBlocks: number[],\n): DiffRow[] => {\n const diffLineSet = new Set(diffLines);\n const expanded = new Set(expandedBlocks);\n const segments = toSegments(lineInformation, diffLineSet);\n\n const rows: DiffRow[] = [];\n let hasPrevChange = false;\n\n segments.forEach((segment, i) => {\n if (segment.kind === 'change') {\n rows.push(...segment.lines.map(renderLineRow));\n hasPrevChange = true;\n return;\n }\n const nextChange = segments.slice(i + 1).find((s) => s.kind === 'change');\n const nextStart = nextChange?.firstIndex ?? TAIL_BLOCK;\n rows.push(...renderContextSegment(segment, nextStart, hasPrevChange, !!nextChange, expanded));\n });\n\n return rows;\n};\n","import { useState } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { DiffViewMark } from './DiffViewMark';\nimport { DiffViewTd } from './DiffViewTd';\nimport { DiffViewTh } from './DiffViewTh';\nimport { computeDiffRows, computeLineInformation } from './util';\n\ntype Props = {\n oldValue: string;\n newValue: string;\n ignoreWhitespace?: boolean;\n className?: string;\n\n leftTitleGutter?: ReactNode;\n leftTitle: ReactNode;\n rightTitle: ReactNode;\n rightTitleGutter?: ReactNode;\n};\n\nexport const DiffView = ({\n leftTitle,\n leftTitleGutter,\n rightTitle,\n rightTitleGutter,\n oldValue,\n newValue,\n ignoreWhitespace,\n className,\n}: Props) => {\n const [expandedBlocks, setExpandedBlocks] = useState<number[]>([]);\n const { lineInformation, diffLines } = computeLineInformation(\n oldValue,\n newValue,\n ignoreWhitespace,\n );\n const rows = computeDiffRows(lineInformation, diffLines, expandedBlocks);\n\n const handleExpand = (blockNumber: number) => {\n setExpandedBlocks((curr) => [...curr, blockNumber]);\n };\n\n return (\n <div\n className={cn(\n 'tailwindcss-preflight',\n 'tw-bg-neutral-100',\n 'tw-border',\n 'tw-rounded-2xl',\n 'tw-overflow-auto',\n className,\n )}\n >\n <table className=\"tw-w-full tw-table-fixed tw-bg-neutral-50\">\n <thead className=\"tw-sticky tw-top-0 tw-z-10 tw-shadow-sm\">\n <tr>\n <DiffViewTh variant=\"gutter\">{leftTitleGutter}</DiffViewTh>\n <DiffViewTh>{leftTitle}</DiffViewTh>\n <DiffViewTh variant=\"gutter\">{rightTitleGutter}</DiffViewTh>\n <DiffViewTh>{rightTitle}</DiffViewTh>\n </tr>\n </thead>\n\n <tbody>\n {rows.map((row) => {\n if (row.kind === 'fold')\n return (\n <tr key={row.key}>\n <DiffViewTd colSpan={4}>\n <button\n type=\"button\"\n onClick={() => handleExpand(row.blockStart)}\n className={cn(\n 'tw-w-full',\n 'tw-text-center',\n 'tw-bg-secondary-100',\n 'hover:tw-bg-secondary-200',\n 'tw-underline',\n 'tw-p-2',\n )}\n >\n Expand {row.lineCount} lines ...\n </button>\n </DiffViewTd>\n </tr>\n );\n\n return (\n <tr key={row.key}>\n <DiffViewTd variant=\"gutter\" diff={row.left.type}>\n {row.left.lineNumber}\n </DiffViewTd>\n\n <DiffViewTd variant=\"code\" diff={row.left.type}>\n {row.left.words.map((val, index) => {\n if (val.type === 'default') return val.value;\n return (\n // oxlint-disable-next-line react/no-array-index-key\n <DiffViewMark key={`${val.value}-${val.type}-${index}`} diff={val.type}>\n {val.value}\n </DiffViewMark>\n );\n })}\n </DiffViewTd>\n\n <DiffViewTd variant=\"gutter\" diff={row.right.type}>\n {row.right.lineNumber}\n </DiffViewTd>\n\n <DiffViewTd variant=\"code\" diff={row.right.type}>\n {row.right.words.map((val, index) => {\n if (val.type === 'default') return val.value;\n\n return (\n // oxlint-disable-next-line react/no-array-index-key\n <DiffViewMark key={`${val.value}-${val.type}-${index}`} diff={val.type}>\n {val.value}\n </DiffViewMark>\n );\n })}\n </DiffViewTd>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n );\n};\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { InputGroup } from '../../components/InputGroup';\n\ntype InputGroupProps = Pick<\n ComponentProps<typeof InputGroup>,\n 'variant' | 'sizing' | 'focusVariant' | 'state'\n>;\n\ntype TextareaNativeProps = Omit<\n ComponentProps<typeof InputGroup.TextArea>,\n 'value' | 'defaultValue' | 'rows' | 'maxRows'\n>;\n\ntype TextareaOwnProps = {\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string) => void;\n onValueBlur?: (value: string) => void;\n maxRows?: number | 'unlimited';\n disableResize?: boolean;\n containerClassName?: string;\n};\n\ntype Props = InputGroupProps & TextareaNativeProps & TextareaOwnProps;\n\nexport const Textarea = ({\n ref,\n containerClassName,\n\n // group props\n state = 'default',\n variant = 'primary',\n sizing,\n focusVariant,\n\n ...rest\n}: Props & { ref?: Ref<ElementRef<'textarea'>> }) => {\n return (\n <InputGroup\n state={state}\n sizing={sizing}\n focusVariant={focusVariant}\n variant={variant}\n className={containerClassName}\n >\n <InputGroup.TextArea {...rest} ref={ref} />\n </InputGroup>\n );\n};\n","import { type ComponentProps, Fragment, type ReactNode } from 'react';\nimport { Combobox as BaseCombobox } from '@base-ui/react/combobox';\n\nimport { Combobox } from '../../components/Combobox';\nimport type { Group, LabeledItem } from '../../components/Combobox/types';\nimport {\n defaultGroupToLabel,\n defaultItemToDisabled,\n defaultItemToIcon,\n defaultItemToLabel,\n isGroupItem,\n isLabeledItem,\n} from '../../components/Combobox/utils';\nimport type { Icon } from '../../components/Icon';\nimport { InputGroup } from '../../components/InputGroup';\n\ntype ComboboxProps<Value> = BaseCombobox.Root.Props<Value, true>;\ntype ComboboxInputProps = ComponentProps<typeof Combobox.Input>;\ntype ComboboxInputGroupProps = ComponentProps<typeof Combobox.InputGroup>;\ntype ComboboxItemProps = ComponentProps<typeof Combobox.Item>;\ntype ComboboxChipsProps = ComponentProps<typeof Combobox.Chips>;\n\ntype IconName = ComponentProps<typeof Icon>['icon'];\ntype Indicator = NonNullable<ComboboxItemProps['indicator']>;\n\ntype Props<Value, GroupShape extends Group<Value> = Group<Value>> = Pick<\n ComboboxInputProps,\n 'placeholder' | 'id'\n> &\n Pick<ComboboxInputGroupProps, 'variant' | 'focusVariant' | 'sizing' | 'state' | 'className'> &\n Pick<\n ComboboxProps<Value>,\n | 'disabled'\n | 'inputRef'\n | 'value'\n | 'defaultValue'\n | 'onValueChange'\n | 'itemToStringLabel'\n | 'itemToStringValue'\n | 'filter'\n > &\n Pick<ComboboxChipsProps, 'itemToChipLabel' | 'itemToChipColor' | 'maxVisible'> & {\n items?: readonly (Value | GroupShape)[];\n\n // root specific\n allowClear?: boolean;\n allowSelectAll?: boolean;\n empty?: ReactNode;\n indicator?: Indicator;\n\n // item specific\n itemToLabel?: (item: Value) => ReactNode;\n itemToIcon?: (item: Value) => IconName | undefined;\n itemToDisabled?: (item: Value) => boolean;\n\n // gropu specific\n groupToLabel?: (group: GroupShape) => ReactNode;\n };\n\nconst selectAllItem: LabeledItem = {\n value: '__select_all__',\n label: 'Select All',\n};\n\nconst isSelectAllItem = <Value,>(item: Value) =>\n isLabeledItem(item) && item.value === '__select_all__';\n\nexport const MultiCombobox = <Value, GroupShape extends Group<Value> = Group<Value>>({\n // root props\n items: _itemsProp,\n value: _valueProp,\n defaultValue,\n onValueChange,\n itemToStringLabel,\n itemToStringValue,\n disabled,\n filter: filterProp,\n inputRef,\n\n // input props\n variant,\n sizing,\n focusVariant,\n state,\n placeholder,\n allowClear,\n id,\n className,\n\n // own props\n allowSelectAll = false,\n empty = 'No items',\n indicator,\n\n // own item props\n itemToDisabled = defaultItemToDisabled,\n itemToLabel = defaultItemToLabel,\n itemToIcon = defaultItemToIcon,\n groupToLabel = defaultGroupToLabel,\n itemToChipLabel,\n itemToChipColor,\n maxVisible = 3,\n}: Props<Value, GroupShape>) => {\n const itemsProp = _itemsProp ?? [];\n const valueProp = _valueProp ?? [];\n const contentVariant = variant === 'argo' ? 'argo' : 'default';\n const chipVariant = variant === 'argo' ? 'pill' : 'default';\n\n const allFlatItems = itemsProp.flatMap((item) => (isGroupItem(item) ? item.items : item));\n const isAllSelected = allFlatItems.length === (valueProp?.length ?? 0);\n\n const defaultFilter = BaseCombobox.useFilter({\n multiple: true,\n value: valueProp,\n });\n\n const itemsWithSelectAllItem = (() => {\n if (!allowSelectAll) return itemsProp;\n return [selectAllItem, ...itemsProp];\n })();\n\n const filter = (item: Value, query: string, itemToString?: (value: Value) => string) => {\n // keep select allwasy visible\n if (isSelectAllItem(item)) return true;\n\n if (filterProp) return filterProp(item, query, itemToString);\n return defaultFilter.contains(item, query, itemToString);\n };\n\n const value = (() => {\n if (!allowSelectAll) return valueProp;\n return isAllSelected ? [...valueProp, selectAllItem as Value] : valueProp;\n })();\n\n const handleValueChange: ComboboxProps<Value>['onValueChange'] = (next, event) => {\n if (!onValueChange) return;\n\n const hasSelectAll = next.some((item) => isSelectAllItem(item));\n const newValue = (() => {\n if (!allowSelectAll) return next;\n if (!hasSelectAll) return isAllSelected ? [] : next;\n return isAllSelected ? next.filter((item) => !isSelectAllItem(item)) : allFlatItems;\n })();\n\n onValueChange(newValue, event);\n };\n\n const renderItem = (item: Value) => {\n return (\n <Combobox.Item\n value={item}\n indicator={indicator}\n icon={itemToIcon(item)}\n disabled={itemToDisabled(item)}\n >\n {itemToLabel(item)}\n </Combobox.Item>\n );\n };\n\n return (\n <Combobox.Root<Value, true>\n multiple\n items={itemsWithSelectAllItem}\n value={value}\n defaultValue={defaultValue}\n filter={filter}\n onValueChange={handleValueChange}\n itemToStringLabel={itemToStringLabel}\n itemToStringValue={itemToStringValue}\n disabled={disabled}\n inputRef={inputRef}\n >\n <BaseCombobox.Chips render={<Fragment />}>\n <Combobox.InputGroup\n variant={variant}\n sizing={sizing}\n state={state}\n focusVariant={focusVariant}\n className={className}\n >\n <div className=\"tw-flex tw-min-w-0 tw-flex-1 tw-flex-wrap tw-items-center tw-gap-1.5 tw-px-4 tw-py-1.5\">\n <Combobox.Chips<Value>\n maxVisible={maxVisible}\n variant={chipVariant}\n itemToChipLabel={itemToChipLabel ?? itemToLabel}\n itemToChipColor={itemToChipColor}\n />\n <div className=\"tw-flex tw-flex-1 tw-items-center tw-gap-1\">\n <Combobox.Input\n id={id}\n placeholder={placeholder}\n disabled={disabled}\n className=\"tw-w-auto tw-min-w-[120px] tw-flex-1\"\n />\n {allowClear && (\n <InputGroup.Button asChild icon=\"xmark\" aria-label=\"Clear\" disabled={disabled}>\n <BaseCombobox.Clear />\n </InputGroup.Button>\n )}\n <InputGroup.Button\n disabled={disabled}\n asChild\n icon=\"chevron-down\"\n aria-label=\"Open combobox\"\n >\n <BaseCombobox.Trigger />\n </InputGroup.Button>\n </div>\n </div>\n </Combobox.InputGroup>\n </BaseCombobox.Chips>\n <Combobox.Content variant={contentVariant}>\n <Combobox.Empty>{empty}</Combobox.Empty>\n <Combobox.List>\n {(itemOrGroup: Value | GroupShape) => {\n if (isSelectAllItem(itemOrGroup)) {\n return (\n <Combobox.Item value={itemOrGroup} indicator=\"checkbox\">\n Select All\n </Combobox.Item>\n );\n }\n\n if (isGroupItem(itemOrGroup)) {\n const groupLabel = groupToLabel(itemOrGroup);\n return (\n <Combobox.Group items={itemOrGroup.items}>\n {groupLabel && <Combobox.GroupLabel>{groupLabel}</Combobox.GroupLabel>}\n <Combobox.GroupList>{renderItem}</Combobox.GroupList>\n </Combobox.Group>\n );\n }\n\n return renderItem(itemOrGroup);\n }}\n </Combobox.List>\n </Combobox.Content>\n </Combobox.Root>\n );\n};\n","import { createContext, use } from 'react';\n\nimport type { FormGroupContext } from './types';\n\nconst FormGroupContext = createContext<FormGroupContext>({\n state: 'default',\n});\n\nexport const FormGroupProvider = FormGroupContext;\n\nexport const useFormGroupContext = () => use(FormGroupContext);\n","import type { ComponentProps } from 'react';\n\nconst HEX_CHARSET = /^[0-9a-fA-F]+$/;\n// `#` + 3, 4, 6, or 8 hex digits — every length CSS accepts as a hex color.\nconst COMPLETE_HEX_PATTERN = /^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/;\n// Longest hex body CSS accepts (`#rrggbbaa` without the hash).\nconst MAX_HEX_BODY_LENGTH = 8;\n// Native <input type=\"color\"> default when fed anything unparseable.\nconst PICKER_FALLBACK = '#000000';\n\nconst extractHexBody = (value: unknown): string | null => {\n if (typeof value !== 'string') return null;\n const trimmed = value.trim();\n if (trimmed === '') return null;\n return trimmed.startsWith('#') ? trimmed.slice(1) : trimmed;\n};\n\nexport const isCompleteHexColor = (value: string): boolean => COMPLETE_HEX_PATTERN.test(value);\n\n// @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/showPicker\nexport const showPicker = (input: HTMLInputElement) => {\n const isShowPickerSupported = 'showPicker' in HTMLInputElement.prototype;\n isShowPickerSupported ? input.showPicker() : input.click();\n};\n\n/**\n * Coerces free-form text into a partial hex color for the visible text\n * input. Allows up to 8 hex digits to support `#rrggbbaa` (RGBA / alpha).\n *\n * Behaviour:\n * - empty / null / undefined / non-string → `''`\n * - trims surrounding whitespace\n * - prepends `#` when the user types raw hex without it\n * - keeps only the leading run of valid hex digits, dropping the rest\n * - caps total length at `# + 8` hex digits\n * - returns `''` when no valid hex digits remain (e.g. bare `#`, `zz`) so\n * the input doesn't sit on a lonely `#`\n *\n * Note: the result may be a *prefix* (e.g. `#a`, `#ab`) that is not yet a\n * valid CSS color — gate any rendering on `isCompleteHexColor`.\n */\nexport const coerceHexInputValue = (value?: string | null): string => {\n const body = extractHexBody(value);\n if (body === null) return '';\n const [validBody] = body.match(/^[0-9a-fA-F]+/) ?? [];\n if (!validBody) return '';\n return `#${validBody.slice(0, MAX_HEX_BODY_LENGTH)}`;\n};\n\n/**\n * Coerces any value into the strict lowercase `#rrggbb` form required by the\n * native `<input type=\"color\">`. Anything the picker can't render is\n * collapsed to `#000000`.\n *\n * - 3-digit shorthand (`#abc`) → expanded to 6 digits (`#aabbcc`)\n * - 4/8-digit RGBA → alpha channel is dropped\n * - invalid characters, wrong length, or non-string types → `#000000`\n *\n * The native picker silently lowercases its value; we lowercase here too so\n * controlled consumers see the same string round-trip.\n */\nexport const coerceColorPickerValue = (value: ComponentProps<'input'>['value'] | null) => {\n const body = extractHexBody(value);\n if (body === null || !HEX_CHARSET.test(body)) return PICKER_FALLBACK;\n\n if (body.length === 3 || body.length === 4) {\n const [r, g, b] = body;\n return `#${r}${r}${g}${g}${b}${b}`.toLowerCase();\n }\n if (body.length === 6 || body.length === 8) {\n return `#${body.slice(0, 6).toLowerCase()}`;\n }\n return PICKER_FALLBACK;\n};\n","import { type ComponentProps, type ElementRef, useRef } from 'react';\n\nimport { InputGroup } from '../../components/InputGroup';\n\nimport { coerceColorPickerValue, showPicker } from './utils';\n\ntype Props = Omit<ComponentProps<'input'>, 'type'>;\n\nexport const ColorPicker = ({ value, disabled, readOnly, ...props }: Props) => {\n const pickerRef = useRef<ElementRef<'input'>>(null);\n\n const handleOpenPicker = () => {\n if (!pickerRef.current) return;\n showPicker(pickerRef.current);\n };\n\n return (\n <div className=\"tw-relative\">\n <input\n {...props}\n ref={pickerRef}\n type=\"color\"\n value={coerceColorPickerValue(value)}\n tabIndex={-1}\n aria-hidden\n className=\"tw-pointer-events-none tw-absolute tw-left-0 tw-top-full tw-size-0 tw-opacity-0\"\n disabled={disabled}\n readOnly={readOnly}\n />\n <InputGroup.Button\n onMouseDown={(event) => event.preventDefault()}\n disabled={disabled || readOnly}\n icon=\"eye-dropper\"\n onClick={handleOpenPicker}\n aria-label=\"Pick color\"\n />\n </div>\n );\n};\n","import { useRef, useState } from 'react';\nimport type {\n ChangeEventHandler,\n ComponentProps,\n ElementRef,\n FocusEventHandler,\n MouseEventHandler,\n Ref,\n} from 'react';\n\nimport { InputGroup } from '../../components/InputGroup';\nimport { cn, createChangeInputEvent, mergeRefs } from '../../utils';\n\nimport { ColorPicker } from './ColorPicker';\nimport { coerceHexInputValue, isCompleteHexColor } from './utils';\n\ntype InputGroupProps = Pick<\n ComponentProps<typeof InputGroup>,\n 'variant' | 'focusVariant' | 'state' | 'sizing'\n>;\n\ntype InputGroupInputProps = Omit<ComponentProps<typeof InputGroup.Input>, 'value' | 'defaultValue'>;\n\ntype Props = InputGroupProps &\n InputGroupInputProps & {\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string) => void;\n onValueBlur?: (value: string) => void;\n allowClear?: boolean;\n };\n\nexport const ColorInput = ({\n ref,\n\n // group props\n state,\n variant,\n focusVariant,\n sizing,\n className,\n\n // own props\n value: valueProp,\n onValueChange,\n onValueBlur,\n onChange,\n onBlur,\n defaultValue,\n allowClear = false,\n\n // input props\n disabled,\n readOnly,\n ...restInputProps\n}: Props & { ref?: Ref<ElementRef<'input'>> }) => {\n const inputRef = useRef<ElementRef<'input'>>(null);\n\n const [internalValue, setInternalValue] = useState(defaultValue ?? '');\n const isControlled = valueProp !== undefined;\n\n const value = isControlled ? (valueProp ?? '') : internalValue;\n const setValue = (nextValue: string) => {\n if (!isControlled) setInternalValue(nextValue);\n onValueChange?.(nextValue);\n };\n\n const canClear = allowClear && !!value && !disabled && !readOnly;\n const swatchColor = coerceHexInputValue(value);\n const isValidSwatch = isCompleteHexColor(swatchColor);\n\n // Preserve raw text while the user is typing — sanitise on blur.\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n setValue(event.target.value);\n onChange?.(event);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n const newValue = event.target.value;\n const sanitizedNewValue = coerceHexInputValue(newValue);\n\n if (sanitizedNewValue !== newValue) {\n // In controlled mode, let the parent decide whether to apply the\n // sanitised value via `onValueChange` — don't fight its `value` prop.\n if (!isControlled) event.target.value = sanitizedNewValue;\n setValue(sanitizedNewValue);\n }\n\n onValueBlur?.(sanitizedNewValue);\n onBlur?.(event);\n };\n\n const handlePickerChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n setValue(coerceHexInputValue(event.target.value));\n onChange?.(event);\n };\n\n const handleClear: MouseEventHandler<HTMLButtonElement> = () => {\n if (!inputRef.current) return;\n inputRef.current.value = '';\n setValue('');\n onChange?.(createChangeInputEvent(inputRef.current));\n };\n\n return (\n <InputGroup\n state={state}\n variant={variant}\n sizing={sizing}\n focusVariant={focusVariant}\n className={className}\n >\n <InputGroup.Addon\n align=\"inline-start\"\n className={cn(\n { '-tw-ml-7 tw-opacity-0': !value },\n 'tw-transition-[opacity,margin]',\n 'tw-ease-linear',\n 'tw-duration-200',\n )}\n >\n <div\n style={isValidSwatch ? { background: swatchColor } : undefined}\n className={cn(\n 'tw-size-5',\n 'tw-shrink-0',\n 'tw-rounded-sm',\n 'tw-border',\n 'tw-border-solid',\n 'tw-border-neutral-300',\n {\n 'tw-bg-[linear-gradient(to_top_right,transparent_calc(50%_-_1px),theme(colors.red.300)_calc(50%_-_1px),theme(colors.red.300)_calc(50%_+_1px),transparent_calc(50%_+_1px))]':\n !isValidSwatch,\n },\n )}\n />\n </InputGroup.Addon>\n\n <InputGroup.Input\n {...restInputProps}\n type=\"text\"\n ref={mergeRefs(ref ?? null, inputRef)}\n value={value}\n onChange={handleChange}\n onBlur={handleBlur}\n disabled={disabled}\n readOnly={readOnly}\n />\n\n <InputGroup.Addon align=\"inline-end\">\n {canClear && (\n <InputGroup.Button\n icon=\"xmark\"\n // prevents input focus stealing\n onMouseDown={(event) => event.preventDefault()}\n onClick={handleClear}\n aria-label=\"Clear color\"\n />\n )}\n <ColorPicker\n disabled={disabled}\n readOnly={readOnly}\n value={value}\n onChange={handlePickerChange}\n />\n </InputGroup.Addon>\n </InputGroup>\n );\n};\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { ColorInput } from '../../blocks/ColorInput';\n\nimport { useFormGroupContext } from './context';\n\ntype Props = Omit<ComponentProps<typeof ColorInput>, 'state'>;\n\nexport const FormGroupColorInput = ({\n ref,\n ...props\n}: Props & { ref?: Ref<ElementRef<'input'>> }) => {\n const { state } = useFormGroupContext();\n return <ColorInput state={state} {...props} ref={ref} />;\n};\n","import type { ComponentProps } from 'react';\n\nimport { HelpBlock } from '../HelpBlock';\n\nimport { useFormGroupContext } from './context';\n\ntype Props = Omit<ComponentProps<typeof HelpBlock>, 'testId' | 'state'>;\n\nexport const FormGroupHelp = ({ children, ...rest }: Props) => {\n const formGroupContext = useFormGroupContext();\n\n return (\n <HelpBlock state={formGroupContext.state} {...rest}>\n {children}\n </HelpBlock>\n );\n};\n","import type {\n ChangeEvent,\n ChangeEventHandler,\n ComponentProps,\n ElementRef,\n FocusEventHandler,\n ReactNode,\n Ref,\n} from 'react';\n\nimport { InputGroup } from '../../components/InputGroup';\n\ntype InputGroupProps = Pick<\n ComponentProps<typeof InputGroup>,\n 'variant' | 'focusVariant' | 'state' | 'sizing'\n>;\n\ntype InputGroupInputProps = Omit<\n ComponentProps<typeof InputGroup.Input>,\n 'value' | 'defaultValue' | 'type' | 'prefix'\n>;\n\ntype Props = InputGroupProps &\n InputGroupInputProps & {\n value?: number | null;\n defaultValue?: number | null;\n onValueChange?: (value: number | null) => void;\n onValueBlur?: (value: number | null) => void;\n prefix?: ReactNode;\n suffix?: ReactNode;\n };\n\nconst toNumberOrNull = (event: ChangeEvent<HTMLInputElement>) =>\n Number.isNaN(event.target.valueAsNumber) ? null : event.target.valueAsNumber;\n\nexport const NumberInput = ({\n ref,\n state,\n variant,\n focusVariant,\n sizing,\n className,\n\n value,\n defaultValue,\n onValueChange,\n onValueBlur,\n onChange,\n onBlur,\n\n prefix,\n suffix,\n\n ...inputProps\n}: Props & { ref?: Ref<ElementRef<'input'>> }) => {\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n onValueChange?.(toNumberOrNull(event));\n onChange?.(event);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n onValueBlur?.(toNumberOrNull(event));\n onBlur?.(event);\n };\n\n const isControlled = value !== undefined;\n const valueProp = isControlled ? { value: value ?? '' } : { defaultValue: defaultValue ?? '' };\n\n return (\n <InputGroup\n state={state}\n variant={variant}\n sizing={sizing}\n focusVariant={focusVariant}\n className={className}\n >\n {prefix && <InputGroup.Addon align=\"inline-start\">{prefix}</InputGroup.Addon>}\n <InputGroup.Input\n {...inputProps}\n {...valueProp}\n ref={ref}\n type=\"number\"\n onChange={handleChange}\n onBlur={handleBlur}\n />\n {suffix && <InputGroup.Addon align=\"inline-end\">{suffix}</InputGroup.Addon>}\n </InputGroup>\n );\n};\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { NumberInput } from '../../blocks/NumberInput';\n\nimport { useFormGroupContext } from './context';\n\ntype Props = Omit<ComponentProps<typeof NumberInput>, 'state'>;\n\nexport const FormGroupNumberInput = ({\n ref,\n ...props\n}: Props & { ref?: Ref<ElementRef<'input'>> }) => {\n const { state } = useFormGroupContext();\n return <NumberInput {...props} ref={ref} state={state} />;\n};\n","import type { ComponentProps } from 'react';\n\nimport { Textarea } from '../../blocks/Textarea';\n\nimport { useFormGroupContext } from './context';\n\ntype Props = Omit<ComponentProps<typeof Textarea>, 'state'>;\n\nexport const FormGroupTextarea = (props: Props) => {\n const { state } = useFormGroupContext();\n return <Textarea state={state} {...props} />;\n};\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { TextInput } from '../Input';\n\nimport { useFormGroupContext } from './context';\n\ntype Props = Omit<ComponentProps<typeof TextInput>, 'state'>;\n\nexport const FormGroupTextInput = ({\n ref,\n ...props\n}: Props & { ref?: Ref<ElementRef<'input'>> }) => {\n const { state } = useFormGroupContext();\n return <TextInput state={state} {...props} ref={ref} />;\n};\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { FormGroupProvider } from './context';\nimport { FormGroupColorInput } from './FormGroupColorInput';\nimport { FormGroupHelp } from './FormGroupHelp';\nimport { FormGroupNumberInput } from './FormGroupNumberInput';\nimport { FormGroupTextarea } from './FormGroupTextarea';\nimport { FormGroupTextInput } from './FormGroupTextInput';\nimport type { FormGroupContext } from './types';\n\ntype FormGroupProps = {\n children: ReactNode;\n className?: string;\n testId?: string;\n} & FormGroupContext;\n\nexport const FormGroup = ({ className, children, state, testId }: FormGroupProps) => {\n return (\n <FormGroupProvider value={{ state }}>\n <div data-testid={testId} className={cn('tw-flex tw-flex-col tw-gap-1', className)}>\n {children}\n </div>\n </FormGroupProvider>\n );\n};\n\nFormGroup.Help = FormGroupHelp;\nFormGroup.TextInput = FormGroupTextInput;\nFormGroup.NumberInput = FormGroupNumberInput;\nFormGroup.ColorInput = FormGroupColorInput;\nFormGroup.Textarea = FormGroupTextarea;\n","import type { ComponentProps, ElementRef, MouseEventHandler, Ref } from 'react';\n\nimport { cn } from '../utils';\n\ntype Props = ComponentProps<'a'>;\n\nexport const Link = ({\n ref,\n children,\n target = '_blank',\n rel = 'noopener noreferrer',\n onClick,\n className,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'a'>> }) => {\n const handleOnClick: MouseEventHandler<HTMLAnchorElement> = (event) => {\n event.stopPropagation();\n onClick?.(event);\n };\n\n return (\n // oxlint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n <a\n {...rest}\n ref={ref}\n target={target}\n rel={rel}\n onClick={handleOnClick}\n className={cn(\n 'tw-text-secondary-500 tw-underline hover:tw-text-secondary-600 hover:tw-no-underline',\n className,\n )}\n >\n {children}\n </a>\n );\n};\n","import type { ReactNode } from 'react';\nimport * as RadixTabs from '@radix-ui/react-tabs';\n\nimport { cn } from '../utils';\n\nimport { Button } from './Button';\nimport { ScrollArea } from './ScrollArea';\n\nconst TRIGGER_COMMON = {\n main: 'tw-flex tw-justify-center tw-items-center tw-gap-1.5 tw-bg-transparent tw-group/tab-trigger tw-shrink-0',\n border: 'tw-border-0 tw-border-b-[3px] tw-border-solid tw-border-transparent',\n spacing: 'tw-pt-2.5 tw-pb-5 tw-px-0 tw-m-0',\n font: 'tw-font-medium tw-leading-5 tw-text-neutral-400 tw-text-base',\n active: 'data-[state=active]:tw-text-secondary-500 data-[state=active]:tw-border-secondary-500',\n disabled:\n 'data-[disabled]:tw-text-neutral-400 data-[disabled]:tw-opacity-50 data-[disabled]:tw-cursor-not-allowed',\n hover:\n 'hover:enabled:tw-text-secondary-500 hover:enabled:tw-border-secondary-500 hover:enabled:tw-cursor-pointer',\n};\n\ntype Trigger<T extends string> = {\n value: T;\n title: ReactNode;\n onClose?: (value: T) => void;\n} & Omit<RadixTabs.TabsTriggerProps, 'title'>;\n\nconst Tabs = <T extends string>({\n triggers,\n compact = false,\n children,\n defaultValue,\n onValueChange,\n rootClassName,\n listClassName,\n triggerClassName,\n ...rest\n}: {\n triggers: Trigger<T>[];\n compact?: boolean;\n children: ReactNode;\n defaultValue?: string;\n onValueChange?: (value: T) => void;\n rootClassName?: string;\n listClassName?: string;\n triggerClassName?: string;\n} & Omit<RadixTabs.TabsProps, 'onValueChange'>) => {\n const triggerClasses = cn(\n ...Object.values(TRIGGER_COMMON),\n { 'tw-text-sm tw-pb-4': compact },\n triggerClassName,\n );\n\n return (\n <RadixTabs.Root\n {...rest}\n data-slot=\"tabs-root\"\n className={cn('tw-flex tw-flex-col tw-gap-6', rootClassName)}\n defaultValue={defaultValue || triggers[0]?.value}\n onValueChange={onValueChange as (value: string) => void}\n >\n <ScrollArea\n orientation=\"horizontal\"\n className=\"tw-shrink-0 tw-border-0 tw-border-b tw-border-solid tw-border-neutral-200\"\n >\n <RadixTabs.List className={cn('tw-flex tw-gap-8 tw-shrink-0', listClassName)}>\n {triggers.map(({ value, title, onClose, ...rest }) => {\n if (onClose) {\n return (\n <RadixTabs.Trigger\n asChild\n key={value}\n value={value}\n className={triggerClasses}\n {...rest}\n >\n <div>\n {title}\n <Button\n icon=\"xmark\"\n variant=\"inline\"\n size=\"icon-3xs\"\n disabled={rest.disabled}\n onClick={() => onClose(value)}\n // prevent focusing the tab when clicking the close button, keep focused other tab if any\n onMouseDown={(e) => e.preventDefault()}\n className=\"!tw-size-8 tw-opacity-0 tw-duration-200 group-hover/tab-trigger:tw-opacity-100\"\n aria-label=\"Close tab\"\n />\n </div>\n </RadixTabs.Trigger>\n );\n }\n\n return (\n <RadixTabs.Trigger key={value} value={value} className={triggerClasses} {...rest}>\n {title}\n </RadixTabs.Trigger>\n );\n })}\n </RadixTabs.List>\n </ScrollArea>\n {children}\n </RadixTabs.Root>\n );\n};\n\nconst TabsContent = (props: RadixTabs.TabsContentProps) => (\n <RadixTabs.Content tabIndex={-1} {...props} />\n);\n\nexport { Tabs, TabsContent, type Trigger };\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'> & {\n asChild?: boolean;\n};\n\nexport const AlertAction = ({\n ref,\n className,\n asChild = false,\n ...props\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => {\n const Comp = asChild ? Slot : 'div';\n return (\n <Comp\n {...props}\n ref={ref}\n className={cn(\n 'tw-col-start-3',\n 'tw-row-start-1',\n 'tw-self-start',\n 'tw-flex',\n 'tw-gap-2',\n className,\n )}\n />\n );\n};\n","import { cn } from '../../utils';\nimport { Icon } from '../Icon';\nimport { Tooltip } from '../Tooltip';\n\ntype Props = {\n open: boolean;\n};\n\nexport const AlertCollapsibleIcon = ({ open }: Props) => (\n <Tooltip placement=\"top\" tooltip={open ? 'Collapse alert' : 'Expand alert'} triggerAsChild>\n <Icon\n icon=\"chevron-down\"\n className={cn(\n 'tw-mt-px',\n 'tw-size-4',\n 'tw-text-neutral-400',\n 'group-data-[state=open]/alert:tw-rotate-180',\n\n 'group-data-[variant=info]/alert:group-hover:tw-text-secondary-600',\n 'group-data-[variant=warning]/alert:group-hover:tw-text-warning-600',\n 'group-data-[variant=error]/alert:group-hover:tw-text-error-600',\n 'group-data-[variant=success]/alert:group-hover:tw-text-primary-600',\n )}\n />\n </Tooltip>\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const AlertDescription = ({\n ref,\n children,\n className,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => (\n <div\n {...rest}\n ref={ref}\n className={cn(\n 'tw-col-start-2',\n 'group-has-[[data-slot=alert-title]]/alert:tw-col-end-[-1]',\n\n // spacer before description when a title exists (pseudo-element so it animates with Collapsible)\n 'group-has-[[data-slot=alert-title]]/alert:before:tw-block',\n 'group-has-[[data-slot=alert-title]]/alert:before:tw-h-4',\n \"group-has-[[data-slot=alert-title]]/alert:before:tw-content-['']\",\n\n 'tw-break-anywhere',\n className,\n )}\n >\n {children}\n </div>\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\n\nimport type { Variant } from './AlertRoot';\n\nconst ICONS: Record<Variant, ComponentProps<typeof Icon>['icon']> = {\n info: 'circle-info',\n warning: 'triangle-exclamation',\n error: 'triangle-exclamation',\n success: 'circle-check',\n};\n\ntype Props = {\n variant: Variant;\n icon?: ComponentProps<typeof Icon>['icon'];\n} & Omit<ComponentProps<typeof Icon>, 'icon'>;\n\nexport const AlertIcon = ({\n ref,\n variant,\n icon,\n className,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'svg'>> }) => (\n <Icon\n {...rest}\n ref={ref}\n data-slot=\"alert-icon\"\n icon={icon ?? ICONS[variant]}\n className={cn(\n 'tw-self-start',\n 'tw-p-0.5',\n 'tw-text-base',\n 'group-data-[variant=info]/alert:tw-text-secondary-500',\n 'group-data-[variant=warning]/alert:tw-text-warning-500',\n 'group-data-[variant=error]/alert:tw-text-error-500',\n 'group-data-[variant=success]/alert:tw-text-primary-500',\n className,\n )}\n />\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../utils';\n\nexport type Variant = 'info' | 'warning' | 'error' | 'success';\n\ntype Props = {\n variant?: Variant;\n argo?: boolean;\n} & ComponentProps<'div'>;\n\nexport const AlertRoot = ({\n ref,\n children,\n className,\n variant,\n argo = false,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => (\n <div\n {...rest}\n ref={ref}\n data-variant={variant}\n data-argo={argo}\n className={cn(\n 'tw-group/alert',\n\n // layout\n 'tw-grid',\n 'tw-grid-cols-[0_1fr_auto]',\n 'has-[[data-slot=alert-icon]]:tw-grid-cols-[auto_1fr_auto]',\n 'has-[[data-slot=alert-icon]]:tw-gap-x-2',\n\n // fonts\n 'tw-text-sm',\n 'tw-text-neutral-800',\n 'tw-text-left',\n\n 'tw-p-4',\n\n // border\n 'tw-rounded',\n 'data-[argo=true]:tw-rounded-lg',\n 'tw-border',\n 'tw-border-solid',\n\n // border variants\n 'data-[variant=info]:tw-bg-secondary-100',\n 'data-[variant=info]:tw-border-secondary-200',\n\n 'data-[variant=warning]:tw-bg-warning-100',\n 'data-[variant=warning]:tw-border-warning-300',\n\n 'data-[variant=error]:tw-bg-error-100',\n 'data-[variant=error]:tw-border-error-200',\n\n 'data-[variant=success]:tw-bg-primary-100',\n 'data-[variant=success]:tw-border-primary-200',\n className,\n )}\n >\n {children}\n </div>\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const AlertTitle = ({\n ref,\n className,\n ...props\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => (\n <div\n {...props}\n ref={ref}\n data-slot=\"alert-title\"\n className={cn(\n 'tw-group/alert-title',\n 'tw-flex',\n 'tw-col-start-2',\n 'tw-font-medium',\n 'tw-items-center',\n className,\n )}\n />\n);\n","import { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { cn } from '../../utils';\nimport { Collapsible } from '../Collapsible';\n\nimport { AlertAction } from './AlertAction';\nimport { AlertCollapsibleIcon } from './AlertCollapsibleIcon';\nimport { AlertDescription } from './AlertDescription';\nimport { AlertIcon } from './AlertIcon';\nimport { AlertRoot } from './AlertRoot';\nimport { AlertTitle } from './AlertTitle';\n\ntype CommonProps = {\n hideIcon?: boolean;\n icon?: ComponentProps<typeof AlertIcon>['icon'];\n} & Pick<ComponentProps<typeof Collapsible>, 'open' | 'onOpenChange' | 'defaultOpen'> &\n Omit<ComponentProps<typeof AlertRoot>, 'children'>;\n\ntype CollapsibleProps = {\n mode: 'collapsible';\n title: ReactNode;\n children: ReactNode;\n actions?: never;\n};\n\ntype DefaultProps = {\n mode?: 'default';\n title?: ReactNode;\n children?: ReactNode;\n actions?: ReactNode;\n};\n\ntype Props = CommonProps & (CollapsibleProps | DefaultProps);\n\nexport const Alert = ({\n title,\n variant = 'info',\n children,\n hideIcon = false,\n icon,\n className,\n actions,\n mode = 'default',\n\n // collapsible props\n defaultOpen = true,\n open: openProp,\n onOpenChange: onOpenChangeProp,\n\n ...rest\n}: Props) => {\n const isControlled = openProp !== undefined;\n\n const [innerOpen, setInnerOpen] = useState(defaultOpen);\n const open = isControlled ? openProp : innerOpen;\n const handleOpenChange = (nextOpen: boolean) => {\n if (!isControlled) {\n setInnerOpen(nextOpen);\n }\n onOpenChangeProp?.(nextOpen);\n };\n\n const isCollapsible = mode === 'collapsible' && !!title && !!children && !actions;\n\n if (isCollapsible)\n return (\n <Collapsible open={open} onOpenChange={handleOpenChange} asChild>\n <AlertRoot {...rest} variant={variant} className={className}>\n <Collapsible.Trigger\n className={cn(\n 'tailwindcss-preflight',\n 'tw-group',\n 'tw-col-span-full',\n 'tw-grid',\n 'tw-grid-cols-subgrid',\n 'tw-rounded-sm',\n 'focus-visible:tw-outline',\n 'focus-visible:tw-outline-2',\n 'focus-visible:tw-outline-secondary-500',\n )}\n >\n {!hideIcon && <AlertIcon variant={variant} icon={icon} />}\n <AlertTitle>{title}</AlertTitle>\n <AlertCollapsibleIcon open={open} />\n </Collapsible.Trigger>\n\n <Collapsible.Content asChild>\n <AlertDescription>{children}</AlertDescription>\n </Collapsible.Content>\n </AlertRoot>\n </Collapsible>\n );\n\n return (\n <AlertRoot {...rest} variant={variant} className={className}>\n {!hideIcon && <AlertIcon variant={variant} icon={icon} />}\n {title && <AlertTitle>{title}</AlertTitle>}\n {children && <AlertDescription>{children}</AlertDescription>}\n {actions && <AlertAction>{actions}</AlertAction>}\n </AlertRoot>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { Button } from '../../components/Button';\nimport { Clipboard } from '../../components/Clipboard';\n\ntype ClipboardProps = Pick<\n ComponentProps<typeof Clipboard>,\n 'text' | 'tooltip' | 'tooltipPlacement' | 'tooltipVariant'\n>;\n\ntype ButtonProps = Omit<ComponentProps<typeof Button>, 'disabled'>;\n\ntype Props = ClipboardProps & ButtonProps;\n\nconst DEFAULT_ICON: Props['icon'] = 'copy';\n\nexport const ClipboardButton = ({\n // clipboard props\n text,\n tooltip,\n tooltipPlacement,\n tooltipVariant,\n\n // button props\n icon = DEFAULT_ICON,\n variant = 'outline',\n children,\n ...rest\n}: Props) => (\n <Clipboard\n asChild\n tooltip={tooltip}\n tooltipPlacement={tooltipPlacement}\n tooltipVariant={tooltipVariant}\n text={text}\n >\n <Button {...rest} icon={icon} variant={variant} disabled={!text}>\n {children}\n </Button>\n </Clipboard>\n);\n","import type { ComponentProps } from 'react';\n\nimport { Icon } from '@keboola/design';\n\nimport { ButtonInline } from '../../components/Button';\nimport { Clipboard } from '../../components/Clipboard';\n\ntype ClipboardProps = Pick<\n ComponentProps<typeof Clipboard>,\n 'text' | 'tooltip' | 'tooltipPlacement' | 'tooltipVariant'\n>;\n\ntype ButtonProps = Omit<ComponentProps<typeof ButtonInline>, 'disabled'>;\n\ntype Props = { hideIcon?: boolean } & ClipboardProps & ButtonProps;\n\nexport const ClipboardInline = ({\n // clipboard props\n text,\n tooltip,\n tooltipPlacement,\n tooltipVariant,\n\n // button props\n children = 'Copy To Clipboard',\n hideIcon = false,\n ...rest\n}: Props) => (\n <Clipboard\n asChild\n text={text}\n tooltip={tooltip}\n tooltipPlacement={tooltipPlacement}\n tooltipVariant={tooltipVariant}\n >\n <ButtonInline {...rest} disabled={!text}>\n {!hideIcon && <Icon icon=\"copy\" />}\n {children}\n </ButtonInline>\n </Clipboard>\n);\n","import type { ReactNode } from 'react';\n\nimport { ClipboardButton } from '../../blocks/ClipboardButton';\n\nexport const ButtonToolbar = ({ value, children }: { value?: string; children?: ReactNode }) => {\n if (!value && !children) return null;\n\n return (\n <div className=\"tw-pointer-events-auto tw-ml-auto tw-mr-4 tw-flex tw-w-fit tw-gap-1 tw-overflow-visible tw-rounded-lg tw-border tw-border-solid tw-border-neutral-150 !tw-bg-white tw-p-[3px] tw-shadow\">\n {!!value && <ClipboardButton size=\"icon-sm\" variant=\"invisible\" text={value} />}\n {children}\n </div>\n );\n};\n","import { javascript } from '@codemirror/lang-javascript';\nimport { json } from '@codemirror/lang-json';\nimport { python } from '@codemirror/lang-python';\nimport { PLSQL, sql } from '@codemirror/lang-sql';\nimport { StreamLanguage } from '@codemirror/language';\nimport { r } from '@codemirror/legacy-modes/mode/r';\nimport { shell } from '@codemirror/legacy-modes/mode/shell';\nimport { githubLightInit } from '@uiw/codemirror-theme-github';\n\nimport { sfsql } from '@keboola/codemirror-lang-sfsql';\nimport colors from '@keboola/tailwind-config/colors';\n\nexport type LANGUAGE_MODE =\n | 'application/json'\n | 'text/x-python'\n | 'text/x-sql'\n | 'text/x-sfsql'\n | 'text/x-plsql'\n | 'text/x-rsrc'\n | 'text/x-sh'\n | 'text/javascript'\n | 'text/typescript';\n\nexport const baseThemeStyles = {\n '*': { lineHeight: '20px' },\n '*::selection': {\n backgroundColor: colors.secondary[500],\n color: `${colors.white} !important`,\n },\n '&.cm-editor:has(.cm-content[contenteditable=\"false\"])': { backgroundColor: colors.neutral[150] },\n '&.cm-editor:has(.cm-content[contenteditable=\"false\"]) .cm-gutters': {\n backgroundColor: colors.neutral[200],\n },\n '&.cm-editor .cm-scroller': { overflowAnchor: 'none' },\n '&.cm-editor, &.cm-editor .cm-scroller': {\n minHeight: '100%',\n flexGrow: 1,\n alignItems: 'stretch !important',\n outline: 'none',\n },\n '.cm-gutter.cm-foldGutter': { display: 'none !important' },\n '.cm-gutter.cm-lineNumbers': { paddingLeft: '20px', paddingRight: '6px' },\n '.cm-gutters': { height: 'auto' },\n\n // tokens overrides\n '.cm-line .tok-string': { color: colors.warning[700] },\n\n // merge (diff) view\n '&[class*=\"cm-merge-\"] .cm-deletedLine': { backgroundColor: colors.error[100] },\n '&[class*=\"cm-merge-\"] .cm-changedLine': { backgroundColor: colors.primary[100] },\n '&[class*=\"cm-merge-\"] .cm-deletedLineGutter': { backgroundColor: colors.error[200] },\n '&[class*=\"cm-merge-\"] .cm-changedLineGutter': { backgroundColor: colors.primary[200] },\n '&[class*=\"cm-merge-\"] .cm-deletedText': { background: colors.error[200] },\n '&[class*=\"cm-merge-\"] .cm-changedText': { background: colors.primary[200] },\n '&[class*=\"cm-merge-\"]': {\n backgroundColor: `${colors.white} !important`,\n },\n '&[class*=\"cm-merge-\"] .cm-gutters': {\n backgroundColor: `${colors.white} !important`,\n },\n '.cm-changeGutter': { position: 'absolute', zIndex: -1, width: '100%', paddingLeft: 0 },\n '&[class*=\"cm-merge-\"] .cm-changedLine,&[class*=\"cm-merge-\"] .cm-line, &[class*=\"cm-merge-\"] .cm-deletedChunk':\n { paddingLeft: 0 },\n};\n\nexport const BASIS_SETUP = { drawSelection: false };\n\nexport const customTheme = githubLightInit({\n settings: {\n fontFamily: `'SFMono-Regular', 'Menlo', 'Monaco', 'Consolas', 'Liberation Mono', 'Courier New'`,\n background: colors.neutral[50],\n gutterBackground: colors.neutral[100],\n gutterBorder: 'transparent',\n lineHighlight: 'transparent',\n selection: colors.secondary[500],\n },\n});\n\nexport const getLanguageMode = (mode?: LANGUAGE_MODE) => {\n switch (mode) {\n case 'text/x-python':\n return python();\n case 'text/x-sql':\n return sql({ upperCaseKeywords: true });\n case 'text/x-sfsql':\n return StreamLanguage.define(sfsql);\n case 'text/x-plsql':\n return sql({ upperCaseKeywords: true, dialect: PLSQL });\n case 'text/x-rsrc':\n return StreamLanguage.define(r);\n case 'text/x-sh':\n return StreamLanguage.define(shell);\n case 'text/javascript':\n return javascript({ jsx: true });\n case 'text/typescript':\n return javascript({ jsx: true, typescript: true });\n default:\n return json();\n }\n};\n","import { Kbd } from '../Kbd';\n\nexport const ToggleComponentHelp = () => (\n <div>\n Use <Kbd>Ctrl+/</Kbd> or <Kbd>Command+/</Kbd> to toggle comments.\n </div>\n);\n","import { useMemo } from 'react';\nimport type { KeyboardEvent, ReactNode } from 'react';\nimport { autocompletion, completeAnyWord } from '@codemirror/autocomplete';\nimport { jsonParseLinter } from '@codemirror/lang-json';\nimport { linter } from '@codemirror/lint';\nimport { unifiedMergeView } from '@codemirror/merge';\nimport { EditorView, keymap, placeholder as cmPlaceholder } from '@codemirror/view';\nimport CodeMirror, { EditorState, type Extension } from '@uiw/react-codemirror';\n\nimport { keyCodes } from '../../constants/keyCodes';\nimport { cn } from '../../utils';\nimport { HelpBlock } from '../HelpBlock';\n\nimport { ButtonToolbar } from './ButtonToolbar';\nimport type { LANGUAGE_MODE } from './helpers';\nimport { baseThemeStyles, BASIS_SETUP, customTheme, getLanguageMode } from './helpers';\nimport { ToggleComponentHelp } from './ToggleComponentHelp';\n\ntype Props = {\n value: string;\n previousValue?: string;\n mode?: LANGUAGE_MODE;\n placeholder?: string;\n readOnly?: boolean;\n autocompletions?: string[];\n extraKeys?: Record<string, () => void>;\n withToggleCommentHint?: boolean;\n withAutofocus?: boolean;\n withLineNumbers?: boolean;\n withLineWrapping?: boolean;\n withCollapseUnchanged?: boolean;\n withCopyButton?: boolean;\n completeAny?: boolean;\n help?: ReactNode;\n helpPostfix?: ReactNode;\n renderAdditionalButtons?: (value?: string) => ReactNode;\n className?: string;\n} & (\n | { readOnly: true; onChange?: never }\n | { readOnly?: false; onChange: (value: string) => void }\n);\n\nconst emptyArray: string[] = [];\nconst emptyObject = {};\n\nexport const CodeEditor = ({\n value,\n previousValue,\n onChange,\n mode = 'application/json',\n placeholder = '',\n readOnly = false,\n autocompletions = emptyArray,\n extraKeys = emptyObject,\n withToggleCommentHint = false,\n withAutofocus = false,\n withLineNumbers = true,\n withLineWrapping = true,\n withCollapseUnchanged = false,\n withCopyButton = true,\n completeAny = false,\n help = null,\n helpPostfix = null,\n renderAdditionalButtons,\n className,\n}: Props) => {\n const commonExtensions: Extension[] = useMemo(() => {\n return [\n getLanguageMode(mode),\n mode === 'application/json' && linter(jsonParseLinter()),\n withLineWrapping ? EditorView.lineWrapping : [],\n EditorState.languageData.of(() => [\n { autocomplete: completeAny ? completeAnyWord : autocompletions },\n ]),\n keymap.of(\n Object.entries(extraKeys).map(([key, run]) => ({\n key,\n run: () => {\n if (typeof run === 'string') return run;\n\n run();\n return true;\n },\n })),\n ),\n autocompletion({ activateOnTyping: completeAny }),\n EditorView.theme(baseThemeStyles),\n ].filter(Boolean) as Extension[];\n }, [autocompletions, completeAny, extraKeys, mode, withLineWrapping]);\n\n const extensions = useMemo(() => {\n return [\n ...commonExtensions,\n cmPlaceholder(placeholder),\n EditorView.editable.of(!readOnly),\n EditorState.readOnly.of(readOnly),\n previousValue\n ? unifiedMergeView({\n original: previousValue,\n mergeControls: false,\n highlightChanges: false,\n collapseUnchanged: withCollapseUnchanged ? {} : undefined,\n })\n : [],\n ];\n }, [commonExtensions, placeholder, readOnly, previousValue, withCollapseUnchanged]);\n\n const config = useMemo(() => {\n return {\n ...BASIS_SETUP,\n lineNumbers: withLineNumbers,\n };\n }, [withLineNumbers]);\n\n return (\n // oxlint-disable-next-line jsx-a11y/no-static-element-interactions\n <div\n className={cn(\n 'tw-relative tw-flex tw-min-h-0 tw-flex-col [&_.cm-mergeViewEditor]:tw-overflow-visible [&_.cm-mergeViewEditors]:tw-h-full [&_.cm-mergeView]:tw-h-full [&_>div]:tw-h-full [&_>div]:tw-overflow-auto [&_>div]:tw-bg-neutral-50',\n { 'tw-mt-5': !!renderAdditionalButtons },\n className,\n )}\n onKeyDown={(event: KeyboardEvent) => {\n if (event.key === keyCodes.ESCAPE) {\n event.stopPropagation();\n }\n }}\n >\n {(withCopyButton || renderAdditionalButtons) && (\n <div className=\"tw-pointer-events-none tw-absolute tw-z-10 tw-flex !tw-h-auto tw-w-full tw-translate-y-[calc(-100%_+_8px)] !tw-overflow-visible !tw-bg-transparent\">\n <div className=\"tw-flex-1\">\n <ButtonToolbar value={withCopyButton ? value : undefined}>\n {renderAdditionalButtons?.(value)}\n </ButtonToolbar>\n </div>\n </div>\n )}\n <CodeMirror\n theme={customTheme}\n value={value}\n onChange={onChange}\n extensions={extensions}\n autoFocus={withAutofocus}\n basicSetup={config}\n />\n {!readOnly && (withToggleCommentHint || help || helpPostfix) && (\n <HelpBlock className=\"tw-mt-2 tw-flex tw-flex-wrap tw-gap-1\">\n {help}\n {withToggleCommentHint ? <ToggleComponentHelp /> : null}\n {helpPostfix}\n </HelpBlock>\n )}\n </div>\n );\n};\n","import type { ChangeSet, Range } from '@codemirror/state';\nimport { Decoration, EditorView, ViewPlugin, type ViewUpdate } from '@codemirror/view';\n\nimport colors from '@keboola/tailwind-config/colors';\n\nconst activeQueryFirstLine = Decoration.line({ class: 'cm-active-query cm-active-query-first' });\nconst activeQueryMiddleLine = Decoration.line({ class: 'cm-active-query' });\nconst activeQueryLastLine = Decoration.line({ class: 'cm-active-query cm-active-query-last' });\nconst activeQuerySingleLine = Decoration.line({\n class: 'cm-active-query cm-active-query-first cm-active-query-last',\n});\n\ntype QueryBoundary = { from: number; to: number };\n\n/**\n * Given pre-computed query boundaries and a cursor position, find which query\n * the cursor is in. Returns trimmed character offsets or null.\n */\nexport const findActiveQueryRange = (\n doc: string,\n cursorPos: number,\n boundaries: QueryBoundary[],\n): { from: number; to: number } | null => {\n if (boundaries.length === 0) return null;\n\n let match: QueryBoundary | undefined = boundaries[boundaries.length - 1];\n for (const boundary of boundaries) {\n if (cursorPos <= boundary.to) {\n match = boundary;\n break;\n }\n }\n\n if (!match) return null;\n\n // Trim leading/trailing whitespace from the query range for tighter boundaries\n const queryText = doc.slice(match.from, match.to);\n const leadingWhitespace = queryText.length - queryText.trimStart().length;\n const trailingWhitespace = queryText.length - queryText.trimEnd().length;\n\n const trimmedStart = match.from + leadingWhitespace;\n const trimmedEnd = match.to - trailingWhitespace;\n\n if (trimmedStart >= trimmedEnd) return null;\n\n return { from: trimmedStart, to: trimmedEnd };\n};\n\n/**\n * Convert splitSqlQueries result (array of query strings that join back to the\n * original doc) into character-offset boundaries.\n */\nconst computeBoundaries = (queries: string[]): QueryBoundary[] => {\n const boundaries: QueryBoundary[] = [];\n let offset = 0;\n for (const query of queries) {\n boundaries.push({ from: offset, to: offset + query.length });\n offset += query.length;\n }\n return boundaries;\n};\n\n/**\n * Synchronously map cached boundaries through a changeset.\n *\n * Boundaries can outlive the document state they were computed from (the async\n * re-parse in `scheduleDocParse` is debounced, so several edits may land\n * before new boundaries are produced). When that happens a cached position\n * can exceed the changeset's pre-change length and `ChangeSet.mapPos` throws\n * `RangeError: Position X is out of range for changeset of length Y`.\n *\n * Clamp positions into the valid `[0, changes.length]` range before mapping\n * and drop degenerate boundaries so the mapping is safe even with stale cache.\n */\nexport const mapBoundariesThroughChanges = (\n boundaries: QueryBoundary[],\n changes: ChangeSet,\n): QueryBoundary[] => {\n const prevLen = changes.length;\n const mapped: QueryBoundary[] = [];\n for (const b of boundaries) {\n const from = changes.mapPos(Math.max(0, Math.min(b.from, prevLen)), -1);\n const to = changes.mapPos(Math.max(0, Math.min(b.to, prevLen)), 1);\n if (from < to) mapped.push({ from, to });\n }\n return mapped;\n};\n\nconst buildDecorations = (view: EditorView, range: { from: number; to: number }) => {\n const startLine = view.state.doc.lineAt(range.from).number;\n const endLine = view.state.doc.lineAt(range.to).number;\n\n const decorations: Range<Decoration>[] = [];\n for (let lineNum = startLine; lineNum <= endLine; lineNum++) {\n const lineStart = view.state.doc.line(lineNum).from;\n if (startLine === endLine) {\n decorations.push(activeQuerySingleLine.range(lineStart));\n } else if (lineNum === startLine) {\n decorations.push(activeQueryFirstLine.range(lineStart));\n } else if (lineNum === endLine) {\n decorations.push(activeQueryLastLine.range(lineStart));\n } else {\n decorations.push(activeQueryMiddleLine.range(lineStart));\n }\n }\n\n return Decoration.set(decorations);\n};\n\nexport const activeQueryHighlight = (splitQueries: (sql: string) => Promise<string[]>) => {\n return [\n ViewPlugin.fromClass(\n class {\n decorations = Decoration.none;\n private debounceTimer: ReturnType<typeof setTimeout> | null = null;\n private seq = 0;\n private cachedDoc = '';\n private cachedBoundaries: QueryBoundary[] = [];\n private destroyed = false;\n\n constructor(view: EditorView) {\n this.scheduleDocParse(view);\n }\n\n update(update: ViewUpdate) {\n if (update.focusChanged && !update.view.hasFocus) {\n this.decorations = Decoration.none;\n return;\n }\n\n if (update.docChanged) {\n // Synchronously map cached boundaries through document changes\n // so decorations update immediately without waiting for async re-parse.\n // Positions are clamped inside mapBoundariesThroughChanges because\n // the async re-parse is debounced and boundaries can be stale.\n if (this.cachedBoundaries.length > 0) {\n this.cachedBoundaries = mapBoundariesThroughChanges(\n this.cachedBoundaries,\n update.changes,\n );\n this.cachedDoc = update.state.doc.toString();\n this.updateFromCache(update.view);\n }\n // Still re-parse for accurate boundaries (handles structural changes like new semicolons)\n this.scheduleDocParse(update.view);\n } else if (update.selectionSet || (update.focusChanged && update.view.hasFocus)) {\n this.updateFromCache(update.view);\n }\n }\n\n destroy() {\n this.destroyed = true;\n if (this.debounceTimer) clearTimeout(this.debounceTimer);\n }\n\n /**\n * Update decorations using cached query boundaries.\n * Only mutates this.decorations — does NOT call view.dispatch().\n * When called from update() (sync), CodeMirror picks up the new\n * decorations via the accessor. When called from the async\n * scheduleDocParse callback, the caller must dispatch separately.\n */\n private updateFromCache(view: EditorView) {\n if (!view.hasFocus) {\n this.decorations = Decoration.none;\n return;\n }\n\n const { main } = view.state.selection;\n\n if (main.from !== main.to) {\n // User has text selected — hide highlight\n this.decorations = Decoration.none;\n return;\n }\n\n const doc = view.state.doc.toString();\n if (doc !== this.cachedDoc) return;\n if (this.cachedBoundaries.length === 0) {\n this.decorations = Decoration.none;\n return;\n }\n\n const range = findActiveQueryRange(doc, main.head, this.cachedBoundaries);\n this.decorations = range ? buildDecorations(view, range) : Decoration.none;\n }\n\n /** Parse queries async (debounced) and update decorations. */\n private scheduleDocParse(view: EditorView) {\n if (this.debounceTimer) clearTimeout(this.debounceTimer);\n\n this.debounceTimer = setTimeout(async () => {\n const seq = ++this.seq;\n const doc = view.state.doc.toString();\n\n if (!doc.trim()) {\n this.cachedDoc = doc;\n this.cachedBoundaries = [];\n if (this.decorations !== Decoration.none) {\n this.decorations = Decoration.none;\n if (!this.destroyed) view.dispatch();\n }\n return;\n }\n\n let queries: string[];\n try {\n queries = await splitQueries(doc);\n } catch {\n return;\n }\n\n // Discard stale results\n if (this.destroyed || seq !== this.seq) return;\n\n this.cachedDoc = doc;\n this.cachedBoundaries = computeBoundaries(queries);\n\n this.updateFromCache(view);\n if (!this.destroyed) view.dispatch();\n }, 100);\n }\n },\n { decorations: (v) => v.decorations },\n ),\n EditorView.baseTheme({\n '.cm-active-query': {\n boxShadow: `inset -1px 0 0 0 ${colors.secondary[300]}, inset 1px 0 0 0 ${colors.secondary[300]}`,\n marginRight: '8px',\n },\n '.cm-active-query-first': {\n boxShadow: `inset -1px 0 0 0 ${colors.secondary[300]}, inset 1px 0 0 0 ${colors.secondary[300]}, inset 0 1px 0 0 ${colors.secondary[300]}`,\n borderRadius: '4px 4px 0 0',\n },\n '.cm-active-query-last': {\n boxShadow: `inset -1px 0 0 0 ${colors.secondary[300]}, inset 1px 0 0 0 ${colors.secondary[300]}, inset 0 -1px 0 0 ${colors.secondary[300]}`,\n borderRadius: '0 0 4px 4px',\n },\n '.cm-active-query-first.cm-active-query-last': {\n boxShadow: `inset 0 0 0 1px ${colors.secondary[300]}`,\n borderRadius: '4px',\n },\n }),\n ];\n};\n","import type { Extension } from '@codemirror/state';\nimport { RangeSet, StateEffect, StateField } from '@codemirror/state';\nimport { Decoration, EditorView, gutter, GutterMarker } from '@codemirror/view';\n\nimport colors from '@keboola/tailwind-config/colors';\n\nimport { activeQueryHighlight } from './activeQueryHighlight';\n\nexport type HighlightedLines = {\n from: number;\n to: number;\n error?: { from: number; to: number };\n processing?: { from: number; to: number };\n} | null;\n\n// Gutter markers for highlighting\nclass HighlightMarker extends GutterMarker {\n toDOM() {\n const marker = document.createElement('div');\n marker.className = 'cm-highlight-marker';\n return marker;\n }\n}\n\nconst highlightMarker = new HighlightMarker();\n\n// Helper function to iterate over line range and apply a callback\nconst forEachLineInRange = <T>(\n doc: { lines: number; line: (n: number) => { from: number } },\n from: number,\n to: number,\n callback: (lineFrom: number) => T,\n): T[] => {\n const results: T[] = [];\n\n // Convert 0-based to 1-based for CodeMirror\n const fromLine = Math.max(1, from + 1);\n const toLine = Math.min(doc.lines, to + 1);\n\n for (let i = fromLine; i <= toLine; i++) {\n const line = doc.line(i);\n results.push(callback(line.from));\n }\n\n return results;\n};\n\n// State effect for setting highlighted lines\nconst setHighlightedLinesEffect = StateEffect.define<HighlightedLines>();\n\n// State field for storing highlighted lines info\nconst highlightedLinesField = StateField.define<HighlightedLines>({\n create() {\n return null;\n },\n update(value, transaction) {\n for (const effect of transaction.effects) {\n if (effect.is(setHighlightedLinesEffect)) {\n return effect.value;\n }\n }\n return value;\n },\n});\n\n// Gutter extension that displays highlight markers\nconst highlightGutter = gutter({\n class: 'cm-highlight-gutter',\n markers: (view): RangeSet<GutterMarker> => {\n const highlightInfo = view.state.field(highlightedLinesField, false);\n\n if (!highlightInfo) {\n return RangeSet.empty;\n }\n\n // Add blue markers for all running query lines\n const markers = forEachLineInRange(\n view.state.doc,\n highlightInfo.from,\n highlightInfo.to,\n (lineFrom) => highlightMarker.range(lineFrom),\n );\n\n return RangeSet.of(markers);\n },\n});\n\n// State field for error line background decorations\nconst errorLineDecorations = StateField.define({\n create() {\n return Decoration.none;\n },\n update(decorations, transaction) {\n decorations = decorations.map(transaction.changes);\n for (const effect of transaction.effects) {\n if (!effect.is(setHighlightedLinesEffect)) {\n continue;\n }\n\n if (!effect.value || !effect.value.error) {\n return Decoration.none;\n }\n\n // Add error line background decorations\n const decorationArray = forEachLineInRange(\n transaction.state.doc,\n effect.value.error.from,\n effect.value.error.to,\n (lineFrom) => Decoration.line({ class: 'cm-error-line' }).range(lineFrom),\n );\n\n return Decoration.set(decorationArray);\n }\n return decorations;\n },\n provide: (f) => EditorView.decorations.from(f),\n});\n\n// State field for processing line background decorations\nconst processingLineDecorations = StateField.define({\n create() {\n return Decoration.none;\n },\n update(decorations, transaction) {\n decorations = decorations.map(transaction.changes);\n for (const effect of transaction.effects) {\n if (!effect.is(setHighlightedLinesEffect)) {\n continue;\n }\n\n if (!effect.value || !effect.value.processing) {\n return Decoration.none;\n }\n\n const decorationArray = forEachLineInRange(\n transaction.state.doc,\n effect.value.processing.from,\n effect.value.processing.to,\n (lineFrom) => Decoration.line({ class: 'cm-processing-line' }).range(lineFrom),\n );\n\n return Decoration.set(decorationArray);\n }\n return decorations;\n },\n provide: (f) => EditorView.decorations.from(f),\n});\n\n// Theme for highlighted lines\nconst highlightedLinesTheme = EditorView.baseTheme({\n '.cm-highlight-gutter': {\n width: '2px',\n marginRight: '2px',\n },\n '.cm-highlight-marker': {\n width: '2px',\n height: '100%',\n backgroundColor: colors.secondary[500],\n },\n '.cm-error-line': {\n backgroundColor: `${colors.error[100]} !important`,\n },\n '.cm-processing-line': {\n backgroundColor: `${colors.secondary[100]} !important`,\n },\n});\n\n// Install highlight lines extension\nexport function highlightingExtension(\n queryParser?: (sql: string) => Promise<string[]>,\n): Extension[] {\n return [\n highlightedLinesField,\n highlightGutter,\n errorLineDecorations,\n processingLineDecorations,\n highlightedLinesTheme,\n ...(queryParser ? activeQueryHighlight(queryParser) : []),\n ];\n}\n\nexport function updateHighlighting(view: EditorView, lines?: HighlightedLines) {\n view.dispatch({ effects: setHighlightedLinesEffect.of(lines ?? null) });\n}\n","import { StateEffect, StateField, type Text } from '@codemirror/state';\nimport {\n Decoration,\n type DecorationSet,\n EditorView,\n ViewPlugin,\n type ViewUpdate,\n} from '@codemirror/view';\n\nimport colors from '@keboola/tailwind-config/colors';\n\nimport { escapeStringRegexp } from '../../utils/escapeStringRegexp';\n\n// Represents a single search match in the editor\ntype SearchMatch = {\n /** Start position in document */\n from: number;\n /** End position in document */\n to: number;\n /** Text content of the match */\n text: string;\n /** Local match index within this editor (0-based) */\n localIndex: number;\n};\n\n// Effect to update search state\nconst setSearchEffect = StateEffect.define<{\n query: string;\n selectedMatchIndex?: number;\n}>();\n\n// State to track current search matches\ntype SearchState = {\n query: string;\n selectedMatchIndex?: number;\n matches: SearchMatch[];\n decorations: DecorationSet;\n};\n\n// Find all matches in the document\nfunction findMatches(doc: Text, query: string): SearchMatch[] {\n if (!query) return [];\n\n const text = doc.toString();\n\n try {\n const regex = new RegExp(escapeStringRegexp(query), 'gi');\n\n return Array.from(text.matchAll(regex)).map((match, index) => {\n const from = match.index!;\n const to = from + match[0].length;\n\n return { from, to, text: match[0], localIndex: index };\n });\n } catch (e) {\n // Invalid regex - return no matches\n console.warn('Invalid search regex:', e);\n return [];\n }\n}\n\n// Create decorations for search matches\nfunction createDecorations(matches: SearchMatch[], selectedLocalIndex?: number): DecorationSet {\n const decorations = matches.map((match) => {\n const isSelected = match.localIndex === selectedLocalIndex;\n\n const decoration = Decoration.mark({\n class: isSelected ? 'cm-searchMatch-selected' : 'cm-searchMatch',\n });\n\n return decoration.range(match.from, match.to);\n });\n\n return Decoration.set(decorations, true);\n}\n\n// StateField to manage search state\nconst searchField = StateField.define<SearchState>({\n create() {\n return {\n query: '',\n selectedMatchIndex: undefined,\n matches: [],\n decorations: Decoration.none,\n };\n },\n\n update(state, tr) {\n let newState = state;\n\n // Handle search effect\n for (const effect of tr.effects) {\n if (!effect.is(setSearchEffect)) {\n continue;\n }\n\n const { query, selectedMatchIndex } = effect.value;\n\n // Find matches\n const matches = findMatches(tr.state.doc, query);\n\n // Create decorations\n const decorations = createDecorations(matches, selectedMatchIndex);\n\n newState = {\n query,\n selectedMatchIndex,\n matches,\n decorations,\n };\n }\n\n // Map decorations through document changes\n if (tr.docChanged && newState.query) {\n const matches = findMatches(tr.state.doc, newState.query);\n const decorations = createDecorations(matches, newState.selectedMatchIndex);\n\n newState = {\n ...newState,\n matches,\n decorations,\n };\n }\n\n return newState;\n },\n\n provide: (field) => EditorView.decorations.from(field, (state) => state.decorations),\n});\n\n// View plugin to handle scrolling to selected match\nconst searchViewPlugin = ViewPlugin.fromClass(\n class {\n private lastSelectedIndex?: number;\n\n update(update: ViewUpdate) {\n const state = update.state.field(searchField);\n\n // Scroll to selected match when it changes\n if (\n state.selectedMatchIndex !== undefined &&\n state.selectedMatchIndex !== this.lastSelectedIndex\n ) {\n const match = state.matches[state.selectedMatchIndex];\n\n if (match) {\n requestAnimationFrame(() => {\n update.view.dispatch({\n effects: EditorView.scrollIntoView(match.from, { y: 'center' }),\n });\n });\n }\n\n this.lastSelectedIndex = state.selectedMatchIndex;\n }\n\n // Reset if no selection\n if (state.selectedMatchIndex === undefined) {\n this.lastSelectedIndex = undefined;\n }\n }\n },\n);\n\nconst searchTheme = EditorView.baseTheme({\n '.cm-searchMatch': {\n backgroundColor: colors.secondary[100],\n },\n '.cm-searchMatch > span': {\n color: `${colors.secondary[600]} !important`,\n },\n '.cm-searchMatch-selected': {\n backgroundColor: colors.secondary[600],\n },\n '.cm-searchMatch-selected > span': {\n color: `${colors.white} !important`,\n },\n});\n\nexport function searchExtension() {\n return [searchField, searchViewPlugin, searchTheme];\n}\n\nexport function updateSearch(view: EditorView, query: string, selectedMatchIndex?: number) {\n view.dispatch({ effects: setSearchEffect.of({ query, selectedMatchIndex }) });\n}\n","import { useCallback, useEffect, useMemo, useRef } from 'react';\nimport { defaultKeymap } from '@codemirror/commands';\nimport type { SQLNamespace } from '@codemirror/lang-sql';\nimport type {\n EditorState,\n KeyBinding,\n ReactCodeMirrorRef,\n ViewUpdate,\n} from '@uiw/react-codemirror';\nimport CodeMirror, { EditorView, keymap } from '@uiw/react-codemirror';\n\nimport { installExtensions, type SqlDialectName } from '@keboola/codemirror-lang-sql';\nimport colors from '@keboola/tailwind-config/colors';\n\nimport { baseThemeStyles, customTheme } from './helpers';\nimport type { HighlightedLines } from './highlighting';\nimport { highlightingExtension, updateHighlighting } from './highlighting';\nimport { searchExtension, updateSearch } from './search';\n\nconst BASIS_SETUP = {\n drawSelection: false,\n defaultKeymap: false,\n completionKeymap: false,\n searchKeymap: false,\n};\n\nconst CUSTOM_KEYMAP: KeyBinding[] = [\n {\n key: 'Escape',\n stopPropagation: true,\n run: (view: EditorView) => {\n view.contentDOM.blur();\n return true;\n },\n },\n];\n\nconst theme = {\n ...baseThemeStyles,\n '&.cm-editor': {\n border: 'solid 1px transparent',\n background: colors.white,\n borderRadius: '8px',\n paddingTop: '8px',\n paddingBottom: '8px',\n },\n '&.cm-editor:has(.cm-content[contenteditable=\"true\"]):hover': {\n borderColor: colors.secondary[500],\n },\n '&.cm-editor:has(.cm-content[contenteditable=\"true\"]):focus-within': {\n borderColor: colors.secondary[500],\n boxShadow: `0 0 0 4px ${colors.secondary[200]}`,\n },\n '&.cm-editor .cm-scroller': { overflowAnchor: 'none' },\n '&.cm-editor :is(.cm-gutters,.cm-scroller)': { background: colors.white },\n '&.cm-editor:has(.cm-content[contenteditable=\"false\"])': { background: colors.neutral[100] },\n '&.cm-editor:has(.cm-content[contenteditable=\"false\"]) :is(.cm-scroller,.cm-gutters)': {\n background: colors.neutral[100],\n },\n};\n\ntype Props = {\n value: string;\n onChange?: (value: string) => void;\n onSelectionChange?: (text: string) => void;\n onCreateEditor?: (view: EditorView, state: EditorState) => void;\n onDestroyEditor?: () => void;\n onBlurEditor?: (view: EditorView) => void;\n onFocusEditor?: (view: EditorView) => void;\n readOnly: boolean;\n placeholder?: string;\n searchQuery?: string;\n searchMatchIndex?: number;\n extraKeys?: KeyBinding[];\n queryParser?: (sql: string) => Promise<string[]>;\n autoFocus?: boolean;\n lineNumbers?: boolean;\n className?: string;\n schema?: SQLNamespace;\n variables?: string[];\n defaultSchema?: string;\n defaultDatabase?: string;\n highlightLines?: HighlightedLines;\n dialect?: SqlDialectName;\n};\n\nexport const SqlEditor = ({\n value,\n onChange,\n onSelectionChange,\n onCreateEditor,\n onDestroyEditor,\n onBlurEditor,\n onFocusEditor,\n placeholder = '',\n searchQuery = '',\n searchMatchIndex,\n readOnly = false,\n extraKeys,\n queryParser,\n autoFocus = false,\n lineNumbers = true,\n className,\n schema,\n variables,\n defaultDatabase,\n defaultSchema,\n highlightLines,\n dialect,\n}: Props) => {\n const editorRef = useRef<ReactCodeMirrorRef>(null);\n\n const extensions = useMemo(() => {\n const baseKeymap = [...defaultKeymap, ...CUSTOM_KEYMAP];\n\n return [\n EditorView.lineWrapping,\n keymap.of(extraKeys ? [...extraKeys, ...baseKeymap] : baseKeymap),\n ...installExtensions({ schema, defaultDatabase, defaultSchema, variables, dialect }),\n searchExtension(),\n highlightingExtension(queryParser),\n EditorView.theme(theme),\n onBlurEditor ? EditorView.domEventHandlers({ blur: (_, view) => onBlurEditor(view) }) : [],\n onFocusEditor ? EditorView.domEventHandlers({ focus: (_, view) => onFocusEditor(view) }) : [],\n ];\n }, [\n extraKeys,\n queryParser,\n schema,\n defaultDatabase,\n defaultSchema,\n variables,\n dialect,\n onBlurEditor,\n onFocusEditor,\n ]);\n\n const defaultSetup = useMemo(() => {\n return { ...BASIS_SETUP, lineNumbers };\n }, [lineNumbers]);\n\n useEffect(() => {\n if (editorRef.current?.view) {\n updateHighlighting(editorRef.current.view, highlightLines);\n }\n }, [highlightLines]);\n\n useEffect(() => {\n if (editorRef.current?.view) {\n updateSearch(editorRef.current.view, searchQuery, searchMatchIndex);\n }\n }, [searchQuery, searchMatchIndex]);\n\n useEffect(() => {\n if (!onDestroyEditor) return;\n\n return () => {\n onDestroyEditor();\n };\n }, [onDestroyEditor]);\n\n const handleOnCreate = useCallback(\n (view: EditorView, state: EditorState) => {\n onCreateEditor?.(view, state);\n\n if (highlightLines) {\n updateHighlighting(view, highlightLines);\n }\n\n if (searchQuery) {\n updateSearch(view, searchQuery, searchMatchIndex);\n }\n },\n [onCreateEditor, highlightLines, searchQuery, searchMatchIndex],\n );\n\n const handleOnUpdate = useCallback(\n (update: ViewUpdate) => {\n if (update.selectionSet) {\n const { main } = update.state.selection;\n const text = update.state.sliceDoc(main.from, main.to);\n\n onSelectionChange?.(text);\n }\n },\n [onSelectionChange],\n );\n\n return (\n <CodeMirror\n ref={editorRef}\n theme={customTheme}\n extensions={extensions}\n value={value}\n onChange={onChange}\n onUpdate={handleOnUpdate}\n onCreateEditor={handleOnCreate}\n autoFocus={autoFocus}\n placeholder={placeholder}\n className={className}\n readOnly={readOnly}\n editable={!readOnly}\n basicSetup={defaultSetup}\n />\n );\n};\n","export const CHUNK_TYPE = {\n UNCHANGED: 'unchanged',\n ADDED: 'added',\n REMOVED: 'removed',\n} as const;\n\ntype ChunkType = (typeof CHUNK_TYPE)[keyof typeof CHUNK_TYPE];\n\nexport type DiffChunk = {\n type: ChunkType;\n value: string;\n /** 1-indexed start line in the old (left) text */\n oldStart: number;\n /** 1-indexed end line in the old (left) text */\n oldEnd: number;\n /** 1-indexed start line in the new (right) text */\n newStart: number;\n /** 1-indexed end line in the new (right) text */\n newEnd: number;\n};\n\n/**\n * A paired conflict: adjacent REMOVED + ADDED chunks from diffLines,\n * representing a section that was modified. If only one side exists,\n * the other is empty (pure insertion or deletion).\n */\nexport type MergeConflict = {\n id: string;\n oldValue: string;\n oldStartLine: number;\n oldEndLine: number;\n newValue: string;\n newStartLine: number;\n newEndLine: number;\n};\n\nexport const CHANGE_CLASS = {\n SAFE: 'safe',\n CONFLICT: 'conflict',\n} as const;\n\nexport type ChangeClassification = (typeof CHANGE_CLASS)[keyof typeof CHANGE_CLASS];\n\n/** Must match the CodeMirror line-height set in MergePane */\nexport const LINE_HEIGHT_PX = 20;\n\n/** Must match the rendered header height in MergePane (py-3 + content + border) */\nexport const PANE_HEADER_HEIGHT_PX = 58;\n","import { Button } from '../../Button';\n\ntype Props = {\n side: 'left' | 'right';\n onAccept: () => void;\n};\n\nexport const AcceptButton = ({ side, onAccept }: Props) => {\n const label = `Accept ${side === 'left' ? 'production' : 'branch'} version`;\n return (\n <Button\n icon={side === 'left' ? ['far', 'chevrons-right'] : ['far', 'chevrons-left']}\n onClick={onAccept}\n variant=\"outline\"\n size=\"icon\"\n title={label}\n aria-label={label}\n />\n );\n};\n","import type { RefCallback } from 'react';\n\nimport { cn } from '../../../utils';\nimport { Button } from '../../Button';\nimport { LINE_HEIGHT_PX, type MergeConflict, PANE_HEADER_HEIGHT_PX } from '../constants';\n\nimport { AcceptButton } from './AcceptButton';\n\ntype Props = {\n conflicts: MergeConflict[];\n side: 'left' | 'right';\n onAccept: (conflict: MergeConflict) => void;\n onDismiss?: (conflict: MergeConflict) => void;\n contentRef?: RefCallback<HTMLDivElement>;\n};\n\n// 40px column when there are conflicts to render — wide enough to fit the\n// accept chevron + dismiss icon without overflowing into the adjacent panes\n// (which use `tw-overflow-hidden` and would clip absolutely-positioned\n// children that crossed the boundary). Collapses to 0 when idle so empty\n// merges don't reserve a sliver of layout. Inner wrapper allows horizontal\n// overflow so the icon buttons' focus-visible ring (4px) stays visible past\n// the column edge. Buttons stay aligned with their source-pane chunk via the\n// parent's `translateY(-scrollTop)` follower applied to `contentRef`.\nexport const AcceptControls = ({ conflicts, side, onAccept, onDismiss, contentRef }: Props) => (\n <div\n className={cn(\n 'tw-z-10 tw-flex tw-shrink-0 tw-flex-col tw-items-center',\n conflicts.length > 0 ? 'tw-w-10' : 'tw-w-0',\n )}\n >\n {conflicts.length > 0 && (\n <>\n <div className=\"tw-shrink-0\" style={{ height: `${PANE_HEADER_HEIGHT_PX}px` }} />\n <div className=\"tw-relative tw-w-full tw-flex-1 tw-overflow-y-clip tw-overflow-x-visible\">\n <div ref={contentRef} className=\"tw-relative tw-size-full\">\n {conflicts.map((conflict) => {\n const topLine = side === 'left' ? conflict.oldStartLine : conflict.newStartLine;\n const topOffset = (topLine - 1) * LINE_HEIGHT_PX - 2;\n\n return (\n <div\n key={conflict.id}\n className=\"tw-absolute tw-inset-x-0 tw-flex tw-flex-col tw-items-center tw-gap-0.5\"\n style={{ top: `${topOffset}px` }}\n >\n <AcceptButton side={side} onAccept={() => onAccept(conflict)} />\n {onDismiss && (\n <Button\n icon=\"xmark\"\n onClick={() => onDismiss(conflict)}\n variant=\"outline\"\n size=\"icon\"\n title=\"Dismiss\"\n aria-label={`Dismiss ${side === 'left' ? 'production' : 'branch'} change`}\n />\n )}\n </div>\n );\n })}\n </div>\n </div>\n </>\n )}\n </div>\n);\n","import {\n type Extension,\n RangeSet,\n RangeSetBuilder,\n StateEffect,\n StateField,\n} from '@codemirror/state';\nimport {\n Decoration,\n type DecorationSet,\n EditorView,\n gutterLineClass,\n GutterMarker,\n} from '@codemirror/view';\n\nimport colors from '@keboola/tailwind-config/colors';\n\nimport type { ChangeClassification } from './constants';\nimport { CHANGE_CLASS } from './constants';\n\ntype HighlightPayload = {\n lines: Set<number>;\n classification: Map<number, ChangeClassification>;\n};\n\nconst setHighlightedLines = StateEffect.define<HighlightPayload>();\n\nconst safeDecoration = Decoration.line({ class: 'cm-merge-safe-line' });\nconst conflictDecoration = Decoration.line({ class: 'cm-merge-conflict-line' });\n\nclass SafeGutterMarker extends GutterMarker {\n elementClass = 'cm-merge-safe-gutter';\n}\n\nclass ConflictGutterMarker extends GutterMarker {\n elementClass = 'cm-merge-conflict-gutter';\n}\n\nconst safeGutterMarker = new SafeGutterMarker();\nconst conflictGutterMarker = new ConflictGutterMarker();\n\ntype FieldValue = {\n decorations: DecorationSet;\n gutterMarkers: RangeSet<GutterMarker>;\n};\n\nexport const createDiffHighlightExtension = (): Extension => {\n const field = StateField.define<FieldValue>({\n create: () => ({ decorations: Decoration.none, gutterMarkers: RangeSet.empty }),\n update(value, tr) {\n // Use the last effect if multiple are dispatched in a single transaction\n let payload: HighlightPayload | null = null;\n for (const effect of tr.effects) {\n if (effect.is(setHighlightedLines)) {\n payload = effect.value;\n }\n }\n\n if (!payload) {\n return {\n decorations: value.decorations.map(tr.changes),\n gutterMarkers: value.gutterMarkers.map(tr.changes),\n };\n }\n\n const decoBuilder = new RangeSetBuilder<Decoration>();\n const gutterBuilder = new RangeSetBuilder<GutterMarker>();\n const doc = tr.state.doc;\n const { lines, classification } = payload;\n\n // Iterate the (typically small) highlighted set instead of all doc lines.\n // RangeSetBuilder requires positions in order, so sort first.\n const sorted = [...lines].filter((l) => l >= 1 && l <= doc.lines).sort((a, b) => a - b);\n for (const i of sorted) {\n const cls = classification.get(i);\n if (!cls) continue;\n\n const isSafe = cls === CHANGE_CLASS.SAFE;\n const line = doc.line(i);\n decoBuilder.add(line.from, line.from, isSafe ? safeDecoration : conflictDecoration);\n gutterBuilder.add(line.from, line.from, isSafe ? safeGutterMarker : conflictGutterMarker);\n }\n\n return {\n decorations: decoBuilder.finish(),\n gutterMarkers: gutterBuilder.finish(),\n };\n },\n provide: (f) => [\n EditorView.decorations.from(f, (val) => val.decorations),\n gutterLineClass.from(f, (val: FieldValue) => val.gutterMarkers),\n ],\n });\n\n // !important needed to override CodeMirror's built-in active-line and selection backgrounds.\n // SAFE = change present on one side only (green). CONFLICT = both sides edited this region\n // (amber/warning — NOT red, since red reads as \"deletion\" and the 3-pane editor only ever\n // displays additions in each side pane). The colored left border doubles as a scan-lane so\n // changes are easy to spot when zoomed out.\n const theme = EditorView.theme({\n '.cm-merge-safe-line': {\n backgroundColor: `${colors.primary[100]} !important`,\n boxShadow: `inset 3px 0 0 ${colors.primary[500]}`,\n },\n '.cm-merge-conflict-line': {\n backgroundColor: `${colors.warning[100]} !important`,\n boxShadow: `inset 3px 0 0 ${colors.warning[500]}`,\n },\n '.cm-merge-safe-gutter': {\n backgroundColor: `${colors.primary[200]} !important`,\n },\n '.cm-merge-conflict-gutter': {\n backgroundColor: `${colors.warning[200]} !important`,\n },\n });\n\n return [field, theme];\n};\n\nexport const updateHighlightedLines = (\n view: EditorView,\n lines: Set<number>,\n classification: Map<number, ChangeClassification>,\n) => {\n view.dispatch({ effects: setHighlightedLines.of({ lines, classification }) });\n};\n","import { type ReactNode, useCallback, useEffect, useMemo, useRef } from 'react';\nimport { type Extension } from '@codemirror/state';\nimport { EditorView } from '@codemirror/view';\nimport CodeMirror, { type ReactCodeMirrorRef } from '@uiw/react-codemirror';\n\nimport colors from '@keboola/tailwind-config/colors';\n\nimport { cn } from '../../utils';\n\nimport { type ChangeClassification, LINE_HEIGHT_PX } from './constants';\nimport { createDiffHighlightExtension, updateHighlightedLines } from './decorations';\n\ntype Props = {\n value: string;\n highlightedLines: Set<number>;\n lineClassification: Map<number, ChangeClassification>;\n readOnly?: boolean;\n onChange?: (value: string) => void;\n header?: ReactNode;\n headerClassName?: string;\n className?: string;\n onScrollDOMReady?: (el: HTMLElement | null) => void;\n};\n\nexport const MergePane = ({\n value,\n highlightedLines,\n lineClassification,\n readOnly = false,\n onChange,\n header,\n headerClassName,\n className,\n onScrollDOMReady,\n}: Props) => {\n const editorRef = useRef<ReactCodeMirrorRef>(null);\n\n const extensions = useMemo(\n (): Extension[] => [\n createDiffHighlightExtension(),\n EditorView.theme({\n '&.cm-editor': {\n height: '100%',\n backgroundColor: colors.neutral[50],\n outline: 'none',\n },\n '&.cm-editor .cm-scroller': {\n alignItems: 'stretch !important',\n },\n '.cm-gutters': {\n backgroundColor: colors.neutral[100],\n },\n '*': { lineHeight: `${LINE_HEIGHT_PX}px` },\n '.cm-lineNumbers .cm-gutterElement': { padding: '0 0 0 25px' },\n }),\n ],\n [],\n );\n\n useEffect(() => {\n const view = editorRef.current?.view;\n if (view) {\n updateHighlightedLines(view, highlightedLines, lineClassification);\n }\n }, [highlightedLines, lineClassification]);\n\n const handleCreateEditor = useCallback(\n (view: EditorView) => {\n updateHighlightedLines(view, highlightedLines, lineClassification);\n onScrollDOMReady?.(view.scrollDOM);\n },\n [highlightedLines, lineClassification, onScrollDOMReady],\n );\n\n useEffect(() => {\n return () => onScrollDOMReady?.(null);\n }, [onScrollDOMReady]);\n\n return (\n <div className={cn('tw-flex tw-min-w-0 tw-flex-1 tw-flex-col tw-overflow-hidden', className)}>\n {header && <div className={cn('tw-bg-white tw-px-4 tw-py-3', headerClassName)}>{header}</div>}\n <div className=\"tw-flex tw-h-0 tw-flex-1 tw-flex-col [&_>div]:tw-h-full [&_>div]:tw-overflow-auto\">\n <CodeMirror\n ref={editorRef}\n value={value}\n onChange={onChange}\n extensions={extensions}\n readOnly={readOnly}\n onCreateEditor={handleCreateEditor}\n basicSetup={{ lineNumbers: true, drawSelection: false }}\n />\n </div>\n </div>\n );\n};\n","import { useCallback, useRef } from 'react';\n\nexport const useScrollSync = () => {\n const scrollersRef = useRef<(HTMLElement | null)[]>([]);\n const followersRef = useRef<Map<string, { paneIndex: number; el: HTMLElement }>>(new Map());\n const isSyncingRef = useRef(false);\n const scrollerCallbacksRef = useRef<Map<number, (el: HTMLElement | null) => void>>(new Map());\n const followerCallbacksRef = useRef<Map<string, (el: HTMLElement | null) => void>>(new Map());\n\n const updateFollowers = useCallback(() => {\n for (const [, { paneIndex, el }] of followersRef.current) {\n const scroller = scrollersRef.current[paneIndex];\n if (!scroller) continue;\n el.style.transform = `translateY(-${scroller.scrollTop}px)`;\n }\n }, []);\n\n const handleScroll = useCallback(\n (e: Event) => {\n if (isSyncingRef.current) return;\n isSyncingRef.current = true;\n\n // Px-aligned sync. All panes share LINE_HEIGHT_PX, so matching scrollTop is the same\n // as matching the line at the top of the viewport. Previous ratio-based sync drifted\n // badly when pane heights differed (e.g. 50 lines vs 500 — half-scrolling left snapped\n // right to its midpoint, not to the equivalent line). Clamp to each target's max so\n // the source can scroll past where shorter panes bottom out without errors.\n const sourceScrollTop = (e.target as HTMLElement).scrollTop;\n\n for (const scroller of scrollersRef.current) {\n if (!scroller || scroller === e.target) continue;\n const targetMax = Math.max(0, scroller.scrollHeight - scroller.clientHeight);\n scroller.scrollTop = Math.min(sourceScrollTop, targetMax);\n }\n\n updateFollowers();\n isSyncingRef.current = false;\n },\n [updateFollowers],\n );\n\n const registerScroller = useCallback(\n (index: number) => {\n const existing = scrollerCallbacksRef.current.get(index);\n if (existing) return existing;\n\n const callback = (el: HTMLElement | null) => {\n const prev = scrollersRef.current[index];\n if (prev === el) return;\n\n prev?.removeEventListener('scroll', handleScroll);\n scrollersRef.current[index] = el;\n el?.addEventListener('scroll', handleScroll, { passive: true });\n };\n\n scrollerCallbacksRef.current.set(index, callback);\n return callback;\n },\n [handleScroll],\n );\n\n const registerFollower = useCallback((paneIndex: number, key: string) => {\n const existing = followerCallbacksRef.current.get(key);\n if (existing) return existing;\n\n const callback = (el: HTMLElement | null) => {\n if (el) {\n followersRef.current.set(key, { paneIndex, el });\n } else {\n followersRef.current.delete(key);\n }\n };\n\n followerCallbacksRef.current.set(key, callback);\n return callback;\n }, []);\n\n return { registerScroller, registerFollower };\n};\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { AcceptControls } from './AcceptControls/AcceptControls';\nimport type { ChangeClassification, MergeConflict } from './constants';\nimport { MergePane } from './MergePane';\nimport { useScrollSync } from './useScrollSync';\n\ntype Props = {\n mergeValue: string;\n handleMergeChange: (value: string) => void;\n leftText: string;\n rightText: string;\n leftConflicts: MergeConflict[];\n rightConflicts: MergeConflict[];\n leftHighlightedLines: Set<number>;\n rightHighlightedLines: Set<number>;\n leftClassification: Map<number, ChangeClassification>;\n rightClassification: Map<number, ChangeClassification>;\n mergeHighlightedLines: Set<number>;\n mergeClassification: Map<number, ChangeClassification>;\n acceptLeft: (conflict: MergeConflict) => void;\n acceptRight: (conflict: MergeConflict) => void;\n dismissLeft: (conflict: MergeConflict) => void;\n dismissRight: (conflict: MergeConflict) => void;\n leftHeader?: ReactNode;\n middleHeader?: ReactNode;\n middleHeaderClassName?: string;\n middleClassName?: string;\n rightHeader?: ReactNode;\n className?: string;\n};\n\nexport const MergeEditor = ({\n mergeValue,\n handleMergeChange,\n leftText,\n rightText,\n leftConflicts,\n rightConflicts,\n leftHighlightedLines,\n rightHighlightedLines,\n leftClassification,\n rightClassification,\n mergeHighlightedLines,\n mergeClassification,\n acceptLeft,\n acceptRight,\n dismissLeft,\n dismissRight,\n leftHeader,\n middleHeader,\n middleHeaderClassName,\n middleClassName,\n rightHeader,\n className,\n}: Props) => {\n const { registerScroller, registerFollower } = useScrollSync();\n\n return (\n <div\n className={cn(\n 'tw-flex tw-h-full tw-min-h-0 tw-overflow-hidden tw-bg-white tw-gap-3',\n className,\n )}\n >\n <MergePane\n value={leftText}\n highlightedLines={leftHighlightedLines}\n lineClassification={leftClassification}\n readOnly\n header={leftHeader}\n className=\"tw-rounded-r-lg tw-border tw-border-neutral-200\"\n onScrollDOMReady={registerScroller(0)}\n />\n\n <AcceptControls\n conflicts={leftConflicts}\n side=\"left\"\n onAccept={acceptLeft}\n onDismiss={dismissLeft}\n contentRef={registerFollower(0, 'left-controls')}\n />\n\n <MergePane\n value={mergeValue}\n highlightedLines={mergeHighlightedLines}\n lineClassification={mergeClassification}\n onChange={handleMergeChange}\n header={middleHeader}\n headerClassName={middleHeaderClassName}\n className={cn('tw-border tw-border-neutral-200 tw-rounded-lg', middleClassName)}\n onScrollDOMReady={registerScroller(1)}\n />\n\n <AcceptControls\n conflicts={rightConflicts}\n side=\"right\"\n onAccept={acceptRight}\n onDismiss={dismissRight}\n contentRef={registerFollower(2, 'right-controls')}\n />\n\n <MergePane\n value={rightText}\n highlightedLines={rightHighlightedLines}\n lineClassification={rightClassification}\n readOnly\n header={rightHeader}\n className=\"tw-rounded-l-lg tw-border tw-border-neutral-200\"\n onScrollDOMReady={registerScroller(2)}\n />\n </div>\n );\n};\n","type Props = {\n label: string;\n sublabel?: string;\n};\n\nexport const PaneHeader = ({ label, sublabel }: Props) => (\n <div>\n <p className=\"tw-m-0 tw-text-sm tw-font-medium tw-text-neutral-900\">{label}</p>\n {sublabel && <p className=\"tw-m-0 tw-text-xs tw-text-neutral-400\">{sublabel}</p>}\n </div>\n);\n","import { cn } from '../../../utils';\nimport { Icon } from '../../Icon';\n\ntype Props = {\n remainingConflicts: number;\n remainingSafeChanges: number;\n};\n\nexport const ConflictStatusIndicator = ({ remainingConflicts, remainingSafeChanges }: Props) => {\n const hasConflicts = remainingConflicts > 0;\n const allDone = !hasConflicts && remainingSafeChanges === 0;\n\n const colorClass = hasConflicts\n ? 'tw-text-warning-500'\n : allDone\n ? 'tw-text-primary-500'\n : 'tw-text-neutral-400';\n\n const parts: string[] = [];\n if (hasConflicts) {\n parts.push(`${remainingConflicts} conflict${remainingConflicts !== 1 ? 's' : ''}`);\n }\n if (remainingSafeChanges > 0) {\n parts.push(`${remainingSafeChanges} change${remainingSafeChanges !== 1 ? 's' : ''}`);\n }\n\n return (\n <p\n className={cn(\n 'tw-m-0 tw-flex tw-items-center tw-gap-1.5 tw-text-sm tw-font-medium',\n colorClass,\n )}\n >\n <Icon icon={allDone ? 'circle-check' : 'triangle-exclamation'} />\n {allDone ? 'All changes resolved' : `${parts.join(', ')} remaining`}\n </p>\n );\n};\n","import { diffLines } from 'diff';\n\nimport { type ChangeClassification, CHUNK_TYPE, type DiffChunk } from './constants';\n\n/**\n * Computes diff chunks between oldText and newText using line-level diffing.\n * Adjacent removed+added pairs are kept as separate chunks so the consumer\n * can pair them into \"modifications\" for accept controls.\n */\nexport const computeDiffChunks = (oldText: string, newText: string): DiffChunk[] => {\n const changes = diffLines(oldText, newText);\n const chunks: DiffChunk[] = [];\n let oldLine = 1;\n let newLine = 1;\n\n for (const change of changes) {\n if (change.value === '') continue;\n\n const lineCount = change.count || change.value.replace(/\\n$/, '').split('\\n').length;\n\n if (change.removed) {\n // newStart/newEnd anchor to the current new-side position (insertion point) for alignment\n chunks.push({\n type: CHUNK_TYPE.REMOVED,\n value: change.value,\n oldStart: oldLine,\n oldEnd: oldLine + lineCount - 1,\n newStart: newLine,\n newEnd: newLine,\n });\n oldLine += lineCount;\n } else if (change.added) {\n // oldStart/oldEnd anchor to the current old-side position (insertion point) for alignment\n chunks.push({\n type: CHUNK_TYPE.ADDED,\n value: change.value,\n oldStart: oldLine,\n oldEnd: oldLine,\n newStart: newLine,\n newEnd: newLine + lineCount - 1,\n });\n newLine += lineCount;\n } else {\n chunks.push({\n type: CHUNK_TYPE.UNCHANGED,\n value: change.value,\n oldStart: oldLine,\n oldEnd: oldLine + lineCount - 1,\n newStart: newLine,\n newEnd: newLine + lineCount - 1,\n });\n oldLine += lineCount;\n newLine += lineCount;\n }\n }\n\n return chunks;\n};\n\n/**\n * Collects 1-indexed line numbers that are marked as changed (added or removed)\n * from a set of diff chunks. `side` determines which line range to use.\n */\nexport const getChangedLineNumbers = (chunks: DiffChunk[], side: 'old' | 'new'): Set<number> => {\n const lines = new Set<number>();\n\n for (const chunk of chunks) {\n if (chunk.type === CHUNK_TYPE.UNCHANGED) continue;\n\n if (side === 'old' && chunk.type === CHUNK_TYPE.REMOVED) {\n for (let i = chunk.oldStart; i <= chunk.oldEnd; i++) lines.add(i);\n }\n if (side === 'new' && chunk.type === CHUNK_TYPE.ADDED) {\n for (let i = chunk.newStart; i <= chunk.newEnd; i++) lines.add(i);\n }\n }\n\n return lines;\n};\n\n/**\n * Filters changed line numbers, keeping only those that are classified\n * and not suppressed (resolved/dismissed).\n *\n * `classification` and `suppressedLines` must be keyed by line numbers\n * from the same `side` (old-side lines for 'old', new-side lines for 'new').\n */\nexport const filterHighlightedLines = (\n chunks: DiffChunk[],\n side: 'old' | 'new',\n classification: Map<number, ChangeClassification>,\n suppressedLines: Set<number>,\n): Set<number> => {\n const filtered = new Set<number>();\n for (const line of getChangedLineNumbers(chunks, side)) {\n if (classification.has(line) && !suppressedLines.has(line)) filtered.add(line);\n }\n return filtered;\n};\n\n/**\n * Replaces lines in `text` between `startLine` and `endLine` (1-indexed, inclusive)\n * with `replacementLines`. If startLine > endLine, inserts before startLine.\n */\nexport const replaceLines = (\n text: string,\n startLine: number,\n endLine: number,\n replacement: string,\n): string => {\n const lines = text.split('\\n');\n const before = lines.slice(0, startLine - 1);\n const after = startLine > endLine ? lines.slice(startLine - 1) : lines.slice(endLine);\n\n const replacementArr = replacement === '' ? [] : replacement.replace(/\\n$/, '').split('\\n');\n\n return [...before, ...replacementArr, ...after].join('\\n');\n};\n","import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { diff3Merge } from 'node-diff3';\n\nimport {\n CHANGE_CLASS,\n type ChangeClassification,\n CHUNK_TYPE,\n type DiffChunk,\n type MergeConflict,\n} from './constants';\nimport {\n computeDiffChunks,\n filterHighlightedLines,\n getChangedLineNumbers,\n replaceLines,\n} from './helpers';\n\nconst DEBOUNCE_MS = 150;\n\ntype ConflictPair = {\n id: string;\n leftStart: number;\n leftEnd: number;\n rightStart: number;\n rightEnd: number;\n};\n\ntype Side = 'left' | 'right';\n\nconst rangesOverlap = (s1: number, e1: number, s2: number, e2: number) => s1 <= e2 && e1 >= s2;\n\nconst computeSuppressedLines = (\n dismissedLines: Set<number>,\n pairs: ConflictPair[],\n resolvedIds: Set<string>,\n getRange: (p: ConflictPair) => [number, number],\n): Set<number> => {\n const lines = new Set(dismissedLines);\n for (const pair of pairs) {\n if (resolvedIds.has(pair.id)) {\n const [start, end] = getRange(pair);\n for (let i = start; i <= end; i++) lines.add(i);\n }\n }\n return lines;\n};\n\nconst filterVisibleConflicts = (\n conflicts: MergeConflict[],\n classification: Map<number, ChangeClassification>,\n dismissedLines: Set<number>,\n getRange: (c: MergeConflict) => [number, number],\n findPair: (c: MergeConflict) => ConflictPair | undefined,\n fullyResolvedPairIds: Set<string>,\n): MergeConflict[] =>\n conflicts.filter((c) => {\n const [start, end] = getRange(c);\n let hasClassifiedLine = false;\n let allDismissed = true;\n for (let i = start; i <= end; i++) {\n if (classification.has(i)) hasClassifiedLine = true;\n if (!dismissedLines.has(i)) allDismissed = false;\n }\n if (!hasClassifiedLine || allDismissed) return false;\n\n const pair = findPair(c);\n return !pair || !fullyResolvedPairIds.has(pair.id);\n });\n\nexport const useMergeDiff = (baseText: string, leftText: string, rightText: string) => {\n const [mergeValue, setMergeValue] = useState(baseText);\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const [debouncedMergeValue, setDebouncedMergeValue] = useState(mergeValue);\n const [acceptedPairSides, setAcceptedPairSides] = useState<Map<string, Set<Side>>>(\n () => new Map(),\n );\n const [dismissedLeftLines, setDismissedLeftLines] = useState<Set<number>>(() => new Set());\n const [dismissedRightLines, setDismissedRightLines] = useState<Set<number>>(() => new Set());\n\n const reset = useCallback(() => {\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n debounceRef.current = null;\n }\n\n setMergeValue(baseText);\n setDebouncedMergeValue(baseText);\n setAcceptedPairSides(new Map());\n setDismissedLeftLines(new Set());\n setDismissedRightLines(new Set());\n }, [baseText]);\n\n // Reset all state when input texts change (e.g. async data arrives).\n // useLayoutEffect prevents a one-frame flash of incorrect diff rendering\n // when mergeValue is still '' but the real texts have arrived.\n useLayoutEffect(() => {\n reset();\n }, [baseText, leftText, rightText]); // eslint-disable-line react-hooks/exhaustive-deps\n\n // Clean up debounce timer on unmount\n useEffect(() => {\n return () => {\n if (debounceRef.current) clearTimeout(debounceRef.current);\n };\n }, []);\n\n const handleMergeChange = useCallback((value: string) => {\n setMergeValue(value);\n\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n }\n\n debounceRef.current = setTimeout(() => {\n setDebouncedMergeValue(value);\n }, DEBOUNCE_MS);\n }, []);\n\n // diff(production, mergeResult) — highlights for left pane\n const leftDiffChunks = useMemo(\n () => computeDiffChunks(leftText, debouncedMergeValue),\n [leftText, debouncedMergeValue],\n );\n\n // diff(mergeResult, branch) — highlights for right pane\n const rightDiffChunks = useMemo(\n () => computeDiffChunks(debouncedMergeValue, rightText),\n [debouncedMergeValue, rightText],\n );\n\n // Recompute conflict positions based on current merge value vs both sides\n const leftConflicts = useMemo(() => pairChunksIntoConflicts(leftDiffChunks), [leftDiffChunks]);\n\n const rightConflicts = useMemo(() => pairChunksIntoConflicts(rightDiffChunks), [rightDiffChunks]);\n\n // Base-vs-side diffs (stable unless source texts change)\n const leftVsBase = useMemo(() => computeDiffChunks(baseText, leftText), [baseText, leftText]);\n const rightVsBase = useMemo(() => computeDiffChunks(baseText, rightText), [baseText, rightText]);\n\n const { leftClassification, rightClassification, conflictPairs } = useMemo(() => {\n const baseLines = baseText.split('\\n');\n const leftLines = leftText.split('\\n');\n const rightLines = rightText.split('\\n');\n\n const result = diff3Merge(leftLines, baseLines, rightLines);\n\n const leftConflictLineSet = new Set<number>();\n const rightConflictLineSet = new Set<number>();\n const pairs: ConflictPair[] = [];\n\n for (const block of result) {\n if ('conflict' in block && block.conflict) {\n const { a, aIndex, b, bIndex } = block.conflict;\n for (let i = 0; i < a.length; i++) leftConflictLineSet.add(aIndex + i + 1);\n for (let i = 0; i < b.length; i++) rightConflictLineSet.add(bIndex + i + 1);\n\n pairs.push({\n id: `pair-${aIndex}-${bIndex}`,\n leftStart: aIndex + 1,\n leftEnd: aIndex + a.length,\n rightStart: bIndex + 1,\n rightEnd: bIndex + b.length,\n });\n }\n }\n\n const leftChanged = getChangedLineNumbers(leftVsBase, 'new');\n const rightChanged = getChangedLineNumbers(rightVsBase, 'new');\n\n const leftMap = new Map<number, ChangeClassification>();\n for (const line of leftChanged) {\n leftMap.set(line, leftConflictLineSet.has(line) ? CHANGE_CLASS.CONFLICT : CHANGE_CLASS.SAFE);\n }\n\n const rightMap = new Map<number, ChangeClassification>();\n for (const line of rightChanged) {\n rightMap.set(\n line,\n rightConflictLineSet.has(line) ? CHANGE_CLASS.CONFLICT : CHANGE_CLASS.SAFE,\n );\n }\n\n return {\n leftClassification: leftMap,\n rightClassification: rightMap,\n conflictPairs: pairs,\n };\n }, [baseText, leftText, rightText, leftVsBase, rightVsBase]);\n\n const findPairForLeft = useCallback(\n (conflict: MergeConflict) =>\n conflictPairs.find((p) =>\n rangesOverlap(conflict.oldStartLine, conflict.oldEndLine, p.leftStart, p.leftEnd),\n ),\n [conflictPairs],\n );\n\n const findPairForRight = useCallback(\n (conflict: MergeConflict) =>\n conflictPairs.find((p) =>\n rangesOverlap(conflict.newStartLine, conflict.newEndLine, p.rightStart, p.rightEnd),\n ),\n [conflictPairs],\n );\n\n const markSideAccepted = useCallback((pair: ConflictPair | undefined, side: Side) => {\n if (!pair) return;\n setAcceptedPairSides((prev) => {\n const next = new Map(prev);\n const sides = new Set(prev.get(pair.id) ?? []);\n sides.add(side);\n next.set(pair.id, sides);\n return next;\n });\n }, []);\n\n const isOtherSideAccepted = useCallback(\n (pair: ConflictPair | undefined, side: Side) => {\n if (!pair) return false;\n const otherSide = side === 'left' ? 'right' : 'left';\n return acceptedPairSides.get(pair.id)?.has(otherSide) ?? false;\n },\n [acceptedPairSides],\n );\n\n const acceptSide = useCallback(\n (conflict: MergeConflict, side: Side) => {\n const findPair = side === 'left' ? findPairForLeft : findPairForRight;\n const pair = findPair(conflict);\n const otherAccepted = isOtherSideAccepted(pair, side);\n const sourceValue = side === 'left' ? conflict.oldValue : conflict.newValue;\n const targetStart = side === 'left' ? conflict.newStartLine : conflict.oldStartLine;\n const targetEnd = side === 'left' ? conflict.newEndLine : conflict.oldEndLine;\n\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n debounceRef.current = null;\n }\n\n const mergeTargetEmpty =\n side === 'left' ? conflict.newValue === '' : conflict.oldValue === '';\n const newValue = otherAccepted\n ? replaceLines(mergeValue, targetEnd + 1, targetEnd, sourceValue)\n : mergeTargetEmpty\n ? replaceLines(mergeValue, targetStart, targetStart - 1, sourceValue)\n : replaceLines(mergeValue, targetStart, targetEnd, sourceValue);\n\n setMergeValue(newValue);\n setDebouncedMergeValue(newValue);\n markSideAccepted(pair, side);\n\n if (!pair) {\n // Dismiss the source side-pane lines so the change doesn't reappear\n // if the user later edits the accepted text in the merge pane\n const setDismissedSide = side === 'left' ? setDismissedLeftLines : setDismissedRightLines;\n const [sideStart, sideEnd] =\n side === 'left'\n ? [conflict.oldStartLine, conflict.oldEndLine]\n : [conflict.newStartLine, conflict.newEndLine];\n\n setDismissedSide((prev) => {\n const next = new Set(prev);\n for (let i = sideStart; i <= sideEnd; i++) next.add(i);\n return next;\n });\n }\n },\n [mergeValue, findPairForLeft, findPairForRight, isOtherSideAccepted, markSideAccepted],\n );\n\n const acceptLeft = useCallback(\n (conflict: MergeConflict) => acceptSide(conflict, 'left'),\n [acceptSide],\n );\n\n const acceptRight = useCallback(\n (conflict: MergeConflict) => acceptSide(conflict, 'right'),\n [acceptSide],\n );\n\n const dismissSide = useCallback((conflict: MergeConflict, side: Side) => {\n const setDismissed = side === 'left' ? setDismissedLeftLines : setDismissedRightLines;\n const [sideStart, sideEnd] =\n side === 'left'\n ? [conflict.oldStartLine, conflict.oldEndLine]\n : [conflict.newStartLine, conflict.newEndLine];\n\n setDismissed((prev) => {\n const next = new Set(prev);\n for (let i = sideStart; i <= sideEnd; i++) next.add(i);\n return next;\n });\n }, []);\n\n const dismissLeft = useCallback(\n (conflict: MergeConflict) => dismissSide(conflict, 'left'),\n [dismissSide],\n );\n\n const dismissRight = useCallback(\n (conflict: MergeConflict) => dismissSide(conflict, 'right'),\n [dismissSide],\n );\n\n const fullyResolvedPairIds = useMemo(() => {\n const ids = new Set<string>();\n for (const pair of conflictPairs) {\n const leftAccepted = acceptedPairSides.get(pair.id)?.has('left') ?? false;\n const rightAccepted = acceptedPairSides.get(pair.id)?.has('right') ?? false;\n\n let leftDismissed = true;\n for (let i = pair.leftStart; i <= pair.leftEnd; i++) {\n if (!dismissedLeftLines.has(i)) {\n leftDismissed = false;\n break;\n }\n }\n\n let rightDismissed = true;\n for (let i = pair.rightStart; i <= pair.rightEnd; i++) {\n if (!dismissedRightLines.has(i)) {\n rightDismissed = false;\n break;\n }\n }\n\n if ((leftAccepted || leftDismissed) && (rightAccepted || rightDismissed)) {\n ids.add(pair.id);\n }\n }\n return ids;\n }, [conflictPairs, acceptedPairSides, dismissedLeftLines, dismissedRightLines]);\n\n const visibleLeftConflicts = useMemo(\n () =>\n filterVisibleConflicts(\n leftConflicts,\n leftClassification,\n dismissedLeftLines,\n (c) => [c.oldStartLine, c.oldEndLine],\n findPairForLeft,\n fullyResolvedPairIds,\n ),\n [leftConflicts, leftClassification, dismissedLeftLines, findPairForLeft, fullyResolvedPairIds],\n );\n\n const visibleRightConflicts = useMemo(\n () =>\n filterVisibleConflicts(\n rightConflicts,\n rightClassification,\n dismissedRightLines,\n (c) => [c.newStartLine, c.newEndLine],\n findPairForRight,\n fullyResolvedPairIds,\n ),\n [\n rightConflicts,\n rightClassification,\n dismissedRightLines,\n findPairForRight,\n fullyResolvedPairIds,\n ],\n );\n\n const suppressedLeftLines = useMemo(\n () =>\n computeSuppressedLines(dismissedLeftLines, conflictPairs, fullyResolvedPairIds, (p) => [\n p.leftStart,\n p.leftEnd,\n ]),\n [conflictPairs, fullyResolvedPairIds, dismissedLeftLines],\n );\n\n const suppressedRightLines = useMemo(\n () =>\n computeSuppressedLines(dismissedRightLines, conflictPairs, fullyResolvedPairIds, (p) => [\n p.rightStart,\n p.rightEnd,\n ]),\n [conflictPairs, fullyResolvedPairIds, dismissedRightLines],\n );\n\n const { mergeHighlightedLines, mergeClassification } = useMemo(() => {\n const mergeLeftLines = getChangedLineNumbers(leftDiffChunks, 'new');\n const mergeRightLines = getChangedLineNumbers(rightDiffChunks, 'old');\n\n const mergeLineToPair = new Map<number, string>();\n\n for (const conflict of leftConflicts) {\n const pair = findPairForLeft(conflict);\n if (pair) {\n for (let i = conflict.newStartLine; i <= conflict.newEndLine; i++) {\n mergeLineToPair.set(i, pair.id);\n }\n }\n }\n\n for (const conflict of rightConflicts) {\n const pair = findPairForRight(conflict);\n if (pair) {\n for (let i = conflict.oldStartLine; i <= conflict.oldEndLine; i++) {\n mergeLineToPair.set(i, pair.id);\n }\n }\n }\n\n // Derive suppressed merge lines from side-pane dismissals.\n // Side texts are static, so their line numbers never go stale.\n const suppressedMergeLines = new Set<number>();\n\n for (const conflict of leftConflicts) {\n if (findPairForLeft(conflict)) continue;\n if (conflict.oldStartLine > conflict.oldEndLine) continue;\n let allDismissed = true;\n for (let i = conflict.oldStartLine; i <= conflict.oldEndLine; i++) {\n if (!dismissedLeftLines.has(i)) {\n allDismissed = false;\n break;\n }\n }\n if (allDismissed) {\n for (let i = conflict.newStartLine; i <= conflict.newEndLine; i++) {\n suppressedMergeLines.add(i);\n }\n }\n }\n\n for (const conflict of rightConflicts) {\n if (findPairForRight(conflict)) continue;\n if (conflict.newStartLine > conflict.newEndLine) continue;\n let allDismissed = true;\n for (let i = conflict.newStartLine; i <= conflict.newEndLine; i++) {\n if (!dismissedRightLines.has(i)) {\n allDismissed = false;\n break;\n }\n }\n if (allDismissed) {\n for (let i = conflict.oldStartLine; i <= conflict.oldEndLine; i++) {\n suppressedMergeLines.add(i);\n }\n }\n }\n\n const allMergeLines = new Set<number>();\n for (const line of mergeLeftLines) allMergeLines.add(line);\n for (const line of mergeRightLines) allMergeLines.add(line);\n\n const highlighted = new Set<number>();\n const classification = new Map<number, ChangeClassification>();\n\n for (const line of allMergeLines) {\n if (suppressedMergeLines.has(line)) continue;\n\n const pairId = mergeLineToPair.get(line);\n if (pairId && fullyResolvedPairIds.has(pairId)) continue;\n\n highlighted.add(line);\n classification.set(line, pairId ? CHANGE_CLASS.CONFLICT : CHANGE_CLASS.SAFE);\n }\n\n return { mergeHighlightedLines: highlighted, mergeClassification: classification };\n }, [\n leftDiffChunks,\n rightDiffChunks,\n leftConflicts,\n rightConflicts,\n findPairForLeft,\n findPairForRight,\n fullyResolvedPairIds,\n dismissedLeftLines,\n dismissedRightLines,\n ]);\n\n const leftHighlightedLines = useMemo(\n () => filterHighlightedLines(leftDiffChunks, 'old', leftClassification, suppressedLeftLines),\n [leftDiffChunks, leftClassification, suppressedLeftLines],\n );\n\n const rightHighlightedLines = useMemo(\n () => filterHighlightedLines(rightDiffChunks, 'new', rightClassification, suppressedRightLines),\n [rightDiffChunks, rightClassification, suppressedRightLines],\n );\n\n const remainingSafeChanges = useMemo(() => {\n const leftSafe = visibleLeftConflicts.filter((c) => !findPairForLeft(c)).length;\n const rightSafe = visibleRightConflicts.filter((c) => !findPairForRight(c)).length;\n return leftSafe + rightSafe;\n }, [visibleLeftConflicts, visibleRightConflicts, findPairForLeft, findPairForRight]);\n\n return {\n mergeValue,\n handleMergeChange,\n leftConflicts: visibleLeftConflicts,\n rightConflicts: visibleRightConflicts,\n leftHighlightedLines,\n rightHighlightedLines,\n leftClassification,\n rightClassification,\n mergeHighlightedLines,\n mergeClassification,\n acceptLeft,\n acceptRight,\n dismissLeft,\n dismissRight,\n totalConflicts: conflictPairs.length,\n resolvedConflicts: fullyResolvedPairIds.size,\n remainingSafeChanges,\n isDirty: mergeValue !== baseText || dismissedLeftLines.size > 0 || dismissedRightLines.size > 0,\n reset,\n };\n};\n\n/**\n * Pairs adjacent removed+added chunks into MergeConflicts.\n * A standalone REMOVED or ADDED chunk becomes a conflict with\n * the other side empty.\n */\nconst pairChunksIntoConflicts = (chunks: DiffChunk[]): MergeConflict[] => {\n const conflicts: MergeConflict[] = [];\n let i = 0;\n\n while (i < chunks.length) {\n const chunk = chunks[i]!;\n\n if (chunk.type === CHUNK_TYPE.UNCHANGED) {\n i++;\n continue;\n }\n\n if (chunk.type === CHUNK_TYPE.REMOVED) {\n const next = chunks[i + 1];\n\n if (next?.type === CHUNK_TYPE.ADDED) {\n conflicts.push({\n id: `${chunk.oldStart}-${next.newStart}`,\n oldValue: chunk.value,\n oldStartLine: chunk.oldStart,\n oldEndLine: chunk.oldEnd,\n newValue: next.value,\n newStartLine: next.newStart,\n newEndLine: next.newEnd,\n });\n i += 2;\n } else {\n conflicts.push({\n id: `${chunk.oldStart}-del`,\n oldValue: chunk.value,\n oldStartLine: chunk.oldStart,\n oldEndLine: chunk.oldEnd,\n newValue: '',\n newStartLine: chunk.newStart,\n newEndLine: chunk.newStart,\n });\n i++;\n }\n } else {\n conflicts.push({\n id: `add-${chunk.newStart}`,\n oldValue: '',\n oldStartLine: chunk.oldStart,\n oldEndLine: chunk.oldStart,\n newValue: chunk.value,\n newStartLine: chunk.newStart,\n newEndLine: chunk.newEnd,\n });\n i++;\n }\n }\n\n return conflicts;\n};\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { cn } from '../utils';\n\n/** @deprecated Use `Collapsible` instead. */\nexport type CollapseProps = {\n open: boolean;\n header: ReactNode;\n className?: string;\n bodyClassName?: string;\n children: ReactNode;\n onClick?: () => void;\n animationClassName?: string;\n hidden?: boolean;\n};\n\n/** @deprecated Use `Collapsible` instead. */\nexport const Collapse = ({\n open,\n header,\n className,\n bodyClassName,\n children,\n onClick,\n animationClassName,\n hidden,\n ...rest\n}: CollapseProps & ComponentProps<'div'>) => {\n return (\n <div\n {...rest}\n hidden={hidden}\n role={onClick && 'button'}\n tabIndex={onClick ? 0 : undefined}\n onClick={onClick}\n onKeyDown={(e) => {\n if (onClick && (e.key === 'Enter' || e.key === ' ')) {\n onClick();\n }\n }}\n data-state={open ? 'open' : 'closed'}\n className={cn('tw-group tw-flex tw-flex-col', className, {\n 'tw-cursor-pointer': onClick,\n 'tw-hidden': hidden,\n })}\n >\n {header}\n <div\n className={cn(\n 'tw-grid tw-duration-300',\n open ? 'tw-grid-rows-[1fr]' : 'tw-grid-rows-[0fr]',\n animationClassName,\n )}\n >\n <div className={cn('tw-overflow-hidden', open && 'tw-animate-collapseDown', bodyClassName)}>\n {children}\n </div>\n </div>\n </div>\n );\n};\n","import { useState } from 'react';\nimport type { KeyboardEvent, MouseEvent, ReactNode } from 'react';\nimport { cva } from 'class-variance-authority';\n\nimport { Icon } from '../components/Icon';\nimport { keyCodes } from '../constants/keyCodes';\nimport { cn } from '../utils';\n\nimport { Collapse } from './Collapse';\n\nconst headerVariants = cva(\n 'tw-flex tw-flex-1 tw-items-center tw-gap-2 tw-rounded tw-px-4 tw-py-2.5 tw-text-sm tw-text-neutral-400',\n {\n variants: {\n variant: {\n default: 'tw-bg-neutral-100',\n white: 'tw-bg-white',\n },\n isDisabled: {\n true: 'tw-cursor-not-allowed tw-opacity-50',\n false: '',\n },\n hasEnforcedState: {\n true: '',\n false: '',\n },\n },\n compoundVariants: [\n {\n isDisabled: false,\n hasEnforcedState: false,\n class: 'tw-cursor-pointer hover:tw-text-secondary-500',\n },\n ],\n defaultVariants: {\n variant: 'default',\n isDisabled: false,\n hasEnforcedState: false,\n },\n },\n);\n\ntype Props = {\n header: ReactNode;\n isDisabled?: boolean;\n defaultExpanded?: boolean;\n className?: string;\n bodyClassName?: string;\n headerClassName?: string;\n isOpen?: boolean;\n onToggle?: (event?: MouseEvent<HTMLDivElement> | KeyboardEvent<HTMLDivElement>) => void;\n variant?: 'default' | 'white';\n children: ReactNode;\n};\n\nexport const CollapsiblePanel = ({\n header,\n className,\n bodyClassName,\n headerClassName,\n defaultExpanded = false,\n isDisabled = false,\n children,\n isOpen,\n onToggle,\n variant = 'default',\n}: Props) => {\n const [isUncontrolledOpen, setIsUncontrolledOpen] = useState(defaultExpanded);\n const open = isOpen ?? isUncontrolledOpen;\n const hasEnforcedState = isOpen !== undefined && onToggle === undefined;\n\n const handleCollapse = (event: MouseEvent<HTMLDivElement> | KeyboardEvent<HTMLDivElement>) => {\n if (event) {\n event.stopPropagation();\n }\n if (!isDisabled) {\n setIsUncontrolledOpen(!isUncontrolledOpen);\n }\n };\n\n const handleClick = (e: MouseEvent<HTMLDivElement> | KeyboardEvent<HTMLDivElement>) => {\n if (onToggle) {\n onToggle(e);\n return;\n }\n handleCollapse(e);\n };\n\n const handleKeyUp = (e: KeyboardEvent<HTMLDivElement>) => {\n if ([keyCodes.ENTER, keyCodes.SPACE].includes(e.key)) {\n handleClick(e);\n }\n };\n\n return (\n <Collapse\n open={open}\n className={cn(\n 'tw-rounded !tw-border !tw-border-solid !tw-border-neutral-200 tw-bg-white',\n className,\n )}\n header={\n <div\n className={cn(headerVariants({ variant, isDisabled, hasEnforcedState }), headerClassName)}\n {...(!hasEnforcedState &&\n !isDisabled && {\n role: 'button',\n tabIndex: 0,\n onClick: handleClick,\n onKeyUp: handleKeyUp,\n })}\n >\n <div className=\"tw-flex tw-flex-1 tw-items-center tw-gap-2 tw-py-px tw-text-sm tw-font-medium tw-text-neutral-800\">\n {header}\n </div>\n {!isDisabled && (\n <div className=\"tw-ml-auto tw-shrink-0\">\n <Icon\n icon=\"chevron-down\"\n className={cn('tw-text-xs group-data-[state=open]:tw-rotate-180')}\n />\n </div>\n )}\n </div>\n }\n >\n <div className={cn('tw-px-4 tw-py-3', bodyClassName)}>{children}</div>\n </Collapse>\n );\n};\n","import { useState } from 'react';\nimport type { KeyboardEvent, PropsWithChildren } from 'react';\n\nimport { Icon } from '../components/Icon';\nimport { keyCodes } from '../constants/keyCodes';\nimport { cn } from '../utils';\n\nimport { Collapse } from './Collapse';\n\ntype Props = PropsWithChildren<{\n defaultExpanded?: boolean;\n labelCollapse?: string;\n labelOpen?: string;\n placement?: 'top' | 'bottom';\n className?: string;\n}>;\n\nexport const PanelWithDetails = ({\n defaultExpanded = false,\n labelCollapse = 'Hide details',\n labelOpen = 'Show details',\n placement = 'top',\n children,\n}: Props) => {\n const [isOpen, setIsOpen] = useState(defaultExpanded);\n\n const handleKeyUp = (e: KeyboardEvent<HTMLDivElement>) => {\n if ([keyCodes.ENTER, keyCodes.SPACE].includes(e.key)) {\n e.stopPropagation();\n setIsOpen(!isOpen);\n }\n };\n\n return (\n <Collapse\n open={isOpen}\n className={cn(placement === 'bottom' ? 'tw-flex-col-reverse' : 'tw-flex-col')}\n header={\n <div\n role=\"button\"\n tabIndex={0}\n className={cn(\n 'tw-flex tw-cursor-pointer tw-items-center tw-rounded-sm tw-bg-neutral-100 tw-px-4 tw-py-3 tw-text-sm tw-text-neutral-400',\n 'hover:tw-text-secondary-500',\n )}\n onClick={() => setIsOpen(!isOpen)}\n onKeyUp={handleKeyUp}\n >\n <div className=\"tw-mr-2 tw-flex tw-shrink-0 tw-items-center\">\n <Icon\n icon=\"chevron-down\"\n className={cn(\n 'tw-text-xs',\n !isOpen ? '-tw-rotate-90' : placement === 'bottom' ? 'tw-rotate-180' : '',\n )}\n />\n </div>\n\n <div className=\"tw-py-0.5\">{isOpen ? labelCollapse : labelOpen}</div>\n </div>\n }\n >\n <div className=\"tw-px-5 tw-py-3\">{children}</div>\n </Collapse>\n );\n};\n","import { useId } from 'react';\n\nimport { cn } from '../../utils';\n\nexport type Height = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\ntype SkeletonProps = {\n height?: Height;\n className?: string;\n count?: number;\n};\n\nconst HEIGHT_CLASS_NAME: Record<Height, string> = {\n xxs: 'tw-h-3 tw-rounded',\n xs: 'tw-h-4 tw-rounded',\n sm: 'tw-h-5 tw-rounded',\n md: 'tw-h-6 tw-rounded-md',\n lg: 'tw-h-8 tw-rounded-lg',\n xl: 'tw-h-10 tw-rounded-lg',\n '2xl': 'tw-h-12 tw-rounded-lg',\n};\n\nconst ANIMATION_CLASS_NAME = cn(\n // base styles\n 'tw-relative',\n 'tw-overflow-hidden',\n 'tw-pointer-events-none',\n 'tw-bg-neutral-150',\n\n // before\n 'before:tw-content-[\"\"]',\n 'before:tw-opacity-100',\n 'before:tw-absolute',\n 'before:tw-inset-0',\n 'before:-tw-translate-x-full',\n 'before:tw-animate-[shimmer_2s_infinite]',\n 'before:tw-bg-gradient-to-r',\n 'before:tw-from-transparent',\n 'before:tw-to-transparent',\n 'before:tw-via-neutral-50',\n);\n\nexport const Skeleton = ({ height = 'md', className, count = 1 }: SkeletonProps) => {\n const prefixId = useId();\n const keys = Array.from({ length: count }, (_, i) => `${prefixId}-${i}`);\n\n return (\n <>\n {keys.map((key) => (\n <div key={key} className={cn(HEIGHT_CLASS_NAME[height], ANIMATION_CLASS_NAME, className)} />\n ))}\n </>\n );\n};\n","import { cn } from '../../utils';\n\nimport type { Height } from './Skeleton';\nimport { Skeleton } from './Skeleton';\n\nconst duplicateArray = (arr: string[], times: number) => {\n return Array(times).fill(arr).flat();\n};\n\nconst Item = ({\n className,\n iconHeight = 'md',\n rowHeight = 'sm',\n iconClassName = 'tw-w-6 ',\n}: {\n className: string;\n iconHeight?: Height;\n rowHeight?: Height;\n iconClassName?: string;\n}) => (\n <div className=\"tw-flex tw-items-center tw-gap-3\">\n <Skeleton height={iconHeight} className={cn('tw-rounded-full tw-shrink-0', iconClassName)} />\n <Skeleton height={rowHeight} className={className} />\n </div>\n);\n\nexport const SkeletonList = ({\n hasHeading = false,\n groups = 3,\n className,\n iconHeight = 'md',\n rowHeight = 'sm',\n iconClassName,\n}: {\n hasHeading?: boolean;\n groups?: number;\n className?: string;\n iconHeight?: Height;\n rowHeight?: Height;\n iconClassName?: string;\n}) => (\n <div className={cn('tw-flex tw-flex-col tw-gap-4', className)}>\n {hasHeading ? <Skeleton height=\"xxs\" className=\"tw-w-28\" /> : null}\n\n <div\n className={cn(\n 'tw-flex tw-flex-col',\n ['xxs', 'xs'].includes(rowHeight) ? 'tw-gap-3' : 'tw-gap-4',\n )}\n >\n {duplicateArray(['tw-w-5/6', 'tw-w-3/4', 'tw-w-4/5', 'tw-w-2/3'], groups).map(\n (className, index) => (\n <Item\n // oxlint-disable-next-line react/no-array-index-key\n key={`${className}-${index}`}\n iconHeight={iconHeight}\n rowHeight={rowHeight}\n iconClassName={iconClassName}\n className={className}\n />\n ),\n )}\n </div>\n </div>\n);\n","import type { ReactNode } from 'react';\n\ntype Props = {\n children?: ReactNode;\n};\n\nexport const EmptySearchContent = ({ children = 'No results found.' }: Props) => {\n return (\n <div className=\"tw-px-0 tw-py-[30px] tw-text-center tw-text-sm tw-text-neutral-400\">\n {children}\n </div>\n );\n};\n","import { cn } from '../utils/classNames';\n\ntype DotsLoaderProps = {\n className?: string;\n};\n\nconst DOT_CLASS_NAME = cn('tw-h-1.5', 'tw-w-1.5', 'tw-rounded-full', 'tw-bg-neutral-700');\n\nexport const DotsLoader = ({ className }: DotsLoaderProps) => {\n return (\n <div\n className={cn(\n 'tw-relative -tw-m-0.5 tw-flex tw-items-center tw-justify-center tw-gap-1',\n className,\n )}\n >\n <div className={cn(DOT_CLASS_NAME, 'tw-animate-dot-pulse-1')} />\n <div className={cn(DOT_CLASS_NAME, 'tw-animate-dot-pulse-2')} />\n <div className={cn(DOT_CLASS_NAME, 'tw-animate-dot-pulse-3')} />\n </div>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nexport const TableBody = ({\n withBorderSeparator = true,\n className,\n ...props\n}: { withBorderSeparator?: boolean } & ComponentProps<'tbody'>) => {\n return (\n <tbody\n className={cn(\n {\n '[&_tr]:tw-border-0 [&_tr]:tw-border-b-neutral-150 [&_tr]:tw-border-b [&_tr]:tw-border-solid [&_tr:last-child]:tw-border-0':\n withBorderSeparator,\n },\n className,\n )}\n {...props}\n />\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nexport const TableCell = ({ className, ...props }: ComponentProps<'td'>) => {\n return <td className={cn('tw-px-3 tw-py-2', className)} {...props} />;\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nexport const TableFooter = ({ className, ...props }: ComponentProps<'tfoot'>) => {\n return (\n <tfoot\n className={cn(\n 'tw-bg-muted/50 tw-border-t tw-font-medium [&>tr]:last:tw-border-b-0',\n className,\n )}\n {...props}\n />\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nexport const TableHead = ({ className, ...props }: ComponentProps<'th'>) => {\n return (\n <th\n className={cn(\n 'tw-px-3 tw-py-2 tw-text-left tw-font-medium tw-whitespace-nowrap [&:has([role=checkbox])]:tw-pr-0 [&>[role=checkbox]]:tw-translate-y-[2px]',\n className,\n )}\n {...props}\n />\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nexport const TableHeader = ({\n withShadow = false,\n className,\n ...props\n}: { withShadow?: boolean } & ComponentProps<'thead'>) => {\n return (\n <thead\n className={cn(\n 'tw-sticky tw-top-0 tw-z-10 [&_tr]:tw-bg-neutral-100 [&_tr]:tw-border-b [&_tr]:tw-border-neutral-150',\n { 'tw-shadow-table': withShadow },\n className,\n )}\n {...props}\n />\n );\n};\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../utils';\n\nexport const TableRow = ({\n ref,\n className,\n ...props\n}: ComponentProps<'tr'> & { ref?: Ref<ElementRef<'tr'>> }) => (\n <tr ref={ref} className={cn('hover:tw-bg-neutral-100', className)} {...props} />\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { TableBody } from './TableBody';\nimport { TableCell } from './TableCell';\nimport { TableFooter } from './TableFooter';\nimport { TableHead } from './TableHead';\nimport { TableHeader } from './TableHeader';\nimport { TableRow } from './TableRow';\n\ntype Props = {\n borderCollapsed?: boolean;\n bordered?: boolean;\n containerClassName?: string;\n} & ComponentProps<'table'>;\n\nexport const Table = ({\n borderCollapsed = true,\n bordered = false,\n containerClassName,\n className,\n ...props\n}: Props) => {\n return (\n <div\n className={cn(\n 'tw-relative tw-w-full',\n bordered &&\n 'tw-overflow-auto tw-rounded-[10px] tw-border tw-border-solid tw-border-neutral-150',\n containerClassName,\n )}\n >\n <table\n className={cn(\n 'tw-w-full tw-caption-bottom tw-text-sm',\n borderCollapsed ? 'tw-border-collapse' : 'tw-border-separate tw-border-spacing-y-1',\n className,\n )}\n {...props}\n />\n </div>\n );\n};\n\nTable.Header = TableHeader;\nTable.Head = TableHead;\nTable.Body = TableBody;\nTable.Row = TableRow;\nTable.Cell = TableCell;\nTable.Footer = TableFooter;\n","import type { ComponentProps } from 'react';\nimport * as ResizablePrimitive from 'react-resizable-panels';\nimport { cva } from 'class-variance-authority';\n\nconst resizableHandleVariants = cva([\n // base styles\n 'tw-bg-neutral-50',\n 'tw-relative',\n 'tw-flex',\n 'tw-w-px',\n 'tw-items-center',\n 'tw-justify-center',\n\n // focus styles\n 'focus-visible:tw-ring-ring',\n 'focus-visible:tw-ring-1',\n 'focus-visible:tw-ring-offset-1',\n 'focus-visible:tw-outline-hidden',\n\n // after pseudo-element for horizontal\n 'after:tw-absolute',\n 'after:tw-inset-y-0',\n 'after:tw-left-1/2',\n 'after:tw-w-1',\n 'after:tw--translate-x-1/2',\n\n // vertical direction styles\n 'data-[panel-group-direction=vertical]:tw-h-px',\n 'data-[panel-group-direction=vertical]:tw-w-full',\n 'data-[panel-group-direction=vertical]:after:tw-left-0',\n 'data-[panel-group-direction=vertical]:after:tw-h-1',\n 'data-[panel-group-direction=vertical]:after:tw-w-full',\n 'data-[panel-group-direction=vertical]:after:tw-translate-x-0',\n 'data-[panel-group-direction=vertical]:after:tw--translate-y-1/2',\n\n // handle icon rotation for vertical\n '[&[data-panel-group-direction=vertical]>div]:tw-rotate-90',\n]);\n\nexport const ResizableHandle = ({\n className,\n ...props\n}: ComponentProps<typeof ResizablePrimitive.PanelResizeHandle>) => {\n return (\n <ResizablePrimitive.PanelResizeHandle\n className={resizableHandleVariants({ className })}\n {...props}\n />\n );\n};\n","import type { ComponentProps, Ref } from 'react';\nimport * as ResizablePrimitive from 'react-resizable-panels';\nexport type { ImperativePanelHandle } from 'react-resizable-panels';\n\nexport const ResizablePanel = ({\n ref,\n ...props\n}: ComponentProps<typeof ResizablePrimitive.Panel> & {\n ref?: Ref<ResizablePrimitive.ImperativePanelHandle>;\n}) => {\n return <ResizablePrimitive.Panel ref={ref} {...props} />;\n};\n","import type { ComponentProps } from 'react';\nimport * as ResizablePrimitive from 'react-resizable-panels';\n\nimport { cn } from '../../utils';\n\nexport const ResizablePanelGroup = ({\n className,\n ...props\n}: ComponentProps<typeof ResizablePrimitive.PanelGroup>) => {\n return (\n <ResizablePrimitive.PanelGroup\n className={cn(\n 'tw-flex tw-h-full tw-w-full data-[panel-group-direction=vertical]:tw-flex-col',\n className,\n )}\n {...props}\n />\n );\n};\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'button'>;\n\nexport const ToastAction = ({\n ref,\n className,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => (\n <button\n {...rest}\n ref={ref}\n data-slot=\"toast-action\"\n type=\"button\"\n className={cn(\n // layout\n 'tw-col-start-3',\n 'tw-row-start-1',\n 'tw-flex',\n 'tw-items-center',\n 'tw-justify-center',\n\n // font\n 'tw-text-xs',\n 'tw-font-medium',\n 'tw-text-primary',\n\n // sizing\n 'tw-px-2',\n 'tw-h-6',\n\n // styles\n 'tw-bg-primary-foreground',\n 'tw-rounded',\n className,\n )}\n />\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const ToastDescription = ({\n ref,\n className,\n children,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => (\n <div\n ref={ref}\n data-slot=\"toast-description\"\n className={cn(\n 'tw-col-start-2',\n 'tw-font-normal',\n 'tw-break-words',\n 'tw-text-white',\n 'group-data-[variant=default]/toast:tw-text-muted-foreground',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\n\ntype Props = ComponentProps<'button'>;\n\nexport const ToastDismiss = ({\n ref,\n className,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => (\n <button\n ref={ref}\n data-slot=\"toast-dismiss\"\n className={cn(\n 'tw-flex',\n 'tw-justify-center',\n 'tw-col-start-4',\n 'tw-row-start-1',\n 'tailwindcss-preflight',\n '[&_svg]:tw-aspect-square',\n '[&_svg]:tw-size-4',\n '[&_svg]:tw-p-1',\n\n 'tw-text-white',\n 'group-data-[variant=default]/toast:[&_svg]:tw-text-popover-foreground',\n className,\n )}\n type=\"button\"\n {...rest}\n >\n <Icon icon=\"times\" />\n <span className=\"tw-sr-only\">Dismiss</span>\n </button>\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../utils';\n\ntype ToastDurationProps = ComponentProps<'span'> & {\n duration: number;\n};\n\nexport const ToastDuration = ({\n ref,\n duration,\n className,\n style,\n ...rest\n}: ToastDurationProps & { ref?: Ref<ElementRef<'span'>> }) => (\n <span\n {...rest}\n ref={ref}\n className={cn(\n 'tw-bg-white/30',\n 'group-data-[variant=default]/toast:tw-bg-popover-foreground/20',\n 'tw-rounded-bl-lg',\n 'tw-mx-px',\n\n // positioning\n 'tw-absolute',\n 'tw-bottom-0',\n 'tw-left-0',\n\n // sizing\n 'tw-h-1',\n\n // animation\n 'tw-animate-toast-progress',\n 'group-hover/toast:[animation-play-state:paused]',\n className,\n )}\n style={{\n animationDuration: `${duration}ms`,\n ...style,\n }}\n />\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const ToastTitle = ({\n ref,\n className,\n children,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => (\n <div\n ref={ref}\n data-slot=\"toast-title\"\n className={cn(\n 'tw-col-start-2',\n 'tw-text-sm',\n 'tw-leading-6',\n 'tw-min-h-6',\n 'tw-self-center',\n 'tw-text-white',\n 'group-data-[variant=default]/toast:tw-text-popover-foreground',\n\n 'tw-break-words',\n 'tw-font-medium',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n);\n","import type { ComponentProps, MouseEventHandler, ReactNode } from 'react';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\nimport { type Action, toast as sonnerToast } from 'sonner';\n\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\n\nimport { ToastAction } from './ToastAction';\nimport { ToastDescription } from './ToastDescription';\nimport { ToastDismiss } from './ToastDismiss';\nimport { ToastDuration } from './ToastDuration';\nimport { ToastTitle } from './ToastTitle';\n\nconst variants = cva(\n [\n 'tailwindcss-preflight',\n 'tw-group/toast',\n 'tw-relative',\n\n // layout\n 'tw-grid',\n 'tw-grid-cols-[0_1fr_auto_auto]',\n 'tw-items-start',\n 'has-[[data-slot=toast-description]]:tw-grid-rows-[auto_auto]',\n 'has-[[data-slot=toast-icon]]:tw-grid-cols-[auto_1fr_auto_auto]',\n '[&_[data-slot=toast-icon]]:tw-mr-2',\n '[&_[data-slot=toast-title]]:tw-mr-2.5',\n '[&_[data-slot=toast-description]]:tw-mr-2.5',\n '[&_[data-slot=toast-action]]:tw-mr-2',\n '[&_[data-slot=toast-description]]:tw-col-end-3',\n 'tw-gap-y-0',\n\n // styles\n 'tw-p-4',\n 'tw-rounded-lg',\n 'tw-shadow-md',\n ],\n {\n defaultVariants: {\n variant: 'info',\n },\n variants: {\n variant: {\n default: 'tw-border tw-border-border tw-bg-popover',\n error: 'tw-bg-error-550',\n info: 'tw-bg-secondary-600',\n success: 'tw-bg-primary-700',\n warning: 'tw-bg-warning-550',\n },\n },\n },\n);\n\ntype Variants = VariantProps<typeof variants>;\ntype Variant = NonNullable<Variants['variant']>;\ntype VariantIcon = Exclude<Variant, 'default'>;\ntype Icon = ComponentProps<typeof Icon>['icon'];\n\ntype Props = {\n id: string | number;\n title: ReactNode;\n icon?: Icon;\n description?: ReactNode;\n action?: Action;\n loading?: boolean;\n duration?: number;\n // offset?: number;\n} & Variants;\n\nconst DEFAULT_VARIANT_ICON: Record<VariantIcon, ComponentProps<typeof Icon>['icon']> = {\n error: 'exclamation-triangle',\n info: 'info-circle',\n success: 'check-circle',\n warning: 'exclamation-circle',\n};\n\nexport const ToastRoot = ({\n id,\n title,\n description,\n action,\n duration = Infinity,\n variant = 'info',\n loading = false,\n icon: iconProp,\n}: Props) => {\n const icon: Icon | null = (() => {\n if (loading) return 'spinner';\n if (iconProp) return iconProp;\n if (variant === 'default' || variant === null) return null;\n return DEFAULT_VARIANT_ICON[variant];\n })();\n\n const handleActionClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n sonnerToast.dismiss(id);\n action?.onClick(event);\n };\n\n return (\n <div data-variant={variant} className={cn(variants({ variant }))}>\n {icon && (\n <Icon\n data-slot=\"toast-icon\"\n spin={loading}\n className={cn(\n // styles\n 'tw-aspect-square',\n 'tw-size-4',\n 'tw-shrink-0',\n 'tw-p-1',\n 'tw-text-white',\n 'group-data-[variant=default]/toast:tw-text-popover-foreground',\n )}\n icon={icon}\n />\n )}\n\n <ToastTitle>{title}</ToastTitle>\n {description && <ToastDescription>{description}</ToastDescription>}\n {action && (\n <ToastAction style={action?.actionButtonStyle} onClick={handleActionClick}>\n {action.label}\n </ToastAction>\n )}\n <ToastDismiss onClick={() => sonnerToast.dismiss(id)} />\n {duration !== Infinity && <ToastDuration duration={duration} />}\n </div>\n );\n};\n","import type { ComponentProps, ReactNode } from 'react';\nimport { type ExternalToast, toast as sonnerToast } from 'sonner';\n\nimport { cn } from '../../utils';\n\nimport { ToastRoot } from './ToastRoot';\n\ntype ToastProps = ComponentProps<typeof ToastRoot>;\ntype Title = ToastProps['title'] | ((opts: { dismiss: () => void }) => ReactNode);\n\nexport type ToastOptions = { id?: string | number; title: Title } & Omit<\n ToastProps,\n 'id' | 'title'\n> &\n Pick<\n ExternalToast,\n 'onAutoClose' | 'onDismiss' | 'testId' | 'toasterId' | 'dismissible' | 'position'\n >;\ntype DerivedToastOptions = Omit<ToastOptions, 'title' | 'variant'>;\n\nexport const toast = ({\n onAutoClose,\n onDismiss,\n testId,\n toasterId,\n dismissible = true,\n position,\n title: titleProp,\n ...toast\n}: ToastOptions) => {\n const duration = (() => {\n if (typeof toast.duration === 'number') return toast.duration;\n if (toast.variant === 'error' || toast.variant === 'warning') return Infinity;\n return toast.duration ?? 5000;\n })();\n\n const renderCustomToast: Parameters<typeof sonnerToast.custom>[0] = (id) => {\n const title =\n typeof titleProp === 'function'\n ? titleProp({ dismiss: () => sonnerToast.dismiss(id) })\n : titleProp;\n\n return <ToastRoot {...toast} id={id} title={title} duration={duration} />;\n };\n\n return sonnerToast.custom(renderCustomToast, {\n // toast generated by sonner will always have an id, but we want to allow users to specify their own id if they want to\n // can not pass undefined, as it will break dismiss\n ...(toast.id != null ? { id: toast.id } : {}),\n unstyled: true,\n position,\n onAutoClose,\n onDismiss,\n testId,\n toasterId,\n dismissible,\n duration,\n // override defult focus-visible styles to match our design\n className: cn('tw-rounded-lg', 'focus-visible:!tw-ring-4', 'focus-visible:!tw-ring-primary/50'),\n });\n};\n\ntoast.success = (title: Title, options?: DerivedToastOptions) =>\n toast({\n ...options,\n title,\n variant: 'success',\n });\n\ntoast.error = (title: Title, options?: DerivedToastOptions) =>\n toast({\n ...options,\n title,\n variant: 'error',\n duration: options?.duration ?? Infinity,\n });\n\ntoast.warning = (title: Title, options?: DerivedToastOptions) =>\n toast({\n ...options,\n title,\n variant: 'warning',\n duration: options?.duration ?? Infinity,\n });\n\ntoast.info = (title: Title, options?: DerivedToastOptions) =>\n toast({\n ...options,\n title,\n variant: 'info',\n });\n\ntoast.dismiss = (toastId?: ToastOptions['id']) => sonnerToast.dismiss(toastId);\ntoast.dismissAll = () => sonnerToast.dismiss();\n","import { useEffect } from 'react';\n\nimport { toast } from './toast';\n\ntype Props = {\n enabled?: boolean;\n} & Parameters<typeof toast>[0];\n\n/**\n * Declarative notification component built on top of sonner/toast.\n *\n * Use `Notification` for persistent, system-driven messages that require user acknowledgment\n * (e.g., trial expiration warnings, upgrade prompts, billing alerts).\n * The notification stays visible until the user dismisses it or the component unmounts.\n *\n * Use `toast()` for transient feedback after a user action\n * (e.g., \"Saved\", \"Copied\", \"Deleted\") that auto-dismisses after a few seconds.\n */\nexport const useNotification = ({ enabled = true, ...toastOptions }: Props) => {\n useEffect(() => {\n if (!enabled) return;\n let toastId: string | number | undefined;\n const frameId = requestAnimationFrame(() => {\n toastId = toast({ ...toastOptions, duration: toastOptions.duration ?? Infinity });\n });\n\n return () => {\n cancelAnimationFrame(frameId);\n toast.dismiss(toastId);\n };\n // oxlint-disable-next-line react/exhaustive-deps -- we only want to trigger this effect when enabled changes, not when other toast options change\n }, [enabled]);\n};\n","import type { ComponentProps, PointerEvent } from 'react';\nimport { Toaster as SonnerToaster } from 'sonner';\n\ntype ToasterProps = ComponentProps<typeof SonnerToaster>;\n\nconst DEFAULT_STYLES = {\n '--width': '512px', // match max-w-lg\n} as React.CSSProperties;\n\nconst stopPropagation = (event: PointerEvent) => event.stopPropagation();\n\nexport const Toaster = ({ gap = 12, visibleToasts = 5, ...props }: ToasterProps) => (\n // Wrapper prevents toast clicks from reaching Radix Dialog's DismissableLayer,\n // which would otherwise close the modal on any \"outside\" pointer event.\n // oxlint-disable-next-line jsx-a11y/no-static-element-interactions\n <div onPointerDown={stopPropagation}>\n <SonnerToaster\n {...props}\n gap={gap}\n visibleToasts={visibleToasts}\n className=\"tw-pointer-events-auto tw-flex tw-w-full tw-max-w-lg tw-justify-center\"\n style={DEFAULT_STYLES}\n />\n </div>\n);\n","import type { ReactNode } from 'react';\n\nimport { Card } from '../../components/Card';\n\ntype Props = {\n title: string;\n children: ReactNode;\n className?: string;\n};\n\nexport const EmptyConfigurationActionCard = ({ title, children, className }: Props) => {\n return (\n <Card className={className}>\n <Card.Header>\n <Card.Title>{title}</Card.Title>\n </Card.Header>\n <Card.Content className=\"tw-flex tw-flex-col tw-items-center\">{children}</Card.Content>\n </Card>\n );\n};\n","import type { ComponentProps } from 'react';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nconst emptyStateClassnames = cva(['tw-flex', 'tw-flex-col', 'tw-items-center', 'tw-text-center'], {\n variants: {\n variant: {\n default: ['tw-py-16', 'tw-px-8', 'tw-gap-4'],\n compact: ['tw-py-8', 'tw-px-4', 'tw-gap-2'],\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nconst emptyStateIconClassnames = cva(\n ['tw-flex', 'tw-items-center', 'tw-justify-center', 'tw-text-muted-foreground'],\n {\n variants: {\n variant: {\n default: ['tw-size-16', 'tw-text-4xl'],\n compact: ['tw-size-10', 'tw-text-2xl'],\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nconst emptyStateTitleClassnames = cva(['tw-m-0', 'tw-font-semibold', 'tw-text-foreground'], {\n variants: {\n variant: {\n default: ['tw-text-lg', 'tw-leading-7'],\n compact: ['tw-text-base', 'tw-leading-6'],\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nconst emptyStateDescriptionClassnames = cva(['tw-m-0', 'tw-text-muted-foreground'], {\n variants: {\n variant: {\n default: ['tw-text-sm', 'tw-leading-5', 'tw-max-w-sm'],\n compact: ['tw-text-xs', 'tw-leading-4', 'tw-max-w-xs'],\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nconst emptyStateActionsClassnames = cva(['tw-flex', 'tw-items-center', 'tw-flex-wrap'], {\n variants: {\n variant: {\n default: ['tw-gap-3', 'tw-mt-2'],\n compact: ['tw-gap-2', 'tw-mt-1'],\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\ntype Variant = VariantProps<typeof emptyStateClassnames>['variant'];\n\ntype RootProps = ComponentProps<'div'> &\n VariantProps<typeof emptyStateClassnames> & {\n variant?: Variant;\n };\n\nconst EmptyStateRoot = ({ className, variant = 'default', children, ...rest }: RootProps) => (\n <div role=\"status\" className={emptyStateClassnames({ className, variant })} {...rest}>\n {children}\n </div>\n);\n\ntype SlotProps = ComponentProps<'div'> & { variant?: Variant };\n\nconst EmptyStateIcon = ({ className, variant = 'default', children, ...rest }: SlotProps) => (\n <div className={emptyStateIconClassnames({ className, variant })} {...rest}>\n {children}\n </div>\n);\n\ntype TitleProps = ComponentProps<'h3'> & { variant?: Variant };\n\nconst EmptyStateTitle = ({ className, variant = 'default', children, ...rest }: TitleProps) => (\n <h3 className={emptyStateTitleClassnames({ className, variant })} {...rest}>\n {children}\n </h3>\n);\n\ntype DescriptionProps = ComponentProps<'p'> & { variant?: Variant };\n\nconst EmptyStateDescription = ({\n className,\n variant = 'default',\n children,\n ...rest\n}: DescriptionProps) => (\n <p className={emptyStateDescriptionClassnames({ className, variant })} {...rest}>\n {children}\n </p>\n);\n\ntype ActionsProps = ComponentProps<'div'> & { variant?: Variant };\n\nconst EmptyStateActions = ({ className, variant = 'default', children, ...rest }: ActionsProps) => (\n <div className={emptyStateActionsClassnames({ className, variant })} {...rest}>\n {children}\n </div>\n);\n\nexport const EmptyState = EmptyStateRoot as typeof EmptyStateRoot & {\n Icon: typeof EmptyStateIcon;\n Title: typeof EmptyStateTitle;\n Description: typeof EmptyStateDescription;\n Actions: typeof EmptyStateActions;\n};\n\nEmptyState.Icon = EmptyStateIcon;\nEmptyState.Title = EmptyStateTitle;\nEmptyState.Description = EmptyStateDescription;\nEmptyState.Actions = EmptyStateActions;\n\nexport type { RootProps as EmptyStateProps, Variant as EmptyStateVariant };\n","import type { ComponentProps } from 'react';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nconst errorStateClassnames = cva(['tw-flex', 'tw-flex-col', 'tw-items-center', 'tw-text-center'], {\n variants: {\n variant: {\n default: ['tw-py-16', 'tw-px-8', 'tw-gap-4'],\n compact: ['tw-py-8', 'tw-px-4', 'tw-gap-2'],\n destructive: ['tw-py-16', 'tw-px-8', 'tw-gap-4'],\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nconst errorStateIconClassnames = cva(['tw-flex', 'tw-items-center', 'tw-justify-center'], {\n variants: {\n variant: {\n default: ['tw-size-16', 'tw-text-4xl', 'tw-text-warning-500'],\n compact: ['tw-size-10', 'tw-text-2xl', 'tw-text-warning-500'],\n destructive: ['tw-size-16', 'tw-text-4xl', 'tw-text-error-500'],\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nconst errorStateTitleClassnames = cva(['tw-m-0', 'tw-font-semibold'], {\n variants: {\n variant: {\n default: ['tw-text-lg', 'tw-leading-7', 'tw-text-foreground'],\n compact: ['tw-text-base', 'tw-leading-6', 'tw-text-foreground'],\n destructive: ['tw-text-lg', 'tw-leading-7', 'tw-text-error-700'],\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nconst errorStateDescriptionClassnames = cva(['tw-m-0', 'tw-text-muted-foreground'], {\n variants: {\n variant: {\n default: ['tw-text-sm', 'tw-leading-5', 'tw-max-w-sm'],\n compact: ['tw-text-xs', 'tw-leading-4', 'tw-max-w-xs'],\n destructive: ['tw-text-sm', 'tw-leading-5', 'tw-max-w-sm'],\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nconst errorStateActionsClassnames = cva(['tw-flex', 'tw-items-center', 'tw-flex-wrap'], {\n variants: {\n variant: {\n default: ['tw-gap-3', 'tw-mt-2'],\n compact: ['tw-gap-2', 'tw-mt-1'],\n destructive: ['tw-gap-3', 'tw-mt-2'],\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\ntype Variant = VariantProps<typeof errorStateClassnames>['variant'];\n\ntype RootProps = ComponentProps<'div'> &\n VariantProps<typeof errorStateClassnames> & {\n variant?: Variant;\n };\n\nconst ErrorStateRoot = ({ className, variant = 'default', children, ...rest }: RootProps) => (\n <div role=\"alert\" className={errorStateClassnames({ className, variant })} {...rest}>\n {children}\n </div>\n);\n\ntype SlotProps = ComponentProps<'div'> & { variant?: Variant };\n\nconst ErrorStateIcon = ({ className, variant = 'default', children, ...rest }: SlotProps) => (\n <div className={errorStateIconClassnames({ className, variant })} {...rest}>\n {children}\n </div>\n);\n\ntype TitleProps = ComponentProps<'h3'> & { variant?: Variant };\n\nconst ErrorStateTitle = ({ className, variant = 'default', children, ...rest }: TitleProps) => (\n <h3 className={errorStateTitleClassnames({ className, variant })} {...rest}>\n {children}\n </h3>\n);\n\ntype DescriptionProps = ComponentProps<'p'> & { variant?: Variant };\n\nconst ErrorStateDescription = ({\n className,\n variant = 'default',\n children,\n ...rest\n}: DescriptionProps) => (\n <p className={errorStateDescriptionClassnames({ className, variant })} {...rest}>\n {children}\n </p>\n);\n\ntype ActionsProps = ComponentProps<'div'> & { variant?: Variant };\n\nconst ErrorStateActions = ({ className, variant = 'default', children, ...rest }: ActionsProps) => (\n <div className={errorStateActionsClassnames({ className, variant })} {...rest}>\n {children}\n </div>\n);\n\nexport const ErrorState = ErrorStateRoot as typeof ErrorStateRoot & {\n Icon: typeof ErrorStateIcon;\n Title: typeof ErrorStateTitle;\n Description: typeof ErrorStateDescription;\n Actions: typeof ErrorStateActions;\n};\n\nErrorState.Icon = ErrorStateIcon;\nErrorState.Title = ErrorStateTitle;\nErrorState.Description = ErrorStateDescription;\nErrorState.Actions = ErrorStateActions;\n\nexport type { RootProps as ErrorStateProps, Variant as ErrorStateVariant };\n","import type { ComponentPropsWithoutRef, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../utils';\n\ntype RootProps = ComponentPropsWithoutRef<'div'> & {\n maxWidth?: 'default' | 'narrow' | 'wide' | 'full';\n};\n\nconst maxWidthClass = {\n narrow: 'tw-max-w-[976px]',\n default: 'tw-max-w-[1280px]',\n wide: 'tw-max-w-[1600px]',\n full: 'tw-max-w-full',\n} as const;\n\nconst Root = ({\n ref,\n className,\n maxWidth = 'full',\n children,\n ...props\n}: RootProps & { ref?: Ref<ElementRef<'div'>> }) => (\n <div\n ref={ref}\n className={cn(\n 'tw-flex tw-flex-col tw-gap-4 tw-w-full tw-mx-auto tw-px-6 tw-py-4',\n maxWidthClass[maxWidth],\n className,\n )}\n {...props}\n >\n {children}\n </div>\n);\n\nconst Breadcrumbs = ({\n ref,\n className,\n children,\n ...props\n}: ComponentPropsWithoutRef<'div'> & { ref?: Ref<ElementRef<'div'>> }) => (\n <div ref={ref} className={cn('tw-w-full', className)} {...props}>\n {children}\n </div>\n);\n\nconst Header = ({\n ref,\n className,\n children,\n ...props\n}: ComponentPropsWithoutRef<'header'> & { ref?: Ref<ElementRef<'header'>> }) => (\n <header ref={ref} className={cn('tw-w-full', className)} {...props}>\n {children}\n </header>\n);\n\nconst Tabs = ({\n ref,\n className,\n children,\n ...props\n}: ComponentPropsWithoutRef<'div'> & { ref?: Ref<ElementRef<'div'>> }) => (\n <div\n ref={ref}\n className={cn('tw-flex tw-w-full tw-items-center tw-border-b tw-border-border', className)}\n {...props}\n >\n {children}\n </div>\n);\n\nconst Toolbar = ({\n ref,\n className,\n children,\n ...props\n}: ComponentPropsWithoutRef<'div'> & { ref?: Ref<ElementRef<'div'>> }) => (\n <div\n ref={ref}\n className={cn('tw-flex tw-w-full tw-flex-wrap tw-items-center tw-gap-3', className)}\n {...props}\n >\n {children}\n </div>\n);\n\nconst Content = ({\n ref,\n className,\n children,\n ...props\n}: ComponentPropsWithoutRef<'div'> & { ref?: Ref<ElementRef<'div'>> }) => (\n <div ref={ref} className={cn('tw-flex tw-w-full tw-flex-1 tw-flex-col', className)} {...props}>\n {children}\n </div>\n);\n\ntype FooterProps = ComponentPropsWithoutRef<'footer'> & {\n sticky?: boolean;\n};\n\nconst Footer = ({\n ref,\n className,\n sticky = false,\n children,\n ...props\n}: FooterProps & { ref?: Ref<ElementRef<'footer'>> }) => (\n <footer\n ref={ref}\n className={cn(\n 'tw-flex tw-w-full tw-items-center tw-justify-end tw-gap-3 tw-border-t tw-border-border tw-bg-background tw-px-6 tw-py-4',\n sticky && 'tw-sticky tw-bottom-0 tw-z-10',\n className,\n )}\n {...props}\n >\n {children}\n </footer>\n);\n\nexport const PageLayout = Object.assign(Root, {\n Breadcrumbs,\n Header,\n Tabs,\n Toolbar,\n Content,\n Footer,\n});\n","export const titleRowClass = 'tw-flex tw-flex-wrap tw-items-center tw-gap-x-3 tw-gap-y-2';\nexport const titleClass =\n 'tw-m-0 tw-text-3xl tw-font-semibold tw-leading-9 tw-text-foreground tw-break-words';\nexport const badgesClass = 'tw-flex tw-flex-wrap tw-items-center tw-gap-2';\nexport const descriptionClass =\n 'tw-m-0 tw-max-w-[800px] tw-break-words tw-text-sm tw-leading-5 tw-text-muted-foreground';\n","import type { ComponentPropsWithoutRef, ElementRef, ReactNode, Ref } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { badgesClass, descriptionClass, titleClass, titleRowClass } from './styles';\n\n// Detail page header — single entity pages (bucket, flow, data app, …).\n// Pattern: docs/patterns/page-header/detail/detail-page-header.md\n// - Breadcrumbs are required; overflow menu sits on the breadcrumbs row.\n// - Max two visible actions: `primaryAction` + optional `secondaryAction`.\n// - All other actions belong in the breadcrumbs-row overflow menu.\ntype PageHeaderDetailProps = ComponentPropsWithoutRef<'header'> & {\n breadcrumbs: ReactNode;\n overflowActions?: ReactNode;\n title: ReactNode;\n badges?: ReactNode;\n description?: ReactNode;\n primaryAction?: ReactNode;\n secondaryAction?: ReactNode;\n headerNav?: ReactNode;\n};\n\nexport const PageHeaderDetail = ({\n ref,\n className,\n breadcrumbs,\n overflowActions,\n title,\n badges,\n description,\n primaryAction,\n secondaryAction,\n headerNav,\n ...props\n}: PageHeaderDetailProps & { ref?: Ref<ElementRef<'header'>> }) => (\n <header ref={ref} className={cn('tw-flex tw-w-full tw-flex-col tw-gap-4', className)} {...props}>\n <div className=\"tw-flex tw-w-full tw-items-center tw-justify-between tw-gap-4\">\n <div className=\"tw-min-w-0 tw-flex-1\">{breadcrumbs}</div>\n {overflowActions && (\n <div className=\"tw-flex tw-shrink-0 tw-items-center tw-gap-2\">{overflowActions}</div>\n )}\n </div>\n\n <div className=\"tw-flex tw-w-full tw-items-start tw-justify-between tw-gap-4\">\n <div className=\"tw-flex tw-min-w-0 tw-flex-1 tw-flex-col tw-gap-2 tw-pr-2\">\n <div className={titleRowClass}>\n <h1 className={titleClass}>{title}</h1>\n {badges && <div className={badgesClass}>{badges}</div>}\n </div>\n {description && <p className={descriptionClass}>{description}</p>}\n </div>\n {(primaryAction || secondaryAction) && (\n <div className=\"tw-flex tw-shrink-0 tw-items-center tw-gap-2\">\n {secondaryAction}\n {primaryAction}\n </div>\n )}\n </div>\n\n {headerNav}\n </header>\n);\n","import type { ComponentPropsWithoutRef, ElementRef, ReactNode, Ref } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { descriptionClass, titleClass, titleRowClass } from './styles';\n\n// Index page header — list / collection pages (Flows, Storage, Jobs, …).\n// Pattern: docs/patterns/page-header/index/index-page-header.md\n// - No breadcrumbs (top-level pages).\n// - `metadata` wins over `description` (mutually exclusive in pattern).\n// - At most one primary `action`; pair with the `documentation` icon button.\ntype PageHeaderIndexProps = ComponentPropsWithoutRef<'header'> & {\n title: ReactNode;\n description?: ReactNode;\n metadata?: ReactNode;\n documentation?: ReactNode;\n action?: ReactNode;\n headerNav?: ReactNode;\n};\n\nexport const PageHeaderIndex = ({\n ref,\n className,\n title,\n description,\n metadata,\n documentation,\n action,\n headerNav,\n ...props\n}: PageHeaderIndexProps & { ref?: Ref<ElementRef<'header'>> }) => {\n const subtitle = metadata ?? description;\n return (\n <header\n ref={ref}\n className={cn('tw-flex tw-w-full tw-flex-col tw-gap-4', className)}\n {...props}\n >\n <div className=\"tw-flex tw-w-full tw-items-start tw-justify-between tw-gap-4\">\n <div className=\"tw-flex tw-min-w-0 tw-flex-1 tw-flex-col tw-gap-2 tw-pr-2\">\n <div className={titleRowClass}>\n <h1 className={titleClass}>{title}</h1>\n </div>\n {subtitle && <p className={descriptionClass}>{subtitle}</p>}\n </div>\n {(documentation || action) && (\n <div className=\"tw-flex tw-shrink-0 tw-items-center tw-gap-2\">\n {documentation}\n {action}\n </div>\n )}\n </div>\n {headerNav}\n </header>\n );\n};\n","import { PageHeaderDetail } from './PageHeaderDetail';\nimport { PageHeaderIndex } from './PageHeaderIndex';\n\nexport const PageHeader = {\n Index: PageHeaderIndex,\n Detail: PageHeaderDetail,\n};\n","import { useEffect, useMemo, useRef, useState } from 'react';\nimport type { ChangeEventHandler, ComponentProps, ElementRef, FocusEventHandler, Ref } from 'react';\n\nimport { Icon } from '../../components/Icon';\nimport { InputGroup } from '../../components/InputGroup';\nimport { debounce } from '../../utils';\n\ntype InputGroupProps = Pick<\n ComponentProps<typeof InputGroup>,\n 'variant' | 'focusVariant' | 'state' | 'sizing'\n>;\n\ntype InputGroupInputProps = Omit<ComponentProps<typeof InputGroup.Input>, 'value' | 'defaultValue'>;\n\ntype Props = InputGroupProps &\n InputGroupInputProps & {\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string) => void;\n onValueBlur?: (value: string) => void;\n onClear?: () => void;\n allowClear?: boolean;\n disableDebounce?: boolean;\n debounceDelay?: number;\n };\n\nexport const SearchInput = ({\n ref,\n\n // group props\n state,\n variant,\n focusVariant,\n sizing,\n className,\n\n // own props\n value: valueProp,\n defaultValue,\n onValueChange,\n onValueBlur,\n onChange,\n onBlur,\n onClear,\n allowClear = false,\n disableDebounce = false,\n debounceDelay = 300,\n\n // input props\n disabled,\n readOnly,\n ...restInputProps\n}: Props & { ref?: Ref<ElementRef<'input'>> }) => {\n const [internalValue, setInternalValue] = useState<string>(\n valueProp != null ? valueProp : (defaultValue ?? ''),\n );\n\n // Tracks whether a debounced call is pending so the controlled-value sync\n // effect doesn't overwrite characters the user typed during the debounce window.\n const debounceInFlightRef = useRef(false);\n const cancelRef = useRef<() => void>(() => {});\n\n const debouncedOnValueChange = useMemo(() => {\n if (!onValueChange || disableDebounce) {\n cancelRef.current = () => {};\n return onValueChange;\n }\n const d = debounce((val: string) => {\n debounceInFlightRef.current = false;\n onValueChange(val);\n }, debounceDelay);\n cancelRef.current = d.cancel;\n return d;\n }, [onValueChange, disableDebounce, debounceDelay]);\n\n // Cancel any pending debounced call when the debounced fn changes or on unmount.\n useEffect(() => {\n return () => cancelRef.current();\n }, [debouncedOnValueChange]);\n\n // Sync controlled value — but skip while a debounced call is in flight to\n // avoid snapping the input back to the old value mid-typing.\n useEffect(() => {\n if (valueProp == null) return;\n if (debounceInFlightRef.current) return;\n setInternalValue(valueProp);\n }, [valueProp]);\n\n const canClear = allowClear && !!internalValue && !disabled && !readOnly;\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n const val = event.target.value;\n setInternalValue(val);\n if (!disableDebounce && debouncedOnValueChange) debounceInFlightRef.current = true;\n debouncedOnValueChange?.(val);\n onChange?.(event);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n onValueBlur?.(event.target.value);\n onBlur?.(event);\n };\n\n const handleClear = () => {\n cancelRef.current();\n debounceInFlightRef.current = false;\n setInternalValue('');\n onValueChange?.('');\n onClear?.();\n };\n\n return (\n <InputGroup\n state={state}\n variant={variant}\n sizing={sizing}\n focusVariant={focusVariant}\n className={className}\n >\n <InputGroup.Addon align=\"inline-start\">\n <Icon icon=\"magnifying-glass\" className=\"tw-text-muted-foreground\" />\n </InputGroup.Addon>\n\n <InputGroup.Input\n {...restInputProps}\n ref={ref}\n value={internalValue}\n onChange={handleChange}\n onBlur={handleBlur}\n disabled={disabled}\n readOnly={readOnly}\n />\n\n {canClear && (\n <InputGroup.Addon align=\"inline-end\">\n <InputGroup.Button\n icon=\"xmark\"\n aria-label=\"Clear search\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={handleClear}\n />\n </InputGroup.Addon>\n )}\n </InputGroup>\n );\n};\n","import type { ComponentProps, KeyboardEvent, Ref } from 'react';\n\nimport { Button, ButtonGroup, cn, Icon, Separator, TextInput } from '@keboola/design';\n\nimport { keyCodes } from '../../constants/keyCodes';\n\ntype SearchInputWithNavigationProps = {\n currentIndex: number | null;\n totalResults: number;\n onValueChange: (value: string) => void;\n onNavigateNext: () => void;\n onNavigatePrevious: () => void;\n\n value?: string;\n placeholder?: string;\n variant?: 'primary' | 'secondary';\n onClear?: () => void;\n focusVariant?: ComponentProps<typeof TextInput>['focusVariant'];\n className?: string;\n};\n\nexport const SearchInputWithNavigation = ({\n ref,\n value,\n onValueChange,\n placeholder = 'Search...',\n variant = 'secondary',\n onClear,\n focusVariant,\n currentIndex,\n totalResults,\n onNavigateNext,\n onNavigatePrevious,\n className,\n}: SearchInputWithNavigationProps & { ref?: Ref<HTMLInputElement> }) => {\n const withControls = totalResults > 0;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === keyCodes.ENTER) {\n e.preventDefault();\n\n e.shiftKey ? onNavigatePrevious() : onNavigateNext();\n }\n };\n\n return (\n <TextInput\n ref={ref}\n allowClear\n value={value}\n placeholder={placeholder}\n onValueChange={onValueChange}\n onClear={onClear}\n prefix={<Icon className=\"tw-text-neutral-400\" icon=\"magnifying-glass\" />}\n focusVariant={focusVariant}\n onKeyDown={handleKeyDown}\n variant={variant}\n className={className}\n leftSuffix={\n <div\n className={cn('tw-flex tw-items-center tw-gap-3', {\n 'tw-hidden': !withControls,\n })}\n >\n <span className=\"tw-text-xs tw-text-neutral-400\">\n {totalResults > 0 ? (currentIndex ?? 0) : 0}/{totalResults}\n </span>\n <Separator orientation=\"vertical\" size=\"3/4\" />\n <ButtonGroup>\n <Button\n variant=\"inline\"\n size=\"icon-3xs\"\n onClick={onNavigatePrevious}\n disabled={!totalResults}\n icon=\"angle-up\"\n />\n <Button\n variant=\"inline\"\n size=\"icon-3xs\"\n onClick={onNavigateNext}\n disabled={!totalResults}\n icon=\"angle-down\"\n />\n </ButtonGroup>\n </div>\n }\n />\n );\n};\n","import { Badge } from '../../components/Badge';\n\nimport type { TagOption } from './types';\n\ntype Props = {\n tag: TagOption;\n onRemove?: (value: TagOption) => void;\n disabled?: boolean;\n};\n\nexport const TagItem = ({ tag, onRemove, disabled = false }: Props) => {\n const handleRemove = () => {\n onRemove?.(tag);\n };\n\n const isDisabled = disabled || !!tag.disabled;\n\n return (\n <Badge.Root variant=\"tag\" color={tag.color}>\n <Badge.Label>{tag.name}</Badge.Label>\n\n {onRemove && !isDisabled && (\n <Badge.Addon variant=\"floating\" align=\"inline-end\">\n <Badge.Button onClick={handleRemove} icon=\"xmark\" aria-label=\"Remove Tag\" />\n </Badge.Addon>\n )}\n </Badge.Root>\n );\n};\n","import type { ComponentProps } from 'react';\nimport { useCommandState } from 'cmdk';\n\nimport { Command } from '../../../components/Command';\nimport { cn } from '../../../utils';\n\ntype Props = {\n onCreate?: (search: string) => void;\n} & Pick<ComponentProps<typeof Command.Item>, 'value'>;\n\nexport const TagSelectCreateItem = ({ onCreate, value }: Props) => {\n const search = useCommandState((state) => state.search);\n const isCreateItemVisible = useCommandState((state) => state.filtered.count === 1);\n\n const isSearched = search.length > 0;\n\n const handleOnSelect: ComponentProps<typeof Command.Item>['onSelect'] = () => {\n onCreate?.(search);\n };\n\n return (\n <Command.Item\n variant=\"default\"\n onSelect={handleOnSelect}\n value={value}\n className={cn('[&_svg]:tw-text-primary-500', {\n 'tw-hidden': !isCreateItemVisible,\n })}\n icon=\"plus\"\n >\n Create{' '}\n {isSearched ? (\n <>\n \"<span className=\"-tw-mx-2 tw-max-w-24 tw-truncate\">{search}</span>\"\n </>\n ) : (\n ''\n )}{' '}\n Tag\n </Command.Item>\n );\n};\n","import type { ComponentProps } from 'react';\nimport { useCommandState } from 'cmdk';\n\nimport { Badge } from '../../../components/Badge';\nimport { Command } from '../../../components/Command';\nimport { MarkedText } from '../../../components/MarkedText';\nimport { Truncated } from '../../../components/Truncated';\nimport type { TagOption } from '../types';\n\ntype Props = {\n option: TagOption;\n} & Pick<ComponentProps<typeof Command.Item>, 'onSelect' | 'checked'>;\n\nexport const TagSelectItem = ({ option, onSelect, checked }: Props) => {\n const search = useCommandState((state) => state.search);\n\n return (\n <Command.Item\n variant=\"checkbox\"\n key={option.name}\n value={option.name}\n onSelect={onSelect}\n checked={checked}\n disabled={option.disabled}\n >\n <Badge variant=\"tag\" color={option.color} className=\"tw-max-w-64\">\n <Truncated tooltip={option.name} text={<MarkedText source={option.name} mark={search} />} />\n </Badge>\n </Command.Item>\n );\n};\n","import type { MouseEventHandler } from 'react';\n\nimport { Button } from '../../../components/Button';\nimport { cn } from '../../../utils';\n\ntype Props = {\n value: string[];\n onAdd?: (selected: string[]) => void;\n};\n\nexport const TagSelectValue = ({ value, onAdd }: Props) => {\n const isSelected = value.length > 0;\n\n const handleOnSelect: MouseEventHandler<HTMLButtonElement> = () => {\n onAdd?.(value);\n };\n\n return (\n <div\n className={cn(\n 'tw-overflow-hidden',\n 'tw-bg-neutral-100',\n\n // invisible by default\n 'tw-max-h-0',\n 'tw-opacity-0',\n\n /// transitioning\n 'tw-transition-all',\n 'tw-duration-300',\n 'tw-ease-out',\n\n // visible when selected\n {\n 'tw-max-h-20 tw-opacity-100': isSelected,\n },\n )}\n >\n <div className={cn('tw-flex', 'tw-items-center', 'tw-justify-between', 'tw-px-3', 'tw-py-2')}>\n <span>{value.length} selected</span>\n <Button size=\"small\" onClick={handleOnSelect}>\n Add Selected\n </Button>\n </div>\n </div>\n );\n};\n","import { type ComponentProps, useState } from 'react';\nimport { defaultFilter } from 'cmdk';\n\nimport { Command } from '../../../components/Command';\nimport { Icon } from '../../../components/Icon';\nimport type { TagOption } from '../types';\n\nimport { TagSelectCreateItem } from './TagSelectCreateItem';\nimport { TagSelectItem } from './TagSelectItem';\nimport { TagSelectValue } from './TagSelectValue';\n\nconst CREATE_ITEM_VALUE = 'create-new-tag';\n\ntype Props = {\n options?: TagOption[];\n} & Pick<ComponentProps<typeof TagSelectValue>, 'onAdd'> &\n Pick<ComponentProps<typeof TagSelectCreateItem>, 'onCreate'>;\n\nconst defaultOptions: TagOption[] = [];\n\nexport const TagSelectList = ({ options = defaultOptions, onAdd, onCreate }: Props) => {\n const [selected, setSelected] = useState<string[]>([]);\n\n const handleOnSelect: ComponentProps<typeof Command.Item>['onSelect'] = (value) => {\n setSelected((currSelected) =>\n currSelected.includes(value)\n ? currSelected.filter((x) => x !== value)\n : [...currSelected, value],\n );\n };\n\n const handleFilter: ComponentProps<typeof Command>['filter'] = (value, search, keywords) => {\n // never fi†lter out the create item\n if (value === CREATE_ITEM_VALUE) return 1;\n return defaultFilter(value, search, keywords);\n };\n\n return (\n <>\n <Command filter={handleFilter} className=\"tw-flex tw-flex-col\">\n <div className=\"tw-border-b tw-border-neutral-100 tw-p-3\">\n <Command.Input\n variant=\"secondary\"\n prefix={<Icon icon=\"search\" className=\"tw-size-4 tw-text-neutral-400\" />}\n placeholder=\"Search tags\"\n allowClear\n />\n </div>\n\n <Command.List className=\"tw-p-3\" viewPortClassName=\"tw-max-h-60\" data-content>\n <TagSelectCreateItem value={CREATE_ITEM_VALUE} onCreate={onCreate} />\n\n {options.map((option) => (\n <TagSelectItem\n key={option.name}\n option={option}\n onSelect={handleOnSelect}\n checked={selected.includes(option.name)}\n />\n ))}\n </Command.List>\n </Command>\n\n <TagSelectValue value={selected} onAdd={onAdd} />\n </>\n );\n};\n","import { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { Popover } from '../../../components/Popover';\n\nimport { TagSelectList } from './TagSelectList';\n\ntype Props = {\n children: ReactNode;\n} & ComponentProps<typeof TagSelectList>;\n\nexport const TagSelectPopover = ({ children, onAdd, options, onCreate }: Props) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const handleAdd: ComponentProps<typeof TagSelectList>['onAdd'] = (selected) => {\n onAdd?.(selected);\n setIsOpen(false);\n };\n\n const handleCreate: ComponentProps<typeof TagSelectList>['onCreate'] = (search) => {\n onCreate?.(search);\n setIsOpen(false);\n };\n\n return (\n <Popover open={isOpen} onOpenChange={setIsOpen}>\n <Popover.Trigger asChild>{children}</Popover.Trigger>\n\n <Popover.Content side=\"bottom\" align=\"center\" className=\"tw-w-80\">\n <TagSelectList onCreate={handleCreate} onAdd={handleAdd} options={options} />\n </Popover.Content>\n </Popover>\n );\n};\n","import { useMemo } from 'react';\nimport type { ComponentProps } from 'react';\n\nimport { Badge } from '../../components/Badge';\nimport { Icon } from '../../components/Icon';\nimport { TooltipProvider } from '../../components/Tooltip';\nimport { cn } from '../../utils';\n\nimport { TagItem } from './TagItem';\nimport { TagSelectPopover } from './TagSelectPopover';\nimport type { TagOption } from './types';\n\nconst defaultOptions: TagOption[] = [];\n\ntype OnValueChangeHandler = (value: {\n action: 'add' | 'remove';\n tags: TagOption[];\n allTags: TagOption[];\n}) => void;\n\ntype Props = {\n value?: TagOption[];\n onValueChange: OnValueChangeHandler;\n disabled?: boolean;\n} & Pick<ComponentProps<typeof TagSelectPopover>, 'options' | 'onCreate'>;\n\nexport const Tagger = ({\n options = defaultOptions,\n value = defaultOptions,\n onCreate,\n onValueChange,\n disabled,\n}: Props) => {\n const isAnySelected = value.length > 0;\n const isVisible = isAnySelected || !disabled;\n\n const handleAdd: ComponentProps<typeof TagSelectPopover>['onAdd'] = (selected) => {\n const selectedSet = new Set(selected);\n const addedTags = options.filter((option) => selectedSet.has(option.name));\n const newAllTags = [...value, ...addedTags];\n\n onValueChange({\n action: 'add',\n tags: addedTags,\n allTags: newAllTags,\n });\n };\n\n const handleRemove: ComponentProps<typeof TagItem>['onRemove'] = (tagToRemove) => {\n const removedTags = [tagToRemove];\n const newAllTags = value.filter((option) => option.name !== tagToRemove.name);\n\n onValueChange({\n action: 'remove',\n tags: removedTags,\n allTags: newAllTags,\n });\n };\n\n const handleCreate: ComponentProps<typeof TagSelectPopover>['onCreate'] = (search) => {\n onCreate?.(search);\n };\n\n const tagsToAdd = useMemo(() => {\n const addedTagsSet = new Set(value.map((tag) => tag.name));\n return options?.filter((option) => !addedTagsSet.has(option.name));\n }, [options, value]);\n\n if (!isVisible) return null;\n\n return (\n <TooltipProvider>\n <ul className=\"tailwindcss-preflight tw-flex tw-min-h-6 tw-flex-wrap tw-items-center tw-gap-2\">\n {value.map((tag) => (\n <li key={tag.name}>\n <TagItem disabled={disabled} tag={tag} onRemove={handleRemove} />\n </li>\n ))}\n\n {!disabled && (\n <li>\n <TagSelectPopover options={tagsToAdd} onAdd={handleAdd} onCreate={handleCreate}>\n <Badge color=\"gray-inverse\" asChild>\n <button type=\"button\" className=\"tw-flex tw-items-center tw-gap-1\">\n <Icon icon=\"plus\" />\n <span\n className={cn({\n 'tw-sr-only': isAnySelected,\n })}\n >\n Add Tag\n </span>\n </button>\n </Badge>\n </TagSelectPopover>\n </li>\n )}\n </ul>\n </TooltipProvider>\n );\n};\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { Button } from '../../components/Button';\nimport type { Icon } from '../../components/Icon';\nimport { Tooltip } from '../../components/Tooltip';\n\ntype Props = {\n disabled?: boolean;\n icon: ComponentProps<typeof Icon>['icon'];\n isLoading?: boolean;\n label: string;\n onClick: ComponentProps<typeof Button>['onClick'];\n tooltipContent: ReactNode;\n tooltipVariant?: ComponentProps<typeof Tooltip>['variant'];\n 'data-testid'?: string;\n};\n\nexport const MultiActionButton = ({\n disabled,\n icon,\n isLoading,\n label,\n onClick,\n tooltipContent,\n tooltipVariant,\n 'data-testid': dataTestId,\n}: Props) => (\n <Tooltip placement=\"top\" tooltip={tooltipContent} triggerAsChild variant={tooltipVariant}>\n <Button\n disabled={disabled}\n icon={icon}\n isLoading={isLoading}\n aria-label={label}\n onClick={onClick}\n variant=\"invisible\"\n size=\"icon\"\n data-testid={dataTestId}\n />\n </Tooltip>\n);\n","import type { PropsWithChildren } from 'react';\n\nimport { ButtonGroup } from '../../components/ButtonGroup';\nimport { cn } from '../../utils';\n\nimport { MultiActionButton } from './MultiActionButton';\n\ntype Props = {\n className?: string;\n} & PropsWithChildren;\n\nexport const MultiActionButtonGroup = ({ children, className }: Props) => (\n <ButtonGroup className={cn('tw-text-nowrap', className)}>{children}</ButtonGroup>\n);\n\nMultiActionButtonGroup.Button = MultiActionButton;\n","import type { ReactNode } from 'react';\n\nimport { Icon } from '../../components/Icon';\nimport { cn } from '../../utils';\n\ntype Variant = 'success' | 'error' | 'processing' | 'dismissed';\n\ntype Props = {\n isExpanded: boolean;\n onToggle: () => void;\n label: ReactNode;\n variant?: Variant;\n};\n\nconst variantClasses: Record<Variant, string> = {\n success:\n 'tw-text-secondary-500 focus-visible:tw-outline-secondary-500 not-disabled:hover:tw-text-secondary-600',\n error:\n 'tw-text-error-500 focus-visible:tw-outline-error-500 not-disabled:hover:tw-text-error-600',\n processing:\n 'tw-text-secondary-500 focus-visible:tw-outline-secondary-500 not-disabled:hover:tw-text-secondary-600',\n dismissed:\n 'tw-text-neutral-700 focus-visible:tw-outline-neutral-500 not-disabled:hover:tw-text-neutral-800',\n};\n\nconst renderVariantIcon = (variant: Variant) => {\n if (variant === 'processing') {\n return <Icon icon=\"spinner\" spin className=\"tw-size-4\" />;\n }\n if (variant === 'error') {\n return <Icon icon=\"circle-xmark\" className=\"tw-size-4\" />;\n }\n if (variant === 'dismissed') {\n return <Icon icon=\"circle-xmark\" className=\"tw-size-4 tw-text-neutral-500\" />;\n }\n return <Icon icon=\"circle-check\" className=\"tw-size-4\" />;\n};\n\nexport const CollapsibleStepHeader = ({\n isExpanded,\n onToggle,\n label,\n variant = 'success',\n}: Props) => {\n return (\n <button\n type=\"button\"\n aria-expanded={isExpanded}\n onClick={onToggle}\n className={cn(\n 'tw-flex tw-w-fit tw-items-center tw-gap-3 tw-text-left tw-text-sm tw-font-medium tw-italic tw-transition-colors focus-visible:tw-outline focus-visible:tw-outline-2 focus-visible:tw-outline-offset-2 disabled:tw-opacity-40',\n variantClasses[variant],\n )}\n >\n <div className=\"tw-flex tw-items-center tw-gap-2\">\n {renderVariantIcon(variant)}\n <span>{label}</span>\n </div>\n <Icon\n icon=\"chevron-down\"\n className={cn('tw-size-3 tw-transition-transform', isExpanded && 'tw-rotate-180')}\n />\n </button>\n );\n};\n","import type { ReactNode } from 'react';\n\ntype Props = {\n children: ReactNode;\n};\n\nexport const InlineStepDetail = ({ children }: Props) => (\n <div className=\"tw-ml-2.5 tw-whitespace-pre-wrap tw-border-l tw-border-neutral-200 tw-pl-3 tw-text-xs tw-text-neutral-400\">\n {children}\n </div>\n);\n\nexport type { Props as InlineStepDetailProps };\n","import type { ReactNode } from 'react';\n\nimport { Icon } from '../../components/Icon';\n\ntype Variant = 'processing' | 'success' | 'error' | 'dismissed';\n\ntype Props = {\n variant: Variant;\n children: ReactNode;\n};\n\nconst renderVariantIcon = (variant: Variant) => {\n if (variant === 'processing') {\n return <Icon icon=\"spinner\" spin className=\"tw-size-3 tw-text-neutral-200\" />;\n }\n if (variant === 'error') {\n return <Icon icon=\"circle-xmark\" className=\"tw-size-3 tw-text-error-500\" />;\n }\n if (variant === 'dismissed') {\n return <Icon icon=\"circle-xmark\" className=\"tw-size-3 tw-text-neutral-200\" />;\n }\n return <Icon icon=\"circle-check\" className=\"tw-size-3 tw-text-neutral-200\" />;\n};\n\nexport const InlineStepLabel = ({ variant, children }: Props) => (\n <div className=\"tw-flex tw-items-center tw-gap-1\">\n <div className=\"tw-flex tw-size-5 tw-shrink-0 tw-items-center tw-justify-center\">\n {renderVariantIcon(variant)}\n </div>\n <div className=\"tw-flex tw-flex-wrap tw-items-center tw-gap-x-1.5 tw-gap-y-1 tw-text-sm tw-font-medium tw-italic tw-text-neutral-800\">\n {children}\n </div>\n </div>\n);\n\nexport type { Variant as InlineStepLabelVariant, Props as InlineStepLabelProps };\n","import { useState } from 'react';\n\nimport { CollapsibleStepHeader } from './CollapsibleStepHeader';\nimport { InlineStepDetail } from './InlineStepDetail';\nimport { InlineStepLabel } from './InlineStepLabel';\n\ntype AnswerItem = {\n question: string;\n answer?: string;\n};\n\ntype Variant = 'success' | 'dismissed';\n\ntype Props = {\n items: readonly AnswerItem[];\n variant?: Variant;\n noAnswerLabel?: string;\n};\n\nconst SECTION_LABELS: Record<Variant, string> = {\n success: 'Answered questions',\n dismissed: 'Dismissed questions',\n};\n\nexport const AnswerSummary = ({\n items,\n variant = 'success',\n noAnswerLabel = 'No answer',\n}: Props) => {\n const [isExpanded, setIsExpanded] = useState(false);\n const toggle = () => setIsExpanded((prev) => !prev);\n const count = items.length;\n\n return (\n <section className=\"tw-mt-4 tw-flex tw-flex-col tw-gap-4\" aria-label={SECTION_LABELS[variant]}>\n <CollapsibleStepHeader\n isExpanded={isExpanded}\n onToggle={toggle}\n variant={variant}\n label={`${count} question${count !== 1 ? 's' : ''}`}\n />\n\n {isExpanded && (\n <div className=\"tw-flex tw-flex-col tw-gap-4 tw-pl-5\">\n {items.map(({ question, answer }, index) => (\n <div key={`${index}-${question}`} className=\"tw-flex tw-flex-col tw-gap-1\">\n <InlineStepLabel variant={variant}>{question}</InlineStepLabel>\n <InlineStepDetail>\n {answer && answer.length > 0 ? answer : noAnswerLabel}\n </InlineStepDetail>\n </div>\n ))}\n </div>\n )}\n </section>\n );\n};\n\nexport type {\n AnswerItem as AnswerSummaryItem,\n Props as AnswerSummaryProps,\n Variant as AnswerSummaryVariant,\n};\n","import type { ComponentProps, PropsWithChildren, ReactNode } from 'react';\nimport { cva } from 'class-variance-authority';\n\nimport { Avatar } from '../../components/Avatar';\n\nconst containerClasses = cva(['tw-flex', 'tw-max-w-full', 'tw-gap-4'], {\n variants: {\n variant: {\n user: ['tw-justify-self-end', 'tw-flex-row-reverse'],\n assistant: ['tw-justify-self-start', 'tw-w-full', 'tw-gap-3'],\n },\n },\n defaultVariants: {\n variant: 'assistant',\n },\n});\n\nconst contentClasses = cva(\n [\n 'tw-flex',\n 'tw-flex-col',\n 'tw-gap-4',\n 'tw-break-words',\n 'tw-leading-relaxed',\n 'tw-text-neutral-800',\n '[&_.tw-prose]:tw-text-neutral-800',\n ],\n {\n variants: {\n variant: {\n assistant: ['tw-flex-1', 'tw-w-full', 'tw-min-w-0'],\n user: [\n 'tw-max-w-screen-sm',\n 'tw-w-fit',\n 'tw-bg-neutral-50',\n 'tw-p-3',\n 'tw-rounded-2xl',\n 'tw-ml-6',\n 'tw-overflow-hidden',\n 'tw-break-anywhere',\n ],\n },\n },\n\n defaultVariants: {\n variant: 'assistant',\n },\n },\n);\n\ntype Props = {\n variant: 'user' | 'assistant';\n user?: ComponentProps<typeof Avatar>['user'];\n actions?: ReactNode;\n createdAt?: string;\n} & PropsWithChildren;\n\nexport const MessageBubble = ({ variant, children, user, actions, createdAt }: Props) => {\n return (\n <div className={containerClasses({ variant })} data-testid={`chat-message-${variant}`}>\n {variant === 'user' && <Avatar user={user} size={30} title={createdAt} />}\n <div className=\"tw-flex tw-min-w-0 tw-flex-1 tw-flex-col tw-gap-2\">\n <div className={contentClasses({ variant })}>{children}</div>\n {actions}\n </div>\n </div>\n );\n};\n","import { type FormEvent, type KeyboardEvent, type ReactNode, useState } from 'react';\n\nimport { Badge } from '../../components/Badge';\nimport { Button } from '../../components/Button';\nimport { Icon } from '../../components/Icon';\nimport { cn } from '../../utils';\nimport { Textarea } from '../Textarea';\n\ntype PlanApprovalStatus = 'pending' | 'approved' | 'dismissed' | 'changes-requested';\n\ntype PlanApprovalProps = {\n status: PlanApprovalStatus;\n title: string;\n summary?: ReactNode;\n stepCount?: number;\n planBody?: ReactNode;\n\n defaultExpanded?: boolean;\n isExpanded?: boolean;\n onExpandToggle?: (next: boolean) => void;\n\n onApprove?: () => void;\n onRequestChanges?: (reason: string) => void;\n onClose?: () => void;\n isSubmitting?: boolean;\n\n pendingPillLabel?: string;\n approvedPillLabel?: string;\n dismissedPillLabel?: string;\n changesRequestedPillLabel?: string;\n approveLabel?: string;\n requestChangesLabel?: string;\n cancelLabel?: string;\n showMoreLabel?: string;\n showLessLabel?: string;\n closeLabel?: string;\n changeRequestPlaceholder?: string;\n changeRequestSubmitLabel?: string;\n stepCountLabel?: (count: number) => string;\n\n className?: string;\n};\n\nconst defaultStepCountLabel = (count: number) => `${count} step${count === 1 ? '' : 's'}`;\n\nconst StatusPill = ({\n status,\n pendingLabel,\n approvedLabel,\n dismissedLabel,\n changesRequestedLabel,\n}: {\n status: PlanApprovalStatus;\n pendingLabel: string;\n approvedLabel: string;\n dismissedLabel: string;\n changesRequestedLabel: string;\n}) => {\n if (status === 'approved') {\n return (\n <Badge color=\"green\" variant=\"pill\" className=\"tw-normal-case tw-tracking-normal\">\n {approvedLabel}\n </Badge>\n );\n }\n if (status === 'dismissed') {\n return (\n <Badge color=\"gray\" variant=\"pill\" className=\"tw-normal-case tw-tracking-normal\">\n {dismissedLabel}\n </Badge>\n );\n }\n if (status === 'changes-requested') {\n return (\n <Badge color=\"blue\" variant=\"pill\" className=\"tw-normal-case tw-tracking-normal\">\n {changesRequestedLabel}\n </Badge>\n );\n }\n return (\n <Badge color=\"green\" variant=\"pill\" className=\"tw-normal-case tw-tracking-normal\">\n {pendingLabel}\n </Badge>\n );\n};\n\nconst ExpandToggle = ({\n isExpanded,\n onToggle,\n showMoreLabel,\n showLessLabel,\n}: {\n isExpanded: boolean;\n onToggle: () => void;\n showMoreLabel: string;\n showLessLabel: string;\n}) => (\n <button\n type=\"button\"\n onClick={onToggle}\n aria-expanded={isExpanded}\n className=\"tailwindcss-preflight tw-inline-flex tw-cursor-pointer tw-items-center tw-gap-1 tw-bg-transparent tw-p-0 tw-text-sm tw-font-medium tw-text-secondary-500 hover:tw-text-secondary-600 focus-visible:tw-outline focus-visible:tw-outline-2 focus-visible:tw-outline-offset-2 focus-visible:tw-outline-secondary-500\"\n >\n <span>{isExpanded ? showLessLabel : showMoreLabel}</span>\n <Icon\n icon=\"chevron-down\"\n className={cn('tw-size-3 tw-transition-transform', isExpanded && 'tw-rotate-180')}\n />\n </button>\n);\n\nexport const PlanApproval = ({\n status,\n title,\n summary,\n stepCount,\n planBody,\n\n defaultExpanded = false,\n isExpanded: isExpandedProp,\n onExpandToggle,\n\n onApprove,\n onRequestChanges,\n onClose,\n isSubmitting = false,\n\n pendingPillLabel = 'Ready for approval',\n approvedPillLabel = 'Approved',\n dismissedPillLabel = 'Dismissed',\n changesRequestedPillLabel = 'Changes Requested',\n approveLabel = 'Approve',\n requestChangesLabel = 'Request Changes',\n cancelLabel = 'Cancel',\n showMoreLabel = 'Show more',\n showLessLabel = 'Show less',\n closeLabel = 'Dismiss plan',\n changeRequestPlaceholder = 'What would you like to change in the plan?',\n changeRequestSubmitLabel = 'Send change request',\n stepCountLabel = defaultStepCountLabel,\n\n className,\n}: PlanApprovalProps) => {\n const [uncontrolledExpanded, setUncontrolledExpanded] = useState(defaultExpanded);\n const isExpanded = isExpandedProp ?? uncontrolledExpanded;\n const [isRequestingChanges, setIsRequestingChanges] = useState(false);\n const [changeRequest, setChangeRequest] = useState('');\n\n const isPending = status === 'pending';\n const showActions = isPending && (onApprove || onRequestChanges);\n const showClose = isPending && Boolean(onClose);\n const canShowPlanBody = planBody != null;\n const trimmedChangeRequest = changeRequest.trim();\n const canSubmitChangeRequest = trimmedChangeRequest.length > 0 && !isSubmitting;\n\n const toggleExpanded = () => {\n const next = !isExpanded;\n if (isExpandedProp === undefined) {\n setUncontrolledExpanded(next);\n }\n onExpandToggle?.(next);\n };\n\n const handleOpenRequestChanges = () => {\n setIsRequestingChanges(true);\n if (!isExpanded) {\n toggleExpanded();\n }\n };\n\n const handleCancelChangeRequest = () => {\n setIsRequestingChanges(false);\n setChangeRequest('');\n };\n\n const handleSubmitChangeRequest = (event?: FormEvent) => {\n event?.preventDefault();\n if (!canSubmitChangeRequest) return;\n onRequestChanges?.(trimmedChangeRequest);\n };\n\n const handleTextareaKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n handleSubmitChangeRequest();\n }\n };\n\n return (\n <section\n aria-label={title}\n className={cn(\n 'tw-flex tw-w-full tw-max-w-[800px] tw-flex-col tw-overflow-hidden tw-rounded-xl tw-border tw-border-solid tw-border-border tw-bg-neutral-50',\n className,\n )}\n data-testid=\"plan-approval-root\"\n data-plan-status={status}\n >\n <div className=\"tw-flex tw-items-start tw-gap-2 tw-pl-4 tw-pr-2 tw-pt-4\">\n <div className=\"tw-flex tw-min-w-0 tw-flex-1 tw-flex-col tw-gap-2 tw-pb-4\">\n <div className=\"tw-flex tw-items-center tw-gap-3\">\n <StatusPill\n status={status}\n pendingLabel={pendingPillLabel}\n approvedLabel={approvedPillLabel}\n dismissedLabel={dismissedPillLabel}\n changesRequestedLabel={changesRequestedPillLabel}\n />\n {stepCount != null && stepCount > 0 && (\n <span className=\"tw-text-xs tw-leading-4 tw-text-neutral-500\">\n {stepCountLabel(stepCount)}\n </span>\n )}\n </div>\n <p className=\"tw-m-0 tw-text-base tw-font-semibold tw-leading-6 tw-text-neutral-800\">\n {title}\n </p>\n </div>\n {showClose && (\n <Button\n argo\n variant=\"outline\"\n size=\"icon-sm\"\n icon={['far', 'xmark']}\n aria-label={closeLabel}\n onClick={onClose}\n disabled={isSubmitting}\n data-testid=\"plan-close-button\"\n />\n )}\n </div>\n\n {summary != null && (\n <div\n className={cn(\n 'tw-whitespace-pre-wrap tw-border-0 tw-border-t tw-border-solid tw-border-neutral-100 tw-px-4 tw-pt-4 tw-text-sm tw-text-neutral-700',\n isExpanded && canShowPlanBody ? 'tw-pb-4' : 'tw-pb-2',\n )}\n >\n {summary}\n </div>\n )}\n\n {isExpanded && canShowPlanBody && (\n <div className=\"tw-max-h-[400px] tw-overflow-y-auto tw-border-0 tw-border-t tw-border-solid tw-border-neutral-100 tw-bg-white tw-p-4 tw-text-sm tw-text-neutral-700\">\n {planBody}\n </div>\n )}\n\n {isRequestingChanges && isPending && (\n <form\n onSubmit={handleSubmitChangeRequest}\n className=\"tw-border-0 tw-border-t tw-border-solid tw-border-neutral-100 tw-bg-white tw-px-4 tw-py-3\"\n aria-label={requestChangesLabel}\n >\n <div className=\"tw-relative\">\n <Textarea\n value={changeRequest}\n onValueChange={setChangeRequest}\n placeholder={changeRequestPlaceholder}\n maxRows={4}\n autoFocus\n onKeyDown={handleTextareaKeyDown}\n containerClassName=\"tw-pr-12\"\n disabled={isSubmitting}\n aria-label={changeRequestPlaceholder}\n data-testid=\"plan-change-request-input\"\n />\n <Button\n argo\n type=\"submit\"\n variant=\"invisible\"\n size=\"icon-sm\"\n icon=\"paper-plane-top\"\n aria-label={changeRequestSubmitLabel}\n disabled={!canSubmitChangeRequest}\n className=\"tw-absolute tw-right-2 tw-top-1/2 tw--translate-y-1/2 [&_svg]:tw-text-secondary-500 not-disabled:hover:[&_svg]:tw-text-secondary-600\"\n data-testid=\"plan-change-request-submit\"\n />\n </div>\n </form>\n )}\n\n <div\n className={cn(\n 'tw-flex tw-items-center tw-border-0 tw-border-t tw-border-solid tw-border-neutral-100 tw-bg-white tw-px-4 tw-py-3',\n canShowPlanBody ? 'tw-justify-between' : 'tw-justify-end',\n )}\n >\n {canShowPlanBody && (\n <ExpandToggle\n isExpanded={isExpanded}\n onToggle={toggleExpanded}\n showMoreLabel={showMoreLabel}\n showLessLabel={showLessLabel}\n />\n )}\n\n {showActions && (\n <div className=\"tw-flex tw-items-center tw-gap-2\">\n {isRequestingChanges ? (\n <Button\n argo\n variant=\"outline\"\n size=\"small\"\n onClick={handleCancelChangeRequest}\n disabled={isSubmitting}\n data-testid=\"plan-cancel-button\"\n >\n {cancelLabel}\n </Button>\n ) : (\n onRequestChanges && (\n <Button\n argo\n variant=\"outline\"\n size=\"small\"\n onClick={handleOpenRequestChanges}\n disabled={isSubmitting}\n data-testid=\"plan-request-changes-button\"\n >\n {requestChangesLabel}\n </Button>\n )\n )}\n {onApprove && (\n <Button\n argo\n variant=\"primary\"\n size=\"small\"\n onClick={onApprove}\n disabled={isSubmitting || isRequestingChanges}\n data-testid=\"plan-approve-button\"\n >\n {approveLabel}\n </Button>\n )}\n </div>\n )}\n </div>\n </section>\n );\n};\n\nexport type { PlanApprovalStatus, PlanApprovalProps };\n","import { Icon } from '../../components/Icon';\n\ntype PlanRewritingIndicatorProps = {\n label?: string;\n};\n\nexport const PlanRewritingIndicator = ({\n label = 'Rewriting the plan...',\n}: PlanRewritingIndicatorProps) => (\n <div\n className=\"tw-flex tw-items-center tw-gap-2\"\n role=\"status\"\n data-testid=\"plan-rewriting-indicator\"\n >\n <Icon icon=\"spinner\" spin className=\"tw-size-4 tw-text-secondary-500\" />\n <span className=\"tw-text-sm tw-italic tw-text-secondary-500\">{label}</span>\n </div>\n);\n\nexport type { PlanRewritingIndicatorProps };\n","import type { ComponentProps, ElementRef, MouseEventHandler, Ref } from 'react';\nimport { Slot } from '@radix-ui/react-slot';\n\ntype Props = ComponentProps<'button'>;\n\nexport const PromptInputAction = ({\n ref,\n onMouseDown,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => {\n const handleOnMouseDown: MouseEventHandler<HTMLButtonElement> = (event) => {\n // Prevents focus stealing by PromptInput.\n event.stopPropagation();\n onMouseDown?.(event);\n };\n\n return <Slot {...rest} ref={ref} onMouseDown={handleOnMouseDown}></Slot>;\n};\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { Button } from '../../components/Button';\nimport { Tooltip } from '../../components/Tooltip';\n\nimport { PromptInputAction } from './PromptInputAction';\n\ntype SubmitStatus = 'submitted' | 'ready' | 'streaming' | 'interrupted';\n\ntype Props = Pick<ComponentProps<typeof Button>, 'disabled'> & {\n status?: SubmitStatus;\n};\n\nexport const PromptInputSubmit = ({\n ref,\n disabled,\n status = 'ready',\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => {\n const getIcon = () => {\n if (status === 'streaming') return 'stop-circle';\n if (status === 'interrupted') return 'play';\n return 'paper-plane-top';\n };\n\n const getTooltipText = () => {\n if (status === 'streaming') return 'Stop';\n if (status === 'interrupted') return 'Continue';\n return undefined;\n };\n\n return (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <PromptInputAction>\n <Button\n ref={ref}\n type=\"submit\"\n disabled={disabled}\n size=\"icon-sm\"\n variant=\"invisible\"\n isLoading={status === 'submitted'}\n icon={getIcon()}\n className=\"tw-ml-auto tw-flex tw-items-center tw-rounded-lg [&_svg]:tw-text-secondary-500 not-disabled:hover:[&_svg]:tw-text-secondary-600\"\n />\n </PromptInputAction>\n </Tooltip.Trigger>\n\n {getTooltipText() && (\n <Tooltip.Content placement=\"top\" variant=\"action\">\n {getTooltipText()}\n </Tooltip.Content>\n )}\n </Tooltip.Root>\n );\n};\n","import {\n type ChangeEventHandler,\n type ComponentProps,\n type ElementRef,\n type FormEventHandler,\n type KeyboardEventHandler,\n type MouseEventHandler,\n type ReactNode,\n useId,\n useRef,\n} from 'react';\nimport TextareaAutosize from 'react-textarea-autosize';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { TooltipProvider } from '../../components/Tooltip';\nimport { cn } from '../../utils';\n\nimport { PromptInputAction } from './PromptInputAction';\nimport { PromptInputSubmit } from './PromptInputSubmit';\n\nconst promptInputVariants = cva(\n [\n 'tailwindcss-preflight',\n 'tw-relative',\n\n 'tw-flex',\n 'tw-gap-2',\n 'tw-justify-center',\n\n // transparent border\n 'tw-border',\n 'tw-border-2',\n 'tw-border-transparent',\n 'tw-rounded-[14px]',\n\n // Gradient background\n 'tw-bg-gradient-to-bl',\n 'tw-from-[#61E4FF]',\n 'tw-via-[#1F8FFF]',\n 'tw-to-[#7C5CFF]',\n\n // For inside used white shadow\n 'tw-bg-origin-border',\n 'tw-shadow-[inset_0_100vw_white]',\n\n // focus\n 'has-[textarea:focus]:tw-ring-4',\n 'has-[textarea:focus]:tw-ring-secondary-200',\n\n 'tw-cursor-text',\n 'tw-px-2',\n ],\n {\n defaultVariants: {\n variant: 'default',\n },\n variants: {\n variant: {\n default: ['tw-flex-col', 'tw-pt-3', 'tw-pb-2'],\n inline: ['tw-flex-row', 'tw-py-3', 'tw-items-center'],\n },\n },\n },\n);\n\nconst wrapperVariants = cva(null, {\n defaultVariants: {\n variant: 'default',\n },\n variants: {\n variant: {\n default: 'tw-rounded-[14px]',\n inline: '',\n },\n },\n});\n\ntype Props = {\n onSend?: (value: string) => void;\n onAbort?: () => void;\n onContinue?: () => void;\n value?: string;\n onValueChange?: (value: string) => void;\n defaultValue?: string;\n prefix?: ReactNode;\n suffix?: ReactNode;\n variant?: 'default' | 'inline';\n disableSubmit?: boolean;\n} & VariantProps<typeof promptInputVariants> &\n Pick<\n ComponentProps<typeof TextareaAutosize>,\n 'placeholder' | 'minRows' | 'maxRows' | 'disabled' | 'defaultValue' | 'autoFocus'\n > &\n ComponentProps<typeof PromptInputSubmit>;\n\nexport const PromptInput = ({\n onSend,\n onAbort,\n onContinue,\n prefix,\n variant,\n suffix,\n disabled,\n disableSubmit,\n value = '',\n onValueChange,\n status = 'ready',\n maxRows = 6,\n minRows,\n ...textareaProps\n}: Props) => {\n const defaultMinRows = variant === 'inline' ? 1 : 2;\n const isDisabled =\n (disabled || disableSubmit || !value.trim()) &&\n status !== 'streaming' &&\n status !== 'interrupted';\n\n const textareaId = useId();\n const textareaRef = useRef<ElementRef<'textarea'>>(null);\n\n const handleSubmit = () => {\n if (isDisabled) return;\n if (status === 'streaming') onAbort?.();\n if (status === 'interrupted') onContinue?.();\n if (status === 'ready') onSend?.(value);\n };\n\n const handleOnSubmit: FormEventHandler<HTMLFormElement> = (event) => {\n event.preventDefault();\n handleSubmit();\n };\n\n const handleOnChange: ChangeEventHandler<HTMLTextAreaElement> = (event) => {\n onValueChange?.(event.target.value);\n };\n\n const handleOnKeyDown: KeyboardEventHandler<HTMLTextAreaElement> = (event) => {\n if (event.key === 'Enter' && !event.shiftKey && !event.ctrlKey && !event.metaKey) {\n event.preventDefault();\n handleSubmit();\n }\n };\n\n const handleOnMouseDown: MouseEventHandler<HTMLFormElement> = (event) => {\n // don't prevent default if the target is the textarea itself\n if (event.target === textareaRef.current) return;\n\n event.preventDefault();\n textareaRef.current?.focus();\n };\n\n return (\n <TooltipProvider>\n <div className={wrapperVariants({ variant })}>\n {/*This is alright, just refocused into a textarea. */}\n {/* oxlint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */}\n <form\n data-testid=\"prompt-input\"\n data-status={status}\n onMouseDown={handleOnMouseDown}\n onSubmit={handleOnSubmit}\n className={cn(\n promptInputVariants({ variant }),\n disabled &&\n 'tw-bg-none tw-border-neutral-200 tw-shadow-[inset_0_100vw_theme(colors.neutral.100)] tw-cursor-default',\n )}\n >\n {prefix && <div className=\"tw-flex tw-items-center\">{prefix}</div>}\n\n <label htmlFor={textareaId} className=\"tw-sr-only\">\n Prompt Input\n </label>\n <TextareaAutosize\n {...textareaProps}\n disabled={disabled}\n minRows={minRows ?? defaultMinRows}\n maxRows={maxRows}\n id={textareaId}\n ref={textareaRef}\n value={value}\n onChange={handleOnChange}\n onKeyDown={handleOnKeyDown}\n className={cn(\n 'tw-resize-none',\n 'tw-outline-none',\n 'tw-w-full',\n 'tw-px-2',\n 'tw-bg-transparent',\n\n // font\n disabled ? 'tw-text-neutral-400' : 'tw-text-neutral-800',\n 'tw-text-sm',\n 'tw-font-sans',\n\n 'tw-transition-[width]',\n 'tw-delay-75',\n 'tw-ease-linear',\n 'tw-overflow-auto',\n )}\n />\n\n <div\n className={cn(\n 'tw-flex tw-items-center tw-gap-4',\n variant === 'inline' ? 'tw-items-end' : 'tw-items-center',\n )}\n >\n {suffix}\n <PromptInputSubmit disabled={isDisabled} status={status} />\n </div>\n </form>\n </div>\n </TooltipProvider>\n );\n};\n\nPromptInput.Action = PromptInputAction;\n","import { type KeyboardEvent, type ReactNode, useState } from 'react';\n\nimport { Button } from '../../components/Button';\nimport { Checkbox } from '../../components/Checkbox';\nimport { Icon } from '../../components/Icon';\nimport { TextInput } from '../../components/Input';\nimport { Progress } from '../../components/Progress';\nimport { cn } from '../../utils';\n\ntype QuestionOption = {\n id: string;\n label: string;\n description?: string;\n preview?: string;\n};\n\ntype Props = {\n question: string;\n header?: string;\n options: readonly QuestionOption[];\n multiSelect?: boolean;\n selectedOptionIds?: readonly string[];\n onSelectionChange?: (selectedIds: readonly string[]) => void;\n customAnswer?: string;\n onCustomAnswerChange?: (value: string) => void;\n showCustomAnswer?: boolean;\n customAnswerPlaceholder?: string;\n showSkip?: boolean;\n onSkip?: () => void;\n onClose?: () => void;\n onNext?: () => void;\n onPrevious?: () => void;\n currentStep?: number;\n totalSteps?: number;\n renderPreview?: (content: string) => ReactNode;\n className?: string;\n};\n\nconst handleKeyDown = (callback: () => void) => (e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n callback();\n }\n};\n\nexport const Question = ({\n question,\n header,\n options,\n multiSelect = true,\n selectedOptionIds = [],\n onSelectionChange,\n customAnswer = '',\n onCustomAnswerChange,\n showCustomAnswer = true,\n customAnswerPlaceholder = 'Type your answer…',\n showSkip = true,\n onSkip,\n onClose,\n onNext,\n onPrevious,\n currentStep,\n totalSteps,\n renderPreview,\n className,\n}: Props) => {\n const [isCustomExpanded, setIsCustomExpanded] = useState(false);\n const isCustomSelected = isCustomExpanded || customAnswer.length > 0;\n const hasSteps = currentStep != null && totalSteps != null;\n const progressValue = hasSteps ? (currentStep / totalSteps) * 100 : 0;\n const isFirstStep = currentStep === 1;\n const isLastStep = hasSteps && currentStep === totalSteps;\n\n const handleOptionToggle = (optionId: string) => {\n if (multiSelect) {\n const isSelected = selectedOptionIds.includes(optionId);\n const nextIds = isSelected\n ? selectedOptionIds.filter((id) => id !== optionId)\n : [...selectedOptionIds, optionId];\n onSelectionChange?.(nextIds);\n } else {\n // Single-select: picking a real option deselects \"Other\" and drops any\n // typed custom answer so it can't leak into the submitted answer.\n setIsCustomExpanded(false);\n onCustomAnswerChange?.('');\n onSelectionChange?.([optionId]);\n }\n };\n\n const handleCustomToggle = (checked: boolean) => {\n setIsCustomExpanded(checked);\n if (checked) {\n // Single-select: \"Other\" and a real option are mutually exclusive.\n if (!multiSelect) {\n onSelectionChange?.([]);\n }\n } else {\n onCustomAnswerChange?.('');\n }\n };\n\n // Typing into (or focusing) the custom input selects \"Other\" directly — no\n // need to click the row/checkbox first.\n const handleCustomFocus = () => {\n setIsCustomExpanded(true);\n if (!multiSelect) {\n onSelectionChange?.([]);\n }\n };\n\n const handleCustomRowClick = () => {\n // Multi-select: the row toggles the checkbox. Single-select: clicking only\n // selects (never deselects, so a second click can't wipe typed text) —\n // switch away by picking a real option instead.\n if (multiSelect) {\n handleCustomToggle(!isCustomSelected);\n } else {\n handleCustomFocus();\n }\n };\n\n return (\n <div\n className={cn(\n 'tw-flex tw-max-w-[800px] tw-flex-col tw-gap-4 tw-overflow-hidden tw-rounded-xl tw-border tw-border-solid tw-border-border tw-bg-neutral-50 tw-shadow-lg',\n className,\n )}\n data-testid=\"question-root\"\n data-question-step={currentStep}\n data-question-total-steps={totalSteps}\n data-question-multi-select={multiSelect}\n >\n <div className=\"tw-flex tw-items-start tw-gap-2 tw-pl-4 tw-pr-2 tw-pt-4\">\n <div className=\"tw-flex tw-min-w-0 tw-flex-1 tw-flex-col tw-gap-1\">\n <p className=\"tw-m-0 tw-text-base tw-font-semibold tw-leading-6 tw-text-neutral-800\">\n {question}\n </p>\n {header && <p className=\"tw-m-0 tw-text-xs tw-leading-4 tw-text-neutral-500\">{header}</p>}\n </div>\n {onClose && (\n <Button\n argo\n variant=\"outline\"\n size=\"icon-sm\"\n icon={['far', 'xmark']}\n aria-label=\"Close\"\n onClick={onClose}\n data-testid=\"question-close-button\"\n />\n )}\n </div>\n\n <div className=\"tw-px-4\">\n <div className=\"tw-flex tw-flex-col tw-gap-4 tw-border-0 tw-border-l tw-border-solid tw-border-primary tw-px-4 tw-py-2\">\n {options.map((option) => (\n <div\n key={option.id}\n className=\"tw--mx-2 tw--my-1.5 tw-flex tw-cursor-pointer tw-items-start tw-gap-2 tw-rounded-md tw-px-2 tw-py-1.5 hover:tw-bg-neutral-100\"\n onClick={() => handleOptionToggle(option.id)}\n onKeyDown={handleKeyDown(() => handleOptionToggle(option.id))}\n role=\"button\"\n tabIndex={0}\n data-testid={`question-option-${option.id}`}\n >\n {multiSelect && (\n <Checkbox\n checked={selectedOptionIds.includes(option.id)}\n onCheckedChange={() => handleOptionToggle(option.id)}\n onClick={(e) => e.stopPropagation()}\n className=\"tw-shrink-0\"\n />\n )}\n <div className=\"tw-flex tw-min-w-0 tw-flex-1 tw-items-start tw-gap-3\">\n <div className=\"tw-flex tw-flex-col tw-gap-1.5\">\n <span className=\"tw-text-sm tw-font-medium tw-leading-none tw-text-neutral-800\">\n {option.label}\n </span>\n {option.description && (\n <span className=\"tw-text-sm tw-font-normal tw-leading-5 tw-text-muted-foreground\">\n {option.description}\n </span>\n )}\n </div>\n {option.preview && (\n <div\n className={cn(\n 'tw-ml-auto tw-flex tw-max-h-40 tw-min-w-0 tw-max-w-[50%] tw-flex-col tw-overflow-hidden tw-rounded-md',\n !renderPreview &&\n 'tw-overflow-auto tw-border tw-border-solid tw-border-neutral-200 tw-bg-white tw-p-2',\n )}\n >\n {renderPreview ? (\n renderPreview(option.preview)\n ) : (\n <pre className=\"tw-m-0 tw-overflow-visible tw-border-0 tw-bg-transparent tw-p-0 tw-font-mono tw-text-xs tw-leading-5 tw-text-neutral-700\">\n {option.preview}\n </pre>\n )}\n </div>\n )}\n </div>\n </div>\n ))}\n\n {showCustomAnswer && (\n <div className=\"tw-flex tw-flex-col tw-gap-2\">\n <div\n className=\"tw--mx-2 tw--my-1.5 tw-flex tw-cursor-pointer tw-items-start tw-gap-2 tw-rounded-md tw-px-2 tw-py-1.5 hover:tw-bg-neutral-100\"\n onClick={handleCustomRowClick}\n onKeyDown={handleKeyDown(handleCustomRowClick)}\n role=\"button\"\n tabIndex={0}\n >\n {/* Multi-select shows a checkbox alongside the option checkboxes.\n Single-select options auto-advance and carry no indicator, so\n \"Other\" is a plain clickable row that reveals the input below. */}\n {multiSelect && (\n <Checkbox\n checked={isCustomSelected}\n onCheckedChange={handleCustomToggle}\n onClick={(e) => e.stopPropagation()}\n className=\"tw-shrink-0\"\n />\n )}\n <span\n className={cn(\n 'tw-text-sm tw-font-medium tw-leading-none',\n !multiSelect && isCustomSelected ? 'tw-text-primary' : 'tw-text-neutral-800',\n )}\n >\n Other\n </span>\n </div>\n {/* Always rendered and editable: typing or focusing selects \"Other\"\n directly, and keeping it mounted avoids layout shift. */}\n <TextInput\n value={customAnswer}\n onValueChange={(value) => onCustomAnswerChange?.(value)}\n onFocus={handleCustomFocus}\n placeholder={customAnswerPlaceholder}\n sizing=\"small\"\n testId=\"question-custom\"\n />\n </div>\n )}\n </div>\n </div>\n\n <div className=\"tw-flex tw-flex-col\">\n {hasSteps && <Progress size=\"sm\" value={progressValue} className=\"tw-rounded-none\" />}\n\n <div\n className={cn(\n 'tw-flex tw-items-center tw-justify-end tw-gap-4 tw-px-4 tw-py-3',\n !hasSteps && 'tw-border-0 tw-border-t tw-border-solid tw-border-neutral-100',\n )}\n >\n {hasSteps && (\n <div className=\"tw-flex tw-items-center tw-gap-2\">\n <button\n type=\"button\"\n disabled={isFirstStep}\n className=\"tailwindcss-preflight tw-flex tw-cursor-pointer tw-items-center tw-justify-center tw-bg-transparent tw-p-0 disabled:tw-cursor-default\"\n onClick={onPrevious}\n aria-label=\"Previous step\"\n >\n <Icon\n icon=\"chevron-left\"\n className={cn(\n 'tw-size-4',\n isFirstStep ? 'tw-text-primary/25' : 'tw-text-primary',\n )}\n />\n </button>\n <span className=\"tw-text-xs tw-leading-4 tw-text-neutral-500\">\n {currentStep} of {totalSteps}\n </span>\n <button\n type=\"button\"\n disabled={currentStep === totalSteps}\n className=\"tailwindcss-preflight tw-flex tw-cursor-pointer tw-items-center tw-justify-center tw-bg-transparent tw-p-0 disabled:tw-cursor-default\"\n onClick={onNext}\n aria-label=\"Next step\"\n >\n <Icon\n icon=\"chevron-right\"\n className={cn(\n 'tw-size-4',\n currentStep === totalSteps ? 'tw-text-primary/25' : 'tw-text-primary',\n )}\n />\n </button>\n </div>\n )}\n {showSkip && onSkip && (\n <Button\n argo\n variant=\"outline\"\n size=\"small\"\n onClick={onSkip}\n data-testid=\"question-skip-button\"\n >\n Skip\n </Button>\n )}\n {(multiSelect || isCustomSelected) && (\n <Button\n argo\n variant=\"primary\"\n size=\"small\"\n onClick={onNext}\n data-testid=\"question-next-button\"\n >\n {isLastStep ? 'Submit' : 'Next'}\n </Button>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport type { QuestionOption, Props as QuestionProps };\n","import { type ReactNode, useState } from 'react';\n\nimport type { QuestionOption } from './Question';\nimport { Question } from './Question';\n\ntype QuestionStep = {\n question: string;\n header?: string;\n options: readonly QuestionOption[];\n multiSelect?: boolean;\n showCustomAnswer?: boolean;\n customAnswerPlaceholder?: string;\n};\n\ntype QuestionAnswers = {\n selections: Record<number, readonly string[]>;\n customAnswers: Record<number, string>;\n};\n\ntype Props = {\n steps: readonly [QuestionStep, ...QuestionStep[]];\n showSkip?: boolean;\n onSubmit?: (answers: QuestionAnswers) => void;\n onClose?: () => void;\n renderPreview?: (content: string) => ReactNode;\n className?: string;\n};\n\nexport const QuestionBlock = ({\n steps,\n showSkip = true,\n onSubmit,\n onClose,\n renderPreview,\n className,\n}: Props) => {\n const [currentStep, setCurrentStep] = useState(1);\n const [selections, setSelections] = useState<Record<number, readonly string[]>>({});\n const [customAnswers, setCustomAnswers] = useState<Record<number, string>>({});\n const stepData = steps[currentStep - 1]!;\n const isLastStep = currentStep === steps.length;\n\n const advance = (updatedSelections?: Record<number, readonly string[]>) => {\n const finalSelections = updatedSelections ?? selections;\n if (isLastStep) {\n onSubmit?.({ selections: finalSelections, customAnswers });\n } else {\n setCurrentStep((s) => Math.min(s + 1, steps.length));\n }\n };\n\n const handleSelectionChange = (ids: readonly string[]) => {\n const updated = { ...selections, [currentStep]: ids };\n setSelections(updated);\n if (!stepData.multiSelect) {\n advance(updated);\n }\n };\n\n return (\n <Question\n key={currentStep}\n {...stepData}\n selectedOptionIds={selections[currentStep] ?? []}\n onSelectionChange={handleSelectionChange}\n customAnswer={customAnswers[currentStep] ?? ''}\n onCustomAnswerChange={(value) =>\n setCustomAnswers((prev) => ({ ...prev, [currentStep]: value }))\n }\n currentStep={currentStep}\n totalSteps={steps.length}\n showSkip={showSkip && !isLastStep}\n onNext={() => advance()}\n onPrevious={() => setCurrentStep((s) => Math.max(s - 1, 1))}\n onSkip={() => setCurrentStep((s) => Math.min(s + 1, steps.length))}\n onClose={onClose}\n renderPreview={renderPreview}\n className={className}\n />\n );\n};\n\nexport type { QuestionStep, QuestionAnswers, Props as QuestionBlockProps };\n","import type { ReactNode } from 'react';\n\nimport { Icon } from '../../components/Icon';\nimport { cn } from '../../utils';\n\ntype Props = {\n label: string;\n disabled?: boolean;\n onClick: () => void;\n icon?: ReactNode;\n className?: string;\n};\n\nexport const SuggestedPrompt = ({ label, disabled, onClick, icon, className }: Props) => {\n return (\n <button\n type=\"button\"\n disabled={disabled}\n className={cn(\n 'tw-group tailwindcss-preflight tw-flex tw-items-center tw-justify-start tw-gap-2 tw-whitespace-nowrap tw-rounded-lg tw-p-2 tw-text-left tw-text-sm tw-font-medium tw-text-neutral-600 tw-transition-colors not-disabled:hover:tw-bg-neutral-100 disabled:tw-cursor-not-allowed disabled:tw-opacity-50',\n className,\n )}\n onClick={onClick}\n >\n {icon ?? (\n <Icon\n className=\"group-not-disabled:group-hover:[&_path]:tw-fill-secondary-600 tw-size-4 tw-shrink-0 tw-basis-4 [&_path]:tw-fill-aigradient-600\"\n fixedWidth\n icon={['far', 'file-lines']}\n />\n )}\n <div className=\"tw-whitespace-normal tw-text-left\">{label}</div>\n </button>\n );\n};\n","import { Icon } from '../../components/Icon';\n\ntype ThinkingIndicatorProps = {\n label?: string;\n};\n\nexport const ThinkingIndicator = ({ label = 'Thinking...' }: ThinkingIndicatorProps) => {\n return (\n <div className=\"tw-flex tw-items-center tw-gap-2\" data-testid=\"chat-thinking-indicator\">\n <Icon icon=\"spinner\" spin className=\"tw-size-4 tw-text-secondary-500\" />\n <span className=\"tw-text-sm tw-italic tw-text-secondary-500\">{label}</span>\n </div>\n );\n};\n","import { type ComponentProps, useState } from 'react';\n\nimport { Icon } from '../../components/Icon';\nimport { cn } from '../../utils';\nimport { Textarea } from '../Textarea';\n\ntype AutoSaveTextareaProps = {\n savedValue?: string;\n onSave: (value: string) => Promise<void>;\n placeholder?: string;\n disabled?: boolean;\n grow?: boolean;\n} & Pick<\n ComponentProps<typeof Textarea>,\n 'variant' | 'minRows' | 'maxRows' | 'className' | 'containerClassName' | 'maxLength'\n>;\n\nexport const AutoSaveTextarea = ({\n savedValue,\n onSave,\n placeholder,\n disabled,\n grow = false,\n ...textareaProps\n}: AutoSaveTextareaProps) => {\n const { maxLength, ...restTextareaProps } = textareaProps;\n const [value, setValue] = useState<string | null>(null);\n const [isSaving, setIsSaving] = useState(false);\n\n const currentValue = value ?? savedValue ?? '';\n const isOverLimit = maxLength != null && currentValue.length > maxLength;\n const isChanged = value !== null && savedValue !== value.trim();\n\n const onSaveHandler = (blurValue = '') => {\n if (!isChanged || isOverLimit) return;\n\n setIsSaving(true);\n onSave(blurValue.trim())\n .catch(() => {})\n .finally(() => {\n setIsSaving(false);\n });\n };\n\n return (\n <div\n className={cn(\n 'tw-relative',\n // `-mx-1 + px-3` gives the focus ring 4px of horizontal breathing room inside\n // ancestors that clip with `overflow: hidden` and no horizontal padding (e.g. the\n // Kai sidebar's TabsContent). `-my-1 + py-1` keeps the original zero vertical inset.\n grow &&\n '-tw-m-1 tw-flex tw-min-h-0 tw-flex-1 tw-flex-col tw-overflow-hidden tw-px-3 tw-py-1',\n )}\n >\n <Textarea\n {...restTextareaProps}\n containerClassName={cn(\n // Descendant selectors match InputGroup's `[&>textarea]:!tw-min-h-[…]` specificity\n // so the textarea fills the wrapper instead of being pinned to the sizing min-height.\n grow &&\n 'tw-min-h-0 tw-flex-1 tw-overflow-hidden [&>textarea]:!tw-min-h-full [&>textarea]:!tw-max-h-full [&>textarea]:tw-overflow-y-auto',\n restTextareaProps.containerClassName,\n )}\n state={isOverLimit ? 'error' : undefined}\n value={currentValue}\n onValueChange={setValue}\n onValueBlur={() => onSaveHandler(value ?? '')}\n placeholder={placeholder}\n disabled={disabled || isSaving}\n disableResize={grow}\n // `grow` fills the container regardless of content length; skip the 4-row cap.\n maxRows={grow ? 'unlimited' : restTextareaProps.maxRows}\n />\n <div\n className={cn(\n 'tw-mt-1 tw-flex tw-items-center tw-text-xs',\n maxLength != null ? 'tw-justify-between' : 'tw-justify-end',\n )}\n >\n {maxLength != null && (\n <span className={cn(isOverLimit ? 'tw-text-error-500' : 'tw-text-neutral-400')}>\n {currentValue.length} / {maxLength}\n </span>\n )}\n <span className=\"tw-text-neutral-400\">\n {isOverLimit && 'Character limit exceeded'}\n {!isOverLimit && isChanged && !isSaving && 'Unsaved'}\n {!isOverLimit && isChanged && isSaving && (\n <>\n <Icon spin icon=\"spinner\" className=\"tw-mr-1\" /> Saving\n </>\n )}\n {!isOverLimit && value !== null && !isChanged && !isSaving && (\n <>\n <Icon icon=\"check-circle\" className=\"tw-text-primary-500\" /> Saved\n </>\n )}\n </span>\n </div>\n </div>\n );\n};\n","import { useRef, useState } from 'react';\nimport type {\n ChangeEventHandler,\n ComponentProps,\n ElementRef,\n FocusEventHandler,\n KeyboardEventHandler,\n MouseEventHandler,\n Ref,\n} from 'react';\n\nimport { Icon } from '../../components/Icon';\nimport { InputGroup } from '../../components/InputGroup';\nimport { createChangeInputEvent, mergeRefs } from '../../utils';\n\ntype InputGroupProps = Pick<\n ComponentProps<typeof InputGroup>,\n 'variant' | 'focusVariant' | 'state' | 'sizing'\n>;\n\ntype InputGroupInputProps = Omit<\n ComponentProps<typeof InputGroup.Input>,\n 'value' | 'defaultValue' | 'type' | 'autoComplete'\n>;\n\ntype Props = InputGroupProps &\n InputGroupInputProps & {\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string) => void;\n onValueBlur?: (value: string) => void;\n allowClear?: boolean;\n allowPasswordToggle?: boolean;\n autoComplete?: 'new-password' | 'current-password' | 'off';\n defaultPasswordVisibility?: boolean;\n };\n\nexport const PasswordInput = ({\n ref,\n\n // group props\n state,\n variant,\n focusVariant,\n sizing,\n className,\n\n // own props\n value: valueProp,\n defaultValue,\n onValueChange,\n onValueBlur,\n onChange,\n onBlur,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n allowClear = false,\n allowPasswordToggle = false,\n autoComplete = 'new-password',\n defaultPasswordVisibility = false,\n\n // input props\n disabled,\n readOnly,\n ...restInputProps\n}: Props & { ref?: Ref<ElementRef<'input'>> }) => {\n const inputRef = useRef<ElementRef<'input'>>(null);\n\n const [internalValue, setInternalValue] = useState(defaultValue ?? '');\n const isControlled = valueProp !== undefined;\n const value = isControlled ? (valueProp ?? '') : internalValue;\n const setValue = (next: string) => {\n if (!isControlled) setInternalValue(next);\n onValueChange?.(next);\n };\n\n const [capsLock, setCapsLock] = useState(false);\n const [isPasswordVisible, setIsPasswordVisible] = useState(defaultPasswordVisibility);\n\n const canClear = allowClear && !!value && !disabled && !readOnly;\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n setValue(event.target.value);\n onChange?.(event);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n if (capsLock) setCapsLock(false);\n onValueBlur?.(event.target.value);\n onBlur?.(event);\n };\n\n // Both keyDown and keyUp are needed: pressing the Caps Lock key itself\n // reports the *old* state on keyDown and the *new* state on keyUp, so\n // toggling Caps Lock off mid-typing is only caught on keyUp.\n const handleKeyDown: KeyboardEventHandler<HTMLInputElement> = (event) => {\n const isOn = event.getModifierState('CapsLock');\n if (isOn !== capsLock) setCapsLock(isOn);\n onKeyDown?.(event);\n };\n\n const handleKeyUp: KeyboardEventHandler<HTMLInputElement> = (event) => {\n const isOn = event.getModifierState('CapsLock');\n if (isOn !== capsLock) setCapsLock(isOn);\n onKeyUp?.(event);\n };\n\n // Catches the case where the user clicks into the field with Caps Lock\n // already on. Tab-focus / autofocus have no API to query modifier state.\n const handleMouseDown: MouseEventHandler<HTMLInputElement> = (event) => {\n const isOn = event.getModifierState('CapsLock');\n if (isOn !== capsLock) setCapsLock(isOn);\n onMouseDown?.(event);\n };\n\n const handleClear: MouseEventHandler<HTMLButtonElement> = () => {\n if (!inputRef.current) return;\n inputRef.current.value = '';\n setValue('');\n onChange?.(createChangeInputEvent(inputRef.current));\n };\n\n const handleTogglePasswordVisibility = () => {\n setIsPasswordVisible((prev) => !prev);\n };\n\n return (\n <InputGroup\n state={state}\n variant={variant}\n sizing={sizing}\n focusVariant={focusVariant}\n className={className}\n >\n <InputGroup.Input\n {...restInputProps}\n ref={mergeRefs(ref ?? null, inputRef)}\n type={isPasswordVisible ? 'text' : 'password'}\n autoComplete={autoComplete}\n value={value}\n onChange={handleChange}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n onMouseDown={handleMouseDown}\n disabled={disabled}\n readOnly={readOnly}\n />\n\n {(capsLock || canClear || allowPasswordToggle) && (\n <InputGroup.Addon align=\"inline-end\">\n {capsLock && (\n <Icon\n icon=\"up-from-line\"\n title=\"Caps Lock is on\"\n className=\"tw-size-4 tw-text-primary\"\n />\n )}\n {canClear && (\n <InputGroup.Button\n icon=\"xmark\"\n aria-label=\"Clear password\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={handleClear}\n />\n )}\n {allowPasswordToggle && (\n <InputGroup.Button\n icon={isPasswordVisible ? 'eye-slash' : 'eye'}\n aria-label={isPasswordVisible ? 'Hide password' : 'Show password'}\n onMouseDown={(event) => event.preventDefault()}\n onClick={handleTogglePasswordVisibility}\n />\n )}\n </InputGroup.Addon>\n )}\n </InputGroup>\n );\n};\n","import { createFormHookContexts } from '@tanstack/react-form';\n\nexport const { fieldContext, useFieldContext, formContext, useFormContext } =\n createFormHookContexts();\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { cn } from '@keboola/design';\n\nimport { useFormContext } from '../contexts';\n\ntype Props = {\n children: ReactNode;\n} & Omit<ComponentProps<'form'>, 'onSubmit'>;\n\nexport const FormBody = ({ children, className, ...formProps }: Props) => {\n const form = useFormContext();\n\n return (\n <form\n {...formProps}\n className={cn('tw-flex tw-flex-col tw-gap-4', className)}\n onSubmit={(e) => {\n e.preventDefault();\n e.stopPropagation();\n void form.handleSubmit();\n }}\n >\n {children}\n </form>\n );\n};\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { Button } from '@keboola/design';\n\nimport { useFormContext } from '../contexts';\n\ntype Props = {\n children?: ReactNode;\n} & Omit<ComponentProps<typeof Button>, 'type' | 'isLoading' | 'disabled'>;\n\nexport const SubmitButton = ({ children = 'Submit', ...buttonProps }: Props) => {\n const form = useFormContext();\n\n return (\n <form.Subscribe\n selector={(state) => ({ isSubmitting: state.isSubmitting, canSubmit: state.canSubmit })}\n >\n {({ isSubmitting, canSubmit }) => (\n <Button\n {...buttonProps}\n type=\"submit\"\n isLoading={isSubmitting}\n disabled={!canSubmit || isSubmitting}\n >\n {children}\n </Button>\n )}\n </form.Subscribe>\n );\n};\n","import type { ReactNode } from 'react';\nimport type { AnyFieldApi } from '@tanstack/react-form';\n\nimport { FormGroup, Label } from '@keboola/design';\n\ntype Props = {\n field: AnyFieldApi;\n label?: ReactNode;\n required?: boolean;\n help?: ReactNode;\n className?: string;\n children: ReactNode;\n};\n\nconst errorMessage = (field: AnyFieldApi): string | undefined => {\n const first = field.state.meta.errors[0];\n if (!first) return undefined;\n if (typeof first === 'string') return first;\n if (typeof first === 'object' && first !== null && 'message' in first) {\n const message = (first as { message: unknown }).message;\n return typeof message === 'string' ? message : undefined;\n }\n return undefined;\n};\n\nexport const FieldShell = ({ field, label, required, help, className, children }: Props) => {\n const error = errorMessage(field);\n const showError = field.state.meta.isTouched && !!error;\n\n return (\n <FormGroup className={className} state={showError ? 'error' : undefined}>\n {label && (\n <Label htmlFor={field.name}>\n {label}\n {required && <span className=\"tw-ml-0.5 tw-text-secondary-500\">*</span>}\n </Label>\n )}\n {children}\n {showError ? (\n <FormGroup.Help>{error}</FormGroup.Help>\n ) : (\n help && <FormGroup.Help>{help}</FormGroup.Help>\n )}\n </FormGroup>\n );\n};\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { Checkbox } from '@keboola/design';\n\nimport { useFieldContext } from '../contexts';\n\nimport { FieldShell } from './FieldShell';\n\ntype Props = {\n label?: ReactNode;\n help?: ReactNode;\n className?: string;\n} & Omit<ComponentProps<typeof Checkbox>, 'id' | 'name' | 'checked' | 'onCheckedChange'>;\n\nexport const CheckboxField = ({ label, help, className, children, ...checkboxProps }: Props) => {\n const field = useFieldContext<boolean>();\n\n return (\n <FieldShell field={field} help={help} className={className}>\n <Checkbox\n id={field.name}\n name={field.name}\n checked={field.state.value ?? false}\n onCheckedChange={(checked) => {\n field.handleChange(checked === true);\n }}\n onBlur={field.handleBlur}\n {...checkboxProps}\n >\n {children ?? label}\n </Checkbox>\n </FieldShell>\n );\n};\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { FormGroup } from '@keboola/design';\n\nimport { useFieldContext } from '../contexts';\n\nimport { FieldShell } from './FieldShell';\n\ntype Props = {\n label?: ReactNode;\n required?: boolean;\n help?: ReactNode;\n className?: string;\n} & Omit<\n ComponentProps<typeof FormGroup.NumberInput>,\n 'id' | 'name' | 'value' | 'onValueChange' | 'onBlur'\n>;\n\nexport const NumberField = ({ label, required, help, className, ...inputProps }: Props) => {\n const field = useFieldContext<number | null>();\n\n return (\n <FieldShell field={field} label={label} required={required} help={help} className={className}>\n <FormGroup.NumberInput\n id={field.name}\n name={field.name}\n value={field.state.value ?? null}\n onValueChange={(value) => {\n field.handleChange(value);\n }}\n onBlur={field.handleBlur}\n {...inputProps}\n />\n </FieldShell>\n );\n};\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { PasswordInput } from '@keboola/design';\n\nimport { useFieldContext } from '../contexts';\n\nimport { FieldShell } from './FieldShell';\n\ntype Props = {\n label?: ReactNode;\n required?: boolean;\n help?: ReactNode;\n className?: string;\n} & Omit<\n ComponentProps<typeof PasswordInput>,\n 'id' | 'name' | 'value' | 'onValueChange' | 'onBlur'\n>;\n\nexport const PasswordField = ({ label, required, help, className, ...inputProps }: Props) => {\n const field = useFieldContext<string>();\n const showError = field.state.meta.isTouched && field.state.meta.errors.length > 0;\n\n return (\n <FieldShell field={field} label={label} required={required} help={help} className={className}>\n <PasswordInput\n id={field.name}\n name={field.name}\n value={field.state.value ?? ''}\n state={showError ? 'error' : undefined}\n onValueChange={(value) => {\n field.handleChange(value);\n }}\n onBlur={field.handleBlur}\n {...inputProps}\n />\n </FieldShell>\n );\n};\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { Select } from '@keboola/design';\n\nimport { useFieldContext } from '../contexts';\n\nimport { FieldShell } from './FieldShell';\n\ntype Option = {\n value: string;\n label: ReactNode;\n};\n\ntype TriggerProps = ComponentProps<typeof Select.Trigger>;\ntype RootProps = ComponentProps<typeof Select.Root>;\n\ntype Props = {\n label?: ReactNode;\n required?: boolean;\n help?: ReactNode;\n className?: string;\n options: readonly Option[];\n placeholder?: string;\n triggerClassName?: string;\n variant?: TriggerProps['variant'];\n state?: TriggerProps['state'];\n sizing?: TriggerProps['sizing'];\n} & Omit<RootProps, 'value' | 'onValueChange' | 'children'>;\n\nexport const SelectField = ({\n label,\n required,\n help,\n className,\n options,\n placeholder,\n triggerClassName,\n variant,\n state,\n sizing,\n ...rootProps\n}: Props) => {\n const field = useFieldContext<string>();\n\n return (\n <FieldShell field={field} label={label} required={required} help={help} className={className}>\n <Select.Root\n value={field.state.value ?? ''}\n onValueChange={(value) => {\n field.handleChange(value);\n }}\n {...rootProps}\n >\n <Select.Trigger\n id={field.name}\n className={triggerClassName ?? 'tw-w-full'}\n placeholder={placeholder}\n variant={variant}\n state={state}\n sizing={sizing}\n onBlur={field.handleBlur}\n />\n <Select.Content variant={variant === 'argo' ? 'argo' : 'default'}>\n {options.map((option) => (\n <Select.Item key={option.value} value={option.value}>\n {option.label}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Root>\n </FieldShell>\n );\n};\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { Switch } from '@keboola/design';\n\nimport { useFieldContext } from '../contexts';\n\nimport { FieldShell } from './FieldShell';\n\ntype Props = {\n label?: ReactNode;\n help?: ReactNode;\n className?: string;\n} & Omit<ComponentProps<typeof Switch>, 'id' | 'name' | 'checked' | 'onCheckedChange'>;\n\nexport const SwitchField = ({ label, help, className, children, ...switchProps }: Props) => {\n const field = useFieldContext<boolean>();\n\n return (\n <FieldShell field={field} help={help} className={className}>\n <Switch\n id={field.name}\n name={field.name}\n checked={field.state.value ?? false}\n onCheckedChange={(checked) => {\n field.handleChange(checked);\n }}\n onBlur={field.handleBlur}\n {...switchProps}\n >\n {children ?? label}\n </Switch>\n </FieldShell>\n );\n};\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { FormGroup } from '@keboola/design';\n\nimport { useFieldContext } from '../contexts';\n\nimport { FieldShell } from './FieldShell';\n\ntype Props = {\n label?: ReactNode;\n required?: boolean;\n help?: ReactNode;\n className?: string;\n} & Omit<\n ComponentProps<typeof FormGroup.Textarea>,\n 'id' | 'name' | 'value' | 'onValueChange' | 'onBlur'\n>;\n\nexport const TextAreaField = ({ label, required, help, className, ...inputProps }: Props) => {\n const field = useFieldContext<string>();\n\n return (\n <FieldShell field={field} label={label} required={required} help={help} className={className}>\n <FormGroup.Textarea\n id={field.name}\n name={field.name}\n value={field.state.value ?? ''}\n onValueChange={(value) => {\n field.handleChange(value);\n }}\n onBlur={field.handleBlur}\n {...inputProps}\n />\n </FieldShell>\n );\n};\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { FormGroup } from '@keboola/design';\n\nimport { useFieldContext } from '../contexts';\n\nimport { FieldShell } from './FieldShell';\n\ntype Props = {\n label?: ReactNode;\n required?: boolean;\n help?: ReactNode;\n className?: string;\n} & Omit<\n ComponentProps<typeof FormGroup.TextInput>,\n 'id' | 'name' | 'value' | 'onChange' | 'onBlur'\n>;\n\nexport const TextField = ({ label, required, help, className, ...inputProps }: Props) => {\n const field = useFieldContext<string>();\n\n return (\n <FieldShell field={field} label={label} required={required} help={help} className={className}>\n <FormGroup.TextInput\n id={field.name}\n name={field.name}\n value={field.state.value ?? ''}\n onChange={(e) => {\n field.handleChange(e.target.value);\n }}\n onBlur={field.handleBlur}\n {...inputProps}\n />\n </FieldShell>\n );\n};\n","import { createFormHook } from '@tanstack/react-form';\n\nimport { FormBody } from './components/FormBody';\nimport { SubmitButton } from './components/SubmitButton';\nimport { CheckboxField } from './connectors/CheckboxField';\nimport { NumberField } from './connectors/NumberField';\nimport { PasswordField } from './connectors/PasswordField';\nimport { SelectField } from './connectors/SelectField';\nimport { SwitchField } from './connectors/SwitchField';\nimport { TextAreaField } from './connectors/TextAreaField';\nimport { TextField } from './connectors/TextField';\nimport { fieldContext, formContext } from './contexts';\n\nexport const { useAppForm, withForm } = createFormHook({\n fieldContext,\n formContext,\n fieldComponents: {\n TextField,\n NumberField,\n PasswordField,\n TextAreaField,\n SelectField,\n CheckboxField,\n SwitchField,\n },\n formComponents: {\n FormBody,\n SubmitButton,\n },\n});\n","import type { AnyFormApi } from '@tanstack/react-form';\n\nexport type ServerFieldError = {\n field: string;\n message: string;\n};\n\n/**\n * Map a list of server-returned field errors onto a TanStack form instance.\n * Marks each field as touched so the error renders immediately.\n */\nexport const setServerFieldErrors = (form: AnyFormApi, errors: readonly ServerFieldError[]) => {\n for (const { field, message } of errors) {\n form.setFieldMeta(field, (meta) => ({\n ...meta,\n isTouched: true,\n errors: [message],\n errorMap: { ...meta.errorMap, onServer: message },\n }));\n }\n};\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { ClipboardButton } from '../../blocks/ClipboardButton';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport { Tooltip } from '../Tooltip';\n\nconst MIN_SCALE = 0.5;\nconst MAX_SCALE = 3;\nconst ZOOM_STEP = 0.1;\n\ntype Props = {\n /** Raw HTML/SVG string. Caller is responsible for sanitizing user-generated content before passing. */\n html: string;\n copyText?: string;\n className?: string;\n};\n\nexport const ZoomableSvg = ({ html, copyText, className }: Props) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [scale, setScale] = useState(1);\n const [translate, setTranslate] = useState({ x: 0, y: 0 });\n const [isFullscreen, setIsFullscreen] = useState(false);\n\n useEffect(() => {\n if (!isFullscreen) return;\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.stopPropagation();\n setIsFullscreen(false);\n }\n };\n document.addEventListener('keydown', onKeyDown, { capture: true });\n return () => document.removeEventListener('keydown', onKeyDown, { capture: true });\n }, [isFullscreen]);\n\n const dragRef = useRef<{\n startX: number;\n startY: number;\n startTx: number;\n startTy: number;\n } | null>(null);\n\n useEffect(() => {\n const el = containerRef.current;\n if (!el) return;\n\n const onWheel = (e: WheelEvent) => {\n if (!e.ctrlKey && !e.metaKey) return;\n e.preventDefault();\n const delta = e.deltaY > 0 ? -ZOOM_STEP : ZOOM_STEP;\n setScale((s) => Math.min(MAX_SCALE, Math.max(MIN_SCALE, s + delta)));\n };\n\n el.addEventListener('wheel', onWheel, { passive: false });\n return () => el.removeEventListener('wheel', onWheel);\n }, []);\n\n const didDragRef = useRef(false);\n\n const handleMouseDown = useCallback(\n (e: React.MouseEvent) => {\n if (e.button !== 0) return;\n e.preventDefault();\n didDragRef.current = false;\n dragRef.current = {\n startX: e.clientX,\n startY: e.clientY,\n startTx: translate.x,\n startTy: translate.y,\n };\n },\n [translate],\n );\n\n const handleMouseMove = useCallback((e: React.MouseEvent) => {\n if (!dragRef.current) return;\n didDragRef.current = true;\n setTranslate({\n x: dragRef.current.startTx + e.clientX - dragRef.current.startX,\n y: dragRef.current.startTy + e.clientY - dragRef.current.startY,\n });\n }, []);\n\n const handleMouseUp = useCallback(() => {\n dragRef.current = null;\n }, []);\n\n const handleReset = useCallback(() => {\n setScale(1);\n setTranslate({ x: 0, y: 0 });\n }, []);\n\n const isZoomed = Math.abs(scale - 1) > 0.001 || translate.x !== 0 || translate.y !== 0;\n\n const handleClick = useCallback((e: React.MouseEvent) => {\n if (didDragRef.current) {\n e.stopPropagation();\n }\n }, []);\n\n const stopPropagation = useCallback((e: React.SyntheticEvent) => {\n e.stopPropagation();\n }, []);\n\n const diagramContent = (\n <div\n role=\"presentation\"\n className={cn('tw-group/zoom tw-relative', isFullscreen && 'tw-h-full')}\n onClick={handleClick}\n >\n <div\n role=\"presentation\"\n ref={containerRef}\n className={cn(\n 'tw-overflow-hidden tw-cursor-grab active:tw-cursor-grabbing tw-p-3',\n isFullscreen && 'tw-h-full',\n )}\n onMouseDown={handleMouseDown}\n onMouseMove={handleMouseMove}\n onMouseUp={handleMouseUp}\n onMouseLeave={handleMouseUp}\n >\n <div\n className={cn(\n 'tw-flex tw-justify-center tw-origin-center',\n isFullscreen && 'tw-h-full [&>svg]:tw-h-full',\n )}\n style={{ transform: `translate(${translate.x}px, ${translate.y}px) scale(${scale})` }}\n dangerouslySetInnerHTML={{ __html: html }}\n />\n </div>\n <div\n role=\"presentation\"\n className=\"tw-absolute tw-right-1 tw-top-1 tw-flex tw-gap-1 tw-opacity-0 tw-transition-opacity group-hover/zoom:tw-opacity-100\"\n onClick={stopPropagation}\n >\n {isZoomed && (\n <Tooltip tooltip=\"Reset zoom\" placement=\"top\" triggerAsChild>\n <Button size=\"small\" variant=\"outline\" onClick={handleReset} argo>\n Reset\n </Button>\n </Tooltip>\n )}\n {copyText && (\n <ClipboardButton\n text={copyText}\n tooltip=\"Copy code\"\n size=\"icon-sm\"\n variant=\"outline\"\n argo\n />\n )}\n <Tooltip\n tooltip={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'}\n placement=\"top\"\n triggerAsChild\n >\n <Button\n size=\"icon-sm\"\n variant=\"outline\"\n icon={\n isFullscreen\n ? 'down-left-and-up-right-to-center'\n : 'up-right-and-down-left-from-center'\n }\n aria-label={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'}\n onClick={() => setIsFullscreen((f) => !f)}\n argo\n />\n </Tooltip>\n </div>\n </div>\n );\n\n if (isFullscreen) {\n return (\n <div\n role=\"presentation\"\n className=\"tw-fixed tw-inset-0 tw-z-[1060] tw-bg-neutral-50 tw-p-4\"\n onClick={stopPropagation}\n >\n {diagramContent}\n </div>\n );\n }\n\n return (\n <div\n className={cn(\n 'tw-overflow-hidden tw-rounded-md tw-border tw-border-neutral-150 tw-bg-neutral-50',\n className,\n )}\n >\n {diagramContent}\n </div>\n );\n};\n","import {\n type CSSProperties,\n type ReactNode,\n type RefObject,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nconst SIZER_STYLE = {\n position: 'absolute',\n top: 0,\n left: 0,\n visibility: 'hidden',\n height: 0,\n overflow: 'scroll',\n whiteSpace: 'pre',\n} satisfies CSSProperties;\n\nconst CARET_BUFFER_PX = 2;\n\nconst FONT_PROPERTIES = [\n 'fontSize',\n 'fontFamily',\n 'fontWeight',\n 'fontStyle',\n 'letterSpacing',\n 'textTransform',\n] as const;\n\nfunction syncFontStyles(source: HTMLElement, ...targets: (HTMLElement | null)[]) {\n const computed = window.getComputedStyle(source);\n for (const target of targets) {\n if (!target) continue;\n for (const prop of FONT_PROPERTIES) {\n target.style[prop] = computed[prop];\n }\n }\n}\n\nexport type UseAutosizeInputOptions = {\n value?: string;\n placeholder?: string;\n minWidth?: number;\n};\n\nexport type UseAutosizeInputReturn = {\n inputRef: RefObject<HTMLInputElement | null>;\n inputStyle: CSSProperties;\n sizerElement: ReactNode;\n};\n\n/**\n * Render `sizerElement` inside a positioned ancestor (e.g. `position: relative`,\n * `inline-flex`, or `InputGroup`) so the absolutely-positioned measurement spans\n * don't anchor to the viewport.\n */\nexport function useAutosizeInput({\n value = '',\n placeholder,\n minWidth = 1,\n}: UseAutosizeInputOptions): UseAutosizeInputReturn {\n const inputRef = useRef<HTMLInputElement>(null);\n const [sizerNode, setSizerNode] = useState<HTMLSpanElement | null>(null);\n const [placeholderSizerNode, setPlaceholderSizerNode] = useState<HTMLSpanElement | null>(null);\n const [width, setWidth] = useState(minWidth);\n\n useLayoutEffect(() => {\n if (inputRef.current) {\n syncFontStyles(inputRef.current, sizerNode, placeholderSizerNode);\n }\n }, [sizerNode, placeholderSizerNode]);\n\n useLayoutEffect(() => {\n if (!sizerNode) return;\n let next = sizerNode.scrollWidth;\n if (placeholderSizerNode) {\n next = Math.max(next, placeholderSizerNode.scrollWidth);\n }\n setWidth(Math.max(next + CARET_BUFFER_PX, minWidth));\n }, [value, placeholder, minWidth, sizerNode, placeholderSizerNode]);\n\n const inputStyle = useMemo<CSSProperties>(\n () => ({ width, boxSizing: 'content-box', flex: 'none' }),\n [width],\n );\n\n const sizerElement = (\n <>\n <span ref={setSizerNode} data-slot=\"autosize-sizer\" style={SIZER_STYLE}>\n {value}\n </span>\n {placeholder && (\n <span\n ref={setPlaceholderSizerNode}\n data-slot=\"autosize-placeholder-sizer\"\n style={SIZER_STYLE}\n >\n {placeholder}\n </span>\n )}\n </>\n );\n\n return { inputRef, inputStyle, sizerElement };\n}\n"]}