@keboola/design 1.2.1 → 1.3.0

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.
Files changed (177) hide show
  1. package/README.md +25 -0
  2. package/dist/icon-names.cjs +18 -0
  3. package/dist/icon-names.cjs.map +1 -0
  4. package/dist/icon-names.js +16 -0
  5. package/dist/icon-names.js.map +1 -0
  6. package/dist/icons.cjs +731 -0
  7. package/dist/icons.cjs.map +1 -0
  8. package/dist/icons.js +29 -0
  9. package/dist/icons.js.map +1 -0
  10. package/dist/index.cjs +14728 -0
  11. package/dist/index.cjs.map +1 -0
  12. package/dist/index.js +14553 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/markdown-editor.cjs +4440 -0
  15. package/dist/markdown-editor.cjs.map +1 -0
  16. package/dist/markdown-editor.js +4413 -0
  17. package/dist/markdown-editor.js.map +1 -0
  18. package/dist/mermaid.cjs +1011 -0
  19. package/dist/mermaid.cjs.map +1 -0
  20. package/dist/mermaid.js +1005 -0
  21. package/dist/mermaid.js.map +1 -0
  22. package/dist/styles.css +1 -0
  23. package/package.json +10 -3
  24. package/src/blocks/AIKit/CollapsibleStepHeader.tsx +7 -8
  25. package/src/blocks/AIKit/InlineStepLabel.tsx +7 -7
  26. package/src/blocks/AIKit/MessageBubble.stories.tsx +11 -3
  27. package/src/blocks/AIKit/MessageBubble.tsx +1 -1
  28. package/src/blocks/AIKit/PlanApproval.tsx +9 -8
  29. package/src/blocks/AIKit/PlanRewritingIndicator.tsx +2 -2
  30. package/src/blocks/AIKit/PromptInput.stories.tsx +10 -2
  31. package/src/blocks/AIKit/PromptInputSubmit.tsx +12 -8
  32. package/src/blocks/AIKit/Question.tsx +8 -9
  33. package/src/blocks/AIKit/SuggestedPrompt.tsx +12 -5
  34. package/src/blocks/AIKit/ThinkingIndicator.tsx +2 -2
  35. package/src/blocks/AutoSaveTextarea/AutoSaveTextarea.tsx +4 -4
  36. package/src/blocks/ClipboardButton/ClipboardButton.tsx +7 -5
  37. package/src/blocks/ClipboardButton/ClipboardInline.tsx +2 -3
  38. package/src/blocks/ColorInput/ColorInput.tsx +4 -2
  39. package/src/blocks/ColorInput/ColorPicker.tsx +5 -2
  40. package/src/blocks/EmptyState/EmptyState.tsx +16 -0
  41. package/src/blocks/ErrorState/ErrorState.tsx +15 -0
  42. package/src/blocks/Form/formHook.ts +15 -0
  43. package/src/blocks/MultiActionButtonGroup/MultiActionButton.stories.tsx +12 -11
  44. package/src/blocks/MultiActionButtonGroup/MultiActionButton.tsx +4 -4
  45. package/src/blocks/MultiCombobox/MultiCombobox.tsx +28 -12
  46. package/src/blocks/PageHeader/AGENTS.md +63 -3
  47. package/src/blocks/PageHeader/PageHeader.stories.tsx +124 -28
  48. package/src/blocks/PageHeader/PageHeader.tsx +15 -0
  49. package/src/blocks/PageHeader/PageHeaderDetail.tsx +23 -1
  50. package/src/blocks/PageHeader/PageHeaderIndex.tsx +20 -1
  51. package/src/blocks/PageLayout/PageLayout.tsx +26 -0
  52. package/src/blocks/PageToolbar/PageToolbar.stories.tsx +348 -0
  53. package/src/blocks/PageToolbar/PageToolbar.tsx +119 -0
  54. package/src/blocks/PageToolbar/index.ts +1 -0
  55. package/src/blocks/PasswordInput/PasswordInput.tsx +10 -10
  56. package/src/blocks/SearchInput/SearchInput.tsx +30 -4
  57. package/src/blocks/SearchInputWithNavigation/SearchInputWithNavigation.tsx +9 -6
  58. package/src/blocks/SplitButton/SplitButton.stories.tsx +7 -4
  59. package/src/blocks/SplitButton/SplitButton.tsx +17 -4
  60. package/src/blocks/Tagger/TagItem.tsx +4 -1
  61. package/src/blocks/Tagger/TagSelectPopover/TagSelectCreateItem.tsx +3 -1
  62. package/src/blocks/Tagger/TagSelectPopover/TagSelectList.tsx +2 -2
  63. package/src/blocks/Tagger/Tagger.tsx +2 -2
  64. package/src/components/Alert/Alert.stories.tsx +11 -3
  65. package/src/components/Alert/Alert.tsx +19 -1
  66. package/src/components/Alert/AlertCollapsibleIcon.tsx +3 -4
  67. package/src/components/Alert/AlertIcon.tsx +18 -21
  68. package/src/components/Badge/Badge.stories.tsx +22 -4
  69. package/src/components/Badge/Badge.tsx +16 -0
  70. package/src/components/Badge/BadgeButton.tsx +7 -6
  71. package/src/components/Breadcrumb/BreadcrumbEllipsis.tsx +2 -2
  72. package/src/components/Breadcrumb/BreadcrumbSeparator.tsx +2 -2
  73. package/src/components/Button/Button.stories.tsx +14 -2
  74. package/src/components/Button/Button.tsx +42 -5
  75. package/src/components/Button/styles.ts +4 -6
  76. package/src/components/ButtonGroup/ButtonGroup.stories.tsx +32 -10
  77. package/src/components/Card/Card.tsx +17 -0
  78. package/src/components/Checkbox/Checkbox.tsx +3 -6
  79. package/src/components/CodeEditor/highlighting.ts +1 -1
  80. package/src/components/CollapsiblePanel.tsx +2 -5
  81. package/src/components/Combobox/Combobox.tsx +12 -14
  82. package/src/components/Combobox/ComboboxChips.tsx +6 -1
  83. package/src/components/Combobox/ComboboxItem.tsx +3 -4
  84. package/src/components/Combobox/ComboboxItemIndicator.tsx +6 -4
  85. package/src/components/Combobox/types.ts +2 -6
  86. package/src/components/Command/Command.stories.tsx +47 -56
  87. package/src/components/Command/CommandItem/CheckIndicator.tsx +26 -14
  88. package/src/components/Command/CommandItem/CommandItem.tsx +6 -3
  89. package/src/components/DropdownMenu/DropdownMenu.stories.tsx +8 -4
  90. package/src/components/DropdownMenu/DropdownMenuCheckboxItem.tsx +4 -1
  91. package/src/components/DropdownMenu/DropdownMenuItem.tsx +12 -6
  92. package/src/components/DropdownMenu/DropdownMenuItemIndicator.tsx +12 -6
  93. package/src/components/DropdownMenu/DropdownMenuRadioGroup/DropdownMenuRadioItem.tsx +8 -5
  94. package/src/components/DropdownMenu/DropdownMenuSub/DropdownMenuSubTrigger.tsx +2 -2
  95. package/src/components/DropdownMenu/ItemIcon.tsx +16 -8
  96. package/src/components/FormGroup/FormGroup.tsx +15 -0
  97. package/src/components/FullScreenModal/FullScreenModalHeader.tsx +4 -1
  98. package/src/components/Input/DateInput/DateInput.tsx +4 -1
  99. package/src/components/Input/DateRangeInput/DateRangeInput.tsx +4 -6
  100. package/src/components/Input/Input.tsx +18 -2
  101. package/src/components/Input/TextInput/TextInput.tsx +16 -0
  102. package/src/components/Input/TimeInput/TimeInput.tsx +4 -1
  103. package/src/components/InputGroup/InputGroup.stories.tsx +11 -3
  104. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +63 -1
  105. package/src/components/MarkdownEditor/MarkdownEditor.tsx +105 -15
  106. package/src/components/MarkdownEditor/nodes/ImageNode.tsx +10 -10
  107. package/src/components/MarkdownEditor/nodes/MermaidNode.tsx +8 -8
  108. package/src/components/MarkdownEditor/plugins/KeyboardPlugin.tsx +47 -3
  109. package/src/components/MarkdownEditor/plugins/MarkdownSyncPlugin.tsx +12 -3
  110. package/src/components/MarkdownEditor/plugins/ToolbarPlugin.tsx +20 -10
  111. package/src/components/MarkdownEditor/plugins/toolbar/AlignmentDropdown.tsx +20 -14
  112. package/src/components/MarkdownEditor/plugins/toolbar/BlockTypeDropdown.tsx +25 -16
  113. package/src/components/MarkdownEditor/plugins/toolbar/LinkPanel.tsx +3 -3
  114. package/src/components/MarkdownEditor/transformers.ts +10 -0
  115. package/src/components/MergeEditor/AcceptControls/AcceptButton.tsx +9 -4
  116. package/src/components/MergeEditor/AcceptControls/AcceptControls.tsx +25 -14
  117. package/src/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.tsx +2 -2
  118. package/src/components/MergeEditor/MergeEditor.stories.tsx +15 -0
  119. package/src/components/MergeEditor/MergeEditor.tsx +9 -0
  120. package/src/components/MergeEditor/MergePane.tsx +22 -4
  121. package/src/components/MergeEditor/decorations.ts +2 -2
  122. package/src/components/Modal/Modal.stories.tsx +6 -4
  123. package/src/components/Modal/Modal.tsx +26 -0
  124. package/src/components/Modal/ModalBody.tsx +5 -0
  125. package/src/components/Modal/ModalCloseIcon.tsx +2 -3
  126. package/src/components/Modal/ModalContent.tsx +8 -0
  127. package/src/components/Modal/ModalFooter.tsx +5 -0
  128. package/src/components/Modal/ModalHeader.tsx +11 -0
  129. package/src/components/Modal/ModalIcon.tsx +45 -19
  130. package/src/components/Navbar/Navbar.stories.tsx +26 -13
  131. package/src/components/Navbar/NavbarMenuButton.tsx +11 -10
  132. package/src/components/Pagination/PaginationEllipsis.tsx +2 -2
  133. package/src/components/Pagination/PaginationNext.tsx +2 -1
  134. package/src/components/Pagination/PaginationPrevious.tsx +4 -1
  135. package/src/components/PanelWithDetails.tsx +3 -4
  136. package/src/components/Popconfirm/Popconfirm.stories.tsx +13 -5
  137. package/src/components/RadioGroup/Radio.tsx +6 -12
  138. package/src/components/Search/ClearButton.tsx +2 -2
  139. package/src/components/Search/Search.tsx +3 -3
  140. package/src/components/Select/Select.tsx +16 -5
  141. package/src/components/Select/SelectContent.tsx +13 -4
  142. package/src/components/Select/SelectItem.tsx +6 -5
  143. package/src/components/Select/SelectTrigger.tsx +2 -2
  144. package/src/components/Sidebar/Sidebar.stories.tsx +55 -19
  145. package/src/components/Sidebar/SidebarGroup/SidebarGroupAction.tsx +8 -4
  146. package/src/components/Sidebar/SidebarMenu/SidebarMenuButton.tsx +4 -2
  147. package/src/components/Sidebar/SidebarMenu/SidebarMenuCard.tsx +3 -2
  148. package/src/components/Sidebar/SidebarMenu/SidebarMenuIcon.tsx +12 -12
  149. package/src/components/Sidebar/SidebarMenu/SidebarMenuSub.tsx +3 -7
  150. package/src/components/Sidebar/SidebarMenu/SidebarSearchInput.tsx +3 -5
  151. package/src/components/Skeleton/Skeleton.stories.tsx +52 -0
  152. package/src/components/Skeleton/Skeleton.tsx +24 -1
  153. package/src/components/Table/Table.stories.tsx +223 -1
  154. package/src/components/Table/Table.tsx +17 -0
  155. package/src/components/Tabs.tsx +25 -2
  156. package/src/components/Toast/ToastDismiss.tsx +3 -3
  157. package/src/components/Toast/ToastRoot.tsx +24 -19
  158. package/src/components/Toggle/Toggle.tsx +11 -6
  159. package/src/components/Tooltip/Tooltip.tsx +23 -0
  160. package/src/components/ZoomableSvg/ZoomableSvg.tsx +8 -6
  161. package/src/icons/Keboola.tsx +28 -0
  162. package/src/icons/icons.stories.tsx +174 -0
  163. package/src/icons/index.ts +180 -0
  164. package/src/index.ts +1 -0
  165. package/src/patterns/AlertWithAction.stories.tsx +30 -0
  166. package/src/patterns/CardWithEmptyState.stories.tsx +66 -0
  167. package/src/patterns/ConfirmDialog.stories.tsx +72 -0
  168. package/src/patterns/CreatableMultiCombobox.stories.tsx +33 -0
  169. package/src/patterns/DataCardWithSkeleton.stories.tsx +48 -0
  170. package/src/patterns/DisabledButtonTooltip.stories.tsx +30 -0
  171. package/src/patterns/FilterToolbar.stories.tsx +71 -0
  172. package/src/patterns/InfoTooltip.stories.tsx +56 -0
  173. package/src/patterns/ListDetail.stories.tsx +65 -0
  174. package/src/patterns/ModalForm.stories.tsx +59 -0
  175. package/src/patterns/PageHeaderTabs.stories.tsx +48 -0
  176. package/src/styles.css +16 -8
  177. package/src/utils/legacyIcon.tsx +28 -0
@@ -0,0 +1 @@
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/utils/legacyIcon.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/PageToolbar/PageToolbar.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","Loader2","Slottable","Calendar","getDefaultClassNames","DayPicker","variants","Close","ScrollAreaPrimitive","ScrollAreaPrimitive2","Fragment","TextareaAutosize","useRef","X","Clock","RLabel","text","Tooltip","cn","useId","Thumb","RSeparator","createContext","use","Item","Indicator","Circle","RRadioGroup","setRef","useCallback","RadixThumb","RadixTrack","RadixRange","Search","useMemo","Sparkles","SelectPrimitive","ChevronUp","ChevronDown","SelectPrimitive2","SelectPrimitive3","Check","SelectPrimitive4","SelectPrimitive5","SelectPrimitive6","Minus","ToggleRight","DropdownMenuPrimitive","DropdownMenuPrimitive2","DropdownMenuPrimitive3","DropdownMenuPrimitive4","DropdownMenuPrimitive5","value","DropdownMenuPrimitive6","DropdownMenuPrimitive7","DropdownMenuPrimitive8","DropdownMenuPrimitive9","DropdownMenuPrimitive10","DropdownMenuPrimitive11","ChevronRight","Group","Overlay","DialogPrimitive","Title","ChevronLeft","handleKeyDown","createPortal","Slot","noop","open","useReducer","useLayoutEffect","ref","CollapsibleTrigger","styles","CommandPrimitive","CmdInput","addonVariants","BaseCombobox","Plus","Ellipsis","RadixAvatar","BoringAvatar","library","all","connector","Children","diffWords","diffLines","defaultFilter","r","Pipette","Link","RadixTabs","rest","Info","AlertTriangle","CircleCheck","Copy","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","ChevronsRight","ChevronsLeft","RangeSetBuilder","gutterLineClass","theme","diff3Merge","keys","className","Table","ResizablePrimitive","ResizablePrimitive2","ResizablePrimitive3","AlertCircle","sonnerToast","toast","SonnerToaster","Tabs","TextInput","Separator","ButtonGroup","Button","useCommandState","defaultOptions","XCircle","renderVariantIcon","Send","CirclePause","Play","FileText","ArrowBigUpDash","EyeOff","Eye","createFormHookContexts","FormGroup","Label","Checkbox","PasswordInput","Select","Switch","createFormHook","stopPropagation","Minimize2","Maximize2"],"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\n/**\n * Props for `Tooltip`. `tooltip` is the popup content; `children` is the trigger element.\n * `variant` auto-resolves to `\"explanatory\"` for strings >30 chars, else `\"action\"`.\n */\nexport type Props = {\n /** Keep the tooltip visible when the user clicks the trigger (useful for click-to-copy feedback). */\n keepOpenOnTriggerClick?: boolean;\n /** Content rendered inside the tooltip. Plain text only — no interactive elements (use `HoverCard` or `Popover` for that). */\n tooltip: ReactNode;\n children: ReactNode;\n placement?: ComponentProps<typeof Content>['side'];\n /** Forcibly hide the tooltip regardless of hover state. */\n forceHide?: boolean;\n /** Forcibly show the tooltip regardless of hover state. Useful for guided-tour overlays. */\n forceShow?: boolean;\n className?: string;\n} & TriggerProps &\n Pick<ComponentProps<typeof TooltipContent>, 'variant' | 'className'>;\n\n/** Re-export of Radix `Tooltip.Provider`. Mount once at the app root so tooltips share delay state. */\nexport const TooltipProvider = Provider;\n\n/**\n * Short plain-text label that appears on hover or focus.\n *\n * **When to use:** describing an icon-only `Button`, explaining a disabled control, or labelling a\n * truncated value. Plain text only — auto-switches to the longer `\"explanatory\"` variant when the string\n * exceeds 30 characters.\n * **When NOT to use:** for rich preview content (multiple lines, formatted text, structured data) use\n * `HoverCard`; for tooltips containing links or buttons use `Popover` (interactive elements break a11y\n * inside a `Tooltip`).\n * **Composition:** wrap any focusable element via `triggerAsChild` so the tooltip targets the underlying\n * native element. Mount `TooltipProvider` once at the app root.\n *\n * @see RECIPES.md#disabled-button-tooltip — for the disabled-button + tooltip pattern\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-primary/10',\n 'tw-text-primary',\n 'hover:not-disabled:tw-bg-primary/20',\n\n 'focus-visible:tw-border-primary',\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 { Loader2 } from '../../icons';\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\n\nimport { argoVariants, variants } from './styles';\n\n/**\n * Props for the `Button` component.\n *\n * Pass `variant` for primary/secondary/danger/outline/invisible looks, `size`\n * for height (including `icon-*` sizes when rendering icon-only). Icons are\n * composed as children — `<Button><Trash2 className=\"tw-size-4\" /> Delete</Button>`.\n * `argo` opts into the Argo redesign styling (PageHeader / sidebar contexts) —\n * required when nested inside `PageHeader` or `PageLayout.Footer` slots.\n */\ntype Props = {\n /** Replaces the leading content with a spinner and disables the button visually. The caller still controls `disabled`. */\n isLoading?: boolean;\n /** Render as a Radix `Slot` so the parent JSX (e.g. a `react-router` `<Link>`) becomes the button element. */\n asChild?: boolean;\n /** Opt into the Argo redesign variant. Required inside `PageHeader` slots and other Argo surfaces. */\n argo?: boolean;\n /**\n * @deprecated FA-name icon prop kept as a shim during the kbc-ui consumer\n * migration sweep (UT-4109 C2). New code should compose icons as children\n * via direct Lucide imports — `<Button><Trash2 className=\"tw-size-4\" /> Delete</Button>`.\n * Removed in the final C2 cleanup once every consumer is migrated.\n */\n icon?: ComponentProps<typeof Icon>['icon'];\n} & ComponentProps<'button'> &\n VariantProps<typeof variants>;\n\n/**\n * Primary action surface for the design system — covers all clickable controls except inline text links.\n *\n * **When to use:** any user-initiated action (submit, save, open modal, run job). Use `size=\"icon-*\"` with no\n * children for an icon-only button; there is no separate `IconButton` component.\n * **When NOT to use:** for inline text-link actions inside body copy use `ButtonInline`; for navigation that\n * opens a URL use `Link`; for \"primary action + dropdown of related actions\" use `SplitButton`.\n * **Composition:** wrap in `Tooltip` when icon-only or when disabled state needs an explanation; pair with\n * `Popconfirm` for destructive confirmations; pass through `Modal.Trigger` / `DropdownMenu.Trigger` via `asChild`.\n *\n * @see RECIPES.md#disabled-button-tooltip — for the disabled-button + tooltip pattern\n * @see RECIPES.md#confirm-dialog — for destructive-action confirmation\n */\nexport const Button = ({\n ref,\n children,\n disabled = false,\n className,\n type = 'button',\n isLoading = false,\n asChild = false,\n onClick,\n argo = false,\n variant = 'primary',\n size = 'medium',\n block = false,\n icon,\n ...buttonProps\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => {\n const Comp = asChild ? Root : 'button';\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 // `size=\"icon\"` / `size=\"icon-*\"` flags the button as icon-only — needed\n // by `ButtonGroup space=\"block\"` which stretches non-icon children to\n // equal width. Detection by `size` works for both the legacy shim path\n // (no children, FA icon prop) and shadcn composition (icon as the only\n // child).\n data-icon-only={String(size).startsWith('icon')}\n type={type}\n onClick={handleClick}\n className={cn(classNames)}\n >\n {isLoading && <Loader2 className=\"tw-size-4 tw-shrink-0 tw-animate-spin\" />}\n {!isLoading && icon && <Icon 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 { X } from '../../icons';\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\n/**\n * Props for `Input`. Combines `InputGroup` chrome (variant / sizing / state / focusVariant) with\n * input-specific slots (`prefix`, `leftSuffix`, `rightSuffix`, `allowClear`).\n */\ntype Props = InputGroupProps &\n OwnProps &\n Omit<ComponentProps<'input'>, 'prefix' | 'value' | 'defaultValue'>;\n\n/**\n * Low-level text input with `InputGroup` chrome — addons, clear button, sizing, focus variants.\n *\n * **When to use:** when you need an input with prefix / suffix slots or a clear button and don't need the\n * `onValueChange` convenience callback. Rare on its own — most call sites should use `TextInput`.\n * **When NOT to use:** for plain text fields use `TextInput`; for fields inside a `FormGroup` use\n * `FormGroup.TextInput`; for search use `SearchInput`; for forms with validation use `useAppForm`.\n * **Composition:** wrap in `FormGroup` for shared error state, or render directly as a controlled input.\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 aria-label=\"Clear\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={handleClear}\n data-testid={testId.clearButton}\n >\n <X className=\"tw-size-4\" />\n </InputGroup.Button>\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 { Calendar as CalendarIcon } from '../../../icons';\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\" variant=\"inline\" size=\"icon-3xs\">\n <CalendarIcon className=\"tw-size-4\" />\n </Button>\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 { Calendar as CalendarIcon } from '../../../icons';\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 aria-label=\"Select Date Range\" variant=\"inline\" size=\"icon-3xs\">\n <CalendarIcon className=\"tw-size-4\" />\n </Button>\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 /** Called with the unwrapped string value on every change. For the raw event use `onChange`. */\n onValueChange?: (value: string) => void;\n /** Called with the unwrapped string value on blur. For the raw event use `onBlur`. */\n onValueBlur?: (value: string) => void;\n type?: 'text' | 'email' | 'password' | 'datetime-local' | 'date';\n};\n\n/**\n * Props for `TextInput`. Extends `Input` with string-typed `value` / `defaultValue` and convenience\n * `onValueChange` / `onValueBlur` callbacks. `null` / `undefined` are coerced to empty strings.\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\n/**\n * Standard text input with a string-only API. The default choice for a bare text input.\n *\n * **When to use:** any plain text / email / password / date-input field outside `useAppForm`. Pair with\n * `onValueChange` instead of unwrapping `event.target.value` from `onChange`.\n * **When NOT to use:** for fields inside a labelled group use `FormGroup.TextInput`; for forms with\n * validation use `useAppForm` + `field.TextField`; for search use `SearchInput`.\n * **Composition:** wrap in a `FormGroup` for shared error / help-text state, or render directly inside\n * page layouts. In kbc-ui forms prefer `variant=\"secondary\"` (gray background).\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 { Clock } from '../../../icons';\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\" variant=\"inline\" size=\"icon-3xs\">\n <Clock className=\"tw-size-4\" />\n </Button>\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\n/**\n * Props for `Card`. `padding` controls internal spacing; `bordered` adds a subtle border.\n * All standard `<div>` attributes pass through.\n */\ntype Props = HTMLAttributes<HTMLDivElement> & VariantProps<typeof cardClassnames>;\n\n/**\n * Semantic content surface — a panel with its own padding, optional border, and header / content slots.\n *\n * **When to use:** wrapping a conceptually-distinct chunk of content (a config section, a stats panel,\n * a list of heterogeneous items). Each `Card` is a self-contained surface inside `PageLayout.Content`.\n * **When NOT to use:** for tabular data use `Table`; for ad-hoc layout grids use Tailwind utility classes\n * directly; for empty / error placeholders use `EmptyState` / `ErrorState`.\n * **Composition:** nest `Card.Header` + `Card.Title` for the header row, then `Card.Content` for the body.\n * Multiple cards usually share a `tw-grid` or `tw-flex tw-flex-col tw-gap-4` parent.\n *\n * @see RECIPES.md#card-with-empty-state — for an empty card placeholder pattern\n * @see RECIPES.md#data-card-with-skeleton — for a loading card with `Skeleton` placeholders\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 { Circle } from '../../icons';\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 className={cn('tw-flex', 'tw-items-center', 'tw-justify-center')}>\n {/* Lucide Circle is stroke-only — force fill to match the stroke (currentColor)\n so the indicator reads as a solid dot. */}\n <Circle className=\"tw-size-2.5 tw-fill-current tw-text-primary\" />\n </Indicator>\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 { X } from '../../icons';\nimport { cn } from '../../utils';\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 <X className=\"tw-size-4\" />\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 { Search as SearchIcon, Sparkles } from '../../icons';\nimport { cn, debounce, noop } from '../../utils';\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 <Sparkles className=\"tw-size-4 [&_*]:tw-stroke-aigradient-600\" />\n ) : (\n <SearchIcon className=\"tw-size-4 tw-text-neutral-400\" />\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 { ChevronDown, ChevronUp } from '../../icons';\nimport { cn } from '../../utils';\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-5',\n);\n\ntype Variant = 'default' | 'argo';\n\n/**\n * Props for `Select.Content`. `container` portals the listbox into a custom element (useful inside modals);\n * `variant` switches between default and Argo styling.\n */\ntype Props = ComponentProps<typeof SelectPrimitive.Content> & {\n container?: HTMLElement | null;\n variant?: Variant;\n};\n\n/**\n * Listbox container for `Select`. Portals items into a popover sized to the trigger.\n * Normally rendered implicitly by `Select`; use directly only when composing custom item layouts via\n * the `Select.Root` / `Select.Trigger` / `Select.Content` compound parts.\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 <ChevronUp />\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 <ChevronDown />\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, ReactNode } from 'react';\n\nimport { Icon } from '../components/Icon';\n\n/**\n * Shim helpers for wrappers whose `icon` prop transitioned from a FontAwesome\n * name / `[prefix, name]` tuple to a `ReactNode` (Lucide-composition) during the\n * UT-4109 C2 sweep. New code should pass a Lucide icon node directly — these\n * helpers exist only so existing `<Wrapper icon=\"cog\">` callsites keep\n * rendering an icon instead of the raw string while consumer-migration PRs\n * (C2b–C2j) land. Removed by the final C2 cleanup PR.\n */\ntype FAIconValue = ComponentProps<typeof Icon>['icon'];\n\nexport const isFAIconValue = (value: unknown): value is FAIconValue =>\n typeof value === 'string' ||\n (Array.isArray(value) &&\n value.length === 2 &&\n typeof value[0] === 'string' &&\n typeof value[1] === 'string');\n\n/**\n * Render a node, transparently dispatching legacy FontAwesome icon values\n * (string / `[prefix, name]` tuple) through the legacy `<Icon>` wrapper.\n * For ReactNode inputs (the new composition path), returns the node as-is.\n */\nexport const renderLegacyIcon = (value: ReactNode | FAIconValue): ReactNode =>\n isFAIconValue(value) ? <Icon icon={value} /> : value;\n","import type { ComponentProps, ElementRef, ReactNode, Ref } from 'react';\nimport * as SelectPrimitive from '@radix-ui/react-select';\n\nimport { Check } from '../../icons';\nimport { cn } from '../../utils';\nimport { renderLegacyIcon } from '../../utils/legacyIcon';\n\ntype Props = ComponentProps<typeof SelectPrimitive.Item> & {\n icon?: ReactNode;\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 {renderLegacyIcon(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 <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 { ChevronDown } from '../../icons';\nimport { cn } from '../../utils';\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 <ChevronDown className=\"tw-size-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 { 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\nexport type SelectItem = {\n value: string;\n label: ReactNode;\n icon?: ReactNode;\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\n/**\n * Props for `Select`. Combines Radix `Select.Root` control props with `Select.Trigger` chrome and the\n * convenience `items` shape (flat list, or grouped lists with optional labels).\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\n/**\n * Single selection from a short enumerated list. Built on Radix Select.\n *\n * **When to use:** picking one value from ~10 or fewer options where search adds no value (status,\n * region, role). Pass a flat `items` array or grouped arrays with optional labels for headings.\n * **When NOT to use:** for longer lists with search use `Combobox`; for multi-select use `MultiCombobox`;\n * for free-form tag entry use `Tagger`.\n * **Composition:** wrap in `FormGroup` for label + help text, or use `useAppForm` + `field.SelectField`\n * for forms with validation. Use the compound parts (`Select.Root`, `Select.Trigger`, `Select.Content`,\n * `Select.Item`) for custom item layouts; the top-level `Select` covers the common cases.\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 { Check, Minus } from '../../icons';\nimport { cn } from '../../utils';\nimport { FieldBox } from '../FieldBox';\nimport type { fieldBoxVariants } from '../FieldBox/styles';\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 <Check className=\"tw-hidden tw-size-3 tw-stroke-[4px] group-data-[state=checked]:tw-block\" />\n <Minus className=\"tw-hidden tw-size-3 tw-stroke-[4px] group-data-[state=indeterminate]:tw-block\" />\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 { Check, Circle, ToggleRight } from '../../icons';\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 // Lucide Circle is stroke-only — force fill to match the stroke\n // (currentColor) so the indicator reads as a solid dot.\n '[&_svg]:tw-fill-current',\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 // Lucide SVGs default to 24×24 — constrain the rendered ToggleRight\n // to the indicator slot so it doesn't overflow.\n '[&_svg]: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 IconComp = (() => {\n if (variant === 'switch') return ToggleRight;\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 <IconComp />\n </DropdownMenuPrimitive.ItemIndicator>\n );\n};\n","import type { ComponentProps, ReactNode } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'span'> & {\n children: ReactNode;\n};\n\nexport const ItemIcon = ({ className, children, ...props }: Props) => (\n <span\n {...props}\n className={cn(\n 'tw-inline-flex',\n 'tw-items-center',\n 'tw-justify-center',\n 'tw-aspect-square',\n // 20px container fits the 16px Lucide glyph plus 2px breathing room\n // each side — the previous tw-size-4 + tw-p-0.5 clipped the 16px child.\n 'tw-size-5',\n '[&_svg]: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 {children}\n </span>\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 { Loader2 } from '../../icons';\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 className={isAtStart ? '' : 'tw-ml-auto'}>\n <Loader2 className=\"tw-animate-spin\" />\n </ItemIcon>\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, ReactNode, Ref } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport { Root, Slottable } from '@radix-ui/react-slot';\n\nimport { Loader2 } from '../../icons';\nimport { cn } from '../../utils';\nimport { renderLegacyIcon } from '../../utils/legacyIcon';\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 /**\n * Pass a Lucide icon node as a leading adornment. Legacy FontAwesome\n * `\"name\"` / `[prefix, name]` string values are still accepted during the\n * C2 deprecation window and rendered via the legacy `<Icon>` wrapper.\n */\n icon?: ReactNode;\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,\n iconClassName,\n isLoading = false,\n ...props\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => {\n const Comp = asChild ? Root : 'div';\n const adornment = isLoading ? <Loader2 className=\"tw-animate-spin\" /> : renderLegacyIcon(icon);\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 {adornment && <ItemIcon className={iconClassName}>{adornment}</ItemIcon>}\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, ReactNode } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { Loader2 } from '../../../icons';\nimport { cn } from '../../../utils';\nimport { renderLegacyIcon } from '../../../utils/legacyIcon';\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?: ReactNode;\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 className={iconClassName}>\n <Loader2 className=\"tw-animate-spin\" />\n </ItemIcon>\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 className={iconClassName}>{renderLegacyIcon(icon)}</ItemIcon>}\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 { ChevronRight } from '../../../icons';\nimport { cn } from '../../../utils';\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 <ChevronRight className=\"tw-ml-auto tw-size-5\" />\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\n/** Props for `Modal.Body`. Accepts all `<div>` attributes; `as=\"form\"` is reserved for future use. */\ntype Props = ComponentProps<'div'> & {\n as?: 'form';\n};\n\n/**\n * Scrollable body slot for `Modal`. Place form fields, content blocks, or detail panels here.\n * Takes available height inside `Modal.Content` and scrolls when content overflows.\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\n/**\n * Props for `Modal.Content`. `size` controls the max-width (`small` 480px / `medium` default / `large` 4xl).\n * All other Radix `Dialog.Content` props (`onEscapeKeyDown`, `onPointerDownOutside`, …) pass through.\n */\ntype Props = ComponentProps<typeof Content> & { size?: 'small' | 'medium' | 'large' };\n\n/**\n * Modal content surface — portals into the overlay and renders the header / body / footer slots.\n * Stops escape-key propagation so a parent `FullScreenModal` does not also close.\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\n/** Props for `Modal.Footer`. Accepts all `<div>` attributes. */\ntype Props = ComponentProps<'div'>;\n\n/**\n * Bottom action row for `Modal`. Layout is up to the caller — typically `tw-flex tw-justify-end tw-gap-2`\n * with cancel + primary `Button`s.\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 { X } from '../../icons';\nimport { cn } from '../../utils';\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 <X\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\n/**\n * Props for `Modal.Header`. Pass `title` + optional `description` for the standard layout, or nest custom JSX\n * as `children` to render below the title row.\n */\ntype Props = {\n /** Title text rendered as `ModalTitle`. Wraps a Radix `Dialog.Title` for a11y. */\n title?: ReactNode;\n /** Subtitle / supporting text rendered below the title. */\n description?: ReactNode;\n /** Hide the top-right close icon. Use when the modal must not be dismissible by the icon (still closable via `Modal.Close`). */\n hideCloseIcon?: boolean;\n} & ComponentProps<'div'>;\n\n/**\n * Modal header slot — title + description row with a built-in close icon.\n * Renders a bottom border when followed by a `Modal.Body`; drops the border when body contains `Tabs`.\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 { ReactNode } from 'react';\n\nimport { cn } from '../../utils';\nimport { isFAIconValue } from '../../utils/legacyIcon';\nimport { Icon } from '../Icon';\n\ntype NamedColor = 'orange' | 'blue' | 'red' | 'green' | 'gray' | 'violet';\n\ntype IconProps = {\n color: NamedColor | (string & {});\n /**\n * Pass a Lucide icon node. Legacy FontAwesome `\"name\"` / `[prefix, name]`\n * string values are still accepted during the C2 deprecation window and\n * rendered via the legacy `<Icon>` wrapper.\n */\n icon: ReactNode;\n /**\n * @deprecated FA-icon `spin` pass-through kept only for the legacy\n * `<Modal.Icon icon=\"spinner\" spin />` callsite during the kbc-ui sweep.\n * New code should render an animated Lucide loader as the `icon` node.\n */\n spin?: boolean;\n iconUrl?: never;\n iconAlt?: never;\n};\n\ntype ImageProps = {\n color?: never;\n iconUrl: string;\n iconAlt?: string;\n icon?: never;\n spin?: never;\n};\n\n/**\n * Discriminated props for `Modal.Icon` — either an `icon` slot (a Lucide icon)\n * with a categorical `color`, or a remote `iconUrl` (renders an `<img>`).\n * The two shapes are mutually exclusive.\n */\ntype Props = IconProps | ImageProps;\n\nconst NAMED_COLORS = new Set<string>(['orange', 'blue', 'red', 'green', 'gray', 'violet']);\n\n/**\n * Status-coloured icon docked to the top-left of `Modal.Content`. Use the categorical `color`\n * (`red` destructive, `orange` warning, `green` success, `blue` info, `gray` neutral, `violet` agent)\n * to encode meaning. The colour palette is categorical and stays fixed across brand themes.\n */\nexport const ModalIcon = (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': props.color === 'orange',\n 'tw-bg-secondary-500': props.color === 'blue',\n 'tw-bg-primary-500': props.color === 'green',\n 'tw-bg-error-500': props.color === 'red',\n 'tw-bg-neutral-150': props.color === 'gray',\n 'tw-bg-purple-100': props.color === 'violet',\n })}\n style={\n props.color && !NAMED_COLORS.has(props.color)\n ? { backgroundColor: props.color }\n : undefined\n }\n >\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 'tw-text-white': props.color !== 'violet',\n 'tw-text-purple-500': props.color === 'violet',\n },\n '[&_svg]:tw-size-6',\n '[&_svg]:tw-aspect-square',\n )}\n >\n {isFAIconValue(props.icon) ? <Icon icon={props.icon} spin={props.spin} /> : props.icon}\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\n/**\n * Props for the `Modal` root — forwarded to Radix `Dialog.Root` (controls `open`, `onOpenChange`,\n * `defaultOpen`, `modal`).\n */\ntype Props = ComponentProps<typeof Root>;\n\n/**\n * Blocking dialog for confirmations, forms, and detail views. Built on Radix Dialog.\n *\n * **When to use:** the user must act before continuing (confirm a destructive action, fill a short form,\n * view a focused detail panel). Use the compound parts `Modal.Trigger`, `Modal.Content`, `Modal.Header`,\n * `Modal.Body`, `Modal.Footer`, and optionally `Modal.Icon` for a status-coloured header glyph.\n * **When NOT to use:** for slide-in side editing use `Sheet`; for an inline destructive confirmation anchored\n * to its trigger use `Popconfirm`; for hover previews use `HoverCard`.\n * **Composition:** wrap `Modal.Content` around `Modal.Header` + `Modal.Body` + `Modal.Footer`. Put `useAppForm`\n * `FormBody` inside `Modal.Body` and the submit / cancel buttons inside `Modal.Footer`.\n *\n * @see RECIPES.md#modal-form — for the canonical form-in-modal composition\n * @see RECIPES.md#confirm-dialog — for destructive-confirm dialogs\n */\nexport const Modal = (props: Props) => <Root {...props} />;\n\n/** Radix `Dialog.Close` re-export — closes the nearest `Modal` when clicked. Use `asChild` to wrap a `Button`. */\nModal.Close = Close;\n/** Radix `Dialog.Trigger` re-export — opens the modal. Use `asChild` to wrap a `Button`. */\nModal.Trigger = Trigger;\n\n/** Modal content container — portals into the overlay, handles sizing (`small` / `medium` / `large`) and open/close animation. */\nModal.Content = ModalContent;\n/** Scrollable body slot. Place form fields or detail content here; takes available space inside `Modal.Content`. */\nModal.Body = ModalBody;\n/** Status-coloured circular icon docked to the top-left of `Modal.Content`. Use `color=\"red\"` for destructive, `\"orange\"` for warning, etc. */\nModal.Icon = ModalIcon;\n/** Bottom action row. Place the primary + cancel `Button`s here; sits below `Modal.Body`. */\nModal.Footer = ModalFooter;\n/** Top row with title, optional description, and close icon. Pass `title` / `description` props or nest custom JSX. */\nModal.Header = ModalHeader;\n/** Backdrop overlay rendered behind `Modal.Content`. Normally implicit — only override for non-standard layouts. */\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 { ChevronLeft } from '../../icons';\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 onClick={onClose} size=\"icon\" className=\"tw-mr-6\">\n <ChevronLeft className=\"tw-size-4\" />\n </Button>\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 { ChevronDown } from '@keboola/design/icons';\n\nimport { Button } from '../../components/Button';\nimport { ButtonGroup } from '../../components/ButtonGroup';\nimport { DropdownMenu } from '../../components/DropdownMenu';\nimport { renderLegacyIcon } from '../../utils/legacyIcon';\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 /** Optional leading-icon slot — pass a Lucide icon node. */\n icon?: ReactNode;\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' | 'icon'>;\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 icon,\n children,\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 {/* Suppress the leading icon while Button renders its spinner so the two\n glyphs don't double-stack. */}\n {!rest.isLoading && renderLegacyIcon(icon)}\n {children}\n </Button>\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 aria-label=\"Additional actions\"\n >\n <ChevronDown className=\"tw-size-5\" />\n </Button>\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';\n\ntype Props = ComponentProps<'button'>;\n\nexport const SidebarGroupAction = ({\n ref,\n className,\n type = 'button',\n children,\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 // svg defaults: size + colour\n '[&_svg]:tw-size-3',\n '[&_svg]:tw-text-neutral-400',\n 'hover:[&_svg]:tw-text-secondary-600',\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 {children}\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';\n\ntype Props = ComponentProps<'span'>;\n\nexport const SidebarMenuIcon = ({\n ref,\n className,\n children,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'span'>> }) => (\n <span\n {...rest}\n ref={ref}\n className={cn(\n 'tw-inline-flex',\n 'tw-items-center',\n 'tw-justify-center',\n 'tw-aspect-square',\n 'tw-shrink-0',\n 'tw-p-0.5',\n 'tw-text-sidebar-primary',\n '[&_svg]:tw-size-4',\n className,\n )}\n >\n {children}\n </span>\n);\n","import type { ComponentProps, ReactNode, Ref } from 'react';\nimport { Root, Slottable } from '@radix-ui/react-slot';\n\nimport { cn } from '../../../utils';\nimport { renderLegacyIcon } from '../../../utils/legacyIcon';\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 icon?: ReactNode;\n};\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>{renderLegacyIcon(icon)}</SidebarMenuIcon>}\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 { Search } from '../../../icons';\nimport { cn, mergeRefs } from '../../../utils';\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 <Search\n className={cn(\n 'tw-pointer-events-none',\n 'tw-absolute',\n 'tw-left-2',\n 'tw-size-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 { renderLegacyIcon } from '../../../utils/legacyIcon';\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: ReactNode;\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\">{renderLegacyIcon(icon)}</SidebarMenuIcon>\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 { ChevronDown } from '../../../icons';\nimport { cn } from '../../../utils';\nimport { Collapsible } from '../../Collapsible';\nimport { DropdownMenu } from '../../DropdownMenu';\nimport { Tooltip } from '../../Tooltip';\nimport { useSidebarInstance } from '../SidebarInstanceContext';\n\nimport { SidebarMenuButton } from './SidebarMenuButton';\n\ntype Props = {\n children: ReactNode;\n icon: ReactNode;\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 <ChevronDown className=\"tw-ml-auto tw-size-5 tw-transition-transform tw-duration-200 group-data-[state=open]:tw-rotate-180\" />\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 { Check, Circle } from '../../../icons';\nimport { cn } from '../../../utils';\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 <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 {variant === 'checkbox' ? (\n <Check\n className={cn(\n 'tw-hidden',\n // Lucide SVGs default to 24×24; constrain to the 16px indicator slot.\n 'tw-size-3',\n 'tw-stroke-[4px]',\n 'group-data-[checked=true]/command-item:tw-block',\n 'group-data-[variant=checkbox]/check-indicator:tw-text-white',\n )}\n />\n ) : (\n <Circle\n className={cn(\n 'tw-hidden',\n // Lucide Circle is stroke-only — force fill to match the stroke so\n // the indicator reads as a solid dot.\n 'tw-size-3',\n 'tw-fill-current',\n 'group-data-[checked=true]/command-item:tw-block',\n 'group-data-[variant=radio]/check-indicator:tw-text-secondary-500',\n )}\n />\n )}\n </span>\n );\n};\n","import type { ComponentProps, ReactNode } from 'react';\nimport { Command as CommandPrimitive } from 'cmdk';\n\nimport { cn } from '../../../utils';\n\nimport { CheckIndicator } from './CheckIndicator';\n\ntype Props = ComponentProps<typeof CommandPrimitive.Item> & {\n icon?: ReactNode;\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 && (\n <span className=\"tw-inline-flex tw-size-4 tw-shrink-0 tw-items-center tw-justify-center tw-text-neutral-400 [&_svg]:tw-size-4\">\n {icon}\n </span>\n )}\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';\n\ntype Props = ComponentProps<'button'>;\n\nexport const BadgeButton = ({\n ref,\n className,\n type = 'button',\n children,\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 // Default sizing for Lucide-icon children (which ship at 24×24); keeps\n // the visual baseline aligned with the previous FA-icon API and other\n // icon-wrapper components (ItemIcon, SidebarMenuIcon).\n '[&_svg]:tw-size-3',\n className,\n )}\n >\n {children}\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\n/**\n * Props for `Badge`. `color` is a categorical contract (`green` = success, `red` = error, `yellow` = warning,\n * `purple/cyan/teal/pink/blue/gray` for decorative tags) — colours stay fixed across brand themes.\n * Pass `prefix` / `suffix` for icon-style addons.\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\n/**\n * Compact status / category label rendered as an inline pill.\n *\n * **When to use:** encoding status (active, deprecated, beta), counts, or decorative tags next to a title\n * or in a table cell. The `color` prop is a semantic contract — `green` means success, `red` means error\n * etc., and colours are intentionally stable across customer brand themes.\n * **When NOT to use:** for an inline action use `Button` / `ButtonInline`; for a persistent contextual\n * banner use `Alert`; for a counter-only chip prefer `Badge` with just a numeric label.\n * **Composition:** drop into `PageHeader.Detail` `badges` slot, `Table.Cell`, or alongside titles in cards.\n * Use `Badge.Button` for an interactive (clickable) badge variant.\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 { X } from '../../icons';\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={\n <Badge.Button aria-label=\"Remove value\">\n <X className=\"tw-size-3\" />\n </Badge.Button>\n }\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 { Check } from '../../icons';\nimport { cn } from '../../utils';\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 <Check\n className={cn(\n 'tw-hidden',\n 'tw-size-3',\n 'tw-stroke-[4px]',\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 // Lucide SVGs default to 24×24 — constrain the rendered child so the\n // 16px indicator slot owns the actual size.\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={<Check />}\n />\n );\n};\n","import type { ComponentProps, ElementRef, ReactNode, Ref } from 'react';\nimport { Combobox as BaseCombobox } from '@base-ui/react/combobox';\n\nimport { cn } from '../../utils';\n\nimport { ComboboxItemIndicator } from './ComboboxItemIndicator';\n\ntype Props = Omit<ComponentProps<typeof BaseCombobox.Item>, 'className'> & {\n className?: string;\n icon?: ReactNode;\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}\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 { ChevronDown, Plus, X } from '../../icons';\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 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) => ReactNode;\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 aria-label=\"Clear\" disabled={disabled}>\n <BaseCombobox.Clear>\n <X className=\"tw-size-4\" />\n </BaseCombobox.Clear>\n </InputGroup.Button>\n )}\n <InputGroup.Button disabled={disabled} asChild aria-label=\"Open combobox\">\n <BaseCombobox.Trigger>\n <ChevronDown className=\"tw-size-4\" />\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 { Ellipsis } from '../../icons';\nimport { cn } from '../../utils';\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 <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 { ChevronRight } from '../../icons';\nimport { cn } from '../../utils';\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 ?? <ChevronRight className=\"!tw-size-4\" />}\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, ReactNode, 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 } from '@keboola/design';\nimport { Search } from '@keboola/design/icons';\n\nimport { renderLegacyIcon } from '../../utils/legacyIcon';\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 Props = ComponentProps<'button'> & {\n /** Optional leading-icon slot. Pass a Lucide icon node to render an adornment before children. */\n icon?: ReactNode;\n asChild?: boolean;\n} & VariantProps<typeof variants>;\n\nexport const NavbarMenuButton = ({\n ref,\n className,\n type = 'button',\n children,\n icon,\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 adornment = isSearchVariant ? <Search /> : renderLegacyIcon(icon);\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 {adornment && (\n <NavbarMenuItemAdornment variant={adornmentVariant}>{adornment}</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 { Ellipsis } from '../../icons';\nimport { cn } from '../../utils';\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 <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 { ChevronRight } from '../../icons';\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 size=\"medium\"\n className={cn('tw-flex-row-reverse', className)}\n >\n <ChevronRight className=\"tw-size-5\" />\n {children ?? 'Next'}\n </PaginationButton>\n);\n","import type { ComponentProps } from 'react';\n\nimport { ChevronLeft } from '../../icons';\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\">\n <ChevronLeft className=\"tw-size-5\" />\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 { renderLegacyIcon } from '../../utils/legacyIcon';\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 stroke when off, white stroke when on.\n // Lucide icons are stroke-based; targeting every shape (`*`)\n // catches paths, circles, and other non-path sub-shapes so the\n // whole glyph picks up the gradient.\n '[&_*]:tw-stroke-aigradient-600',\n '[&_*]:aria-pressed:tw-stroke-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?: ReactNode;\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 <span className=\"tw-inline-flex tw-size-4 tw-shrink-0 tw-items-center tw-justify-center tw-align-middle [&_svg]:tw-size-4\">\n {renderLegacyIcon(icon)}\n </span>\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 { InputGroup } from '../../components/InputGroup';\nimport { ChevronDown, X } from '../../icons';\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 Indicator = NonNullable<ComboboxItemProps['indicator']>;\n\n/**\n * Props for `MultiCombobox`. Generic over `Value` (the item shape) and `GroupShape` (optional group wrapper).\n * Use `itemToLabel` / `itemToIcon` / `itemToDisabled` to project custom item shapes; use `filter` to override\n * the default substring matcher.\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) => ReactNode;\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\n/**\n * Multi-selection combobox with chip display and search. Built on Base UI Combobox.\n *\n * **When to use:** picking several items from a searchable enumerated list (filter by tags, assign labels).\n * Items render as chips above the input; `maxVisible` collapses excess into a `+N more` chip.\n * **When NOT to use:** for single selection use `Combobox`; for short enums without search use `Select`;\n * for free-form chip entry where the user types arbitrary new values use `Tagger`.\n * **Composition:** wrap in `FormGroup` for label + help text, or use `useAppForm` for form integration.\n * Pass `allowSelectAll` for a sticky \"Select All\" item when the full enum is small.\n *\n * @see RECIPES.md#creatable-multi-combobox — for free-form-plus-enumerated patterns\n * @see RECIPES.md#filter-toolbar — for combining multi-select with other filter chips\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 aria-label=\"Clear\" disabled={disabled}>\n <BaseCombobox.Clear>\n <X className=\"tw-size-4\" />\n </BaseCombobox.Clear>\n </InputGroup.Button>\n )}\n <InputGroup.Button disabled={disabled} asChild aria-label=\"Open combobox\">\n <BaseCombobox.Trigger>\n <ChevronDown className=\"tw-size-4\" />\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 { Pipette } from '@keboola/design/icons';\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 onClick={handleOpenPicker}\n aria-label=\"Pick color\"\n >\n <Pipette className=\"tw-size-4\" />\n </InputGroup.Button>\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 { X } from '../../icons';\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 // prevents input focus stealing\n onMouseDown={(event) => event.preventDefault()}\n onClick={handleClear}\n aria-label=\"Clear color\"\n >\n <X className=\"tw-size-4\" />\n </InputGroup.Button>\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\n/**\n * Props for `FormGroup`. `state` from `FormGroupContext` (\"default\" | \"error\") propagates to nested inputs\n * and help text via context.\n */\ntype FormGroupProps = {\n children: ReactNode;\n className?: string;\n testId?: string;\n} & FormGroupContext;\n\n/**\n * Label + input + help-text grouping with shared validation state. Provides the chrome for a single field.\n *\n * **When to use:** rendering a label + bare input + help/error text outside `useAppForm` (e.g. one-off\n * filter fields, settings panes). The `state=\"error\"` flips both `FormGroup.TextInput` and `FormGroup.Help`\n * to error styling without per-component wiring.\n * **When NOT to use:** for a full form with validation and submit state, use `useAppForm` from `blocks/Form` —\n * it composes `FormGroup` internally via the typed field connectors.\n * **Composition:** nest a `Label`, then one of `FormGroup.TextInput` / `FormGroup.NumberInput` /\n * `FormGroup.ColorInput` / `FormGroup.Textarea`, optionally followed by `FormGroup.Help`.\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 { X } from '../icons';\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\n/**\n * Tab trigger descriptor. `value` keys the tab; `title` is the visible label; `onClose` makes the tab\n * closable (renders an x button on hover). Generic over `T` so consumers can use string-literal unions.\n */\ntype Trigger<T extends string> = {\n value: T;\n title: ReactNode;\n /** When set, renders an inline close button on the trigger. Called with the tab's `value`. */\n onClose?: (value: T) => void;\n} & Omit<RadixTabs.TabsTriggerProps, 'title'>;\n\n/**\n * Tabbed navigation with a single content area. Built on Radix Tabs.\n *\n * **When to use:** switching between sibling views of the same context (overview / runs / settings on a\n * detail page; sections inside a modal body). The triggers row is horizontally scrollable on overflow.\n * **When NOT to use:** for top-level routing prefer `PageHeader` `headerNav` slot or `PageLayout.Tabs`;\n * for accordion-style disclosure use `Collapsible`.\n * **Composition:** pass `triggers` as the declarative list and one or more `TabsContent` children keyed\n * by `value`. Use `compact` for dense in-modal tabs.\n *\n * @see RECIPES.md#page-header-tabs — for the page-header + routed tabs pattern\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 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 <X className=\"tw-size-4\" />\n </Button>\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\n/**\n * Content panel for a single tab. Matched to a `Tabs` trigger by `value`. Receives `tabIndex={-1}` so the\n * panel is focusable for screen readers without being a tab stop.\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 { ChevronDown } from '../../icons';\nimport { cn } from '../../utils';\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 <ChevronDown\n className={cn(\n 'tw-mt-px',\n 'tw-size-5',\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, ReactNode } from 'react';\n\nimport { AlertTriangle, CircleCheck, Info } from '../../icons';\nimport { cn } from '../../utils';\n\nimport type { Variant } from './AlertRoot';\n\nconst VARIANT_ICONS: Record<Variant, ReactNode> = {\n info: <Info />,\n warning: <AlertTriangle />,\n error: <AlertTriangle />,\n success: <CircleCheck />,\n};\n\ntype Props = {\n variant: Variant;\n icon?: ReactNode;\n} & Omit<ComponentProps<'span'>, 'children'>;\n\nexport const AlertIcon = ({ variant, icon, className, ...rest }: Props) => (\n <span\n {...rest}\n data-slot=\"alert-icon\"\n className={cn(\n 'tw-inline-flex',\n 'tw-items-center',\n 'tw-justify-center',\n 'tw-self-start',\n 'tw-p-0.5',\n '[&_svg]:tw-size-4',\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 {icon ?? VARIANT_ICONS[variant]}\n </span>\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?: ReactNode;\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\n/**\n * Props for `Alert`. Discriminated by `mode` — `\"default\"` renders `title` / `children` / `actions`,\n * `\"collapsible\"` requires `title` + `children` (no `actions`) and renders a collapsible disclosure.\n * `variant` (`info` | `success` | `warning` | `error`) is a categorical colour contract.\n */\ntype Props = CommonProps & (CollapsibleProps | DefaultProps);\n\n/**\n * Persistent inline banner for contextual messages tied to the page layout.\n *\n * **When to use:** a message that lives in the page (info banner, warning about a misconfiguration,\n * post-save validation summary). Use `variant` to encode meaning; pass `actions` for inline buttons.\n * `mode=\"collapsible\"` collapses long error details behind a toggle.\n * **When NOT to use:** for transient feedback (save succeeded, job started) use `toast()`; for\n * field-level validation errors use `FormGroup state=\"error\"`; for a confirmation popover use\n * `Popconfirm`.\n * **Composition:** typically rendered at the top of `PageLayout.Content` or above a form section.\n *\n * @see RECIPES.md#alert-with-action — for action-bearing alert composition\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, ReactNode } from 'react';\n\nimport { Button } from '../../components/Button';\nimport { Clipboard } from '../../components/Clipboard';\nimport { Copy } from '../../icons';\n\ntype ClipboardProps = Pick<\n ComponentProps<typeof Clipboard>,\n 'text' | 'tooltip' | 'tooltipPlacement' | 'tooltipVariant'\n>;\n\ntype ButtonProps = Omit<ComponentProps<typeof Button>, 'disabled' | 'icon'>;\n\ntype Props = ClipboardProps & ButtonProps & { icon?: ReactNode };\n\nconst DEFAULT_ICON: ReactNode = <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} variant={variant} disabled={!text}>\n {icon}\n {children}\n </Button>\n </Clipboard>\n);\n","import type { ComponentProps } from 'react';\n\nimport { ButtonInline } from '../../components/Button';\nimport { Clipboard } from '../../components/Clipboard';\nimport { Copy } from '../../icons';\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 && <Copy className=\"tw-size-4\" />}\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 override 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 { ChevronsLeft, ChevronsRight } from '../../../icons';\nimport { Button } from '../../Button';\n\ntype Props = {\n side: 'left' | 'right';\n onAccept: () => void;\n argo?: boolean;\n};\n\nexport const AcceptButton = ({ side, onAccept, argo }: Props) => {\n const label = `Accept ${side === 'left' ? 'production' : 'branch'} version`;\n const Chevron = side === 'left' ? ChevronsRight : ChevronsLeft;\n return (\n <Button\n onClick={onAccept}\n variant=\"outline\"\n size=\"icon-sm\"\n title={label}\n aria-label={label}\n argo={argo}\n >\n <Chevron className=\"tw-size-5\" />\n </Button>\n );\n};\n","import type { RefCallback } from 'react';\n\nimport { X } from '../../../icons';\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 argo?: boolean;\n};\n\n// 28px column when there are conflicts to render — wide enough to fit the\n// 24px icon-xs accept chevron + dismiss icon without overflowing into the\n// adjacent panes (which use `tw-overflow-hidden` and would clip absolutely-\n// positioned children that crossed the boundary). Collapses to 0 when idle\n// so empty merges don't reserve a sliver of layout. Inner wrapper allows\n// horizontal overflow so the icon buttons' focus-visible ring stays visible\n// past the column edge. Buttons stay aligned with their source-pane chunk\n// via the parent's `translateY(-scrollTop)` follower applied to `contentRef`.\nexport const AcceptControls = ({\n conflicts,\n side,\n onAccept,\n onDismiss,\n contentRef,\n argo,\n}: 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-7' : '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)} argo={argo} />\n {onDismiss && (\n <Button\n onClick={() => onDismiss(conflict)}\n variant=\"outline\"\n size=\"icon-sm\"\n title=\"Dismiss\"\n aria-label={`Dismiss ${side === 'left' ? 'production' : 'branch'} change`}\n argo={argo}\n >\n <X className=\"tw-size-4\" />\n </Button>\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 override elementClass = 'cm-merge-safe-gutter';\n}\n\nclass ConflictGutterMarker extends GutterMarker {\n override 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-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 // Recalc viewport after every doc change so late-settling layouts (alerts\n // appearing above the editor) don't leave trailing lines blank.\n EditorView.updateListener.of((update) => {\n if (update.docChanged) {\n requestAnimationFrame(() => update.view.dispatch({}));\n }\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 // Re-measure on wrapper resize — parent dimensions settle after CM mounts\n // (fullscreen modal, alerts appearing above the editor).\n useEffect(() => {\n const view = editorRef.current?.view;\n const wrapper = view?.dom.parentElement;\n if (!view || !wrapper) return;\n\n const observer = new ResizeObserver(() => view.dispatch({}));\n observer.observe(wrapper);\n\n return () => observer.disconnect();\n }, []);\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\">\n <CodeMirror\n ref={editorRef}\n height=\"100%\"\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 * When true, the editor's internal accept and dismiss buttons render in the\n * `argo` button variant. Layout chrome (panes, pane headers, scrollers) is\n * unchanged — only consumer-controlled interactive surfaces switch theme.\n */\n argo?: boolean;\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 argo,\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 argo={argo}\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 argo={argo}\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 { AlertTriangle, CircleCheck } from '../../../icons';\nimport { cn } from '../../../utils';\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 {allDone ? <CircleCheck className=\"tw-size-4\" /> : <AlertTriangle className=\"tw-size-4\" />}\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 { keyCodes } from '../constants/keyCodes';\nimport { ChevronDown } from '../icons';\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 <ChevronDown className={cn('tw-size-5 group-data-[state=open]:tw-rotate-180')} />\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 { keyCodes } from '../constants/keyCodes';\nimport { ChevronDown } from '../icons';\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 <ChevronDown\n className={cn(\n 'tw-size-5',\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\n/**\n * Props for `Skeleton`. `height` maps to the named token (xxs 12px → 2xl 48px); `count` renders multiple\n * stacked placeholders sharing the same shape.\n */\ntype SkeletonProps = {\n /** Named height token — `xxs` (12px) through `2xl` (48px). */\n height?: Height;\n className?: string;\n /** Number of stacked placeholder rows. Use for list-style loading states. */\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\n/**\n * Animated placeholder shown in place of content that is still loading.\n *\n * **When to use:** during initial page or section load while the real content is fetched. Match the\n * placeholder shape to the eventual content (one `Skeleton height=\"lg\"` per title row, several `xs` for\n * paragraph lines). For list shells use `count` to render N stacked placeholders.\n * **When NOT to use:** for indeterminate background work without a layout slot use `DotsLoader` or\n * `Button isLoading`; for empty / error states once the request resolves use `EmptyState` / `ErrorState`.\n * **Composition:** drop directly into the slot the real content will occupy. `SkeletonList` is the typical\n * shell for `Table` / `Card`-list pages.\n *\n * @see RECIPES.md#data-card-with-skeleton — for a loading card pattern\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\n key={key}\n data-skeleton=\"true\"\n className={cn(HEIGHT_CLASS_NAME[height], ANIMATION_CLASS_NAME, className)}\n />\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\n/**\n * Props for `Table`. `borderCollapsed` toggles standard collapsed borders vs separate row spacing;\n * `bordered` wraps the table in a rounded bordered container with overflow scrolling.\n */\ntype Props = {\n borderCollapsed?: boolean;\n bordered?: boolean;\n containerClassName?: string;\n} & ComponentProps<'table'>;\n\n/**\n * Tabular data surface with header / body / row / cell compound parts.\n *\n * **When to use:** tabular data with named columns — entity lists with shared schema (jobs, buckets,\n * tables), sortable rows, row-level actions. Compose `Table.Header` + `Table.Body` + `Table.Row` +\n * `Table.Head` / `Table.Cell`.\n * **When NOT to use:** for heterogeneous lists where each row has its own shape use a `Card` list;\n * for tree / hierarchy layouts use a custom recursive list with `Table` per level.\n * **Composition:** wrap in `PageLayout.Content`. For sortable / filterable behaviour bring your own\n * state library (TanStack Table is a common pairing); this component is presentational.\n *\n * @see RECIPES.md#list-detail — for a list-table + row-click-to-detail pattern\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 { X } from '../../icons';\nimport { cn } from '../../utils';\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-m-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 <X />\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 { 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 { AlertCircle, AlertTriangle, CircleCheck, Info, Loader2 } from '../../icons';\nimport { cn } from '../../utils';\nimport { renderLegacyIcon } from '../../utils/legacyIcon';\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'>;\n\ntype Props = {\n id: string | number;\n title: ReactNode;\n icon?: ReactNode;\n description?: ReactNode;\n action?: Action;\n loading?: boolean;\n duration?: number;\n // offset?: number;\n} & Variants;\n\nconst DEFAULT_VARIANT_ICON: Record<VariantIcon, ReactNode> = {\n error: <AlertTriangle />,\n info: <Info />,\n success: <CircleCheck />,\n warning: <AlertCircle />,\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: ReactNode = (() => {\n if (loading) return <Loader2 className=\"tw-animate-spin\" />;\n if (iconProp) return renderLegacyIcon(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 <span\n data-slot=\"toast-icon\"\n className={cn(\n 'tw-inline-flex',\n 'tw-items-center',\n 'tw-justify-center',\n // styles — container at 20px with no padding so the 20px Lucide\n // glyph fills the slot (previous tw-size-4 + tw-p-1 clipped a\n // 16px child into 8px of visible space)\n 'tw-aspect-square',\n 'tw-size-5',\n 'tw-shrink-0',\n '[&_svg]:tw-size-5',\n 'tw-text-white',\n 'group-data-[variant=default]/toast:tw-text-popover-foreground',\n )}\n >\n {icon}\n </span>\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\n/**\n * Props for `EmptyState`. `variant` chooses spacing — `\"default\"` for full-page empty states,\n * `\"compact\"` for inside cards / small surfaces.\n */\ntype RootProps = ComponentProps<'div'> &\n VariantProps<typeof emptyStateClassnames> & {\n variant?: Variant;\n };\n\n/**\n * Friendly \"nothing here yet\" placeholder with icon, title, description, and actions slots.\n *\n * **When to use:** the user reached a page or surface that is intentionally empty (no items created\n * yet, an empty list after filtering, an empty inbox). The goal is to guide the user to the next action.\n * **When NOT to use:** for an error or failure state use `ErrorState`; for inline loading placeholders\n * use `Skeleton`; for \"no matches found after search\" inside a search/combobox use `EmptySearchContent`.\n * **Composition:** nest `EmptyState.Icon`, `EmptyState.Title`, `EmptyState.Description`, and\n * `EmptyState.Actions` (with one or two `Button`s). Use `variant=\"compact\"` inside a `Card`.\n *\n * @see RECIPES.md#card-with-empty-state — for the empty-card pattern\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\n/**\n * Props for `ErrorState`. `variant` chooses look — `\"default\"` for non-blocking errors, `\"compact\"` for\n * inside cards, `\"destructive\"` for blocking failures (red title + icon).\n */\ntype RootProps = ComponentProps<'div'> &\n VariantProps<typeof errorStateClassnames> & {\n variant?: Variant;\n };\n\n/**\n * Page-level error placeholder with icon, title, description, and recovery-action slots.\n *\n * **When to use:** the page can't render its content because a request failed, the user lacks permission,\n * or the entity doesn't exist. Show a recovery action (retry, go back, request access) in\n * `ErrorState.Actions`.\n * **When NOT to use:** for transient operation failures use `toast()`; for inline form validation use\n * `FormGroup state=\"error\"`; for contextual warning banners use `Alert variant=\"error\"`.\n * **Composition:** nest `ErrorState.Icon`, `ErrorState.Title`, `ErrorState.Description`, and\n * `ErrorState.Actions`. Use `variant=\"destructive\"` for full-page critical failures.\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\n/**\n * Props for `PageLayout` root. `maxWidth` constrains the content column —\n * `narrow` (976px) for forms, `default` (1280px) for most pages, `wide` (1600px) for dense detail views,\n * `full` for edge-to-edge layouts.\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\n/**\n * Compound page-chrome block. Provides every kbc-ui page with the same content-column shape:\n * max-width container + vertical rhythm + named slots.\n *\n * **When to use:** every new kbc-ui page. Do not roll your own `<div className=\"tw-flex tw-flex-col\">`\n * chrome. Host `PageHeader.Index` / `PageHeader.Detail` inside `PageLayout.Header` for the structured\n * page-header patterns.\n * **When NOT to use:** the left-rail `Sidebar` lives in the app shell outside `PageLayout`. For embedded\n * widgets or modal bodies the layout chrome is the modal / card itself, not `PageLayout`.\n * **Composition:** `PageLayout` is opinionated about chrome only — slots accept any `ReactNode`. Put\n * search / filter pills in `PageLayout.Toolbar`, never in the header. Form submit bars go in\n * `PageLayout.Footer sticky`.\n *\n * @see RECIPES.md#list-detail — for the index → detail page pattern\n */\nexport const PageLayout = Object.assign(Root, {\n /** Detail-pattern breadcrumb row. Usually composed automatically by `PageHeader.Detail` — slot exists for layouts that don't fit either `PageHeader` variant. */\n Breadcrumbs,\n /** Host slot for `PageHeader.Index` / `PageHeader.Detail`, or custom header JSX when neither variant fits. */\n Header,\n /** Escape hatch for routing-based tab rows. Use `Tabs` / `TabsContent` core components inside, never a raw `<button>`. */\n Tabs,\n /** Search / filter pill row. Belongs here, NOT in the header per the page-header patterns. */\n Toolbar,\n /** Main content slot. Lists, cards, tables. */\n Content,\n /** Bottom action bar — form submit + cancel. Pass `sticky` for a footer that pins to the viewport. */\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.\n/**\n * Props for `PageHeader.Detail`. Detail pages enforce mandatory breadcrumbs, ≤ 2 visible actions, and an\n * overflow-menu slot on the breadcrumbs row.\n */\ntype PageHeaderDetailProps = Omit<ComponentPropsWithoutRef<'header'>, 'title'> & {\n /** `Breadcrumb` chain ending in the entity name (last item is not a link). Required. */\n breadcrumbs: ReactNode;\n /** `DropdownMenu` for tertiary actions. Sits on the breadcrumbs row, not the title row. */\n overflowActions?: ReactNode;\n title: ReactNode;\n /** Inline `Badge`s rendered next to the title (status, environment, version). */\n badges?: ReactNode;\n description?: ReactNode;\n /** Primary action (`Button argo`). Use the verb appropriate to the entity (Deploy / Run / Save). */\n primaryAction?: ReactNode;\n /** Optional second action (`Button argo variant=\"secondary\"`). Everything beyond goes in `overflowActions`. */\n secondaryAction?: ReactNode;\n /** Optional `Tabs` row below the title block. */\n headerNav?: ReactNode;\n};\n\n/**\n * Page header for single-entity pages.\n *\n * **When to use:** the page shows one entity (a bucket, flow, data app) with a parent hierarchy worth\n * breadcrumbing. Primary action is typically \"edit / deploy / run on this entity\".\n * **When NOT to use:** for top-level list pages use `PageHeader.Index`. For pages without a parent\n * hierarchy use `PageHeader.Index` even if they show one entity.\n * **Composition:** nest inside `PageLayout.Header`. Pass `Button argo` for actions. Anything beyond the\n * 2-visible-actions cap belongs in `overflowActions` (a `DropdownMenu`), not in extra slots.\n *\n * @see RECIPES.md#list-detail — for the list-page → detail-page navigation pattern\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.\n/**\n * Props for `PageHeader.Index`. Index pages have no breadcrumbs and no overflow menu — search and filters\n * belong in `PageLayout.Toolbar`, not here.\n */\ntype PageHeaderIndexProps = Omit<ComponentPropsWithoutRef<'header'>, 'title'> & {\n title: ReactNode;\n /** Prose description shown below the title. Mutually exclusive with `metadata` in the pattern; `metadata` wins when both are passed. */\n description?: ReactNode;\n /** Count / system summary shown below the title (e.g. \"3 buckets and 39 tables\"). Wins over `description`. */\n metadata?: ReactNode;\n /** Icon-only docs button (`Button argo variant=\"invisible\" icon=\"book-blank\"`). Sits next to `action`. */\n documentation?: ReactNode;\n /** Primary \"create / add new X\" `Button`. Pass `Button argo`. */\n action?: ReactNode;\n /** Optional `Tabs` row rendered below the title block. Use only when >1 dataset / section is worth navigating to. */\n headerNav?: ReactNode;\n};\n\n/**\n * Page header for top-level list / collection pages.\n *\n * **When to use:** the page is a list (Flows, Storage, Jobs, …) with no parent in the same section.\n * Primary action is typically \"create / add a new X\".\n * **When NOT to use:** for single-entity detail pages use `PageHeader.Detail`; for layouts that don't fit\n * either pattern host custom JSX in `PageLayout.Header` directly.\n * **Composition:** nest inside `PageLayout.Header`. Always pass `Button argo` into `action` and\n * `documentation`. Search and filter chips belong in `PageLayout.Toolbar`, not here.\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\n/**\n * Structured page-header block that encodes the evviku page-header patterns 1:1 at the type level.\n *\n * **When to use:** every kbc-ui page with a structured header (title + actions + optional badges /\n * description / tabs). Choose `PageHeader.Index` for list / collection pages, `PageHeader.Detail` for\n * single-entity pages with breadcrumbs.\n * **When NOT to use:** for layouts that don't match either pattern, host custom JSX inside\n * `PageLayout.Header` directly. For routing-driven tab rows below the header use `PageLayout.Tabs`.\n * **Composition:** nest inside `PageLayout.Header`. Always opt into `Button argo` for any buttons passed\n * into header slots. The variant types enforce pattern constraints (e.g. `Index` rejects breadcrumbs).\n *\n * @see RECIPES.md#page-header-tabs — for the canonical page-header + tabs composition\n */\nexport const PageHeader = {\n /** Index variant — top-level list / collection pages. No breadcrumbs; `metadata` wins over `description`. */\n Index: PageHeaderIndex,\n /** Detail variant — single-entity pages with required breadcrumbs and an overflow-actions slot. Max 2 visible actions. */\n Detail: PageHeaderDetail,\n};\n","import type { ComponentPropsWithoutRef, ElementRef, Ref } from 'react';\n\nimport { Button } from '../../components/Button';\nimport { Icon } from '../../components/Icon';\nimport { cn } from '../../utils';\n\ntype DivProps = ComponentPropsWithoutRef<'div'> & { ref?: Ref<ElementRef<'div'>> };\n\nconst Root = ({ ref, className, children, ...props }: DivProps) => (\n <div\n ref={ref}\n className={cn('tw-flex tw-flex-wrap tw-items-center tw-gap-3 tw-w-full', className)}\n {...props}\n >\n {children}\n </div>\n);\n\nconst Search = ({ ref, className, children, ...props }: DivProps) => (\n <div\n ref={ref}\n className={cn(\n 'tw-mr-auto tw-flex tw-items-center tw-gap-2 tw-w-full sm:tw-w-auto sm:tw-min-w-64 sm:tw-max-w-md',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n);\n\nconst Right = ({ ref, className, children, ...props }: DivProps) => (\n <div\n ref={ref}\n className={cn('tw-flex tw-flex-wrap tw-items-center tw-gap-2', className)}\n {...props}\n >\n {children}\n </div>\n);\n\nconst ControlGroup = ({ ref, className, children, ...props }: DivProps) => (\n <div ref={ref} className={cn('tw-flex tw-items-center tw-gap-2', className)} {...props}>\n {children}\n </div>\n);\n\nconst ActiveFilters = ({ ref, className, children, ...props }: DivProps) => (\n <div\n ref={ref}\n className={cn('tw-flex tw-flex-wrap tw-items-center tw-gap-2 tw-basis-full', className)}\n {...props}\n >\n {children}\n </div>\n);\n\ntype ActionProps = ComponentPropsWithoutRef<typeof Button>;\n\nconst AddFilter = ({ className, children, ...props }: ActionProps) => (\n <Button argo variant=\"invisible\" size=\"small\" className={cn('tw-gap-1.5', className)} {...props}>\n <Icon icon=\"plus\" />\n {children ?? 'Add filter'}\n </Button>\n);\n\nconst Clear = ({ className, children, ...props }: ActionProps) => (\n <Button argo variant=\"invisible\" size=\"small\" className={cn('tw-ml-auto', className)} {...props}>\n {children ?? 'Clear all'}\n </Button>\n);\n\n/**\n * Two-row toolbar for index pages — search on the left, filter / sort / utility / view\n * controls on the right, an optional Active Filters row below for filter chips or tokens.\n *\n * **When to use:** every index page that supports search or filtering. Hosts inside\n * `PageLayout` as the search / filter row — replaces the older bare-`<div>` `PageLayout.Toolbar`.\n * **When NOT to use:** detail pages, form pages, or anywhere there is no search / filter\n * surface. For routing-based tab rows reach for `PageLayout.Tabs`.\n *\n * **Recommended composition (enforced at the call site):**\n *\n * - `Search` sits on the left; the right cluster auto-aligns via flex.\n * - Right cluster order: `Filters` → `Sort` → `Actions` → `View`. View controls are always\n * the final control group — do not render any control after `View`.\n * - `ActiveFilters` is the second row. Render it only when one or more filters are active.\n * - `Clear` self-aligns to the far right of `ActiveFilters`.\n *\n * The block is variant-agnostic: render filter chips (Standard variant, non-editable) or\n * tokens (Query Builder variant, editable) into `ActiveFilters` as plain children — do not\n * mix the two in one toolbar.\n *\n * @see https://github.com/evviku/design-system-docs/blob/main/docs/patterns/toolbar/toolbar.md\n */\nexport const PageToolbar = Object.assign(Root, {\n /** Left slot — typically a `SearchInput`. */\n Search,\n /** Right cluster — host the four control groups below in the recommended order. */\n Right,\n /** Filter controls (`Combobox`, `Select`, `DatePicker`). */\n Filters: ControlGroup,\n /** Sort control. */\n Sort: ControlGroup,\n /** Utility actions (Export, Refresh, …). */\n Actions: ControlGroup,\n /** View toggle (List / Grid). Always render last in the right cluster. */\n View: ControlGroup,\n /**\n * Active filters row. Render only when one or more filters are active. Pass filter chips\n * (Standard variant) or tokens (Query Builder variant) as children, optionally followed\n * by `AddFilter` / `Clear`.\n */\n ActiveFilters,\n /** \"+ Add filter\" action — typically rendered after the chips/tokens in `ActiveFilters`. */\n AddFilter,\n /** \"Clear all\" action — self-aligns to the far right of `ActiveFilters`. */\n Clear,\n});\n","import { useEffect, useMemo, useRef, useState } from 'react';\nimport type { ChangeEventHandler, ComponentProps, ElementRef, FocusEventHandler, Ref } from 'react';\n\nimport { InputGroup } from '../../components/InputGroup';\nimport { Search, X } from '../../icons';\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\n/**\n * Props for `SearchInput`. `onValueChange` is debounced by default (300ms) so callers can wire it directly\n * to expensive filter / fetch operations without `useMemo` plumbing. `value={null}` / `value={undefined}`\n * is treated as \"not provided\" — the component falls back to `defaultValue` (or, if absent, internal\n * state initialized to empty). `value={\"\"}` is controlled-empty.\n */\ntype Props = InputGroupProps &\n InputGroupInputProps & {\n value?: string | null;\n defaultValue?: string | null;\n /** Called with the latest string value after the debounce window (default 300ms). Fires synchronously on clear and when `disableDebounce` is set. For sync echo of every keystroke use `onChange`. */\n onValueChange?: (value: string) => void;\n /** Called with the string value on blur. */\n onValueBlur?: (value: string) => void;\n /** Called when the user clicks the clear button. Receives no arguments — the value is reset to \"\". */\n onClear?: () => void;\n /** Render the trailing clear (x) button when there's a non-empty value. */\n allowClear?: boolean;\n /** Bypass the debounce — `onValueChange` fires synchronously on every keystroke. */\n disableDebounce?: boolean;\n /** Debounce window in ms. Default 300. Ignored when `disableDebounce` is set. */\n debounceDelay?: number;\n };\n\n/**\n * Debounced search input with a leading magnifying-glass icon and optional clear button.\n *\n * **When to use:** the search field inside `PageLayout.Toolbar`, list / table search, combobox-less\n * free-text filters. `onValueChange` is debounced so callers can wire it directly to fetches without\n * `useMemo` plumbing.\n * **When NOT to use:** for a plain string input use `TextInput`; for selecting from a known enumerated\n * list use `Combobox` (which has its own search built in); for free-form tag entry use `Tagger`.\n * **Composition:** typically rendered in `PageLayout.Toolbar` next to `MultiCombobox` filter pills. Use\n * `allowClear` for the canonical x-to-reset affordance.\n *\n * @see RECIPES.md#filter-toolbar — for the search + filter chips toolbar pattern\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 <Search className=\"tw-size-4 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 aria-label=\"Clear search\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={handleClear}\n >\n <X className=\"tw-size-4\" />\n </InputGroup.Button>\n </InputGroup.Addon>\n )}\n </InputGroup>\n );\n};\n","import type { ComponentProps, KeyboardEvent, Ref } from 'react';\n\nimport { Button, ButtonGroup, cn, Separator, TextInput } from '@keboola/design';\n\nimport { keyCodes } from '../../constants/keyCodes';\nimport { ChevronDown, ChevronUp, Search } from '../../icons';\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={<Search className=\"tw-size-4 tw-text-neutral-400\" />}\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 >\n <ChevronUp className=\"tw-size-4\" />\n </Button>\n <Button\n variant=\"inline\"\n size=\"icon-3xs\"\n onClick={onNavigateNext}\n disabled={!totalResults}\n >\n <ChevronDown className=\"tw-size-4\" />\n </Button>\n </ButtonGroup>\n </div>\n }\n />\n );\n};\n","import { Badge } from '../../components/Badge';\nimport { X } from '../../icons';\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} aria-label=\"Remove Tag\">\n <X className=\"tw-size-3\" />\n </Badge.Button>\n </Badge.Addon>\n )}\n </Badge.Root>\n );\n};\n","import type { ComponentProps } from 'react';\nimport { useCommandState } from 'cmdk';\n\nimport { Plus } from '@keboola/design/icons';\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 className=\"tw-size-4\" />}\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 { Search } from '../../../icons';\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={<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 { TooltipProvider } from '../../components/Tooltip';\nimport { Plus } from '../../icons';\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 <Plus className=\"tw-size-4\" />\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 { Tooltip } from '../../components/Tooltip';\n\ntype Props = {\n disabled?: boolean;\n icon: ReactNode;\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 isLoading={isLoading}\n aria-label={label}\n onClick={onClick}\n variant=\"invisible\"\n size=\"icon\"\n data-testid={dataTestId}\n >\n {!isLoading && icon}\n </Button>\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 { ChevronDown, CircleCheck, Loader2, XCircle } from '../../icons';\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 <Loader2 className=\"tw-size-4 tw-animate-spin\" />;\n }\n if (variant === 'error') {\n return <XCircle className=\"tw-size-4\" />;\n }\n if (variant === 'dismissed') {\n return <XCircle className=\"tw-size-4 tw-text-neutral-500\" />;\n }\n return <CircleCheck 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 <ChevronDown\n className={cn('tw-size-4 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 { CircleCheck, Loader2, XCircle } from '../../icons';\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 <Loader2 className=\"tw-size-4 tw-animate-spin tw-text-neutral-200\" />;\n }\n if (variant === 'error') {\n return <XCircle className=\"tw-size-4 tw-text-error-500\" />;\n }\n if (variant === 'dismissed') {\n return <XCircle className=\"tw-size-4 tw-text-neutral-200\" />;\n }\n return <CircleCheck className=\"tw-size-4 tw-text-neutral-200\" />;\n};\n\nexport const InlineStepLabel = ({ variant, children }: Props) => (\n <div className=\"tw-flex tw-min-w-0 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-min-w-0 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', '[&>*]: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 { ChevronDown, Send, X } from '../../icons';\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 <ChevronDown\n className={cn('tw-size-5 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 aria-label={closeLabel}\n onClick={onClose}\n disabled={isSubmitting}\n data-testid=\"plan-close-button\"\n >\n <X className=\"tw-size-4\" />\n </Button>\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 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 <Send className=\"tw-size-4\" />\n </Button>\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 { Loader2 } from '../../icons';\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 <Loader2 className=\"tw-size-4 tw-animate-spin 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, ReactNode, Ref } from 'react';\n\nimport { Button } from '../../components/Button';\nimport { Tooltip } from '../../components/Tooltip';\nimport { CirclePause, Play, Send } from '../../icons';\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 icon: ReactNode = (() => {\n if (status === 'streaming') return <CirclePause className=\"tw-size-4\" />;\n if (status === 'interrupted') return <Play className=\"tw-size-4\" />;\n return <Send className=\"tw-size-4\" />;\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 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 {/* Suppress the child icon while isLoading — Button already renders\n the spinner; rendering both would double-stack glyphs. */}\n {status !== 'submitted' && icon}\n </Button>\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 { TextInput } from '../../components/Input';\nimport { Progress } from '../../components/Progress';\nimport { ChevronLeft, ChevronRight, X } from '../../icons';\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 aria-label=\"Close\"\n onClick={onClose}\n data-testid=\"question-close-button\"\n >\n <X className=\"tw-size-4\" />\n </Button>\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 <ChevronLeft\n className={cn(\n 'tw-size-5',\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 <ChevronRight\n className={cn(\n 'tw-size-5',\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 { FileText } from '../../icons';\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 <FileText\n className={cn(\n 'tw-size-4 tw-shrink-0 tw-basis-4',\n // Lucide icons are stroke-based — paint the visible line with the\n // AI gradient (no fill, so the glyph keeps its outline silhouette\n // instead of becoming a solid block). The `*` selector catches\n // every shape element (path, circle, polyline, …) so multi-part\n // icons don't lose sub-shapes the way `path`-only selectors do.\n '[&_*]:tw-stroke-aigradient-600',\n 'group-not-disabled:group-hover:[&_*]:tw-stroke-secondary-600',\n )}\n />\n )}\n <div className=\"tw-whitespace-normal tw-text-left\">{label}</div>\n </button>\n );\n};\n","import { Loader2 } from '../../icons';\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 <Loader2 className=\"tw-size-4 tw-animate-spin 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 { CircleCheck, Loader2 } from '../../icons';\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-flex tw-items-center tw-gap-1 tw-text-neutral-400\">\n {isOverLimit && 'Character limit exceeded'}\n {!isOverLimit && isChanged && !isSaving && 'Unsaved'}\n {!isOverLimit && isChanged && isSaving && (\n <>\n <Loader2 className=\"tw-size-4 tw-animate-spin\" /> Saving\n </>\n )}\n {!isOverLimit && value !== null && !isChanged && !isSaving && (\n <>\n <CircleCheck className=\"tw-size-4 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 { InputGroup } from '../../components/InputGroup';\nimport { ArrowBigUpDash, Eye, EyeOff, X } from '../../icons';\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 <ArrowBigUpDash className=\"tw-size-4 tw-text-primary\">\n <title>Caps Lock is on</title>\n </ArrowBigUpDash>\n )}\n {canClear && (\n <InputGroup.Button\n aria-label=\"Clear password\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={handleClear}\n >\n <X className=\"tw-size-4\" />\n </InputGroup.Button>\n )}\n {allowPasswordToggle && (\n <InputGroup.Button\n aria-label={isPasswordVisible ? 'Hide password' : 'Show password'}\n onMouseDown={(event) => event.preventDefault()}\n onClick={handleTogglePasswordVisibility}\n >\n {isPasswordVisible ? <EyeOff className=\"tw-size-4\" /> : <Eye className=\"tw-size-4\" />}\n </InputGroup.Button>\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\n/**\n * Typed form hook + `withForm` binding for the design system.\n *\n * **When to use:** any form layout that has validation, server-side errors, or a submit state — pages,\n * modals, drawers, multi-step wizards. Use `useAppForm({ defaultValues, validators, onSubmit })` at the\n * top of the form component, then render the typed `field.TextField` / `field.NumberField` /\n * `field.PasswordField` / `field.TextAreaField` / `field.SelectField` / `field.CheckboxField` /\n * `field.SwitchField` connectors inside `form.AppForm` → `form.FormBody`. Submit via `form.SubmitButton`.\n * **When NOT to use:** for a single uncontrolled `<input>` use `TextInput` directly; for a bare label + input\n * pair without validation use `FormGroup` + `FormGroup.TextInput`.\n * **Composition:** schema-library agnostic — pass any [Standard Schema](https://standardschema.dev/) validator\n * (zod, valibot, …) in the consuming app. Server errors come from `setServerFieldErrors` (also re-exported).\n *\n * @see RECIPES.md#modal-form — for the canonical form-in-modal composition\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 { Maximize2, Minimize2 } from '../../icons';\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 aria-label={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'}\n onClick={() => setIsFullscreen((f) => !f)}\n argo\n >\n {isFullscreen ? (\n <Minimize2 className=\"tw-size-4\" />\n ) : (\n <Maximize2 className=\"tw-size-4\" />\n )}\n </Button>\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"]}