@harnessio/ui 0.0.7 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-BwGZ1fze.js","sources":["../src/components/more-submenu.tsx","../src/components/settings-menu.tsx","../src/components/manage-navigation/draggable-item.tsx","../src/components/manage-navigation/manage-navigation-search.tsx","../src/components/manage-navigation/index.tsx","../src/components/app-sidebar/sidebar-item.tsx","../src/components/app-sidebar/sidebar-search-legacy.tsx","../src/components/app-sidebar/sidebar-search/command-palette.tsx","../src/components/app-sidebar/sidebar-search/command-palette-wrapper.tsx","../src/components/app-sidebar/sidebar-search/search-context.tsx","../../../node_modules/.pnpm/@radix-ui+react-separator@1.1.2_@types+react-dom@17.0.26_@types+react@17.0.83__@types+react@1_6mfo3o42oabfd7x5dki2v7hf2m/node_modules/@radix-ui/react-separator/dist/index.mjs","../src/components/sidebar/separator.tsx","../src/components/sidebar/skeleton.tsx","../src/components/sidebar/use-is-mobile.tsx","../src/components/sidebar/sidebar.tsx","../src/components/app-sidebar/sidebar-search/sidebar-search.tsx","../src/components/app-sidebar/sidebar-user.tsx","../src/components/app-sidebar/app-sidebar.tsx","../src/components/app-sidebar/types.ts","../src/components/theme-selector/color-select.tsx","../src/components/theme-selector/contrast-select.tsx","../src/components/theme-selector/mode-select.tsx","../src/components/theme-selector/utils.ts","../src/components/theme-selector/index.tsx","../src/components/toast/use-toast.ts","../../../node_modules/.pnpm/@radix-ui+react-toast@1.2.6_@types+react-dom@17.0.26_@types+react@17.0.83__@types+react@17.0._vmhh3qwnghonwjyunybcxvjsey/node_modules/@radix-ui/react-toast/dist/index.mjs","../src/components/toast/toast.tsx","../src/components/file-control-bars/file-viewer-control-bar.tsx","../src/components/file-control-bars/file-editor-control-bar.tsx","../src/components/git-commit-dialog/git-commit-dialog.tsx","../src/components/git-commit-dialog/types.ts","../src/components/commit-suggestions-dialog/commit-suggestions-dialog.tsx","../src/components/topbar.tsx","../src/components/file-additions-trigger.tsx","../src/components/dialogs/exit-confirm-dialog.tsx","../src/components/dialogs/delete-alert-dialog.tsx","../src/components/pipeline-nodes/components/index.ts","../src/components/repo-subheader.tsx","../src/components/filters/manage-views.tsx","../src/components/filters/triggers/view-trigger.tsx","../src/components/filters/filters.tsx","../src/components/filters/filters-bar/actions/variants/calendar.tsx","../src/components/filters/filters-bar/actions/variants/checkbox.tsx","../src/components/filters/filters-bar/actions/variants/number.tsx","../src/components/filters/filters-bar/actions/variants/text.tsx","../src/components/filters/filters-bar/actions/filters.tsx","../src/components/filters/filters-bar/actions/views.tsx","../src/components/filters/filters-bar/filters-bar.tsx","../../../node_modules/.pnpm/@radix-ui+react-tooltip@1.1.8_@types+react-dom@17.0.26_@types+react@17.0.83__@types+react@17._nfewfnbp5gim6djg52ti7as5ge/node_modules/@radix-ui/react-tooltip/dist/index.mjs","../src/components/tooltip.tsx","../../../node_modules/.pnpm/@radix-ui+react-navigation-menu@1.2.5_@types+react-dom@17.0.26_@types+react@17.0.83__@types+r_jywqdl2i33deup6yuwrmyskgzu/node_modules/@radix-ui/react-navigation-menu/dist/index.mjs","../src/components/navigation-menu.tsx","../src/components/separator.tsx","../src/icons/chat-avatar.svg","../src/components/chat/chat.tsx","../src/components/chat/chat-diff-viewer.tsx","../src/components/chat/chat-preview-wrapper.tsx","../src/components/chat/chat-empty-preview-wrapper.tsx","../src/components/navbar-project-chooser.tsx","../src/components/file-explorer.tsx","../src/svgs/theme-dark.png","../src/svgs/theme-light.png","../src/components/theme-selector-v2/types.ts","../src/components/theme-selector-v2/theme-dialog.tsx","../src/components/language-selector/types.ts","../src/components/language-selector/language-dialog.tsx"],"sourcesContent":["import { Icon, NavbarSkeleton, ScrollArea, Sheet, Spacer } from '@/components'\nimport { useRouterContext } from '@/context'\nimport { MenuGroupType } from '@components/app-sidebar/types'\n\ninterface MoreSubmenuProps {\n showMoreMenu: boolean\n handleMoreMenu: () => void\n items: MenuGroupType[]\n}\n\nexport function MoreSubmenu({ showMoreMenu, handleMoreMenu, items }: MoreSubmenuProps) {\n const { NavLink } = useRouterContext()\n return (\n <Sheet.Root modal={false} open={showMoreMenu}>\n <Sheet.Content\n className=\"inset-y-0 left-[220px] z-40 h-screen w-[328px] bg-transparent p-0\"\n closeClassName=\"text-sidebar-icon-3 hover:text-sidebar-icon-1\"\n side=\"left\"\n onClick={handleMoreMenu}\n modal={false}\n >\n <Sheet.Title className=\"sr-only\">More Menu</Sheet.Title>\n <NavbarSkeleton.Root className=\"w-[328px]\" isSubMenu>\n <NavbarSkeleton.Content className=\"overflow-hidden\">\n <ScrollArea scrollThumbClassName=\"bg-sidebar-background-8\">\n <Spacer size={9} />\n {items.map((group, group_idx) => (\n <NavbarSkeleton.Group\n key={group.groupId}\n topBorder={group_idx > 0}\n title={group.title}\n isSubMenu\n isMainNav\n >\n {group.items.map(item => (\n <NavLink key={item.id} to={item.to || ''}>\n {({ isActive }) => (\n <NavbarSkeleton.Item\n text={item.title || ''}\n description={item.description || ''}\n icon={item.iconName && <Icon name={item.iconName} size={18} />}\n active={isActive}\n submenuItem\n isMainNav\n />\n )}\n </NavLink>\n ))}\n </NavbarSkeleton.Group>\n ))}\n <Spacer size={11} />\n </ScrollArea>\n </NavbarSkeleton.Content>\n </NavbarSkeleton.Root>\n </Sheet.Content>\n </Sheet.Root>\n )\n}\n","import { Icon, NavbarSkeleton, ScrollArea, Sheet, Spacer } from '@/components'\nimport { useRouterContext } from '@/context'\nimport { MenuGroupType } from '@components/app-sidebar/types'\n\ninterface SystemAdminMenuProps {\n showSettingMenu: boolean\n handleSettingsMenu: () => void\n items: MenuGroupType[]\n}\n\nexport const SettingsMenu = ({ showSettingMenu, handleSettingsMenu, items }: SystemAdminMenuProps) => {\n const { NavLink } = useRouterContext()\n return (\n <Sheet.Root modal={false} open={showSettingMenu}>\n <Sheet.Content\n className=\"inset-y-0 left-[220px] z-40 h-screen w-[364px] bg-transparent p-0\"\n closeClassName=\"text-sidebar-icon-3 hover:text-sidebar-icon-1\"\n side=\"left\"\n onClick={handleSettingsMenu}\n modal={false}\n >\n <Sheet.Title className=\"sr-only\">System Administration menu</Sheet.Title>\n <NavbarSkeleton.Root className=\"w-[364px]\" isSubMenu>\n <NavbarSkeleton.Content className=\"overflow-hidden\">\n <ScrollArea scrollThumbClassName=\"bg-sidebar-background-8\">\n <Spacer size={9} />\n {items.map((group, group_idx) => (\n <NavbarSkeleton.Group\n key={group.groupId}\n topBorder={group_idx > 0}\n title={group.title}\n titleClassName=\"mb-1.5\"\n isMainNav\n >\n <div className=\"grid grid-cols-2 gap-x-4 gap-y-[0.6875rem]\">\n {group.items.map(item => (\n <NavLink key={item.id} to={item.to || ''}>\n {({ isActive }) => (\n <NavbarSkeleton.Item\n text={item.title || ''}\n icon={item.iconName && <Icon name={item.iconName} size={12} />}\n active={isActive}\n isMainNav\n />\n )}\n </NavLink>\n ))}\n </div>\n </NavbarSkeleton.Group>\n ))}\n <Spacer size={11} />\n </ScrollArea>\n </NavbarSkeleton.Content>\n </NavbarSkeleton.Root>\n </Sheet.Content>\n </Sheet.Root>\n )\n}\n","import { DraggableAttributes } from '@dnd-kit/core'\nimport { SyntheticListenerMap } from '@dnd-kit/core/dist/hooks/utilities'\nimport { useSortable } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\nimport { cn } from '@utils/cn'\n\ninterface DraggableItemProps {\n id: string\n children: (props: { attributes: DraggableAttributes; listeners: SyntheticListenerMap }) => React.ReactNode\n tag: 'button' | 'div' | 'li'\n className?: string\n}\n\nexport const DraggableItem = ({ id, children, tag: Tag = 'div', className }: DraggableItemProps) => {\n const {\n attributes,\n listeners = {},\n setNodeRef,\n transform,\n transition,\n isDragging\n } = useSortable({\n id\n })\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.5 : 1\n }\n return (\n <Tag className={cn('relative', isDragging && 'z-10', className)} ref={setNodeRef} style={style}>\n {children({ attributes, listeners })}\n </Tag>\n )\n}\n","import { useEffect, useRef, useState } from 'react'\n\nimport { Button, Popover, ScrollArea, SearchBox, Text } from '@/components'\nimport { useDebounceSearch } from '@/hooks'\nimport { MenuGroupType, NavbarItemType } from '@components/app-sidebar/types'\nimport { cn } from '@utils/cn'\n\nconst filterItems = (categories: MenuGroupType[], query: string): MenuGroupType[] => {\n if (!query.trim()) return categories\n\n return categories.reduce<MenuGroupType[]>((acc, category) => {\n const filteredItems = category.items.filter(item => item.title.toLowerCase().includes(query.toLowerCase()))\n if (filteredItems.length > 0) {\n acc.push({\n ...category,\n items: filteredItems\n })\n }\n return acc\n }, [])\n}\n\ninterface ManageNavigationSearchProps {\n navbarMenuData: MenuGroupType[]\n addToPinnedItems: (item: NavbarItemType) => void\n}\n\nexport const ManageNavigationSearch = ({ navbarMenuData, addToPinnedItems }: ManageNavigationSearchProps) => {\n const [filteredItems, setFilteredItems] = useState<MenuGroupType[]>(navbarMenuData)\n const [isSearchDialogOpen, setSearchDialogOpen] = useState(false)\n const inputRef = useRef<HTMLInputElement | null>(null)\n const popoverRef = useRef<HTMLDivElement | null>(null)\n\n const {\n search: searchQuery,\n handleSearchChange,\n handleResetSearch\n } = useDebounceSearch({\n handleChangeSearchValue: (val: string) => setFilteredItems(filterItems(navbarMenuData, val))\n })\n\n const handleItemClick = (item: NavbarItemType) => {\n addToPinnedItems(item)\n handleResetSearch()\n setSearchDialogOpen(false)\n }\n\n const handleInputFocus = () => {\n setSearchDialogOpen(true)\n if (searchQuery === '') {\n setFilteredItems(navbarMenuData)\n }\n }\n\n useEffect(() => {\n const handleTabKey = (e: KeyboardEvent) => {\n if (e.key.toLowerCase() === 'tab') {\n const isShift = e.shiftKey\n const activeElement = document.activeElement\n\n if (!popoverRef.current) return\n\n const focusableElements = popoverRef.current!.querySelectorAll<HTMLElement>('button:not([disabled])')\n const firstFocusableElement = focusableElements[0]\n\n if (!isShift && activeElement === inputRef.current) {\n e.preventDefault()\n\n if (firstFocusableElement) {\n firstFocusableElement.focus()\n }\n }\n }\n }\n\n window.addEventListener('keydown', handleTabKey)\n\n return () => {\n window.removeEventListener('keydown', handleTabKey)\n }\n }, [])\n\n const countFilteredItems =\n filteredItems.length + filteredItems.reduce((acc, category) => acc + category.items.length, 0)\n\n return (\n <Popover.Root open={isSearchDialogOpen} onOpenChange={setSearchDialogOpen}>\n <Popover.Trigger asChild>\n <SearchBox.Root\n className=\"w-full\"\n inputClassName=\"h-9 placeholder:text-foreground-5\"\n ref={inputRef}\n placeholder=\"Add menu element\"\n value={searchQuery}\n handleChange={handleSearchChange}\n hasSearchIcon={false}\n onFocus={handleInputFocus}\n />\n </Popover.Trigger>\n <Popover.Content\n className=\"w-[368px] overflow-hidden !rounded border-borders-1 bg-background-2 !p-0\"\n ref={popoverRef}\n align=\"start\"\n onWheel={e => e.stopPropagation()}\n onOpenAutoFocus={e => e.preventDefault()}\n onCloseAutoFocus={e => e.preventDefault()}\n >\n <ScrollArea className={cn('relative max-h-[50vh]', countFilteredItems > 10 && 'h-[404px]')}>\n <div className=\"px-1 pb-2 pt-1\">\n <span\n className=\"pointer-events-none absolute inset-x-0 top-0 h-3 w-full bg-gradient-to-b from-background-2 to-transparent\"\n aria-hidden\n />\n <span\n className=\"pointer-events-none absolute inset-x-0 bottom-0 h-3 w-full bg-gradient-to-t from-background-2 to-transparent\"\n aria-hidden\n />\n {countFilteredItems === 0 ? (\n <Text className=\"block w-full px-2 py-4 text-foreground-5\">No results found</Text>\n ) : (\n filteredItems.map((category, index) => (\n <div\n className={cn(index > 0 ? 'border-borders-4 mt-0.5 border-t pt-2' : 'pt-1')}\n key={`category-${category.groupId}-${index}`}\n >\n <Text className=\"inline-block px-2 leading-none text-foreground-7\" size={1}>\n {category.title}\n </Text>\n <div className=\"mt-2.5 flex flex-col\">\n {category.items.map(item => (\n <Button\n className=\"h-9 cursor-pointer rounded-sm px-2 focus-visible:ring-offset-0\"\n variant=\"ghost\"\n key={`item-${item.id}`}\n onClick={() => handleItemClick(item)}\n >\n <div className=\"flex w-full items-center gap-x-2\">\n <Text className=\"truncate leading-tight text-foreground-8\">{item.title}</Text>\n </div>\n </Button>\n ))}\n </div>\n </div>\n ))\n )}\n </div>\n </ScrollArea>\n </Popover.Content>\n </Popover.Root>\n )\n}\n","import { useEffect, useMemo, useState } from 'react'\n\nimport { AlertDialog, Button, ButtonGroup, Icon, ScrollArea, Text } from '@/components'\nimport useDragAndDrop from '@/hooks/use-drag-and-drop'\nimport { MenuGroupType, NavbarItemType } from '@components/app-sidebar/types'\nimport { closestCenter, DndContext } from '@dnd-kit/core'\nimport { SortableContext } from '@dnd-kit/sortable'\n\nimport { DraggableItem } from './draggable-item'\nimport { ManageNavigationSearch } from './manage-navigation-search'\n\ninterface ManageNavigationProps {\n pinnedItems: NavbarItemType[]\n navbarMenuData: MenuGroupType[]\n showManageNavigation: boolean\n recentItems: NavbarItemType[]\n onSave: (recentItems: NavbarItemType[], currentPinnedItems: NavbarItemType[]) => void\n onClose: () => void\n isSubmitting: boolean\n submitted: boolean\n}\n\nconst filterRecentItems = (pinnedItems: NavbarItemType[], recentItems: NavbarItemType[]) => {\n return recentItems.filter(item => !pinnedItems.some(pinnedItem => pinnedItem.id === item.id))\n}\n\nconst filterMenuData = (menuData: MenuGroupType[], pinnedItems: NavbarItemType[]): MenuGroupType[] => {\n return menuData\n .map(group => ({\n ...group,\n items: group.items.filter(item => !pinnedItems.some(pinnedItem => pinnedItem.id === item.id))\n }))\n .filter(group => group.items.length > 0)\n}\n\nexport const ManageNavigation = ({\n pinnedItems,\n recentItems,\n navbarMenuData,\n showManageNavigation,\n onSave,\n onClose,\n isSubmitting,\n submitted\n}: ManageNavigationProps) => {\n const [currentPinnedItems, setCurrentPinnedItems] = useState<NavbarItemType[]>(pinnedItems)\n const [currentFilteredRecentItems, setCurrentFilteredRecentItems] = useState<NavbarItemType[]>(\n filterRecentItems(pinnedItems, recentItems)\n )\n const [isRecentCleared, setIsRecentCleared] = useState(false)\n\n useEffect(() => {\n setCurrentPinnedItems(pinnedItems)\n }, [pinnedItems])\n\n useEffect(() => {\n setCurrentFilteredRecentItems(filterRecentItems(pinnedItems, recentItems))\n }, [recentItems, pinnedItems])\n\n const { handleDragEnd, getItemId } = useDragAndDrop<NavbarItemType>({\n items: currentPinnedItems,\n onReorder: setCurrentPinnedItems\n })\n\n const handleCancel = () => {\n setCurrentPinnedItems(pinnedItems)\n setCurrentFilteredRecentItems(filterRecentItems(pinnedItems, recentItems))\n onClose()\n }\n\n const handleClearRecent = () => {\n setCurrentFilteredRecentItems([])\n setIsRecentCleared(true)\n }\n\n const onSubmit = () => {\n onSave(currentFilteredRecentItems, currentPinnedItems)\n onClose()\n }\n\n const updatePinnedItems = (items: NavbarItemType[]) => {\n setCurrentPinnedItems(items)\n setCurrentFilteredRecentItems(prevRecentItems => {\n if (isRecentCleared) {\n const unpinnedItems = currentPinnedItems\n .filter(item => !items.some(newItem => newItem.id === item.id))\n .filter(item => recentItems.some(recentItem => recentItem.id === item.id))\n return [...prevRecentItems, ...unpinnedItems]\n } else {\n return filterRecentItems(items, recentItems)\n }\n })\n }\n\n const addToPinnedItems = (item: NavbarItemType) => {\n const isAlreadyPinned = currentPinnedItems.some(pinnedItem => pinnedItem.id === item.id)\n\n if (!isAlreadyPinned) {\n updatePinnedItems([...currentPinnedItems, item])\n }\n }\n\n const removeFromPinnedItems = (item: NavbarItemType) => {\n updatePinnedItems(currentPinnedItems.filter(pinnedItem => pinnedItem.id !== item.id))\n }\n\n const permanentlyPinnedItems = useMemo(\n () => currentPinnedItems.filter(item => item.permanentlyPinned),\n [currentPinnedItems]\n )\n const draggablePinnedItems = useMemo(\n () => currentPinnedItems.filter(item => !item.permanentlyPinned),\n [currentPinnedItems]\n )\n\n return (\n <AlertDialog.Root open={showManageNavigation} onOpenChange={handleCancel}>\n <AlertDialog.Content\n className=\"h-[574px] max-h-[70vh] max-w-[410px]\"\n onClose={handleCancel}\n onOverlayClick={handleCancel}\n >\n <AlertDialog.Header>\n <AlertDialog.Title className=\"mb-4\">Manage navigation</AlertDialog.Title>\n <ManageNavigationSearch\n navbarMenuData={filterMenuData(navbarMenuData, currentPinnedItems)}\n addToPinnedItems={addToPinnedItems}\n />\n </AlertDialog.Header>\n <ScrollArea className=\"-mx-5 -mb-5 mt-1\">\n <div className=\"px-5\">\n <Text className=\"inline-block leading-none text-foreground-7\" size={1}>\n Pinned\n </Text>\n {!currentPinnedItems.length ? (\n <Text className=\"mt-3 block text-foreground-5\" size={1}>\n No pinned items\n </Text>\n ) : (\n <DndContext onDragEnd={handleDragEnd} collisionDetection={closestCenter}>\n <SortableContext items={currentPinnedItems.map((_, index) => getItemId(index))}>\n <ul className=\"-mx-3 mb-1 mt-3.5 flex flex-col gap-y-0.5\">\n {permanentlyPinnedItems.map(item => {\n return (\n <div\n key={item.id}\n className=\"flex w-full grow cursor-not-allowed items-center gap-x-2.5 rounded p-1 px-3 opacity-55\"\n >\n <Icon className=\"w-3.5\" name=\"lock\" size={14} />\n <Text>{item.title}</Text>\n </div>\n )\n })}\n {draggablePinnedItems.map((item, index) => (\n <DraggableItem id={getItemId(index + permanentlyPinnedItems.length)} tag=\"li\" key={item.title}>\n {({ attributes, listeners }) => {\n return (\n <>\n <Button\n className={'w-full grow cursor-grab gap-x-2.5 rounded p-1 px-3 active:cursor-grabbing'}\n variant=\"ghost\"\n {...attributes}\n {...listeners}\n >\n <Icon className=\"w-3.5\" name=\"grid-dots\" size={14} />\n <Text className=\"w-full text-left text-[inherit]\">{item.title}</Text>\n </Button>\n <Button\n className=\"absolute right-1 top-0.5 z-20 text-icons-4 hover:text-icons-2\"\n size=\"sm_icon\"\n variant=\"custom\"\n onClick={() => removeFromPinnedItems(item)}\n >\n <Icon className=\"w-3.5\" name=\"x-mark\" size={14} />\n </Button>\n </>\n )\n }}\n </DraggableItem>\n ))}\n </ul>\n </SortableContext>\n </DndContext>\n )}\n {currentFilteredRecentItems.length > 0 && (\n <>\n <div className=\"mt-4 flex items-center justify-between\">\n <Text className=\"inline-block leading-none text-foreground-7\" size={1}>\n Recent\n </Text>\n <Button className=\"-mr-1.5\" variant=\"link_accent\" size=\"xs\" onClick={handleClearRecent}>\n Clear all\n </Button>\n </div>\n <ul className=\"mt-3 flex flex-col gap-y-0.5 pb-5\">\n {currentFilteredRecentItems.map((item, index) => (\n <li className=\"relative flex h-8 items-center\" key={`recent-${item.id}-${index}`}>\n <div className=\"flex w-full grow items-center gap-x-2.5\">\n <Icon className=\"text-icons-4\" name=\"clock-icon\" size={14} />\n <Text className=\"w-full text-left text-foreground-8\">{item.title}</Text>\n </div>\n <Button\n className=\"absolute -right-2 top-0.5 text-icons-4 hover:text-icons-2\"\n size=\"sm_icon\"\n variant=\"custom\"\n onClick={() => addToPinnedItems(item)}\n >\n <Icon name=\"pin\" size={14} />\n </Button>\n </li>\n ))}\n </ul>\n </>\n )}\n </div>\n </ScrollArea>\n <AlertDialog.Footer>\n <ButtonGroup>\n {!submitted ? (\n <>\n <Button variant=\"outline\" onClick={handleCancel} disabled={isSubmitting}>\n Cancel\n </Button>\n <Button type=\"button\" theme=\"primary\" onClick={onSubmit} disabled={isSubmitting}>\n {isSubmitting ? 'Saving...' : 'Save'}\n </Button>\n </>\n ) : (\n <Button\n variant=\"ghost\"\n type=\"button\"\n size=\"sm\"\n theme=\"success\"\n className=\"pointer-events-none flex gap-2\"\n disabled={submitted}\n >\n Saved\n <Icon name=\"tick\" size={14} />\n </Button>\n )}\n </ButtonGroup>\n </AlertDialog.Footer>\n </AlertDialog.Content>\n </AlertDialog.Root>\n )\n}\n","import { DropdownMenu, Icon, IconProps, Sidebar, Text } from '@/components'\nimport { useRouterContext } from '@/context'\nimport { TFunction } from 'i18next'\n\ninterface NavbarItemType {\n id: number | string\n title: string\n iconName?: IconProps['name']\n description?: string\n to: string\n permanentlyPinned?: boolean\n}\n\ninterface NavbarItemProps {\n item: NavbarItemType\n isRecent?: boolean\n handleChangePinnedMenuItem: (item: NavbarItemType, pin: boolean) => void\n handleRemoveRecentMenuItem: (item: NavbarItemType) => void\n handleCustomNav: () => void\n t: TFunction\n}\n\nexport const SidebarItem = ({\n item,\n isRecent = false,\n handleChangePinnedMenuItem,\n handleRemoveRecentMenuItem,\n handleCustomNav,\n t\n}: NavbarItemProps) => {\n const { NavLink } = useRouterContext()\n\n const iconName = item.iconName && (item.iconName.replace('-gradient', '') as IconProps['name'])\n\n const handlePin = () => {\n handleChangePinnedMenuItem(item, isRecent)\n }\n\n const handleRemoveRecent = () => {\n handleRemoveRecentMenuItem(item)\n }\n\n const dropdownItems = isRecent ? (\n <>\n <DropdownMenu.Item\n className=\"text-sidebar-foreground-6 data-[highlighted]:bg-sidebar-background-2 data-[highlighted]:text-sidebar-foreground-1\"\n onSelect={handlePin}\n >\n <Text size={2} truncate color=\"inherit\">\n {t('component:navbar.pin', 'Pin')}\n </Text>\n </DropdownMenu.Item>\n <DropdownMenu.Item\n className=\"text-sidebar-foreground-6 data-[highlighted]:bg-sidebar-background-2 data-[highlighted]:text-sidebar-foreground-1\"\n onSelect={handleRemoveRecent}\n >\n <Text size={2} truncate color=\"inherit\">\n {t('component:navbar.remove', 'Remove')}\n </Text>\n </DropdownMenu.Item>\n </>\n ) : (\n <>\n <DropdownMenu.Item\n className=\"text-sidebar-foreground-6 data-[highlighted]:bg-sidebar-background-2 data-[highlighted]:text-sidebar-foreground-1\"\n onSelect={handleCustomNav}\n >\n <Text size={2} truncate color=\"inherit\">\n {t('component:navbar.reorder', 'Reorder')}\n </Text>\n </DropdownMenu.Item>\n\n {!item.permanentlyPinned ? (\n <DropdownMenu.Item\n className=\"text-sidebar-foreground-6 data-[highlighted]:bg-sidebar-background-2 data-[highlighted]:text-sidebar-foreground-1\"\n onSelect={handlePin}\n >\n <Text size={2} truncate color=\"inherit\">\n {t('component:navbar.unpin', 'Unpin')}\n </Text>\n </DropdownMenu.Item>\n ) : null}\n </>\n )\n\n return (\n <Sidebar.MenuItem>\n <NavLink className=\"block\" to={item.to || ''} end>\n {({ isActive }) => (\n <Sidebar.MenuButton asChild isActive={isActive}>\n <Sidebar.MenuItemText\n text={item.title}\n icon={iconName && <Icon name={iconName} size={12} />}\n active={isActive}\n />\n </Sidebar.MenuButton>\n )}\n </NavLink>\n\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <Sidebar.MenuAction className=\"text-sidebar-icon-3 hover:text-sidebar-icon-1 right-0\" showOnHover>\n <span>\n <Icon name=\"menu-dots\" size={12} />\n </span>\n </Sidebar.MenuAction>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content\n className=\"border-sidebar-border-3 bg-sidebar-background-4 w-[128px]\"\n align=\"end\"\n sideOffset={3}\n alignOffset={4}\n >\n {dropdownItems}\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n </Sidebar.MenuItem>\n )\n}\n","import { FormEvent, ReactNode, useState } from 'react'\n\nimport { TFunction } from 'i18next'\n\nimport { Dialog, SearchBox, Spacer } from '..'\n\ninterface ProjectProps {\n logo: ReactNode\n t: TFunction\n}\n\nfunction SidebarSearchLegacy({ logo, t }: ProjectProps) {\n const [isSearchDialogOpen, setSearchDialogOpen] = useState(false)\n\n const openSearchDialog = (e?: FormEvent<HTMLInputElement>) => {\n e?.preventDefault()\n e?.stopPropagation()\n\n setSearchDialogOpen(true)\n }\n\n const closeSearchDialog = () => {\n setSearchDialogOpen(false)\n }\n\n return (\n <div className=\"flex w-full flex-col place-items-start pb-3 pt-1.5\">\n <div className=\"flex h-[58px] items-center pl-1\">{logo}</div>\n <SearchBox.Root\n width=\"full\"\n placeholder={`${t('component:navbar.search', 'Search')}...`}\n hasShortcut\n shortcutLetter=\"K\"\n shortcutModifier=\"cmd\"\n value=\"\"\n onSearch={openSearchDialog}\n handleChange={openSearchDialog}\n theme=\"sidebar\"\n />\n <Dialog.Root open={isSearchDialogOpen} onOpenChange={closeSearchDialog}>\n <Dialog.Content className=\"h-[600px] max-w-[800px]\">\n <Dialog.Header>\n <Dialog.Title>{t('component:navbar.search', 'Search')}</Dialog.Title>\n <Dialog.Description>\n <Spacer size={6} />\n <SearchBox.Root width=\"full\" placeholder={`${t('component:navbar.search', 'Search')}...`} />\n </Dialog.Description>\n </Dialog.Header>\n </Dialog.Content>\n </Dialog.Root>\n </div>\n )\n}\n\nexport { SidebarSearchLegacy }\n","import React, { PropsWithChildren } from 'react'\n\nimport { Dialog as RadixDialog } from '@components/dialog'\nimport { Overlay } from '@radix-ui/react-dialog'\nimport { cn } from '@utils/cn'\nimport { Command as CommandPrimitive } from 'cmdk'\n\ninterface DialogProps {\n className?: string\n open: boolean\n onOpenChange: (open: boolean) => void\n}\n\nconst Root = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n 'flex h-full w-full flex-col overflow-hidden rounded-[10px] bg-background-2 text-popover-foreground',\n className\n )}\n {...props}\n />\n))\nRoot.displayName = 'Root'\n\nconst Dialog = ({ children, className, open, onOpenChange }: PropsWithChildren<DialogProps>) => (\n <RadixDialog.Root open={open} onOpenChange={onOpenChange}>\n <Overlay\n className={cn(\n 'fixed inset-0 z-50 bg-background-7/30 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className\n )}\n />\n <RadixDialog.Content className=\"fixed left-[50%] top-[50%] z-50 grid w-full max-w-[586px] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-[10px] border bg-background p-5 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\">\n <Root className=\"p-2 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:size-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2.5 [&_[cmdk-item]]:py-1.5 [&_[cmdk-item]_svg]:h-auto [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Root>\n </RadixDialog.Content>\n </RadixDialog.Root>\n)\nDialog.displayName = 'Dialog'\n\nconst Dropdown = ({ children, className, open, onOpenChange }: PropsWithChildren<DialogProps>) => (\n <RadixDialog.Root open={open} onOpenChange={onOpenChange}>\n <Overlay\n className={cn(\n 'fixed inset-0 z-50 bg-background-7/30 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className\n )}\n />\n <RadixDialog.Content className=\"absolute left-6 top-[58px] z-50 grid w-full max-w-[300px] gap-4 rounded-[10px] border bg-background shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:rounded-lg\">\n <Root className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:size-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2.5 [&_[cmdk-item]]:py-1.5 [&_[cmdk-item]_svg]:h-auto [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Root>\n </RadixDialog.Content>\n </RadixDialog.Root>\n)\nDropdown.displayName = 'Dropdown'\n\nconst Input = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-4\">\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n 'flex h-10 w-full rounded-md bg-transparent py-3 text-base text-foreground-1 outline-none placeholder:text-foreground-5 disabled:cursor-not-allowed disabled:opacity-50 focus:ring-0 focus-visible:outline-none',\n className\n )}\n {...props}\n />\n <Shortcut>\n <span>ESC</span>\n </Shortcut>\n </div>\n))\nInput.displayName = 'Input'\n\nconst List = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn('max-h-[calc(385px-48px)] overflow-y-auto overflow-x-hidden', className)}\n {...props}\n />\n))\nList.displayName = 'List'\n\nconst Empty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => <CommandPrimitive.Empty ref={ref} className=\"py-6 text-center text-sm\" {...props} />)\nEmpty.displayName = 'Empty'\n\nconst Group = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n 'overflow-hidden mt-2.5 p-1 text-foreground-5 text-sm [&_[cmdk-group-heading]]:px-2.5 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-sm [&_[cmdk-group-heading]]:font-normal [&_[cmdk-group-heading]]:text-foreground-5',\n className\n )}\n {...props}\n />\n))\nGroup.displayName = 'Group'\n\nconst Item = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex cursor-default gap-0 select-none items-center font-normal rounded-[4px] px-5 py-0 text-sm text-foreground-8 outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-foreground-4/10 data-[selected=true]:text-foreground-8 data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',\n className\n )}\n {...props}\n />\n))\nItem.displayName = 'Item'\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator ref={ref} className={cn('-mx-1 h-px bg-border', className)} {...props} />\n))\nSeparator.displayName = 'Separator'\n\nconst Shortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n 'ml-auto px-[6px] flex gap-0.5 rounded-sm text-xs tracking-tight border border-borders-2 bg-background-3 text-foreground-2',\n className\n )}\n {...props}\n />\n )\n}\nShortcut.displayName = 'Shortcut'\n\nexport const CommandPalette = {\n Root,\n Dialog,\n Dropdown,\n Input,\n Empty,\n Group,\n List,\n Item,\n Separator,\n Shortcut\n}\n","import { useEffect, useState } from 'react'\n\nimport { Icon } from '@components/icon'\nimport { TFunction } from 'i18next'\n\nimport { CommandPalette } from './command-palette'\nimport { useSearch } from './search-context'\n\nenum PageKey {\n REPOSITORIES = 'repositories',\n PROJECTS = 'projects',\n PIPELINES = 'pipelines'\n}\n\ninterface CommandOption {\n label: string\n key?: PageKey\n shortcut?: [string, string] // Symbol + Key (e.g., [\"⇧\", \"R\"])\n url?: string\n action?: () => void\n icon?: () => JSX.Element\n}\n\ninterface CommandPaletteProps {\n t: TFunction\n}\n\nexport function CommandPaletteWrapper({ t }: CommandPaletteProps) {\n const { isOpen, setIsOpen } = useSearch()\n const [search, setSearch] = useState('')\n const [pages, setPages] = useState<PageKey[]>([])\n const page = pages[pages.length - 1]\n\n const DEFAULT = {\n placeholder: 'What do you need?'\n }\n\n const [placeholder, setPlaceholder] = useState(DEFAULT.placeholder)\n\n useEffect(() => {\n setPlaceholder(page ? `Search ${page}...` : DEFAULT.placeholder)\n }, [page])\n\n function onItemClick(target: PageKey) {\n setPages([...pages, target])\n setSearch('')\n }\n\n const MENU_OPTIONS: Record<PageKey, CommandOption[]> = {\n [PageKey.REPOSITORIES]: [\n {\n label: 'Search repositories...',\n key: PageKey.REPOSITORIES,\n shortcut: ['⇧', 'R'],\n icon: () => <Icon name=\"repositories\" size={14} className=\"text-icons-1\" />\n },\n {\n label: 'Create repository',\n action: () => alert('Create Repository'),\n icon: () => <Icon name=\"plus\" size={14} className=\"text-icons-1\" />\n },\n {\n label: 'Import repository',\n action: () => alert('Import Repository'),\n icon: () => <Icon name=\"download\" size={14} className=\"text-icons-1\" />\n }\n ],\n [PageKey.PROJECTS]: [\n {\n label: 'Search projects...',\n key: PageKey.PROJECTS,\n shortcut: ['⇧', 'P'],\n icon: () => <Icon name=\"environment\" size={14} className=\"text-icons-1\" />\n },\n {\n label: 'Create project',\n action: () => alert('Create Project'),\n icon: () => <Icon name=\"plus\" size={14} className=\"text-icons-1\" />\n },\n {\n label: 'Import project',\n action: () => alert('Import Project'),\n icon: () => <Icon name=\"download\" size={14} className=\"text-icons-1\" />\n }\n ],\n [PageKey.PIPELINES]: [\n {\n label: 'Search pipelines...',\n key: PageKey.PIPELINES,\n shortcut: ['⇧', 'L'],\n icon: () => <Icon name=\"pipelines\" size={14} className=\"text-icons-1\" />\n },\n {\n label: 'Create pipeline',\n action: () => alert('Create Pipeline'),\n icon: () => <Icon name=\"plus\" size={14} className=\"text-icons-1\" />\n }\n ]\n }\n\n const SUB_ITEMS: Record<PageKey, CommandOption[]> = {\n [PageKey.REPOSITORIES]: [\n {\n label: 'petstore-app',\n url: '/canary/repos/petstore-app/summary',\n icon: () => <Icon name=\"repositories\" size={14} className=\"text-icons-1\" />\n },\n {\n label: 'RealWorld',\n url: '/canary/repos/real-world/summary',\n icon: () => <Icon name=\"repositories\" size={14} className=\"text-icons-1\" />\n },\n {\n label: 'sock shop',\n url: '/canary/repos/sock-shop/summary',\n icon: () => <Icon name=\"repositories\" size={14} className=\"text-icons-1\" />\n },\n {\n label: 'anthos',\n url: '/canary/repos/anthos/summary',\n icon: () => <Icon name=\"repositories\" size={14} className=\"text-icons-1\" />\n },\n {\n label: 'acme-web',\n url: '/canary/repos/acme-web/summary',\n icon: () => <Icon name=\"repositories\" size={14} className=\"text-icons-1\" />\n }\n ],\n [PageKey.PROJECTS]: [\n {\n label: 'Canary',\n url: '/canary/repos/petstore-app/summary',\n icon: () => <Icon name=\"file\" size={14} className=\"text-icons-1\" />\n },\n {\n label: 'Paypal',\n url: '/canary/repos/real-world/summary',\n icon: () => <Icon name=\"file\" size={14} className=\"text-icons-1\" />\n }\n ],\n [PageKey.PIPELINES]: [\n {\n label: 'build-pipeline',\n url: '/canary/pipelines/build-pipeline/studio',\n icon: () => <Icon name=\"pipelines\" size={14} className=\"text-icons-1\" />\n }\n ]\n }\n\n return (\n <CommandPalette.Dialog open={isOpen} onOpenChange={setIsOpen}>\n <CommandPalette.Root\n label={t('component:navbar.command-palette', 'Command Palette')}\n onKeyDown={(e: any) => {\n if (e.key === 'Escape' || (e.key === 'Backspace' && !search)) {\n e.preventDefault()\n setPages(pages => pages.slice(0, -1))\n }\n }}\n >\n <CommandPalette.Input placeholder={placeholder} value={search} onValueChange={setSearch} />\n <CommandPalette.List className=\"pb-3\">\n <CommandPalette.Empty>{t('component:navbar.nothing-found', 'Nothing Found')}</CommandPalette.Empty>\n\n {!page ? (\n Object.entries(MENU_OPTIONS).map(([key, items]) => (\n <CommandPalette.Group key={key} heading={key}>\n {items.map(({ label, key, action, icon, shortcut }) => (\n <CommandPalette.Item key={label} onSelect={() => (key ? onItemClick(key) : action?.())}>\n <div className=\"mr-2.5\">{icon && icon()}</div>\n <div className=\"\">{label}</div>\n {shortcut && (\n <CommandPalette.Shortcut>\n <span>{shortcut[0]}</span>\n <span>{shortcut[1]}</span>\n </CommandPalette.Shortcut>\n )}\n </CommandPalette.Item>\n ))}\n </CommandPalette.Group>\n ))\n ) : (\n <CommandPalette.Group heading={page}>\n {SUB_ITEMS[page]?.map(({ label, url, icon }) => (\n <CommandPalette.Item key={label} onSelect={() => (window.location.href = url!)}>\n <div className=\"mr-2.5\">{icon && icon()}</div>\n <div className=\"\">{label}</div>\n </CommandPalette.Item>\n ))}\n </CommandPalette.Group>\n )}\n </CommandPalette.List>\n </CommandPalette.Root>\n </CommandPalette.Dialog>\n )\n}\n","import { createContext, ReactNode, useContext, useEffect, useState } from 'react'\n\nimport { TFunction } from 'i18next'\n\nimport { CommandPaletteWrapper } from './command-palette-wrapper'\n\ninterface SearchContextType {\n isOpen: boolean\n setIsOpen: (open: boolean) => void\n searchTerm: string\n setSearchTerm: (term: string) => void\n selectedIndex: number\n setSelectedIndex: (index: number) => void\n}\n\nconst SearchContext = createContext<SearchContextType | null>(null)\n\ninterface SearchProviderProps {\n children: ReactNode\n t: TFunction\n}\n\nexport function SearchProvider({ children, t }: SearchProviderProps) {\n const [isOpen, setIsOpen] = useState<boolean>(false)\n const [searchTerm, setSearchTerm] = useState<string>('')\n const [selectedIndex, setSelectedIndex] = useState<number>(0)\n\n const toggleSearch = () => {\n setIsOpen(prev => !prev)\n }\n\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if ((event.metaKey || event.ctrlKey) && event.key.toLowerCase() === 'k') {\n event.preventDefault()\n toggleSearch()\n }\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [])\n\n return (\n <SearchContext.Provider\n value={{\n isOpen,\n setIsOpen,\n searchTerm,\n setSearchTerm,\n selectedIndex,\n setSelectedIndex\n }}\n >\n {children}\n <CommandPaletteWrapper t={t} />\n </SearchContext.Provider>\n )\n}\n\nexport function useSearch(): SearchContextType {\n const context = useContext(SearchContext)\n if (!context) {\n throw new Error('useSearch must be used within a SearchProvider')\n }\n return context\n}\n","// packages/react/separator/src/separator.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Separator\";\nvar DEFAULT_ORIENTATION = \"horizontal\";\nvar ORIENTATIONS = [\"horizontal\", \"vertical\"];\nvar Separator = React.forwardRef((props, forwardedRef) => {\n const { decorative, orientation: orientationProp = DEFAULT_ORIENTATION, ...domProps } = props;\n const orientation = isValidOrientation(orientationProp) ? orientationProp : DEFAULT_ORIENTATION;\n const ariaOrientation = orientation === \"vertical\" ? orientation : void 0;\n const semanticProps = decorative ? { role: \"none\" } : { \"aria-orientation\": ariaOrientation, role: \"separator\" };\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-orientation\": orientation,\n ...semanticProps,\n ...domProps,\n ref: forwardedRef\n }\n );\n});\nSeparator.displayName = NAME;\nfunction isValidOrientation(orientation) {\n return ORIENTATIONS.includes(orientation);\n}\nvar Root = Separator;\nexport {\n Root,\n Separator\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from 'react'\nimport { ComponentPropsWithoutRef, ElementRef, forwardRef } from 'react'\n\nimport * as SeparatorPrimitive from '@radix-ui/react-separator'\nimport { cn } from '@utils/cn'\n\nconst Separator = forwardRef<\n ElementRef<typeof SeparatorPrimitive.Root>,\n ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn('shrink-0 bg-border', orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]', className)}\n {...props}\n />\n))\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n","import { HTMLAttributes } from 'react'\n\nimport { cn } from '@utils/cn'\n\nfunction Skeleton({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('animate-pulse rounded-md bg-primary/10', className)} {...props} />\n}\n\nexport { Skeleton }\n","import { useEffect, useState } from 'react'\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = useState<boolean | undefined>(undefined)\n\n useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener('change', onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener('change', onChange)\n }, [])\n\n return !!isMobile\n}\n","import {\n ComponentProps,\n ComponentPropsWithoutRef,\n createContext,\n CSSProperties,\n ElementRef,\n forwardRef,\n ReactElement,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState\n} from 'react'\n\nimport { Button, Icon, Input, ScrollArea, Sheet, Tooltip } from '@/components'\nimport { Slot } from '@radix-ui/react-slot'\nimport { cn } from '@utils/cn'\nimport { cva, VariantProps } from 'class-variance-authority'\n\nimport { Separator } from './separator'\nimport { Skeleton } from './skeleton'\nimport { useIsMobile } from './use-is-mobile'\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar:state'\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = '220px'\nconst SIDEBAR_WIDTH_MOBILE = '18rem'\nconst SIDEBAR_WIDTH_ICON = '3rem'\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b'\n\ntype SidebarContext = {\n state: 'expanded' | 'collapsed'\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = createContext<SidebarContext | null>(null)\n\nfunction useSidebar() {\n const context = useContext(SidebarContext)\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.')\n }\n\n return context\n}\n\nconst SidebarProvider = forwardRef<\n HTMLDivElement,\n ComponentProps<'div'> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n }\n>(({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }, ref) => {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = useCallback(() => {\n return isMobile ? setOpenMobile(open => !open) : setOpen(open => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed'\n\n const contextValue = useMemo<SidebarContext>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <Tooltip.Provider delayDuration={0}>\n <div\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style\n } as CSSProperties\n }\n className={cn('group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar', className)}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n </Tooltip.Provider>\n </SidebarContext.Provider>\n )\n})\nSidebarProvider.displayName = 'SidebarProvider'\n\nconst SidebarRoot = forwardRef<\n HTMLDivElement,\n ComponentProps<'div'> & {\n side?: 'left' | 'right'\n variant?: 'sidebar' | 'floating' | 'inset'\n collapsible?: 'offcanvas' | 'icon' | 'none'\n }\n>(({ side = 'left', variant = 'sidebar', collapsible = 'offcanvas', className, children, ...props }, ref) => {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === 'none') {\n return (\n <div\n className={cn('flex h-full w-[--sidebar-width] flex-col bg-sidebar-background-1', className)}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet.Root open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <Sheet.Content\n data-sidebar=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar-background-1 w-[--sidebar-width] p-0 [&>button]:hidden\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE\n } as CSSProperties\n }\n side={side}\n >\n <div className=\"flex size-full flex-col\">{children}</div>\n </Sheet.Content>\n </Sheet.Root>\n )\n }\n\n return (\n <div\n ref={ref}\n className={cn('group peer hidden md:block', className)}\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n 'duration-200 relative h-svh w-[--sidebar-width] bg-transparent transition-[width] ease-linear',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]'\n : 'group-data-[collapsible=icon]:w-[--sidebar-width-icon]'\n )}\n />\n <div\n className={cn(\n 'bg-sidebar-background-1 border-sidebar-border-1 duration-200 fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] ease-linear md:flex',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]'\n : 'group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l',\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n className=\"group-data-[variant=floating]:border-sidebar-border flex size-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n})\nSidebarRoot.displayName = 'SidebarRoot'\n\nconst SidebarTrigger = forwardRef<ElementRef<typeof Button>, ComponentProps<typeof Button>>(\n ({ className, onClick, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn('h-7 w-7 focus:ring-0 focus-visible:outline-none', className)}\n onClick={event => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <Icon name=\"sidebar-left\" />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n }\n)\nSidebarTrigger.displayName = 'SidebarTrigger'\n\nconst SidebarRail = forwardRef<HTMLButtonElement, ComponentProps<'button'>>(({ className, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n ref={ref}\n data-sidebar=\"rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'absolute bg-transparent inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex',\n '[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n className\n )}\n {...props}\n />\n )\n})\nSidebarRail.displayName = 'SidebarRail'\n\nconst SidebarInset = forwardRef<HTMLDivElement, ComponentProps<'main'>>(({ className, ...props }, ref) => {\n const { open, isMobile } = useSidebar()\n\n return (\n <main\n ref={ref}\n className={cn(\n 'relative flex min-h-screen flex-1 flex-col main-page-content-background',\n 'peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow transition-[max-width] ease-linear duration-200',\n className\n )}\n style={{ maxWidth: !isMobile && open ? `calc(100vw - ${SIDEBAR_WIDTH})` : '100vw' }}\n {...props}\n />\n )\n})\nSidebarInset.displayName = 'SidebarInset'\n\nconst SidebarInput = forwardRef<ElementRef<typeof Input>, ComponentProps<typeof Input>>(\n ({ className, ...props }, ref) => {\n return (\n <Input\n ref={ref}\n data-sidebar=\"input\"\n className={cn(\n 'h-8 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring',\n className\n )}\n {...props}\n />\n )\n }\n)\nSidebarInput.displayName = 'SidebarInput'\n\nconst SidebarHeader = forwardRef<HTMLDivElement, ComponentProps<'div'>>(({ className, ...props }, ref) => {\n return <div ref={ref} data-sidebar=\"header\" className={cn('flex flex-col gap-2 px-2.5', className)} {...props} />\n})\nSidebarHeader.displayName = 'SidebarHeader'\n\nconst SidebarFooter = forwardRef<HTMLDivElement, ComponentProps<'div'>>(({ className, ...props }, ref) => {\n return <div ref={ref} data-sidebar=\"footer\" className={cn('flex flex-col gap-2 px-2 py-3', className)} {...props} />\n})\nSidebarFooter.displayName = 'SidebarFooter'\n\nconst SidebarSeparator = forwardRef<ElementRef<typeof Separator>, ComponentProps<typeof Separator>>(\n ({ className, ...props }, ref) => {\n return (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn('mx-2 w-auto bg-sidebar-border', className)}\n {...props}\n />\n )\n }\n)\nSidebarSeparator.displayName = 'SidebarSeparator'\n\nconst SidebarContent = forwardRef<HTMLDivElement, ComponentProps<'div'>>(({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n 'flex min-h-0 flex-1 flex-col gap-2 overflow-hidden group-data-[collapsible=icon]:overflow-hidden',\n className\n )}\n {...props}\n >\n <ScrollArea scrollThumbClassName=\"bg-sidebar-background-8\">{children}</ScrollArea>\n </div>\n )\n})\nSidebarContent.displayName = 'SidebarContent'\n\nconst SidebarGroup = forwardRef<HTMLDivElement, ComponentProps<'div'>>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn('relative flex w-full min-w-0 flex-col px-2.5 py-2 border-sidebar-border-1', className)}\n {...props}\n />\n )\n})\nSidebarGroup.displayName = 'SidebarGroup'\n\nconst SidebarGroupLabel = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<'div'> & { asChild?: boolean }>(\n ({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'div'\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n 'duration-200 flex h-8 shrink-0 items-center rounded-md px-2 text-xs text-sidebar-foreground-5 outline-none ring-sidebar-ring transition-[margin,opa] ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',\n className\n )}\n {...props}\n />\n )\n }\n)\nSidebarGroupLabel.displayName = 'SidebarGroupLabel'\n\nconst SidebarGroupAction = forwardRef<HTMLButtonElement, ComponentPropsWithoutRef<'button'> & { asChild?: boolean }>(\n ({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n 'absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 after:md:hidden',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n }\n)\nSidebarGroupAction.displayName = 'SidebarGroupAction'\n\nconst SidebarGroupContent = forwardRef<HTMLDivElement, ComponentProps<'div'>>(({ className, ...props }, ref) => (\n <div ref={ref} data-sidebar=\"group-content\" className={cn('w-full text-sm', className)} {...props} />\n))\nSidebarGroupContent.displayName = 'SidebarGroupContent'\n\nconst SidebarMenu = forwardRef<HTMLUListElement, ComponentProps<'ul'>>(({ className, ...props }, ref) => (\n <ul ref={ref} data-sidebar=\"menu\" className={cn('flex w-full min-w-0 flex-col gap-0.5', className)} {...props} />\n))\nSidebarMenu.displayName = 'SidebarMenu'\n\nconst SidebarMenuItem = forwardRef<HTMLLIElement, ComponentProps<'li'>>(({ className, ...props }, ref) => (\n <li ref={ref} data-sidebar=\"menu-item\" className={cn('group/menu-item relative', className)} {...props} />\n))\nSidebarMenuItem.displayName = 'SidebarMenuItem'\n\nconst sidebarMenuButtonVariants = cva(\n 'peer/menu-button group-hover/menu-item:bg-sidebar-background-3 data-[active=true]:bg-sidebar-background-3 data-[state=open]:hover:bg-sidebar-background-3 flex w-full cursor-pointer items-center gap-2.5 overflow-hidden rounded p-2 text-left text-sm outline-none transition-[width,height,padding] disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:font-medium group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:shrink-0',\n {\n variants: {\n variant: {\n default: '',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]'\n },\n size: {\n default: 'h-8 text-sm',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-sm group-data-[collapsible=icon]:!p-0'\n }\n },\n defaultVariants: {\n variant: 'default',\n size: 'default'\n }\n }\n)\n\nconst SidebarMenuButton = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<'button'> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | ComponentProps<typeof Tooltip.Content>\n } & VariantProps<typeof sidebarMenuButtonVariants>\n>(({ asChild = false, isActive = false, variant = 'default', size = 'default', tooltip, className, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button'\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === 'string') {\n tooltip = {\n children: tooltip\n }\n }\n\n return (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>{button}</Tooltip.Trigger>\n <Tooltip.Content side=\"right\" align=\"center\" hidden={state !== 'collapsed' || isMobile} {...tooltip} />\n </Tooltip.Root>\n )\n})\nSidebarMenuButton.displayName = 'SidebarMenuButton'\n\nconst SidebarMenuItemText = forwardRef<\n HTMLDivElement,\n {\n icon?: ReactElement<SVGSVGElement>\n text: string\n className?: string\n active?: boolean\n }\n>(({ icon, text, className, active = false, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(className, 'flex items-center select-none gap-x-2 pl-2.5', { 'gap-x-0': !icon })}\n {...props}\n >\n {icon && (\n <div\n className={cn(\n 'text-sidebar-icon-3 group-hover/menu-item:text-sidebar-icon-1 relative z-10 flex h-3 w-3 min-w-3 items-center duration-100 ease-in-out',\n { 'text-sidebar-icon-1': !!active }\n )}\n >\n {!!active && (\n <span className=\"bg-navbar-item-gradient absolute left-1/2 top-1/2 z-[-1] size-7 -translate-x-1/2 -translate-y-1/2\" />\n )}\n {icon}\n </div>\n )}\n <span\n className={cn(\n 'font-medium text-sidebar-foreground-2 group-hover/menu-item:text-sidebar-foreground-1 z-10 text-left duration-100 ease-in-out',\n { 'text-sidebar-foreground-1': active }\n )}\n >\n {text}\n </span>\n </div>\n )\n})\nSidebarMenuItemText.displayName = 'SidebarMenuItemText'\n\nconst SidebarMenuAction = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<'button'> & {\n asChild?: boolean\n showOnHover?: boolean\n }\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n 'absolute right-3 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 after:md:hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n {\n 'opacity-0 group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0':\n showOnHover\n },\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuAction.displayName = 'SidebarMenuAction'\n\nconst SidebarMenuBadge = forwardRef<HTMLDivElement, ComponentProps<'div'>>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"menu-badge\"\n className={cn(\n 'absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground select-none pointer-events-none',\n 'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n))\nSidebarMenuBadge.displayName = 'SidebarMenuBadge'\n\nconst SidebarMenuSkeleton = forwardRef<\n HTMLDivElement,\n ComponentProps<'div'> & {\n showIcon?: boolean\n }\n>(({ className, showIcon = false, ...props }, ref) => {\n // Random width between 50 to 90%.\n const width = useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n }, [])\n\n return (\n <div\n ref={ref}\n data-sidebar=\"menu-skeleton\"\n className={cn('rounded-md h-8 flex gap-2 px-2 items-center', className)}\n {...props}\n >\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\n <Skeleton\n className=\"h-4 max-w-[--skeleton-width] flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width\n } as CSSProperties\n }\n />\n </div>\n )\n})\nSidebarMenuSkeleton.displayName = 'SidebarMenuSkeleton'\n\nconst SidebarMenuSub = forwardRef<HTMLUListElement, ComponentProps<'ul'>>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu-sub\"\n className={cn(\n 'mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n))\nSidebarMenuSub.displayName = 'SidebarMenuSub'\n\nconst SidebarMenuSubItem = forwardRef<HTMLLIElement, ComponentProps<'li'>>(({ ...props }, ref) => (\n <li ref={ref} {...props} />\n))\nSidebarMenuSubItem.displayName = 'SidebarMenuSubItem'\n\nconst SidebarMenuSubButton = forwardRef<\n HTMLAnchorElement,\n ComponentPropsWithoutRef<'a'> & {\n asChild?: boolean\n size?: 'sm' | 'md'\n isActive?: boolean\n }\n>(({ asChild = false, size = 'md', isActive, className, ...props }, ref) => {\n const Comp = asChild ? Slot : 'a'\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground',\n 'data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuSubButton.displayName = 'SidebarMenuSubButton'\n\nconst Sidebar = {\n Root: SidebarRoot,\n Content: SidebarContent,\n Footer: SidebarFooter,\n Group: SidebarGroup,\n GroupAction: SidebarGroupAction,\n GroupContent: SidebarGroupContent,\n GroupLabel: SidebarGroupLabel,\n Header: SidebarHeader,\n Input: SidebarInput,\n Inset: SidebarInset,\n Menu: SidebarMenu,\n MenuAction: SidebarMenuAction,\n MenuBadge: SidebarMenuBadge,\n MenuButton: SidebarMenuButton,\n MenuItemText: SidebarMenuItemText,\n MenuItem: SidebarMenuItem,\n MenuSkeleton: SidebarMenuSkeleton,\n MenuSub: SidebarMenuSubItem,\n MenuSubButton: SidebarMenuSubButton,\n MenuSubItem: SidebarMenuSubItem,\n Provider: SidebarProvider,\n Rail: SidebarRail,\n Separator: SidebarSeparator,\n Trigger: SidebarTrigger\n}\n\nexport { Sidebar, useSidebar }\n","import { FormHTMLAttributes, ReactNode } from 'react'\n\nimport { Button, Input, Label } from '@/components'\nimport { Icon } from '@components/icon'\nimport { Sidebar } from '@components/sidebar/sidebar'\nimport { TFunction } from 'i18next'\n\nimport { useSearch } from './search-context'\n\ninterface SidebarSearchProps extends FormHTMLAttributes<HTMLFormElement> {\n logo: ReactNode\n t: TFunction\n}\n\nexport function SidebarSearch(props: SidebarSearchProps) {\n const { t } = props\n const searchContext = useSearch()\n\n if (!searchContext) {\n console.warn('⚠️ Search context is null, returning early.')\n return null\n }\n\n const { setIsOpen } = searchContext\n\n return (\n <form {...props}>\n {props.logo}\n <Sidebar.Group className=\"p-0\">\n <Sidebar.GroupContent className=\"relative\">\n <Label htmlFor=\"search\" className=\"sr-only\">\n {t('component:navbar.search', 'Search')}\n </Label>\n <Input\n id=\"search\"\n placeholder=\"Search\"\n className=\"cursor-pointer pl-[30px]\"\n onClick={() => setIsOpen(true)}\n autoComplete=\"off\"\n spellCheck={false}\n onFocus={e => e.target.blur()}\n theme=\"sidebar\"\n />\n <Icon\n className=\"text-sidebar-foreground-4 pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 select-none\"\n name=\"search\"\n size={12}\n />\n <Button\n variant=\"custom\"\n size=\"icon\"\n className=\"border-sidebar-border-5 bg-sidebar-background-9 text-sidebar-foreground-3 pointer-events-none absolute right-1.5 top-1/2 h-5 -translate-y-1/2 select-none rounded-sm border p-0 px-1.5\"\n >\n <span className=\"text-12 size-full\">⌘K</span>\n </Button>\n </Sidebar.GroupContent>\n </Sidebar.Group>\n </form>\n )\n}\n","import { useRouterContext } from '@/context'\nimport { TypesUser } from '@/types'\nimport { Avatar } from '@components/avatar'\nimport { DropdownMenu } from '@components/dropdown-menu'\nimport { Icon } from '@components/icon'\nimport { Sidebar } from '@components/sidebar/sidebar'\nimport { getInitials } from '@utils/stringUtils'\nimport { TFunction } from 'i18next'\n\nconst UserAvatar = ({ user }: Pick<UserProps, 'user'>) => {\n const userName = user?.display_name || user?.uid || ''\n\n return (\n <>\n <Avatar.Root className=\"size-8 rounded-lg\">\n {!!user?.url && <Avatar.Image src={user.url} alt=\"user\" />}\n <Avatar.Fallback className=\"bg-sidebar-background-5 text-sidebar-foreground-1 rounded-lg\">\n {getInitials(userName)}\n </Avatar.Fallback>\n </Avatar.Root>\n <div className=\"text-13 grid flex-1 text-left leading-tight\">\n <span className=\"text-sidebar-foreground-1 truncate font-medium\">{userName}</span>\n <span className=\"text-sidebar-foreground-4 truncate\">{user?.email}</span>\n </div>\n </>\n )\n}\n\ninterface UserProps {\n user?: TypesUser\n openThemeDialog: () => void\n openLanguageDialog: () => void\n handleLogOut: () => void\n t: TFunction\n}\n\nexport function User({ user, openThemeDialog, openLanguageDialog, handleLogOut, t }: UserProps) {\n const { Link } = useRouterContext()\n\n return (\n <Sidebar.Menu>\n <Sidebar.MenuItem>\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <Sidebar.MenuButton size=\"lg\" className=\"data-[state=open]:bg-sidebar-background-2\">\n <UserAvatar user={user} />\n </Sidebar.MenuButton>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content\n className=\"border-sidebar-border-3 bg-sidebar-background-4 w-[--radix-dropdown-menu-trigger-width] min-w-56 !rounded-lg\"\n side=\"right\"\n align=\"end\"\n sideOffset={4}\n >\n <DropdownMenu.Label className=\"p-0 font-normal\">\n <div className=\"flex items-center gap-2 px-1 py-1.5\">\n <UserAvatar user={user} />\n </div>\n </DropdownMenu.Label>\n <DropdownMenu.Separator className=\"bg-sidebar-border-1\" />\n <DropdownMenu.Group>\n <DropdownMenu.Item className=\"data-[highlighted]:bg-sidebar-background-2\" asChild>\n <Link\n to=\"/profile-settings\"\n className=\"text-sidebar-foreground-6 data-[highlighted]:text-sidebar-foreground-1 group gap-2.5\"\n >\n <Icon\n className=\"text-sidebar-icon-3 group-hover:text-sidebar-icon-1 transition-colors\"\n name=\"settings-1\"\n size={12}\n />\n <span>{t('component:navbar.settings', 'Settings')}</span>\n </Link>\n </DropdownMenu.Item>\n <DropdownMenu.Item\n className=\"text-sidebar-foreground-6 data-[highlighted]:bg-sidebar-background-2 data-[highlighted]:text-sidebar-foreground-1 group gap-2.5\"\n onClick={openThemeDialog}\n >\n <Icon\n className=\"text-sidebar-icon-3 group-hover:text-sidebar-icon-1 transition-colors\"\n name=\"paint\"\n size={12}\n />\n <span>{t('component:navbar.appearence', 'Appearance')}</span>\n </DropdownMenu.Item>\n <DropdownMenu.Item\n className=\"text-sidebar-foreground-6 data-[highlighted]:bg-sidebar-background-2 data-[highlighted]:text-sidebar-foreground-1 group gap-2.5\"\n onClick={openLanguageDialog}\n >\n <Icon\n className=\"text-sidebar-icon-3 group-hover:text-sidebar-icon-1 transition-colors\"\n name=\"language\"\n size={12}\n />\n <span>{t('component:navbar.language', 'Language')}</span>\n </DropdownMenu.Item>\n <DropdownMenu.Separator className=\"bg-sidebar-border-1\" />\n <DropdownMenu.Item\n className=\"text-sidebar-foreground-6 data-[highlighted]:bg-sidebar-background-2 data-[highlighted]:text-sidebar-foreground-1 group gap-2.5\"\n onClick={handleLogOut}\n >\n <Icon\n className=\"text-sidebar-icon-3 group-hover:text-sidebar-icon-1 transition-colors\"\n name=\"logOut\"\n size={12}\n />\n <span>{t('component:navbar.logout', 'Logout')}</span>\n </DropdownMenu.Item>\n </DropdownMenu.Group>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n </Sidebar.MenuItem>\n </Sidebar.Menu>\n )\n}\n","import { useState } from 'react'\n\nimport {\n Icon,\n LanguageCode,\n LanguageDialog,\n LanguageInterface,\n languages,\n Sidebar,\n Spacer,\n ThemeDialog\n} from '@/components'\nimport { ContentStyleType, useRouterContext, useTheme } from '@/context'\nimport { TypesUser } from '@/types'\nimport { TranslationStore } from '@/views'\n\nimport { SidebarItem } from './sidebar-item'\nimport { SidebarSearchLegacy } from './sidebar-search-legacy'\nimport { SearchProvider } from './sidebar-search/search-context'\nimport { SidebarSearch } from './sidebar-search/sidebar-search'\nimport { User } from './sidebar-user'\nimport { NavbarItemType } from './types'\n\ninterface SidebarProps {\n recentMenuItems: NavbarItemType[]\n pinnedMenuItems: NavbarItemType[]\n showMoreMenu: boolean\n showSettingMenu: boolean\n handleMoreMenu: () => void\n handleSettingsMenu: () => void\n currentUser: TypesUser | undefined\n handleCustomNav: () => void\n handleLogOut: () => void\n handleChangePinnedMenuItem: (item: NavbarItemType, pin: boolean) => void\n handleRemoveRecentMenuItem: (item: NavbarItemType) => void\n useTranslationStore: () => TranslationStore\n showNewSearch?: boolean\n}\n\nexport const AppSidebar = ({\n useTranslationStore,\n handleChangePinnedMenuItem,\n handleRemoveRecentMenuItem,\n pinnedMenuItems,\n recentMenuItems,\n currentUser,\n handleMoreMenu,\n handleSettingsMenu,\n handleCustomNav,\n handleLogOut,\n showNewSearch\n}: SidebarProps) => {\n const { t, i18n, changeLanguage } = useTranslationStore()\n const { theme, setTheme, setInset, isInset } = useTheme()\n const { Link, navigate } = useRouterContext()\n\n const [openThemeDialog, setOpenThemeDialog] = useState(false)\n const [openLanguageDialog, setOpenLanguageDialog] = useState(false)\n\n const handleLanguageChange = (language: LanguageInterface) => {\n changeLanguage(language.code.toLowerCase())\n }\n\n const handleLanguageSave = (language: LanguageInterface) => {\n changeLanguage(language.code.toLowerCase())\n setOpenLanguageDialog(false)\n }\n\n const handleLanguageCancel = () => {\n setOpenLanguageDialog(false)\n }\n\n const onInsetChange = (style: ContentStyleType) => setInset(style === ContentStyleType.Inset)\n\n return (\n <>\n <Sidebar.Root className=\"z-20\">\n <Sidebar.Header>\n {showNewSearch ? (\n <SearchProvider t={t}>\n <SidebarSearch\n className=\"pb-3 pt-1.5\"\n t={t}\n logo={\n <Link to=\"/\" className=\"flex h-[58px] items-center justify-start gap-0.5 pl-1\">\n <Icon name=\"harness\" size={18} className=\"text-sidebar-foreground-accent\" />\n <Icon name=\"harness-logo-text\" width={65} height={15} className=\"text-sidebar-foreground-1 mb-px\" />\n </Link>\n }\n />\n </SearchProvider>\n ) : (\n <SidebarSearchLegacy\n t={t}\n logo={\n <Link className=\"flex items-center gap-0.5\" to=\"/\">\n <Icon name=\"harness\" size={18} className=\"text-sidebar-foreground-accent\" />\n <Icon name=\"harness-logo-text\" width={65} height={15} className=\"text-sidebar-foreground-1 mb-px\" />\n </Link>\n }\n />\n )}\n </Sidebar.Header>\n <Sidebar.Content>\n <Sidebar.Group>\n <Sidebar.GroupContent>\n <Sidebar.Menu>\n {pinnedMenuItems.map((item, index) => (\n <SidebarItem\n item={item}\n key={index}\n handleChangePinnedMenuItem={handleChangePinnedMenuItem}\n handleRemoveRecentMenuItem={handleRemoveRecentMenuItem}\n handleCustomNav={handleCustomNav}\n t={t}\n />\n ))}\n\n <Sidebar.MenuItem>\n <Sidebar.MenuButton asChild onClick={handleMoreMenu}>\n <Sidebar.MenuItemText\n text={t('component:navbar.more', 'More')}\n icon={<Icon name=\"ellipsis\" size={12} />}\n />\n </Sidebar.MenuButton>\n </Sidebar.MenuItem>\n </Sidebar.Menu>\n </Sidebar.GroupContent>\n </Sidebar.Group>\n\n {!!recentMenuItems.length && (\n <Sidebar.Group title={t('component:navbar.recent', 'Recent')} className=\"border-t pt-2.5\">\n <Sidebar.GroupLabel>{t('component:navbar.recent', 'Recent')}</Sidebar.GroupLabel>\n <Spacer size={2} />\n <Sidebar.GroupContent>\n <Sidebar.Menu>\n {recentMenuItems.map(item => (\n <SidebarItem\n isRecent\n key={item.id}\n item={item}\n handleChangePinnedMenuItem={handleChangePinnedMenuItem}\n handleRemoveRecentMenuItem={handleRemoveRecentMenuItem}\n handleCustomNav={handleCustomNav}\n t={t}\n />\n ))}\n </Sidebar.Menu>\n </Sidebar.GroupContent>\n </Sidebar.Group>\n )}\n\n <Sidebar.Group className=\"border-t\">\n <Sidebar.GroupContent>\n <Sidebar.Menu>\n {!!currentUser?.admin && (\n <Sidebar.MenuItem>\n <Sidebar.MenuButton asChild onClick={() => navigate('/admin/default-settings')}>\n <Sidebar.MenuItemText\n text={t('component:navbar.user-management', 'User Management')}\n icon={<Icon name=\"account\" size={12} />}\n />\n </Sidebar.MenuButton>\n </Sidebar.MenuItem>\n )}\n <Sidebar.MenuItem>\n <Sidebar.MenuButton asChild onClick={handleSettingsMenu}>\n <Sidebar.MenuItemText\n text={t('component:navbar.settings', 'Settings')}\n icon={<Icon name=\"settings-1\" size={12} />}\n />\n </Sidebar.MenuButton>\n </Sidebar.MenuItem>\n </Sidebar.Menu>\n </Sidebar.GroupContent>\n </Sidebar.Group>\n </Sidebar.Content>\n <Sidebar.Footer className=\"border-sidebar-border-1 border-t\">\n <User\n user={currentUser}\n openThemeDialog={() => setOpenThemeDialog(true)}\n openLanguageDialog={() => setOpenLanguageDialog(true)}\n handleLogOut={handleLogOut}\n t={t}\n />\n </Sidebar.Footer>\n <Sidebar.Rail />\n </Sidebar.Root>\n <ThemeDialog\n theme={theme}\n isInset={isInset}\n setTheme={setTheme}\n open={openThemeDialog}\n onOpenChange={() => setOpenThemeDialog(false)}\n onInsetChange={onInsetChange}\n />\n <LanguageDialog\n supportedLanguages={languages}\n defaultLanguage={i18n.language as LanguageCode}\n open={openLanguageDialog}\n onOpenChange={() => setOpenLanguageDialog(false)}\n onChange={handleLanguageChange}\n onCancel={handleLanguageCancel}\n onSave={handleLanguageSave}\n />\n </>\n )\n}\n","import { IconProps } from '@/components'\n\nexport enum MenuGroupTypes {\n GENERAL = 'general',\n SETTINGS = 'settings'\n}\n\ninterface MenuGroupType {\n groupId: number | string\n title: string\n type: MenuGroupTypes\n items: NavbarItemType[]\n}\n\ntype NavbarItemIdType = number | string\n\ninterface NavbarItemType {\n id: NavbarItemIdType\n title: string\n iconName?: IconProps['name']\n description?: string\n to: string\n permanentlyPinned?: boolean\n}\n\nexport enum UserMenuKeys {\n ACCOUNT = 'account',\n THEME = 'theme',\n CUSTOM_NAV = 'customNavigation',\n ADMINISTRATION = 'administration',\n LOG_OUT = 'logOut'\n}\n\ninterface UserMenuItemType {\n key: UserMenuKeys\n iconName: IconProps['name']\n title: string\n to: string | null\n isSeparated: boolean\n}\n\ninterface NavState {\n pinnedMenu: NavbarItemType[]\n recentMenu: NavbarItemType[]\n setPinned: (items: NavbarItemType, pin: boolean) => void\n setRecent: (items: NavbarItemType, remove?: boolean) => void\n setNavLinks: (links: { pinnedMenu?: NavbarItemType[]; recentMenu?: NavbarItemType[] }) => void\n}\n\nexport type { MenuGroupType, NavbarItemType, UserMenuItemType, NavbarItemIdType, NavState }\n","import { Label, Select } from '@/components'\nimport { ColorType, ContrastType, FullTheme, ModeType } from '@/context'\n\nexport function ColorSelect({\n setTheme,\n mode,\n color,\n contrast\n}: {\n setTheme: (theme: FullTheme) => void\n color: ColorType\n mode: ModeType\n contrast: ContrastType\n}) {\n return (\n <div>\n <Label className=\"text-xs\">Color</Label>\n <Select.Root\n name=\"color\"\n placeholder=\"Select a color theme\"\n value={color}\n onValueChange={(color: ColorType) => {\n setTheme(`${mode}-${color}-${contrast}`)\n }}\n >\n <Select.Content defaultValue={color}>\n <Select.Item value={ColorType.Standard}>Standard</Select.Item>\n <Select.Separator />\n <Select.Group>\n <Select.Label>Vision Assistive</Select.Label>\n <Select.Item value={ColorType.Tritanopia}>Tritanopia</Select.Item>\n <Select.Item value={ColorType.ProtanopiaAndDeuteranopia}>Protanopia & Deuteranopia</Select.Item>\n </Select.Group>\n </Select.Content>\n </Select.Root>\n </div>\n )\n}\n","import { Label, Select } from '@/components'\nimport { ColorType, ContrastType, FullTheme, ModeType } from '@/context'\n\nexport function ContrastSelect({\n setTheme,\n mode,\n color,\n contrast\n}: {\n setTheme: (theme: FullTheme) => void\n mode: ModeType\n color: ColorType\n contrast: ContrastType\n}) {\n return (\n <div>\n <Label className=\"text-xs\">Contrast</Label>\n <Select.Root\n name=\"contrast\"\n placeholder=\"Select a theme contrast\"\n value={contrast}\n onValueChange={(contrast: ContrastType) => {\n setTheme(`${mode}-${color}-${contrast}`)\n }}\n >\n <Select.Content defaultValue={contrast}>\n <Select.Item value={ContrastType.Standard}>Standard</Select.Item>\n <Select.Item value={ContrastType.Low}>Low</Select.Item>\n <Select.Item value={ContrastType.High}>High</Select.Item>\n </Select.Content>\n </Select.Root>\n </div>\n )\n}\n","import { Label, Select } from '@/components'\nimport { ColorType, ContrastType, FullTheme, ModeType } from '@/context'\n\nexport function ModeSelect({\n setTheme,\n mode,\n color,\n contrast\n}: {\n setTheme: (theme: FullTheme) => void\n mode: ModeType\n color: ColorType\n contrast: ContrastType\n}) {\n return (\n <div>\n <Label className=\"text-xs\">Mode</Label>\n <Select.Root\n name=\"mode\"\n placeholder=\"Select a theme mode\"\n value={mode}\n onValueChange={(mode: ModeType) => {\n setTheme(`${mode}-${color}-${contrast}`)\n }}\n >\n <Select.Content defaultValue={mode}>\n <Select.Item value={ModeType.Light}>Light</Select.Item>\n <Select.Item value={ModeType.Dark}>Dark</Select.Item>\n <Select.Item value={ModeType.System}>System</Select.Item>\n </Select.Content>\n </Select.Root>\n </div>\n )\n}\n","import { ColorType, ContrastType, FullTheme, ModeType } from '@/context'\n\nexport function getModeColorContrastFromFullTheme(theme?: FullTheme) {\n if (theme) {\n const modeColorContrast = theme.split('-')\n\n if (modeColorContrast.length === 3) {\n return {\n mode: modeColorContrast[0] as ModeType,\n color: modeColorContrast[1] as ColorType,\n contrast: modeColorContrast[2] as ContrastType\n }\n }\n }\n\n return { mode: ModeType.Dark, color: ColorType.Standard, contrast: ContrastType.Standard }\n}\n","// ToDo: Need to be reviewed by the XD team\n\nimport { useMemo } from 'react'\n\nimport { useTheme } from '@/context'\n\nimport { ColorSelect } from './color-select'\nimport { ContrastSelect } from './contrast-select'\nimport { ModeSelect } from './mode-select'\nimport { getModeColorContrastFromFullTheme } from './utils'\n\nfunction ThemeSelector() {\n // theme will be structured like dark-std-std which represents mode-color-contrast\n const { theme, setTheme } = useTheme()\n const { mode, color, contrast } = useMemo(() => getModeColorContrastFromFullTheme(theme), [theme])\n\n return (\n <div className=\"flex w-full items-center space-x-5\">\n <ModeSelect setTheme={setTheme} mode={mode} color={color} contrast={contrast} />\n <ColorSelect setTheme={setTheme} mode={mode} color={color} contrast={contrast} />\n <ContrastSelect setTheme={setTheme} mode={mode} color={color} contrast={contrast} />\n </div>\n )\n}\n\nexport { ThemeSelector }\n","import { ReactNode, useEffect, useState } from 'react'\n\nimport type { ToastActionElement, ToastProps } from './toast'\n\nconst TOAST_LIMIT = 3\nconst TOAST_REMOVE_DELAY = 10000\n\ntype ToasterToast = ToastProps & {\n id: string\n title?: ReactNode\n description?: ReactNode\n action?: ToastActionElement\n}\n\nlet count = 0\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER\n return count.toString()\n}\n\ntype Action =\n | { type: 'ADD_TOAST'; toast: ToasterToast }\n | { type: 'UPDATE_TOAST'; toast: Partial<ToasterToast> }\n | { type: 'DISMISS_TOAST'; toastId?: ToasterToast['id'] }\n | { type: 'REMOVE_TOAST'; toastId?: ToasterToast['id'] }\n\ninterface State {\n toasts: ToasterToast[]\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>()\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId)\n dispatch({\n type: 'REMOVE_TOAST',\n toastId: toastId\n })\n }, TOAST_REMOVE_DELAY)\n\n toastTimeouts.set(toastId, timeout)\n}\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case 'ADD_TOAST':\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT)\n }\n\n case 'UPDATE_TOAST':\n return {\n ...state,\n toasts: state.toasts.map(t => (t.id === action.toast.id ? { ...t, ...action.toast } : t))\n }\n\n case 'DISMISS_TOAST': {\n const { toastId } = action\n\n if (toastId) {\n addToRemoveQueue(toastId)\n } else {\n state.toasts.forEach(toast => {\n addToRemoveQueue(toast.id)\n })\n }\n\n return {\n ...state,\n toasts: state.toasts.map(t => (t.id === toastId || toastId === undefined ? { ...t, open: false } : t))\n }\n }\n\n case 'REMOVE_TOAST':\n if (action.toastId === undefined) {\n return { ...state, toasts: [] }\n }\n return { ...state, toasts: state.toasts.filter(t => t.id !== action.toastId) }\n }\n}\n\nconst listeners: Array<(state: State) => void> = []\n\nlet memoryState: State = { toasts: [] }\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action)\n listeners.forEach(listener => {\n listener(memoryState)\n })\n}\n\ntype Toast = Omit<ToasterToast, 'id'>\n\nfunction toast({ ...props }: Toast) {\n const id = genId()\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: 'UPDATE_TOAST',\n toast: { ...props, id }\n })\n const dismiss = () => dispatch({ type: 'DISMISS_TOAST', toastId: id })\n\n dispatch({\n type: 'ADD_TOAST',\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: open => {\n if (!open) dismiss()\n }\n }\n })\n\n return {\n id,\n dismiss,\n update\n }\n}\n\nfunction useToast() {\n const [state, setState] = useState<State>(memoryState)\n\n useEffect(() => {\n listeners.push(setState)\n return () => {\n const index = listeners.indexOf(setState)\n if (index > -1) {\n listeners.splice(index, 1)\n }\n }\n }, [state])\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: 'DISMISS_TOAST', toastId }),\n update: (props: ToasterToast) => dispatch({ type: 'UPDATE_TOAST', toast: { ...props } })\n }\n}\n\nexport { useToast, toast }\n","\"use client\";\n\n// packages/react/toast/src/toast.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport * as DismissableLayer from \"@radix-ui/react-dismissable-layer\";\nimport { Portal } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar PROVIDER_NAME = \"ToastProvider\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(\"Toast\");\nvar [createToastContext, createToastScope] = createContextScope(\"Toast\", [createCollectionScope]);\nvar [ToastProviderProvider, useToastProviderContext] = createToastContext(PROVIDER_NAME);\nvar ToastProvider = (props) => {\n const {\n __scopeToast,\n label = \"Notification\",\n duration = 5e3,\n swipeDirection = \"right\",\n swipeThreshold = 50,\n children\n } = props;\n const [viewport, setViewport] = React.useState(null);\n const [toastCount, setToastCount] = React.useState(0);\n const isFocusedToastEscapeKeyDownRef = React.useRef(false);\n const isClosePausedRef = React.useRef(false);\n if (!label.trim()) {\n console.error(\n `Invalid prop \\`label\\` supplied to \\`${PROVIDER_NAME}\\`. Expected non-empty \\`string\\`.`\n );\n }\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: __scopeToast, children: /* @__PURE__ */ jsx(\n ToastProviderProvider,\n {\n scope: __scopeToast,\n label,\n duration,\n swipeDirection,\n swipeThreshold,\n toastCount,\n viewport,\n onViewportChange: setViewport,\n onToastAdd: React.useCallback(() => setToastCount((prevCount) => prevCount + 1), []),\n onToastRemove: React.useCallback(() => setToastCount((prevCount) => prevCount - 1), []),\n isFocusedToastEscapeKeyDownRef,\n isClosePausedRef,\n children\n }\n ) });\n};\nToastProvider.displayName = PROVIDER_NAME;\nvar VIEWPORT_NAME = \"ToastViewport\";\nvar VIEWPORT_DEFAULT_HOTKEY = [\"F8\"];\nvar VIEWPORT_PAUSE = \"toast.viewportPause\";\nvar VIEWPORT_RESUME = \"toast.viewportResume\";\nvar ToastViewport = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeToast,\n hotkey = VIEWPORT_DEFAULT_HOTKEY,\n label = \"Notifications ({hotkey})\",\n ...viewportProps\n } = props;\n const context = useToastProviderContext(VIEWPORT_NAME, __scopeToast);\n const getItems = useCollection(__scopeToast);\n const wrapperRef = React.useRef(null);\n const headFocusProxyRef = React.useRef(null);\n const tailFocusProxyRef = React.useRef(null);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onViewportChange);\n const hotkeyLabel = hotkey.join(\"+\").replace(/Key/g, \"\").replace(/Digit/g, \"\");\n const hasToasts = context.toastCount > 0;\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n const isHotkeyPressed = hotkey.length !== 0 && hotkey.every((key) => event[key] || event.code === key);\n if (isHotkeyPressed) ref.current?.focus();\n };\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [hotkey]);\n React.useEffect(() => {\n const wrapper = wrapperRef.current;\n const viewport = ref.current;\n if (hasToasts && wrapper && viewport) {\n const handlePause = () => {\n if (!context.isClosePausedRef.current) {\n const pauseEvent = new CustomEvent(VIEWPORT_PAUSE);\n viewport.dispatchEvent(pauseEvent);\n context.isClosePausedRef.current = true;\n }\n };\n const handleResume = () => {\n if (context.isClosePausedRef.current) {\n const resumeEvent = new CustomEvent(VIEWPORT_RESUME);\n viewport.dispatchEvent(resumeEvent);\n context.isClosePausedRef.current = false;\n }\n };\n const handleFocusOutResume = (event) => {\n const isFocusMovingOutside = !wrapper.contains(event.relatedTarget);\n if (isFocusMovingOutside) handleResume();\n };\n const handlePointerLeaveResume = () => {\n const isFocusInside = wrapper.contains(document.activeElement);\n if (!isFocusInside) handleResume();\n };\n wrapper.addEventListener(\"focusin\", handlePause);\n wrapper.addEventListener(\"focusout\", handleFocusOutResume);\n wrapper.addEventListener(\"pointermove\", handlePause);\n wrapper.addEventListener(\"pointerleave\", handlePointerLeaveResume);\n window.addEventListener(\"blur\", handlePause);\n window.addEventListener(\"focus\", handleResume);\n return () => {\n wrapper.removeEventListener(\"focusin\", handlePause);\n wrapper.removeEventListener(\"focusout\", handleFocusOutResume);\n wrapper.removeEventListener(\"pointermove\", handlePause);\n wrapper.removeEventListener(\"pointerleave\", handlePointerLeaveResume);\n window.removeEventListener(\"blur\", handlePause);\n window.removeEventListener(\"focus\", handleResume);\n };\n }\n }, [hasToasts, context.isClosePausedRef]);\n const getSortedTabbableCandidates = React.useCallback(\n ({ tabbingDirection }) => {\n const toastItems = getItems();\n const tabbableCandidates = toastItems.map((toastItem) => {\n const toastNode = toastItem.ref.current;\n const toastTabbableCandidates = [toastNode, ...getTabbableCandidates(toastNode)];\n return tabbingDirection === \"forwards\" ? toastTabbableCandidates : toastTabbableCandidates.reverse();\n });\n return (tabbingDirection === \"forwards\" ? tabbableCandidates.reverse() : tabbableCandidates).flat();\n },\n [getItems]\n );\n React.useEffect(() => {\n const viewport = ref.current;\n if (viewport) {\n const handleKeyDown = (event) => {\n const isMetaKey = event.altKey || event.ctrlKey || event.metaKey;\n const isTabKey = event.key === \"Tab\" && !isMetaKey;\n if (isTabKey) {\n const focusedElement = document.activeElement;\n const isTabbingBackwards = event.shiftKey;\n const targetIsViewport = event.target === viewport;\n if (targetIsViewport && isTabbingBackwards) {\n headFocusProxyRef.current?.focus();\n return;\n }\n const tabbingDirection = isTabbingBackwards ? \"backwards\" : \"forwards\";\n const sortedCandidates = getSortedTabbableCandidates({ tabbingDirection });\n const index = sortedCandidates.findIndex((candidate) => candidate === focusedElement);\n if (focusFirst(sortedCandidates.slice(index + 1))) {\n event.preventDefault();\n } else {\n isTabbingBackwards ? headFocusProxyRef.current?.focus() : tailFocusProxyRef.current?.focus();\n }\n }\n };\n viewport.addEventListener(\"keydown\", handleKeyDown);\n return () => viewport.removeEventListener(\"keydown\", handleKeyDown);\n }\n }, [getItems, getSortedTabbableCandidates]);\n return /* @__PURE__ */ jsxs(\n DismissableLayer.Branch,\n {\n ref: wrapperRef,\n role: \"region\",\n \"aria-label\": label.replace(\"{hotkey}\", hotkeyLabel),\n tabIndex: -1,\n style: { pointerEvents: hasToasts ? void 0 : \"none\" },\n children: [\n hasToasts && /* @__PURE__ */ jsx(\n FocusProxy,\n {\n ref: headFocusProxyRef,\n onFocusFromOutsideViewport: () => {\n const tabbableCandidates = getSortedTabbableCandidates({\n tabbingDirection: \"forwards\"\n });\n focusFirst(tabbableCandidates);\n }\n }\n ),\n /* @__PURE__ */ jsx(Collection.Slot, { scope: __scopeToast, children: /* @__PURE__ */ jsx(Primitive.ol, { tabIndex: -1, ...viewportProps, ref: composedRefs }) }),\n hasToasts && /* @__PURE__ */ jsx(\n FocusProxy,\n {\n ref: tailFocusProxyRef,\n onFocusFromOutsideViewport: () => {\n const tabbableCandidates = getSortedTabbableCandidates({\n tabbingDirection: \"backwards\"\n });\n focusFirst(tabbableCandidates);\n }\n }\n )\n ]\n }\n );\n }\n);\nToastViewport.displayName = VIEWPORT_NAME;\nvar FOCUS_PROXY_NAME = \"ToastFocusProxy\";\nvar FocusProxy = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeToast, onFocusFromOutsideViewport, ...proxyProps } = props;\n const context = useToastProviderContext(FOCUS_PROXY_NAME, __scopeToast);\n return /* @__PURE__ */ jsx(\n VisuallyHidden,\n {\n \"aria-hidden\": true,\n tabIndex: 0,\n ...proxyProps,\n ref: forwardedRef,\n style: { position: \"fixed\" },\n onFocus: (event) => {\n const prevFocusedElement = event.relatedTarget;\n const isFocusFromOutsideViewport = !context.viewport?.contains(prevFocusedElement);\n if (isFocusFromOutsideViewport) onFocusFromOutsideViewport();\n }\n }\n );\n }\n);\nFocusProxy.displayName = FOCUS_PROXY_NAME;\nvar TOAST_NAME = \"Toast\";\nvar TOAST_SWIPE_START = \"toast.swipeStart\";\nvar TOAST_SWIPE_MOVE = \"toast.swipeMove\";\nvar TOAST_SWIPE_CANCEL = \"toast.swipeCancel\";\nvar TOAST_SWIPE_END = \"toast.swipeEnd\";\nvar Toast = React.forwardRef(\n (props, forwardedRef) => {\n const { forceMount, open: openProp, defaultOpen, onOpenChange, ...toastProps } = props;\n const [open = true, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange\n });\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || open, children: /* @__PURE__ */ jsx(\n ToastImpl,\n {\n open,\n ...toastProps,\n ref: forwardedRef,\n onClose: () => setOpen(false),\n onPause: useCallbackRef(props.onPause),\n onResume: useCallbackRef(props.onResume),\n onSwipeStart: composeEventHandlers(props.onSwipeStart, (event) => {\n event.currentTarget.setAttribute(\"data-swipe\", \"start\");\n }),\n onSwipeMove: composeEventHandlers(props.onSwipeMove, (event) => {\n const { x, y } = event.detail.delta;\n event.currentTarget.setAttribute(\"data-swipe\", \"move\");\n event.currentTarget.style.setProperty(\"--radix-toast-swipe-move-x\", `${x}px`);\n event.currentTarget.style.setProperty(\"--radix-toast-swipe-move-y\", `${y}px`);\n }),\n onSwipeCancel: composeEventHandlers(props.onSwipeCancel, (event) => {\n event.currentTarget.setAttribute(\"data-swipe\", \"cancel\");\n event.currentTarget.style.removeProperty(\"--radix-toast-swipe-move-x\");\n event.currentTarget.style.removeProperty(\"--radix-toast-swipe-move-y\");\n event.currentTarget.style.removeProperty(\"--radix-toast-swipe-end-x\");\n event.currentTarget.style.removeProperty(\"--radix-toast-swipe-end-y\");\n }),\n onSwipeEnd: composeEventHandlers(props.onSwipeEnd, (event) => {\n const { x, y } = event.detail.delta;\n event.currentTarget.setAttribute(\"data-swipe\", \"end\");\n event.currentTarget.style.removeProperty(\"--radix-toast-swipe-move-x\");\n event.currentTarget.style.removeProperty(\"--radix-toast-swipe-move-y\");\n event.currentTarget.style.setProperty(\"--radix-toast-swipe-end-x\", `${x}px`);\n event.currentTarget.style.setProperty(\"--radix-toast-swipe-end-y\", `${y}px`);\n setOpen(false);\n })\n }\n ) });\n }\n);\nToast.displayName = TOAST_NAME;\nvar [ToastInteractiveProvider, useToastInteractiveContext] = createToastContext(TOAST_NAME, {\n onClose() {\n }\n});\nvar ToastImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeToast,\n type = \"foreground\",\n duration: durationProp,\n open,\n onClose,\n onEscapeKeyDown,\n onPause,\n onResume,\n onSwipeStart,\n onSwipeMove,\n onSwipeCancel,\n onSwipeEnd,\n ...toastProps\n } = props;\n const context = useToastProviderContext(TOAST_NAME, __scopeToast);\n const [node, setNode] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const pointerStartRef = React.useRef(null);\n const swipeDeltaRef = React.useRef(null);\n const duration = durationProp || context.duration;\n const closeTimerStartTimeRef = React.useRef(0);\n const closeTimerRemainingTimeRef = React.useRef(duration);\n const closeTimerRef = React.useRef(0);\n const { onToastAdd, onToastRemove } = context;\n const handleClose = useCallbackRef(() => {\n const isFocusInToast = node?.contains(document.activeElement);\n if (isFocusInToast) context.viewport?.focus();\n onClose();\n });\n const startTimer = React.useCallback(\n (duration2) => {\n if (!duration2 || duration2 === Infinity) return;\n window.clearTimeout(closeTimerRef.current);\n closeTimerStartTimeRef.current = (/* @__PURE__ */ new Date()).getTime();\n closeTimerRef.current = window.setTimeout(handleClose, duration2);\n },\n [handleClose]\n );\n React.useEffect(() => {\n const viewport = context.viewport;\n if (viewport) {\n const handleResume = () => {\n startTimer(closeTimerRemainingTimeRef.current);\n onResume?.();\n };\n const handlePause = () => {\n const elapsedTime = (/* @__PURE__ */ new Date()).getTime() - closeTimerStartTimeRef.current;\n closeTimerRemainingTimeRef.current = closeTimerRemainingTimeRef.current - elapsedTime;\n window.clearTimeout(closeTimerRef.current);\n onPause?.();\n };\n viewport.addEventListener(VIEWPORT_PAUSE, handlePause);\n viewport.addEventListener(VIEWPORT_RESUME, handleResume);\n return () => {\n viewport.removeEventListener(VIEWPORT_PAUSE, handlePause);\n viewport.removeEventListener(VIEWPORT_RESUME, handleResume);\n };\n }\n }, [context.viewport, duration, onPause, onResume, startTimer]);\n React.useEffect(() => {\n if (open && !context.isClosePausedRef.current) startTimer(duration);\n }, [open, duration, context.isClosePausedRef, startTimer]);\n React.useEffect(() => {\n onToastAdd();\n return () => onToastRemove();\n }, [onToastAdd, onToastRemove]);\n const announceTextContent = React.useMemo(() => {\n return node ? getAnnounceTextContent(node) : null;\n }, [node]);\n if (!context.viewport) return null;\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n announceTextContent && /* @__PURE__ */ jsx(\n ToastAnnounce,\n {\n __scopeToast,\n role: \"status\",\n \"aria-live\": type === \"foreground\" ? \"assertive\" : \"polite\",\n \"aria-atomic\": true,\n children: announceTextContent\n }\n ),\n /* @__PURE__ */ jsx(ToastInteractiveProvider, { scope: __scopeToast, onClose: handleClose, children: ReactDOM.createPortal(\n /* @__PURE__ */ jsx(Collection.ItemSlot, { scope: __scopeToast, children: /* @__PURE__ */ jsx(\n DismissableLayer.Root,\n {\n asChild: true,\n onEscapeKeyDown: composeEventHandlers(onEscapeKeyDown, () => {\n if (!context.isFocusedToastEscapeKeyDownRef.current) handleClose();\n context.isFocusedToastEscapeKeyDownRef.current = false;\n }),\n children: /* @__PURE__ */ jsx(\n Primitive.li,\n {\n role: \"status\",\n \"aria-live\": \"off\",\n \"aria-atomic\": true,\n tabIndex: 0,\n \"data-state\": open ? \"open\" : \"closed\",\n \"data-swipe-direction\": context.swipeDirection,\n ...toastProps,\n ref: composedRefs,\n style: { userSelect: \"none\", touchAction: \"none\", ...props.style },\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key !== \"Escape\") return;\n onEscapeKeyDown?.(event.nativeEvent);\n if (!event.nativeEvent.defaultPrevented) {\n context.isFocusedToastEscapeKeyDownRef.current = true;\n handleClose();\n }\n }),\n onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {\n if (event.button !== 0) return;\n pointerStartRef.current = { x: event.clientX, y: event.clientY };\n }),\n onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n if (!pointerStartRef.current) return;\n const x = event.clientX - pointerStartRef.current.x;\n const y = event.clientY - pointerStartRef.current.y;\n const hasSwipeMoveStarted = Boolean(swipeDeltaRef.current);\n const isHorizontalSwipe = [\"left\", \"right\"].includes(context.swipeDirection);\n const clamp = [\"left\", \"up\"].includes(context.swipeDirection) ? Math.min : Math.max;\n const clampedX = isHorizontalSwipe ? clamp(0, x) : 0;\n const clampedY = !isHorizontalSwipe ? clamp(0, y) : 0;\n const moveStartBuffer = event.pointerType === \"touch\" ? 10 : 2;\n const delta = { x: clampedX, y: clampedY };\n const eventDetail = { originalEvent: event, delta };\n if (hasSwipeMoveStarted) {\n swipeDeltaRef.current = delta;\n handleAndDispatchCustomEvent(TOAST_SWIPE_MOVE, onSwipeMove, eventDetail, {\n discrete: false\n });\n } else if (isDeltaInDirection(delta, context.swipeDirection, moveStartBuffer)) {\n swipeDeltaRef.current = delta;\n handleAndDispatchCustomEvent(TOAST_SWIPE_START, onSwipeStart, eventDetail, {\n discrete: false\n });\n event.target.setPointerCapture(event.pointerId);\n } else if (Math.abs(x) > moveStartBuffer || Math.abs(y) > moveStartBuffer) {\n pointerStartRef.current = null;\n }\n }),\n onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n const delta = swipeDeltaRef.current;\n const target = event.target;\n if (target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n }\n swipeDeltaRef.current = null;\n pointerStartRef.current = null;\n if (delta) {\n const toast = event.currentTarget;\n const eventDetail = { originalEvent: event, delta };\n if (isDeltaInDirection(delta, context.swipeDirection, context.swipeThreshold)) {\n handleAndDispatchCustomEvent(TOAST_SWIPE_END, onSwipeEnd, eventDetail, {\n discrete: true\n });\n } else {\n handleAndDispatchCustomEvent(\n TOAST_SWIPE_CANCEL,\n onSwipeCancel,\n eventDetail,\n {\n discrete: true\n }\n );\n }\n toast.addEventListener(\"click\", (event2) => event2.preventDefault(), {\n once: true\n });\n }\n })\n }\n )\n }\n ) }),\n context.viewport\n ) })\n ] });\n }\n);\nvar ToastAnnounce = (props) => {\n const { __scopeToast, children, ...announceProps } = props;\n const context = useToastProviderContext(TOAST_NAME, __scopeToast);\n const [renderAnnounceText, setRenderAnnounceText] = React.useState(false);\n const [isAnnounced, setIsAnnounced] = React.useState(false);\n useNextFrame(() => setRenderAnnounceText(true));\n React.useEffect(() => {\n const timer = window.setTimeout(() => setIsAnnounced(true), 1e3);\n return () => window.clearTimeout(timer);\n }, []);\n return isAnnounced ? null : /* @__PURE__ */ jsx(Portal, { asChild: true, children: /* @__PURE__ */ jsx(VisuallyHidden, { ...announceProps, children: renderAnnounceText && /* @__PURE__ */ jsxs(Fragment, { children: [\n context.label,\n \" \",\n children\n ] }) }) });\n};\nvar TITLE_NAME = \"ToastTitle\";\nvar ToastTitle = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeToast, ...titleProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { ...titleProps, ref: forwardedRef });\n }\n);\nToastTitle.displayName = TITLE_NAME;\nvar DESCRIPTION_NAME = \"ToastDescription\";\nvar ToastDescription = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeToast, ...descriptionProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { ...descriptionProps, ref: forwardedRef });\n }\n);\nToastDescription.displayName = DESCRIPTION_NAME;\nvar ACTION_NAME = \"ToastAction\";\nvar ToastAction = React.forwardRef(\n (props, forwardedRef) => {\n const { altText, ...actionProps } = props;\n if (!altText.trim()) {\n console.error(\n `Invalid prop \\`altText\\` supplied to \\`${ACTION_NAME}\\`. Expected non-empty \\`string\\`.`\n );\n return null;\n }\n return /* @__PURE__ */ jsx(ToastAnnounceExclude, { altText, asChild: true, children: /* @__PURE__ */ jsx(ToastClose, { ...actionProps, ref: forwardedRef }) });\n }\n);\nToastAction.displayName = ACTION_NAME;\nvar CLOSE_NAME = \"ToastClose\";\nvar ToastClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeToast, ...closeProps } = props;\n const interactiveContext = useToastInteractiveContext(CLOSE_NAME, __scopeToast);\n return /* @__PURE__ */ jsx(ToastAnnounceExclude, { asChild: true, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, interactiveContext.onClose)\n }\n ) });\n }\n);\nToastClose.displayName = CLOSE_NAME;\nvar ToastAnnounceExclude = React.forwardRef((props, forwardedRef) => {\n const { __scopeToast, altText, ...announceExcludeProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-radix-toast-announce-exclude\": \"\",\n \"data-radix-toast-announce-alt\": altText || void 0,\n ...announceExcludeProps,\n ref: forwardedRef\n }\n );\n});\nfunction getAnnounceTextContent(container) {\n const textContent = [];\n const childNodes = Array.from(container.childNodes);\n childNodes.forEach((node) => {\n if (node.nodeType === node.TEXT_NODE && node.textContent) textContent.push(node.textContent);\n if (isHTMLElement(node)) {\n const isHidden = node.ariaHidden || node.hidden || node.style.display === \"none\";\n const isExcluded = node.dataset.radixToastAnnounceExclude === \"\";\n if (!isHidden) {\n if (isExcluded) {\n const altText = node.dataset.radixToastAnnounceAlt;\n if (altText) textContent.push(altText);\n } else {\n textContent.push(...getAnnounceTextContent(node));\n }\n }\n }\n });\n return textContent;\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const currentTarget = detail.originalEvent.currentTarget;\n const event = new CustomEvent(name, { bubbles: true, cancelable: true, detail });\n if (handler) currentTarget.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(currentTarget, event);\n } else {\n currentTarget.dispatchEvent(event);\n }\n}\nvar isDeltaInDirection = (delta, direction, threshold = 0) => {\n const deltaX = Math.abs(delta.x);\n const deltaY = Math.abs(delta.y);\n const isDeltaX = deltaX > deltaY;\n if (direction === \"left\" || direction === \"right\") {\n return isDeltaX && deltaX > threshold;\n } else {\n return !isDeltaX && deltaY > threshold;\n }\n};\nfunction useNextFrame(callback = () => {\n}) {\n const fn = useCallbackRef(callback);\n useLayoutEffect(() => {\n let raf1 = 0;\n let raf2 = 0;\n raf1 = window.requestAnimationFrame(() => raf2 = window.requestAnimationFrame(fn));\n return () => {\n window.cancelAnimationFrame(raf1);\n window.cancelAnimationFrame(raf2);\n };\n }, [fn]);\n}\nfunction isHTMLElement(node) {\n return node.nodeType === node.ELEMENT_NODE;\n}\nfunction getTabbableCandidates(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\nfunction focusFirst(candidates) {\n const previouslyFocusedElement = document.activeElement;\n return candidates.some((candidate) => {\n if (candidate === previouslyFocusedElement) return true;\n candidate.focus();\n return document.activeElement !== previouslyFocusedElement;\n });\n}\nvar Provider = ToastProvider;\nvar Viewport = ToastViewport;\nvar Root2 = Toast;\nvar Title = ToastTitle;\nvar Description = ToastDescription;\nvar Action = ToastAction;\nvar Close = ToastClose;\nexport {\n Action,\n Close,\n Description,\n Provider,\n Root2 as Root,\n Title,\n Toast,\n ToastAction,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastTitle,\n ToastViewport,\n Viewport,\n createToastScope\n};\n//# sourceMappingURL=index.mjs.map\n","import { ComponentPropsWithoutRef, ElementRef, forwardRef, ReactElement } from 'react'\n\nimport { Cross2Icon } from '@radix-ui/react-icons'\nimport * as ToastPrimitives from '@radix-ui/react-toast'\nimport { cn } from '@utils/cn'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nconst ToastProvider = ToastPrimitives.Provider\n\nconst ToastViewport = forwardRef<\n ElementRef<typeof ToastPrimitives.Viewport>,\n ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Viewport\n ref={ref}\n className={cn(\n 'fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 gap-y-2 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[317px]',\n className\n )}\n {...props}\n />\n))\nToastViewport.displayName = ToastPrimitives.Viewport.displayName\n\nconst toastVariants = cva(\n 'pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded border py-3 pl-3.5 pr-12 shadow-lg transition-all',\n {\n variants: {\n variant: {\n default: 'border-borders-1 bg-background-3 text-foreground [&_svg]:text-icons-1',\n destructive: 'border-borders-danger bg-foreground-danger text-foreground-1 [&_svg]:text-icons-2',\n success:\n 'border-borders-success border-tag-border-mint-1 bg-tag-background-mint-1 text-tag-foreground-mint-1 [&_svg]:text-icons-2'\n }\n },\n defaultVariants: {\n variant: 'default'\n }\n }\n)\n\nconst ToastRoot = forwardRef<\n ElementRef<typeof ToastPrimitives.Root>,\n ComponentPropsWithoutRef<typeof ToastPrimitives.Root> & VariantProps<typeof toastVariants>\n>(({ className, variant, ...props }, ref) => {\n return <ToastPrimitives.Root ref={ref} className={cn(toastVariants({ variant }), className)} {...props} />\n})\nToastRoot.displayName = ToastPrimitives.Root.displayName\n\nconst ToastAction = forwardRef<\n ElementRef<typeof ToastPrimitives.Action>,\n ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Action\n ref={ref}\n className={cn(\n 'hover:bg-secondary focus:ring-ring group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors focus:outline-none focus:ring-1 disabled:pointer-events-none disabled:opacity-50',\n className\n )}\n {...props}\n />\n))\nToastAction.displayName = ToastPrimitives.Action.displayName\n\nconst ToastClose = forwardRef<\n ElementRef<typeof ToastPrimitives.Close>,\n ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Close\n ref={ref}\n className={cn(\n 'text-icons-2 absolute right-3.5 top-[15px] my-auto size-3 rounded-md focus:outline-none focus:ring-1',\n className\n )}\n toast-close=\"\"\n {...props}\n >\n <Cross2Icon className=\"size-3\" />\n </ToastPrimitives.Close>\n))\nToastClose.displayName = ToastPrimitives.Close.displayName\n\nconst ToastTitle = forwardRef<\n ElementRef<typeof ToastPrimitives.Title>,\n ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Title\n ref={ref}\n className={cn('text-sm leading-tight tracking-tight [&+div]:text-xs', className)}\n {...props}\n />\n))\nToastTitle.displayName = ToastPrimitives.Title.displayName\n\nconst ToastDescription = forwardRef<\n ElementRef<typeof ToastPrimitives.Description>,\n ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Description ref={ref} className={cn('text-sm opacity-90', className)} {...props} />\n))\nToastDescription.displayName = ToastPrimitives.Description.displayName\n\ntype ToastProps = ComponentPropsWithoutRef<typeof ToastRoot>\n\ntype ToastActionElement = ReactElement<typeof ToastAction>\n\nconst Toast = {\n Root: ToastRoot,\n Action: ToastAction,\n Close: ToastClose,\n Title: ToastTitle,\n Description: ToastDescription,\n Viewport: ToastViewport,\n Provider: ToastProvider\n}\n\nexport { Toast, type ToastProps, type ToastActionElement }\n","import { FC } from 'react'\n\nimport {\n Button,\n ButtonGroup,\n DropdownMenu,\n FileToolbarActions,\n Icon,\n StackedList,\n ToggleGroup,\n ViewTypeValue\n} from '@/components'\n\nexport interface FileViewerControlBarProps {\n view: ViewTypeValue\n onChangeView: (value: ViewTypeValue) => void\n isMarkdown: boolean\n fileBytesSize: string\n fileContent: string\n url: string\n handleDownloadFile: () => void\n handleEditFile: () => void\n handleOpenDeleteDialog: () => void\n}\n\nexport const FileViewerControlBar: FC<FileViewerControlBarProps> = ({\n view,\n onChangeView,\n isMarkdown,\n fileBytesSize,\n fileContent,\n url,\n handleDownloadFile,\n handleEditFile,\n handleOpenDeleteDialog\n}) => {\n const handleViewRaw = () => {\n window.open(url, '_blank')\n }\n\n const RightDetails = () => {\n return (\n <ButtonGroup verticalAlign=\"center\" spacing=\"2\">\n <span className=\"text-sm text-foreground-4\">{`${fileContent?.split('\\n').length || 0} lines`}</span>\n <span className=\"h-3 border-l border-borders-2\" />\n <span className=\"mr-5 text-sm text-foreground-4\">{fileBytesSize}</span>\n <FileToolbarActions\n showEdit\n copyContent={fileContent}\n onDownloadClick={handleDownloadFile}\n onEditClick={handleEditFile}\n />\n <DropdownMenu.Root>\n <DropdownMenu.Trigger className=\"-mr-2\" asChild>\n <Button\n className=\"text-icons-3 hover:text-icons-2 data-[state=open]:text-icons-2\"\n variant=\"custom\"\n size=\"icon\"\n >\n <Icon name=\"more-dots-fill\" size={16} />\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"end\">\n <DropdownMenu.Item onSelect={handleViewRaw}>\n <span className=\"truncate text-sm\">View Raw</span>\n </DropdownMenu.Item>\n <DropdownMenu.Item onSelect={handleOpenDeleteDialog}>\n <span className=\"truncate text-sm text-foreground-danger\">Delete</span>\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n </ButtonGroup>\n )\n }\n\n return (\n <StackedList.Root onlyTopRounded borderBackground>\n <StackedList.Item disableHover isHeader className=\"px-4 py-1.5\">\n <ToggleGroup.Root\n className=\"gap-0\"\n onValueChange={onChangeView}\n value={view}\n type=\"single\"\n unselectable={'on'}\n size=\"xs\"\n >\n {isMarkdown && <ToggleGroup.Item value={'preview'}>Preview</ToggleGroup.Item>}\n <ToggleGroup.Item value={'code'}>Code</ToggleGroup.Item>\n <ToggleGroup.Item value={'blame'}>Blame</ToggleGroup.Item>\n <ToggleGroup.Item value={'history'}>History</ToggleGroup.Item>\n </ToggleGroup.Root>\n <StackedList.Field right title={<RightDetails />} />\n </StackedList.Item>\n </StackedList.Root>\n )\n}\n","import { FC } from 'react'\n\nimport { EditViewTypeValue, StackedList, ToggleGroup } from '@/components'\n\nexport interface FileEditorControlBarProps {\n view: EditViewTypeValue\n onChangeView: (value: EditViewTypeValue) => void\n}\n\nexport const FileEditorControlBar: FC<FileEditorControlBarProps> = ({ view, onChangeView }) => {\n return (\n <StackedList.Root onlyTopRounded borderBackground>\n <StackedList.Item disableHover isHeader className=\"px-4 py-1.5\">\n <ToggleGroup.Root\n className=\"gap-0\"\n onValueChange={onChangeView}\n value={view}\n type=\"single\"\n unselectable={'on'}\n size=\"xs\"\n >\n <ToggleGroup.Item value={'edit'}>Edit</ToggleGroup.Item>\n <ToggleGroup.Item value={'preview'}>Preview</ToggleGroup.Item>\n </ToggleGroup.Root>\n </StackedList.Item>\n </StackedList.Root>\n )\n}\n","import { ChangeEvent, FC } from 'react'\nimport { SubmitHandler, useForm } from 'react-hook-form'\n\nimport {\n Button,\n ButtonGroup,\n CommitToGitRefOption,\n ControlGroup,\n Dialog,\n GitCommitFormType,\n Icon,\n Input,\n Message,\n MessageTheme,\n Option,\n RadioButton,\n RadioGroup,\n StyledLink,\n Textarea\n} from '@/components'\nimport { UsererrorError, ViolationState } from '@/types'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { z } from 'zod'\n\nexport const createGitCommitSchema = (isFileNameRequired: boolean) => {\n const fileNameSchema = isFileNameRequired ? z.string().min(1, 'File Name is required') : z.string().optional()\n\n return z\n .object({\n message: z.string().optional(),\n description: z.string().optional(),\n commitToGitRef: z.nativeEnum(CommitToGitRefOption),\n newBranchName: z.string().optional(),\n fileName: fileNameSchema\n })\n .superRefine((data, ctx) => {\n if (data.commitToGitRef === CommitToGitRefOption.NEW_BRANCH) {\n if (!data.newBranchName || !data.newBranchName.trim()) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Branch Name is required',\n path: ['newBranchName']\n })\n }\n }\n })\n}\n\nexport type GitCommitSchemaType = z.infer<ReturnType<typeof createGitCommitSchema>>\n\nexport interface GitCommitDialogProps {\n isOpen: boolean\n isFileNameRequired?: boolean\n commitTitlePlaceHolder?: string\n currentBranch: string\n violation: boolean\n bypassable: boolean\n disableCTA: boolean\n // TODO: We need to decide how to display errors from the API.\n error?: UsererrorError\n onClose: () => void\n onFormSubmit: (formValues: GitCommitFormType) => Promise<void>\n setAllStates: (payload: Partial<ViolationState>) => void\n dryRun: (commitToGitRef: CommitToGitRefOption, fileName?: string) => void\n isSubmitting: boolean\n}\n\nexport const GitCommitDialog: FC<GitCommitDialogProps> = ({\n isOpen,\n onClose,\n isFileNameRequired = false,\n onFormSubmit,\n commitTitlePlaceHolder,\n dryRun,\n currentBranch,\n violation,\n bypassable,\n setAllStates,\n disableCTA,\n isSubmitting,\n error\n}) => {\n const {\n register,\n handleSubmit,\n setValue,\n watch,\n formState: { errors }\n } = useForm<GitCommitSchemaType>({\n resolver: zodResolver(createGitCommitSchema(isFileNameRequired)),\n mode: 'onChange',\n defaultValues: {\n message: '',\n description: '',\n commitToGitRef: CommitToGitRefOption.DIRECTLY,\n newBranchName: '',\n fileName: isFileNameRequired ? '' : undefined\n }\n })\n\n const isDisabledSubmission = disableCTA || isSubmitting\n const onSubmit: SubmitHandler<GitCommitSchemaType> = data => {\n if (isDisabledSubmission) return\n\n onFormSubmit(data as GitCommitFormType)\n }\n\n const commitToGitRefValue = watch('commitToGitRef')\n const fileNameValue = watch('fileName')\n\n const handleCommitToGitRefChange = (value: CommitToGitRefOption) => {\n dryRun(value, fileNameValue)\n setValue('commitToGitRef', value, { shouldValidate: true })\n\n if (CommitToGitRefOption.DIRECTLY) {\n setValue('newBranchName', '')\n }\n }\n\n const handleNewBranchNameChange = (_e: ChangeEvent<HTMLInputElement>) => {\n setAllStates({ violation: false, bypassable: false, bypassed: false })\n }\n return (\n <Dialog.Root open={isOpen} onOpenChange={onClose}>\n <Dialog.Content className=\"max-w-[576px]\">\n <Dialog.Header>\n <Dialog.Title>Commit Changes</Dialog.Title>\n </Dialog.Header>\n\n <form className=\"flex flex-col gap-y-7 pb-4\" onSubmit={handleSubmit(onSubmit)}>\n {isFileNameRequired && (\n <Input\n id=\"fileName\"\n label=\"File Name\"\n {...register('fileName')}\n placeholder=\"Add a file name\"\n size=\"md\"\n error={errors.fileName?.message?.toString()}\n autoFocus\n />\n )}\n <Input\n id=\"message\"\n label=\"Commit Message\"\n {...register('message')}\n placeholder={commitTitlePlaceHolder ?? 'Add a commit message'}\n size=\"md\"\n error={errors.message?.message?.toString()}\n />\n <Textarea\n id=\"description\"\n {...register('description')}\n placeholder=\"Add an optional extended description\"\n label=\"Extended description\"\n error={errors.description?.message?.toString()}\n />\n <ControlGroup>\n <RadioGroup\n className=\"gap-6\"\n id=\"commitToGitRef\"\n value={commitToGitRefValue}\n onValueChange={handleCommitToGitRefChange}\n >\n <Option\n control={\n <RadioButton\n className=\"mt-px\"\n value={CommitToGitRefOption.DIRECTLY}\n id={CommitToGitRefOption.DIRECTLY}\n />\n }\n id={CommitToGitRefOption.DIRECTLY}\n label={\n <span>\n Commit directly to the\n <span\n className=\"\n relative mx-1.5 inline-flex gap-1 px-2.5 text-foreground-8\n before:absolute before:-top-1 before:left-0 before:z-[-1] before:h-6 before:w-full before:rounded before:bg-background-8\n \"\n >\n <Icon className=\"translate-y-0.5 text-icons-9\" name=\"branch\" size={14} />\n {currentBranch}\n </span>\n branch\n </span>\n }\n ariaSelected={commitToGitRefValue === CommitToGitRefOption.DIRECTLY}\n />\n <Option\n control={\n <RadioButton\n className=\"mt-px\"\n value={CommitToGitRefOption.NEW_BRANCH}\n id={CommitToGitRefOption.NEW_BRANCH}\n />\n }\n id={CommitToGitRefOption.NEW_BRANCH}\n label=\"Create a new branch for this commit and start a pull request\"\n ariaSelected={commitToGitRefValue === CommitToGitRefOption.NEW_BRANCH}\n description={\n // TODO: Add correct path\n <StyledLink to=\"/\">Learn more about pull requests</StyledLink>\n }\n />\n </RadioGroup>\n {violation && (\n <Message className=\"ml-[26px] mt-0.5\" theme={MessageTheme.ERROR}>\n {bypassable\n ? commitToGitRefValue === CommitToGitRefOption.DIRECTLY\n ? 'Some rules will be bypassed to commit directly'\n : 'Some rules will be bypassed to commit by creating branch'\n : commitToGitRefValue === CommitToGitRefOption.DIRECTLY\n ? \"Some rules don't allow you to commit directly\"\n : \"Some rules don't allow you to create new branch for commit\"}\n </Message>\n )}\n {error && error?.message && (\n <Message className=\"ml-[26px] mt-0.5\" theme={MessageTheme.ERROR}>\n {error.message}\n </Message>\n )}\n {errors.commitToGitRef && (\n <Message className=\"ml-8 mt-0.5\" theme={MessageTheme.ERROR}>\n {errors.commitToGitRef?.message?.toString()}\n </Message>\n )}\n {commitToGitRefValue === CommitToGitRefOption.NEW_BRANCH && (!violation || (violation && bypassable)) && (\n <div className=\"ml-8 mt-3\">\n <Input\n id=\"newBranchName\"\n {...register('newBranchName', {\n onChange: handleNewBranchNameChange\n })}\n placeholder=\"New Branch Name\"\n error={errors.newBranchName?.message?.toString()}\n autoFocus\n inputIconName=\"branch\"\n />\n </div>\n )}\n </ControlGroup>\n </form>\n\n <Dialog.Footer>\n <ButtonGroup>\n <>\n <Button variant=\"outline\" onClick={onClose} disabled={isSubmitting}>\n Cancel\n </Button>\n {!bypassable ? (\n <Button type=\"button\" onClick={handleSubmit(onSubmit)} disabled={isDisabledSubmission}>\n {isSubmitting ? 'Committing...' : 'Commit changes'}\n </Button>\n ) : (\n <Button onClick={handleSubmit(onSubmit)} variant=\"destructive\" type=\"submit\">\n {commitToGitRefValue === CommitToGitRefOption.NEW_BRANCH\n ? 'Bypass rules and commit via new branch'\n : 'Bypass rules and commit directly'}\n </Button>\n )}\n </>\n </ButtonGroup>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n )\n}\n","export interface GitCommitFormType {\n message: string\n description?: string\n commitToGitRef: string\n newBranchName?: string\n fileName?: string\n}\n\nexport enum CommitToGitRefOption {\n DIRECTLY = 'directly',\n NEW_BRANCH = 'new-branch'\n}\n","import { FC } from 'react'\nimport { SubmitHandler, useForm } from 'react-hook-form'\n\nimport { Button, ButtonGroup, Dialog, Input, Textarea } from '@/components'\nimport { UsererrorError } from '@/types'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { z } from 'zod'\n\nexport interface CommitSuggestionsFormType {\n message?: string\n title: string\n}\n\nconst commitSuggestionsSchema = z.object({\n message: z.string().optional(),\n title: z.string()\n})\n\nexport type CommitSuggestionsFormFields = z.infer<typeof commitSuggestionsSchema>\n\nexport interface CommitSuggestionsDialogProps {\n isOpen: boolean\n commitTitlePlaceHolder?: string\n // TODO: We need to decide how to display errors from the API.\n error?: UsererrorError\n onClose: () => void\n onFormSubmit: (formValues: CommitSuggestionsFormType) => Promise<void>\n isSubmitting: boolean\n}\n\nexport const CommitSuggestionsDialog: FC<CommitSuggestionsDialogProps> = ({\n isOpen,\n onClose,\n commitTitlePlaceHolder,\n onFormSubmit,\n isSubmitting\n}) => {\n const {\n register,\n handleSubmit,\n formState: { errors, isValid }\n } = useForm<CommitSuggestionsFormFields>({\n resolver: zodResolver(commitSuggestionsSchema),\n mode: 'onChange',\n defaultValues: {\n message: '',\n title: commitTitlePlaceHolder\n }\n })\n\n const isDisabledSubmission = isSubmitting || !isValid\n\n const onSubmit: SubmitHandler<CommitSuggestionsFormFields> = data => {\n if (isDisabledSubmission) return\n\n onFormSubmit(data as CommitSuggestionsFormType)\n }\n\n return (\n <Dialog.Root open={isOpen} onOpenChange={onClose}>\n <Dialog.Content className=\"max-w-[576px]\">\n <Dialog.Header>\n <Dialog.Title>Commit Changes</Dialog.Title>\n </Dialog.Header>\n\n <form className=\"flex flex-col gap-y-7 pb-4\" onSubmit={handleSubmit(onSubmit)}>\n <Input\n id=\"title\"\n label=\"Commit Message\"\n {...register('title')}\n placeholder={commitTitlePlaceHolder ?? 'Add a commit message'}\n size=\"md\"\n error={errors.title?.message?.toString()}\n />\n <Textarea\n id=\"message\"\n {...register('message')}\n placeholder=\"Add an optional extended description\"\n label=\"Extended description\"\n error={errors.message?.message?.toString()}\n />\n </form>\n\n <Dialog.Footer>\n <ButtonGroup>\n <>\n <Button variant=\"outline\" onClick={onClose} disabled={isSubmitting}>\n Cancel\n </Button>\n <Button type=\"button\" onClick={handleSubmit(onSubmit)} disabled={isDisabledSubmission}>\n {isSubmitting ? 'Committing...' : 'Commit changes'}\n </Button>\n </>\n </ButtonGroup>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n )\n}\n","import * as React from 'react'\n\nimport { cx } from 'class-variance-authority'\n\nfunction isElement(node: React.ReactNode): node is React.ReactElement {\n return (node as React.ReactElement).type !== undefined\n}\n\nconst Topbar = {\n Root: function Root({ children, className }: { children: React.ReactNode; className?: string }) {\n const hasCenter = React.Children.toArray(children).some(\n (child: React.ReactNode) => isElement(child) && child?.type === Topbar.Center\n )\n\n // Determine the grid layout based on the presence of Center\n const gridCols = hasCenter ? 'grid-cols-[auto_1fr_auto]' : 'grid-cols-[1fr_auto]'\n\n return (\n <div\n className={cx(\n `grid w-full ${gridCols} font-regular h-[55px] topbar-bottom-border items-center gap-6 px-5 text-sm`,\n className\n )}\n >\n {children}\n </div>\n )\n },\n\n Left: React.memo(function Header({ children }: { children: React.ReactNode }) {\n return <div className=\"order-1 flex items-center gap-3\">{children}</div>\n }),\n\n Center: React.memo(function Center({ children }: { children: React.ReactNode }) {\n return <div className=\"order-2 flex items-center justify-center\">{children}</div>\n }),\n\n Right: React.memo(function Header({ children }: { children: React.ReactNode }) {\n return <div className=\"order-3 flex items-center gap-3\">{children}</div>\n })\n}\n\nexport { Topbar }\n","import { FC, useRef } from 'react'\n\nimport { Button, DropdownMenu, Icon } from '@/components'\nimport { useRouterContext } from '@/context'\nimport { TranslationStore } from '@/views'\n\nexport interface FileAdditionsTriggerProps {\n useTranslationStore: () => TranslationStore\n pathNewFile: string\n pathUploadFiles: string\n}\n\nexport const FileAdditionsTrigger: FC<FileAdditionsTriggerProps> = ({\n useTranslationStore,\n pathNewFile,\n pathUploadFiles\n}) => {\n const { Link } = useRouterContext()\n const triggerRef = useRef<HTMLButtonElement>(null)\n const { t } = useTranslationStore()\n\n return (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild ref={triggerRef}>\n <Button className=\"relative overflow-hidden pl-4 pr-8\" variant=\"outline\">\n <span className=\"border-r pr-2.5\">{t('views:repos.create-new-file-no-plus', 'Create new file')}</span>\n <span className=\"absolute right-0 top-0 flex h-full w-8 items-center justify-center text-icons-7 transition-colors group-data-[state=open]:bg-background-3 group-data-[state=open]:text-icons-9\">\n <Icon name=\"chevron-down\" size={12} />\n </span>\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content className=\"min-w-[157px]\" align=\"end\">\n <DropdownMenu.Item>\n <Link className=\"relative grid grid-cols-[auto_1fr] items-center gap-1.5\" to={pathNewFile}>\n <Icon name=\"plus\" size={12} />\n <span className=\"truncate\">{t('views:repos.create-new-file-no-plus', 'Create new file')}</span>\n </Link>\n </DropdownMenu.Item>\n <DropdownMenu.Item>\n <Link className=\"relative grid grid-cols-[auto_1fr] items-center gap-1.5\" to={pathUploadFiles}>\n <Icon name=\"upload\" size={12} />\n <span className=\"truncate\">{t('views:repos.upload-files', 'Upload files')}</span>\n </Link>\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n )\n}\n","import { FC } from 'react'\n\nimport { Button, Dialog } from '@/components'\n\nexport interface ExitConfirmOptions {\n title?: string\n subtitle?: string\n confirmText?: string\n cancelText?: string\n onConfirm: () => void\n onCancel?: () => void\n}\n\nexport type ExitConfirmDialogProps = ExitConfirmOptions & { open: boolean }\n\nexport const ExitConfirmDialog: FC<ExitConfirmDialogProps> = ({\n open,\n onCancel,\n onConfirm,\n title = 'You have unsaved changes',\n subtitle = 'Are you sure you want to leave this page without saving?',\n confirmText = 'Leave',\n cancelText = 'Stay'\n}) => {\n return (\n <Dialog.Root\n open={open}\n onOpenChange={open => {\n if (!open) onCancel?.()\n }}\n >\n <Dialog.Content className=\"max-w-[500px]\">\n <Dialog.Header>\n <Dialog.Title>{title}</Dialog.Title>\n </Dialog.Header>\n <Dialog.Description>{subtitle}</Dialog.Description>\n <Dialog.Footer>\n <Button variant=\"outline\" onClick={() => onCancel?.()}>\n {cancelText}\n </Button>\n <Button onClick={onConfirm}>{confirmText}</Button>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n )\n}\n","import { ChangeEvent, FC, useState } from 'react'\n\nimport { AlertDialog, Button, Fieldset, Input } from '@/components'\nimport { TranslationStore } from '@/views'\n\nconst DELETION_KEYWORD = 'DELETE'\n\nexport interface DeleteAlertDialogProps {\n open: boolean\n onClose: () => void\n identifier?: string\n deleteFn: (id: string) => void\n type?: string\n isLoading?: boolean\n error?: { type?: string; message: string } | null\n useTranslationStore: () => TranslationStore\n withForm?: boolean\n}\n\nexport const DeleteAlertDialog: FC<DeleteAlertDialogProps> = ({\n open,\n onClose,\n identifier,\n deleteFn,\n type,\n isLoading = false,\n useTranslationStore,\n error,\n withForm = false\n}) => {\n const { t } = useTranslationStore()\n const [verification, setVerification] = useState('')\n\n const handleChangeVerification = (event: ChangeEvent<HTMLInputElement>) => {\n setVerification(event.target.value)\n }\n\n const isDisabled = isLoading || (withForm && verification !== DELETION_KEYWORD)\n\n const handleDelete = () => {\n if (isDisabled) return\n\n deleteFn(identifier!)\n }\n\n return (\n <AlertDialog.Root open={open} onOpenChange={onClose}>\n <AlertDialog.Content onOverlayClick={onClose} onClose={onClose}>\n <AlertDialog.Header>\n <AlertDialog.Title>{t('component:deleteDialog.title', 'Are you sure?')}</AlertDialog.Title>\n <AlertDialog.Description>\n {type\n ? t('component:deleteDialog.descriptionWithType', {\n defaultValue: `This will permanently delete your ${type} and remove all data. This action cannot be undone.`,\n type: type\n })\n : t(\n 'component:deleteDialog.description',\n `This will permanently remove all data. This action cannot be undone.`\n )}\n </AlertDialog.Description>\n </AlertDialog.Header>\n {withForm && (\n <Fieldset>\n <Input\n id=\"verification\"\n value={verification}\n placeholder=\"\"\n onChange={handleChangeVerification}\n label={`${t('component:deleteDialog.inputLabel', `To confirm, type`)} “${DELETION_KEYWORD}”`}\n disabled={isLoading}\n autoFocus\n />\n </Fieldset>\n )}\n\n {!!error && error.message && <p className=\"text-xs text-destructive\">{error.message}</p>}\n\n <AlertDialog.Footer>\n <Button variant=\"outline\" onClick={onClose} disabled={isLoading}>\n {t('component:deleteDialog.cancel', 'Cancel')}\n </Button>\n <Button variant=\"destructive\" disabled={isDisabled} onClick={handleDelete}>\n {isLoading ? `Deleting ${type}...` : `Yes, delete ${type}`}\n </Button>\n </AlertDialog.Footer>\n </AlertDialog.Content>\n </AlertDialog.Root>\n )\n}\n","import { CollapsedGroupNode } from './collapsed-group-node'\nimport Port from './custom-port'\n\nexport const PipelineNodesComponents = {\n Port,\n CollapsedGroupNode\n}\n","import { TabNav } from '@/components'\nimport { SandboxLayout, TranslationStore } from '@/views'\n\nexport enum RepoTabsKeys {\n SUMMARY = 'summary',\n CODE = 'code',\n PIPELINES = 'pipelines',\n COMMITS = 'commits',\n PULLS = 'pulls',\n BRANCHES = 'branches',\n SETTINGS = 'settings'\n}\n\nexport const repoTabsKeysArr = Object.values(RepoTabsKeys)\n\nexport const RepoSubheader = ({\n useTranslationStore,\n showPipelinesTab = true,\n className\n}: {\n useTranslationStore: () => TranslationStore\n showPipelinesTab?: boolean\n className?: string\n}) => {\n const { t } = useTranslationStore()\n\n return (\n <SandboxLayout.SubHeader className={className}>\n <TabNav.Root>\n <TabNav.Item to=\"summary\">{t('views:repos.summary', 'Summary')}</TabNav.Item>\n <TabNav.Item to=\"code\">{t('views:repos.files', 'Files')}</TabNav.Item>\n {showPipelinesTab && <TabNav.Item to=\"pipelines\">{t('views:repos.pipelines', 'Pipelines')}</TabNav.Item>}\n <TabNav.Item to=\"commits\">{t('views:repos.commits', 'Commits')}</TabNav.Item>\n <TabNav.Item to=\"tags\">{t('views:repos.tags', 'Tags')}</TabNav.Item>\n <TabNav.Item to=\"pulls\">{t('views:repos.pull-requests', 'Pull Requests')}</TabNav.Item>\n <TabNav.Item to=\"branches\">{t('views:repos.branches', 'Branches')}</TabNav.Item>\n <TabNav.Item to=\"settings\">{t('views:repos.settings', 'Settings')}</TabNav.Item>\n </TabNav.Root>\n </SandboxLayout.SubHeader>\n )\n}\n","// TODO: we should rethink the approach and stop using the @dnd-kit library\n\nimport { ChangeEvent, FC, memo, useCallback, useEffect, useMemo, useState } from 'react'\n\nimport { AlertDialog, Button, Icon, Input } from '@/components'\nimport { DndContext } from '@dnd-kit/core'\nimport { SortableContext, useSortable, verticalListSortingStrategy } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\n\nimport useDragAndDrop from '../../hooks/use-drag-and-drop'\nimport { SavedView, ViewManagement } from './types'\n\n/**\n * Interface for the draggable view item component\n * @property view - The view object containing id, name, and other properties\n * @property id - Unique identifier for drag and drop functionality\n * @property onRename - Callback function for handling view rename\n * @property onDelete - Callback function for handling view deletion\n * @property existingNames - Set of existing view names for validation\n * @property validateViewNameChange - Function to validate view name changes\n */\ninterface SortableItemProps {\n view: SavedView\n id: string\n onRename: (id: string, newName: string) => void\n onDelete: (id: string) => void\n existingNames: Set<string>\n validateViewNameChange: ViewManagement['validateViewNameChange']\n}\n\n/**\n * SortableItem component represents a draggable view item with rename and delete capabilities\n * Implements drag and drop functionality using dnd-kit\n * Handles real-time name validation and error states\n */\nconst SortableItem = memo<SortableItemProps>(\n ({ view, id, onRename, onDelete, existingNames, validateViewNameChange }) => {\n const [name, setName] = useState(view.name.trim())\n const [hasError, setHasError] = useState(false)\n\n // Initialize drag and drop functionality\n const { attributes, listeners, setNodeRef, transform, transition } = useSortable({ id })\n\n /**\n * Handles input changes for view name\n * Validates the new name in real-time and updates error state\n * Propagates changes to parent component\n * @param e - Change event from input\n */\n const handleChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n const newName = e.target.value\n setName(newName)\n\n const validation = validateViewNameChange(newName, view.name, existingNames)\n setHasError(validation.hasError)\n\n // Always update parent to reflect current state\n onRename(view.id, newName)\n },\n [view.id, view.name, existingNames, onRename, validateViewNameChange]\n )\n\n return (\n <div\n ref={setNodeRef}\n style={{ transform: CSS.Transform.toString(transform), transition }}\n className=\"flex items-center gap-x-2 rounded p-2 hover:bg-background-4\"\n >\n <div className=\"group cursor-move\" {...attributes} {...listeners}>\n <Icon\n className=\"text-icons-4 transition-colors duration-200 group-hover:text-icons-2\"\n name=\"grid-dots\"\n size={14}\n />\n </div>\n\n <Input\n theme={hasError ? 'danger' : 'default'}\n value={name}\n size=\"md\"\n placeholder=\"Enter a name\"\n onChange={handleChange}\n />\n\n <button\n className=\"text-icons-4 hover:text-icons-danger\"\n onClick={() => onDelete(view.id)}\n aria-label=\"Delete view\"\n >\n <Icon className=\"rotate-45\" name=\"plus\" size={14} />\n </button>\n </div>\n )\n }\n)\n\nSortableItem.displayName = 'SortableItem'\n\n/**\n * Interface for the ManageViews component\n * @property open - Controls dialog visibility\n * @property onOpenChange - Callback for dialog open state changes\n * @property views - Array of saved views\n * @property viewManagement - Object containing view management methods\n */\ninterface ManageViewsProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n views: SavedView[]\n viewManagement: Pick<\n ViewManagement,\n | 'setCurrentView'\n | 'updateViewsOrder'\n | 'prepareViewsForSave'\n | 'getExistingNames'\n | 'hasViewListChanges'\n | 'hasViewErrors'\n | 'validateViewNameChange'\n >\n}\n\n/**\n * ManageViews component provides interface for reordering, renaming and deleting saved views\n * Features:\n * - Drag and drop reordering\n * - Real-time name validation\n * - Local state management for changes\n * - Batch updates on save\n */\nconst ManageViews: FC<ManageViewsProps> = memo(({ open, onOpenChange, views, viewManagement }) => {\n const [localViews, setLocalViews] = useState<SavedView[]>([])\n\n /**\n * Syncs local state with props when dialog opens\n * Ensures fresh start for each editing session\n */\n useEffect(() => {\n if (open) setLocalViews(views)\n }, [open, views])\n\n /**\n * Memoized set of existing view names for validation\n * Updates when local views change\n */\n const existingNames = useMemo(() => viewManagement.getExistingNames(localViews), [localViews, viewManagement])\n\n /**\n * Handles local view rename operations\n * Updates only local state without persisting changes\n */\n const handleLocalRename = useCallback((viewId: string, newName: string) => {\n setLocalViews(prev => prev.map(view => (view.id === viewId ? { ...view, name: newName } : view)))\n }, [])\n\n /**\n * Handles local view deletion\n * Updates only local state without persisting changes\n */\n const handleLocalDelete = useCallback((viewId: string) => {\n setLocalViews(prev => prev.filter(v => v.id !== viewId))\n }, [])\n\n // Initialize drag and drop functionality\n const { handleDragEnd, getItemId } = useDragAndDrop({\n items: localViews,\n onReorder: setLocalViews\n })\n\n /**\n * Determines if save button should be disabled\n * Checks for changes and validation errors\n */\n const isSaveDisabled =\n !viewManagement.hasViewListChanges(localViews, views) || viewManagement.hasViewErrors(localViews)\n\n return (\n <AlertDialog.Root open={open} onOpenChange={onOpenChange}>\n <AlertDialog.Content className=\"max-w-[410px]\">\n <AlertDialog.Header>\n <AlertDialog.Title>Manage saved filters</AlertDialog.Title>\n </AlertDialog.Header>\n\n <div className=\"-mx-3.5 max-h-[320px] space-y-0.5 overflow-y-auto\">\n <DndContext onDragEnd={handleDragEnd}>\n <SortableContext\n items={localViews.map((_, index) => getItemId(index))}\n strategy={verticalListSortingStrategy}\n >\n {localViews.map((view, index) => (\n <SortableItem\n key={`${getItemId(index)}-${view.id}`}\n id={getItemId(index)}\n view={view}\n onRename={handleLocalRename}\n onDelete={handleLocalDelete}\n existingNames={existingNames}\n validateViewNameChange={viewManagement.validateViewNameChange}\n />\n ))}\n </SortableContext>\n </DndContext>\n </div>\n\n <AlertDialog.Footer>\n <Button\n variant=\"outline\"\n onClick={() => {\n setLocalViews(views)\n onOpenChange(false)\n }}\n >\n Cancel\n </Button>\n <Button\n onClick={() => {\n // Update views order first\n viewManagement.updateViewsOrder(viewManagement.prepareViewsForSave(localViews))\n\n // If all views were deleted, reset current view\n if (localViews.length === 0) {\n viewManagement.setCurrentView(null)\n }\n\n onOpenChange(false)\n }}\n disabled={isSaveDisabled}\n >\n Save\n </Button>\n </AlertDialog.Footer>\n </AlertDialog.Content>\n </AlertDialog.Root>\n )\n})\n\nManageViews.displayName = 'ManageViews'\n\nexport default ManageViews\n","import { FC, useState } from 'react'\n\nimport { DropdownMenu, Icon } from '@/components'\n\nimport { SavedView, ViewLayoutOption } from '../types'\n\ninterface ViewTriggerProps {\n savedViews: SavedView[]\n currentView: SavedView | null\n layoutOptions?: ViewLayoutOption[]\n currentLayout?: string\n onLayoutChange?: (layout: string) => void\n onManageClick: () => void\n onViewSelect: (view: SavedView) => void\n}\n\nconst ViewTrigger: FC<ViewTriggerProps> = ({\n savedViews,\n currentView,\n layoutOptions,\n currentLayout,\n onLayoutChange,\n onManageClick,\n onViewSelect\n}) => {\n const [isOpen, setIsOpen] = useState(false)\n\n const handleManageClick = () => {\n setIsOpen(false)\n onManageClick()\n }\n\n return (\n <DropdownMenu.Root open={isOpen} onOpenChange={setIsOpen}>\n <DropdownMenu.Trigger className=\"flex items-center gap-x-1.5\">\n <span className=\"flex items-center gap-x-1 text-14 text-foreground-2 hover:text-foreground-1\">\n View\n <Icon className=\"chevron-down text-icons-4\" name=\"chevron-fill-down\" size={6} />\n </span>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content className=\"max-h-[358px] w-56 overflow-y-auto\" align=\"end\">\n {!!layoutOptions?.length && (\n <>\n <div className=\"px-2 py-2.5\">\n <span className=\"text-13 leading-none text-foreground-7\">Layout</span>\n </div>\n {layoutOptions.map(option => (\n <DropdownMenu.Item key={option.value} onSelect={() => onLayoutChange?.(option.value)} className=\"gap-x-2\">\n <span>{option.label}</span>\n {currentLayout === option.value && <Icon name=\"tick\" size={12} className=\"ml-auto text-foreground-8\" />}\n </DropdownMenu.Item>\n ))}\n </>\n )}\n\n {savedViews.length > 0 && (\n <>\n {!!layoutOptions?.length && <DropdownMenu.Separator />}\n <div className=\"px-2 py-1.5\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-13 leading-none text-foreground-7\">Saved views</span>\n <button\n className=\"text-13 text-foreground-accent transition-colors duration-200 hover:text-foreground-1\"\n onClick={handleManageClick}\n >\n Manage\n </button>\n </div>\n </div>\n {savedViews.map(view => (\n <DropdownMenu.Item key={view.id} className=\"gap-x-2\" onSelect={() => onViewSelect(view)}>\n <span>{view.name}</span>\n {currentView?.id === view.id && <Icon name=\"tick\" size={12} className=\"ml-auto text-foreground-8\" />}\n </DropdownMenu.Item>\n ))}\n </>\n )}\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n )\n}\n\nexport default ViewTrigger\n","import { useState } from 'react'\n\nimport { TFunction } from 'i18next'\n\nimport ManageViews from './manage-views'\nimport FilterTrigger from './triggers/filter-trigger'\nimport ViewTrigger from './triggers/view-trigger'\nimport { FilterHandlers, FilterOption, SortOption, ViewLayoutOption, ViewManagement } from './types'\n\ninterface FiltersProps {\n showFilter?: boolean\n showSort?: boolean\n filterOptions: FilterOption[]\n sortOptions: SortOption[]\n filterHandlers: Pick<\n FilterHandlers,\n | 'activeFilters'\n | 'activeSorts'\n | 'handleFilterChange'\n | 'handleResetFilters'\n | 'searchQueries'\n | 'handleSearchChange'\n | 'handleSortChange'\n | 'handleResetSorts'\n >\n /**\n * Optional view management configuration.\n * If provided, enables saving and managing filter views\n */\n viewManagement?: Pick<\n ViewManagement,\n | 'savedViews'\n | 'currentView'\n | 'hasActiveViewChanges'\n | 'checkNameExists'\n | 'validateViewName'\n | 'hasViewErrors'\n | 'hasViewListChanges'\n | 'applyView'\n | 'setCurrentView'\n | 'updateViewsOrder'\n | 'prepareViewsForSave'\n | 'getExistingNames'\n | 'validateViewNameChange'\n >\n layoutOptions?: ViewLayoutOption[]\n currentLayout?: string\n onLayoutChange?: (layout: string) => void\n t: TFunction\n}\n\n/**\n * Filters component for handling filtering, sorting, and view management\n * @example\n * ```tsx\n * <Filters\n * filterOptions={[\n * { id: 'status', label: 'Status', options: ['Active', 'Inactive'] },\n * { id: 'type', label: 'Type', options: ['Public', 'Private'] }\n * ]}\n * sortOptions={[\n * { id: 'name', label: 'Name' },\n * { id: 'date', label: 'Date' }\n * ]}\n * filterHandlers={filterHandlers}\n * // Optional: Enable view management\n * viewManagement={viewManagement}\n * t={t}\n * />\n * ```\n */\nconst Filters = ({\n showFilter = true,\n showSort = true,\n filterOptions,\n sortOptions,\n filterHandlers: {\n activeFilters,\n activeSorts,\n handleFilterChange,\n handleResetFilters,\n searchQueries,\n handleSearchChange,\n handleSortChange,\n handleResetSorts\n },\n viewManagement,\n layoutOptions,\n currentLayout,\n onLayoutChange,\n t\n}: FiltersProps) => {\n const [isManageDialogOpen, setIsManageDialogOpen] = useState(false)\n\n return (\n <>\n <div className=\"flex items-center gap-x-5\">\n {showFilter && (\n <FilterTrigger\n type=\"filter\"\n activeFilters={activeFilters}\n onChange={handleFilterChange}\n onReset={handleResetFilters}\n searchQueries={searchQueries}\n onSearchChange={handleSearchChange}\n options={filterOptions}\n t={t}\n />\n )}\n\n {showSort && (\n <FilterTrigger\n type=\"sort\"\n activeFilters={activeSorts}\n onChange={handleSortChange}\n onReset={handleResetSorts}\n searchQueries={searchQueries}\n onSearchChange={handleSearchChange}\n options={sortOptions}\n t={t}\n />\n )}\n\n {viewManagement && (!!viewManagement.savedViews.length || !!layoutOptions?.length) && (\n <ViewTrigger\n savedViews={viewManagement.savedViews}\n currentView={viewManagement.currentView}\n layoutOptions={layoutOptions}\n currentLayout={currentLayout}\n onLayoutChange={onLayoutChange ?? (() => {})}\n onManageClick={() => setIsManageDialogOpen(true)}\n onViewSelect={viewManagement.applyView}\n />\n )}\n </div>\n\n {viewManagement && (\n <ManageViews\n open={isManageDialogOpen}\n onOpenChange={setIsManageDialogOpen}\n views={viewManagement.savedViews}\n viewManagement={viewManagement}\n />\n )}\n </>\n )\n}\n\nexport default Filters\n","import { useState } from 'react'\n\nimport { Input, Calendar as UICalendar, type CalendarDateRange } from '@/components'\nimport { cn } from '@utils/cn'\n\nimport { FilterHandlers, FilterValue } from '../../../types'\n\ninterface CalendarProps {\n filter: FilterValue\n onUpdateFilter: FilterHandlers['handleUpdateFilter']\n}\n\ninterface DateInputState {\n value: string\n isError: boolean\n}\n\ninterface ParsedDateResult {\n date: Date | null\n formattedValue: string\n}\n\ninterface RangeState {\n from: DateInputState\n to: DateInputState\n month: Date\n range: CalendarDateRange | undefined\n}\n\ninterface SingleState {\n input: DateInputState\n date: Date | undefined\n month: Date\n}\n\n/**\n * Formats a date for display in the input field using MM.DD.YYYY format\n */\nconst formatDateForInput = (date: Date | undefined): string => {\n if (!date) return ''\n const month = (date.getMonth() + 1).toString().padStart(2, '0')\n const day = date.getDate().toString().padStart(2, '0')\n const year = date.getFullYear()\n return `${month}.${day}.${year}`\n}\n\n/**\n * Parses a date string in various formats and returns a Date object with formatted value\n * Supported formats:\n * - MM.DD.YY -> automatically converts to MM.DD.YYYY\n * - MM.DD.YYYY\n * - MM/DD/YY -> automatically converts to MM/DD/YYYY\n * - MM/DD/YYYY\n */\nconst parseDateString = (dateStr: string): ParsedDateResult => {\n try {\n dateStr = dateStr.trim()\n\n // Check format for both two-digit and four-digit years\n const dateRegex = /^(0?[1-9]|1[0-2])[./](0?[1-9]|[12]\\d|3[01])[./](\\d{2}|\\d{4})$/\n if (!dateRegex.test(dateStr)) {\n return { date: null, formattedValue: dateStr }\n }\n\n const separators = /[./]/\n const parts = dateStr.split(separators)\n const separator = dateStr.includes('.') ? '.' : '/'\n\n if (parts.length !== 3) {\n return { date: null, formattedValue: dateStr }\n }\n\n const month = parseInt(parts[0])\n const day = parseInt(parts[1])\n let year = parseInt(parts[2])\n\n // Convert two-digit year to four-digit\n if (parts[2].length === 2) {\n year = 2000 + year\n }\n\n // Validate date values\n if (\n isNaN(day) ||\n isNaN(month) ||\n isNaN(year) ||\n day < 1 ||\n day > 31 ||\n month < 1 ||\n month > 12 ||\n year < 1900 ||\n year > 2100\n ) {\n return { date: null, formattedValue: dateStr }\n }\n\n // Validate date existence\n const date = new Date(year, month - 1, day)\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return { date: null, formattedValue: dateStr }\n }\n\n // Format value with leading zeros\n const formattedMonth = month.toString().padStart(2, '0')\n const formattedDay = day.toString().padStart(2, '0')\n const formattedValue = `${formattedMonth}${separator}${formattedDay}${separator}${year}`\n\n return { date, formattedValue }\n } catch (error) {\n console.error('Error parsing date:', error)\n return { date: null, formattedValue: dateStr }\n }\n}\n\nconst Calendar = ({ filter, onUpdateFilter }: CalendarProps) => {\n // Initialize states based on filter mode\n const isBetweenMode = filter.condition === 'is_between'\n const initialDate = filter.selectedValues[0] ? new Date(filter.selectedValues[0]) : new Date()\n\n // State for range mode\n const [rangeState, setRangeState] = useState<RangeState>({\n from: {\n value: filter.selectedValues[0] ? formatDateForInput(new Date(filter.selectedValues[0])) : '',\n isError: false\n },\n to: {\n value: filter.selectedValues[1] ? formatDateForInput(new Date(filter.selectedValues[1])) : '',\n isError: false\n },\n month: initialDate,\n range:\n filter.selectedValues.length === 2\n ? {\n from: new Date(filter.selectedValues[0]),\n to: new Date(filter.selectedValues[1])\n }\n : undefined\n })\n\n // State for single mode\n const [singleState, setSingleState] = useState<SingleState>({\n input: {\n value: filter.selectedValues[0] ? formatDateForInput(new Date(filter.selectedValues[0])) : '',\n isError: false\n },\n date: filter.selectedValues[0] ? new Date(filter.selectedValues[0]) : undefined,\n month: initialDate\n })\n\n /**\n * Handles date input changes and resets error state\n */\n const handleDateInput = (value: string, type?: 'from' | 'to') => {\n if (isBetweenMode) {\n setRangeState(prev => ({\n ...prev,\n [type === 'from' ? 'from' : 'to']: { value, isError: false }\n }))\n } else {\n setSingleState(prev => ({\n ...prev,\n input: { value, isError: false }\n }))\n }\n }\n\n /**\n * Handles date confirmation on Enter or blur\n */\n const handleDateConfirm = (value: string, type?: 'from' | 'to') => {\n // If value is empty, don't show error\n if (!value.trim()) {\n if (isBetweenMode) {\n setRangeState(prev => ({\n ...prev,\n [type === 'from' ? 'from' : 'to']: { value: '', isError: false }\n }))\n } else {\n setSingleState(prev => ({\n ...prev,\n input: { value: '', isError: false }\n }))\n }\n return\n }\n\n const { date: parsedDate, formattedValue } = parseDateString(value)\n\n if (isBetweenMode) {\n handleRangeDateConfirm(parsedDate, formattedValue, type as 'from' | 'to')\n } else {\n handleSingleDateConfirm(parsedDate, formattedValue)\n }\n }\n\n /**\n * Handles date confirmation for range mode\n */\n const handleRangeDateConfirm = (parsedDate: Date | null, formattedValue: string, type: 'from' | 'to') => {\n setRangeState(prev => {\n const newState = {\n ...prev,\n [type]: {\n value: formattedValue,\n // Show error only if value is not empty and incorrect\n isError: formattedValue.trim() !== '' && !parsedDate\n }\n }\n\n if (parsedDate) {\n newState.month = parsedDate\n newState.range = {\n ...prev.range,\n [type]: parsedDate\n } as CalendarDateRange\n } else {\n newState.range = {\n ...prev.range,\n [type]: undefined\n } as CalendarDateRange\n }\n\n return newState\n })\n\n // Update filter\n if (parsedDate) {\n const newRange =\n type === 'from'\n ? { from: parsedDate, to: rangeState.range?.to }\n : { from: rangeState.range?.from, to: parsedDate }\n\n if (newRange.from && newRange.to) {\n onUpdateFilter(filter.type, [newRange.from.toISOString(), newRange.to.toISOString()])\n } else if (newRange.from) {\n onUpdateFilter(filter.type, [newRange.from.toISOString()])\n } else if (newRange.to) {\n onUpdateFilter(filter.type, [newRange.to.toISOString()])\n }\n }\n }\n\n /**\n * Handles date confirmation for single mode\n */\n const handleSingleDateConfirm = (parsedDate: Date | null, formattedValue: string) => {\n setSingleState(prev => ({\n ...prev,\n input: {\n value: formattedValue,\n // Show error only if value is not empty and incorrect\n isError: formattedValue.trim() !== '' && !parsedDate\n },\n date: parsedDate || undefined,\n month: parsedDate || prev.month\n }))\n\n if (parsedDate) {\n onUpdateFilter(filter.type, [parsedDate.toISOString()])\n } else {\n onUpdateFilter(filter.type, [])\n }\n }\n\n /**\n * Handles keyboard events\n */\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>, type?: 'from' | 'to') => {\n if (e.key === 'Enter') {\n const value = isBetweenMode\n ? type === 'from'\n ? rangeState.from.value\n : rangeState.to.value\n : singleState.input.value\n handleDateConfirm(value, type)\n }\n }\n\n if (isBetweenMode) {\n return (\n <div className=\"flex flex-col\">\n <div className=\"grid max-w-[240px] grid-cols-2 items-center gap-x-2 px-3\">\n <Input\n type=\"text\"\n className={cn({\n 'border-borders-danger focus:border-borders-danger': rangeState.from.isError\n })}\n value={rangeState.from.value}\n onChange={e => handleDateInput(e.target.value, 'from')}\n onBlur={e => handleDateConfirm(e.target.value, 'from')}\n onKeyDown={e => handleKeyDown(e, 'from')}\n placeholder=\"Starting\"\n />\n\n <Input\n type=\"text\"\n className={cn({\n 'border-borders-danger focus:border-borders-danger': rangeState.to.isError\n })}\n value={rangeState.to.value}\n onChange={e => handleDateInput(e.target.value, 'to')}\n onBlur={e => handleDateConfirm(e.target.value, 'to')}\n onKeyDown={e => handleKeyDown(e, 'to')}\n placeholder=\"Ending\"\n />\n </div>\n <div className=\"mt-2.5 px-2 pb-3 pt-1\">\n <UICalendar\n className=\"p-0\"\n mode=\"range\"\n selected={rangeState.range}\n month={rangeState.month}\n onMonthChange={month => setRangeState(prev => ({ ...prev, month }))}\n onSelect={(value: CalendarDateRange | undefined) => {\n if (value) {\n setRangeState(prev => ({\n ...prev,\n range: value,\n from: { value: formatDateForInput(value.from), isError: false },\n to: { value: formatDateForInput(value.to), isError: false },\n month: value.from || prev.month\n }))\n\n if (value.from && value.to) {\n onUpdateFilter(filter.type, [value.from.toISOString(), value.to.toISOString()])\n }\n }\n }}\n initialFocus\n />\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"flex flex-col gap-2\">\n <div className=\"px-3\">\n <Input\n type=\"text\"\n className={cn({\n 'border-borders-danger focus:border-borders-danger': singleState.input.isError\n })}\n value={singleState.input.value}\n onChange={e => handleDateInput(e.target.value)}\n onBlur={e => handleDateConfirm(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder=\"Select or type a date...\"\n />\n </div>\n <div className=\"mt-2.5 px-2 pb-3 pt-1\">\n <UICalendar\n className=\"p-0\"\n mode=\"single\"\n selected={singleState.date}\n month={singleState.month}\n onMonthChange={month => setSingleState(prev => ({ ...prev, month }))}\n onSelect={(value: Date | undefined) => {\n if (value) {\n setSingleState(prev => ({\n ...prev,\n date: value,\n month: value\n }))\n onUpdateFilter(filter.type, [value.toISOString()])\n }\n }}\n initialFocus\n />\n </div>\n </div>\n )\n}\n\nexport default Calendar\n","import { DropdownMenu, Icon, Input } from '@/components'\n\nimport { CheckboxFilterOption, FilterHandlers, FilterValue } from '../../../types'\nimport { getFilteredOptions } from '../../../utils'\n\ninterface CheckboxFilterProps {\n filter: FilterValue\n filterOption: CheckboxFilterOption\n onUpdateFilter: FilterHandlers['handleUpdateFilter']\n searchQueries: FilterHandlers['searchQueries']\n handleSearchChange: FilterHandlers['handleSearchChange']\n}\n\nconst Checkbox = ({ filter, filterOption, onUpdateFilter, searchQueries, handleSearchChange }: CheckboxFilterProps) => {\n const filteredOptions = getFilteredOptions(filterOption, filter, searchQueries)\n\n return (\n <>\n {filter.condition !== 'is_empty' && (\n <div className=\"border-b border-borders-1 px-3 pb-2.5\">\n <div className=\"flex min-h-8 justify-between gap-x-1 rounded border border-borders-2 px-1 py-[3px] outline-none transition-colors duration-200 focus-within:border focus-within:border-borders-3\">\n <div className=\"flex flex-1 flex-wrap items-center gap-1\">\n {!!filter.selectedValues.length &&\n filter.selectedValues.map(value => {\n const label = filterOption.options?.find(opt => opt.value === value)?.label\n return (\n <div className=\"flex h-6 items-center gap-x-1.5 rounded bg-background-8 px-2\" key={value}>\n <span className=\"text-14 text-foreground-8\">{label}</span>\n <button\n className=\"text-icons-1 transition-colors duration-200 hover:text-foreground-1\"\n onClick={() => {\n const newValues = filter.selectedValues.filter(v => v !== value)\n onUpdateFilter(filter.type, newValues)\n }}\n >\n <Icon className=\"rotate-45\" name=\"plus\" size={10} />\n </button>\n </div>\n )\n })}\n\n <Input\n className=\"h-6 flex-1 border-none outline-none hover:border-none focus:border-none focus-visible:ring-0\"\n type=\"text\"\n placeholder={filter.selectedValues.length ? '' : 'Select one or more options...'}\n value={searchQueries.filters[filter.type] || ''}\n onChange={e => handleSearchChange?.(filter.type, e.target.value, 'filters')}\n onClick={e => {\n e.preventDefault()\n }}\n onKeyDown={e => e.stopPropagation()}\n />\n </div>\n {(!!filter.selectedValues.length || searchQueries.filters[filter.type]) && (\n <button\n className=\"flex p-1.5 text-foreground-4 transition-colors duration-200 hover:text-foreground-1\"\n onClick={() => {\n onUpdateFilter(filter.type, [])\n handleSearchChange?.(filter.type, '', 'filters')\n }}\n aria-label=\"Clear filter\"\n >\n <Icon className=\"rotate-45\" name=\"plus\" size={12} />\n </button>\n )}\n </div>\n </div>\n )}\n\n {!!filteredOptions.length && (\n <div className=\"px-2 py-1\">\n {filteredOptions.map(option => (\n <DropdownMenu.CheckboxItem\n className=\"pl-[34px]\"\n checked={filter.selectedValues.includes(option.value)}\n onSelect={event => {\n event?.preventDefault()\n event?.stopPropagation()\n const newValues = filter.selectedValues.includes(option.value)\n ? filter.selectedValues.filter(v => v !== option.value)\n : [...filter.selectedValues, option.value]\n onUpdateFilter(filter.type, newValues)\n }}\n key={option.value}\n >\n {option.label}\n </DropdownMenu.CheckboxItem>\n ))}\n </div>\n )}\n </>\n )\n}\n\nexport default Checkbox\n","import { useState } from 'react'\n\nimport { Icon, Input } from '@/components'\n\nimport { FilterHandlers, FilterValue } from '../../../types'\n\ninterface NumberFilterProps {\n filter: FilterValue\n onUpdateFilter: FilterHandlers['handleUpdateFilter']\n}\n\nconst Number = ({ filter, onUpdateFilter }: NumberFilterProps) => {\n const [value, setValue] = useState<string>(filter.selectedValues[0] || '')\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value\n\n if (!/^\\d*\\.?\\d*$/.test(newValue) && newValue !== '') {\n return\n }\n\n setValue(newValue)\n\n if (filter.condition === 'is_empty' || filter.condition === 'is_not_empty') {\n onUpdateFilter(filter.type, [])\n return\n }\n\n if (!newValue) {\n onUpdateFilter(filter.type, [])\n return\n }\n\n onUpdateFilter(filter.type, [newValue])\n }\n\n const handleClear = () => {\n setValue('')\n onUpdateFilter(filter.type, [])\n }\n\n if (filter.condition === 'is_empty' || filter.condition === 'is_not_empty') {\n return null\n }\n\n return (\n <div className=\"relative flex items-center px-2 pb-2.5\">\n <Input\n className=\"w-full\"\n type=\"text\"\n value={value}\n placeholder=\"Type a value...\"\n onChange={handleInputChange}\n onClick={e => {\n e.stopPropagation()\n e.preventDefault()\n }}\n />\n\n {value && (\n <button\n className=\"absolute right-3 text-icons-1 transition-colors duration-200 hover:text-foreground-1\"\n onClick={e => {\n e.stopPropagation()\n handleClear()\n }}\n aria-label=\"Clear filter\"\n >\n <Icon className=\"rotate-45\" name=\"plus\" size={10} />\n </button>\n )}\n </div>\n )\n}\n\nexport default Number\n","import { useState } from 'react'\n\nimport { DropdownMenu, Icon, Input } from '@/components'\n\nimport { FilterHandlers, FilterValue } from '../../../types'\n\ninterface TextFilterProps {\n filter: FilterValue\n onUpdateFilter: FilterHandlers['handleUpdateFilter']\n}\n\nconst Text = ({ filter, onUpdateFilter }: TextFilterProps) => {\n const [value, setValue] = useState<string>(filter.selectedValues[0] || '')\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value\n setValue(newValue)\n\n if (filter.condition === 'is_empty' || filter.condition === 'is_not_empty') {\n onUpdateFilter(filter.type, [])\n return\n }\n\n if (!newValue) {\n onUpdateFilter(filter.type, [])\n return\n }\n\n onUpdateFilter(filter.type, [newValue])\n }\n\n const handleClear = () => {\n setValue('')\n onUpdateFilter(filter.type, [])\n }\n\n if (filter.condition === 'is_empty' || filter.condition === 'is_not_empty') {\n return null\n }\n\n return (\n <div className=\"flex items-center px-2 pb-2.5\">\n <DropdownMenu.Item className=\"relative w-full p-0\">\n <Input\n className=\"w-full\"\n value={value}\n placeholder=\"Type a value...\"\n onChange={handleInputChange}\n onClick={e => {\n e.stopPropagation()\n e.preventDefault()\n }}\n />\n\n {value && (\n <button\n className=\"absolute right-3 text-icons-1 transition-colors duration-200 hover:text-foreground-1\"\n onClick={e => {\n e.stopPropagation()\n handleClear()\n }}\n aria-label=\"Clear filter\"\n >\n <Icon className=\"rotate-45\" name=\"plus\" size={10} />\n </button>\n )}\n </DropdownMenu.Item>\n </div>\n )\n}\n\nexport default Text\n","import { useEffect, useState } from 'react'\n\nimport { DropdownMenu, Icon } from '@/components'\nimport { cn } from '@utils/cn'\n\nimport type {\n CheckboxFilterOption,\n FilterAction,\n FilterHandlers,\n FilterOption,\n FilterSearchQueries,\n FilterValue\n} from '../../types'\nimport { getFilterDisplayValue, getFilteredOptions } from '../../utils'\nimport Calendar from './variants/calendar'\nimport Checkbox from './variants/checkbox'\nimport Number from './variants/number'\nimport Text from './variants/text'\n\nconst renderFilterValues = (\n filter: FilterValue,\n filterOption: FilterOption,\n onUpdateFilter: FilterHandlers['handleUpdateFilter'],\n searchQueries: FilterSearchQueries,\n handleSearchChange: FilterHandlers['handleSearchChange'],\n filteredOptions?: CheckboxFilterOption['options']\n) => {\n if (!onUpdateFilter) return null\n\n switch (filterOption.type) {\n case 'checkbox':\n return (\n <Checkbox\n filter={filter}\n filterOption={{\n ...filterOption,\n options: filteredOptions || (filterOption as CheckboxFilterOption).options\n }}\n onUpdateFilter={onUpdateFilter}\n searchQueries={searchQueries}\n handleSearchChange={handleSearchChange}\n />\n )\n case 'calendar':\n return <Calendar filter={filter} onUpdateFilter={onUpdateFilter} />\n case 'text':\n return <Text filter={filter} onUpdateFilter={onUpdateFilter} />\n case 'number':\n return <Number filter={filter} onUpdateFilter={onUpdateFilter} />\n default:\n return null\n }\n}\n\ninterface FiltersProps {\n filter: FilterValue\n filterOptions: FilterOption[]\n handleUpdateFilter: FilterHandlers['handleUpdateFilter']\n handleRemoveFilter: FilterHandlers['handleRemoveFilter']\n handleUpdateCondition: FilterHandlers['handleUpdateCondition']\n handleSearchChange: FilterHandlers['handleSearchChange']\n searchQueries: FilterSearchQueries\n filterToOpen: FilterAction | null\n onOpen?: () => void\n}\n\nconst Filters = ({\n filter,\n filterOptions,\n handleUpdateFilter,\n handleUpdateCondition,\n handleRemoveFilter,\n handleSearchChange,\n searchQueries,\n filterToOpen,\n onOpen\n}: FiltersProps) => {\n const [isOpen, setIsOpen] = useState(false)\n\n useEffect(() => {\n if (filterToOpen?.type === filter.type && filterToOpen?.kind === 'filter' && !isOpen) {\n setIsOpen(true)\n onOpen?.()\n }\n }, [filterToOpen, filter.type, isOpen, onOpen])\n\n const filterOption = filterOptions.find(opt => opt.value === filter.type)\n if (!filterOption) return null\n\n return (\n <DropdownMenu.Root key={filter.type} open={isOpen} onOpenChange={setIsOpen}>\n <DropdownMenu.Trigger className=\"flex h-8 items-center gap-x-3 whitespace-nowrap rounded bg-background-3 pl-2.5 pr-2 transition-colors duration-200 hover:bg-background-8\">\n <div className=\"flex items-center gap-x-1.5 text-13\">\n <span className=\"text-foreground-1\">\n {filterOption.label}\n {!!filter.selectedValues.length && ': '}\n </span>\n <span className=\"text-foreground-4\">{getFilterDisplayValue(filterOption, filter)}</span>\n </div>\n <Icon className=\"chevron-down text-icons-1\" name=\"chevron-down\" size={10} />\n </DropdownMenu.Trigger>\n\n <DropdownMenu.Content\n className={cn('w-[276px] p-0', {\n 'w-max': filterOption.type === 'calendar'\n })}\n align=\"start\"\n >\n <div className=\"flex items-center justify-between px-3 py-2.5\">\n <div className=\"flex w-full items-center justify-between gap-x-2\">\n <div className=\"flex items-center gap-x-2\">\n <span className=\"text-14 text-foreground-4\">{filterOption.label}</span>\n\n <DropdownMenu.Root>\n <DropdownMenu.Trigger className=\"flex h-[18px] items-center gap-x-1 rounded bg-background-3 pl-1.5 pr-1 text-14 text-foreground-2\">\n {filterOption.conditions?.find(c => c.value === filter.condition)?.label}\n <Icon className=\"chevron-down text-icons-1\" name=\"chevron-down\" size={10} />\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"start\">\n {filterOption.conditions?.map(condition => (\n <DropdownMenu.Item\n onSelect={() => handleUpdateCondition?.(filter.type, condition.value)}\n key={condition.value}\n >\n {condition.label}\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n </div>\n\n <DropdownMenu.Root>\n <DropdownMenu.Trigger className=\"group flex h-[18px] items-center px-1\">\n <Icon\n className=\"text-icons-1 transition-colors duration-200 group-hover:text-foreground-1\"\n name=\"more-dots-fill\"\n size={12}\n />\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"start\">\n <DropdownMenu.Item\n className=\"text-foreground-4 duration-200 hover:text-foreground-danger data-[highlighted]:bg-transparent data-[highlighted]:text-foreground-danger data-[highlighted]:outline-none\"\n onSelect={() => handleRemoveFilter?.(filter.type)}\n >\n <button className=\"flex items-center gap-x-1.5 text-14\">\n <Icon name=\"trash\" size={12} />\n Delete filter\n </button>\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n </div>\n </div>\n\n <div>\n {filter.condition !== 'is_empty' &&\n renderFilterValues(filter, filterOption, handleUpdateFilter, searchQueries, handleSearchChange)}\n\n {filterOption.type === 'checkbox' && getFilteredOptions(filterOption, filter, searchQueries).length === 0 && (\n <div className=\"flex items-center justify-center p-4\">\n <span className=\"text-1 leading-none text-foreground-2\">No results</span>\n </div>\n )}\n </div>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n )\n}\n\nexport default Filters\n","import { FC, useEffect, useState } from 'react'\n\nimport { AlertDialog, Button, DropdownMenu, Icon, Input } from '@/components'\n\nimport { FilterValue, SavedView, SortValue, ViewManagement } from '../../types'\n\n/**\n * Views component handles the management of filter views including creation, updating, renaming and deletion.\n * It provides UI for saving current filter/sort configurations as named views and managing existing ones.\n */\ninterface ViewsProps {\n currentView: SavedView | null\n savedViews: SavedView[]\n viewManagement: Pick<ViewManagement, 'checkNameExists' | 'saveView' | 'updateView' | 'deleteView' | 'renameView'> & {\n activeFilters: FilterValue[]\n activeSorts: SortValue[]\n }\n hasChanges: boolean\n}\n\nconst Views: FC<ViewsProps> = ({ currentView, viewManagement, hasChanges }) => {\n /**\n * Dialog states for creating new view and renaming existing one\n */\n const [isNewViewDialogOpen, setIsNewViewDialogOpen] = useState(false)\n const [isRenameDialogOpen, setIsRenameDialogOpen] = useState(false)\n const [newViewName, setNewViewName] = useState('')\n const [nameError, setNameError] = useState('')\n\n /**\n * Effect handles real-time validation of view names\n * - For new views: checks if name already exists\n * - For renaming: checks if new name exists excluding current view\n * - Skips validation for empty names (handled by button disable state)\n */\n useEffect(() => {\n const trimmedName = newViewName.trim()\n\n if (!trimmedName) {\n setNameError('')\n return\n }\n\n if (isRenameDialogOpen && currentView) {\n if (trimmedName === currentView.name) {\n setNameError('')\n return\n }\n\n if (viewManagement.checkNameExists(trimmedName, currentView.id)) {\n setNameError('A view with this name already exists')\n } else {\n setNameError('')\n }\n } else {\n if (viewManagement.checkNameExists(trimmedName)) {\n setNameError('A view with this name already exists')\n } else {\n setNameError('')\n }\n }\n }, [newViewName, currentView, isRenameDialogOpen, viewManagement])\n\n /**\n * Resets error state when dialogs are opened/closed\n * to ensure clean state for next interaction\n */\n useEffect(() => {\n setNameError('')\n }, [isNewViewDialogOpen, isRenameDialogOpen])\n\n /**\n * Handles saving a new view with current filters and sorts\n * Validates name existence before saving\n * Closes dialog and resets form state after successful save\n */\n const handleSaveNewView = () => {\n const trimmedName = newViewName.trim()\n if (viewManagement.checkNameExists(trimmedName)) return\n\n viewManagement.saveView(trimmedName, viewManagement.activeFilters, viewManagement.activeSorts)\n setNewViewName('')\n setNameError('')\n setIsNewViewDialogOpen(false)\n }\n\n /**\n * Handles renaming an existing view\n * Validates new name doesn't conflict with other views\n * Updates view name and closes dialog on success\n */\n const handleRename = () => {\n if (!currentView) return\n\n const trimmedName = newViewName.trim()\n if (viewManagement.checkNameExists(trimmedName, currentView.id)) return\n\n viewManagement.renameView(currentView.id, trimmedName)\n setNewViewName('')\n setNameError('')\n setIsRenameDialogOpen(false)\n }\n\n /**\n * Updates current view with latest filter and sort configurations\n * Used when user modifies filters/sorts and wants to update existing view\n */\n const handleUpdateCurrentView = () => {\n if (!currentView) return\n\n const updatedView = {\n ...currentView,\n filters: viewManagement.activeFilters,\n sorts: viewManagement.activeSorts\n }\n viewManagement.updateView(updatedView)\n }\n\n /**\n * Validation flags for enabling/disabling save buttons\n * - canSaveNew: checks if new view name is valid and unique\n * - canRename: checks if new name is valid, different from current, and unique\n */\n const canSaveNew = newViewName.trim() !== '' && !viewManagement.checkNameExists(newViewName.trim())\n const canRename =\n currentView &&\n newViewName.trim() !== '' &&\n newViewName.trim() !== currentView.name &&\n !viewManagement.checkNameExists(newViewName.trim(), currentView.id)\n\n return (\n <>\n {!currentView ? (\n <Button\n className=\"flex items-center gap-x-1.5 px-0 text-14 text-foreground-4 transition-colors duration-200 hover:text-foreground-1\"\n variant=\"custom\"\n onClick={() => setIsNewViewDialogOpen(true)}\n >\n <Icon name=\"bookmark-add\" size={12} />\n <span>Save view</span>\n </Button>\n ) : (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <Button\n className=\"flex items-center gap-x-1.5 px-0 text-14 text-foreground-4 transition-colors duration-200 hover:text-foreground-1\"\n variant=\"custom\"\n >\n <Icon name=\"bookmark-icon\" size={12} />\n <span>Manage view</span>\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content className=\"w-48\" align=\"end\">\n {hasChanges && (\n <>\n <DropdownMenu.Item onSelect={handleUpdateCurrentView}>Update current view</DropdownMenu.Item>\n <DropdownMenu.Item onSelect={() => setIsNewViewDialogOpen(true)}>Save as new view</DropdownMenu.Item>\n </>\n )}\n <DropdownMenu.Item\n onSelect={() => {\n setNewViewName(currentView.name)\n setIsRenameDialogOpen(true)\n }}\n >\n Rename\n </DropdownMenu.Item>\n <DropdownMenu.Item\n className=\"text-foreground-danger\"\n onSelect={() => viewManagement.deleteView(currentView.id)}\n >\n Delete view\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n )}\n\n <AlertDialog.Root open={isNewViewDialogOpen} onOpenChange={setIsNewViewDialogOpen}>\n <AlertDialog.Content className=\"max-w-[460px]\">\n <AlertDialog.Header>\n <AlertDialog.Title>New view</AlertDialog.Title>\n </AlertDialog.Header>\n <AlertDialog.Description variant=\"secondary\">\n You can save current configuration of the view. Manage and switch them through the{' '}\n <strong className=\"text-foreground-1\">View</strong> dropdown.\n </AlertDialog.Description>\n\n <div className=\"pb-4 pt-3\">\n <Input\n label=\"Name\"\n placeholder=\"Enter view name\"\n value={newViewName}\n size=\"md\"\n error={nameError}\n onChange={e => {\n setNewViewName(e.target.value)\n }}\n />\n </div>\n <AlertDialog.Footer>\n <Button\n variant=\"outline\"\n onClick={() => {\n setIsNewViewDialogOpen(false)\n setNameError('')\n setNewViewName('')\n }}\n >\n Cancel\n </Button>\n <Button onClick={handleSaveNewView} disabled={!canSaveNew}>\n Save\n </Button>\n </AlertDialog.Footer>\n </AlertDialog.Content>\n </AlertDialog.Root>\n\n <AlertDialog.Root open={isRenameDialogOpen} onOpenChange={setIsRenameDialogOpen}>\n <AlertDialog.Content className=\"max-w-[460px]\">\n <AlertDialog.Header>\n <AlertDialog.Title>Rename view</AlertDialog.Title>\n </AlertDialog.Header>\n\n <div className=\"py-4\">\n <Input\n label=\"Name\"\n placeholder=\"Enter new name\"\n value={newViewName}\n size=\"md\"\n error={nameError}\n onChange={e => {\n setNewViewName(e.target.value)\n }}\n />\n </div>\n\n <AlertDialog.Footer>\n <Button\n variant=\"outline\"\n onClick={() => {\n setIsRenameDialogOpen(false)\n setNameError('')\n setNewViewName('')\n }}\n >\n Cancel\n </Button>\n <Button onClick={handleRename} disabled={!canRename}>\n Save\n </Button>\n </AlertDialog.Footer>\n </AlertDialog.Content>\n </AlertDialog.Root>\n </>\n )\n}\n\nexport default Views\n","import { Icon } from '@/components'\nimport { TFunction } from 'i18next'\n\nimport FilterTrigger from '../triggers/filter-trigger'\nimport { FilterHandlers, FilterOption, SortDirection, SortOption, ViewManagement } from '../types'\nimport Filters from './actions/filters'\nimport Sorts from './actions/sorts'\nimport Views from './actions/views'\n\ninterface FiltersBarProps {\n filterOptions: FilterOption[]\n sortOptions: SortOption[]\n sortDirections: SortDirection[]\n t: TFunction\n filterHandlers: Pick<\n FilterHandlers,\n | 'activeFilters'\n | 'activeSorts'\n | 'handleUpdateFilter'\n | 'handleRemoveFilter'\n | 'handleFilterChange'\n | 'handleUpdateCondition'\n | 'handleUpdateSort'\n | 'handleRemoveSort'\n | 'handleSortChange'\n | 'handleResetSorts'\n | 'handleReorderSorts'\n | 'handleResetAll'\n | 'searchQueries'\n | 'handleSearchChange'\n | 'filterToOpen'\n | 'clearFilterToOpen'\n >\n /**\n * Optional view management configuration.\n * If provided, enables saving and managing filter views\n */\n viewManagement?: Pick<\n ViewManagement,\n | 'savedViews'\n | 'currentView'\n | 'hasActiveViewChanges'\n | 'checkNameExists'\n | 'saveView'\n | 'updateView'\n | 'deleteView'\n | 'renameView'\n >\n}\n\n/**\n * FiltersBar component displays active filters and sorts with the ability to manage them.\n * Shows up only when there are active filters or sorts.\n *\n * @example\n * ```tsx\n * <FiltersBar\n * filterOptions={[{ id: 'status', label: 'Status', options: ['Active', 'Inactive'] }]}\n * sortOptions={[{ id: 'name', label: 'Name' }]}\n * sortDirections={['asc', 'desc']}\n * filterHandlers={filterHandlers}\n * t={t}\n * // Optional: Enable view management\n * viewManagement={viewManagement}\n * />\n * ```\n */\nconst FiltersBar = ({\n filterOptions,\n sortOptions,\n sortDirections,\n t,\n filterHandlers,\n viewManagement\n}: FiltersBarProps) => {\n const {\n activeFilters,\n activeSorts,\n handleUpdateFilter,\n handleRemoveFilter,\n handleFilterChange,\n handleUpdateCondition,\n handleUpdateSort,\n handleRemoveSort,\n handleSortChange,\n handleResetSorts,\n handleReorderSorts,\n handleResetAll,\n searchQueries,\n handleSearchChange,\n filterToOpen,\n clearFilterToOpen\n } = filterHandlers\n\n const hasActiveFilters = !!activeFilters.length || !!activeSorts.length\n\n if (!hasActiveFilters) return null\n\n return (\n <div className=\"mt-2 flex items-center gap-x-2\">\n {!!activeSorts.length && (\n <Sorts\n activeSorts={activeSorts}\n handleSortChange={handleSortChange}\n handleUpdateSort={handleUpdateSort}\n handleRemoveSort={handleRemoveSort}\n handleResetSorts={handleResetSorts}\n sortOptions={sortOptions}\n sortDirections={sortDirections}\n searchQueries={searchQueries}\n handleSearchChange={handleSearchChange}\n handleReorderSorts={handleReorderSorts}\n filterToOpen={filterToOpen}\n onOpen={clearFilterToOpen}\n />\n )}\n\n {activeFilters.length > 0 && activeSorts.length > 0 && <div className=\"h-7 w-px bg-borders-1\" />}\n\n {activeFilters.map(filter => (\n <Filters\n key={filter.type}\n filter={filter}\n filterOptions={filterOptions}\n handleUpdateFilter={handleUpdateFilter}\n handleRemoveFilter={handleRemoveFilter}\n handleUpdateCondition={handleUpdateCondition}\n handleSearchChange={handleSearchChange}\n searchQueries={searchQueries}\n filterToOpen={filterToOpen}\n onOpen={clearFilterToOpen}\n />\n ))}\n\n {hasActiveFilters && (\n <div className=\"ml-2.5 flex w-full items-center justify-between gap-x-4\">\n <div className=\"flex items-center gap-x-4\">\n <FilterTrigger\n type=\"filter\"\n customLabel={\n <div className=\"flex items-center gap-x-1.5 text-foreground-4 transition-colors duration-200 hover:text-foreground-1\">\n <Icon name=\"plus\" size={10} />\n <span>{t('component:filter.add-filter', 'Add filter')}</span>\n </div>\n }\n hideCount\n dropdownAlign=\"start\"\n activeFilters={activeFilters}\n onChange={handleFilterChange}\n searchQueries={searchQueries}\n onSearchChange={handleSearchChange}\n options={filterOptions}\n t={t}\n />\n <button\n className=\"flex items-center gap-x-1.5 text-14 text-foreground-4 outline-none ring-offset-2 ring-offset-background transition-colors duration-200 hover:text-foreground-danger focus:ring-2\"\n onClick={handleResetAll}\n >\n <Icon className=\"rotate-45\" name=\"plus\" size={12} />\n {t('component:filter.reset', 'Reset')}\n </button>\n </div>\n\n {viewManagement && (\n <Views\n currentView={viewManagement.currentView}\n savedViews={viewManagement.savedViews}\n viewManagement={{\n ...viewManagement,\n activeFilters,\n activeSorts,\n saveView: (name: string) => viewManagement.saveView(name, activeFilters, activeSorts)\n }}\n hasChanges={!!viewManagement.hasActiveViewChanges(activeFilters, activeSorts)}\n />\n )}\n </div>\n )}\n </div>\n )\n}\n\nexport default FiltersBar\n","\"use client\";\n\n// packages/react/tooltip/src/tooltip.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Slottable } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport * as VisuallyHiddenPrimitive from \"@radix-ui/react-visually-hidden\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar [createTooltipContext, createTooltipScope] = createContextScope(\"Tooltip\", [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar PROVIDER_NAME = \"TooltipProvider\";\nvar DEFAULT_DELAY_DURATION = 700;\nvar TOOLTIP_OPEN = \"tooltip.open\";\nvar [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);\nvar TooltipProvider = (props) => {\n const {\n __scopeTooltip,\n delayDuration = DEFAULT_DELAY_DURATION,\n skipDelayDuration = 300,\n disableHoverableContent = false,\n children\n } = props;\n const [isOpenDelayed, setIsOpenDelayed] = React.useState(true);\n const isPointerInTransitRef = React.useRef(false);\n const skipDelayTimerRef = React.useRef(0);\n React.useEffect(() => {\n const skipDelayTimer = skipDelayTimerRef.current;\n return () => window.clearTimeout(skipDelayTimer);\n }, []);\n return /* @__PURE__ */ jsx(\n TooltipProviderContextProvider,\n {\n scope: __scopeTooltip,\n isOpenDelayed,\n delayDuration,\n onOpen: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n setIsOpenDelayed(false);\n }, []),\n onClose: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = window.setTimeout(\n () => setIsOpenDelayed(true),\n skipDelayDuration\n );\n }, [skipDelayDuration]),\n isPointerInTransitRef,\n onPointerInTransitChange: React.useCallback((inTransit) => {\n isPointerInTransitRef.current = inTransit;\n }, []),\n disableHoverableContent,\n children\n }\n );\n};\nTooltipProvider.displayName = PROVIDER_NAME;\nvar TOOLTIP_NAME = \"Tooltip\";\nvar [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);\nvar Tooltip = (props) => {\n const {\n __scopeTooltip,\n children,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disableHoverableContent: disableHoverableContentProp,\n delayDuration: delayDurationProp\n } = props;\n const providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const [trigger, setTrigger] = React.useState(null);\n const contentId = useId();\n const openTimerRef = React.useRef(0);\n const disableHoverableContent = disableHoverableContentProp ?? providerContext.disableHoverableContent;\n const delayDuration = delayDurationProp ?? providerContext.delayDuration;\n const wasOpenDelayedRef = React.useRef(false);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: (open2) => {\n if (open2) {\n providerContext.onOpen();\n document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));\n } else {\n providerContext.onClose();\n }\n onOpenChange?.(open2);\n }\n });\n const stateAttribute = React.useMemo(() => {\n return open ? wasOpenDelayedRef.current ? \"delayed-open\" : \"instant-open\" : \"closed\";\n }, [open]);\n const handleOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n wasOpenDelayedRef.current = false;\n setOpen(true);\n }, [setOpen]);\n const handleClose = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n setOpen(false);\n }, [setOpen]);\n const handleDelayedOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = window.setTimeout(() => {\n wasOpenDelayedRef.current = true;\n setOpen(true);\n openTimerRef.current = 0;\n }, delayDuration);\n }, [delayDuration, setOpen]);\n React.useEffect(() => {\n return () => {\n if (openTimerRef.current) {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n };\n }, []);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n TooltipContextProvider,\n {\n scope: __scopeTooltip,\n contentId,\n open,\n stateAttribute,\n trigger,\n onTriggerChange: setTrigger,\n onTriggerEnter: React.useCallback(() => {\n if (providerContext.isOpenDelayed) handleDelayedOpen();\n else handleOpen();\n }, [providerContext.isOpenDelayed, handleDelayedOpen, handleOpen]),\n onTriggerLeave: React.useCallback(() => {\n if (disableHoverableContent) {\n handleClose();\n } else {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n }, [handleClose, disableHoverableContent]),\n onOpen: handleOpen,\n onClose: handleClose,\n disableHoverableContent,\n children\n }\n ) });\n};\nTooltip.displayName = TOOLTIP_NAME;\nvar TRIGGER_NAME = \"TooltipTrigger\";\nvar TooltipTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTooltip, ...triggerProps } = props;\n const context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);\n const providerContext = useTooltipProviderContext(TRIGGER_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onTriggerChange);\n const isPointerDownRef = React.useRef(false);\n const hasPointerMoveOpenedRef = React.useRef(false);\n const handlePointerUp = React.useCallback(() => isPointerDownRef.current = false, []);\n React.useEffect(() => {\n return () => document.removeEventListener(\"pointerup\", handlePointerUp);\n }, [handlePointerUp]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n \"aria-describedby\": context.open ? context.contentId : void 0,\n \"data-state\": context.stateAttribute,\n ...triggerProps,\n ref: composedRefs,\n onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n if (event.pointerType === \"touch\") return;\n if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {\n context.onTriggerEnter();\n hasPointerMoveOpenedRef.current = true;\n }\n }),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, () => {\n context.onTriggerLeave();\n hasPointerMoveOpenedRef.current = false;\n }),\n onPointerDown: composeEventHandlers(props.onPointerDown, () => {\n isPointerDownRef.current = true;\n document.addEventListener(\"pointerup\", handlePointerUp, { once: true });\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n if (!isPointerDownRef.current) context.onOpen();\n }),\n onBlur: composeEventHandlers(props.onBlur, context.onClose),\n onClick: composeEventHandlers(props.onClick, context.onClose)\n }\n ) });\n }\n);\nTooltipTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"TooltipPortal\";\nvar [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar TooltipPortal = (props) => {\n const { __scopeTooltip, forceMount, children, container } = props;\n const context = useTooltipContext(PORTAL_NAME, __scopeTooltip);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeTooltip, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nTooltipPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"TooltipContent\";\nvar TooltipContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeTooltip);\n const { forceMount = portalContext.forceMount, side = \"top\", ...contentProps } = props;\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.disableHoverableContent ? /* @__PURE__ */ jsx(TooltipContentImpl, { side, ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(TooltipContentHoverable, { side, ...contentProps, ref: forwardedRef }) });\n }\n);\nvar TooltipContentHoverable = React.forwardRef((props, forwardedRef) => {\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n const providerContext = useTooltipProviderContext(CONTENT_NAME, props.__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [pointerGraceArea, setPointerGraceArea] = React.useState(null);\n const { trigger, onClose } = context;\n const content = ref.current;\n const { onPointerInTransitChange } = providerContext;\n const handleRemoveGraceArea = React.useCallback(() => {\n setPointerGraceArea(null);\n onPointerInTransitChange(false);\n }, [onPointerInTransitChange]);\n const handleCreateGraceArea = React.useCallback(\n (event, hoverTarget) => {\n const currentTarget = event.currentTarget;\n const exitPoint = { x: event.clientX, y: event.clientY };\n const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());\n const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);\n const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());\n const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);\n setPointerGraceArea(graceArea);\n onPointerInTransitChange(true);\n },\n [onPointerInTransitChange]\n );\n React.useEffect(() => {\n return () => handleRemoveGraceArea();\n }, [handleRemoveGraceArea]);\n React.useEffect(() => {\n if (trigger && content) {\n const handleTriggerLeave = (event) => handleCreateGraceArea(event, content);\n const handleContentLeave = (event) => handleCreateGraceArea(event, trigger);\n trigger.addEventListener(\"pointerleave\", handleTriggerLeave);\n content.addEventListener(\"pointerleave\", handleContentLeave);\n return () => {\n trigger.removeEventListener(\"pointerleave\", handleTriggerLeave);\n content.removeEventListener(\"pointerleave\", handleContentLeave);\n };\n }\n }, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]);\n React.useEffect(() => {\n if (pointerGraceArea) {\n const handleTrackPointerGrace = (event) => {\n const target = event.target;\n const pointerPosition = { x: event.clientX, y: event.clientY };\n const hasEnteredTarget = trigger?.contains(target) || content?.contains(target);\n const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);\n if (hasEnteredTarget) {\n handleRemoveGraceArea();\n } else if (isPointerOutsideGraceArea) {\n handleRemoveGraceArea();\n onClose();\n }\n };\n document.addEventListener(\"pointermove\", handleTrackPointerGrace);\n return () => document.removeEventListener(\"pointermove\", handleTrackPointerGrace);\n }\n }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]);\n return /* @__PURE__ */ jsx(TooltipContentImpl, { ...props, ref: composedRefs });\n});\nvar [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, { isInside: false });\nvar TooltipContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTooltip,\n children,\n \"aria-label\": ariaLabel,\n onEscapeKeyDown,\n onPointerDownOutside,\n ...contentProps\n } = props;\n const context = useTooltipContext(CONTENT_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const { onClose } = context;\n React.useEffect(() => {\n document.addEventListener(TOOLTIP_OPEN, onClose);\n return () => document.removeEventListener(TOOLTIP_OPEN, onClose);\n }, [onClose]);\n React.useEffect(() => {\n if (context.trigger) {\n const handleScroll = (event) => {\n const target = event.target;\n if (target?.contains(context.trigger)) onClose();\n };\n window.addEventListener(\"scroll\", handleScroll, { capture: true });\n return () => window.removeEventListener(\"scroll\", handleScroll, { capture: true });\n }\n }, [context.trigger, onClose]);\n return /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents: false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside: (event) => event.preventDefault(),\n onDismiss: onClose,\n children: /* @__PURE__ */ jsxs(\n PopperPrimitive.Content,\n {\n \"data-state\": context.stateAttribute,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-tooltip-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-tooltip-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-tooltip-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-tooltip-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-tooltip-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n },\n children: [\n /* @__PURE__ */ jsx(Slottable, { children }),\n /* @__PURE__ */ jsx(VisuallyHiddenContentContextProvider, { scope: __scopeTooltip, isInside: true, children: /* @__PURE__ */ jsx(VisuallyHiddenPrimitive.Root, { id: context.contentId, role: \"tooltip\", children: ariaLabel || children }) })\n ]\n }\n )\n }\n );\n }\n);\nTooltipContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"TooltipArrow\";\nvar TooltipArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTooltip, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeTooltip);\n const visuallyHiddenContentContext = useVisuallyHiddenContentContext(\n ARROW_NAME,\n __scopeTooltip\n );\n return visuallyHiddenContentContext.isInside ? null : /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nTooltipArrow.displayName = ARROW_NAME;\nfunction getExitSideFromRect(point, rect) {\n const top = Math.abs(rect.top - point.y);\n const bottom = Math.abs(rect.bottom - point.y);\n const right = Math.abs(rect.right - point.x);\n const left = Math.abs(rect.left - point.x);\n switch (Math.min(top, bottom, right, left)) {\n case left:\n return \"left\";\n case right:\n return \"right\";\n case top:\n return \"top\";\n case bottom:\n return \"bottom\";\n default:\n throw new Error(\"unreachable\");\n }\n}\nfunction getPaddedExitPoints(exitPoint, exitSide, padding = 5) {\n const paddedExitPoints = [];\n switch (exitSide) {\n case \"top\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"bottom\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y - padding }\n );\n break;\n case \"left\":\n paddedExitPoints.push(\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"right\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x - padding, y: exitPoint.y + padding }\n );\n break;\n }\n return paddedExitPoints;\n}\nfunction getPointsFromRect(rect) {\n const { top, right, bottom, left } = rect;\n return [\n { x: left, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom }\n ];\n}\nfunction isPointInPolygon(point, polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const xi = polygon[i].x;\n const yi = polygon[i].y;\n const xj = polygon[j].x;\n const yj = polygon[j].y;\n const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n return inside;\n}\nfunction getHull(points) {\n const newPoints = points.slice();\n newPoints.sort((a, b) => {\n if (a.x < b.x) return -1;\n else if (a.x > b.x) return 1;\n else if (a.y < b.y) return -1;\n else if (a.y > b.y) return 1;\n else return 0;\n });\n return getHullPresorted(newPoints);\n}\nfunction getHullPresorted(points) {\n if (points.length <= 1) return points.slice();\n const upperHull = [];\n for (let i = 0; i < points.length; i++) {\n const p = points[i];\n while (upperHull.length >= 2) {\n const q = upperHull[upperHull.length - 1];\n const r = upperHull[upperHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) upperHull.pop();\n else break;\n }\n upperHull.push(p);\n }\n upperHull.pop();\n const lowerHull = [];\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i];\n while (lowerHull.length >= 2) {\n const q = lowerHull[lowerHull.length - 1];\n const r = lowerHull[lowerHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) lowerHull.pop();\n else break;\n }\n lowerHull.push(p);\n }\n lowerHull.pop();\n if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) {\n return upperHull;\n } else {\n return upperHull.concat(lowerHull);\n }\n}\nvar Provider = TooltipProvider;\nvar Root3 = Tooltip;\nvar Trigger = TooltipTrigger;\nvar Portal = TooltipPortal;\nvar Content2 = TooltipContent;\nvar Arrow2 = TooltipArrow;\nexport {\n Arrow2 as Arrow,\n Content2 as Content,\n Portal,\n Provider,\n Root3 as Root,\n Tooltip,\n TooltipArrow,\n TooltipContent,\n TooltipPortal,\n TooltipProvider,\n TooltipTrigger,\n Trigger,\n createTooltipScope\n};\n//# sourceMappingURL=index.mjs.map\n","import { ComponentPropsWithoutRef, ElementRef, forwardRef } from 'react'\n\nimport { Content, Provider, Root, Trigger } from '@radix-ui/react-tooltip'\nimport { cn } from '@utils/cn'\n\nconst TooltipContent = forwardRef<ElementRef<typeof Content>, ComponentPropsWithoutRef<typeof Content>>(\n ({ className, sideOffset = 4, ...props }, ref) => (\n <Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 overflow-hidden rounded-md px-3 py-1.5 text-xs',\n className\n )}\n {...props}\n />\n )\n)\nTooltipContent.displayName = Content.displayName\n\nconst Tooltip = {\n Root,\n Trigger,\n Content: TooltipContent,\n Provider\n}\n\nexport { Tooltip }\n","\"use client\";\n\n// packages/react/navigation-menu/src/navigation-menu.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { composeRefs, useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport * as VisuallyHiddenPrimitive from \"@radix-ui/react-visually-hidden\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar NAVIGATION_MENU_NAME = \"NavigationMenu\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(NAVIGATION_MENU_NAME);\nvar [FocusGroupCollection, useFocusGroupCollection, createFocusGroupCollectionScope] = createCollection(NAVIGATION_MENU_NAME);\nvar [createNavigationMenuContext, createNavigationMenuScope] = createContextScope(\n NAVIGATION_MENU_NAME,\n [createCollectionScope, createFocusGroupCollectionScope]\n);\nvar [NavigationMenuProviderImpl, useNavigationMenuContext] = createNavigationMenuContext(NAVIGATION_MENU_NAME);\nvar [ViewportContentProvider, useViewportContentContext] = createNavigationMenuContext(NAVIGATION_MENU_NAME);\nvar NavigationMenu = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeNavigationMenu,\n value: valueProp,\n onValueChange,\n defaultValue,\n delayDuration = 200,\n skipDelayDuration = 300,\n orientation = \"horizontal\",\n dir,\n ...NavigationMenuProps\n } = props;\n const [navigationMenu, setNavigationMenu] = React.useState(null);\n const composedRef = useComposedRefs(forwardedRef, (node) => setNavigationMenu(node));\n const direction = useDirection(dir);\n const openTimerRef = React.useRef(0);\n const closeTimerRef = React.useRef(0);\n const skipDelayTimerRef = React.useRef(0);\n const [isOpenDelayed, setIsOpenDelayed] = React.useState(true);\n const [value = \"\", setValue] = useControllableState({\n prop: valueProp,\n onChange: (value2) => {\n const isOpen = value2 !== \"\";\n const hasSkipDelayDuration = skipDelayDuration > 0;\n if (isOpen) {\n window.clearTimeout(skipDelayTimerRef.current);\n if (hasSkipDelayDuration) setIsOpenDelayed(false);\n } else {\n window.clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = window.setTimeout(\n () => setIsOpenDelayed(true),\n skipDelayDuration\n );\n }\n onValueChange?.(value2);\n },\n defaultProp: defaultValue\n });\n const startCloseTimer = React.useCallback(() => {\n window.clearTimeout(closeTimerRef.current);\n closeTimerRef.current = window.setTimeout(() => setValue(\"\"), 150);\n }, [setValue]);\n const handleOpen = React.useCallback(\n (itemValue) => {\n window.clearTimeout(closeTimerRef.current);\n setValue(itemValue);\n },\n [setValue]\n );\n const handleDelayedOpen = React.useCallback(\n (itemValue) => {\n const isOpenItem = value === itemValue;\n if (isOpenItem) {\n window.clearTimeout(closeTimerRef.current);\n } else {\n openTimerRef.current = window.setTimeout(() => {\n window.clearTimeout(closeTimerRef.current);\n setValue(itemValue);\n }, delayDuration);\n }\n },\n [value, setValue, delayDuration]\n );\n React.useEffect(() => {\n return () => {\n window.clearTimeout(openTimerRef.current);\n window.clearTimeout(closeTimerRef.current);\n window.clearTimeout(skipDelayTimerRef.current);\n };\n }, []);\n return /* @__PURE__ */ jsx(\n NavigationMenuProvider,\n {\n scope: __scopeNavigationMenu,\n isRootMenu: true,\n value,\n dir: direction,\n orientation,\n rootNavigationMenu: navigationMenu,\n onTriggerEnter: (itemValue) => {\n window.clearTimeout(openTimerRef.current);\n if (isOpenDelayed) handleDelayedOpen(itemValue);\n else handleOpen(itemValue);\n },\n onTriggerLeave: () => {\n window.clearTimeout(openTimerRef.current);\n startCloseTimer();\n },\n onContentEnter: () => window.clearTimeout(closeTimerRef.current),\n onContentLeave: startCloseTimer,\n onItemSelect: (itemValue) => {\n setValue((prevValue) => prevValue === itemValue ? \"\" : itemValue);\n },\n onItemDismiss: () => setValue(\"\"),\n children: /* @__PURE__ */ jsx(\n Primitive.nav,\n {\n \"aria-label\": \"Main\",\n \"data-orientation\": orientation,\n dir: direction,\n ...NavigationMenuProps,\n ref: composedRef\n }\n )\n }\n );\n }\n);\nNavigationMenu.displayName = NAVIGATION_MENU_NAME;\nvar SUB_NAME = \"NavigationMenuSub\";\nvar NavigationMenuSub = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeNavigationMenu,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n ...subProps\n } = props;\n const context = useNavigationMenuContext(SUB_NAME, __scopeNavigationMenu);\n const [value = \"\", setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue\n });\n return /* @__PURE__ */ jsx(\n NavigationMenuProvider,\n {\n scope: __scopeNavigationMenu,\n isRootMenu: false,\n value,\n dir: context.dir,\n orientation,\n rootNavigationMenu: context.rootNavigationMenu,\n onTriggerEnter: (itemValue) => setValue(itemValue),\n onItemSelect: (itemValue) => setValue(itemValue),\n onItemDismiss: () => setValue(\"\"),\n children: /* @__PURE__ */ jsx(Primitive.div, { \"data-orientation\": orientation, ...subProps, ref: forwardedRef })\n }\n );\n }\n);\nNavigationMenuSub.displayName = SUB_NAME;\nvar NavigationMenuProvider = (props) => {\n const {\n scope,\n isRootMenu,\n rootNavigationMenu,\n dir,\n orientation,\n children,\n value,\n onItemSelect,\n onItemDismiss,\n onTriggerEnter,\n onTriggerLeave,\n onContentEnter,\n onContentLeave\n } = props;\n const [viewport, setViewport] = React.useState(null);\n const [viewportContent, setViewportContent] = React.useState(/* @__PURE__ */ new Map());\n const [indicatorTrack, setIndicatorTrack] = React.useState(null);\n return /* @__PURE__ */ jsx(\n NavigationMenuProviderImpl,\n {\n scope,\n isRootMenu,\n rootNavigationMenu,\n value,\n previousValue: usePrevious(value),\n baseId: useId(),\n dir,\n orientation,\n viewport,\n onViewportChange: setViewport,\n indicatorTrack,\n onIndicatorTrackChange: setIndicatorTrack,\n onTriggerEnter: useCallbackRef(onTriggerEnter),\n onTriggerLeave: useCallbackRef(onTriggerLeave),\n onContentEnter: useCallbackRef(onContentEnter),\n onContentLeave: useCallbackRef(onContentLeave),\n onItemSelect: useCallbackRef(onItemSelect),\n onItemDismiss: useCallbackRef(onItemDismiss),\n onViewportContentChange: React.useCallback((contentValue, contentData) => {\n setViewportContent((prevContent) => {\n prevContent.set(contentValue, contentData);\n return new Map(prevContent);\n });\n }, []),\n onViewportContentRemove: React.useCallback((contentValue) => {\n setViewportContent((prevContent) => {\n if (!prevContent.has(contentValue)) return prevContent;\n prevContent.delete(contentValue);\n return new Map(prevContent);\n });\n }, []),\n children: /* @__PURE__ */ jsx(Collection.Provider, { scope, children: /* @__PURE__ */ jsx(ViewportContentProvider, { scope, items: viewportContent, children }) })\n }\n );\n};\nvar LIST_NAME = \"NavigationMenuList\";\nvar NavigationMenuList = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeNavigationMenu, ...listProps } = props;\n const context = useNavigationMenuContext(LIST_NAME, __scopeNavigationMenu);\n const list = /* @__PURE__ */ jsx(Primitive.ul, { \"data-orientation\": context.orientation, ...listProps, ref: forwardedRef });\n return /* @__PURE__ */ jsx(Primitive.div, { style: { position: \"relative\" }, ref: context.onIndicatorTrackChange, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: __scopeNavigationMenu, children: context.isRootMenu ? /* @__PURE__ */ jsx(FocusGroup, { asChild: true, children: list }) : list }) });\n }\n);\nNavigationMenuList.displayName = LIST_NAME;\nvar ITEM_NAME = \"NavigationMenuItem\";\nvar [NavigationMenuItemContextProvider, useNavigationMenuItemContext] = createNavigationMenuContext(ITEM_NAME);\nvar NavigationMenuItem = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeNavigationMenu, value: valueProp, ...itemProps } = props;\n const autoValue = useId();\n const value = valueProp || autoValue || \"LEGACY_REACT_AUTO_VALUE\";\n const contentRef = React.useRef(null);\n const triggerRef = React.useRef(null);\n const focusProxyRef = React.useRef(null);\n const restoreContentTabOrderRef = React.useRef(() => {\n });\n const wasEscapeCloseRef = React.useRef(false);\n const handleContentEntry = React.useCallback((side = \"start\") => {\n if (contentRef.current) {\n restoreContentTabOrderRef.current();\n const candidates = getTabbableCandidates(contentRef.current);\n if (candidates.length) focusFirst(side === \"start\" ? candidates : candidates.reverse());\n }\n }, []);\n const handleContentExit = React.useCallback(() => {\n if (contentRef.current) {\n const candidates = getTabbableCandidates(contentRef.current);\n if (candidates.length) restoreContentTabOrderRef.current = removeFromTabOrder(candidates);\n }\n }, []);\n return /* @__PURE__ */ jsx(\n NavigationMenuItemContextProvider,\n {\n scope: __scopeNavigationMenu,\n value,\n triggerRef,\n contentRef,\n focusProxyRef,\n wasEscapeCloseRef,\n onEntryKeyDown: handleContentEntry,\n onFocusProxyEnter: handleContentEntry,\n onRootContentClose: handleContentExit,\n onContentFocusOutside: handleContentExit,\n children: /* @__PURE__ */ jsx(Primitive.li, { ...itemProps, ref: forwardedRef })\n }\n );\n }\n);\nNavigationMenuItem.displayName = ITEM_NAME;\nvar TRIGGER_NAME = \"NavigationMenuTrigger\";\nvar NavigationMenuTrigger = React.forwardRef((props, forwardedRef) => {\n const { __scopeNavigationMenu, disabled, ...triggerProps } = props;\n const context = useNavigationMenuContext(TRIGGER_NAME, props.__scopeNavigationMenu);\n const itemContext = useNavigationMenuItemContext(TRIGGER_NAME, props.__scopeNavigationMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, itemContext.triggerRef, forwardedRef);\n const triggerId = makeTriggerId(context.baseId, itemContext.value);\n const contentId = makeContentId(context.baseId, itemContext.value);\n const hasPointerMoveOpenedRef = React.useRef(false);\n const wasClickCloseRef = React.useRef(false);\n const open = itemContext.value === context.value;\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(Collection.ItemSlot, { scope: __scopeNavigationMenu, value: itemContext.value, children: /* @__PURE__ */ jsx(FocusGroupItem, { asChild: true, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n id: triggerId,\n disabled,\n \"data-disabled\": disabled ? \"\" : void 0,\n \"data-state\": getOpenState(open),\n \"aria-expanded\": open,\n \"aria-controls\": contentId,\n ...triggerProps,\n ref: composedRefs,\n onPointerEnter: composeEventHandlers(props.onPointerEnter, () => {\n wasClickCloseRef.current = false;\n itemContext.wasEscapeCloseRef.current = false;\n }),\n onPointerMove: composeEventHandlers(\n props.onPointerMove,\n whenMouse(() => {\n if (disabled || wasClickCloseRef.current || itemContext.wasEscapeCloseRef.current || hasPointerMoveOpenedRef.current)\n return;\n context.onTriggerEnter(itemContext.value);\n hasPointerMoveOpenedRef.current = true;\n })\n ),\n onPointerLeave: composeEventHandlers(\n props.onPointerLeave,\n whenMouse(() => {\n if (disabled) return;\n context.onTriggerLeave();\n hasPointerMoveOpenedRef.current = false;\n })\n ),\n onClick: composeEventHandlers(props.onClick, () => {\n context.onItemSelect(itemContext.value);\n wasClickCloseRef.current = open;\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const verticalEntryKey = context.dir === \"rtl\" ? \"ArrowLeft\" : \"ArrowRight\";\n const entryKey = { horizontal: \"ArrowDown\", vertical: verticalEntryKey }[context.orientation];\n if (open && event.key === entryKey) {\n itemContext.onEntryKeyDown();\n event.preventDefault();\n }\n })\n }\n ) }) }),\n open && /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n VisuallyHiddenPrimitive.Root,\n {\n \"aria-hidden\": true,\n tabIndex: 0,\n ref: itemContext.focusProxyRef,\n onFocus: (event) => {\n const content = itemContext.contentRef.current;\n const prevFocusedElement = event.relatedTarget;\n const wasTriggerFocused = prevFocusedElement === ref.current;\n const wasFocusFromContent = content?.contains(prevFocusedElement);\n if (wasTriggerFocused || !wasFocusFromContent) {\n itemContext.onFocusProxyEnter(wasTriggerFocused ? \"start\" : \"end\");\n }\n }\n }\n ),\n context.viewport && /* @__PURE__ */ jsx(\"span\", { \"aria-owns\": contentId })\n ] })\n ] });\n});\nNavigationMenuTrigger.displayName = TRIGGER_NAME;\nvar LINK_NAME = \"NavigationMenuLink\";\nvar LINK_SELECT = \"navigationMenu.linkSelect\";\nvar NavigationMenuLink = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeNavigationMenu, active, onSelect, ...linkProps } = props;\n return /* @__PURE__ */ jsx(FocusGroupItem, { asChild: true, children: /* @__PURE__ */ jsx(\n Primitive.a,\n {\n \"data-active\": active ? \"\" : void 0,\n \"aria-current\": active ? \"page\" : void 0,\n ...linkProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(\n props.onClick,\n (event) => {\n const target = event.target;\n const linkSelectEvent = new CustomEvent(LINK_SELECT, {\n bubbles: true,\n cancelable: true\n });\n target.addEventListener(LINK_SELECT, (event2) => onSelect?.(event2), { once: true });\n dispatchDiscreteCustomEvent(target, linkSelectEvent);\n if (!linkSelectEvent.defaultPrevented && !event.metaKey) {\n const rootContentDismissEvent = new CustomEvent(ROOT_CONTENT_DISMISS, {\n bubbles: true,\n cancelable: true\n });\n dispatchDiscreteCustomEvent(target, rootContentDismissEvent);\n }\n },\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nNavigationMenuLink.displayName = LINK_NAME;\nvar INDICATOR_NAME = \"NavigationMenuIndicator\";\nvar NavigationMenuIndicator = React.forwardRef((props, forwardedRef) => {\n const { forceMount, ...indicatorProps } = props;\n const context = useNavigationMenuContext(INDICATOR_NAME, props.__scopeNavigationMenu);\n const isVisible = Boolean(context.value);\n return context.indicatorTrack ? ReactDOM.createPortal(\n /* @__PURE__ */ jsx(Presence, { present: forceMount || isVisible, children: /* @__PURE__ */ jsx(NavigationMenuIndicatorImpl, { ...indicatorProps, ref: forwardedRef }) }),\n context.indicatorTrack\n ) : null;\n});\nNavigationMenuIndicator.displayName = INDICATOR_NAME;\nvar NavigationMenuIndicatorImpl = React.forwardRef((props, forwardedRef) => {\n const { __scopeNavigationMenu, ...indicatorProps } = props;\n const context = useNavigationMenuContext(INDICATOR_NAME, __scopeNavigationMenu);\n const getItems = useCollection(__scopeNavigationMenu);\n const [activeTrigger, setActiveTrigger] = React.useState(\n null\n );\n const [position, setPosition] = React.useState(null);\n const isHorizontal = context.orientation === \"horizontal\";\n const isVisible = Boolean(context.value);\n React.useEffect(() => {\n const items = getItems();\n const triggerNode = items.find((item) => item.value === context.value)?.ref.current;\n if (triggerNode) setActiveTrigger(triggerNode);\n }, [getItems, context.value]);\n const handlePositionChange = () => {\n if (activeTrigger) {\n setPosition({\n size: isHorizontal ? activeTrigger.offsetWidth : activeTrigger.offsetHeight,\n offset: isHorizontal ? activeTrigger.offsetLeft : activeTrigger.offsetTop\n });\n }\n };\n useResizeObserver(activeTrigger, handlePositionChange);\n useResizeObserver(context.indicatorTrack, handlePositionChange);\n return position ? /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"aria-hidden\": true,\n \"data-state\": isVisible ? \"visible\" : \"hidden\",\n \"data-orientation\": context.orientation,\n ...indicatorProps,\n ref: forwardedRef,\n style: {\n position: \"absolute\",\n ...isHorizontal ? {\n left: 0,\n width: position.size + \"px\",\n transform: `translateX(${position.offset}px)`\n } : {\n top: 0,\n height: position.size + \"px\",\n transform: `translateY(${position.offset}px)`\n },\n ...indicatorProps.style\n }\n }\n ) : null;\n});\nvar CONTENT_NAME = \"NavigationMenuContent\";\nvar NavigationMenuContent = React.forwardRef((props, forwardedRef) => {\n const { forceMount, ...contentProps } = props;\n const context = useNavigationMenuContext(CONTENT_NAME, props.__scopeNavigationMenu);\n const itemContext = useNavigationMenuItemContext(CONTENT_NAME, props.__scopeNavigationMenu);\n const composedRefs = useComposedRefs(itemContext.contentRef, forwardedRef);\n const open = itemContext.value === context.value;\n const commonProps = {\n value: itemContext.value,\n triggerRef: itemContext.triggerRef,\n focusProxyRef: itemContext.focusProxyRef,\n wasEscapeCloseRef: itemContext.wasEscapeCloseRef,\n onContentFocusOutside: itemContext.onContentFocusOutside,\n onRootContentClose: itemContext.onRootContentClose,\n ...contentProps\n };\n return !context.viewport ? /* @__PURE__ */ jsx(Presence, { present: forceMount || open, children: /* @__PURE__ */ jsx(\n NavigationMenuContentImpl,\n {\n \"data-state\": getOpenState(open),\n ...commonProps,\n ref: composedRefs,\n onPointerEnter: composeEventHandlers(props.onPointerEnter, context.onContentEnter),\n onPointerLeave: composeEventHandlers(\n props.onPointerLeave,\n whenMouse(context.onContentLeave)\n ),\n style: {\n // Prevent interaction when animating out\n pointerEvents: !open && context.isRootMenu ? \"none\" : void 0,\n ...commonProps.style\n }\n }\n ) }) : /* @__PURE__ */ jsx(ViewportContentMounter, { forceMount, ...commonProps, ref: composedRefs });\n});\nNavigationMenuContent.displayName = CONTENT_NAME;\nvar ViewportContentMounter = React.forwardRef((props, forwardedRef) => {\n const context = useNavigationMenuContext(CONTENT_NAME, props.__scopeNavigationMenu);\n const { onViewportContentChange, onViewportContentRemove } = context;\n useLayoutEffect(() => {\n onViewportContentChange(props.value, {\n ref: forwardedRef,\n ...props\n });\n }, [props, forwardedRef, onViewportContentChange]);\n useLayoutEffect(() => {\n return () => onViewportContentRemove(props.value);\n }, [props.value, onViewportContentRemove]);\n return null;\n});\nvar ROOT_CONTENT_DISMISS = \"navigationMenu.rootContentDismiss\";\nvar NavigationMenuContentImpl = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeNavigationMenu,\n value,\n triggerRef,\n focusProxyRef,\n wasEscapeCloseRef,\n onRootContentClose,\n onContentFocusOutside,\n ...contentProps\n } = props;\n const context = useNavigationMenuContext(CONTENT_NAME, __scopeNavigationMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const getItems = useCollection(__scopeNavigationMenu);\n const prevMotionAttributeRef = React.useRef(null);\n const { onItemDismiss } = context;\n React.useEffect(() => {\n const content = ref.current;\n if (context.isRootMenu && content) {\n const handleClose = () => {\n onItemDismiss();\n onRootContentClose();\n if (content.contains(document.activeElement)) triggerRef.current?.focus();\n };\n content.addEventListener(ROOT_CONTENT_DISMISS, handleClose);\n return () => content.removeEventListener(ROOT_CONTENT_DISMISS, handleClose);\n }\n }, [context.isRootMenu, props.value, triggerRef, onItemDismiss, onRootContentClose]);\n const motionAttribute = React.useMemo(() => {\n const items = getItems();\n const values = items.map((item) => item.value);\n if (context.dir === \"rtl\") values.reverse();\n const index = values.indexOf(context.value);\n const prevIndex = values.indexOf(context.previousValue);\n const isSelected = value === context.value;\n const wasSelected = prevIndex === values.indexOf(value);\n if (!isSelected && !wasSelected) return prevMotionAttributeRef.current;\n const attribute = (() => {\n if (index !== prevIndex) {\n if (isSelected && prevIndex !== -1) return index > prevIndex ? \"from-end\" : \"from-start\";\n if (wasSelected && index !== -1) return index > prevIndex ? \"to-start\" : \"to-end\";\n }\n return null;\n })();\n prevMotionAttributeRef.current = attribute;\n return attribute;\n }, [context.previousValue, context.value, context.dir, getItems, value]);\n return /* @__PURE__ */ jsx(FocusGroup, { asChild: true, children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n id: contentId,\n \"aria-labelledby\": triggerId,\n \"data-motion\": motionAttribute,\n \"data-orientation\": context.orientation,\n ...contentProps,\n ref: composedRefs,\n disableOutsidePointerEvents: false,\n onDismiss: () => {\n const rootContentDismissEvent = new Event(ROOT_CONTENT_DISMISS, {\n bubbles: true,\n cancelable: true\n });\n ref.current?.dispatchEvent(rootContentDismissEvent);\n },\n onFocusOutside: composeEventHandlers(props.onFocusOutside, (event) => {\n onContentFocusOutside();\n const target = event.target;\n if (context.rootNavigationMenu?.contains(target)) event.preventDefault();\n }),\n onPointerDownOutside: composeEventHandlers(props.onPointerDownOutside, (event) => {\n const target = event.target;\n const isTrigger = getItems().some((item) => item.ref.current?.contains(target));\n const isRootViewport = context.isRootMenu && context.viewport?.contains(target);\n if (isTrigger || isRootViewport || !context.isRootMenu) event.preventDefault();\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isMetaKey = event.altKey || event.ctrlKey || event.metaKey;\n const isTabKey = event.key === \"Tab\" && !isMetaKey;\n if (isTabKey) {\n const candidates = getTabbableCandidates(event.currentTarget);\n const focusedElement = document.activeElement;\n const index = candidates.findIndex((candidate) => candidate === focusedElement);\n const isMovingBackwards = event.shiftKey;\n const nextCandidates = isMovingBackwards ? candidates.slice(0, index).reverse() : candidates.slice(index + 1, candidates.length);\n if (focusFirst(nextCandidates)) {\n event.preventDefault();\n } else {\n focusProxyRef.current?.focus();\n }\n }\n }),\n onEscapeKeyDown: composeEventHandlers(props.onEscapeKeyDown, (_event) => {\n wasEscapeCloseRef.current = true;\n })\n }\n ) });\n});\nvar VIEWPORT_NAME = \"NavigationMenuViewport\";\nvar NavigationMenuViewport = React.forwardRef((props, forwardedRef) => {\n const { forceMount, ...viewportProps } = props;\n const context = useNavigationMenuContext(VIEWPORT_NAME, props.__scopeNavigationMenu);\n const open = Boolean(context.value);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || open, children: /* @__PURE__ */ jsx(NavigationMenuViewportImpl, { ...viewportProps, ref: forwardedRef }) });\n});\nNavigationMenuViewport.displayName = VIEWPORT_NAME;\nvar NavigationMenuViewportImpl = React.forwardRef((props, forwardedRef) => {\n const { __scopeNavigationMenu, children, ...viewportImplProps } = props;\n const context = useNavigationMenuContext(VIEWPORT_NAME, __scopeNavigationMenu);\n const composedRefs = useComposedRefs(forwardedRef, context.onViewportChange);\n const viewportContentContext = useViewportContentContext(\n CONTENT_NAME,\n props.__scopeNavigationMenu\n );\n const [size, setSize] = React.useState(null);\n const [content, setContent] = React.useState(null);\n const viewportWidth = size ? size?.width + \"px\" : void 0;\n const viewportHeight = size ? size?.height + \"px\" : void 0;\n const open = Boolean(context.value);\n const activeContentValue = open ? context.value : context.previousValue;\n const handleSizeChange = () => {\n if (content) setSize({ width: content.offsetWidth, height: content.offsetHeight });\n };\n useResizeObserver(content, handleSizeChange);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getOpenState(open),\n \"data-orientation\": context.orientation,\n ...viewportImplProps,\n ref: composedRefs,\n style: {\n // Prevent interaction when animating out\n pointerEvents: !open && context.isRootMenu ? \"none\" : void 0,\n [\"--radix-navigation-menu-viewport-width\"]: viewportWidth,\n [\"--radix-navigation-menu-viewport-height\"]: viewportHeight,\n ...viewportImplProps.style\n },\n onPointerEnter: composeEventHandlers(props.onPointerEnter, context.onContentEnter),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, whenMouse(context.onContentLeave)),\n children: Array.from(viewportContentContext.items).map(([value, { ref, forceMount, ...props2 }]) => {\n const isActive = activeContentValue === value;\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isActive, children: /* @__PURE__ */ jsx(\n NavigationMenuContentImpl,\n {\n ...props2,\n ref: composeRefs(ref, (node) => {\n if (isActive && node) setContent(node);\n })\n }\n ) }, value);\n })\n }\n );\n});\nvar FOCUS_GROUP_NAME = \"FocusGroup\";\nvar FocusGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeNavigationMenu, ...groupProps } = props;\n const context = useNavigationMenuContext(FOCUS_GROUP_NAME, __scopeNavigationMenu);\n return /* @__PURE__ */ jsx(FocusGroupCollection.Provider, { scope: __scopeNavigationMenu, children: /* @__PURE__ */ jsx(FocusGroupCollection.Slot, { scope: __scopeNavigationMenu, children: /* @__PURE__ */ jsx(Primitive.div, { dir: context.dir, ...groupProps, ref: forwardedRef }) }) });\n }\n);\nvar ARROW_KEYS = [\"ArrowRight\", \"ArrowLeft\", \"ArrowUp\", \"ArrowDown\"];\nvar FOCUS_GROUP_ITEM_NAME = \"FocusGroupItem\";\nvar FocusGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeNavigationMenu, ...groupProps } = props;\n const getItems = useFocusGroupCollection(__scopeNavigationMenu);\n const context = useNavigationMenuContext(FOCUS_GROUP_ITEM_NAME, __scopeNavigationMenu);\n return /* @__PURE__ */ jsx(FocusGroupCollection.ItemSlot, { scope: __scopeNavigationMenu, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n ...groupProps,\n ref: forwardedRef,\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isFocusNavigationKey = [\"Home\", \"End\", ...ARROW_KEYS].includes(event.key);\n if (isFocusNavigationKey) {\n let candidateNodes = getItems().map((item) => item.ref.current);\n const prevItemKey = context.dir === \"rtl\" ? \"ArrowRight\" : \"ArrowLeft\";\n const prevKeys = [prevItemKey, \"ArrowUp\", \"End\"];\n if (prevKeys.includes(event.key)) candidateNodes.reverse();\n if (ARROW_KEYS.includes(event.key)) {\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n event.preventDefault();\n }\n })\n }\n ) });\n }\n);\nfunction getTabbableCandidates(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\nfunction focusFirst(candidates) {\n const previouslyFocusedElement = document.activeElement;\n return candidates.some((candidate) => {\n if (candidate === previouslyFocusedElement) return true;\n candidate.focus();\n return document.activeElement !== previouslyFocusedElement;\n });\n}\nfunction removeFromTabOrder(candidates) {\n candidates.forEach((candidate) => {\n candidate.dataset.tabindex = candidate.getAttribute(\"tabindex\") || \"\";\n candidate.setAttribute(\"tabindex\", \"-1\");\n });\n return () => {\n candidates.forEach((candidate) => {\n const prevTabIndex = candidate.dataset.tabindex;\n candidate.setAttribute(\"tabindex\", prevTabIndex);\n });\n };\n}\nfunction useResizeObserver(element, onResize) {\n const handleResize = useCallbackRef(onResize);\n useLayoutEffect(() => {\n let rAF = 0;\n if (element) {\n const resizeObserver = new ResizeObserver(() => {\n cancelAnimationFrame(rAF);\n rAF = window.requestAnimationFrame(handleResize);\n });\n resizeObserver.observe(element);\n return () => {\n window.cancelAnimationFrame(rAF);\n resizeObserver.unobserve(element);\n };\n }\n }, [element, handleResize]);\n}\nfunction getOpenState(open) {\n return open ? \"open\" : \"closed\";\n}\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\nfunction whenMouse(handler) {\n return (event) => event.pointerType === \"mouse\" ? handler(event) : void 0;\n}\nvar Root2 = NavigationMenu;\nvar Sub = NavigationMenuSub;\nvar List = NavigationMenuList;\nvar Item = NavigationMenuItem;\nvar Trigger = NavigationMenuTrigger;\nvar Link = NavigationMenuLink;\nvar Indicator = NavigationMenuIndicator;\nvar Content = NavigationMenuContent;\nvar Viewport = NavigationMenuViewport;\nexport {\n Content,\n Indicator,\n Item,\n Link,\n List,\n NavigationMenu,\n NavigationMenuContent,\n NavigationMenuIndicator,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n NavigationMenuSub,\n NavigationMenuTrigger,\n NavigationMenuViewport,\n Root2 as Root,\n Sub,\n Trigger,\n Viewport,\n createNavigationMenuScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from 'react'\n\nimport { ChevronDownIcon } from '@radix-ui/react-icons'\nimport * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport { cn } from '@utils/cn'\nimport { cva } from 'class-variance-authority'\n\nconst NavigationMenuRoot = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Root\n ref={ref}\n className={cn('relative z-10 flex max-w-max flex-1 items-center justify-center', className)}\n {...props}\n >\n {children}\n <NavigationMenuViewport />\n </NavigationMenuPrimitive.Root>\n))\nNavigationMenuRoot.displayName = NavigationMenuPrimitive.Root.displayName\n\nconst NavigationMenuList = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.List\n ref={ref}\n className={cn('group flex flex-1 list-none items-center justify-center space-x-1', className)}\n {...props}\n />\n))\nNavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName\n\nconst NavigationMenuItem = NavigationMenuPrimitive.Item\n\nconst navigationMenuTriggerStyle = cva(\n 'group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50'\n)\n\nconst NavigationMenuTrigger = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Trigger\n ref={ref}\n className={cn(navigationMenuTriggerStyle(), 'group', className)}\n {...props}\n >\n {children}{' '}\n <ChevronDownIcon\n className=\"relative top-px ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n))\nNavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName\n\nconst NavigationMenuContent = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Content\n ref={ref}\n className={cn(\n 'data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 left-0 top-0 w-full md:absolute md:w-auto',\n className\n )}\n {...props}\n />\n))\nNavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName\n\nconst NavigationMenuLink = NavigationMenuPrimitive.Link\n\nconst NavigationMenuViewport = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\n>(({ className, ...props }, ref) => (\n <div className={cn('absolute left-0 top-full flex justify-center')}>\n <NavigationMenuPrimitive.Viewport\n className={cn(\n 'origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]',\n className\n )}\n ref={ref}\n {...props}\n />\n </div>\n))\nNavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName\n\nconst NavigationMenuIndicator = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Indicator\n ref={ref}\n className={cn(\n 'data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden',\n className\n )}\n {...props}\n >\n <div className=\"relative top-[60%] size-2 rotate-45 rounded-tl-sm bg-border shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n))\nNavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName\n\nconst NavigationMenu = {\n Root: NavigationMenuRoot,\n List: NavigationMenuList,\n Item: NavigationMenuItem,\n Content: NavigationMenuContent,\n Trigger: NavigationMenuTrigger,\n Link: NavigationMenuLink,\n Indicator: NavigationMenuIndicator,\n Viewport: NavigationMenuViewport\n}\n\nexport { NavigationMenu }\n","import * as React from 'react'\n\nimport { cn } from '@/utils/cn'\nimport * as SeparatorPrimitive from '@radix-ui/react-separator'\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn('shrink-0 bg-border', orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]', className)}\n {...props}\n />\n))\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n","import * as React from \"react\";\nconst SvgChatAvatar = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 16, height: 16, viewBox: \"0 0 16 16\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"mask\", { id: \"mask0_25509_229350\", style: {\n maskType: \"alpha\"\n}, maskUnits: \"userSpaceOnUse\", x: 0, y: -1, width: 16, height: 17 }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M10.7586 1.14253C9.23506 -0.381005 6.76493 -0.381007 5.24139 1.14253L1.14265 5.24128C-0.380882 6.76481 -0.380885 9.23495 1.14265 10.7585L5.24139 14.8572C6.76493 16.3808 9.23506 16.3808 10.7586 14.8572L14.8573 10.7585C16.3809 9.23495 16.3809 6.76481 14.8573 5.24128L10.7586 1.14253ZM6.81774 2.71888C7.47068 2.06593 8.52931 2.06593 9.18225 2.71888L13.281 6.81762C13.9339 7.47057 13.9339 8.5292 13.281 9.18214L9.18225 13.2809C8.52931 13.9338 7.47068 13.9338 6.81774 13.2809L2.719 9.18214C2.06605 8.5292 2.06605 7.47057 2.719 6.81762L6.81774 2.71888ZM6.32544 5.52134C6.16941 5.36532 5.91643 5.36534 5.76038 5.52138C5.60434 5.67743 5.60432 5.93042 5.76034 6.08644C6.69641 7.02251 6.69629 8.54055 5.76008 9.47677C5.60403 9.63281 5.60401 9.8858 5.76004 10.0418C5.91606 10.1978 6.16904 10.1978 6.32509 10.0418C7.2613 9.10556 8.77934 9.10544 9.71541 10.0415C9.87144 10.1975 10.1244 10.1975 10.2805 10.0415C10.4365 9.88543 10.4365 9.63244 10.2805 9.47642C9.34444 8.54035 9.34455 7.02231 10.2808 6.08609C10.4368 5.93004 10.4368 5.67706 10.2808 5.52104C10.1248 5.36501 9.87181 5.36503 9.71576 5.52108C8.77954 6.4573 7.26151 6.45741 6.32544 5.52134Z\", fill: \"#60606C\", style: {\n fill: \"#60606C\",\n fill: \"color(display-p3 0.3760 0.3760 0.4240)\",\n fillOpacity: 1\n} })), /* @__PURE__ */ React.createElement(\"g\", { mask: \"url(#mask0_25509_229350)\" }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M10.7586 1.14253C9.23506 -0.381005 6.76493 -0.381007 5.24139 1.14253L1.14265 5.24128C-0.380882 6.76481 -0.380885 9.23495 1.14265 10.7585L5.24139 14.8572C6.76493 16.3808 9.23506 16.3808 10.7586 14.8572L14.8573 10.7585C16.3809 9.23495 16.3809 6.76481 14.8573 5.24128L10.7586 1.14253ZM6.81774 2.71888C7.47068 2.06593 8.52931 2.06593 9.18225 2.71888L13.281 6.81762C13.9339 7.47057 13.9339 8.5292 13.281 9.18214L9.18225 13.2809C8.52931 13.9338 7.47068 13.9338 6.81774 13.2809L2.719 9.18214C2.06605 8.5292 2.06605 7.47057 2.719 6.81762L6.81774 2.71888ZM6.32544 5.52134C6.16941 5.36532 5.91643 5.36534 5.76038 5.52138C5.60434 5.67743 5.60432 5.93042 5.76034 6.08644C6.69641 7.02251 6.69629 8.54055 5.76008 9.47677C5.60403 9.63281 5.60401 9.8858 5.76004 10.0418C5.91606 10.1978 6.16904 10.1978 6.32509 10.0418C7.2613 9.10556 8.77934 9.10544 9.71541 10.0415C9.87144 10.1975 10.1244 10.1975 10.2805 10.0415C10.4365 9.88543 10.4365 9.63244 10.2805 9.47642C9.34444 8.54035 9.34455 7.02231 10.2808 6.08609C10.4368 5.93004 10.4368 5.67706 10.2808 5.52104C10.1248 5.36501 9.87181 5.36503 9.71576 5.52108C8.77954 6.4573 7.26151 6.45741 6.32544 5.52134Z\", fill: \"#60606C\", style: {\n fill: \"#60606C\",\n fill: \"color(display-p3 0.3760 0.3760 0.4240)\",\n fillOpacity: 1\n} }), /* @__PURE__ */ React.createElement(\"g\", { style: {\n mixBlendMode: \"plus-lighter\"\n}, opacity: 0.7, filter: \"url(#filter0_f_25509_229350)\" }, /* @__PURE__ */ React.createElement(\"circle\", { cx: 9.08664, cy: 6.5452, r: 8.72727, fill: \"url(#paint0_linear_25509_229350)\", style: {} }))), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"filter\", { id: \"filter0_f_25509_229350\", x: -5.24708, y: -7.78853, width: 28.666, height: 28.6674, filterUnits: \"userSpaceOnUse\", colorInterpolationFilters: \"sRGB\" }, /* @__PURE__ */ React.createElement(\"feFlood\", { floodOpacity: 0, result: \"BackgroundImageFix\" }), /* @__PURE__ */ React.createElement(\"feBlend\", { mode: \"normal\", in: \"SourceGraphic\", in2: \"BackgroundImageFix\", result: \"shape\" }), /* @__PURE__ */ React.createElement(\"feGaussianBlur\", { stdDeviation: 2.80323, result: \"effect1_foregroundBlur_25509_229350\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"paint0_linear_25509_229350\", x1: 0.359375, y1: -2.18207, x2: 18.9813, y2: -0.832256, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#FAF4EB\", style: {\n stopColor: \"#FAF4EB\",\n stopColor: \"color(display-p3 0.9804 0.9569 0.9216)\",\n stopOpacity: 1\n} }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 0.334154, stopColor: \"#E6A0BD\", style: {\n stopColor: \"#E6A0BD\",\n stopColor: \"color(display-p3 0.9020 0.6275 0.7412)\",\n stopOpacity: 1\n} }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 0.690299, stopColor: \"#9188E7\", style: {\n stopColor: \"#9188E7\",\n stopColor: \"color(display-p3 0.5686 0.5333 0.9059)\",\n stopOpacity: 1\n} }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#C6F7FE\", style: {\n stopColor: \"#C6F7FE\",\n stopColor: \"color(display-p3 0.7765 0.9686 0.9961)\",\n stopOpacity: 1\n} }))));\nexport default SvgChatAvatar;\n","import { ChangeEvent, FC, HTMLAttributes, KeyboardEvent, PropsWithChildren, ReactNode, RefObject } from 'react'\n\nimport { Button, Icon, Input } from '@/components'\nimport ChatAvatarIcon from '@/icons/chat-avatar.svg'\nimport { cn } from '@utils/cn'\n\nconst Root: FC<PropsWithChildren<HTMLAttributes<HTMLElement>>> = ({ children }) => {\n return <div className=\"flex size-full max-w-[460px] flex-col bg-background-1\">{children}</div>\n}\n\nconst Header: FC<{ onClose: () => void }> = ({ onClose }) => {\n return (\n <div className=\"sticky top-0 flex items-center justify-between bg-background-1 px-6 py-4\">\n <p className=\"text-16 font-medium text-foreground-1\">AI Assistant</p>\n <Button size=\"icon\" variant=\"custom\" className=\"-mr-2 text-icons-4 hover:text-icons-2\" onClick={onClose}>\n <Icon name=\"close\" size={16} />\n <span className=\"sr-only\">Close</span>\n </Button>\n </div>\n )\n}\n\nconst Body: FC<PropsWithChildren<HTMLAttributes<HTMLElement>>> = ({ children }) => {\n return (\n <div className=\"scrollbar-hidden flex flex-1 flex-col gap-y-7 overflow-y-auto overflow-x-hidden px-6 py-2\">\n {children}\n </div>\n )\n}\n\nconst Footer: FC<PropsWithChildren<HTMLAttributes<HTMLElement>>> = ({ children }) => {\n return <div className=\"sticky bottom-0 bg-background-1 px-6 py-3\">{children}</div>\n}\n\ninterface MessageProps extends PropsWithChildren<HTMLAttributes<HTMLElement>> {\n self?: boolean\n avatar?: ReactNode\n actions?: ReactNode\n}\n\nconst Message: FC<MessageProps> = ({ self, avatar, actions, children }) => {\n return (\n <div\n className={cn('flex gap-x-3 content-center items-start', {\n 'place-content-end': self\n })}\n >\n {!self && <div className=\"mt-0.5\">{avatar ? avatar : <ChatAvatarIcon />}</div>}\n <div\n className={cn('flex flex-col gap-3', {\n 'w-[85%] items-end': self,\n 'w-full': !self\n })}\n >\n <div\n className={cn('text-14 text-foreground-1 leading-relaxed', {\n 'px-3.5 py-2 bg-background-8 rounded-[8px_8px_2px_8px]': self\n })}\n >\n {children}\n </div>\n {actions && <div className=\"mt-1 flex items-center gap-1\">{actions}</div>}\n </div>\n </div>\n )\n}\n\nconst CodeBlock: FC<PropsWithChildren<{ className?: string }>> = ({ children, className }) => {\n return (\n <code\n className={cn(\n 'inline-block rounded-[3px] border border-borders-2 bg-background-8 px-1.5 text-13 leading-[18px]',\n className\n )}\n >\n {children}\n </code>\n )\n}\n\ninterface TypingProps {\n avatar?: ReactNode\n}\n\nconst Typing: FC<TypingProps> = ({ avatar }) => {\n return (\n <div className=\"mt-3 flex items-center gap-x-3.5\">\n {avatar || <ChatAvatarIcon />}\n <span className=\"size-2.5 rounded-full bg-foreground-2\" aria-hidden />\n </div>\n )\n}\n\ninterface SeparatorProps {\n title: string\n}\n\nconst Separator: FC<SeparatorProps> = ({ title }) => {\n return <div className=\"text-center text-xs font-medium opacity-50\">{title}</div>\n}\n\nconst emptyStateButtons = [\n {\n text: 'Pipeline design'\n },\n {\n text: 'Security reports'\n },\n {\n text: 'Error detection'\n },\n {\n text: 'Testing'\n }\n]\n\nconst EmptyState: FC = () => {\n return (\n <div className=\"mt-auto flex flex-col gap-5\">\n <div>\n <span className=\"block text-20 font-semibold leading-none text-foreground-4\">Hello Steven,</span>\n <span className=\"mt-[3px] block text-20 font-semibold leading-none text-foreground-1\">how can I help?</span>\n </div>\n <div>\n <span className=\"text-14 leading-relaxed text-foreground-2\">\n Here are some suggestions to enhance your CI/CD pipeline:\n </span>\n <ul className=\"mt-3 flex flex-col gap-y-1.5\">\n {emptyStateButtons.map(({ text }, index) => (\n <li key={index}>\n <Button\n className=\"w-full justify-start rounded-lg bg-background-3 px-3.5 text-foreground-1 hover:bg-background-12\"\n size=\"lg\"\n >\n {text}\n </Button>\n </li>\n ))}\n </ul>\n </div>\n </div>\n )\n}\n\ninterface InputFieldProps {\n value?: string\n inputRef?: RefObject<HTMLInputElement>\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void\n onKeyDown?: (e: KeyboardEvent<HTMLInputElement>) => void\n onSend?: () => void\n placeholder?: string\n disabled?: boolean\n sendIcon?: ReactNode\n}\n\nconst InputField: FC<InputFieldProps> = ({\n value = '',\n inputRef,\n onChange = () => {},\n onKeyDown = () => {},\n onSend = () => {},\n placeholder = 'Type a message...',\n disabled = false,\n sendIcon = <Icon name=\"arrow\" size={12} />\n}) => {\n return (\n <div className=\"relative\">\n <Input\n ref={inputRef}\n className=\"h-11 flex-1 rounded-lg pl-3 pr-12 focus:ring-0 focus-visible:h-16 focus-visible:rounded-lg focus-visible:pb-8\"\n value={value}\n onChange={onChange}\n onKeyDown={event => {\n onKeyDown(event)\n if (event.code === 'Enter') {\n onSend()\n }\n }}\n placeholder={placeholder}\n aria-label=\"Chat input\"\n />\n <Button\n className=\"absolute bottom-2 right-2 z-10 size-7 rounded-full\"\n onClick={onSend}\n size=\"icon\"\n disabled={disabled}\n aria-label=\"Send message\"\n >\n {sendIcon}\n </Button>\n </div>\n )\n}\n\nexport const Chat = {\n Root,\n Body,\n Header,\n Footer,\n Message,\n Typing,\n CodeBlock,\n Separator,\n EmptyState,\n Input: InputField\n}\n","import { CSSProperties, useCallback, useEffect, useState } from 'react'\n\nimport { DiffFile, DiffModeEnum, DiffView } from '@git-diff-view/react'\nimport { getDiffViewHighlighter } from '@git-diff-view/shiki'\nimport { HighlighterType } from '@views/repo/pull-request/hooks/useDiffHighlighter'\nimport { debounce } from 'lodash-es'\n\ninterface ChatDiffViewerProps {\n data: string\n mode?: DiffModeEnum\n lang?: string\n fileName?: string\n}\n\nexport const ChatDiffViewer = ({ data, mode = 4, lang = 'go', fileName }: ChatDiffViewerProps) => {\n const [, setLoading] = useState(false)\n const [diffFileInstance, setDiffFileInstance] = useState<DiffFile>()\n const [highlighter, setHighlighter] = useState<HighlighterType>()\n\n useEffect(() => {\n const init = async () => {\n setLoading(true)\n try {\n const shikiHighlighter = await getDiffViewHighlighter()\n if (shikiHighlighter) {\n setHighlighter(shikiHighlighter as HighlighterType)\n }\n } finally {\n setLoading(false)\n }\n }\n init()\n }, [setLoading])\n\n const setDiffInstanceCb = useCallback(\n debounce((lang: string, diffString: string, content?: string) => {\n if (!diffString) {\n setDiffFileInstance(undefined)\n return\n }\n const data = DiffFile.createInstance({\n newFile: { fileLang: lang, content: content },\n hunks: [diffString]\n })\n try {\n data?.init()\n if (mode === DiffModeEnum.Split) {\n data?.buildSplitDiffLines()\n } else {\n data?.buildUnifiedDiffLines()\n }\n\n setDiffFileInstance(data)\n } catch (e) {\n alert((e as Error).message)\n }\n }, 100),\n []\n )\n\n useEffect(() => {\n if (data) {\n setDiffInstanceCb(lang, data)\n }\n }, [data, lang, setDiffInstanceCb])\n\n return (\n <div className=\"mr-7 mt-3 flex flex-col rounded-md border border-borders-1 bg-background-1\">\n {fileName && (\n <span className=\"rounded-[inherit] border-b border-borders-1 bg-background-2 p-4 text-14 font-medium text-foreground-1\">\n {fileName}\n </span>\n )}\n {diffFileInstance && (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n <DiffView\n style={{ '--diff-plain-lineNumber--': 'hsl(var(--canary-background-01))' } as CSSProperties}\n className=\"w-full text-foreground-8\"\n diffFile={diffFileInstance}\n diffViewFontSize={14}\n diffViewHighlight={true}\n diffViewMode={4}\n registerHighlighter={highlighter}\n diffViewWrap={false}\n />\n )}\n </div>\n )\n}\n","import { FC } from 'react'\n\nimport { Button, Chat, ChatDiffViewer, Icon } from '@/components'\n\nconst diffData =\n 'diff --git a/packages/ui/src/shared-style-variables.css b/packages/ui/src/shared-style-variables.css\\n' +\n 'index 68ad3fe8a7a992512924a537e5407fed671d645d..d7a93ea2d4900655ba8938218edec1524a4bb3da 100644\\n' +\n '--- a/packages/ui/src/shared-style-variables.css\\n' +\n '+++ b/packages/ui/src/shared-style-variables.css\\n' +\n '@@ -292,7 +290,5 @@\\n' +\n ' },\\n' +\n ' Issue: Scm.Issue}\\n' +\n '- Title: src.Resource.PullRequest.Description,\\n' +\n '- Link: src.Resource.PullRequest.URL,\\n' +\n '- Body: src.Resource.PullRequest.Description,\\n' +\n '+ Title: src.Resource.PullRequest.Description,\\n' +\n '+ Author: scm.User{\\n' +\n '+ Body: src.Resource.PullRequest.Description,\\n'\n\nexport const ChatPreviewWrapper: FC = () => {\n return (\n <div className=\"h-[calc(100vh-100px)] border-r border-borders-4\">\n <Chat.Root>\n <Chat.Header onClose={() => {}} />\n <Chat.Body>\n <Chat.Message>\n Hey Olivia! I've finished with the requirements doc! I made some notes in the gdoc as well for Phoenix\n to look over.\n </Chat.Message>\n <Chat.Message self>Awesome! Thanks, I'll take a look at this today.</Chat.Message>\n <Chat.Message\n actions={\n <Button\n className=\"flex h-6 gap-x-1 rounded bg-background-8 px-2.5 text-foreground-8 hover:bg-background-9 hover:text-foreground-1\"\n size=\"sm\"\n variant=\"custom\"\n >\n <Icon className=\"shrink-0 text-icons-9\" name=\"repo-icon\" size={12} />\n main\n </Button>\n }\n >\n No rush though — we still have to wait for Lana's design. Click the button in the actions panel below to\n see branches which require your attention to fix and redeploy.\n </Chat.Message>\n <Chat.Message>\n Hey Olivia, can you please review the latest design when you have a chance?\n <ChatDiffViewer data={diffData} fileName=\"scm/driver/azure/webhook.go\" />\n </Chat.Message>\n <Chat.Message self>\n Sure thing, I'll have a look today. They're looking great! Here's some code to make it better\n though:\n <Chat.CodeBlock>hello world</Chat.CodeBlock>\n </Chat.Message>\n <Chat.Typing />\n </Chat.Body>\n <Chat.Footer>\n <Chat.Input />\n </Chat.Footer>\n </Chat.Root>\n </div>\n )\n}\n","import { FC } from 'react'\n\nimport { Chat } from '@/components'\n\nexport const ChatEmptyPreviewWrapper: FC = () => {\n return (\n <div className=\"h-[calc(100vh-100px)] border-r border-borders-4\">\n <Chat.Root>\n <Chat.Body>\n <Chat.EmptyState />\n </Chat.Body>\n <Chat.Footer>\n <Chat.Input />\n </Chat.Footer>\n </Chat.Root>\n </div>\n )\n}\n","import { FormEvent, ReactNode, useState } from 'react'\n\nimport { Dialog } from './dialog'\nimport { Root as SearchBox } from './search-box'\nimport { Spacer } from './spacer'\n\ninterface ProjectProps {\n logo: ReactNode\n}\n\nfunction Root({ logo }: ProjectProps) {\n const [isSearchDialogOpen, setSearchDialogOpen] = useState(false)\n\n const openSearchDialog = (e?: FormEvent<HTMLInputElement>) => {\n e?.preventDefault()\n e?.stopPropagation()\n\n setSearchDialogOpen(true)\n }\n\n const closeSearchDialog = () => {\n setSearchDialogOpen(false)\n }\n\n return (\n <div className=\"flex w-full flex-col place-items-start px-3 pb-3\">\n <div className=\"flex h-[58px] items-center px-1\">{logo}</div>\n <SearchBox\n width=\"full\"\n placeholder=\"Search...\"\n hasShortcut\n shortcutLetter=\"K\"\n shortcutModifier=\"cmd\"\n value=\"\"\n onSearch={openSearchDialog}\n handleChange={openSearchDialog}\n />\n <Dialog.Root open={isSearchDialogOpen} onOpenChange={closeSearchDialog}>\n <Dialog.Content className=\"h-[600px] max-w-[800px]\">\n <Dialog.Header>\n <Dialog.Title>Search</Dialog.Title>\n <Dialog.Description>\n <Spacer size={6} />\n <SearchBox width=\"full\" placeholder=\"Search...\" />\n </Dialog.Description>\n </Dialog.Header>\n </Dialog.Content>\n </Dialog.Root>\n </div>\n )\n}\n\nexport { Root }\n","import { ReactNode } from 'react'\n\nimport { Accordion, Icon, Text } from '@/components'\nimport { useRouterContext } from '@/context'\nimport { cn } from '@utils/cn'\n\ninterface FolderItemProps {\n children: ReactNode\n value?: string\n isActive?: boolean\n content?: ReactNode\n chevronClassName?: string\n link: string\n}\n\nfunction FolderItem({ children, value = '', isActive, content, chevronClassName, link }: FolderItemProps) {\n const { Link } = useRouterContext()\n return (\n <Accordion.Item value={value} className=\"border-none\">\n <Accordion.Trigger\n className={cn(\n `relative w-full p-0 pr-1.5\n before:absolute before:z-[-1] before:top-0 before:-left-1.5 before:right-0 before:h-full before:rounded`,\n {\n 'before:bg-background-4': isActive\n }\n )}\n leftChevron\n rotateChevron\n chevronClassName={\n chevronClassName || 'text-icons-9 group-hover:text-icons-2 group-data-[state=open]:text-icons-2'\n }\n >\n <div\n className={cn(\n `flex w-full justify-start overflow-hidden transition-colors duration-200 text-foreground-2\n group-hover:text-foreground-1\n group-data-[state=open]:text-foreground-1`,\n {\n 'text-foreground-1 ': isActive\n }\n )}\n >\n <div className=\"flex w-full items-center gap-1.5 py-1.5\">\n <Icon\n className={cn(\n 'min-w-4 text-icons-9 duration-100 ease-in-out group-hover:text-icons-2 group-data-[state=open]:text-icons-2',\n { 'text-icons-2': isActive }\n )}\n name=\"folder\"\n size={16}\n />\n <Link to={link} className=\"overflow-hidden\">\n <Text className=\"duration-100 ease-in-out\" color=\"inherit\" as=\"p\" size={2} truncate weight=\"medium\">\n {children}\n </Text>\n </Link>\n </div>\n </div>\n </Accordion.Trigger>\n {!!content && (\n <Accordion.Content className=\"flex w-full items-center gap-2 pb-0 pl-4\">{content}</Accordion.Content>\n )}\n </Accordion.Item>\n )\n}\n\ninterface FileItemProps {\n children: ReactNode\n isActive?: boolean\n link?: string\n}\n\nfunction FileItem({ children, isActive, link }: FileItemProps) {\n const { Link } = useRouterContext()\n const comp = (\n <div\n className={cn(\n `relative group flex items-center justify-start gap-1.5 py-1.5 pr-1.5 pl-4 text-foreground-2\n hover:text-foreground-1\n before:absolute before:z-[-1] before:top-0 before:left-2.5 before:right-0 before:h-full before:rounded`,\n {\n 'text-foreground-1 before:bg-background-4': isActive\n }\n )}\n >\n <Icon\n className={cn('min-w-4 text-icons-9 duration-100 ease-in-out group-hover:text-icons-2', {\n 'text-icons-2': isActive\n })}\n name=\"file\"\n size={16}\n />\n <Text className=\"duration-100 ease-in-out\" size={2} color=\"inherit\" weight=\"medium\" truncate>\n {children}\n </Text>\n </div>\n )\n\n return link ? <Link to={link}>{comp}</Link> : comp\n}\n\ninterface RootProps {\n children: ReactNode\n onValueChange: (value: string | string[]) => void\n value: string[]\n}\n\nfunction Root({ children, onValueChange, value }: RootProps) {\n return (\n <Accordion.Root type=\"multiple\" className=\"w-full\" onValueChange={onValueChange} value={value}>\n {children}\n </Accordion.Root>\n )\n}\n\nexport { Root, FileItem, FolderItem }\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","import { ColorType, ContentStyleType, ContrastType, FullTheme, ModeType } from '@/context'\n\nexport interface ThemeInterface {\n mode: ModeType\n contrast: ContrastType\n colorAdjustment: ColorType\n accentColor: AccentColor\n grayColor: GrayColor\n}\n\nexport enum AccentColor {\n Red = '#FF4D4D',\n Green = '#63E979',\n Yellow = '#FFC44D',\n Cyan = '#4DA6FF',\n Pink = '#FF66E5',\n Purple = '#B266FF',\n Violet = '#9580FF',\n Blue = '#4D6AFF',\n Turquoise = '#33DDFF',\n Orange = '#FF884D',\n Brown = '#A68059',\n LightGreen = '#4DFFB5',\n Lime = '#A6FF4D',\n White = '#FFFFFF'\n}\n\nexport enum GrayColor {\n First = '#6B6E74',\n Second = '#6E6E6E',\n Third = '#6F6D76',\n Fourth = '#6B6E75',\n Fifth = '#66716B',\n Sixth = '#6B7068',\n Seventh = '#6F6D68'\n}\n\nexport interface ThemeDialogProps {\n defaultTheme?: ThemeInterface\n theme?: FullTheme\n isInset?: boolean\n setTheme: (theme: FullTheme) => void\n open: boolean\n onOpenChange: (open: boolean) => void\n onInsetChange?: (style: ContentStyleType) => void\n children?: React.ReactNode\n showSystemMode?: boolean\n showAccentColor?: boolean\n showGrayColor?: boolean\n}\n","import { FC, useEffect, useState } from 'react'\n\nimport { Dialog, getModeColorContrastFromFullTheme, Icon, Select, Separator } from '@/components'\nimport { ColorType, ContentStyleType, ContrastType, ModeType } from '@/context/theme'\nimport darkModeImage from '@/svgs/theme-dark.png'\nimport lightModeImage from '@/svgs/theme-light.png'\nimport { cn } from '@/utils/cn'\n\nimport { AccentColor, GrayColor, ThemeDialogProps } from './types'\n\nconst ThemeDialog: FC<ThemeDialogProps> = ({\n theme,\n isInset,\n setTheme,\n open,\n onOpenChange,\n onInsetChange,\n children,\n showSystemMode,\n showAccentColor,\n showGrayColor\n}) => {\n const [accentColor, setAccentColor] = useState<AccentColor>(AccentColor.Blue)\n const [grayColor, setGrayColor] = useState<GrayColor>(GrayColor.First)\n\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\n const [systemMode, setSystemMode] = useState<ModeType>(mediaQuery.matches ? ModeType.Dark : ModeType.Light)\n useEffect(() => {\n const updateSystemTheme = () => {\n setSystemMode(mediaQuery.matches ? ModeType.Dark : ModeType.Light)\n }\n\n mediaQuery.addEventListener('change', updateSystemTheme)\n\n return () => {\n mediaQuery.removeEventListener('change', updateSystemTheme)\n }\n }, [])\n\n const { mode, color: colorAdjustment, contrast } = getModeColorContrastFromFullTheme(theme)\n\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n {!!children && <Dialog.Trigger asChild>{children}</Dialog.Trigger>}\n <Dialog.Content className=\"max-w-[538px]\">\n <Dialog.Title className=\"text-20 font-medium\">Appearance settings</Dialog.Title>\n {/* Mode */}\n <div className=\"mt-1 flex flex-col gap-y-5\">\n <div className=\"flex flex-col\">\n <span className=\"text-16 text-foreground-1 font-medium\">Mode</span>\n <p className=\"text-14 text-foreground-3 mt-1.5 leading-snug\">\n Choose Dark mode for low light or Light mode for bright spaces.\n </p>\n <div className=\"mt-[18px] grid grid-cols-2 gap-4\">\n {Object.entries(ModeType).map(([key, value]) => {\n if (!showSystemMode && value === ModeType.System) return null\n const valueMode = value === ModeType.System ? systemMode : value\n return (\n <button\n className=\"flex flex-col gap-y-2 focus-visible:outline-none\"\n key={key}\n onClick={() => {\n setTheme(`${value}-${colorAdjustment}-${contrast}`)\n }}\n >\n <div className=\"relative\">\n <img\n src={valueMode === ModeType.Dark ? darkModeImage : lightModeImage}\n alt=\"\"\n className={cn(\n 'w-full h-auto rounded border',\n mode === value ? 'border-borders-accent' : 'border-borders-4'\n )}\n />\n {mode === value && (\n <Icon className=\"text-foreground-1 absolute bottom-2 left-2\" name=\"checkbox-circle\" size={16} />\n )}\n <div\n className=\"absolute right-[27px] top-[61px] h-2 w-9 rounded-sm\"\n style={{\n backgroundColor:\n accentColor === AccentColor.White\n ? value === ModeType.Light\n ? 'hsla(240, 6%, 40%, 1)'\n : 'hsla(240, 9%, 67%, 1)'\n : accentColor\n }}\n aria-hidden\n />\n </div>\n <span className=\"text-14 text-foreground-1 leading-tight\">{key}</span>\n </button>\n )\n })}\n </div>\n </div>\n\n <Separator className=\"bg-borders-4 h-px\" />\n\n {/* Contrast */}\n <div className=\"grid grid-cols-[246px_1fr] gap-x-8\">\n <div>\n <span className=\"text-16 text-foreground-1 font-medium\">Contrast</span>\n <p className=\"text-14 text-foreground-3 mt-1.5 leading-snug\">\n High contrast improves readability, Dimmer mode reduces glare.\n </p>\n </div>\n <Select.Root\n name=\"contrast\"\n value={contrast}\n onValueChange={(value: ContrastType) => {\n setTheme(`${mode}-${colorAdjustment}-${value}`)\n }}\n placeholder=\"Select\"\n >\n <Select.Content>\n {Object.entries(ContrastType).map(([key, value]) => (\n <Select.Item key={value} value={value}>\n {key}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Root>\n </div>\n\n <Separator className=\"bg-borders-4 h-px\" />\n\n {/* Color Adjustment */}\n <div className=\"grid grid-cols-[246px_1fr] gap-x-8\">\n <div>\n <span className=\"text-16 text-foreground-1 font-medium\">Color adjustment</span>\n <p className=\"text-14 text-foreground-3 mt-1.5 leading-snug\">\n Adjust colors for different types of color blindness.\n </p>\n </div>\n <Select.Root\n name=\"color-adjustment\"\n value={colorAdjustment}\n onValueChange={(value: ColorType) => {\n setTheme(`${mode}-${value}-${contrast}`)\n }}\n placeholder=\"Select\"\n >\n <Select.Content>\n {Object.entries(ColorType).map(([key, value]) => (\n <Select.Item key={value} value={value}>\n {key}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Root>\n </div>\n\n <Separator className=\"bg-borders-4 h-px\" />\n\n {/* Inset Adjustment */}\n <div className=\"grid grid-cols-[246px_1fr] gap-x-8\">\n <div>\n <span className=\"text-16 text-foreground-1 font-medium\">Content style</span>\n <p className=\"text-14 text-foreground-3 mt-1.5 leading-snug\">Choose the style of the content area.</p>\n </div>\n <Select.Root\n name=\"color-adjustment\"\n value={isInset ? ContentStyleType.Inset : ContentStyleType.Default}\n onValueChange={onInsetChange}\n placeholder=\"Select\"\n >\n <Select.Content>\n {Object.values(ContentStyleType).map(value => (\n <Select.Item key={value} value={value}>\n {value === ContentStyleType.Inset ? 'Inset' : 'Default'}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Root>\n </div>\n\n {/* Accent Color */}\n {showAccentColor ? (\n <>\n <Separator className=\"bg-borders-4 h-px\" />\n <div className=\"grid grid-cols-[246px_1fr] gap-x-8\">\n <div>\n <span className=\"text-16 text-foreground-1 font-medium\">Accent color</span>\n <p className=\"text-14 text-foreground-3 mt-1.5 leading-snug\">Select your application accent color.</p>\n </div>\n <div className=\"flex flex-wrap gap-1.5\">\n {Object.values(AccentColor).map(item => (\n <button\n key={item}\n className={cn(\n 'focus-visible:rounded-full h-[26px] w-[26px] rounded-full',\n accentColor === item && 'border border-borders-8'\n )}\n onClick={() => {\n setAccentColor(item)\n }}\n >\n <span\n style={{\n backgroundColor:\n item === AccentColor.White && mode === ModeType.Light ? 'hsla(240, 6%, 40%, 1)' : item\n }}\n className=\"m-auto block size-[18px] rounded-full\"\n />\n </button>\n ))}\n </div>\n </div>\n </>\n ) : null}\n\n {/* Gray Color */}\n {showGrayColor ? (\n <>\n <Separator className=\"bg-borders-4 h-px\" />\n <div className=\"grid grid-cols-[246px_1fr] gap-x-8\">\n <div>\n <span className=\"text-16 text-foreground-1 font-medium\">Gray color</span>\n <p className=\"text-14 text-foreground-3 mt-1.5 leading-snug\">Select your application gray color.</p>\n </div>\n <div className=\"flex flex-wrap gap-1.5\">\n {Object.values(GrayColor).map(item => (\n <button\n key={item}\n className={cn(\n 'focus-visible:rounded-full h-[26px] w-[26px] rounded-full',\n grayColor === item && 'border border-borders-8'\n )}\n onClick={() => {\n setGrayColor(item)\n }}\n >\n <span style={{ backgroundColor: item }} className=\"m-auto block size-[18px] rounded-full\" />\n </button>\n ))}\n </div>\n </div>\n </>\n ) : null}\n </div>\n </Dialog.Content>\n </Dialog.Root>\n )\n}\n\nexport { ThemeDialog }\n","export enum Language {\n English = 'English',\n French = 'French'\n}\n\nexport enum LanguageCode {\n EN = 'en',\n FR = 'fr'\n}\n\nexport interface LanguageInterface {\n code: LanguageCode\n name: Language\n}\n\nexport interface LanguageDialogProps {\n defaultLanguage?: LanguageCode\n language?: LanguageCode\n supportedLanguages: LanguageInterface[]\n open: boolean\n onOpenChange: (open: boolean) => void\n onChange: (language: LanguageInterface) => void\n onSave: (language: LanguageInterface) => void\n onCancel: () => void\n children?: React.ReactNode\n}\n","import { FC, useEffect, useState } from 'react'\n\nimport { Dialog, Icon } from '@/components'\nimport { cn } from '@utils/cn'\n\nimport { Language, LanguageCode, LanguageDialogProps, LanguageInterface } from './types'\n\nexport const languages: LanguageInterface[] = [\n { code: LanguageCode.EN, name: Language.English },\n { code: LanguageCode.FR, name: Language.French }\n]\n\nconst LanguageDialog: FC<LanguageDialogProps> = ({\n defaultLanguage = LanguageCode.EN,\n language,\n supportedLanguages,\n open,\n onOpenChange,\n onChange,\n children\n}) => {\n const [selectedLanguage, setSelectedLanguage] = useState<LanguageCode | null>(null)\n\n useEffect(() => {\n if (language) {\n setSelectedLanguage(language)\n } else if (defaultLanguage) {\n setSelectedLanguage(defaultLanguage)\n }\n }, [defaultLanguage, language])\n\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n {!!children && <Dialog.Trigger asChild>{children}</Dialog.Trigger>}\n <Dialog.Content className=\"max-w-[400px]\">\n <Dialog.Title className=\"text-20 font-medium\">Language</Dialog.Title>\n <div className=\"mt-1 flex flex-col gap-3\">\n {supportedLanguages.map(lang => (\n <button\n key={lang.code}\n className=\"group relative flex cursor-pointer items-center justify-between rounded-md px-0 focus:ring-0 focus-visible:outline-none\"\n onClick={() => {\n setSelectedLanguage(lang.code)\n onChange(lang)\n }}\n >\n <div className=\"flex items-center gap-2\">\n <div className=\"flex size-6 items-center justify-center rounded bg-background-12 text-12 uppercase text-foreground-3\">\n {lang.code}\n </div>\n <span\n className={cn(\n 'group-hover:text-foreground-1',\n selectedLanguage === lang.code ? 'text-foreground-1' : 'text-foreground-2'\n )}\n >\n {lang.name}\n </span>\n </div>\n {selectedLanguage === lang.code && <Icon className=\"text-icons-2\" name=\"tick\" size={12} />}\n <span\n className={cn(\n 'absolute -inset-x-2 -inset-y-1 rounded group-hover:bg-background-4',\n selectedLanguage === lang.code && 'bg-background-4'\n )}\n aria-hidden\n />\n </button>\n ))}\n </div>\n </Dialog.Content>\n </Dialog.Root>\n )\n}\n\nexport { LanguageDialog }\n"],"names":["MoreSubmenu","showMoreMenu","handleMoreMenu","items","NavLink","useRouterContext","Sheet","jsxs","jsx","NavbarSkeleton","ScrollArea","Spacer","group","group_idx","item","isActive","Icon","SettingsMenu","showSettingMenu","handleSettingsMenu","DraggableItem","id","children","Tag","className","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","style","CSS","cn","filterItems","categories","query","acc","category","filteredItems","ManageNavigationSearch","navbarMenuData","addToPinnedItems","setFilteredItems","useState","isSearchDialogOpen","setSearchDialogOpen","inputRef","useRef","popoverRef","searchQuery","handleSearchChange","handleResetSearch","useDebounceSearch","val","handleItemClick","handleInputFocus","useEffect","handleTabKey","e","isShift","activeElement","firstFocusableElement","countFilteredItems","Popover","SearchBox.Root","Text","index","Button","filterRecentItems","pinnedItems","recentItems","pinnedItem","filterMenuData","menuData","ManageNavigation","showManageNavigation","onSave","onClose","isSubmitting","submitted","currentPinnedItems","setCurrentPinnedItems","currentFilteredRecentItems","setCurrentFilteredRecentItems","isRecentCleared","setIsRecentCleared","handleDragEnd","getItemId","useDragAndDrop","handleCancel","handleClearRecent","onSubmit","updatePinnedItems","prevRecentItems","unpinnedItems","newItem","recentItem","removeFromPinnedItems","permanentlyPinnedItems","useMemo","draggablePinnedItems","AlertDialog","DndContext","closestCenter","SortableContext","_","Fragment","ButtonGroup","SidebarItem","isRecent","handleChangePinnedMenuItem","handleRemoveRecentMenuItem","handleCustomNav","t","iconName","handlePin","handleRemoveRecent","dropdownItems","DropdownMenu","Sidebar","SidebarSearchLegacy","logo","openSearchDialog","closeSearchDialog","Dialog","Root","React","props","ref","CommandPrimitive","open","onOpenChange","RadixDialog","Overlay","Input","Shortcut","List","Empty","Group","Item","Separator","CommandPalette","CommandPaletteWrapper","isOpen","setIsOpen","useSearch","search","setSearch","pages","setPages","page","DEFAULT","placeholder","setPlaceholder","onItemClick","target","MENU_OPTIONS","SUB_ITEMS","label","url","icon","key","action","shortcut","SearchContext","createContext","SearchProvider","searchTerm","setSearchTerm","selectedIndex","setSelectedIndex","toggleSearch","prev","handleKeyDown","event","context","useContext","NAME","DEFAULT_ORIENTATION","ORIENTATIONS","forwardedRef","decorative","orientationProp","domProps","orientation","isValidOrientation","semanticProps","Primitive","forwardRef","SeparatorPrimitive.Root","Skeleton","MOBILE_BREAKPOINT","useIsMobile","isMobile","setIsMobile","mql","onChange","SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","useSidebar","SidebarProvider","defaultOpen","openProp","setOpenProp","openMobile","setOpenMobile","_open","_setOpen","setOpen","useCallback","value","openState","toggleSidebar","state","contextValue","Tooltip","SidebarRoot","side","variant","collapsible","SidebarTrigger","onClick","SidebarRail","SidebarInset","SidebarInput","SidebarHeader","SidebarFooter","SidebarSeparator","SidebarContent","SidebarGroup","SidebarGroupLabel","asChild","Slot","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","cva","SidebarMenuButton","size","tooltip","Comp","button","SidebarMenuItemText","text","active","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSkeleton","showIcon","width","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton","SidebarSearch","searchContext","Label","UserAvatar","user","userName","Avatar","getInitials","User","openThemeDialog","openLanguageDialog","handleLogOut","Link","AppSidebar","useTranslationStore","pinnedMenuItems","recentMenuItems","currentUser","showNewSearch","i18n","changeLanguage","theme","setTheme","setInset","isInset","useTheme","navigate","setOpenThemeDialog","setOpenLanguageDialog","handleLanguageChange","language","handleLanguageSave","handleLanguageCancel","onInsetChange","ContentStyleType","ThemeDialog","LanguageDialog","languages","MenuGroupTypes","UserMenuKeys","ColorSelect","mode","color","contrast","Select","ColorType","ContrastSelect","ContrastType","ModeSelect","ModeType","getModeColorContrastFromFullTheme","modeColorContrast","ThemeSelector","TOAST_LIMIT","TOAST_REMOVE_DELAY","count","genId","toastTimeouts","addToRemoveQueue","toastId","timeout","dispatch","reducer","toast","memoryState","listener","update","dismiss","useToast","setState","PROVIDER_NAME","Collection","useCollection","createCollectionScope","createCollection","createToastContext","createToastScope","createContextScope","ToastProviderProvider","useToastProviderContext","ToastProvider","__scopeToast","duration","swipeDirection","swipeThreshold","viewport","setViewport","toastCount","setToastCount","isFocusedToastEscapeKeyDownRef","isClosePausedRef","prevCount","VIEWPORT_NAME","VIEWPORT_DEFAULT_HOTKEY","VIEWPORT_PAUSE","VIEWPORT_RESUME","ToastViewport","hotkey","viewportProps","getItems","wrapperRef","headFocusProxyRef","tailFocusProxyRef","composedRefs","useComposedRefs","hotkeyLabel","hasToasts","_a","wrapper","handlePause","pauseEvent","handleResume","resumeEvent","handleFocusOutResume","handlePointerLeaveResume","getSortedTabbableCandidates","tabbingDirection","tabbableCandidates","toastItem","toastNode","toastTabbableCandidates","getTabbableCandidates","isMetaKey","focusedElement","isTabbingBackwards","sortedCandidates","candidate","focusFirst","_b","_c","DismissableLayer.Branch","FocusProxy","FOCUS_PROXY_NAME","onFocusFromOutsideViewport","proxyProps","VisuallyHidden","prevFocusedElement","TOAST_NAME","TOAST_SWIPE_START","TOAST_SWIPE_MOVE","TOAST_SWIPE_CANCEL","TOAST_SWIPE_END","Toast","forceMount","toastProps","useControllableState","Presence","ToastImpl","useCallbackRef","composeEventHandlers","x","y","ToastInteractiveProvider","useToastInteractiveContext","type","durationProp","onEscapeKeyDown","onPause","onResume","onSwipeStart","onSwipeMove","onSwipeCancel","onSwipeEnd","node","setNode","node2","pointerStartRef","swipeDeltaRef","closeTimerStartTimeRef","closeTimerRemainingTimeRef","closeTimerRef","onToastAdd","onToastRemove","handleClose","startTimer","duration2","elapsedTime","announceTextContent","getAnnounceTextContent","ToastAnnounce","ReactDOM.createPortal","DismissableLayer.Root","hasSwipeMoveStarted","isHorizontalSwipe","clamp","clampedX","clampedY","moveStartBuffer","delta","eventDetail","handleAndDispatchCustomEvent","isDeltaInDirection","event2","announceProps","renderAnnounceText","setRenderAnnounceText","isAnnounced","setIsAnnounced","useNextFrame","timer","Portal","TITLE_NAME","ToastTitle","titleProps","DESCRIPTION_NAME","ToastDescription","descriptionProps","ACTION_NAME","ToastAction","altText","actionProps","ToastAnnounceExclude","ToastClose","CLOSE_NAME","closeProps","interactiveContext","announceExcludeProps","container","textContent","isHTMLElement","isHidden","isExcluded","name","handler","detail","discrete","currentTarget","dispatchDiscreteCustomEvent","direction","threshold","deltaX","deltaY","isDeltaX","callback","fn","useLayoutEffect","raf1","raf2","nodes","walker","isHiddenInput","candidates","previouslyFocusedElement","Provider","Viewport","Root2","Title","Description","Action","Close","ToastPrimitives.Provider","ToastPrimitives.Viewport","toastVariants","ToastRoot","ToastPrimitives.Root","ToastPrimitives.Action","ToastPrimitives.Close","Cross2Icon","ToastPrimitives.Title","ToastPrimitives.Description","FileViewerControlBar","view","onChangeView","isMarkdown","fileBytesSize","fileContent","handleDownloadFile","handleEditFile","handleOpenDeleteDialog","handleViewRaw","RightDetails","FileToolbarActions","StackedList.Root","StackedList.Item","ToggleGroup","StackedList.Field","FileEditorControlBar","createGitCommitSchema","isFileNameRequired","fileNameSchema","z","CommitToGitRefOption","data","ctx","GitCommitDialog","onFormSubmit","commitTitlePlaceHolder","dryRun","currentBranch","violation","bypassable","setAllStates","disableCTA","error","register","handleSubmit","setValue","watch","errors","useForm","zodResolver","isDisabledSubmission","commitToGitRefValue","fileNameValue","handleCommitToGitRefChange","handleNewBranchNameChange","_e","_d","Textarea","_f","ControlGroup","RadioGroup","Option","RadioButton","StyledLink","Message","MessageTheme","_h","_g","_j","_i","commitSuggestionsSchema","CommitSuggestionsDialog","isValid","isElement","Topbar","gridCols","child","cx","FileAdditionsTrigger","pathNewFile","pathUploadFiles","triggerRef","ExitConfirmDialog","onCancel","onConfirm","title","subtitle","confirmText","cancelText","DELETION_KEYWORD","DeleteAlertDialog","identifier","deleteFn","isLoading","withForm","verification","setVerification","handleChangeVerification","isDisabled","handleDelete","Fieldset","PipelineNodesComponents","Port","CollapsedGroupNode","RepoTabsKeys","repoTabsKeysArr","RepoSubheader","showPipelinesTab","SandboxLayout","TabNav","SortableItem","memo","onRename","onDelete","existingNames","validateViewNameChange","setName","hasError","setHasError","handleChange","newName","validation","ManageViews","views","viewManagement","localViews","setLocalViews","handleLocalRename","viewId","handleLocalDelete","v","isSaveDisabled","verticalListSortingStrategy","ViewTrigger","savedViews","currentView","layoutOptions","currentLayout","onLayoutChange","onManageClick","onViewSelect","handleManageClick","option","Filters","showFilter","showSort","filterOptions","sortOptions","activeFilters","activeSorts","handleFilterChange","handleResetFilters","searchQueries","handleSortChange","handleResetSorts","isManageDialogOpen","setIsManageDialogOpen","FilterTrigger","formatDateForInput","date","month","day","year","parseDateString","dateStr","separators","parts","separator","formattedMonth","formattedDay","formattedValue","Calendar","filter","onUpdateFilter","isBetweenMode","initialDate","rangeState","setRangeState","singleState","setSingleState","handleDateInput","handleDateConfirm","parsedDate","handleRangeDateConfirm","handleSingleDateConfirm","newState","newRange","UICalendar","Checkbox","filterOption","filteredOptions","getFilteredOptions","opt","newValues","Number","handleInputChange","newValue","handleClear","renderFilterValues","handleUpdateFilter","handleUpdateCondition","handleRemoveFilter","filterToOpen","onOpen","getFilterDisplayValue","c","condition","Views","hasChanges","isNewViewDialogOpen","setIsNewViewDialogOpen","isRenameDialogOpen","setIsRenameDialogOpen","newViewName","setNewViewName","nameError","setNameError","trimmedName","handleSaveNewView","handleRename","handleUpdateCurrentView","updatedView","canSaveNew","canRename","FiltersBar","sortDirections","filterHandlers","handleUpdateSort","handleRemoveSort","handleReorderSorts","handleResetAll","clearFilterToOpen","hasActiveFilters","Sorts","createTooltipContext","createTooltipScope","createPopperScope","usePopperScope","DEFAULT_DELAY_DURATION","TOOLTIP_OPEN","TooltipProviderContextProvider","useTooltipProviderContext","TooltipProvider","__scopeTooltip","delayDuration","skipDelayDuration","disableHoverableContent","isOpenDelayed","setIsOpenDelayed","isPointerInTransitRef","skipDelayTimerRef","skipDelayTimer","inTransit","TOOLTIP_NAME","TooltipContextProvider","useTooltipContext","disableHoverableContentProp","delayDurationProp","providerContext","popperScope","trigger","setTrigger","contentId","useId","openTimerRef","wasOpenDelayedRef","open2","stateAttribute","handleOpen","handleDelayedOpen","PopperPrimitive.Root","TRIGGER_NAME","TooltipTrigger","triggerProps","isPointerDownRef","hasPointerMoveOpenedRef","handlePointerUp","PopperPrimitive.Anchor","PORTAL_NAME","PortalProvider","usePortalContext","CONTENT_NAME","TooltipContent","portalContext","contentProps","TooltipContentImpl","TooltipContentHoverable","pointerGraceArea","setPointerGraceArea","content","onPointerInTransitChange","handleRemoveGraceArea","handleCreateGraceArea","hoverTarget","exitPoint","exitSide","getExitSideFromRect","paddedExitPoints","getPaddedExitPoints","hoverTargetPoints","getPointsFromRect","graceArea","getHull","handleTriggerLeave","handleContentLeave","handleTrackPointerGrace","pointerPosition","hasEnteredTarget","isPointerOutsideGraceArea","isPointInPolygon","VisuallyHiddenContentContextProvider","useVisuallyHiddenContentContext","ariaLabel","onPointerDownOutside","handleScroll","DismissableLayer","PopperPrimitive.Content","Slottable","VisuallyHiddenPrimitive.Root","ARROW_NAME","TooltipArrow","arrowProps","PopperPrimitive.Arrow","point","rect","top","bottom","right","left","padding","polygon","inside","i","j","xi","yi","xj","yj","points","newPoints","b","getHullPresorted","upperHull","p","q","r","lowerHull","Root3","Trigger","Content2","sideOffset","Content","NAVIGATION_MENU_NAME","FocusGroupCollection","useFocusGroupCollection","createFocusGroupCollectionScope","createNavigationMenuContext","createNavigationMenuScope","NavigationMenuProviderImpl","useNavigationMenuContext","ViewportContentProvider","useViewportContentContext","NavigationMenu","__scopeNavigationMenu","valueProp","onValueChange","defaultValue","dir","NavigationMenuProps","navigationMenu","setNavigationMenu","composedRef","useDirection","value2","hasSkipDelayDuration","startCloseTimer","itemValue","NavigationMenuProvider","prevValue","SUB_NAME","NavigationMenuSub","subProps","scope","isRootMenu","rootNavigationMenu","onItemSelect","onItemDismiss","onTriggerEnter","onTriggerLeave","onContentEnter","onContentLeave","viewportContent","setViewportContent","indicatorTrack","setIndicatorTrack","usePrevious","contentValue","contentData","prevContent","LIST_NAME","NavigationMenuList","listProps","list","FocusGroup","ITEM_NAME","NavigationMenuItemContextProvider","useNavigationMenuItemContext","NavigationMenuItem","itemProps","autoValue","contentRef","focusProxyRef","restoreContentTabOrderRef","wasEscapeCloseRef","handleContentEntry","handleContentExit","removeFromTabOrder","NavigationMenuTrigger","disabled","itemContext","triggerId","makeTriggerId","makeContentId","wasClickCloseRef","FocusGroupItem","getOpenState","whenMouse","entryKey","wasTriggerFocused","wasFocusFromContent","LINK_NAME","LINK_SELECT","NavigationMenuLink","onSelect","linkProps","linkSelectEvent","rootContentDismissEvent","ROOT_CONTENT_DISMISS","INDICATOR_NAME","NavigationMenuIndicator","indicatorProps","isVisible","ReactDOM","NavigationMenuIndicatorImpl","activeTrigger","setActiveTrigger","position","setPosition","isHorizontal","triggerNode","handlePositionChange","useResizeObserver","NavigationMenuContent","commonProps","ViewportContentMounter","NavigationMenuContentImpl","onViewportContentChange","onViewportContentRemove","onRootContentClose","onContentFocusOutside","prevMotionAttributeRef","motionAttribute","values","prevIndex","isSelected","wasSelected","attribute","isTrigger","isRootViewport","nextCandidates","_event","NavigationMenuViewport","NavigationMenuViewportImpl","viewportImplProps","viewportContentContext","setSize","setContent","viewportWidth","viewportHeight","activeContentValue","props2","composeRefs","FOCUS_GROUP_NAME","groupProps","ARROW_KEYS","FOCUS_GROUP_ITEM_NAME","candidateNodes","currentIndex","prevTabIndex","element","onResize","handleResize","rAF","resizeObserver","baseId","Indicator","NavigationMenuRoot","NavigationMenuPrimitive.Root","NavigationMenuPrimitive.List","NavigationMenuPrimitive.Item","navigationMenuTriggerStyle","NavigationMenuPrimitive.Trigger","ChevronDownIcon","NavigationMenuPrimitive.Content","NavigationMenuPrimitive.Link","NavigationMenuPrimitive.Viewport","NavigationMenuPrimitive.Indicator","SvgChatAvatar","Header","Body","Footer","self","avatar","actions","ChatAvatarIcon","CodeBlock","Typing","emptyStateButtons","EmptyState","InputField","onKeyDown","onSend","sendIcon","Chat","ChatDiffViewer","lang","fileName","setLoading","diffFileInstance","setDiffFileInstance","highlighter","setHighlighter","shikiHighlighter","getDiffViewHighlighter","setDiffInstanceCb","debounce","diffString","DiffFile","DiffModeEnum","DiffView","diffData","ChatPreviewWrapper","ChatEmptyPreviewWrapper","SearchBox","FolderItem","chevronClassName","link","Accordion","FileItem","comp","darkModeImage","lightModeImage","AccentColor","GrayColor","showSystemMode","showAccentColor","showGrayColor","accentColor","setAccentColor","grayColor","setGrayColor","mediaQuery","systemMode","setSystemMode","updateSystemTheme","colorAdjustment","valueMode","Language","LanguageCode","defaultLanguage","supportedLanguages","selectedLanguage","setSelectedLanguage"],"mappings":"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","x_google_ignoreList":[10,25,48,50]}
|
|
1
|
+
{"version":3,"file":"index-BwGZ1fze.js","sources":["../src/components/more-submenu.tsx","../src/components/settings-menu.tsx","../src/components/manage-navigation/draggable-item.tsx","../src/components/manage-navigation/manage-navigation-search.tsx","../src/components/manage-navigation/index.tsx","../src/components/app-sidebar/sidebar-item.tsx","../src/components/app-sidebar/sidebar-search-legacy.tsx","../src/components/app-sidebar/sidebar-search/command-palette.tsx","../src/components/app-sidebar/sidebar-search/command-palette-wrapper.tsx","../src/components/app-sidebar/sidebar-search/search-context.tsx","../../../node_modules/.pnpm/@radix-ui+react-separator@1.1.2_@types+react-dom@17.0.26_@types+react@17.0.83__@types+react@1_6mfo3o42oabfd7x5dki2v7hf2m/node_modules/@radix-ui/react-separator/dist/index.mjs","../src/components/sidebar/separator.tsx","../src/components/sidebar/skeleton.tsx","../src/components/sidebar/use-is-mobile.tsx","../src/components/sidebar/sidebar.tsx","../src/components/app-sidebar/sidebar-search/sidebar-search.tsx","../src/components/app-sidebar/sidebar-user.tsx","../src/components/app-sidebar/app-sidebar.tsx","../src/components/app-sidebar/types.ts","../src/components/theme-selector/color-select.tsx","../src/components/theme-selector/contrast-select.tsx","../src/components/theme-selector/mode-select.tsx","../src/components/theme-selector/utils.ts","../src/components/theme-selector/index.tsx","../src/components/toast/use-toast.ts","../../../node_modules/.pnpm/@radix-ui+react-toast@1.2.6_@types+react-dom@17.0.26_@types+react@17.0.83__@types+react@17.0._vmhh3qwnghonwjyunybcxvjsey/node_modules/@radix-ui/react-toast/dist/index.mjs","../src/components/toast/toast.tsx","../src/components/file-control-bars/file-viewer-control-bar.tsx","../src/components/file-control-bars/file-editor-control-bar.tsx","../src/components/git-commit-dialog/git-commit-dialog.tsx","../src/components/git-commit-dialog/types.ts","../src/components/commit-suggestions-dialog/commit-suggestions-dialog.tsx","../src/components/topbar.tsx","../src/components/file-additions-trigger.tsx","../src/components/dialogs/exit-confirm-dialog.tsx","../src/components/dialogs/delete-alert-dialog.tsx","../src/components/pipeline-nodes/components/index.ts","../src/components/repo-subheader.tsx","../src/components/filters/manage-views.tsx","../src/components/filters/triggers/view-trigger.tsx","../src/components/filters/filters.tsx","../src/components/filters/filters-bar/actions/variants/calendar.tsx","../src/components/filters/filters-bar/actions/variants/checkbox.tsx","../src/components/filters/filters-bar/actions/variants/number.tsx","../src/components/filters/filters-bar/actions/variants/text.tsx","../src/components/filters/filters-bar/actions/filters.tsx","../src/components/filters/filters-bar/actions/views.tsx","../src/components/filters/filters-bar/filters-bar.tsx","../../../node_modules/.pnpm/@radix-ui+react-tooltip@1.1.8_@types+react-dom@17.0.26_@types+react@17.0.83__@types+react@17._nfewfnbp5gim6djg52ti7as5ge/node_modules/@radix-ui/react-tooltip/dist/index.mjs","../src/components/tooltip.tsx","../../../node_modules/.pnpm/@radix-ui+react-navigation-menu@1.2.5_@types+react-dom@17.0.26_@types+react@17.0.83__@types+r_jywqdl2i33deup6yuwrmyskgzu/node_modules/@radix-ui/react-navigation-menu/dist/index.mjs","../src/components/navigation-menu.tsx","../src/components/separator.tsx","../src/icons/chat-avatar.svg","../src/components/chat/chat.tsx","../src/components/chat/chat-diff-viewer.tsx","../src/components/chat/chat-preview-wrapper.tsx","../src/components/chat/chat-empty-preview-wrapper.tsx","../src/components/navbar-project-chooser.tsx","../src/components/file-explorer.tsx","../src/svgs/theme-dark.png","../src/svgs/theme-light.png","../src/components/theme-selector-v2/types.ts","../src/components/theme-selector-v2/theme-dialog.tsx","../src/components/language-selector/types.ts","../src/components/language-selector/language-dialog.tsx"],"sourcesContent":["import { Icon, NavbarSkeleton, ScrollArea, Sheet, Spacer } from '@/components'\nimport { useRouterContext } from '@/context'\nimport { MenuGroupType } from '@components/app-sidebar/types'\n\ninterface MoreSubmenuProps {\n showMoreMenu: boolean\n handleMoreMenu: () => void\n items: MenuGroupType[]\n}\n\nexport function MoreSubmenu({ showMoreMenu, handleMoreMenu, items }: MoreSubmenuProps) {\n const { NavLink } = useRouterContext()\n return (\n <Sheet.Root modal={false} open={showMoreMenu}>\n <Sheet.Content\n className=\"inset-y-0 left-[220px] z-40 h-screen w-[328px] bg-transparent p-0\"\n closeClassName=\"text-sidebar-icon-3 hover:text-sidebar-icon-1\"\n side=\"left\"\n onClick={handleMoreMenu}\n modal={false}\n >\n <Sheet.Title className=\"sr-only\">More Menu</Sheet.Title>\n <NavbarSkeleton.Root className=\"w-[328px]\" isSubMenu>\n <NavbarSkeleton.Content className=\"overflow-hidden\">\n <ScrollArea scrollThumbClassName=\"bg-sidebar-background-8\">\n <Spacer size={9} />\n {items.map((group, group_idx) => (\n <NavbarSkeleton.Group\n key={group.groupId}\n topBorder={group_idx > 0}\n title={group.title}\n isSubMenu\n isMainNav\n >\n {group.items.map(item => (\n <NavLink key={item.id} to={item.to || ''}>\n {({ isActive }) => (\n <NavbarSkeleton.Item\n text={item.title || ''}\n description={item.description || ''}\n icon={item.iconName && <Icon name={item.iconName} size={18} />}\n active={isActive}\n submenuItem\n isMainNav\n />\n )}\n </NavLink>\n ))}\n </NavbarSkeleton.Group>\n ))}\n <Spacer size={11} />\n </ScrollArea>\n </NavbarSkeleton.Content>\n </NavbarSkeleton.Root>\n </Sheet.Content>\n </Sheet.Root>\n )\n}\n","import { Icon, NavbarSkeleton, ScrollArea, Sheet, Spacer } from '@/components'\nimport { useRouterContext } from '@/context'\nimport { MenuGroupType } from '@components/app-sidebar/types'\n\ninterface SystemAdminMenuProps {\n showSettingMenu: boolean\n handleSettingsMenu: () => void\n items: MenuGroupType[]\n}\n\nexport const SettingsMenu = ({ showSettingMenu, handleSettingsMenu, items }: SystemAdminMenuProps) => {\n const { NavLink } = useRouterContext()\n return (\n <Sheet.Root modal={false} open={showSettingMenu}>\n <Sheet.Content\n className=\"inset-y-0 left-[220px] z-40 h-screen w-[364px] bg-transparent p-0\"\n closeClassName=\"text-sidebar-icon-3 hover:text-sidebar-icon-1\"\n side=\"left\"\n onClick={handleSettingsMenu}\n modal={false}\n >\n <Sheet.Title className=\"sr-only\">System Administration menu</Sheet.Title>\n <NavbarSkeleton.Root className=\"w-[364px]\" isSubMenu>\n <NavbarSkeleton.Content className=\"overflow-hidden\">\n <ScrollArea scrollThumbClassName=\"bg-sidebar-background-8\">\n <Spacer size={9} />\n {items.map((group, group_idx) => (\n <NavbarSkeleton.Group\n key={group.groupId}\n topBorder={group_idx > 0}\n title={group.title}\n titleClassName=\"mb-1.5\"\n isMainNav\n >\n <div className=\"grid grid-cols-2 gap-x-4 gap-y-[0.6875rem]\">\n {group.items.map(item => (\n <NavLink key={item.id} to={item.to || ''}>\n {({ isActive }) => (\n <NavbarSkeleton.Item\n text={item.title || ''}\n icon={item.iconName && <Icon name={item.iconName} size={12} />}\n active={isActive}\n isMainNav\n />\n )}\n </NavLink>\n ))}\n </div>\n </NavbarSkeleton.Group>\n ))}\n <Spacer size={11} />\n </ScrollArea>\n </NavbarSkeleton.Content>\n </NavbarSkeleton.Root>\n </Sheet.Content>\n </Sheet.Root>\n )\n}\n","import { DraggableAttributes } from '@dnd-kit/core'\nimport { SyntheticListenerMap } from '@dnd-kit/core/dist/hooks/utilities'\nimport { useSortable } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\nimport { cn } from '@utils/cn'\n\ninterface DraggableItemProps {\n id: string\n children: (props: { attributes: DraggableAttributes; listeners: SyntheticListenerMap }) => React.ReactNode\n tag: 'button' | 'div' | 'li'\n className?: string\n}\n\nexport const DraggableItem = ({ id, children, tag: Tag = 'div', className }: DraggableItemProps) => {\n const {\n attributes,\n listeners = {},\n setNodeRef,\n transform,\n transition,\n isDragging\n } = useSortable({\n id\n })\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isDragging ? 0.5 : 1\n }\n return (\n <Tag className={cn('relative', isDragging && 'z-10', className)} ref={setNodeRef} style={style}>\n {children({ attributes, listeners })}\n </Tag>\n )\n}\n","import { useEffect, useRef, useState } from 'react'\n\nimport { Button, Popover, ScrollArea, SearchBox, Text } from '@/components'\nimport { useDebounceSearch } from '@/hooks'\nimport { MenuGroupType, NavbarItemType } from '@components/app-sidebar/types'\nimport { cn } from '@utils/cn'\n\nconst filterItems = (categories: MenuGroupType[], query: string): MenuGroupType[] => {\n if (!query.trim()) return categories\n\n return categories.reduce<MenuGroupType[]>((acc, category) => {\n const filteredItems = category.items.filter(item => item.title.toLowerCase().includes(query.toLowerCase()))\n if (filteredItems.length > 0) {\n acc.push({\n ...category,\n items: filteredItems\n })\n }\n return acc\n }, [])\n}\n\ninterface ManageNavigationSearchProps {\n navbarMenuData: MenuGroupType[]\n addToPinnedItems: (item: NavbarItemType) => void\n}\n\nexport const ManageNavigationSearch = ({ navbarMenuData, addToPinnedItems }: ManageNavigationSearchProps) => {\n const [filteredItems, setFilteredItems] = useState<MenuGroupType[]>(navbarMenuData)\n const [isSearchDialogOpen, setSearchDialogOpen] = useState(false)\n const inputRef = useRef<HTMLInputElement | null>(null)\n const popoverRef = useRef<HTMLDivElement | null>(null)\n\n const {\n search: searchQuery,\n handleSearchChange,\n handleResetSearch\n } = useDebounceSearch({\n handleChangeSearchValue: (val: string) => setFilteredItems(filterItems(navbarMenuData, val))\n })\n\n const handleItemClick = (item: NavbarItemType) => {\n addToPinnedItems(item)\n handleResetSearch()\n setSearchDialogOpen(false)\n }\n\n const handleInputFocus = () => {\n setSearchDialogOpen(true)\n if (searchQuery === '') {\n setFilteredItems(navbarMenuData)\n }\n }\n\n useEffect(() => {\n const handleTabKey = (e: KeyboardEvent) => {\n if (e.key.toLowerCase() === 'tab') {\n const isShift = e.shiftKey\n const activeElement = document.activeElement\n\n if (!popoverRef.current) return\n\n const focusableElements = popoverRef.current!.querySelectorAll<HTMLElement>('button:not([disabled])')\n const firstFocusableElement = focusableElements[0]\n\n if (!isShift && activeElement === inputRef.current) {\n e.preventDefault()\n\n if (firstFocusableElement) {\n firstFocusableElement.focus()\n }\n }\n }\n }\n\n window.addEventListener('keydown', handleTabKey)\n\n return () => {\n window.removeEventListener('keydown', handleTabKey)\n }\n }, [])\n\n const countFilteredItems =\n filteredItems.length + filteredItems.reduce((acc, category) => acc + category.items.length, 0)\n\n return (\n <Popover.Root open={isSearchDialogOpen} onOpenChange={setSearchDialogOpen}>\n <Popover.Trigger asChild>\n <SearchBox.Root\n className=\"w-full\"\n inputClassName=\"h-9 placeholder:text-foreground-5\"\n ref={inputRef}\n placeholder=\"Add menu element\"\n value={searchQuery}\n handleChange={handleSearchChange}\n hasSearchIcon={false}\n onFocus={handleInputFocus}\n />\n </Popover.Trigger>\n <Popover.Content\n className=\"w-[368px] overflow-hidden !rounded border-borders-1 bg-background-2 !p-0\"\n ref={popoverRef}\n align=\"start\"\n onWheel={e => e.stopPropagation()}\n onOpenAutoFocus={e => e.preventDefault()}\n onCloseAutoFocus={e => e.preventDefault()}\n >\n <ScrollArea className={cn('relative max-h-[50vh]', countFilteredItems > 10 && 'h-[404px]')}>\n <div className=\"px-1 pb-2 pt-1\">\n <span\n className=\"pointer-events-none absolute inset-x-0 top-0 h-3 w-full bg-gradient-to-b from-background-2 to-transparent\"\n aria-hidden\n />\n <span\n className=\"pointer-events-none absolute inset-x-0 bottom-0 h-3 w-full bg-gradient-to-t from-background-2 to-transparent\"\n aria-hidden\n />\n {countFilteredItems === 0 ? (\n <Text className=\"block w-full px-2 py-4 text-foreground-5\">No results found</Text>\n ) : (\n filteredItems.map((category, index) => (\n <div\n className={cn(index > 0 ? 'border-borders-4 mt-0.5 border-t pt-2' : 'pt-1')}\n key={`category-${category.groupId}-${index}`}\n >\n <Text className=\"inline-block px-2 leading-none text-foreground-7\" size={1}>\n {category.title}\n </Text>\n <div className=\"mt-2.5 flex flex-col\">\n {category.items.map(item => (\n <Button\n className=\"h-9 cursor-pointer rounded-sm px-2 focus-visible:ring-offset-0\"\n variant=\"ghost\"\n key={`item-${item.id}`}\n onClick={() => handleItemClick(item)}\n >\n <div className=\"flex w-full items-center gap-x-2\">\n <Text className=\"truncate leading-tight text-foreground-8\">{item.title}</Text>\n </div>\n </Button>\n ))}\n </div>\n </div>\n ))\n )}\n </div>\n </ScrollArea>\n </Popover.Content>\n </Popover.Root>\n )\n}\n","import { useEffect, useMemo, useState } from 'react'\n\nimport { AlertDialog, Button, ButtonGroup, Icon, ScrollArea, Text } from '@/components'\nimport useDragAndDrop from '@/hooks/use-drag-and-drop'\nimport { MenuGroupType, NavbarItemType } from '@components/app-sidebar/types'\nimport { closestCenter, DndContext } from '@dnd-kit/core'\nimport { SortableContext } from '@dnd-kit/sortable'\n\nimport { DraggableItem } from './draggable-item'\nimport { ManageNavigationSearch } from './manage-navigation-search'\n\ninterface ManageNavigationProps {\n pinnedItems: NavbarItemType[]\n navbarMenuData: MenuGroupType[]\n showManageNavigation: boolean\n recentItems: NavbarItemType[]\n onSave: (recentItems: NavbarItemType[], currentPinnedItems: NavbarItemType[]) => void\n onClose: () => void\n isSubmitting: boolean\n submitted: boolean\n}\n\nconst filterRecentItems = (pinnedItems: NavbarItemType[], recentItems: NavbarItemType[]) => {\n return recentItems.filter(item => !pinnedItems.some(pinnedItem => pinnedItem.id === item.id))\n}\n\nconst filterMenuData = (menuData: MenuGroupType[], pinnedItems: NavbarItemType[]): MenuGroupType[] => {\n return menuData\n .map(group => ({\n ...group,\n items: group.items.filter(item => !pinnedItems.some(pinnedItem => pinnedItem.id === item.id))\n }))\n .filter(group => group.items.length > 0)\n}\n\nexport const ManageNavigation = ({\n pinnedItems,\n recentItems,\n navbarMenuData,\n showManageNavigation,\n onSave,\n onClose,\n isSubmitting,\n submitted\n}: ManageNavigationProps) => {\n const [currentPinnedItems, setCurrentPinnedItems] = useState<NavbarItemType[]>(pinnedItems)\n const [currentFilteredRecentItems, setCurrentFilteredRecentItems] = useState<NavbarItemType[]>(\n filterRecentItems(pinnedItems, recentItems)\n )\n const [isRecentCleared, setIsRecentCleared] = useState(false)\n\n useEffect(() => {\n setCurrentPinnedItems(pinnedItems)\n }, [pinnedItems])\n\n useEffect(() => {\n setCurrentFilteredRecentItems(filterRecentItems(pinnedItems, recentItems))\n }, [recentItems, pinnedItems])\n\n const { handleDragEnd, getItemId } = useDragAndDrop<NavbarItemType>({\n items: currentPinnedItems,\n onReorder: setCurrentPinnedItems\n })\n\n const handleCancel = () => {\n setCurrentPinnedItems(pinnedItems)\n setCurrentFilteredRecentItems(filterRecentItems(pinnedItems, recentItems))\n onClose()\n }\n\n const handleClearRecent = () => {\n setCurrentFilteredRecentItems([])\n setIsRecentCleared(true)\n }\n\n const onSubmit = () => {\n onSave(currentFilteredRecentItems, currentPinnedItems)\n onClose()\n }\n\n const updatePinnedItems = (items: NavbarItemType[]) => {\n setCurrentPinnedItems(items)\n setCurrentFilteredRecentItems(prevRecentItems => {\n if (isRecentCleared) {\n const unpinnedItems = currentPinnedItems\n .filter(item => !items.some(newItem => newItem.id === item.id))\n .filter(item => recentItems.some(recentItem => recentItem.id === item.id))\n return [...prevRecentItems, ...unpinnedItems]\n } else {\n return filterRecentItems(items, recentItems)\n }\n })\n }\n\n const addToPinnedItems = (item: NavbarItemType) => {\n const isAlreadyPinned = currentPinnedItems.some(pinnedItem => pinnedItem.id === item.id)\n\n if (!isAlreadyPinned) {\n updatePinnedItems([...currentPinnedItems, item])\n }\n }\n\n const removeFromPinnedItems = (item: NavbarItemType) => {\n updatePinnedItems(currentPinnedItems.filter(pinnedItem => pinnedItem.id !== item.id))\n }\n\n const permanentlyPinnedItems = useMemo(\n () => currentPinnedItems.filter(item => item.permanentlyPinned),\n [currentPinnedItems]\n )\n const draggablePinnedItems = useMemo(\n () => currentPinnedItems.filter(item => !item.permanentlyPinned),\n [currentPinnedItems]\n )\n\n return (\n <AlertDialog.Root open={showManageNavigation} onOpenChange={handleCancel}>\n <AlertDialog.Content\n className=\"h-[574px] max-h-[70vh] max-w-[410px]\"\n onClose={handleCancel}\n onOverlayClick={handleCancel}\n >\n <AlertDialog.Header>\n <AlertDialog.Title className=\"mb-4\">Manage navigation</AlertDialog.Title>\n <ManageNavigationSearch\n navbarMenuData={filterMenuData(navbarMenuData, currentPinnedItems)}\n addToPinnedItems={addToPinnedItems}\n />\n </AlertDialog.Header>\n <ScrollArea className=\"-mx-5 -mb-5 mt-1\">\n <div className=\"px-5\">\n <Text className=\"inline-block leading-none text-foreground-7\" size={1}>\n Pinned\n </Text>\n {!currentPinnedItems.length ? (\n <Text className=\"mt-3 block text-foreground-5\" size={1}>\n No pinned items\n </Text>\n ) : (\n <DndContext onDragEnd={handleDragEnd} collisionDetection={closestCenter}>\n <SortableContext items={currentPinnedItems.map((_, index) => getItemId(index))}>\n <ul className=\"-mx-3 mb-1 mt-3.5 flex flex-col gap-y-0.5\">\n {permanentlyPinnedItems.map(item => {\n return (\n <div\n key={item.id}\n className=\"flex w-full grow cursor-not-allowed items-center gap-x-2.5 rounded p-1 px-3 opacity-55\"\n >\n <Icon className=\"w-3.5\" name=\"lock\" size={14} />\n <Text>{item.title}</Text>\n </div>\n )\n })}\n {draggablePinnedItems.map((item, index) => (\n <DraggableItem id={getItemId(index + permanentlyPinnedItems.length)} tag=\"li\" key={item.title}>\n {({ attributes, listeners }) => {\n return (\n <>\n <Button\n className={'w-full grow cursor-grab gap-x-2.5 rounded p-1 px-3 active:cursor-grabbing'}\n variant=\"ghost\"\n {...attributes}\n {...listeners}\n >\n <Icon className=\"w-3.5\" name=\"grid-dots\" size={14} />\n <Text className=\"w-full text-left text-[inherit]\">{item.title}</Text>\n </Button>\n <Button\n className=\"absolute right-1 top-0.5 z-20 text-icons-4 hover:text-icons-2\"\n size=\"sm_icon\"\n variant=\"custom\"\n onClick={() => removeFromPinnedItems(item)}\n >\n <Icon className=\"w-3.5\" name=\"x-mark\" size={14} />\n </Button>\n </>\n )\n }}\n </DraggableItem>\n ))}\n </ul>\n </SortableContext>\n </DndContext>\n )}\n {currentFilteredRecentItems.length > 0 && (\n <>\n <div className=\"mt-4 flex items-center justify-between\">\n <Text className=\"inline-block leading-none text-foreground-7\" size={1}>\n Recent\n </Text>\n <Button className=\"-mr-1.5\" variant=\"link_accent\" size=\"xs\" onClick={handleClearRecent}>\n Clear all\n </Button>\n </div>\n <ul className=\"mt-3 flex flex-col gap-y-0.5 pb-5\">\n {currentFilteredRecentItems.map((item, index) => (\n <li className=\"relative flex h-8 items-center\" key={`recent-${item.id}-${index}`}>\n <div className=\"flex w-full grow items-center gap-x-2.5\">\n <Icon className=\"text-icons-4\" name=\"clock-icon\" size={14} />\n <Text className=\"w-full text-left text-foreground-8\">{item.title}</Text>\n </div>\n <Button\n className=\"absolute -right-2 top-0.5 text-icons-4 hover:text-icons-2\"\n size=\"sm_icon\"\n variant=\"custom\"\n onClick={() => addToPinnedItems(item)}\n >\n <Icon name=\"pin\" size={14} />\n </Button>\n </li>\n ))}\n </ul>\n </>\n )}\n </div>\n </ScrollArea>\n <AlertDialog.Footer>\n <ButtonGroup>\n {!submitted ? (\n <>\n <Button variant=\"outline\" onClick={handleCancel} disabled={isSubmitting}>\n Cancel\n </Button>\n <Button type=\"button\" theme=\"primary\" onClick={onSubmit} disabled={isSubmitting}>\n {isSubmitting ? 'Saving...' : 'Save'}\n </Button>\n </>\n ) : (\n <Button\n variant=\"ghost\"\n type=\"button\"\n size=\"sm\"\n theme=\"success\"\n className=\"pointer-events-none flex gap-2\"\n disabled={submitted}\n >\n Saved\n <Icon name=\"tick\" size={14} />\n </Button>\n )}\n </ButtonGroup>\n </AlertDialog.Footer>\n </AlertDialog.Content>\n </AlertDialog.Root>\n )\n}\n","import { DropdownMenu, Icon, IconProps, Sidebar, Text } from '@/components'\nimport { useRouterContext } from '@/context'\nimport { TFunction } from 'i18next'\n\ninterface NavbarItemType {\n id: number | string\n title: string\n iconName?: IconProps['name']\n description?: string\n to: string\n permanentlyPinned?: boolean\n}\n\ninterface NavbarItemProps {\n item: NavbarItemType\n isRecent?: boolean\n handleChangePinnedMenuItem: (item: NavbarItemType, pin: boolean) => void\n handleRemoveRecentMenuItem: (item: NavbarItemType) => void\n handleCustomNav: () => void\n t: TFunction\n}\n\nexport const SidebarItem = ({\n item,\n isRecent = false,\n handleChangePinnedMenuItem,\n handleRemoveRecentMenuItem,\n handleCustomNav,\n t\n}: NavbarItemProps) => {\n const { NavLink } = useRouterContext()\n\n const iconName = item.iconName && (item.iconName.replace('-gradient', '') as IconProps['name'])\n\n const handlePin = () => {\n handleChangePinnedMenuItem(item, isRecent)\n }\n\n const handleRemoveRecent = () => {\n handleRemoveRecentMenuItem(item)\n }\n\n const dropdownItems = isRecent ? (\n <>\n <DropdownMenu.Item\n className=\"text-sidebar-foreground-6 data-[highlighted]:bg-sidebar-background-2 data-[highlighted]:text-sidebar-foreground-1\"\n onSelect={handlePin}\n >\n <Text size={2} truncate color=\"inherit\">\n {t('component:navbar.pin', 'Pin')}\n </Text>\n </DropdownMenu.Item>\n <DropdownMenu.Item\n className=\"text-sidebar-foreground-6 data-[highlighted]:bg-sidebar-background-2 data-[highlighted]:text-sidebar-foreground-1\"\n onSelect={handleRemoveRecent}\n >\n <Text size={2} truncate color=\"inherit\">\n {t('component:navbar.remove', 'Remove')}\n </Text>\n </DropdownMenu.Item>\n </>\n ) : (\n <>\n <DropdownMenu.Item\n className=\"text-sidebar-foreground-6 data-[highlighted]:bg-sidebar-background-2 data-[highlighted]:text-sidebar-foreground-1\"\n onSelect={handleCustomNav}\n >\n <Text size={2} truncate color=\"inherit\">\n {t('component:navbar.reorder', 'Reorder')}\n </Text>\n </DropdownMenu.Item>\n\n {!item.permanentlyPinned ? (\n <DropdownMenu.Item\n className=\"text-sidebar-foreground-6 data-[highlighted]:bg-sidebar-background-2 data-[highlighted]:text-sidebar-foreground-1\"\n onSelect={handlePin}\n >\n <Text size={2} truncate color=\"inherit\">\n {t('component:navbar.unpin', 'Unpin')}\n </Text>\n </DropdownMenu.Item>\n ) : null}\n </>\n )\n\n return (\n <Sidebar.MenuItem>\n <NavLink className=\"block\" to={item.to || ''} end>\n {({ isActive }) => (\n <Sidebar.MenuButton asChild isActive={isActive}>\n <Sidebar.MenuItemText\n text={item.title}\n icon={iconName && <Icon name={iconName} size={12} />}\n active={isActive}\n />\n </Sidebar.MenuButton>\n )}\n </NavLink>\n\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <Sidebar.MenuAction className=\"text-sidebar-icon-3 hover:text-sidebar-icon-1 right-0\" showOnHover>\n <span>\n <Icon name=\"menu-dots\" size={12} />\n </span>\n </Sidebar.MenuAction>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content\n className=\"border-sidebar-border-3 bg-sidebar-background-4 w-[128px]\"\n align=\"end\"\n sideOffset={3}\n alignOffset={4}\n >\n {dropdownItems}\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n </Sidebar.MenuItem>\n )\n}\n","import { FormEvent, ReactNode, useState } from 'react'\n\nimport { TFunction } from 'i18next'\n\nimport { Dialog, SearchBox, Spacer } from '..'\n\ninterface ProjectProps {\n logo: ReactNode\n t: TFunction\n}\n\nfunction SidebarSearchLegacy({ logo, t }: ProjectProps) {\n const [isSearchDialogOpen, setSearchDialogOpen] = useState(false)\n\n const openSearchDialog = (e?: FormEvent<HTMLInputElement>) => {\n e?.preventDefault()\n e?.stopPropagation()\n\n setSearchDialogOpen(true)\n }\n\n const closeSearchDialog = () => {\n setSearchDialogOpen(false)\n }\n\n return (\n <div className=\"flex w-full flex-col place-items-start pb-3 pt-1.5\">\n <div className=\"flex h-[58px] items-center pl-1\">{logo}</div>\n <SearchBox.Root\n width=\"full\"\n placeholder={`${t('component:navbar.search', 'Search')}...`}\n hasShortcut\n shortcutLetter=\"K\"\n shortcutModifier=\"cmd\"\n value=\"\"\n onSearch={openSearchDialog}\n handleChange={openSearchDialog}\n theme=\"sidebar\"\n />\n <Dialog.Root open={isSearchDialogOpen} onOpenChange={closeSearchDialog}>\n <Dialog.Content className=\"h-[600px] max-w-[800px]\">\n <Dialog.Header>\n <Dialog.Title>{t('component:navbar.search', 'Search')}</Dialog.Title>\n <Dialog.Description>\n <Spacer size={6} />\n <SearchBox.Root width=\"full\" placeholder={`${t('component:navbar.search', 'Search')}...`} />\n </Dialog.Description>\n </Dialog.Header>\n </Dialog.Content>\n </Dialog.Root>\n </div>\n )\n}\n\nexport { SidebarSearchLegacy }\n","import React, { PropsWithChildren } from 'react'\n\nimport { Dialog as RadixDialog } from '@components/dialog'\nimport { Overlay } from '@radix-ui/react-dialog'\nimport { cn } from '@utils/cn'\nimport { Command as CommandPrimitive } from 'cmdk'\n\ninterface DialogProps {\n className?: string\n open: boolean\n onOpenChange: (open: boolean) => void\n}\n\nconst Root = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n 'flex h-full w-full flex-col overflow-hidden rounded-[10px] bg-background-2 text-popover-foreground',\n className\n )}\n {...props}\n />\n))\nRoot.displayName = 'Root'\n\nconst Dialog = ({ children, className, open, onOpenChange }: PropsWithChildren<DialogProps>) => (\n <RadixDialog.Root open={open} onOpenChange={onOpenChange}>\n <Overlay\n className={cn(\n 'fixed inset-0 z-50 bg-background-7/30 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className\n )}\n />\n <RadixDialog.Content className=\"fixed left-[50%] top-[50%] z-50 grid w-full max-w-[586px] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-[10px] border bg-background p-5 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\">\n <Root className=\"p-2 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:size-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2.5 [&_[cmdk-item]]:py-1.5 [&_[cmdk-item]_svg]:h-auto [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Root>\n </RadixDialog.Content>\n </RadixDialog.Root>\n)\nDialog.displayName = 'Dialog'\n\nconst Dropdown = ({ children, className, open, onOpenChange }: PropsWithChildren<DialogProps>) => (\n <RadixDialog.Root open={open} onOpenChange={onOpenChange}>\n <Overlay\n className={cn(\n 'fixed inset-0 z-50 bg-background-7/30 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className\n )}\n />\n <RadixDialog.Content className=\"absolute left-6 top-[58px] z-50 grid w-full max-w-[300px] gap-4 rounded-[10px] border bg-background shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 sm:rounded-lg\">\n <Root className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:size-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2.5 [&_[cmdk-item]]:py-1.5 [&_[cmdk-item]_svg]:h-auto [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Root>\n </RadixDialog.Content>\n </RadixDialog.Root>\n)\nDropdown.displayName = 'Dropdown'\n\nconst Input = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-4\">\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n 'flex h-10 w-full rounded-md bg-transparent py-3 text-base text-foreground-1 outline-none placeholder:text-foreground-5 disabled:cursor-not-allowed disabled:opacity-50 focus:ring-0 focus-visible:outline-none',\n className\n )}\n {...props}\n />\n <Shortcut>\n <span>ESC</span>\n </Shortcut>\n </div>\n))\nInput.displayName = 'Input'\n\nconst List = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn('max-h-[calc(385px-48px)] overflow-y-auto overflow-x-hidden', className)}\n {...props}\n />\n))\nList.displayName = 'List'\n\nconst Empty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => <CommandPrimitive.Empty ref={ref} className=\"py-6 text-center text-sm\" {...props} />)\nEmpty.displayName = 'Empty'\n\nconst Group = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n 'overflow-hidden mt-2.5 p-1 text-foreground-5 text-sm [&_[cmdk-group-heading]]:px-2.5 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-sm [&_[cmdk-group-heading]]:font-normal [&_[cmdk-group-heading]]:text-foreground-5',\n className\n )}\n {...props}\n />\n))\nGroup.displayName = 'Group'\n\nconst Item = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex cursor-default gap-0 select-none items-center font-normal rounded-[4px] px-5 py-0 text-sm text-foreground-8 outline-none data-[disabled=true]:pointer-events-none data-[selected=true]:bg-foreground-4/10 data-[selected=true]:text-foreground-8 data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',\n className\n )}\n {...props}\n />\n))\nItem.displayName = 'Item'\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator ref={ref} className={cn('-mx-1 h-px bg-border', className)} {...props} />\n))\nSeparator.displayName = 'Separator'\n\nconst Shortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n 'ml-auto px-[6px] flex gap-0.5 rounded-sm text-xs tracking-tight border border-borders-2 bg-background-3 text-foreground-2',\n className\n )}\n {...props}\n />\n )\n}\nShortcut.displayName = 'Shortcut'\n\nexport const CommandPalette = {\n Root,\n Dialog,\n Dropdown,\n Input,\n Empty,\n Group,\n List,\n Item,\n Separator,\n Shortcut\n}\n","import { useEffect, useState } from 'react'\n\nimport { Icon } from '@/components'\nimport { TFunction } from 'i18next'\n\nimport { CommandPalette } from './command-palette'\nimport { useSearch } from './search-context'\n\nenum PageKey {\n REPOSITORIES = 'repositories',\n PROJECTS = 'projects',\n PIPELINES = 'pipelines'\n}\n\ninterface CommandOption {\n label: string\n key?: PageKey\n shortcut?: [string, string] // Symbol + Key (e.g., [\"⇧\", \"R\"])\n url?: string\n action?: () => void\n icon?: () => JSX.Element\n}\n\ninterface CommandPaletteProps {\n t: TFunction\n}\n\nexport function CommandPaletteWrapper({ t }: CommandPaletteProps) {\n const { isOpen, setIsOpen } = useSearch()\n const [search, setSearch] = useState('')\n const [pages, setPages] = useState<PageKey[]>([])\n const page = pages[pages.length - 1]\n\n const DEFAULT = {\n placeholder: 'What do you need?'\n }\n\n const [placeholder, setPlaceholder] = useState(DEFAULT.placeholder)\n\n useEffect(() => {\n setPlaceholder(page ? `Search ${page}...` : DEFAULT.placeholder)\n }, [page])\n\n function onItemClick(target: PageKey) {\n setPages([...pages, target])\n setSearch('')\n }\n\n const MENU_OPTIONS: Record<PageKey, CommandOption[]> = {\n [PageKey.REPOSITORIES]: [\n {\n label: 'Search repositories...',\n key: PageKey.REPOSITORIES,\n shortcut: ['⇧', 'R'],\n icon: () => <Icon name=\"repositories\" size={14} className=\"text-icons-1\" />\n },\n {\n label: 'Create repository',\n action: () => alert('Create Repository'),\n icon: () => <Icon name=\"plus\" size={14} className=\"text-icons-1\" />\n },\n {\n label: 'Import repository',\n action: () => alert('Import Repository'),\n icon: () => <Icon name=\"download\" size={14} className=\"text-icons-1\" />\n }\n ],\n [PageKey.PROJECTS]: [\n {\n label: 'Search projects...',\n key: PageKey.PROJECTS,\n shortcut: ['⇧', 'P'],\n icon: () => <Icon name=\"environment\" size={14} className=\"text-icons-1\" />\n },\n {\n label: 'Create project',\n action: () => alert('Create Project'),\n icon: () => <Icon name=\"plus\" size={14} className=\"text-icons-1\" />\n },\n {\n label: 'Import project',\n action: () => alert('Import Project'),\n icon: () => <Icon name=\"download\" size={14} className=\"text-icons-1\" />\n }\n ],\n [PageKey.PIPELINES]: [\n {\n label: 'Search pipelines...',\n key: PageKey.PIPELINES,\n shortcut: ['⇧', 'L'],\n icon: () => <Icon name=\"pipelines\" size={14} className=\"text-icons-1\" />\n },\n {\n label: 'Create pipeline',\n action: () => alert('Create Pipeline'),\n icon: () => <Icon name=\"plus\" size={14} className=\"text-icons-1\" />\n }\n ]\n }\n\n const SUB_ITEMS: Record<PageKey, CommandOption[]> = {\n [PageKey.REPOSITORIES]: [\n {\n label: 'petstore-app',\n url: '/canary/repos/petstore-app/summary',\n icon: () => <Icon name=\"repositories\" size={14} className=\"text-icons-1\" />\n },\n {\n label: 'RealWorld',\n url: '/canary/repos/real-world/summary',\n icon: () => <Icon name=\"repositories\" size={14} className=\"text-icons-1\" />\n },\n {\n label: 'sock shop',\n url: '/canary/repos/sock-shop/summary',\n icon: () => <Icon name=\"repositories\" size={14} className=\"text-icons-1\" />\n },\n {\n label: 'anthos',\n url: '/canary/repos/anthos/summary',\n icon: () => <Icon name=\"repositories\" size={14} className=\"text-icons-1\" />\n },\n {\n label: 'acme-web',\n url: '/canary/repos/acme-web/summary',\n icon: () => <Icon name=\"repositories\" size={14} className=\"text-icons-1\" />\n }\n ],\n [PageKey.PROJECTS]: [\n {\n label: 'Canary',\n url: '/canary/repos/petstore-app/summary',\n icon: () => <Icon name=\"file\" size={14} className=\"text-icons-1\" />\n },\n {\n label: 'Paypal',\n url: '/canary/repos/real-world/summary',\n icon: () => <Icon name=\"file\" size={14} className=\"text-icons-1\" />\n }\n ],\n [PageKey.PIPELINES]: [\n {\n label: 'build-pipeline',\n url: '/canary/pipelines/build-pipeline/studio',\n icon: () => <Icon name=\"pipelines\" size={14} className=\"text-icons-1\" />\n }\n ]\n }\n\n return (\n <CommandPalette.Dialog open={isOpen} onOpenChange={setIsOpen}>\n <CommandPalette.Root\n label={t('component:navbar.command-palette', 'Command Palette')}\n onKeyDown={(e: any) => {\n if (e.key === 'Escape' || (e.key === 'Backspace' && !search)) {\n e.preventDefault()\n setPages(pages => pages.slice(0, -1))\n }\n }}\n >\n <CommandPalette.Input placeholder={placeholder} value={search} onValueChange={setSearch} />\n <CommandPalette.List className=\"pb-3\">\n <CommandPalette.Empty>{t('component:navbar.nothing-found', 'Nothing Found')}</CommandPalette.Empty>\n\n {!page ? (\n Object.entries(MENU_OPTIONS).map(([key, items]) => (\n <CommandPalette.Group key={key} heading={key}>\n {items.map(({ label, key, action, icon, shortcut }) => (\n <CommandPalette.Item key={label} onSelect={() => (key ? onItemClick(key) : action?.())}>\n <div className=\"mr-2.5\">{icon && icon()}</div>\n <div className=\"\">{label}</div>\n {shortcut && (\n <CommandPalette.Shortcut>\n <span>{shortcut[0]}</span>\n <span>{shortcut[1]}</span>\n </CommandPalette.Shortcut>\n )}\n </CommandPalette.Item>\n ))}\n </CommandPalette.Group>\n ))\n ) : (\n <CommandPalette.Group heading={page}>\n {SUB_ITEMS[page]?.map(({ label, url, icon }) => (\n <CommandPalette.Item key={label} onSelect={() => (window.location.href = url!)}>\n <div className=\"mr-2.5\">{icon && icon()}</div>\n <div className=\"\">{label}</div>\n </CommandPalette.Item>\n ))}\n </CommandPalette.Group>\n )}\n </CommandPalette.List>\n </CommandPalette.Root>\n </CommandPalette.Dialog>\n )\n}\n","import { createContext, ReactNode, useContext, useEffect, useState } from 'react'\n\nimport { TFunction } from 'i18next'\n\nimport { CommandPaletteWrapper } from './command-palette-wrapper'\n\ninterface SearchContextType {\n isOpen: boolean\n setIsOpen: (open: boolean) => void\n searchTerm: string\n setSearchTerm: (term: string) => void\n selectedIndex: number\n setSelectedIndex: (index: number) => void\n}\n\nconst SearchContext = createContext<SearchContextType | null>(null)\n\ninterface SearchProviderProps {\n children: ReactNode\n t: TFunction\n}\n\nexport function SearchProvider({ children, t }: SearchProviderProps) {\n const [isOpen, setIsOpen] = useState<boolean>(false)\n const [searchTerm, setSearchTerm] = useState<string>('')\n const [selectedIndex, setSelectedIndex] = useState<number>(0)\n\n const toggleSearch = () => {\n setIsOpen(prev => !prev)\n }\n\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if ((event.metaKey || event.ctrlKey) && event.key.toLowerCase() === 'k') {\n event.preventDefault()\n toggleSearch()\n }\n }\n\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [])\n\n return (\n <SearchContext.Provider\n value={{\n isOpen,\n setIsOpen,\n searchTerm,\n setSearchTerm,\n selectedIndex,\n setSelectedIndex\n }}\n >\n {children}\n <CommandPaletteWrapper t={t} />\n </SearchContext.Provider>\n )\n}\n\nexport function useSearch(): SearchContextType {\n const context = useContext(SearchContext)\n if (!context) {\n throw new Error('useSearch must be used within a SearchProvider')\n }\n return context\n}\n","// packages/react/separator/src/separator.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Separator\";\nvar DEFAULT_ORIENTATION = \"horizontal\";\nvar ORIENTATIONS = [\"horizontal\", \"vertical\"];\nvar Separator = React.forwardRef((props, forwardedRef) => {\n const { decorative, orientation: orientationProp = DEFAULT_ORIENTATION, ...domProps } = props;\n const orientation = isValidOrientation(orientationProp) ? orientationProp : DEFAULT_ORIENTATION;\n const ariaOrientation = orientation === \"vertical\" ? orientation : void 0;\n const semanticProps = decorative ? { role: \"none\" } : { \"aria-orientation\": ariaOrientation, role: \"separator\" };\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-orientation\": orientation,\n ...semanticProps,\n ...domProps,\n ref: forwardedRef\n }\n );\n});\nSeparator.displayName = NAME;\nfunction isValidOrientation(orientation) {\n return ORIENTATIONS.includes(orientation);\n}\nvar Root = Separator;\nexport {\n Root,\n Separator\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from 'react'\nimport { ComponentPropsWithoutRef, ElementRef, forwardRef } from 'react'\n\nimport * as SeparatorPrimitive from '@radix-ui/react-separator'\nimport { cn } from '@utils/cn'\n\nconst Separator = forwardRef<\n ElementRef<typeof SeparatorPrimitive.Root>,\n ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn('shrink-0 bg-border', orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]', className)}\n {...props}\n />\n))\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n","import { HTMLAttributes } from 'react'\n\nimport { cn } from '@utils/cn'\n\nfunction Skeleton({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('animate-pulse rounded-md bg-primary/10', className)} {...props} />\n}\n\nexport { Skeleton }\n","import { useEffect, useState } from 'react'\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = useState<boolean | undefined>(undefined)\n\n useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener('change', onChange)\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n return () => mql.removeEventListener('change', onChange)\n }, [])\n\n return !!isMobile\n}\n","import {\n ComponentProps,\n ComponentPropsWithoutRef,\n createContext,\n CSSProperties,\n ElementRef,\n forwardRef,\n ReactElement,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState\n} from 'react'\n\nimport { Button, Icon, Input, ScrollArea, Sheet, Tooltip } from '@/components'\nimport { Slot } from '@radix-ui/react-slot'\nimport { cn } from '@utils/cn'\nimport { cva, VariantProps } from 'class-variance-authority'\n\nimport { Separator } from './separator'\nimport { Skeleton } from './skeleton'\nimport { useIsMobile } from './use-is-mobile'\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar:state'\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = '220px'\nconst SIDEBAR_WIDTH_MOBILE = '18rem'\nconst SIDEBAR_WIDTH_ICON = '3rem'\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b'\n\ntype SidebarContext = {\n state: 'expanded' | 'collapsed'\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = createContext<SidebarContext | null>(null)\n\nfunction useSidebar() {\n const context = useContext(SidebarContext)\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.')\n }\n\n return context\n}\n\nconst SidebarProvider = forwardRef<\n HTMLDivElement,\n ComponentProps<'div'> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n }\n>(({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }, ref) => {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = useCallback(() => {\n return isMobile ? setOpenMobile(open => !open) : setOpen(open => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? 'expanded' : 'collapsed'\n\n const contextValue = useMemo<SidebarContext>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <Tooltip.Provider delayDuration={0}>\n <div\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style\n } as CSSProperties\n }\n className={cn('group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar', className)}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n </Tooltip.Provider>\n </SidebarContext.Provider>\n )\n})\nSidebarProvider.displayName = 'SidebarProvider'\n\nconst SidebarRoot = forwardRef<\n HTMLDivElement,\n ComponentProps<'div'> & {\n side?: 'left' | 'right'\n variant?: 'sidebar' | 'floating' | 'inset'\n collapsible?: 'offcanvas' | 'icon' | 'none'\n }\n>(({ side = 'left', variant = 'sidebar', collapsible = 'offcanvas', className, children, ...props }, ref) => {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === 'none') {\n return (\n <div\n className={cn('flex h-full w-[--sidebar-width] flex-col bg-sidebar-background-1', className)}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet.Root open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <Sheet.Content\n data-sidebar=\"sidebar\"\n data-mobile=\"true\"\n className=\"bg-sidebar-background-1 w-[--sidebar-width] p-0 [&>button]:hidden\"\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH_MOBILE\n } as CSSProperties\n }\n side={side}\n >\n <div className=\"flex size-full flex-col\">{children}</div>\n </Sheet.Content>\n </Sheet.Root>\n )\n }\n\n return (\n <div\n ref={ref}\n className={cn('group peer hidden md:block', className)}\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n className={cn(\n 'duration-200 relative h-svh w-[--sidebar-width] bg-transparent transition-[width] ease-linear',\n 'group-data-[collapsible=offcanvas]:w-0',\n 'group-data-[side=right]:rotate-180',\n variant === 'floating' || variant === 'inset'\n ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]'\n : 'group-data-[collapsible=icon]:w-[--sidebar-width-icon]'\n )}\n />\n <div\n className={cn(\n 'bg-sidebar-background-1 border-sidebar-border-1 duration-200 fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] ease-linear md:flex',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'\n : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n // Adjust the padding for floating and inset variants.\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]'\n : 'group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l',\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n className=\"group-data-[variant=floating]:border-sidebar-border flex size-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n})\nSidebarRoot.displayName = 'SidebarRoot'\n\nconst SidebarTrigger = forwardRef<ElementRef<typeof Button>, ComponentProps<typeof Button>>(\n ({ className, onClick, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn('h-7 w-7 focus:ring-0 focus-visible:outline-none', className)}\n onClick={event => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <Icon name=\"sidebar-left\" />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n }\n)\nSidebarTrigger.displayName = 'SidebarTrigger'\n\nconst SidebarRail = forwardRef<HTMLButtonElement, ComponentProps<'button'>>(({ className, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n ref={ref}\n data-sidebar=\"rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'absolute bg-transparent inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex',\n '[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n className\n )}\n {...props}\n />\n )\n})\nSidebarRail.displayName = 'SidebarRail'\n\nconst SidebarInset = forwardRef<HTMLDivElement, ComponentProps<'main'>>(({ className, ...props }, ref) => {\n const { open, isMobile } = useSidebar()\n\n return (\n <main\n ref={ref}\n className={cn(\n 'relative flex min-h-screen flex-1 flex-col main-page-content-background',\n 'peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow transition-[max-width] ease-linear duration-200',\n className\n )}\n style={{ maxWidth: !isMobile && open ? `calc(100vw - ${SIDEBAR_WIDTH})` : '100vw' }}\n {...props}\n />\n )\n})\nSidebarInset.displayName = 'SidebarInset'\n\nconst SidebarInput = forwardRef<ElementRef<typeof Input>, ComponentProps<typeof Input>>(\n ({ className, ...props }, ref) => {\n return (\n <Input\n ref={ref}\n data-sidebar=\"input\"\n className={cn(\n 'h-8 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring',\n className\n )}\n {...props}\n />\n )\n }\n)\nSidebarInput.displayName = 'SidebarInput'\n\nconst SidebarHeader = forwardRef<HTMLDivElement, ComponentProps<'div'>>(({ className, ...props }, ref) => {\n return <div ref={ref} data-sidebar=\"header\" className={cn('flex flex-col gap-2 px-2.5', className)} {...props} />\n})\nSidebarHeader.displayName = 'SidebarHeader'\n\nconst SidebarFooter = forwardRef<HTMLDivElement, ComponentProps<'div'>>(({ className, ...props }, ref) => {\n return <div ref={ref} data-sidebar=\"footer\" className={cn('flex flex-col gap-2 px-2 py-3', className)} {...props} />\n})\nSidebarFooter.displayName = 'SidebarFooter'\n\nconst SidebarSeparator = forwardRef<ElementRef<typeof Separator>, ComponentProps<typeof Separator>>(\n ({ className, ...props }, ref) => {\n return (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn('mx-2 w-auto bg-sidebar-border', className)}\n {...props}\n />\n )\n }\n)\nSidebarSeparator.displayName = 'SidebarSeparator'\n\nconst SidebarContent = forwardRef<HTMLDivElement, ComponentProps<'div'>>(({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n 'flex min-h-0 flex-1 flex-col gap-2 overflow-hidden group-data-[collapsible=icon]:overflow-hidden',\n className\n )}\n {...props}\n >\n <ScrollArea scrollThumbClassName=\"bg-sidebar-background-8\">{children}</ScrollArea>\n </div>\n )\n})\nSidebarContent.displayName = 'SidebarContent'\n\nconst SidebarGroup = forwardRef<HTMLDivElement, ComponentProps<'div'>>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn('relative flex w-full min-w-0 flex-col px-2.5 py-2 border-sidebar-border-1', className)}\n {...props}\n />\n )\n})\nSidebarGroup.displayName = 'SidebarGroup'\n\nconst SidebarGroupLabel = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<'div'> & { asChild?: boolean }>(\n ({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'div'\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n 'duration-200 flex h-8 shrink-0 items-center rounded-md px-2 text-xs text-sidebar-foreground-5 outline-none ring-sidebar-ring transition-[margin,opa] ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',\n className\n )}\n {...props}\n />\n )\n }\n)\nSidebarGroupLabel.displayName = 'SidebarGroupLabel'\n\nconst SidebarGroupAction = forwardRef<HTMLButtonElement, ComponentPropsWithoutRef<'button'> & { asChild?: boolean }>(\n ({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n 'absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 after:md:hidden',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n }\n)\nSidebarGroupAction.displayName = 'SidebarGroupAction'\n\nconst SidebarGroupContent = forwardRef<HTMLDivElement, ComponentProps<'div'>>(({ className, ...props }, ref) => (\n <div ref={ref} data-sidebar=\"group-content\" className={cn('w-full text-sm', className)} {...props} />\n))\nSidebarGroupContent.displayName = 'SidebarGroupContent'\n\nconst SidebarMenu = forwardRef<HTMLUListElement, ComponentProps<'ul'>>(({ className, ...props }, ref) => (\n <ul ref={ref} data-sidebar=\"menu\" className={cn('flex w-full min-w-0 flex-col gap-0.5', className)} {...props} />\n))\nSidebarMenu.displayName = 'SidebarMenu'\n\nconst SidebarMenuItem = forwardRef<HTMLLIElement, ComponentProps<'li'>>(({ className, ...props }, ref) => (\n <li ref={ref} data-sidebar=\"menu-item\" className={cn('group/menu-item relative', className)} {...props} />\n))\nSidebarMenuItem.displayName = 'SidebarMenuItem'\n\nconst sidebarMenuButtonVariants = cva(\n 'peer/menu-button group-hover/menu-item:bg-sidebar-background-3 data-[active=true]:bg-sidebar-background-3 data-[state=open]:hover:bg-sidebar-background-3 flex w-full cursor-pointer items-center gap-2.5 overflow-hidden rounded p-2 text-left text-sm outline-none transition-[width,height,padding] disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:font-medium group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:shrink-0',\n {\n variants: {\n variant: {\n default: '',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]'\n },\n size: {\n default: 'h-8 text-sm',\n sm: 'h-7 text-xs',\n lg: 'h-12 text-sm group-data-[collapsible=icon]:!p-0'\n }\n },\n defaultVariants: {\n variant: 'default',\n size: 'default'\n }\n }\n)\n\nconst SidebarMenuButton = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<'button'> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | ComponentProps<typeof Tooltip.Content>\n } & VariantProps<typeof sidebarMenuButtonVariants>\n>(({ asChild = false, isActive = false, variant = 'default', size = 'default', tooltip, className, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button'\n const { isMobile, state } = useSidebar()\n\n const button = (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === 'string') {\n tooltip = {\n children: tooltip\n }\n }\n\n return (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>{button}</Tooltip.Trigger>\n <Tooltip.Content side=\"right\" align=\"center\" hidden={state !== 'collapsed' || isMobile} {...tooltip} />\n </Tooltip.Root>\n )\n})\nSidebarMenuButton.displayName = 'SidebarMenuButton'\n\nconst SidebarMenuItemText = forwardRef<\n HTMLDivElement,\n {\n icon?: ReactElement<SVGSVGElement>\n text: string\n className?: string\n active?: boolean\n }\n>(({ icon, text, className, active = false, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(className, 'flex items-center select-none gap-x-2 pl-2.5', { 'gap-x-0': !icon })}\n {...props}\n >\n {icon && (\n <div\n className={cn(\n 'text-sidebar-icon-3 group-hover/menu-item:text-sidebar-icon-1 relative z-10 flex h-3 w-3 min-w-3 items-center duration-100 ease-in-out',\n { 'text-sidebar-icon-1': !!active }\n )}\n >\n {!!active && (\n <span className=\"bg-navbar-item-gradient absolute left-1/2 top-1/2 z-[-1] size-7 -translate-x-1/2 -translate-y-1/2\" />\n )}\n {icon}\n </div>\n )}\n <span\n className={cn(\n 'font-medium text-sidebar-foreground-2 group-hover/menu-item:text-sidebar-foreground-1 z-10 text-left duration-100 ease-in-out',\n { 'text-sidebar-foreground-1': active }\n )}\n >\n {text}\n </span>\n </div>\n )\n})\nSidebarMenuItemText.displayName = 'SidebarMenuItemText'\n\nconst SidebarMenuAction = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<'button'> & {\n asChild?: boolean\n showOnHover?: boolean\n }\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button'\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n 'absolute right-3 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0',\n // Increases the hit area of the button on mobile.\n 'after:absolute after:-inset-2 after:md:hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n {\n 'opacity-0 group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0':\n showOnHover\n },\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuAction.displayName = 'SidebarMenuAction'\n\nconst SidebarMenuBadge = forwardRef<HTMLDivElement, ComponentProps<'div'>>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"menu-badge\"\n className={cn(\n 'absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground select-none pointer-events-none',\n 'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n))\nSidebarMenuBadge.displayName = 'SidebarMenuBadge'\n\nconst SidebarMenuSkeleton = forwardRef<\n HTMLDivElement,\n ComponentProps<'div'> & {\n showIcon?: boolean\n }\n>(({ className, showIcon = false, ...props }, ref) => {\n // Random width between 50 to 90%.\n const width = useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n }, [])\n\n return (\n <div\n ref={ref}\n data-sidebar=\"menu-skeleton\"\n className={cn('rounded-md h-8 flex gap-2 px-2 items-center', className)}\n {...props}\n >\n {showIcon && <Skeleton className=\"size-4 rounded-md\" data-sidebar=\"menu-skeleton-icon\" />}\n <Skeleton\n className=\"h-4 max-w-[--skeleton-width] flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n '--skeleton-width': width\n } as CSSProperties\n }\n />\n </div>\n )\n})\nSidebarMenuSkeleton.displayName = 'SidebarMenuSkeleton'\n\nconst SidebarMenuSub = forwardRef<HTMLUListElement, ComponentProps<'ul'>>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu-sub\"\n className={cn(\n 'mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n))\nSidebarMenuSub.displayName = 'SidebarMenuSub'\n\nconst SidebarMenuSubItem = forwardRef<HTMLLIElement, ComponentProps<'li'>>(({ ...props }, ref) => (\n <li ref={ref} {...props} />\n))\nSidebarMenuSubItem.displayName = 'SidebarMenuSubItem'\n\nconst SidebarMenuSubButton = forwardRef<\n HTMLAnchorElement,\n ComponentPropsWithoutRef<'a'> & {\n asChild?: boolean\n size?: 'sm' | 'md'\n isActive?: boolean\n }\n>(({ asChild = false, size = 'md', isActive, className, ...props }, ref) => {\n const Comp = asChild ? Slot : 'a'\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n 'flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground',\n 'data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground',\n size === 'sm' && 'text-xs',\n size === 'md' && 'text-sm',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuSubButton.displayName = 'SidebarMenuSubButton'\n\nconst Sidebar = {\n Root: SidebarRoot,\n Content: SidebarContent,\n Footer: SidebarFooter,\n Group: SidebarGroup,\n GroupAction: SidebarGroupAction,\n GroupContent: SidebarGroupContent,\n GroupLabel: SidebarGroupLabel,\n Header: SidebarHeader,\n Input: SidebarInput,\n Inset: SidebarInset,\n Menu: SidebarMenu,\n MenuAction: SidebarMenuAction,\n MenuBadge: SidebarMenuBadge,\n MenuButton: SidebarMenuButton,\n MenuItemText: SidebarMenuItemText,\n MenuItem: SidebarMenuItem,\n MenuSkeleton: SidebarMenuSkeleton,\n MenuSub: SidebarMenuSubItem,\n MenuSubButton: SidebarMenuSubButton,\n MenuSubItem: SidebarMenuSubItem,\n Provider: SidebarProvider,\n Rail: SidebarRail,\n Separator: SidebarSeparator,\n Trigger: SidebarTrigger\n}\n\nexport { Sidebar, useSidebar }\n","import { FormHTMLAttributes, ReactNode } from 'react'\n\nimport { Button, Input, Label } from '@/components'\nimport { Icon } from '@components/icon'\nimport { Sidebar } from '@components/sidebar/sidebar'\nimport { TFunction } from 'i18next'\n\nimport { useSearch } from './search-context'\n\ninterface SidebarSearchProps extends FormHTMLAttributes<HTMLFormElement> {\n logo: ReactNode\n t: TFunction\n}\n\nexport function SidebarSearch(props: SidebarSearchProps) {\n const { t } = props\n const searchContext = useSearch()\n\n if (!searchContext) {\n console.warn('⚠️ Search context is null, returning early.')\n return null\n }\n\n const { setIsOpen } = searchContext\n\n return (\n <form {...props}>\n {props.logo}\n <Sidebar.Group className=\"p-0\">\n <Sidebar.GroupContent className=\"relative\">\n <Label htmlFor=\"search\" className=\"sr-only\">\n {t('component:navbar.search', 'Search')}\n </Label>\n <Input\n id=\"search\"\n placeholder=\"Search\"\n className=\"cursor-pointer pl-[30px]\"\n onClick={() => setIsOpen(true)}\n autoComplete=\"off\"\n spellCheck={false}\n onFocus={e => e.target.blur()}\n theme=\"sidebar\"\n />\n <Icon\n className=\"text-sidebar-foreground-4 pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 select-none\"\n name=\"search\"\n size={12}\n />\n <Button\n variant=\"custom\"\n size=\"icon\"\n className=\"border-sidebar-border-5 bg-sidebar-background-9 text-sidebar-foreground-3 pointer-events-none absolute right-1.5 top-1/2 h-5 -translate-y-1/2 select-none rounded-sm border p-0 px-1.5\"\n >\n <span className=\"text-12 size-full\">⌘K</span>\n </Button>\n </Sidebar.GroupContent>\n </Sidebar.Group>\n </form>\n )\n}\n","import { useRouterContext } from '@/context'\nimport { TypesUser } from '@/types'\nimport { Avatar } from '@components/avatar'\nimport { DropdownMenu } from '@components/dropdown-menu'\nimport { Icon } from '@components/icon'\nimport { Sidebar } from '@components/sidebar/sidebar'\nimport { getInitials } from '@utils/stringUtils'\nimport { TFunction } from 'i18next'\n\nconst UserAvatar = ({ user }: Pick<UserProps, 'user'>) => {\n const userName = user?.display_name || user?.uid || ''\n\n return (\n <>\n <Avatar.Root className=\"size-8 rounded-lg\">\n {!!user?.url && <Avatar.Image src={user.url} alt=\"user\" />}\n <Avatar.Fallback className=\"bg-sidebar-background-5 text-sidebar-foreground-1 rounded-lg\">\n {getInitials(userName)}\n </Avatar.Fallback>\n </Avatar.Root>\n <div className=\"text-13 grid flex-1 text-left leading-tight\">\n <span className=\"text-sidebar-foreground-1 truncate font-medium\">{userName}</span>\n <span className=\"text-sidebar-foreground-4 truncate\">{user?.email}</span>\n </div>\n </>\n )\n}\n\ninterface UserProps {\n user?: TypesUser\n openThemeDialog: () => void\n openLanguageDialog: () => void\n handleLogOut: () => void\n t: TFunction\n}\n\nexport function User({ user, openThemeDialog, openLanguageDialog, handleLogOut, t }: UserProps) {\n const { Link } = useRouterContext()\n\n return (\n <Sidebar.Menu>\n <Sidebar.MenuItem>\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <Sidebar.MenuButton size=\"lg\" className=\"data-[state=open]:bg-sidebar-background-2\">\n <UserAvatar user={user} />\n </Sidebar.MenuButton>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content\n className=\"border-sidebar-border-3 bg-sidebar-background-4 w-[--radix-dropdown-menu-trigger-width] min-w-56 !rounded-lg\"\n side=\"right\"\n align=\"end\"\n sideOffset={4}\n >\n <DropdownMenu.Label className=\"p-0 font-normal\">\n <div className=\"flex items-center gap-2 px-1 py-1.5\">\n <UserAvatar user={user} />\n </div>\n </DropdownMenu.Label>\n <DropdownMenu.Separator className=\"bg-sidebar-border-1\" />\n <DropdownMenu.Group>\n <DropdownMenu.Item className=\"data-[highlighted]:bg-sidebar-background-2\" asChild>\n <Link\n to=\"/profile-settings\"\n className=\"text-sidebar-foreground-6 data-[highlighted]:text-sidebar-foreground-1 group gap-2.5\"\n >\n <Icon\n className=\"text-sidebar-icon-3 group-hover:text-sidebar-icon-1 transition-colors\"\n name=\"settings-1\"\n size={12}\n />\n <span>{t('component:navbar.settings', 'Settings')}</span>\n </Link>\n </DropdownMenu.Item>\n <DropdownMenu.Item\n className=\"text-sidebar-foreground-6 data-[highlighted]:bg-sidebar-background-2 data-[highlighted]:text-sidebar-foreground-1 group gap-2.5\"\n onClick={openThemeDialog}\n >\n <Icon\n className=\"text-sidebar-icon-3 group-hover:text-sidebar-icon-1 transition-colors\"\n name=\"paint\"\n size={12}\n />\n <span>{t('component:navbar.appearence', 'Appearance')}</span>\n </DropdownMenu.Item>\n <DropdownMenu.Item\n className=\"text-sidebar-foreground-6 data-[highlighted]:bg-sidebar-background-2 data-[highlighted]:text-sidebar-foreground-1 group gap-2.5\"\n onClick={openLanguageDialog}\n >\n <Icon\n className=\"text-sidebar-icon-3 group-hover:text-sidebar-icon-1 transition-colors\"\n name=\"language\"\n size={12}\n />\n <span>{t('component:navbar.language', 'Language')}</span>\n </DropdownMenu.Item>\n <DropdownMenu.Separator className=\"bg-sidebar-border-1\" />\n <DropdownMenu.Item\n className=\"text-sidebar-foreground-6 data-[highlighted]:bg-sidebar-background-2 data-[highlighted]:text-sidebar-foreground-1 group gap-2.5\"\n onClick={handleLogOut}\n >\n <Icon\n className=\"text-sidebar-icon-3 group-hover:text-sidebar-icon-1 transition-colors\"\n name=\"logOut\"\n size={12}\n />\n <span>{t('component:navbar.logout', 'Logout')}</span>\n </DropdownMenu.Item>\n </DropdownMenu.Group>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n </Sidebar.MenuItem>\n </Sidebar.Menu>\n )\n}\n","import { useState } from 'react'\n\nimport {\n Icon,\n LanguageCode,\n LanguageDialog,\n LanguageInterface,\n languages,\n Sidebar,\n Spacer,\n ThemeDialog\n} from '@/components'\nimport { ContentStyleType, useRouterContext, useTheme } from '@/context'\nimport { TypesUser } from '@/types'\nimport { TranslationStore } from '@/views'\n\nimport { SidebarItem } from './sidebar-item'\nimport { SidebarSearchLegacy } from './sidebar-search-legacy'\nimport { SearchProvider } from './sidebar-search/search-context'\nimport { SidebarSearch } from './sidebar-search/sidebar-search'\nimport { User } from './sidebar-user'\nimport { NavbarItemType } from './types'\n\ninterface SidebarProps {\n recentMenuItems: NavbarItemType[]\n pinnedMenuItems: NavbarItemType[]\n showMoreMenu: boolean\n showSettingMenu: boolean\n handleMoreMenu: () => void\n handleSettingsMenu: () => void\n currentUser: TypesUser | undefined\n handleCustomNav: () => void\n handleLogOut: () => void\n handleChangePinnedMenuItem: (item: NavbarItemType, pin: boolean) => void\n handleRemoveRecentMenuItem: (item: NavbarItemType) => void\n useTranslationStore: () => TranslationStore\n showNewSearch?: boolean\n}\n\nexport const AppSidebar = ({\n useTranslationStore,\n handleChangePinnedMenuItem,\n handleRemoveRecentMenuItem,\n pinnedMenuItems,\n recentMenuItems,\n currentUser,\n handleMoreMenu,\n handleSettingsMenu,\n handleCustomNav,\n handleLogOut,\n showNewSearch\n}: SidebarProps) => {\n const { t, i18n, changeLanguage } = useTranslationStore()\n const { theme, setTheme, setInset, isInset } = useTheme()\n const { Link, navigate } = useRouterContext()\n\n const [openThemeDialog, setOpenThemeDialog] = useState(false)\n const [openLanguageDialog, setOpenLanguageDialog] = useState(false)\n\n const handleLanguageChange = (language: LanguageInterface) => {\n changeLanguage(language.code.toLowerCase())\n }\n\n const handleLanguageSave = (language: LanguageInterface) => {\n changeLanguage(language.code.toLowerCase())\n setOpenLanguageDialog(false)\n }\n\n const handleLanguageCancel = () => {\n setOpenLanguageDialog(false)\n }\n\n const onInsetChange = (style: ContentStyleType) => setInset(style === ContentStyleType.Inset)\n\n return (\n <>\n <Sidebar.Root className=\"z-20\">\n <Sidebar.Header>\n {showNewSearch ? (\n <SearchProvider t={t}>\n <SidebarSearch\n className=\"pb-3 pt-1.5\"\n t={t}\n logo={\n <Link to=\"/\" className=\"flex h-[58px] items-center justify-start gap-0.5 pl-1\">\n <Icon name=\"harness\" size={18} className=\"text-sidebar-foreground-accent\" />\n <Icon name=\"harness-logo-text\" width={65} height={15} className=\"text-sidebar-foreground-1 mb-px\" />\n </Link>\n }\n />\n </SearchProvider>\n ) : (\n <SidebarSearchLegacy\n t={t}\n logo={\n <Link className=\"flex items-center gap-0.5\" to=\"/\">\n <Icon name=\"harness\" size={18} className=\"text-sidebar-foreground-accent\" />\n <Icon name=\"harness-logo-text\" width={65} height={15} className=\"text-sidebar-foreground-1 mb-px\" />\n </Link>\n }\n />\n )}\n </Sidebar.Header>\n <Sidebar.Content>\n <Sidebar.Group>\n <Sidebar.GroupContent>\n <Sidebar.Menu>\n {pinnedMenuItems.map((item, index) => (\n <SidebarItem\n item={item}\n key={index}\n handleChangePinnedMenuItem={handleChangePinnedMenuItem}\n handleRemoveRecentMenuItem={handleRemoveRecentMenuItem}\n handleCustomNav={handleCustomNav}\n t={t}\n />\n ))}\n\n <Sidebar.MenuItem>\n <Sidebar.MenuButton asChild onClick={handleMoreMenu}>\n <Sidebar.MenuItemText\n text={t('component:navbar.more', 'More')}\n icon={<Icon name=\"ellipsis\" size={12} />}\n />\n </Sidebar.MenuButton>\n </Sidebar.MenuItem>\n </Sidebar.Menu>\n </Sidebar.GroupContent>\n </Sidebar.Group>\n\n {!!recentMenuItems.length && (\n <Sidebar.Group title={t('component:navbar.recent', 'Recent')} className=\"border-t pt-2.5\">\n <Sidebar.GroupLabel>{t('component:navbar.recent', 'Recent')}</Sidebar.GroupLabel>\n <Spacer size={2} />\n <Sidebar.GroupContent>\n <Sidebar.Menu>\n {recentMenuItems.map(item => (\n <SidebarItem\n isRecent\n key={item.id}\n item={item}\n handleChangePinnedMenuItem={handleChangePinnedMenuItem}\n handleRemoveRecentMenuItem={handleRemoveRecentMenuItem}\n handleCustomNav={handleCustomNav}\n t={t}\n />\n ))}\n </Sidebar.Menu>\n </Sidebar.GroupContent>\n </Sidebar.Group>\n )}\n\n <Sidebar.Group className=\"border-t\">\n <Sidebar.GroupContent>\n <Sidebar.Menu>\n {!!currentUser?.admin && (\n <Sidebar.MenuItem>\n <Sidebar.MenuButton asChild onClick={() => navigate('/admin/default-settings')}>\n <Sidebar.MenuItemText\n text={t('component:navbar.user-management', 'User Management')}\n icon={<Icon name=\"account\" size={12} />}\n />\n </Sidebar.MenuButton>\n </Sidebar.MenuItem>\n )}\n <Sidebar.MenuItem>\n <Sidebar.MenuButton asChild onClick={handleSettingsMenu}>\n <Sidebar.MenuItemText\n text={t('component:navbar.settings', 'Settings')}\n icon={<Icon name=\"settings-1\" size={12} />}\n />\n </Sidebar.MenuButton>\n </Sidebar.MenuItem>\n </Sidebar.Menu>\n </Sidebar.GroupContent>\n </Sidebar.Group>\n </Sidebar.Content>\n <Sidebar.Footer className=\"border-sidebar-border-1 border-t\">\n <User\n user={currentUser}\n openThemeDialog={() => setOpenThemeDialog(true)}\n openLanguageDialog={() => setOpenLanguageDialog(true)}\n handleLogOut={handleLogOut}\n t={t}\n />\n </Sidebar.Footer>\n <Sidebar.Rail />\n </Sidebar.Root>\n <ThemeDialog\n theme={theme}\n isInset={isInset}\n setTheme={setTheme}\n open={openThemeDialog}\n onOpenChange={() => setOpenThemeDialog(false)}\n onInsetChange={onInsetChange}\n />\n <LanguageDialog\n supportedLanguages={languages}\n defaultLanguage={i18n.language as LanguageCode}\n open={openLanguageDialog}\n onOpenChange={() => setOpenLanguageDialog(false)}\n onChange={handleLanguageChange}\n onCancel={handleLanguageCancel}\n onSave={handleLanguageSave}\n />\n </>\n )\n}\n","import { IconProps } from '@/components'\n\nexport enum MenuGroupTypes {\n GENERAL = 'general',\n SETTINGS = 'settings'\n}\n\ninterface MenuGroupType {\n groupId: number | string\n title: string\n type: MenuGroupTypes\n items: NavbarItemType[]\n}\n\ntype NavbarItemIdType = number | string\n\ninterface NavbarItemType {\n id: NavbarItemIdType\n title: string\n iconName?: IconProps['name']\n description?: string\n to: string\n permanentlyPinned?: boolean\n}\n\nexport enum UserMenuKeys {\n ACCOUNT = 'account',\n THEME = 'theme',\n CUSTOM_NAV = 'customNavigation',\n ADMINISTRATION = 'administration',\n LOG_OUT = 'logOut'\n}\n\ninterface UserMenuItemType {\n key: UserMenuKeys\n iconName: IconProps['name']\n title: string\n to: string | null\n isSeparated: boolean\n}\n\ninterface NavState {\n pinnedMenu: NavbarItemType[]\n recentMenu: NavbarItemType[]\n setPinned: (items: NavbarItemType, pin: boolean) => void\n setRecent: (items: NavbarItemType, remove?: boolean) => void\n setNavLinks: (links: { pinnedMenu?: NavbarItemType[]; recentMenu?: NavbarItemType[] }) => void\n}\n\nexport type { MenuGroupType, NavbarItemType, UserMenuItemType, NavbarItemIdType, NavState }\n","import { Label, Select } from '@/components'\nimport { ColorType, ContrastType, FullTheme, ModeType } from '@/context'\n\nexport function ColorSelect({\n setTheme,\n mode,\n color,\n contrast\n}: {\n setTheme: (theme: FullTheme) => void\n color: ColorType\n mode: ModeType\n contrast: ContrastType\n}) {\n return (\n <div>\n <Label className=\"text-xs\">Color</Label>\n <Select.Root\n name=\"color\"\n placeholder=\"Select a color theme\"\n value={color}\n onValueChange={(color: ColorType) => {\n setTheme(`${mode}-${color}-${contrast}`)\n }}\n >\n <Select.Content defaultValue={color}>\n <Select.Item value={ColorType.Standard}>Standard</Select.Item>\n <Select.Separator />\n <Select.Group>\n <Select.Label>Vision Assistive</Select.Label>\n <Select.Item value={ColorType.Tritanopia}>Tritanopia</Select.Item>\n <Select.Item value={ColorType.ProtanopiaAndDeuteranopia}>Protanopia & Deuteranopia</Select.Item>\n </Select.Group>\n </Select.Content>\n </Select.Root>\n </div>\n )\n}\n","import { Label, Select } from '@/components'\nimport { ColorType, ContrastType, FullTheme, ModeType } from '@/context'\n\nexport function ContrastSelect({\n setTheme,\n mode,\n color,\n contrast\n}: {\n setTheme: (theme: FullTheme) => void\n mode: ModeType\n color: ColorType\n contrast: ContrastType\n}) {\n return (\n <div>\n <Label className=\"text-xs\">Contrast</Label>\n <Select.Root\n name=\"contrast\"\n placeholder=\"Select a theme contrast\"\n value={contrast}\n onValueChange={(contrast: ContrastType) => {\n setTheme(`${mode}-${color}-${contrast}`)\n }}\n >\n <Select.Content defaultValue={contrast}>\n <Select.Item value={ContrastType.Standard}>Standard</Select.Item>\n <Select.Item value={ContrastType.Low}>Low</Select.Item>\n <Select.Item value={ContrastType.High}>High</Select.Item>\n </Select.Content>\n </Select.Root>\n </div>\n )\n}\n","import { Label, Select } from '@/components'\nimport { ColorType, ContrastType, FullTheme, ModeType } from '@/context'\n\nexport function ModeSelect({\n setTheme,\n mode,\n color,\n contrast\n}: {\n setTheme: (theme: FullTheme) => void\n mode: ModeType\n color: ColorType\n contrast: ContrastType\n}) {\n return (\n <div>\n <Label className=\"text-xs\">Mode</Label>\n <Select.Root\n name=\"mode\"\n placeholder=\"Select a theme mode\"\n value={mode}\n onValueChange={(mode: ModeType) => {\n setTheme(`${mode}-${color}-${contrast}`)\n }}\n >\n <Select.Content defaultValue={mode}>\n <Select.Item value={ModeType.Light}>Light</Select.Item>\n <Select.Item value={ModeType.Dark}>Dark</Select.Item>\n <Select.Item value={ModeType.System}>System</Select.Item>\n </Select.Content>\n </Select.Root>\n </div>\n )\n}\n","import { ColorType, ContrastType, FullTheme, ModeType } from '@/context'\n\nexport function getModeColorContrastFromFullTheme(theme?: FullTheme) {\n if (theme) {\n const modeColorContrast = theme.split('-')\n\n if (modeColorContrast.length === 3) {\n return {\n mode: modeColorContrast[0] as ModeType,\n color: modeColorContrast[1] as ColorType,\n contrast: modeColorContrast[2] as ContrastType\n }\n }\n }\n\n return { mode: ModeType.Dark, color: ColorType.Standard, contrast: ContrastType.Standard }\n}\n","// ToDo: Need to be reviewed by the XD team\n\nimport { useMemo } from 'react'\n\nimport { useTheme } from '@/context'\n\nimport { ColorSelect } from './color-select'\nimport { ContrastSelect } from './contrast-select'\nimport { ModeSelect } from './mode-select'\nimport { getModeColorContrastFromFullTheme } from './utils'\n\nfunction ThemeSelector() {\n // theme will be structured like dark-std-std which represents mode-color-contrast\n const { theme, setTheme } = useTheme()\n const { mode, color, contrast } = useMemo(() => getModeColorContrastFromFullTheme(theme), [theme])\n\n return (\n <div className=\"flex w-full items-center space-x-5\">\n <ModeSelect setTheme={setTheme} mode={mode} color={color} contrast={contrast} />\n <ColorSelect setTheme={setTheme} mode={mode} color={color} contrast={contrast} />\n <ContrastSelect setTheme={setTheme} mode={mode} color={color} contrast={contrast} />\n </div>\n )\n}\n\nexport { ThemeSelector }\n","import { ReactNode, useEffect, useState } from 'react'\n\nimport type { ToastActionElement, ToastProps } from './toast'\n\nconst TOAST_LIMIT = 3\nconst TOAST_REMOVE_DELAY = 10000\n\ntype ToasterToast = ToastProps & {\n id: string\n title?: ReactNode\n description?: ReactNode\n action?: ToastActionElement\n}\n\nlet count = 0\n\nfunction genId() {\n count = (count + 1) % Number.MAX_SAFE_INTEGER\n return count.toString()\n}\n\ntype Action =\n | { type: 'ADD_TOAST'; toast: ToasterToast }\n | { type: 'UPDATE_TOAST'; toast: Partial<ToasterToast> }\n | { type: 'DISMISS_TOAST'; toastId?: ToasterToast['id'] }\n | { type: 'REMOVE_TOAST'; toastId?: ToasterToast['id'] }\n\ninterface State {\n toasts: ToasterToast[]\n}\n\nconst toastTimeouts = new Map<string, ReturnType<typeof setTimeout>>()\n\nconst addToRemoveQueue = (toastId: string) => {\n if (toastTimeouts.has(toastId)) {\n return\n }\n\n const timeout = setTimeout(() => {\n toastTimeouts.delete(toastId)\n dispatch({\n type: 'REMOVE_TOAST',\n toastId: toastId\n })\n }, TOAST_REMOVE_DELAY)\n\n toastTimeouts.set(toastId, timeout)\n}\n\nexport const reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case 'ADD_TOAST':\n return {\n ...state,\n toasts: [action.toast, ...state.toasts].slice(0, TOAST_LIMIT)\n }\n\n case 'UPDATE_TOAST':\n return {\n ...state,\n toasts: state.toasts.map(t => (t.id === action.toast.id ? { ...t, ...action.toast } : t))\n }\n\n case 'DISMISS_TOAST': {\n const { toastId } = action\n\n if (toastId) {\n addToRemoveQueue(toastId)\n } else {\n state.toasts.forEach(toast => {\n addToRemoveQueue(toast.id)\n })\n }\n\n return {\n ...state,\n toasts: state.toasts.map(t => (t.id === toastId || toastId === undefined ? { ...t, open: false } : t))\n }\n }\n\n case 'REMOVE_TOAST':\n if (action.toastId === undefined) {\n return { ...state, toasts: [] }\n }\n return { ...state, toasts: state.toasts.filter(t => t.id !== action.toastId) }\n }\n}\n\nconst listeners: Array<(state: State) => void> = []\n\nlet memoryState: State = { toasts: [] }\n\nfunction dispatch(action: Action) {\n memoryState = reducer(memoryState, action)\n listeners.forEach(listener => {\n listener(memoryState)\n })\n}\n\ntype Toast = Omit<ToasterToast, 'id'>\n\nfunction toast({ ...props }: Toast) {\n const id = genId()\n\n const update = (props: ToasterToast) =>\n dispatch({\n type: 'UPDATE_TOAST',\n toast: { ...props, id }\n })\n const dismiss = () => dispatch({ type: 'DISMISS_TOAST', toastId: id })\n\n dispatch({\n type: 'ADD_TOAST',\n toast: {\n ...props,\n id,\n open: true,\n onOpenChange: open => {\n if (!open) dismiss()\n }\n }\n })\n\n return {\n id,\n dismiss,\n update\n }\n}\n\nfunction useToast() {\n const [state, setState] = useState<State>(memoryState)\n\n useEffect(() => {\n listeners.push(setState)\n return () => {\n const index = listeners.indexOf(setState)\n if (index > -1) {\n listeners.splice(index, 1)\n }\n }\n }, [state])\n\n return {\n ...state,\n toast,\n dismiss: (toastId?: string) => dispatch({ type: 'DISMISS_TOAST', toastId }),\n update: (props: ToasterToast) => dispatch({ type: 'UPDATE_TOAST', toast: { ...props } })\n }\n}\n\nexport { useToast, toast }\n","\"use client\";\n\n// packages/react/toast/src/toast.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport * as DismissableLayer from \"@radix-ui/react-dismissable-layer\";\nimport { Portal } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar PROVIDER_NAME = \"ToastProvider\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(\"Toast\");\nvar [createToastContext, createToastScope] = createContextScope(\"Toast\", [createCollectionScope]);\nvar [ToastProviderProvider, useToastProviderContext] = createToastContext(PROVIDER_NAME);\nvar ToastProvider = (props) => {\n const {\n __scopeToast,\n label = \"Notification\",\n duration = 5e3,\n swipeDirection = \"right\",\n swipeThreshold = 50,\n children\n } = props;\n const [viewport, setViewport] = React.useState(null);\n const [toastCount, setToastCount] = React.useState(0);\n const isFocusedToastEscapeKeyDownRef = React.useRef(false);\n const isClosePausedRef = React.useRef(false);\n if (!label.trim()) {\n console.error(\n `Invalid prop \\`label\\` supplied to \\`${PROVIDER_NAME}\\`. Expected non-empty \\`string\\`.`\n );\n }\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: __scopeToast, children: /* @__PURE__ */ jsx(\n ToastProviderProvider,\n {\n scope: __scopeToast,\n label,\n duration,\n swipeDirection,\n swipeThreshold,\n toastCount,\n viewport,\n onViewportChange: setViewport,\n onToastAdd: React.useCallback(() => setToastCount((prevCount) => prevCount + 1), []),\n onToastRemove: React.useCallback(() => setToastCount((prevCount) => prevCount - 1), []),\n isFocusedToastEscapeKeyDownRef,\n isClosePausedRef,\n children\n }\n ) });\n};\nToastProvider.displayName = PROVIDER_NAME;\nvar VIEWPORT_NAME = \"ToastViewport\";\nvar VIEWPORT_DEFAULT_HOTKEY = [\"F8\"];\nvar VIEWPORT_PAUSE = \"toast.viewportPause\";\nvar VIEWPORT_RESUME = \"toast.viewportResume\";\nvar ToastViewport = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeToast,\n hotkey = VIEWPORT_DEFAULT_HOTKEY,\n label = \"Notifications ({hotkey})\",\n ...viewportProps\n } = props;\n const context = useToastProviderContext(VIEWPORT_NAME, __scopeToast);\n const getItems = useCollection(__scopeToast);\n const wrapperRef = React.useRef(null);\n const headFocusProxyRef = React.useRef(null);\n const tailFocusProxyRef = React.useRef(null);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onViewportChange);\n const hotkeyLabel = hotkey.join(\"+\").replace(/Key/g, \"\").replace(/Digit/g, \"\");\n const hasToasts = context.toastCount > 0;\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n const isHotkeyPressed = hotkey.length !== 0 && hotkey.every((key) => event[key] || event.code === key);\n if (isHotkeyPressed) ref.current?.focus();\n };\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => document.removeEventListener(\"keydown\", handleKeyDown);\n }, [hotkey]);\n React.useEffect(() => {\n const wrapper = wrapperRef.current;\n const viewport = ref.current;\n if (hasToasts && wrapper && viewport) {\n const handlePause = () => {\n if (!context.isClosePausedRef.current) {\n const pauseEvent = new CustomEvent(VIEWPORT_PAUSE);\n viewport.dispatchEvent(pauseEvent);\n context.isClosePausedRef.current = true;\n }\n };\n const handleResume = () => {\n if (context.isClosePausedRef.current) {\n const resumeEvent = new CustomEvent(VIEWPORT_RESUME);\n viewport.dispatchEvent(resumeEvent);\n context.isClosePausedRef.current = false;\n }\n };\n const handleFocusOutResume = (event) => {\n const isFocusMovingOutside = !wrapper.contains(event.relatedTarget);\n if (isFocusMovingOutside) handleResume();\n };\n const handlePointerLeaveResume = () => {\n const isFocusInside = wrapper.contains(document.activeElement);\n if (!isFocusInside) handleResume();\n };\n wrapper.addEventListener(\"focusin\", handlePause);\n wrapper.addEventListener(\"focusout\", handleFocusOutResume);\n wrapper.addEventListener(\"pointermove\", handlePause);\n wrapper.addEventListener(\"pointerleave\", handlePointerLeaveResume);\n window.addEventListener(\"blur\", handlePause);\n window.addEventListener(\"focus\", handleResume);\n return () => {\n wrapper.removeEventListener(\"focusin\", handlePause);\n wrapper.removeEventListener(\"focusout\", handleFocusOutResume);\n wrapper.removeEventListener(\"pointermove\", handlePause);\n wrapper.removeEventListener(\"pointerleave\", handlePointerLeaveResume);\n window.removeEventListener(\"blur\", handlePause);\n window.removeEventListener(\"focus\", handleResume);\n };\n }\n }, [hasToasts, context.isClosePausedRef]);\n const getSortedTabbableCandidates = React.useCallback(\n ({ tabbingDirection }) => {\n const toastItems = getItems();\n const tabbableCandidates = toastItems.map((toastItem) => {\n const toastNode = toastItem.ref.current;\n const toastTabbableCandidates = [toastNode, ...getTabbableCandidates(toastNode)];\n return tabbingDirection === \"forwards\" ? toastTabbableCandidates : toastTabbableCandidates.reverse();\n });\n return (tabbingDirection === \"forwards\" ? tabbableCandidates.reverse() : tabbableCandidates).flat();\n },\n [getItems]\n );\n React.useEffect(() => {\n const viewport = ref.current;\n if (viewport) {\n const handleKeyDown = (event) => {\n const isMetaKey = event.altKey || event.ctrlKey || event.metaKey;\n const isTabKey = event.key === \"Tab\" && !isMetaKey;\n if (isTabKey) {\n const focusedElement = document.activeElement;\n const isTabbingBackwards = event.shiftKey;\n const targetIsViewport = event.target === viewport;\n if (targetIsViewport && isTabbingBackwards) {\n headFocusProxyRef.current?.focus();\n return;\n }\n const tabbingDirection = isTabbingBackwards ? \"backwards\" : \"forwards\";\n const sortedCandidates = getSortedTabbableCandidates({ tabbingDirection });\n const index = sortedCandidates.findIndex((candidate) => candidate === focusedElement);\n if (focusFirst(sortedCandidates.slice(index + 1))) {\n event.preventDefault();\n } else {\n isTabbingBackwards ? headFocusProxyRef.current?.focus() : tailFocusProxyRef.current?.focus();\n }\n }\n };\n viewport.addEventListener(\"keydown\", handleKeyDown);\n return () => viewport.removeEventListener(\"keydown\", handleKeyDown);\n }\n }, [getItems, getSortedTabbableCandidates]);\n return /* @__PURE__ */ jsxs(\n DismissableLayer.Branch,\n {\n ref: wrapperRef,\n role: \"region\",\n \"aria-label\": label.replace(\"{hotkey}\", hotkeyLabel),\n tabIndex: -1,\n style: { pointerEvents: hasToasts ? void 0 : \"none\" },\n children: [\n hasToasts && /* @__PURE__ */ jsx(\n FocusProxy,\n {\n ref: headFocusProxyRef,\n onFocusFromOutsideViewport: () => {\n const tabbableCandidates = getSortedTabbableCandidates({\n tabbingDirection: \"forwards\"\n });\n focusFirst(tabbableCandidates);\n }\n }\n ),\n /* @__PURE__ */ jsx(Collection.Slot, { scope: __scopeToast, children: /* @__PURE__ */ jsx(Primitive.ol, { tabIndex: -1, ...viewportProps, ref: composedRefs }) }),\n hasToasts && /* @__PURE__ */ jsx(\n FocusProxy,\n {\n ref: tailFocusProxyRef,\n onFocusFromOutsideViewport: () => {\n const tabbableCandidates = getSortedTabbableCandidates({\n tabbingDirection: \"backwards\"\n });\n focusFirst(tabbableCandidates);\n }\n }\n )\n ]\n }\n );\n }\n);\nToastViewport.displayName = VIEWPORT_NAME;\nvar FOCUS_PROXY_NAME = \"ToastFocusProxy\";\nvar FocusProxy = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeToast, onFocusFromOutsideViewport, ...proxyProps } = props;\n const context = useToastProviderContext(FOCUS_PROXY_NAME, __scopeToast);\n return /* @__PURE__ */ jsx(\n VisuallyHidden,\n {\n \"aria-hidden\": true,\n tabIndex: 0,\n ...proxyProps,\n ref: forwardedRef,\n style: { position: \"fixed\" },\n onFocus: (event) => {\n const prevFocusedElement = event.relatedTarget;\n const isFocusFromOutsideViewport = !context.viewport?.contains(prevFocusedElement);\n if (isFocusFromOutsideViewport) onFocusFromOutsideViewport();\n }\n }\n );\n }\n);\nFocusProxy.displayName = FOCUS_PROXY_NAME;\nvar TOAST_NAME = \"Toast\";\nvar TOAST_SWIPE_START = \"toast.swipeStart\";\nvar TOAST_SWIPE_MOVE = \"toast.swipeMove\";\nvar TOAST_SWIPE_CANCEL = \"toast.swipeCancel\";\nvar TOAST_SWIPE_END = \"toast.swipeEnd\";\nvar Toast = React.forwardRef(\n (props, forwardedRef) => {\n const { forceMount, open: openProp, defaultOpen, onOpenChange, ...toastProps } = props;\n const [open = true, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange\n });\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || open, children: /* @__PURE__ */ jsx(\n ToastImpl,\n {\n open,\n ...toastProps,\n ref: forwardedRef,\n onClose: () => setOpen(false),\n onPause: useCallbackRef(props.onPause),\n onResume: useCallbackRef(props.onResume),\n onSwipeStart: composeEventHandlers(props.onSwipeStart, (event) => {\n event.currentTarget.setAttribute(\"data-swipe\", \"start\");\n }),\n onSwipeMove: composeEventHandlers(props.onSwipeMove, (event) => {\n const { x, y } = event.detail.delta;\n event.currentTarget.setAttribute(\"data-swipe\", \"move\");\n event.currentTarget.style.setProperty(\"--radix-toast-swipe-move-x\", `${x}px`);\n event.currentTarget.style.setProperty(\"--radix-toast-swipe-move-y\", `${y}px`);\n }),\n onSwipeCancel: composeEventHandlers(props.onSwipeCancel, (event) => {\n event.currentTarget.setAttribute(\"data-swipe\", \"cancel\");\n event.currentTarget.style.removeProperty(\"--radix-toast-swipe-move-x\");\n event.currentTarget.style.removeProperty(\"--radix-toast-swipe-move-y\");\n event.currentTarget.style.removeProperty(\"--radix-toast-swipe-end-x\");\n event.currentTarget.style.removeProperty(\"--radix-toast-swipe-end-y\");\n }),\n onSwipeEnd: composeEventHandlers(props.onSwipeEnd, (event) => {\n const { x, y } = event.detail.delta;\n event.currentTarget.setAttribute(\"data-swipe\", \"end\");\n event.currentTarget.style.removeProperty(\"--radix-toast-swipe-move-x\");\n event.currentTarget.style.removeProperty(\"--radix-toast-swipe-move-y\");\n event.currentTarget.style.setProperty(\"--radix-toast-swipe-end-x\", `${x}px`);\n event.currentTarget.style.setProperty(\"--radix-toast-swipe-end-y\", `${y}px`);\n setOpen(false);\n })\n }\n ) });\n }\n);\nToast.displayName = TOAST_NAME;\nvar [ToastInteractiveProvider, useToastInteractiveContext] = createToastContext(TOAST_NAME, {\n onClose() {\n }\n});\nvar ToastImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeToast,\n type = \"foreground\",\n duration: durationProp,\n open,\n onClose,\n onEscapeKeyDown,\n onPause,\n onResume,\n onSwipeStart,\n onSwipeMove,\n onSwipeCancel,\n onSwipeEnd,\n ...toastProps\n } = props;\n const context = useToastProviderContext(TOAST_NAME, __scopeToast);\n const [node, setNode] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const pointerStartRef = React.useRef(null);\n const swipeDeltaRef = React.useRef(null);\n const duration = durationProp || context.duration;\n const closeTimerStartTimeRef = React.useRef(0);\n const closeTimerRemainingTimeRef = React.useRef(duration);\n const closeTimerRef = React.useRef(0);\n const { onToastAdd, onToastRemove } = context;\n const handleClose = useCallbackRef(() => {\n const isFocusInToast = node?.contains(document.activeElement);\n if (isFocusInToast) context.viewport?.focus();\n onClose();\n });\n const startTimer = React.useCallback(\n (duration2) => {\n if (!duration2 || duration2 === Infinity) return;\n window.clearTimeout(closeTimerRef.current);\n closeTimerStartTimeRef.current = (/* @__PURE__ */ new Date()).getTime();\n closeTimerRef.current = window.setTimeout(handleClose, duration2);\n },\n [handleClose]\n );\n React.useEffect(() => {\n const viewport = context.viewport;\n if (viewport) {\n const handleResume = () => {\n startTimer(closeTimerRemainingTimeRef.current);\n onResume?.();\n };\n const handlePause = () => {\n const elapsedTime = (/* @__PURE__ */ new Date()).getTime() - closeTimerStartTimeRef.current;\n closeTimerRemainingTimeRef.current = closeTimerRemainingTimeRef.current - elapsedTime;\n window.clearTimeout(closeTimerRef.current);\n onPause?.();\n };\n viewport.addEventListener(VIEWPORT_PAUSE, handlePause);\n viewport.addEventListener(VIEWPORT_RESUME, handleResume);\n return () => {\n viewport.removeEventListener(VIEWPORT_PAUSE, handlePause);\n viewport.removeEventListener(VIEWPORT_RESUME, handleResume);\n };\n }\n }, [context.viewport, duration, onPause, onResume, startTimer]);\n React.useEffect(() => {\n if (open && !context.isClosePausedRef.current) startTimer(duration);\n }, [open, duration, context.isClosePausedRef, startTimer]);\n React.useEffect(() => {\n onToastAdd();\n return () => onToastRemove();\n }, [onToastAdd, onToastRemove]);\n const announceTextContent = React.useMemo(() => {\n return node ? getAnnounceTextContent(node) : null;\n }, [node]);\n if (!context.viewport) return null;\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n announceTextContent && /* @__PURE__ */ jsx(\n ToastAnnounce,\n {\n __scopeToast,\n role: \"status\",\n \"aria-live\": type === \"foreground\" ? \"assertive\" : \"polite\",\n \"aria-atomic\": true,\n children: announceTextContent\n }\n ),\n /* @__PURE__ */ jsx(ToastInteractiveProvider, { scope: __scopeToast, onClose: handleClose, children: ReactDOM.createPortal(\n /* @__PURE__ */ jsx(Collection.ItemSlot, { scope: __scopeToast, children: /* @__PURE__ */ jsx(\n DismissableLayer.Root,\n {\n asChild: true,\n onEscapeKeyDown: composeEventHandlers(onEscapeKeyDown, () => {\n if (!context.isFocusedToastEscapeKeyDownRef.current) handleClose();\n context.isFocusedToastEscapeKeyDownRef.current = false;\n }),\n children: /* @__PURE__ */ jsx(\n Primitive.li,\n {\n role: \"status\",\n \"aria-live\": \"off\",\n \"aria-atomic\": true,\n tabIndex: 0,\n \"data-state\": open ? \"open\" : \"closed\",\n \"data-swipe-direction\": context.swipeDirection,\n ...toastProps,\n ref: composedRefs,\n style: { userSelect: \"none\", touchAction: \"none\", ...props.style },\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key !== \"Escape\") return;\n onEscapeKeyDown?.(event.nativeEvent);\n if (!event.nativeEvent.defaultPrevented) {\n context.isFocusedToastEscapeKeyDownRef.current = true;\n handleClose();\n }\n }),\n onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {\n if (event.button !== 0) return;\n pointerStartRef.current = { x: event.clientX, y: event.clientY };\n }),\n onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n if (!pointerStartRef.current) return;\n const x = event.clientX - pointerStartRef.current.x;\n const y = event.clientY - pointerStartRef.current.y;\n const hasSwipeMoveStarted = Boolean(swipeDeltaRef.current);\n const isHorizontalSwipe = [\"left\", \"right\"].includes(context.swipeDirection);\n const clamp = [\"left\", \"up\"].includes(context.swipeDirection) ? Math.min : Math.max;\n const clampedX = isHorizontalSwipe ? clamp(0, x) : 0;\n const clampedY = !isHorizontalSwipe ? clamp(0, y) : 0;\n const moveStartBuffer = event.pointerType === \"touch\" ? 10 : 2;\n const delta = { x: clampedX, y: clampedY };\n const eventDetail = { originalEvent: event, delta };\n if (hasSwipeMoveStarted) {\n swipeDeltaRef.current = delta;\n handleAndDispatchCustomEvent(TOAST_SWIPE_MOVE, onSwipeMove, eventDetail, {\n discrete: false\n });\n } else if (isDeltaInDirection(delta, context.swipeDirection, moveStartBuffer)) {\n swipeDeltaRef.current = delta;\n handleAndDispatchCustomEvent(TOAST_SWIPE_START, onSwipeStart, eventDetail, {\n discrete: false\n });\n event.target.setPointerCapture(event.pointerId);\n } else if (Math.abs(x) > moveStartBuffer || Math.abs(y) > moveStartBuffer) {\n pointerStartRef.current = null;\n }\n }),\n onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n const delta = swipeDeltaRef.current;\n const target = event.target;\n if (target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n }\n swipeDeltaRef.current = null;\n pointerStartRef.current = null;\n if (delta) {\n const toast = event.currentTarget;\n const eventDetail = { originalEvent: event, delta };\n if (isDeltaInDirection(delta, context.swipeDirection, context.swipeThreshold)) {\n handleAndDispatchCustomEvent(TOAST_SWIPE_END, onSwipeEnd, eventDetail, {\n discrete: true\n });\n } else {\n handleAndDispatchCustomEvent(\n TOAST_SWIPE_CANCEL,\n onSwipeCancel,\n eventDetail,\n {\n discrete: true\n }\n );\n }\n toast.addEventListener(\"click\", (event2) => event2.preventDefault(), {\n once: true\n });\n }\n })\n }\n )\n }\n ) }),\n context.viewport\n ) })\n ] });\n }\n);\nvar ToastAnnounce = (props) => {\n const { __scopeToast, children, ...announceProps } = props;\n const context = useToastProviderContext(TOAST_NAME, __scopeToast);\n const [renderAnnounceText, setRenderAnnounceText] = React.useState(false);\n const [isAnnounced, setIsAnnounced] = React.useState(false);\n useNextFrame(() => setRenderAnnounceText(true));\n React.useEffect(() => {\n const timer = window.setTimeout(() => setIsAnnounced(true), 1e3);\n return () => window.clearTimeout(timer);\n }, []);\n return isAnnounced ? null : /* @__PURE__ */ jsx(Portal, { asChild: true, children: /* @__PURE__ */ jsx(VisuallyHidden, { ...announceProps, children: renderAnnounceText && /* @__PURE__ */ jsxs(Fragment, { children: [\n context.label,\n \" \",\n children\n ] }) }) });\n};\nvar TITLE_NAME = \"ToastTitle\";\nvar ToastTitle = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeToast, ...titleProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { ...titleProps, ref: forwardedRef });\n }\n);\nToastTitle.displayName = TITLE_NAME;\nvar DESCRIPTION_NAME = \"ToastDescription\";\nvar ToastDescription = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeToast, ...descriptionProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { ...descriptionProps, ref: forwardedRef });\n }\n);\nToastDescription.displayName = DESCRIPTION_NAME;\nvar ACTION_NAME = \"ToastAction\";\nvar ToastAction = React.forwardRef(\n (props, forwardedRef) => {\n const { altText, ...actionProps } = props;\n if (!altText.trim()) {\n console.error(\n `Invalid prop \\`altText\\` supplied to \\`${ACTION_NAME}\\`. Expected non-empty \\`string\\`.`\n );\n return null;\n }\n return /* @__PURE__ */ jsx(ToastAnnounceExclude, { altText, asChild: true, children: /* @__PURE__ */ jsx(ToastClose, { ...actionProps, ref: forwardedRef }) });\n }\n);\nToastAction.displayName = ACTION_NAME;\nvar CLOSE_NAME = \"ToastClose\";\nvar ToastClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeToast, ...closeProps } = props;\n const interactiveContext = useToastInteractiveContext(CLOSE_NAME, __scopeToast);\n return /* @__PURE__ */ jsx(ToastAnnounceExclude, { asChild: true, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, interactiveContext.onClose)\n }\n ) });\n }\n);\nToastClose.displayName = CLOSE_NAME;\nvar ToastAnnounceExclude = React.forwardRef((props, forwardedRef) => {\n const { __scopeToast, altText, ...announceExcludeProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-radix-toast-announce-exclude\": \"\",\n \"data-radix-toast-announce-alt\": altText || void 0,\n ...announceExcludeProps,\n ref: forwardedRef\n }\n );\n});\nfunction getAnnounceTextContent(container) {\n const textContent = [];\n const childNodes = Array.from(container.childNodes);\n childNodes.forEach((node) => {\n if (node.nodeType === node.TEXT_NODE && node.textContent) textContent.push(node.textContent);\n if (isHTMLElement(node)) {\n const isHidden = node.ariaHidden || node.hidden || node.style.display === \"none\";\n const isExcluded = node.dataset.radixToastAnnounceExclude === \"\";\n if (!isHidden) {\n if (isExcluded) {\n const altText = node.dataset.radixToastAnnounceAlt;\n if (altText) textContent.push(altText);\n } else {\n textContent.push(...getAnnounceTextContent(node));\n }\n }\n }\n });\n return textContent;\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const currentTarget = detail.originalEvent.currentTarget;\n const event = new CustomEvent(name, { bubbles: true, cancelable: true, detail });\n if (handler) currentTarget.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(currentTarget, event);\n } else {\n currentTarget.dispatchEvent(event);\n }\n}\nvar isDeltaInDirection = (delta, direction, threshold = 0) => {\n const deltaX = Math.abs(delta.x);\n const deltaY = Math.abs(delta.y);\n const isDeltaX = deltaX > deltaY;\n if (direction === \"left\" || direction === \"right\") {\n return isDeltaX && deltaX > threshold;\n } else {\n return !isDeltaX && deltaY > threshold;\n }\n};\nfunction useNextFrame(callback = () => {\n}) {\n const fn = useCallbackRef(callback);\n useLayoutEffect(() => {\n let raf1 = 0;\n let raf2 = 0;\n raf1 = window.requestAnimationFrame(() => raf2 = window.requestAnimationFrame(fn));\n return () => {\n window.cancelAnimationFrame(raf1);\n window.cancelAnimationFrame(raf2);\n };\n }, [fn]);\n}\nfunction isHTMLElement(node) {\n return node.nodeType === node.ELEMENT_NODE;\n}\nfunction getTabbableCandidates(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\nfunction focusFirst(candidates) {\n const previouslyFocusedElement = document.activeElement;\n return candidates.some((candidate) => {\n if (candidate === previouslyFocusedElement) return true;\n candidate.focus();\n return document.activeElement !== previouslyFocusedElement;\n });\n}\nvar Provider = ToastProvider;\nvar Viewport = ToastViewport;\nvar Root2 = Toast;\nvar Title = ToastTitle;\nvar Description = ToastDescription;\nvar Action = ToastAction;\nvar Close = ToastClose;\nexport {\n Action,\n Close,\n Description,\n Provider,\n Root2 as Root,\n Title,\n Toast,\n ToastAction,\n ToastClose,\n ToastDescription,\n ToastProvider,\n ToastTitle,\n ToastViewport,\n Viewport,\n createToastScope\n};\n//# sourceMappingURL=index.mjs.map\n","import { ComponentPropsWithoutRef, ElementRef, forwardRef, ReactElement } from 'react'\n\nimport { Cross2Icon } from '@radix-ui/react-icons'\nimport * as ToastPrimitives from '@radix-ui/react-toast'\nimport { cn } from '@utils/cn'\nimport { cva, type VariantProps } from 'class-variance-authority'\n\nconst ToastProvider = ToastPrimitives.Provider\n\nconst ToastViewport = forwardRef<\n ElementRef<typeof ToastPrimitives.Viewport>,\n ComponentPropsWithoutRef<typeof ToastPrimitives.Viewport>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Viewport\n ref={ref}\n className={cn(\n 'fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 gap-y-2 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[317px]',\n className\n )}\n {...props}\n />\n))\nToastViewport.displayName = ToastPrimitives.Viewport.displayName\n\nconst toastVariants = cva(\n 'pointer-events-auto relative flex w-full items-center justify-between space-x-2 overflow-hidden rounded border py-3 pl-3.5 pr-12 shadow-lg transition-all',\n {\n variants: {\n variant: {\n default: 'border-borders-1 bg-background-3 text-foreground [&_svg]:text-icons-1',\n destructive: 'border-borders-danger bg-foreground-danger text-foreground-1 [&_svg]:text-icons-2',\n success:\n 'border-borders-success border-tag-border-mint-1 bg-tag-background-mint-1 text-tag-foreground-mint-1 [&_svg]:text-icons-2'\n }\n },\n defaultVariants: {\n variant: 'default'\n }\n }\n)\n\nconst ToastRoot = forwardRef<\n ElementRef<typeof ToastPrimitives.Root>,\n ComponentPropsWithoutRef<typeof ToastPrimitives.Root> & VariantProps<typeof toastVariants>\n>(({ className, variant, ...props }, ref) => {\n return <ToastPrimitives.Root ref={ref} className={cn(toastVariants({ variant }), className)} {...props} />\n})\nToastRoot.displayName = ToastPrimitives.Root.displayName\n\nconst ToastAction = forwardRef<\n ElementRef<typeof ToastPrimitives.Action>,\n ComponentPropsWithoutRef<typeof ToastPrimitives.Action>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Action\n ref={ref}\n className={cn(\n 'hover:bg-secondary focus:ring-ring group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground group-[.destructive]:focus:ring-destructive inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium transition-colors focus:outline-none focus:ring-1 disabled:pointer-events-none disabled:opacity-50',\n className\n )}\n {...props}\n />\n))\nToastAction.displayName = ToastPrimitives.Action.displayName\n\nconst ToastClose = forwardRef<\n ElementRef<typeof ToastPrimitives.Close>,\n ComponentPropsWithoutRef<typeof ToastPrimitives.Close>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Close\n ref={ref}\n className={cn(\n 'text-icons-2 absolute right-3.5 top-[15px] my-auto size-3 rounded-md focus:outline-none focus:ring-1',\n className\n )}\n toast-close=\"\"\n {...props}\n >\n <Cross2Icon className=\"size-3\" />\n </ToastPrimitives.Close>\n))\nToastClose.displayName = ToastPrimitives.Close.displayName\n\nconst ToastTitle = forwardRef<\n ElementRef<typeof ToastPrimitives.Title>,\n ComponentPropsWithoutRef<typeof ToastPrimitives.Title>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Title\n ref={ref}\n className={cn('text-sm leading-tight tracking-tight [&+div]:text-xs', className)}\n {...props}\n />\n))\nToastTitle.displayName = ToastPrimitives.Title.displayName\n\nconst ToastDescription = forwardRef<\n ElementRef<typeof ToastPrimitives.Description>,\n ComponentPropsWithoutRef<typeof ToastPrimitives.Description>\n>(({ className, ...props }, ref) => (\n <ToastPrimitives.Description ref={ref} className={cn('text-sm opacity-90', className)} {...props} />\n))\nToastDescription.displayName = ToastPrimitives.Description.displayName\n\ntype ToastProps = ComponentPropsWithoutRef<typeof ToastRoot>\n\ntype ToastActionElement = ReactElement<typeof ToastAction>\n\nconst Toast = {\n Root: ToastRoot,\n Action: ToastAction,\n Close: ToastClose,\n Title: ToastTitle,\n Description: ToastDescription,\n Viewport: ToastViewport,\n Provider: ToastProvider\n}\n\nexport { Toast, type ToastProps, type ToastActionElement }\n","import { FC } from 'react'\n\nimport {\n Button,\n ButtonGroup,\n DropdownMenu,\n FileToolbarActions,\n Icon,\n StackedList,\n ToggleGroup,\n ViewTypeValue\n} from '@/components'\n\nexport interface FileViewerControlBarProps {\n view: ViewTypeValue\n onChangeView: (value: ViewTypeValue) => void\n isMarkdown: boolean\n fileBytesSize: string\n fileContent: string\n url: string\n handleDownloadFile: () => void\n handleEditFile: () => void\n handleOpenDeleteDialog: () => void\n}\n\nexport const FileViewerControlBar: FC<FileViewerControlBarProps> = ({\n view,\n onChangeView,\n isMarkdown,\n fileBytesSize,\n fileContent,\n url,\n handleDownloadFile,\n handleEditFile,\n handleOpenDeleteDialog\n}) => {\n const handleViewRaw = () => {\n window.open(url, '_blank')\n }\n\n const RightDetails = () => {\n return (\n <ButtonGroup verticalAlign=\"center\" spacing=\"2\">\n <span className=\"text-sm text-foreground-4\">{`${fileContent?.split('\\n').length || 0} lines`}</span>\n <span className=\"h-3 border-l border-borders-2\" />\n <span className=\"mr-5 text-sm text-foreground-4\">{fileBytesSize}</span>\n <FileToolbarActions\n showEdit\n copyContent={fileContent}\n onDownloadClick={handleDownloadFile}\n onEditClick={handleEditFile}\n />\n <DropdownMenu.Root>\n <DropdownMenu.Trigger className=\"-mr-2\" asChild>\n <Button\n className=\"text-icons-3 hover:text-icons-2 data-[state=open]:text-icons-2\"\n variant=\"custom\"\n size=\"icon\"\n >\n <Icon name=\"more-dots-fill\" size={16} />\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"end\">\n <DropdownMenu.Item onSelect={handleViewRaw}>\n <span className=\"truncate text-sm\">View Raw</span>\n </DropdownMenu.Item>\n <DropdownMenu.Item onSelect={handleOpenDeleteDialog}>\n <span className=\"truncate text-sm text-foreground-danger\">Delete</span>\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n </ButtonGroup>\n )\n }\n\n return (\n <StackedList.Root onlyTopRounded borderBackground>\n <StackedList.Item disableHover isHeader className=\"px-4 py-1.5\">\n <ToggleGroup.Root\n className=\"gap-0\"\n onValueChange={onChangeView}\n value={view}\n type=\"single\"\n unselectable={'on'}\n size=\"xs\"\n >\n {isMarkdown && <ToggleGroup.Item value={'preview'}>Preview</ToggleGroup.Item>}\n <ToggleGroup.Item value={'code'}>Code</ToggleGroup.Item>\n <ToggleGroup.Item value={'blame'}>Blame</ToggleGroup.Item>\n <ToggleGroup.Item value={'history'}>History</ToggleGroup.Item>\n </ToggleGroup.Root>\n <StackedList.Field right title={<RightDetails />} />\n </StackedList.Item>\n </StackedList.Root>\n )\n}\n","import { FC } from 'react'\n\nimport { EditViewTypeValue, StackedList, ToggleGroup } from '@/components'\n\nexport interface FileEditorControlBarProps {\n view: EditViewTypeValue\n onChangeView: (value: EditViewTypeValue) => void\n}\n\nexport const FileEditorControlBar: FC<FileEditorControlBarProps> = ({ view, onChangeView }) => {\n return (\n <StackedList.Root onlyTopRounded borderBackground>\n <StackedList.Item disableHover isHeader className=\"px-4 py-1.5\">\n <ToggleGroup.Root\n className=\"gap-0\"\n onValueChange={onChangeView}\n value={view}\n type=\"single\"\n unselectable={'on'}\n size=\"xs\"\n >\n <ToggleGroup.Item value={'edit'}>Edit</ToggleGroup.Item>\n <ToggleGroup.Item value={'preview'}>Preview</ToggleGroup.Item>\n </ToggleGroup.Root>\n </StackedList.Item>\n </StackedList.Root>\n )\n}\n","import { ChangeEvent, FC } from 'react'\nimport { SubmitHandler, useForm } from 'react-hook-form'\n\nimport {\n Button,\n ButtonGroup,\n CommitToGitRefOption,\n ControlGroup,\n Dialog,\n GitCommitFormType,\n Icon,\n Input,\n Message,\n MessageTheme,\n Option,\n RadioButton,\n RadioGroup,\n StyledLink,\n Textarea\n} from '@/components'\nimport { UsererrorError, ViolationState } from '@/types'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { z } from 'zod'\n\nexport const createGitCommitSchema = (isFileNameRequired: boolean) => {\n const fileNameSchema = isFileNameRequired ? z.string().min(1, 'File Name is required') : z.string().optional()\n\n return z\n .object({\n message: z.string().optional(),\n description: z.string().optional(),\n commitToGitRef: z.nativeEnum(CommitToGitRefOption),\n newBranchName: z.string().optional(),\n fileName: fileNameSchema\n })\n .superRefine((data, ctx) => {\n if (data.commitToGitRef === CommitToGitRefOption.NEW_BRANCH) {\n if (!data.newBranchName || !data.newBranchName.trim()) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Branch Name is required',\n path: ['newBranchName']\n })\n }\n }\n })\n}\n\nexport type GitCommitSchemaType = z.infer<ReturnType<typeof createGitCommitSchema>>\n\nexport interface GitCommitDialogProps {\n isOpen: boolean\n isFileNameRequired?: boolean\n commitTitlePlaceHolder?: string\n currentBranch: string\n violation: boolean\n bypassable: boolean\n disableCTA: boolean\n // TODO: We need to decide how to display errors from the API.\n error?: UsererrorError\n onClose: () => void\n onFormSubmit: (formValues: GitCommitFormType) => Promise<void>\n setAllStates: (payload: Partial<ViolationState>) => void\n dryRun: (commitToGitRef: CommitToGitRefOption, fileName?: string) => void\n isSubmitting: boolean\n}\n\nexport const GitCommitDialog: FC<GitCommitDialogProps> = ({\n isOpen,\n onClose,\n isFileNameRequired = false,\n onFormSubmit,\n commitTitlePlaceHolder,\n dryRun,\n currentBranch,\n violation,\n bypassable,\n setAllStates,\n disableCTA,\n isSubmitting,\n error\n}) => {\n const {\n register,\n handleSubmit,\n setValue,\n watch,\n formState: { errors }\n } = useForm<GitCommitSchemaType>({\n resolver: zodResolver(createGitCommitSchema(isFileNameRequired)),\n mode: 'onChange',\n defaultValues: {\n message: '',\n description: '',\n commitToGitRef: CommitToGitRefOption.DIRECTLY,\n newBranchName: '',\n fileName: isFileNameRequired ? '' : undefined\n }\n })\n\n const isDisabledSubmission = disableCTA || isSubmitting\n const onSubmit: SubmitHandler<GitCommitSchemaType> = data => {\n if (isDisabledSubmission) return\n\n onFormSubmit(data as GitCommitFormType)\n }\n\n const commitToGitRefValue = watch('commitToGitRef')\n const fileNameValue = watch('fileName')\n\n const handleCommitToGitRefChange = (value: CommitToGitRefOption) => {\n dryRun(value, fileNameValue)\n setValue('commitToGitRef', value, { shouldValidate: true })\n\n if (CommitToGitRefOption.DIRECTLY) {\n setValue('newBranchName', '')\n }\n }\n\n const handleNewBranchNameChange = (_e: ChangeEvent<HTMLInputElement>) => {\n setAllStates({ violation: false, bypassable: false, bypassed: false })\n }\n return (\n <Dialog.Root open={isOpen} onOpenChange={onClose}>\n <Dialog.Content className=\"max-w-[576px]\">\n <Dialog.Header>\n <Dialog.Title>Commit Changes</Dialog.Title>\n </Dialog.Header>\n\n <form className=\"flex flex-col gap-y-7 pb-4\" onSubmit={handleSubmit(onSubmit)}>\n {isFileNameRequired && (\n <Input\n id=\"fileName\"\n label=\"File Name\"\n {...register('fileName')}\n placeholder=\"Add a file name\"\n size=\"md\"\n error={errors.fileName?.message?.toString()}\n autoFocus\n />\n )}\n <Input\n id=\"message\"\n label=\"Commit Message\"\n {...register('message')}\n placeholder={commitTitlePlaceHolder ?? 'Add a commit message'}\n size=\"md\"\n error={errors.message?.message?.toString()}\n />\n <Textarea\n id=\"description\"\n {...register('description')}\n placeholder=\"Add an optional extended description\"\n label=\"Extended description\"\n error={errors.description?.message?.toString()}\n />\n <ControlGroup>\n <RadioGroup\n className=\"gap-6\"\n id=\"commitToGitRef\"\n value={commitToGitRefValue}\n onValueChange={handleCommitToGitRefChange}\n >\n <Option\n control={\n <RadioButton\n className=\"mt-px\"\n value={CommitToGitRefOption.DIRECTLY}\n id={CommitToGitRefOption.DIRECTLY}\n />\n }\n id={CommitToGitRefOption.DIRECTLY}\n label={\n <span>\n Commit directly to the\n <span\n className=\"\n relative mx-1.5 inline-flex gap-1 px-2.5 text-foreground-8\n before:absolute before:-top-1 before:left-0 before:z-[-1] before:h-6 before:w-full before:rounded before:bg-background-8\n \"\n >\n <Icon className=\"translate-y-0.5 text-icons-9\" name=\"branch\" size={14} />\n {currentBranch}\n </span>\n branch\n </span>\n }\n ariaSelected={commitToGitRefValue === CommitToGitRefOption.DIRECTLY}\n />\n <Option\n control={\n <RadioButton\n className=\"mt-px\"\n value={CommitToGitRefOption.NEW_BRANCH}\n id={CommitToGitRefOption.NEW_BRANCH}\n />\n }\n id={CommitToGitRefOption.NEW_BRANCH}\n label=\"Create a new branch for this commit and start a pull request\"\n ariaSelected={commitToGitRefValue === CommitToGitRefOption.NEW_BRANCH}\n description={\n // TODO: Add correct path\n <StyledLink to=\"/\">Learn more about pull requests</StyledLink>\n }\n />\n </RadioGroup>\n {violation && (\n <Message className=\"ml-[26px] mt-0.5\" theme={MessageTheme.ERROR}>\n {bypassable\n ? commitToGitRefValue === CommitToGitRefOption.DIRECTLY\n ? 'Some rules will be bypassed to commit directly'\n : 'Some rules will be bypassed to commit by creating branch'\n : commitToGitRefValue === CommitToGitRefOption.DIRECTLY\n ? \"Some rules don't allow you to commit directly\"\n : \"Some rules don't allow you to create new branch for commit\"}\n </Message>\n )}\n {error && error?.message && (\n <Message className=\"ml-[26px] mt-0.5\" theme={MessageTheme.ERROR}>\n {error.message}\n </Message>\n )}\n {errors.commitToGitRef && (\n <Message className=\"ml-8 mt-0.5\" theme={MessageTheme.ERROR}>\n {errors.commitToGitRef?.message?.toString()}\n </Message>\n )}\n {commitToGitRefValue === CommitToGitRefOption.NEW_BRANCH && (!violation || (violation && bypassable)) && (\n <div className=\"ml-8 mt-3\">\n <Input\n id=\"newBranchName\"\n {...register('newBranchName', {\n onChange: handleNewBranchNameChange\n })}\n placeholder=\"New Branch Name\"\n error={errors.newBranchName?.message?.toString()}\n autoFocus\n inputIconName=\"branch\"\n />\n </div>\n )}\n </ControlGroup>\n </form>\n\n <Dialog.Footer>\n <ButtonGroup>\n <>\n <Button variant=\"outline\" onClick={onClose} disabled={isSubmitting}>\n Cancel\n </Button>\n {!bypassable ? (\n <Button type=\"button\" onClick={handleSubmit(onSubmit)} disabled={isDisabledSubmission}>\n {isSubmitting ? 'Committing...' : 'Commit changes'}\n </Button>\n ) : (\n <Button onClick={handleSubmit(onSubmit)} variant=\"destructive\" type=\"submit\">\n {commitToGitRefValue === CommitToGitRefOption.NEW_BRANCH\n ? 'Bypass rules and commit via new branch'\n : 'Bypass rules and commit directly'}\n </Button>\n )}\n </>\n </ButtonGroup>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n )\n}\n","export interface GitCommitFormType {\n message: string\n description?: string\n commitToGitRef: string\n newBranchName?: string\n fileName?: string\n}\n\nexport enum CommitToGitRefOption {\n DIRECTLY = 'directly',\n NEW_BRANCH = 'new-branch'\n}\n","import { FC } from 'react'\nimport { SubmitHandler, useForm } from 'react-hook-form'\n\nimport { Button, ButtonGroup, Dialog, Input, Textarea } from '@/components'\nimport { UsererrorError } from '@/types'\nimport { zodResolver } from '@hookform/resolvers/zod'\nimport { z } from 'zod'\n\nexport interface CommitSuggestionsFormType {\n message?: string\n title: string\n}\n\nconst commitSuggestionsSchema = z.object({\n message: z.string().optional(),\n title: z.string()\n})\n\nexport type CommitSuggestionsFormFields = z.infer<typeof commitSuggestionsSchema>\n\nexport interface CommitSuggestionsDialogProps {\n isOpen: boolean\n commitTitlePlaceHolder?: string\n // TODO: We need to decide how to display errors from the API.\n error?: UsererrorError\n onClose: () => void\n onFormSubmit: (formValues: CommitSuggestionsFormType) => Promise<void>\n isSubmitting: boolean\n}\n\nexport const CommitSuggestionsDialog: FC<CommitSuggestionsDialogProps> = ({\n isOpen,\n onClose,\n commitTitlePlaceHolder,\n onFormSubmit,\n isSubmitting\n}) => {\n const {\n register,\n handleSubmit,\n formState: { errors, isValid }\n } = useForm<CommitSuggestionsFormFields>({\n resolver: zodResolver(commitSuggestionsSchema),\n mode: 'onChange',\n defaultValues: {\n message: '',\n title: commitTitlePlaceHolder\n }\n })\n\n const isDisabledSubmission = isSubmitting || !isValid\n\n const onSubmit: SubmitHandler<CommitSuggestionsFormFields> = data => {\n if (isDisabledSubmission) return\n\n onFormSubmit(data as CommitSuggestionsFormType)\n }\n\n return (\n <Dialog.Root open={isOpen} onOpenChange={onClose}>\n <Dialog.Content className=\"max-w-[576px]\">\n <Dialog.Header>\n <Dialog.Title>Commit Changes</Dialog.Title>\n </Dialog.Header>\n\n <form className=\"flex flex-col gap-y-7 pb-4\" onSubmit={handleSubmit(onSubmit)}>\n <Input\n id=\"title\"\n label=\"Commit Message\"\n {...register('title')}\n placeholder={commitTitlePlaceHolder ?? 'Add a commit message'}\n size=\"md\"\n error={errors.title?.message?.toString()}\n />\n <Textarea\n id=\"message\"\n {...register('message')}\n placeholder=\"Add an optional extended description\"\n label=\"Extended description\"\n error={errors.message?.message?.toString()}\n />\n </form>\n\n <Dialog.Footer>\n <ButtonGroup>\n <>\n <Button variant=\"outline\" onClick={onClose} disabled={isSubmitting}>\n Cancel\n </Button>\n <Button type=\"button\" onClick={handleSubmit(onSubmit)} disabled={isDisabledSubmission}>\n {isSubmitting ? 'Committing...' : 'Commit changes'}\n </Button>\n </>\n </ButtonGroup>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n )\n}\n","import * as React from 'react'\n\nimport { cx } from 'class-variance-authority'\n\nfunction isElement(node: React.ReactNode): node is React.ReactElement {\n return (node as React.ReactElement).type !== undefined\n}\n\nconst Topbar = {\n Root: function Root({ children, className }: { children: React.ReactNode; className?: string }) {\n const hasCenter = React.Children.toArray(children).some(\n (child: React.ReactNode) => isElement(child) && child?.type === Topbar.Center\n )\n\n // Determine the grid layout based on the presence of Center\n const gridCols = hasCenter ? 'grid-cols-[auto_1fr_auto]' : 'grid-cols-[1fr_auto]'\n\n return (\n <div\n className={cx(\n `grid w-full ${gridCols} font-regular h-[55px] topbar-bottom-border items-center gap-6 px-5 text-sm`,\n className\n )}\n >\n {children}\n </div>\n )\n },\n\n Left: React.memo(function Header({ children }: { children: React.ReactNode }) {\n return <div className=\"order-1 flex items-center gap-3\">{children}</div>\n }),\n\n Center: React.memo(function Center({ children }: { children: React.ReactNode }) {\n return <div className=\"order-2 flex items-center justify-center\">{children}</div>\n }),\n\n Right: React.memo(function Header({ children }: { children: React.ReactNode }) {\n return <div className=\"order-3 flex items-center gap-3\">{children}</div>\n })\n}\n\nexport { Topbar }\n","import { FC, useRef } from 'react'\n\nimport { Button, DropdownMenu, Icon } from '@/components'\nimport { useRouterContext } from '@/context'\nimport { TranslationStore } from '@/views'\n\nexport interface FileAdditionsTriggerProps {\n useTranslationStore: () => TranslationStore\n pathNewFile: string\n pathUploadFiles: string\n}\n\nexport const FileAdditionsTrigger: FC<FileAdditionsTriggerProps> = ({\n useTranslationStore,\n pathNewFile,\n pathUploadFiles\n}) => {\n const { Link } = useRouterContext()\n const triggerRef = useRef<HTMLButtonElement>(null)\n const { t } = useTranslationStore()\n\n return (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild ref={triggerRef}>\n <Button className=\"relative overflow-hidden pl-4 pr-8\" variant=\"outline\">\n <span className=\"border-r pr-2.5\">{t('views:repos.create-new-file-no-plus', 'Create new file')}</span>\n <span className=\"absolute right-0 top-0 flex h-full w-8 items-center justify-center text-icons-7 transition-colors group-data-[state=open]:bg-background-3 group-data-[state=open]:text-icons-9\">\n <Icon name=\"chevron-down\" size={12} />\n </span>\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content className=\"min-w-[157px]\" align=\"end\">\n <DropdownMenu.Item>\n <Link className=\"relative grid grid-cols-[auto_1fr] items-center gap-1.5\" to={pathNewFile}>\n <Icon name=\"plus\" size={12} />\n <span className=\"truncate\">{t('views:repos.create-new-file-no-plus', 'Create new file')}</span>\n </Link>\n </DropdownMenu.Item>\n <DropdownMenu.Item>\n <Link className=\"relative grid grid-cols-[auto_1fr] items-center gap-1.5\" to={pathUploadFiles}>\n <Icon name=\"upload\" size={12} />\n <span className=\"truncate\">{t('views:repos.upload-files', 'Upload files')}</span>\n </Link>\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n )\n}\n","import { FC } from 'react'\n\nimport { Button, Dialog } from '@/components'\n\nexport interface ExitConfirmOptions {\n title?: string\n subtitle?: string\n confirmText?: string\n cancelText?: string\n onConfirm: () => void\n onCancel?: () => void\n}\n\nexport type ExitConfirmDialogProps = ExitConfirmOptions & { open: boolean }\n\nexport const ExitConfirmDialog: FC<ExitConfirmDialogProps> = ({\n open,\n onCancel,\n onConfirm,\n title = 'You have unsaved changes',\n subtitle = 'Are you sure you want to leave this page without saving?',\n confirmText = 'Leave',\n cancelText = 'Stay'\n}) => {\n return (\n <Dialog.Root\n open={open}\n onOpenChange={open => {\n if (!open) onCancel?.()\n }}\n >\n <Dialog.Content className=\"max-w-[500px]\">\n <Dialog.Header>\n <Dialog.Title>{title}</Dialog.Title>\n </Dialog.Header>\n <Dialog.Description>{subtitle}</Dialog.Description>\n <Dialog.Footer>\n <Button variant=\"outline\" onClick={() => onCancel?.()}>\n {cancelText}\n </Button>\n <Button onClick={onConfirm}>{confirmText}</Button>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n )\n}\n","import { ChangeEvent, FC, useState } from 'react'\n\nimport { AlertDialog, Button, Fieldset, Input } from '@/components'\nimport { TranslationStore } from '@/views'\n\nconst DELETION_KEYWORD = 'DELETE'\n\nexport interface DeleteAlertDialogProps {\n open: boolean\n onClose: () => void\n identifier?: string\n deleteFn: (id: string) => void\n type?: string\n isLoading?: boolean\n error?: { type?: string; message: string } | null\n useTranslationStore: () => TranslationStore\n withForm?: boolean\n}\n\nexport const DeleteAlertDialog: FC<DeleteAlertDialogProps> = ({\n open,\n onClose,\n identifier,\n deleteFn,\n type,\n isLoading = false,\n useTranslationStore,\n error,\n withForm = false\n}) => {\n const { t } = useTranslationStore()\n const [verification, setVerification] = useState('')\n\n const handleChangeVerification = (event: ChangeEvent<HTMLInputElement>) => {\n setVerification(event.target.value)\n }\n\n const isDisabled = isLoading || (withForm && verification !== DELETION_KEYWORD)\n\n const handleDelete = () => {\n if (isDisabled) return\n\n deleteFn(identifier!)\n }\n\n return (\n <AlertDialog.Root open={open} onOpenChange={onClose}>\n <AlertDialog.Content onOverlayClick={onClose} onClose={onClose}>\n <AlertDialog.Header>\n <AlertDialog.Title>{t('component:deleteDialog.title', 'Are you sure?')}</AlertDialog.Title>\n <AlertDialog.Description>\n {type\n ? t('component:deleteDialog.descriptionWithType', {\n defaultValue: `This will permanently delete your ${type} and remove all data. This action cannot be undone.`,\n type: type\n })\n : t(\n 'component:deleteDialog.description',\n `This will permanently remove all data. This action cannot be undone.`\n )}\n </AlertDialog.Description>\n </AlertDialog.Header>\n {withForm && (\n <Fieldset>\n <Input\n id=\"verification\"\n value={verification}\n placeholder=\"\"\n onChange={handleChangeVerification}\n label={`${t('component:deleteDialog.inputLabel', `To confirm, type`)} “${DELETION_KEYWORD}”`}\n disabled={isLoading}\n autoFocus\n />\n </Fieldset>\n )}\n\n {!!error && error.message && <p className=\"text-xs text-destructive\">{error.message}</p>}\n\n <AlertDialog.Footer>\n <Button variant=\"outline\" onClick={onClose} disabled={isLoading}>\n {t('component:deleteDialog.cancel', 'Cancel')}\n </Button>\n <Button variant=\"destructive\" disabled={isDisabled} onClick={handleDelete}>\n {isLoading ? `Deleting ${type}...` : `Yes, delete ${type}`}\n </Button>\n </AlertDialog.Footer>\n </AlertDialog.Content>\n </AlertDialog.Root>\n )\n}\n","import { CollapsedGroupNode } from './collapsed-group-node'\nimport Port from './custom-port'\n\nexport const PipelineNodesComponents = {\n Port,\n CollapsedGroupNode\n}\n","import { TabNav } from '@/components'\nimport { SandboxLayout, TranslationStore } from '@/views'\n\nexport enum RepoTabsKeys {\n SUMMARY = 'summary',\n CODE = 'code',\n PIPELINES = 'pipelines',\n COMMITS = 'commits',\n PULLS = 'pulls',\n BRANCHES = 'branches',\n SETTINGS = 'settings'\n}\n\nexport const repoTabsKeysArr = Object.values(RepoTabsKeys)\n\nexport const RepoSubheader = ({\n useTranslationStore,\n showPipelinesTab = true,\n className\n}: {\n useTranslationStore: () => TranslationStore\n showPipelinesTab?: boolean\n className?: string\n}) => {\n const { t } = useTranslationStore()\n\n return (\n <SandboxLayout.SubHeader className={className}>\n <TabNav.Root>\n <TabNav.Item to=\"summary\">{t('views:repos.summary', 'Summary')}</TabNav.Item>\n <TabNav.Item to=\"code\">{t('views:repos.files', 'Files')}</TabNav.Item>\n {showPipelinesTab && <TabNav.Item to=\"pipelines\">{t('views:repos.pipelines', 'Pipelines')}</TabNav.Item>}\n <TabNav.Item to=\"commits\">{t('views:repos.commits', 'Commits')}</TabNav.Item>\n <TabNav.Item to=\"tags\">{t('views:repos.tags', 'Tags')}</TabNav.Item>\n <TabNav.Item to=\"pulls\">{t('views:repos.pull-requests', 'Pull Requests')}</TabNav.Item>\n <TabNav.Item to=\"branches\">{t('views:repos.branches', 'Branches')}</TabNav.Item>\n <TabNav.Item to=\"settings\">{t('views:repos.settings', 'Settings')}</TabNav.Item>\n </TabNav.Root>\n </SandboxLayout.SubHeader>\n )\n}\n","// TODO: we should rethink the approach and stop using the @dnd-kit library\n\nimport { ChangeEvent, FC, memo, useCallback, useEffect, useMemo, useState } from 'react'\n\nimport { AlertDialog, Button, Icon, Input } from '@/components'\nimport { DndContext } from '@dnd-kit/core'\nimport { SortableContext, useSortable, verticalListSortingStrategy } from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\n\nimport useDragAndDrop from '../../hooks/use-drag-and-drop'\nimport { SavedView, ViewManagement } from './types'\n\n/**\n * Interface for the draggable view item component\n * @property view - The view object containing id, name, and other properties\n * @property id - Unique identifier for drag and drop functionality\n * @property onRename - Callback function for handling view rename\n * @property onDelete - Callback function for handling view deletion\n * @property existingNames - Set of existing view names for validation\n * @property validateViewNameChange - Function to validate view name changes\n */\ninterface SortableItemProps {\n view: SavedView\n id: string\n onRename: (id: string, newName: string) => void\n onDelete: (id: string) => void\n existingNames: Set<string>\n validateViewNameChange: ViewManagement['validateViewNameChange']\n}\n\n/**\n * SortableItem component represents a draggable view item with rename and delete capabilities\n * Implements drag and drop functionality using dnd-kit\n * Handles real-time name validation and error states\n */\nconst SortableItem = memo<SortableItemProps>(\n ({ view, id, onRename, onDelete, existingNames, validateViewNameChange }) => {\n const [name, setName] = useState(view.name.trim())\n const [hasError, setHasError] = useState(false)\n\n // Initialize drag and drop functionality\n const { attributes, listeners, setNodeRef, transform, transition } = useSortable({ id })\n\n /**\n * Handles input changes for view name\n * Validates the new name in real-time and updates error state\n * Propagates changes to parent component\n * @param e - Change event from input\n */\n const handleChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n const newName = e.target.value\n setName(newName)\n\n const validation = validateViewNameChange(newName, view.name, existingNames)\n setHasError(validation.hasError)\n\n // Always update parent to reflect current state\n onRename(view.id, newName)\n },\n [view.id, view.name, existingNames, onRename, validateViewNameChange]\n )\n\n return (\n <div\n ref={setNodeRef}\n style={{ transform: CSS.Transform.toString(transform), transition }}\n className=\"flex items-center gap-x-2 rounded p-2 hover:bg-background-4\"\n >\n <div className=\"group cursor-move\" {...attributes} {...listeners}>\n <Icon\n className=\"text-icons-4 transition-colors duration-200 group-hover:text-icons-2\"\n name=\"grid-dots\"\n size={14}\n />\n </div>\n\n <Input\n theme={hasError ? 'danger' : 'default'}\n value={name}\n size=\"md\"\n placeholder=\"Enter a name\"\n onChange={handleChange}\n />\n\n <button\n className=\"text-icons-4 hover:text-icons-danger\"\n onClick={() => onDelete(view.id)}\n aria-label=\"Delete view\"\n >\n <Icon className=\"rotate-45\" name=\"plus\" size={14} />\n </button>\n </div>\n )\n }\n)\n\nSortableItem.displayName = 'SortableItem'\n\n/**\n * Interface for the ManageViews component\n * @property open - Controls dialog visibility\n * @property onOpenChange - Callback for dialog open state changes\n * @property views - Array of saved views\n * @property viewManagement - Object containing view management methods\n */\ninterface ManageViewsProps {\n open: boolean\n onOpenChange: (open: boolean) => void\n views: SavedView[]\n viewManagement: Pick<\n ViewManagement,\n | 'setCurrentView'\n | 'updateViewsOrder'\n | 'prepareViewsForSave'\n | 'getExistingNames'\n | 'hasViewListChanges'\n | 'hasViewErrors'\n | 'validateViewNameChange'\n >\n}\n\n/**\n * ManageViews component provides interface for reordering, renaming and deleting saved views\n * Features:\n * - Drag and drop reordering\n * - Real-time name validation\n * - Local state management for changes\n * - Batch updates on save\n */\nconst ManageViews: FC<ManageViewsProps> = memo(({ open, onOpenChange, views, viewManagement }) => {\n const [localViews, setLocalViews] = useState<SavedView[]>([])\n\n /**\n * Syncs local state with props when dialog opens\n * Ensures fresh start for each editing session\n */\n useEffect(() => {\n if (open) setLocalViews(views)\n }, [open, views])\n\n /**\n * Memoized set of existing view names for validation\n * Updates when local views change\n */\n const existingNames = useMemo(() => viewManagement.getExistingNames(localViews), [localViews, viewManagement])\n\n /**\n * Handles local view rename operations\n * Updates only local state without persisting changes\n */\n const handleLocalRename = useCallback((viewId: string, newName: string) => {\n setLocalViews(prev => prev.map(view => (view.id === viewId ? { ...view, name: newName } : view)))\n }, [])\n\n /**\n * Handles local view deletion\n * Updates only local state without persisting changes\n */\n const handleLocalDelete = useCallback((viewId: string) => {\n setLocalViews(prev => prev.filter(v => v.id !== viewId))\n }, [])\n\n // Initialize drag and drop functionality\n const { handleDragEnd, getItemId } = useDragAndDrop({\n items: localViews,\n onReorder: setLocalViews\n })\n\n /**\n * Determines if save button should be disabled\n * Checks for changes and validation errors\n */\n const isSaveDisabled =\n !viewManagement.hasViewListChanges(localViews, views) || viewManagement.hasViewErrors(localViews)\n\n return (\n <AlertDialog.Root open={open} onOpenChange={onOpenChange}>\n <AlertDialog.Content className=\"max-w-[410px]\">\n <AlertDialog.Header>\n <AlertDialog.Title>Manage saved filters</AlertDialog.Title>\n </AlertDialog.Header>\n\n <div className=\"-mx-3.5 max-h-[320px] space-y-0.5 overflow-y-auto\">\n <DndContext onDragEnd={handleDragEnd}>\n <SortableContext\n items={localViews.map((_, index) => getItemId(index))}\n strategy={verticalListSortingStrategy}\n >\n {localViews.map((view, index) => (\n <SortableItem\n key={`${getItemId(index)}-${view.id}`}\n id={getItemId(index)}\n view={view}\n onRename={handleLocalRename}\n onDelete={handleLocalDelete}\n existingNames={existingNames}\n validateViewNameChange={viewManagement.validateViewNameChange}\n />\n ))}\n </SortableContext>\n </DndContext>\n </div>\n\n <AlertDialog.Footer>\n <Button\n variant=\"outline\"\n onClick={() => {\n setLocalViews(views)\n onOpenChange(false)\n }}\n >\n Cancel\n </Button>\n <Button\n onClick={() => {\n // Update views order first\n viewManagement.updateViewsOrder(viewManagement.prepareViewsForSave(localViews))\n\n // If all views were deleted, reset current view\n if (localViews.length === 0) {\n viewManagement.setCurrentView(null)\n }\n\n onOpenChange(false)\n }}\n disabled={isSaveDisabled}\n >\n Save\n </Button>\n </AlertDialog.Footer>\n </AlertDialog.Content>\n </AlertDialog.Root>\n )\n})\n\nManageViews.displayName = 'ManageViews'\n\nexport default ManageViews\n","import { FC, useState } from 'react'\n\nimport { DropdownMenu, Icon } from '@/components'\n\nimport { SavedView, ViewLayoutOption } from '../types'\n\ninterface ViewTriggerProps {\n savedViews: SavedView[]\n currentView: SavedView | null\n layoutOptions?: ViewLayoutOption[]\n currentLayout?: string\n onLayoutChange?: (layout: string) => void\n onManageClick: () => void\n onViewSelect: (view: SavedView) => void\n}\n\nconst ViewTrigger: FC<ViewTriggerProps> = ({\n savedViews,\n currentView,\n layoutOptions,\n currentLayout,\n onLayoutChange,\n onManageClick,\n onViewSelect\n}) => {\n const [isOpen, setIsOpen] = useState(false)\n\n const handleManageClick = () => {\n setIsOpen(false)\n onManageClick()\n }\n\n return (\n <DropdownMenu.Root open={isOpen} onOpenChange={setIsOpen}>\n <DropdownMenu.Trigger className=\"flex items-center gap-x-1.5\">\n <span className=\"flex items-center gap-x-1 text-14 text-foreground-2 hover:text-foreground-1\">\n View\n <Icon className=\"chevron-down text-icons-4\" name=\"chevron-fill-down\" size={6} />\n </span>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content className=\"max-h-[358px] w-56 overflow-y-auto\" align=\"end\">\n {!!layoutOptions?.length && (\n <>\n <div className=\"px-2 py-2.5\">\n <span className=\"text-13 leading-none text-foreground-7\">Layout</span>\n </div>\n {layoutOptions.map(option => (\n <DropdownMenu.Item key={option.value} onSelect={() => onLayoutChange?.(option.value)} className=\"gap-x-2\">\n <span>{option.label}</span>\n {currentLayout === option.value && <Icon name=\"tick\" size={12} className=\"ml-auto text-foreground-8\" />}\n </DropdownMenu.Item>\n ))}\n </>\n )}\n\n {savedViews.length > 0 && (\n <>\n {!!layoutOptions?.length && <DropdownMenu.Separator />}\n <div className=\"px-2 py-1.5\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-13 leading-none text-foreground-7\">Saved views</span>\n <button\n className=\"text-13 text-foreground-accent transition-colors duration-200 hover:text-foreground-1\"\n onClick={handleManageClick}\n >\n Manage\n </button>\n </div>\n </div>\n {savedViews.map(view => (\n <DropdownMenu.Item key={view.id} className=\"gap-x-2\" onSelect={() => onViewSelect(view)}>\n <span>{view.name}</span>\n {currentView?.id === view.id && <Icon name=\"tick\" size={12} className=\"ml-auto text-foreground-8\" />}\n </DropdownMenu.Item>\n ))}\n </>\n )}\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n )\n}\n\nexport default ViewTrigger\n","import { useState } from 'react'\n\nimport { TFunction } from 'i18next'\n\nimport ManageViews from './manage-views'\nimport FilterTrigger from './triggers/filter-trigger'\nimport ViewTrigger from './triggers/view-trigger'\nimport { FilterHandlers, FilterOption, SortOption, ViewLayoutOption, ViewManagement } from './types'\n\ninterface FiltersProps {\n showFilter?: boolean\n showSort?: boolean\n filterOptions: FilterOption[]\n sortOptions: SortOption[]\n filterHandlers: Pick<\n FilterHandlers,\n | 'activeFilters'\n | 'activeSorts'\n | 'handleFilterChange'\n | 'handleResetFilters'\n | 'searchQueries'\n | 'handleSearchChange'\n | 'handleSortChange'\n | 'handleResetSorts'\n >\n /**\n * Optional view management configuration.\n * If provided, enables saving and managing filter views\n */\n viewManagement?: Pick<\n ViewManagement,\n | 'savedViews'\n | 'currentView'\n | 'hasActiveViewChanges'\n | 'checkNameExists'\n | 'validateViewName'\n | 'hasViewErrors'\n | 'hasViewListChanges'\n | 'applyView'\n | 'setCurrentView'\n | 'updateViewsOrder'\n | 'prepareViewsForSave'\n | 'getExistingNames'\n | 'validateViewNameChange'\n >\n layoutOptions?: ViewLayoutOption[]\n currentLayout?: string\n onLayoutChange?: (layout: string) => void\n t: TFunction\n}\n\n/**\n * Filters component for handling filtering, sorting, and view management\n * @example\n * ```tsx\n * <Filters\n * filterOptions={[\n * { id: 'status', label: 'Status', options: ['Active', 'Inactive'] },\n * { id: 'type', label: 'Type', options: ['Public', 'Private'] }\n * ]}\n * sortOptions={[\n * { id: 'name', label: 'Name' },\n * { id: 'date', label: 'Date' }\n * ]}\n * filterHandlers={filterHandlers}\n * // Optional: Enable view management\n * viewManagement={viewManagement}\n * t={t}\n * />\n * ```\n */\nconst Filters = ({\n showFilter = true,\n showSort = true,\n filterOptions,\n sortOptions,\n filterHandlers: {\n activeFilters,\n activeSorts,\n handleFilterChange,\n handleResetFilters,\n searchQueries,\n handleSearchChange,\n handleSortChange,\n handleResetSorts\n },\n viewManagement,\n layoutOptions,\n currentLayout,\n onLayoutChange,\n t\n}: FiltersProps) => {\n const [isManageDialogOpen, setIsManageDialogOpen] = useState(false)\n\n return (\n <>\n <div className=\"flex items-center gap-x-5\">\n {showFilter && (\n <FilterTrigger\n type=\"filter\"\n activeFilters={activeFilters}\n onChange={handleFilterChange}\n onReset={handleResetFilters}\n searchQueries={searchQueries}\n onSearchChange={handleSearchChange}\n options={filterOptions}\n t={t}\n />\n )}\n\n {showSort && (\n <FilterTrigger\n type=\"sort\"\n activeFilters={activeSorts}\n onChange={handleSortChange}\n onReset={handleResetSorts}\n searchQueries={searchQueries}\n onSearchChange={handleSearchChange}\n options={sortOptions}\n t={t}\n />\n )}\n\n {viewManagement && (!!viewManagement.savedViews.length || !!layoutOptions?.length) && (\n <ViewTrigger\n savedViews={viewManagement.savedViews}\n currentView={viewManagement.currentView}\n layoutOptions={layoutOptions}\n currentLayout={currentLayout}\n onLayoutChange={onLayoutChange ?? (() => {})}\n onManageClick={() => setIsManageDialogOpen(true)}\n onViewSelect={viewManagement.applyView}\n />\n )}\n </div>\n\n {viewManagement && (\n <ManageViews\n open={isManageDialogOpen}\n onOpenChange={setIsManageDialogOpen}\n views={viewManagement.savedViews}\n viewManagement={viewManagement}\n />\n )}\n </>\n )\n}\n\nexport default Filters\n","import { useState } from 'react'\n\nimport { Input, Calendar as UICalendar, type CalendarDateRange } from '@/components'\nimport { cn } from '@utils/cn'\n\nimport { FilterHandlers, FilterValue } from '../../../types'\n\ninterface CalendarProps {\n filter: FilterValue\n onUpdateFilter: FilterHandlers['handleUpdateFilter']\n}\n\ninterface DateInputState {\n value: string\n isError: boolean\n}\n\ninterface ParsedDateResult {\n date: Date | null\n formattedValue: string\n}\n\ninterface RangeState {\n from: DateInputState\n to: DateInputState\n month: Date\n range: CalendarDateRange | undefined\n}\n\ninterface SingleState {\n input: DateInputState\n date: Date | undefined\n month: Date\n}\n\n/**\n * Formats a date for display in the input field using MM.DD.YYYY format\n */\nconst formatDateForInput = (date: Date | undefined): string => {\n if (!date) return ''\n const month = (date.getMonth() + 1).toString().padStart(2, '0')\n const day = date.getDate().toString().padStart(2, '0')\n const year = date.getFullYear()\n return `${month}.${day}.${year}`\n}\n\n/**\n * Parses a date string in various formats and returns a Date object with formatted value\n * Supported formats:\n * - MM.DD.YY -> automatically converts to MM.DD.YYYY\n * - MM.DD.YYYY\n * - MM/DD/YY -> automatically converts to MM/DD/YYYY\n * - MM/DD/YYYY\n */\nconst parseDateString = (dateStr: string): ParsedDateResult => {\n try {\n dateStr = dateStr.trim()\n\n // Check format for both two-digit and four-digit years\n const dateRegex = /^(0?[1-9]|1[0-2])[./](0?[1-9]|[12]\\d|3[01])[./](\\d{2}|\\d{4})$/\n if (!dateRegex.test(dateStr)) {\n return { date: null, formattedValue: dateStr }\n }\n\n const separators = /[./]/\n const parts = dateStr.split(separators)\n const separator = dateStr.includes('.') ? '.' : '/'\n\n if (parts.length !== 3) {\n return { date: null, formattedValue: dateStr }\n }\n\n const month = parseInt(parts[0])\n const day = parseInt(parts[1])\n let year = parseInt(parts[2])\n\n // Convert two-digit year to four-digit\n if (parts[2].length === 2) {\n year = 2000 + year\n }\n\n // Validate date values\n if (\n isNaN(day) ||\n isNaN(month) ||\n isNaN(year) ||\n day < 1 ||\n day > 31 ||\n month < 1 ||\n month > 12 ||\n year < 1900 ||\n year > 2100\n ) {\n return { date: null, formattedValue: dateStr }\n }\n\n // Validate date existence\n const date = new Date(year, month - 1, day)\n if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {\n return { date: null, formattedValue: dateStr }\n }\n\n // Format value with leading zeros\n const formattedMonth = month.toString().padStart(2, '0')\n const formattedDay = day.toString().padStart(2, '0')\n const formattedValue = `${formattedMonth}${separator}${formattedDay}${separator}${year}`\n\n return { date, formattedValue }\n } catch (error) {\n console.error('Error parsing date:', error)\n return { date: null, formattedValue: dateStr }\n }\n}\n\nconst Calendar = ({ filter, onUpdateFilter }: CalendarProps) => {\n // Initialize states based on filter mode\n const isBetweenMode = filter.condition === 'is_between'\n const initialDate = filter.selectedValues[0] ? new Date(filter.selectedValues[0]) : new Date()\n\n // State for range mode\n const [rangeState, setRangeState] = useState<RangeState>({\n from: {\n value: filter.selectedValues[0] ? formatDateForInput(new Date(filter.selectedValues[0])) : '',\n isError: false\n },\n to: {\n value: filter.selectedValues[1] ? formatDateForInput(new Date(filter.selectedValues[1])) : '',\n isError: false\n },\n month: initialDate,\n range:\n filter.selectedValues.length === 2\n ? {\n from: new Date(filter.selectedValues[0]),\n to: new Date(filter.selectedValues[1])\n }\n : undefined\n })\n\n // State for single mode\n const [singleState, setSingleState] = useState<SingleState>({\n input: {\n value: filter.selectedValues[0] ? formatDateForInput(new Date(filter.selectedValues[0])) : '',\n isError: false\n },\n date: filter.selectedValues[0] ? new Date(filter.selectedValues[0]) : undefined,\n month: initialDate\n })\n\n /**\n * Handles date input changes and resets error state\n */\n const handleDateInput = (value: string, type?: 'from' | 'to') => {\n if (isBetweenMode) {\n setRangeState(prev => ({\n ...prev,\n [type === 'from' ? 'from' : 'to']: { value, isError: false }\n }))\n } else {\n setSingleState(prev => ({\n ...prev,\n input: { value, isError: false }\n }))\n }\n }\n\n /**\n * Handles date confirmation on Enter or blur\n */\n const handleDateConfirm = (value: string, type?: 'from' | 'to') => {\n // If value is empty, don't show error\n if (!value.trim()) {\n if (isBetweenMode) {\n setRangeState(prev => ({\n ...prev,\n [type === 'from' ? 'from' : 'to']: { value: '', isError: false }\n }))\n } else {\n setSingleState(prev => ({\n ...prev,\n input: { value: '', isError: false }\n }))\n }\n return\n }\n\n const { date: parsedDate, formattedValue } = parseDateString(value)\n\n if (isBetweenMode) {\n handleRangeDateConfirm(parsedDate, formattedValue, type as 'from' | 'to')\n } else {\n handleSingleDateConfirm(parsedDate, formattedValue)\n }\n }\n\n /**\n * Handles date confirmation for range mode\n */\n const handleRangeDateConfirm = (parsedDate: Date | null, formattedValue: string, type: 'from' | 'to') => {\n setRangeState(prev => {\n const newState = {\n ...prev,\n [type]: {\n value: formattedValue,\n // Show error only if value is not empty and incorrect\n isError: formattedValue.trim() !== '' && !parsedDate\n }\n }\n\n if (parsedDate) {\n newState.month = parsedDate\n newState.range = {\n ...prev.range,\n [type]: parsedDate\n } as CalendarDateRange\n } else {\n newState.range = {\n ...prev.range,\n [type]: undefined\n } as CalendarDateRange\n }\n\n return newState\n })\n\n // Update filter\n if (parsedDate) {\n const newRange =\n type === 'from'\n ? { from: parsedDate, to: rangeState.range?.to }\n : { from: rangeState.range?.from, to: parsedDate }\n\n if (newRange.from && newRange.to) {\n onUpdateFilter(filter.type, [newRange.from.toISOString(), newRange.to.toISOString()])\n } else if (newRange.from) {\n onUpdateFilter(filter.type, [newRange.from.toISOString()])\n } else if (newRange.to) {\n onUpdateFilter(filter.type, [newRange.to.toISOString()])\n }\n }\n }\n\n /**\n * Handles date confirmation for single mode\n */\n const handleSingleDateConfirm = (parsedDate: Date | null, formattedValue: string) => {\n setSingleState(prev => ({\n ...prev,\n input: {\n value: formattedValue,\n // Show error only if value is not empty and incorrect\n isError: formattedValue.trim() !== '' && !parsedDate\n },\n date: parsedDate || undefined,\n month: parsedDate || prev.month\n }))\n\n if (parsedDate) {\n onUpdateFilter(filter.type, [parsedDate.toISOString()])\n } else {\n onUpdateFilter(filter.type, [])\n }\n }\n\n /**\n * Handles keyboard events\n */\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>, type?: 'from' | 'to') => {\n if (e.key === 'Enter') {\n const value = isBetweenMode\n ? type === 'from'\n ? rangeState.from.value\n : rangeState.to.value\n : singleState.input.value\n handleDateConfirm(value, type)\n }\n }\n\n if (isBetweenMode) {\n return (\n <div className=\"flex flex-col\">\n <div className=\"grid max-w-[240px] grid-cols-2 items-center gap-x-2 px-3\">\n <Input\n type=\"text\"\n className={cn({\n 'border-borders-danger focus:border-borders-danger': rangeState.from.isError\n })}\n value={rangeState.from.value}\n onChange={e => handleDateInput(e.target.value, 'from')}\n onBlur={e => handleDateConfirm(e.target.value, 'from')}\n onKeyDown={e => handleKeyDown(e, 'from')}\n placeholder=\"Starting\"\n />\n\n <Input\n type=\"text\"\n className={cn({\n 'border-borders-danger focus:border-borders-danger': rangeState.to.isError\n })}\n value={rangeState.to.value}\n onChange={e => handleDateInput(e.target.value, 'to')}\n onBlur={e => handleDateConfirm(e.target.value, 'to')}\n onKeyDown={e => handleKeyDown(e, 'to')}\n placeholder=\"Ending\"\n />\n </div>\n <div className=\"mt-2.5 px-2 pb-3 pt-1\">\n <UICalendar\n className=\"p-0\"\n mode=\"range\"\n selected={rangeState.range}\n month={rangeState.month}\n onMonthChange={month => setRangeState(prev => ({ ...prev, month }))}\n onSelect={(value: CalendarDateRange | undefined) => {\n if (value) {\n setRangeState(prev => ({\n ...prev,\n range: value,\n from: { value: formatDateForInput(value.from), isError: false },\n to: { value: formatDateForInput(value.to), isError: false },\n month: value.from || prev.month\n }))\n\n if (value.from && value.to) {\n onUpdateFilter(filter.type, [value.from.toISOString(), value.to.toISOString()])\n }\n }\n }}\n initialFocus\n />\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"flex flex-col gap-2\">\n <div className=\"px-3\">\n <Input\n type=\"text\"\n className={cn({\n 'border-borders-danger focus:border-borders-danger': singleState.input.isError\n })}\n value={singleState.input.value}\n onChange={e => handleDateInput(e.target.value)}\n onBlur={e => handleDateConfirm(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder=\"Select or type a date...\"\n />\n </div>\n <div className=\"mt-2.5 px-2 pb-3 pt-1\">\n <UICalendar\n className=\"p-0\"\n mode=\"single\"\n selected={singleState.date}\n month={singleState.month}\n onMonthChange={month => setSingleState(prev => ({ ...prev, month }))}\n onSelect={(value: Date | undefined) => {\n if (value) {\n setSingleState(prev => ({\n ...prev,\n date: value,\n month: value\n }))\n onUpdateFilter(filter.type, [value.toISOString()])\n }\n }}\n initialFocus\n />\n </div>\n </div>\n )\n}\n\nexport default Calendar\n","import { DropdownMenu, Icon, Input } from '@/components'\n\nimport { CheckboxFilterOption, FilterHandlers, FilterValue } from '../../../types'\nimport { getFilteredOptions } from '../../../utils'\n\ninterface CheckboxFilterProps {\n filter: FilterValue\n filterOption: CheckboxFilterOption\n onUpdateFilter: FilterHandlers['handleUpdateFilter']\n searchQueries: FilterHandlers['searchQueries']\n handleSearchChange: FilterHandlers['handleSearchChange']\n}\n\nconst Checkbox = ({ filter, filterOption, onUpdateFilter, searchQueries, handleSearchChange }: CheckboxFilterProps) => {\n const filteredOptions = getFilteredOptions(filterOption, filter, searchQueries)\n\n return (\n <>\n {filter.condition !== 'is_empty' && (\n <div className=\"border-b border-borders-1 px-3 pb-2.5\">\n <div className=\"flex min-h-8 justify-between gap-x-1 rounded border border-borders-2 px-1 py-[3px] outline-none transition-colors duration-200 focus-within:border focus-within:border-borders-3\">\n <div className=\"flex flex-1 flex-wrap items-center gap-1\">\n {!!filter.selectedValues.length &&\n filter.selectedValues.map(value => {\n const label = filterOption.options?.find(opt => opt.value === value)?.label\n return (\n <div className=\"flex h-6 items-center gap-x-1.5 rounded bg-background-8 px-2\" key={value}>\n <span className=\"text-14 text-foreground-8\">{label}</span>\n <button\n className=\"text-icons-1 transition-colors duration-200 hover:text-foreground-1\"\n onClick={() => {\n const newValues = filter.selectedValues.filter(v => v !== value)\n onUpdateFilter(filter.type, newValues)\n }}\n >\n <Icon className=\"rotate-45\" name=\"plus\" size={10} />\n </button>\n </div>\n )\n })}\n\n <Input\n className=\"h-6 flex-1 border-none outline-none hover:border-none focus:border-none focus-visible:ring-0\"\n type=\"text\"\n placeholder={filter.selectedValues.length ? '' : 'Select one or more options...'}\n value={searchQueries.filters[filter.type] || ''}\n onChange={e => handleSearchChange?.(filter.type, e.target.value, 'filters')}\n onClick={e => {\n e.preventDefault()\n }}\n onKeyDown={e => e.stopPropagation()}\n />\n </div>\n {(!!filter.selectedValues.length || searchQueries.filters[filter.type]) && (\n <button\n className=\"flex p-1.5 text-foreground-4 transition-colors duration-200 hover:text-foreground-1\"\n onClick={() => {\n onUpdateFilter(filter.type, [])\n handleSearchChange?.(filter.type, '', 'filters')\n }}\n aria-label=\"Clear filter\"\n >\n <Icon className=\"rotate-45\" name=\"plus\" size={12} />\n </button>\n )}\n </div>\n </div>\n )}\n\n {!!filteredOptions.length && (\n <div className=\"px-2 py-1\">\n {filteredOptions.map(option => (\n <DropdownMenu.CheckboxItem\n className=\"pl-[34px]\"\n checked={filter.selectedValues.includes(option.value)}\n onSelect={event => {\n event?.preventDefault()\n event?.stopPropagation()\n const newValues = filter.selectedValues.includes(option.value)\n ? filter.selectedValues.filter(v => v !== option.value)\n : [...filter.selectedValues, option.value]\n onUpdateFilter(filter.type, newValues)\n }}\n key={option.value}\n >\n {option.label}\n </DropdownMenu.CheckboxItem>\n ))}\n </div>\n )}\n </>\n )\n}\n\nexport default Checkbox\n","import { useState } from 'react'\n\nimport { Icon, Input } from '@/components'\n\nimport { FilterHandlers, FilterValue } from '../../../types'\n\ninterface NumberFilterProps {\n filter: FilterValue\n onUpdateFilter: FilterHandlers['handleUpdateFilter']\n}\n\nconst Number = ({ filter, onUpdateFilter }: NumberFilterProps) => {\n const [value, setValue] = useState<string>(filter.selectedValues[0] || '')\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value\n\n if (!/^\\d*\\.?\\d*$/.test(newValue) && newValue !== '') {\n return\n }\n\n setValue(newValue)\n\n if (filter.condition === 'is_empty' || filter.condition === 'is_not_empty') {\n onUpdateFilter(filter.type, [])\n return\n }\n\n if (!newValue) {\n onUpdateFilter(filter.type, [])\n return\n }\n\n onUpdateFilter(filter.type, [newValue])\n }\n\n const handleClear = () => {\n setValue('')\n onUpdateFilter(filter.type, [])\n }\n\n if (filter.condition === 'is_empty' || filter.condition === 'is_not_empty') {\n return null\n }\n\n return (\n <div className=\"relative flex items-center px-2 pb-2.5\">\n <Input\n className=\"w-full\"\n type=\"text\"\n value={value}\n placeholder=\"Type a value...\"\n onChange={handleInputChange}\n onClick={e => {\n e.stopPropagation()\n e.preventDefault()\n }}\n />\n\n {value && (\n <button\n className=\"absolute right-3 text-icons-1 transition-colors duration-200 hover:text-foreground-1\"\n onClick={e => {\n e.stopPropagation()\n handleClear()\n }}\n aria-label=\"Clear filter\"\n >\n <Icon className=\"rotate-45\" name=\"plus\" size={10} />\n </button>\n )}\n </div>\n )\n}\n\nexport default Number\n","import { useState } from 'react'\n\nimport { DropdownMenu, Icon, Input } from '@/components'\n\nimport { FilterHandlers, FilterValue } from '../../../types'\n\ninterface TextFilterProps {\n filter: FilterValue\n onUpdateFilter: FilterHandlers['handleUpdateFilter']\n}\n\nconst Text = ({ filter, onUpdateFilter }: TextFilterProps) => {\n const [value, setValue] = useState<string>(filter.selectedValues[0] || '')\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value\n setValue(newValue)\n\n if (filter.condition === 'is_empty' || filter.condition === 'is_not_empty') {\n onUpdateFilter(filter.type, [])\n return\n }\n\n if (!newValue) {\n onUpdateFilter(filter.type, [])\n return\n }\n\n onUpdateFilter(filter.type, [newValue])\n }\n\n const handleClear = () => {\n setValue('')\n onUpdateFilter(filter.type, [])\n }\n\n if (filter.condition === 'is_empty' || filter.condition === 'is_not_empty') {\n return null\n }\n\n return (\n <div className=\"flex items-center px-2 pb-2.5\">\n <DropdownMenu.Item className=\"relative w-full p-0\">\n <Input\n className=\"w-full\"\n value={value}\n placeholder=\"Type a value...\"\n onChange={handleInputChange}\n onClick={e => {\n e.stopPropagation()\n e.preventDefault()\n }}\n />\n\n {value && (\n <button\n className=\"absolute right-3 text-icons-1 transition-colors duration-200 hover:text-foreground-1\"\n onClick={e => {\n e.stopPropagation()\n handleClear()\n }}\n aria-label=\"Clear filter\"\n >\n <Icon className=\"rotate-45\" name=\"plus\" size={10} />\n </button>\n )}\n </DropdownMenu.Item>\n </div>\n )\n}\n\nexport default Text\n","import { useEffect, useState } from 'react'\n\nimport { DropdownMenu, Icon } from '@/components'\nimport { cn } from '@utils/cn'\n\nimport type {\n CheckboxFilterOption,\n FilterAction,\n FilterHandlers,\n FilterOption,\n FilterSearchQueries,\n FilterValue\n} from '../../types'\nimport { getFilterDisplayValue, getFilteredOptions } from '../../utils'\nimport Calendar from './variants/calendar'\nimport Checkbox from './variants/checkbox'\nimport Number from './variants/number'\nimport Text from './variants/text'\n\nconst renderFilterValues = (\n filter: FilterValue,\n filterOption: FilterOption,\n onUpdateFilter: FilterHandlers['handleUpdateFilter'],\n searchQueries: FilterSearchQueries,\n handleSearchChange: FilterHandlers['handleSearchChange'],\n filteredOptions?: CheckboxFilterOption['options']\n) => {\n if (!onUpdateFilter) return null\n\n switch (filterOption.type) {\n case 'checkbox':\n return (\n <Checkbox\n filter={filter}\n filterOption={{\n ...filterOption,\n options: filteredOptions || (filterOption as CheckboxFilterOption).options\n }}\n onUpdateFilter={onUpdateFilter}\n searchQueries={searchQueries}\n handleSearchChange={handleSearchChange}\n />\n )\n case 'calendar':\n return <Calendar filter={filter} onUpdateFilter={onUpdateFilter} />\n case 'text':\n return <Text filter={filter} onUpdateFilter={onUpdateFilter} />\n case 'number':\n return <Number filter={filter} onUpdateFilter={onUpdateFilter} />\n default:\n return null\n }\n}\n\ninterface FiltersProps {\n filter: FilterValue\n filterOptions: FilterOption[]\n handleUpdateFilter: FilterHandlers['handleUpdateFilter']\n handleRemoveFilter: FilterHandlers['handleRemoveFilter']\n handleUpdateCondition: FilterHandlers['handleUpdateCondition']\n handleSearchChange: FilterHandlers['handleSearchChange']\n searchQueries: FilterSearchQueries\n filterToOpen: FilterAction | null\n onOpen?: () => void\n}\n\nconst Filters = ({\n filter,\n filterOptions,\n handleUpdateFilter,\n handleUpdateCondition,\n handleRemoveFilter,\n handleSearchChange,\n searchQueries,\n filterToOpen,\n onOpen\n}: FiltersProps) => {\n const [isOpen, setIsOpen] = useState(false)\n\n useEffect(() => {\n if (filterToOpen?.type === filter.type && filterToOpen?.kind === 'filter' && !isOpen) {\n setIsOpen(true)\n onOpen?.()\n }\n }, [filterToOpen, filter.type, isOpen, onOpen])\n\n const filterOption = filterOptions.find(opt => opt.value === filter.type)\n if (!filterOption) return null\n\n return (\n <DropdownMenu.Root key={filter.type} open={isOpen} onOpenChange={setIsOpen}>\n <DropdownMenu.Trigger className=\"flex h-8 items-center gap-x-3 whitespace-nowrap rounded bg-background-3 pl-2.5 pr-2 transition-colors duration-200 hover:bg-background-8\">\n <div className=\"flex items-center gap-x-1.5 text-13\">\n <span className=\"text-foreground-1\">\n {filterOption.label}\n {!!filter.selectedValues.length && ': '}\n </span>\n <span className=\"text-foreground-4\">{getFilterDisplayValue(filterOption, filter)}</span>\n </div>\n <Icon className=\"chevron-down text-icons-1\" name=\"chevron-down\" size={10} />\n </DropdownMenu.Trigger>\n\n <DropdownMenu.Content\n className={cn('w-[276px] p-0', {\n 'w-max': filterOption.type === 'calendar'\n })}\n align=\"start\"\n >\n <div className=\"flex items-center justify-between px-3 py-2.5\">\n <div className=\"flex w-full items-center justify-between gap-x-2\">\n <div className=\"flex items-center gap-x-2\">\n <span className=\"text-14 text-foreground-4\">{filterOption.label}</span>\n\n <DropdownMenu.Root>\n <DropdownMenu.Trigger className=\"flex h-[18px] items-center gap-x-1 rounded bg-background-3 pl-1.5 pr-1 text-14 text-foreground-2\">\n {filterOption.conditions?.find(c => c.value === filter.condition)?.label}\n <Icon className=\"chevron-down text-icons-1\" name=\"chevron-down\" size={10} />\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"start\">\n {filterOption.conditions?.map(condition => (\n <DropdownMenu.Item\n onSelect={() => handleUpdateCondition?.(filter.type, condition.value)}\n key={condition.value}\n >\n {condition.label}\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n </div>\n\n <DropdownMenu.Root>\n <DropdownMenu.Trigger className=\"group flex h-[18px] items-center px-1\">\n <Icon\n className=\"text-icons-1 transition-colors duration-200 group-hover:text-foreground-1\"\n name=\"more-dots-fill\"\n size={12}\n />\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"start\">\n <DropdownMenu.Item\n className=\"text-foreground-4 duration-200 hover:text-foreground-danger data-[highlighted]:bg-transparent data-[highlighted]:text-foreground-danger data-[highlighted]:outline-none\"\n onSelect={() => handleRemoveFilter?.(filter.type)}\n >\n <button className=\"flex items-center gap-x-1.5 text-14\">\n <Icon name=\"trash\" size={12} />\n Delete filter\n </button>\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n </div>\n </div>\n\n <div>\n {filter.condition !== 'is_empty' &&\n renderFilterValues(filter, filterOption, handleUpdateFilter, searchQueries, handleSearchChange)}\n\n {filterOption.type === 'checkbox' && getFilteredOptions(filterOption, filter, searchQueries).length === 0 && (\n <div className=\"flex items-center justify-center p-4\">\n <span className=\"text-1 leading-none text-foreground-2\">No results</span>\n </div>\n )}\n </div>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n )\n}\n\nexport default Filters\n","import { FC, useEffect, useState } from 'react'\n\nimport { AlertDialog, Button, DropdownMenu, Icon, Input } from '@/components'\n\nimport { FilterValue, SavedView, SortValue, ViewManagement } from '../../types'\n\n/**\n * Views component handles the management of filter views including creation, updating, renaming and deletion.\n * It provides UI for saving current filter/sort configurations as named views and managing existing ones.\n */\ninterface ViewsProps {\n currentView: SavedView | null\n savedViews: SavedView[]\n viewManagement: Pick<ViewManagement, 'checkNameExists' | 'saveView' | 'updateView' | 'deleteView' | 'renameView'> & {\n activeFilters: FilterValue[]\n activeSorts: SortValue[]\n }\n hasChanges: boolean\n}\n\nconst Views: FC<ViewsProps> = ({ currentView, viewManagement, hasChanges }) => {\n /**\n * Dialog states for creating new view and renaming existing one\n */\n const [isNewViewDialogOpen, setIsNewViewDialogOpen] = useState(false)\n const [isRenameDialogOpen, setIsRenameDialogOpen] = useState(false)\n const [newViewName, setNewViewName] = useState('')\n const [nameError, setNameError] = useState('')\n\n /**\n * Effect handles real-time validation of view names\n * - For new views: checks if name already exists\n * - For renaming: checks if new name exists excluding current view\n * - Skips validation for empty names (handled by button disable state)\n */\n useEffect(() => {\n const trimmedName = newViewName.trim()\n\n if (!trimmedName) {\n setNameError('')\n return\n }\n\n if (isRenameDialogOpen && currentView) {\n if (trimmedName === currentView.name) {\n setNameError('')\n return\n }\n\n if (viewManagement.checkNameExists(trimmedName, currentView.id)) {\n setNameError('A view with this name already exists')\n } else {\n setNameError('')\n }\n } else {\n if (viewManagement.checkNameExists(trimmedName)) {\n setNameError('A view with this name already exists')\n } else {\n setNameError('')\n }\n }\n }, [newViewName, currentView, isRenameDialogOpen, viewManagement])\n\n /**\n * Resets error state when dialogs are opened/closed\n * to ensure clean state for next interaction\n */\n useEffect(() => {\n setNameError('')\n }, [isNewViewDialogOpen, isRenameDialogOpen])\n\n /**\n * Handles saving a new view with current filters and sorts\n * Validates name existence before saving\n * Closes dialog and resets form state after successful save\n */\n const handleSaveNewView = () => {\n const trimmedName = newViewName.trim()\n if (viewManagement.checkNameExists(trimmedName)) return\n\n viewManagement.saveView(trimmedName, viewManagement.activeFilters, viewManagement.activeSorts)\n setNewViewName('')\n setNameError('')\n setIsNewViewDialogOpen(false)\n }\n\n /**\n * Handles renaming an existing view\n * Validates new name doesn't conflict with other views\n * Updates view name and closes dialog on success\n */\n const handleRename = () => {\n if (!currentView) return\n\n const trimmedName = newViewName.trim()\n if (viewManagement.checkNameExists(trimmedName, currentView.id)) return\n\n viewManagement.renameView(currentView.id, trimmedName)\n setNewViewName('')\n setNameError('')\n setIsRenameDialogOpen(false)\n }\n\n /**\n * Updates current view with latest filter and sort configurations\n * Used when user modifies filters/sorts and wants to update existing view\n */\n const handleUpdateCurrentView = () => {\n if (!currentView) return\n\n const updatedView = {\n ...currentView,\n filters: viewManagement.activeFilters,\n sorts: viewManagement.activeSorts\n }\n viewManagement.updateView(updatedView)\n }\n\n /**\n * Validation flags for enabling/disabling save buttons\n * - canSaveNew: checks if new view name is valid and unique\n * - canRename: checks if new name is valid, different from current, and unique\n */\n const canSaveNew = newViewName.trim() !== '' && !viewManagement.checkNameExists(newViewName.trim())\n const canRename =\n currentView &&\n newViewName.trim() !== '' &&\n newViewName.trim() !== currentView.name &&\n !viewManagement.checkNameExists(newViewName.trim(), currentView.id)\n\n return (\n <>\n {!currentView ? (\n <Button\n className=\"flex items-center gap-x-1.5 px-0 text-14 text-foreground-4 transition-colors duration-200 hover:text-foreground-1\"\n variant=\"custom\"\n onClick={() => setIsNewViewDialogOpen(true)}\n >\n <Icon name=\"bookmark-add\" size={12} />\n <span>Save view</span>\n </Button>\n ) : (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <Button\n className=\"flex items-center gap-x-1.5 px-0 text-14 text-foreground-4 transition-colors duration-200 hover:text-foreground-1\"\n variant=\"custom\"\n >\n <Icon name=\"bookmark-icon\" size={12} />\n <span>Manage view</span>\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content className=\"w-48\" align=\"end\">\n {hasChanges && (\n <>\n <DropdownMenu.Item onSelect={handleUpdateCurrentView}>Update current view</DropdownMenu.Item>\n <DropdownMenu.Item onSelect={() => setIsNewViewDialogOpen(true)}>Save as new view</DropdownMenu.Item>\n </>\n )}\n <DropdownMenu.Item\n onSelect={() => {\n setNewViewName(currentView.name)\n setIsRenameDialogOpen(true)\n }}\n >\n Rename\n </DropdownMenu.Item>\n <DropdownMenu.Item\n className=\"text-foreground-danger\"\n onSelect={() => viewManagement.deleteView(currentView.id)}\n >\n Delete view\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n )}\n\n <AlertDialog.Root open={isNewViewDialogOpen} onOpenChange={setIsNewViewDialogOpen}>\n <AlertDialog.Content className=\"max-w-[460px]\">\n <AlertDialog.Header>\n <AlertDialog.Title>New view</AlertDialog.Title>\n </AlertDialog.Header>\n <AlertDialog.Description variant=\"secondary\">\n You can save current configuration of the view. Manage and switch them through the{' '}\n <strong className=\"text-foreground-1\">View</strong> dropdown.\n </AlertDialog.Description>\n\n <div className=\"pb-4 pt-3\">\n <Input\n label=\"Name\"\n placeholder=\"Enter view name\"\n value={newViewName}\n size=\"md\"\n error={nameError}\n onChange={e => {\n setNewViewName(e.target.value)\n }}\n />\n </div>\n <AlertDialog.Footer>\n <Button\n variant=\"outline\"\n onClick={() => {\n setIsNewViewDialogOpen(false)\n setNameError('')\n setNewViewName('')\n }}\n >\n Cancel\n </Button>\n <Button onClick={handleSaveNewView} disabled={!canSaveNew}>\n Save\n </Button>\n </AlertDialog.Footer>\n </AlertDialog.Content>\n </AlertDialog.Root>\n\n <AlertDialog.Root open={isRenameDialogOpen} onOpenChange={setIsRenameDialogOpen}>\n <AlertDialog.Content className=\"max-w-[460px]\">\n <AlertDialog.Header>\n <AlertDialog.Title>Rename view</AlertDialog.Title>\n </AlertDialog.Header>\n\n <div className=\"py-4\">\n <Input\n label=\"Name\"\n placeholder=\"Enter new name\"\n value={newViewName}\n size=\"md\"\n error={nameError}\n onChange={e => {\n setNewViewName(e.target.value)\n }}\n />\n </div>\n\n <AlertDialog.Footer>\n <Button\n variant=\"outline\"\n onClick={() => {\n setIsRenameDialogOpen(false)\n setNameError('')\n setNewViewName('')\n }}\n >\n Cancel\n </Button>\n <Button onClick={handleRename} disabled={!canRename}>\n Save\n </Button>\n </AlertDialog.Footer>\n </AlertDialog.Content>\n </AlertDialog.Root>\n </>\n )\n}\n\nexport default Views\n","import { Icon } from '@/components'\nimport { TFunction } from 'i18next'\n\nimport FilterTrigger from '../triggers/filter-trigger'\nimport { FilterHandlers, FilterOption, SortDirection, SortOption, ViewManagement } from '../types'\nimport Filters from './actions/filters'\nimport Sorts from './actions/sorts'\nimport Views from './actions/views'\n\ninterface FiltersBarProps {\n filterOptions: FilterOption[]\n sortOptions: SortOption[]\n sortDirections: SortDirection[]\n t: TFunction\n filterHandlers: Pick<\n FilterHandlers,\n | 'activeFilters'\n | 'activeSorts'\n | 'handleUpdateFilter'\n | 'handleRemoveFilter'\n | 'handleFilterChange'\n | 'handleUpdateCondition'\n | 'handleUpdateSort'\n | 'handleRemoveSort'\n | 'handleSortChange'\n | 'handleResetSorts'\n | 'handleReorderSorts'\n | 'handleResetAll'\n | 'searchQueries'\n | 'handleSearchChange'\n | 'filterToOpen'\n | 'clearFilterToOpen'\n >\n /**\n * Optional view management configuration.\n * If provided, enables saving and managing filter views\n */\n viewManagement?: Pick<\n ViewManagement,\n | 'savedViews'\n | 'currentView'\n | 'hasActiveViewChanges'\n | 'checkNameExists'\n | 'saveView'\n | 'updateView'\n | 'deleteView'\n | 'renameView'\n >\n}\n\n/**\n * FiltersBar component displays active filters and sorts with the ability to manage them.\n * Shows up only when there are active filters or sorts.\n *\n * @example\n * ```tsx\n * <FiltersBar\n * filterOptions={[{ id: 'status', label: 'Status', options: ['Active', 'Inactive'] }]}\n * sortOptions={[{ id: 'name', label: 'Name' }]}\n * sortDirections={['asc', 'desc']}\n * filterHandlers={filterHandlers}\n * t={t}\n * // Optional: Enable view management\n * viewManagement={viewManagement}\n * />\n * ```\n */\nconst FiltersBar = ({\n filterOptions,\n sortOptions,\n sortDirections,\n t,\n filterHandlers,\n viewManagement\n}: FiltersBarProps) => {\n const {\n activeFilters,\n activeSorts,\n handleUpdateFilter,\n handleRemoveFilter,\n handleFilterChange,\n handleUpdateCondition,\n handleUpdateSort,\n handleRemoveSort,\n handleSortChange,\n handleResetSorts,\n handleReorderSorts,\n handleResetAll,\n searchQueries,\n handleSearchChange,\n filterToOpen,\n clearFilterToOpen\n } = filterHandlers\n\n const hasActiveFilters = !!activeFilters.length || !!activeSorts.length\n\n if (!hasActiveFilters) return null\n\n return (\n <div className=\"mt-2 flex items-center gap-x-2\">\n {!!activeSorts.length && (\n <Sorts\n activeSorts={activeSorts}\n handleSortChange={handleSortChange}\n handleUpdateSort={handleUpdateSort}\n handleRemoveSort={handleRemoveSort}\n handleResetSorts={handleResetSorts}\n sortOptions={sortOptions}\n sortDirections={sortDirections}\n searchQueries={searchQueries}\n handleSearchChange={handleSearchChange}\n handleReorderSorts={handleReorderSorts}\n filterToOpen={filterToOpen}\n onOpen={clearFilterToOpen}\n />\n )}\n\n {activeFilters.length > 0 && activeSorts.length > 0 && <div className=\"h-7 w-px bg-borders-1\" />}\n\n {activeFilters.map(filter => (\n <Filters\n key={filter.type}\n filter={filter}\n filterOptions={filterOptions}\n handleUpdateFilter={handleUpdateFilter}\n handleRemoveFilter={handleRemoveFilter}\n handleUpdateCondition={handleUpdateCondition}\n handleSearchChange={handleSearchChange}\n searchQueries={searchQueries}\n filterToOpen={filterToOpen}\n onOpen={clearFilterToOpen}\n />\n ))}\n\n {hasActiveFilters && (\n <div className=\"ml-2.5 flex w-full items-center justify-between gap-x-4\">\n <div className=\"flex items-center gap-x-4\">\n <FilterTrigger\n type=\"filter\"\n customLabel={\n <div className=\"flex items-center gap-x-1.5 text-foreground-4 transition-colors duration-200 hover:text-foreground-1\">\n <Icon name=\"plus\" size={10} />\n <span>{t('component:filter.add-filter', 'Add filter')}</span>\n </div>\n }\n hideCount\n dropdownAlign=\"start\"\n activeFilters={activeFilters}\n onChange={handleFilterChange}\n searchQueries={searchQueries}\n onSearchChange={handleSearchChange}\n options={filterOptions}\n t={t}\n />\n <button\n className=\"flex items-center gap-x-1.5 text-14 text-foreground-4 outline-none ring-offset-2 ring-offset-background transition-colors duration-200 hover:text-foreground-danger focus:ring-2\"\n onClick={handleResetAll}\n >\n <Icon className=\"rotate-45\" name=\"plus\" size={12} />\n {t('component:filter.reset', 'Reset')}\n </button>\n </div>\n\n {viewManagement && (\n <Views\n currentView={viewManagement.currentView}\n savedViews={viewManagement.savedViews}\n viewManagement={{\n ...viewManagement,\n activeFilters,\n activeSorts,\n saveView: (name: string) => viewManagement.saveView(name, activeFilters, activeSorts)\n }}\n hasChanges={!!viewManagement.hasActiveViewChanges(activeFilters, activeSorts)}\n />\n )}\n </div>\n )}\n </div>\n )\n}\n\nexport default FiltersBar\n","\"use client\";\n\n// packages/react/tooltip/src/tooltip.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Slottable } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport * as VisuallyHiddenPrimitive from \"@radix-ui/react-visually-hidden\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar [createTooltipContext, createTooltipScope] = createContextScope(\"Tooltip\", [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar PROVIDER_NAME = \"TooltipProvider\";\nvar DEFAULT_DELAY_DURATION = 700;\nvar TOOLTIP_OPEN = \"tooltip.open\";\nvar [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);\nvar TooltipProvider = (props) => {\n const {\n __scopeTooltip,\n delayDuration = DEFAULT_DELAY_DURATION,\n skipDelayDuration = 300,\n disableHoverableContent = false,\n children\n } = props;\n const [isOpenDelayed, setIsOpenDelayed] = React.useState(true);\n const isPointerInTransitRef = React.useRef(false);\n const skipDelayTimerRef = React.useRef(0);\n React.useEffect(() => {\n const skipDelayTimer = skipDelayTimerRef.current;\n return () => window.clearTimeout(skipDelayTimer);\n }, []);\n return /* @__PURE__ */ jsx(\n TooltipProviderContextProvider,\n {\n scope: __scopeTooltip,\n isOpenDelayed,\n delayDuration,\n onOpen: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n setIsOpenDelayed(false);\n }, []),\n onClose: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = window.setTimeout(\n () => setIsOpenDelayed(true),\n skipDelayDuration\n );\n }, [skipDelayDuration]),\n isPointerInTransitRef,\n onPointerInTransitChange: React.useCallback((inTransit) => {\n isPointerInTransitRef.current = inTransit;\n }, []),\n disableHoverableContent,\n children\n }\n );\n};\nTooltipProvider.displayName = PROVIDER_NAME;\nvar TOOLTIP_NAME = \"Tooltip\";\nvar [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);\nvar Tooltip = (props) => {\n const {\n __scopeTooltip,\n children,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disableHoverableContent: disableHoverableContentProp,\n delayDuration: delayDurationProp\n } = props;\n const providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const [trigger, setTrigger] = React.useState(null);\n const contentId = useId();\n const openTimerRef = React.useRef(0);\n const disableHoverableContent = disableHoverableContentProp ?? providerContext.disableHoverableContent;\n const delayDuration = delayDurationProp ?? providerContext.delayDuration;\n const wasOpenDelayedRef = React.useRef(false);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: (open2) => {\n if (open2) {\n providerContext.onOpen();\n document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));\n } else {\n providerContext.onClose();\n }\n onOpenChange?.(open2);\n }\n });\n const stateAttribute = React.useMemo(() => {\n return open ? wasOpenDelayedRef.current ? \"delayed-open\" : \"instant-open\" : \"closed\";\n }, [open]);\n const handleOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n wasOpenDelayedRef.current = false;\n setOpen(true);\n }, [setOpen]);\n const handleClose = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n setOpen(false);\n }, [setOpen]);\n const handleDelayedOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = window.setTimeout(() => {\n wasOpenDelayedRef.current = true;\n setOpen(true);\n openTimerRef.current = 0;\n }, delayDuration);\n }, [delayDuration, setOpen]);\n React.useEffect(() => {\n return () => {\n if (openTimerRef.current) {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n };\n }, []);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n TooltipContextProvider,\n {\n scope: __scopeTooltip,\n contentId,\n open,\n stateAttribute,\n trigger,\n onTriggerChange: setTrigger,\n onTriggerEnter: React.useCallback(() => {\n if (providerContext.isOpenDelayed) handleDelayedOpen();\n else handleOpen();\n }, [providerContext.isOpenDelayed, handleDelayedOpen, handleOpen]),\n onTriggerLeave: React.useCallback(() => {\n if (disableHoverableContent) {\n handleClose();\n } else {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n }, [handleClose, disableHoverableContent]),\n onOpen: handleOpen,\n onClose: handleClose,\n disableHoverableContent,\n children\n }\n ) });\n};\nTooltip.displayName = TOOLTIP_NAME;\nvar TRIGGER_NAME = \"TooltipTrigger\";\nvar TooltipTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTooltip, ...triggerProps } = props;\n const context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);\n const providerContext = useTooltipProviderContext(TRIGGER_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onTriggerChange);\n const isPointerDownRef = React.useRef(false);\n const hasPointerMoveOpenedRef = React.useRef(false);\n const handlePointerUp = React.useCallback(() => isPointerDownRef.current = false, []);\n React.useEffect(() => {\n return () => document.removeEventListener(\"pointerup\", handlePointerUp);\n }, [handlePointerUp]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n \"aria-describedby\": context.open ? context.contentId : void 0,\n \"data-state\": context.stateAttribute,\n ...triggerProps,\n ref: composedRefs,\n onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n if (event.pointerType === \"touch\") return;\n if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {\n context.onTriggerEnter();\n hasPointerMoveOpenedRef.current = true;\n }\n }),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, () => {\n context.onTriggerLeave();\n hasPointerMoveOpenedRef.current = false;\n }),\n onPointerDown: composeEventHandlers(props.onPointerDown, () => {\n isPointerDownRef.current = true;\n document.addEventListener(\"pointerup\", handlePointerUp, { once: true });\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n if (!isPointerDownRef.current) context.onOpen();\n }),\n onBlur: composeEventHandlers(props.onBlur, context.onClose),\n onClick: composeEventHandlers(props.onClick, context.onClose)\n }\n ) });\n }\n);\nTooltipTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"TooltipPortal\";\nvar [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar TooltipPortal = (props) => {\n const { __scopeTooltip, forceMount, children, container } = props;\n const context = useTooltipContext(PORTAL_NAME, __scopeTooltip);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeTooltip, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nTooltipPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"TooltipContent\";\nvar TooltipContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeTooltip);\n const { forceMount = portalContext.forceMount, side = \"top\", ...contentProps } = props;\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.disableHoverableContent ? /* @__PURE__ */ jsx(TooltipContentImpl, { side, ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(TooltipContentHoverable, { side, ...contentProps, ref: forwardedRef }) });\n }\n);\nvar TooltipContentHoverable = React.forwardRef((props, forwardedRef) => {\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n const providerContext = useTooltipProviderContext(CONTENT_NAME, props.__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [pointerGraceArea, setPointerGraceArea] = React.useState(null);\n const { trigger, onClose } = context;\n const content = ref.current;\n const { onPointerInTransitChange } = providerContext;\n const handleRemoveGraceArea = React.useCallback(() => {\n setPointerGraceArea(null);\n onPointerInTransitChange(false);\n }, [onPointerInTransitChange]);\n const handleCreateGraceArea = React.useCallback(\n (event, hoverTarget) => {\n const currentTarget = event.currentTarget;\n const exitPoint = { x: event.clientX, y: event.clientY };\n const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());\n const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);\n const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());\n const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);\n setPointerGraceArea(graceArea);\n onPointerInTransitChange(true);\n },\n [onPointerInTransitChange]\n );\n React.useEffect(() => {\n return () => handleRemoveGraceArea();\n }, [handleRemoveGraceArea]);\n React.useEffect(() => {\n if (trigger && content) {\n const handleTriggerLeave = (event) => handleCreateGraceArea(event, content);\n const handleContentLeave = (event) => handleCreateGraceArea(event, trigger);\n trigger.addEventListener(\"pointerleave\", handleTriggerLeave);\n content.addEventListener(\"pointerleave\", handleContentLeave);\n return () => {\n trigger.removeEventListener(\"pointerleave\", handleTriggerLeave);\n content.removeEventListener(\"pointerleave\", handleContentLeave);\n };\n }\n }, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]);\n React.useEffect(() => {\n if (pointerGraceArea) {\n const handleTrackPointerGrace = (event) => {\n const target = event.target;\n const pointerPosition = { x: event.clientX, y: event.clientY };\n const hasEnteredTarget = trigger?.contains(target) || content?.contains(target);\n const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);\n if (hasEnteredTarget) {\n handleRemoveGraceArea();\n } else if (isPointerOutsideGraceArea) {\n handleRemoveGraceArea();\n onClose();\n }\n };\n document.addEventListener(\"pointermove\", handleTrackPointerGrace);\n return () => document.removeEventListener(\"pointermove\", handleTrackPointerGrace);\n }\n }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]);\n return /* @__PURE__ */ jsx(TooltipContentImpl, { ...props, ref: composedRefs });\n});\nvar [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, { isInside: false });\nvar TooltipContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTooltip,\n children,\n \"aria-label\": ariaLabel,\n onEscapeKeyDown,\n onPointerDownOutside,\n ...contentProps\n } = props;\n const context = useTooltipContext(CONTENT_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const { onClose } = context;\n React.useEffect(() => {\n document.addEventListener(TOOLTIP_OPEN, onClose);\n return () => document.removeEventListener(TOOLTIP_OPEN, onClose);\n }, [onClose]);\n React.useEffect(() => {\n if (context.trigger) {\n const handleScroll = (event) => {\n const target = event.target;\n if (target?.contains(context.trigger)) onClose();\n };\n window.addEventListener(\"scroll\", handleScroll, { capture: true });\n return () => window.removeEventListener(\"scroll\", handleScroll, { capture: true });\n }\n }, [context.trigger, onClose]);\n return /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents: false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside: (event) => event.preventDefault(),\n onDismiss: onClose,\n children: /* @__PURE__ */ jsxs(\n PopperPrimitive.Content,\n {\n \"data-state\": context.stateAttribute,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-tooltip-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-tooltip-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-tooltip-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-tooltip-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-tooltip-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n },\n children: [\n /* @__PURE__ */ jsx(Slottable, { children }),\n /* @__PURE__ */ jsx(VisuallyHiddenContentContextProvider, { scope: __scopeTooltip, isInside: true, children: /* @__PURE__ */ jsx(VisuallyHiddenPrimitive.Root, { id: context.contentId, role: \"tooltip\", children: ariaLabel || children }) })\n ]\n }\n )\n }\n );\n }\n);\nTooltipContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"TooltipArrow\";\nvar TooltipArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTooltip, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeTooltip);\n const visuallyHiddenContentContext = useVisuallyHiddenContentContext(\n ARROW_NAME,\n __scopeTooltip\n );\n return visuallyHiddenContentContext.isInside ? null : /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nTooltipArrow.displayName = ARROW_NAME;\nfunction getExitSideFromRect(point, rect) {\n const top = Math.abs(rect.top - point.y);\n const bottom = Math.abs(rect.bottom - point.y);\n const right = Math.abs(rect.right - point.x);\n const left = Math.abs(rect.left - point.x);\n switch (Math.min(top, bottom, right, left)) {\n case left:\n return \"left\";\n case right:\n return \"right\";\n case top:\n return \"top\";\n case bottom:\n return \"bottom\";\n default:\n throw new Error(\"unreachable\");\n }\n}\nfunction getPaddedExitPoints(exitPoint, exitSide, padding = 5) {\n const paddedExitPoints = [];\n switch (exitSide) {\n case \"top\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"bottom\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y - padding }\n );\n break;\n case \"left\":\n paddedExitPoints.push(\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"right\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x - padding, y: exitPoint.y + padding }\n );\n break;\n }\n return paddedExitPoints;\n}\nfunction getPointsFromRect(rect) {\n const { top, right, bottom, left } = rect;\n return [\n { x: left, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom }\n ];\n}\nfunction isPointInPolygon(point, polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const xi = polygon[i].x;\n const yi = polygon[i].y;\n const xj = polygon[j].x;\n const yj = polygon[j].y;\n const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n return inside;\n}\nfunction getHull(points) {\n const newPoints = points.slice();\n newPoints.sort((a, b) => {\n if (a.x < b.x) return -1;\n else if (a.x > b.x) return 1;\n else if (a.y < b.y) return -1;\n else if (a.y > b.y) return 1;\n else return 0;\n });\n return getHullPresorted(newPoints);\n}\nfunction getHullPresorted(points) {\n if (points.length <= 1) return points.slice();\n const upperHull = [];\n for (let i = 0; i < points.length; i++) {\n const p = points[i];\n while (upperHull.length >= 2) {\n const q = upperHull[upperHull.length - 1];\n const r = upperHull[upperHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) upperHull.pop();\n else break;\n }\n upperHull.push(p);\n }\n upperHull.pop();\n const lowerHull = [];\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i];\n while (lowerHull.length >= 2) {\n const q = lowerHull[lowerHull.length - 1];\n const r = lowerHull[lowerHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) lowerHull.pop();\n else break;\n }\n lowerHull.push(p);\n }\n lowerHull.pop();\n if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) {\n return upperHull;\n } else {\n return upperHull.concat(lowerHull);\n }\n}\nvar Provider = TooltipProvider;\nvar Root3 = Tooltip;\nvar Trigger = TooltipTrigger;\nvar Portal = TooltipPortal;\nvar Content2 = TooltipContent;\nvar Arrow2 = TooltipArrow;\nexport {\n Arrow2 as Arrow,\n Content2 as Content,\n Portal,\n Provider,\n Root3 as Root,\n Tooltip,\n TooltipArrow,\n TooltipContent,\n TooltipPortal,\n TooltipProvider,\n TooltipTrigger,\n Trigger,\n createTooltipScope\n};\n//# sourceMappingURL=index.mjs.map\n","import { ComponentPropsWithoutRef, ElementRef, forwardRef } from 'react'\n\nimport { Content, Provider, Root, Trigger } from '@radix-ui/react-tooltip'\nimport { cn } from '@utils/cn'\n\nconst TooltipContent = forwardRef<ElementRef<typeof Content>, ComponentPropsWithoutRef<typeof Content>>(\n ({ className, sideOffset = 4, ...props }, ref) => (\n <Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 overflow-hidden rounded-md px-3 py-1.5 text-xs',\n className\n )}\n {...props}\n />\n )\n)\nTooltipContent.displayName = Content.displayName\n\nconst Tooltip = {\n Root,\n Trigger,\n Content: TooltipContent,\n Provider\n}\n\nexport { Tooltip }\n","\"use client\";\n\n// packages/react/navigation-menu/src/navigation-menu.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { composeRefs, useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport * as VisuallyHiddenPrimitive from \"@radix-ui/react-visually-hidden\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar NAVIGATION_MENU_NAME = \"NavigationMenu\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(NAVIGATION_MENU_NAME);\nvar [FocusGroupCollection, useFocusGroupCollection, createFocusGroupCollectionScope] = createCollection(NAVIGATION_MENU_NAME);\nvar [createNavigationMenuContext, createNavigationMenuScope] = createContextScope(\n NAVIGATION_MENU_NAME,\n [createCollectionScope, createFocusGroupCollectionScope]\n);\nvar [NavigationMenuProviderImpl, useNavigationMenuContext] = createNavigationMenuContext(NAVIGATION_MENU_NAME);\nvar [ViewportContentProvider, useViewportContentContext] = createNavigationMenuContext(NAVIGATION_MENU_NAME);\nvar NavigationMenu = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeNavigationMenu,\n value: valueProp,\n onValueChange,\n defaultValue,\n delayDuration = 200,\n skipDelayDuration = 300,\n orientation = \"horizontal\",\n dir,\n ...NavigationMenuProps\n } = props;\n const [navigationMenu, setNavigationMenu] = React.useState(null);\n const composedRef = useComposedRefs(forwardedRef, (node) => setNavigationMenu(node));\n const direction = useDirection(dir);\n const openTimerRef = React.useRef(0);\n const closeTimerRef = React.useRef(0);\n const skipDelayTimerRef = React.useRef(0);\n const [isOpenDelayed, setIsOpenDelayed] = React.useState(true);\n const [value = \"\", setValue] = useControllableState({\n prop: valueProp,\n onChange: (value2) => {\n const isOpen = value2 !== \"\";\n const hasSkipDelayDuration = skipDelayDuration > 0;\n if (isOpen) {\n window.clearTimeout(skipDelayTimerRef.current);\n if (hasSkipDelayDuration) setIsOpenDelayed(false);\n } else {\n window.clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = window.setTimeout(\n () => setIsOpenDelayed(true),\n skipDelayDuration\n );\n }\n onValueChange?.(value2);\n },\n defaultProp: defaultValue\n });\n const startCloseTimer = React.useCallback(() => {\n window.clearTimeout(closeTimerRef.current);\n closeTimerRef.current = window.setTimeout(() => setValue(\"\"), 150);\n }, [setValue]);\n const handleOpen = React.useCallback(\n (itemValue) => {\n window.clearTimeout(closeTimerRef.current);\n setValue(itemValue);\n },\n [setValue]\n );\n const handleDelayedOpen = React.useCallback(\n (itemValue) => {\n const isOpenItem = value === itemValue;\n if (isOpenItem) {\n window.clearTimeout(closeTimerRef.current);\n } else {\n openTimerRef.current = window.setTimeout(() => {\n window.clearTimeout(closeTimerRef.current);\n setValue(itemValue);\n }, delayDuration);\n }\n },\n [value, setValue, delayDuration]\n );\n React.useEffect(() => {\n return () => {\n window.clearTimeout(openTimerRef.current);\n window.clearTimeout(closeTimerRef.current);\n window.clearTimeout(skipDelayTimerRef.current);\n };\n }, []);\n return /* @__PURE__ */ jsx(\n NavigationMenuProvider,\n {\n scope: __scopeNavigationMenu,\n isRootMenu: true,\n value,\n dir: direction,\n orientation,\n rootNavigationMenu: navigationMenu,\n onTriggerEnter: (itemValue) => {\n window.clearTimeout(openTimerRef.current);\n if (isOpenDelayed) handleDelayedOpen(itemValue);\n else handleOpen(itemValue);\n },\n onTriggerLeave: () => {\n window.clearTimeout(openTimerRef.current);\n startCloseTimer();\n },\n onContentEnter: () => window.clearTimeout(closeTimerRef.current),\n onContentLeave: startCloseTimer,\n onItemSelect: (itemValue) => {\n setValue((prevValue) => prevValue === itemValue ? \"\" : itemValue);\n },\n onItemDismiss: () => setValue(\"\"),\n children: /* @__PURE__ */ jsx(\n Primitive.nav,\n {\n \"aria-label\": \"Main\",\n \"data-orientation\": orientation,\n dir: direction,\n ...NavigationMenuProps,\n ref: composedRef\n }\n )\n }\n );\n }\n);\nNavigationMenu.displayName = NAVIGATION_MENU_NAME;\nvar SUB_NAME = \"NavigationMenuSub\";\nvar NavigationMenuSub = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeNavigationMenu,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n ...subProps\n } = props;\n const context = useNavigationMenuContext(SUB_NAME, __scopeNavigationMenu);\n const [value = \"\", setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue\n });\n return /* @__PURE__ */ jsx(\n NavigationMenuProvider,\n {\n scope: __scopeNavigationMenu,\n isRootMenu: false,\n value,\n dir: context.dir,\n orientation,\n rootNavigationMenu: context.rootNavigationMenu,\n onTriggerEnter: (itemValue) => setValue(itemValue),\n onItemSelect: (itemValue) => setValue(itemValue),\n onItemDismiss: () => setValue(\"\"),\n children: /* @__PURE__ */ jsx(Primitive.div, { \"data-orientation\": orientation, ...subProps, ref: forwardedRef })\n }\n );\n }\n);\nNavigationMenuSub.displayName = SUB_NAME;\nvar NavigationMenuProvider = (props) => {\n const {\n scope,\n isRootMenu,\n rootNavigationMenu,\n dir,\n orientation,\n children,\n value,\n onItemSelect,\n onItemDismiss,\n onTriggerEnter,\n onTriggerLeave,\n onContentEnter,\n onContentLeave\n } = props;\n const [viewport, setViewport] = React.useState(null);\n const [viewportContent, setViewportContent] = React.useState(/* @__PURE__ */ new Map());\n const [indicatorTrack, setIndicatorTrack] = React.useState(null);\n return /* @__PURE__ */ jsx(\n NavigationMenuProviderImpl,\n {\n scope,\n isRootMenu,\n rootNavigationMenu,\n value,\n previousValue: usePrevious(value),\n baseId: useId(),\n dir,\n orientation,\n viewport,\n onViewportChange: setViewport,\n indicatorTrack,\n onIndicatorTrackChange: setIndicatorTrack,\n onTriggerEnter: useCallbackRef(onTriggerEnter),\n onTriggerLeave: useCallbackRef(onTriggerLeave),\n onContentEnter: useCallbackRef(onContentEnter),\n onContentLeave: useCallbackRef(onContentLeave),\n onItemSelect: useCallbackRef(onItemSelect),\n onItemDismiss: useCallbackRef(onItemDismiss),\n onViewportContentChange: React.useCallback((contentValue, contentData) => {\n setViewportContent((prevContent) => {\n prevContent.set(contentValue, contentData);\n return new Map(prevContent);\n });\n }, []),\n onViewportContentRemove: React.useCallback((contentValue) => {\n setViewportContent((prevContent) => {\n if (!prevContent.has(contentValue)) return prevContent;\n prevContent.delete(contentValue);\n return new Map(prevContent);\n });\n }, []),\n children: /* @__PURE__ */ jsx(Collection.Provider, { scope, children: /* @__PURE__ */ jsx(ViewportContentProvider, { scope, items: viewportContent, children }) })\n }\n );\n};\nvar LIST_NAME = \"NavigationMenuList\";\nvar NavigationMenuList = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeNavigationMenu, ...listProps } = props;\n const context = useNavigationMenuContext(LIST_NAME, __scopeNavigationMenu);\n const list = /* @__PURE__ */ jsx(Primitive.ul, { \"data-orientation\": context.orientation, ...listProps, ref: forwardedRef });\n return /* @__PURE__ */ jsx(Primitive.div, { style: { position: \"relative\" }, ref: context.onIndicatorTrackChange, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: __scopeNavigationMenu, children: context.isRootMenu ? /* @__PURE__ */ jsx(FocusGroup, { asChild: true, children: list }) : list }) });\n }\n);\nNavigationMenuList.displayName = LIST_NAME;\nvar ITEM_NAME = \"NavigationMenuItem\";\nvar [NavigationMenuItemContextProvider, useNavigationMenuItemContext] = createNavigationMenuContext(ITEM_NAME);\nvar NavigationMenuItem = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeNavigationMenu, value: valueProp, ...itemProps } = props;\n const autoValue = useId();\n const value = valueProp || autoValue || \"LEGACY_REACT_AUTO_VALUE\";\n const contentRef = React.useRef(null);\n const triggerRef = React.useRef(null);\n const focusProxyRef = React.useRef(null);\n const restoreContentTabOrderRef = React.useRef(() => {\n });\n const wasEscapeCloseRef = React.useRef(false);\n const handleContentEntry = React.useCallback((side = \"start\") => {\n if (contentRef.current) {\n restoreContentTabOrderRef.current();\n const candidates = getTabbableCandidates(contentRef.current);\n if (candidates.length) focusFirst(side === \"start\" ? candidates : candidates.reverse());\n }\n }, []);\n const handleContentExit = React.useCallback(() => {\n if (contentRef.current) {\n const candidates = getTabbableCandidates(contentRef.current);\n if (candidates.length) restoreContentTabOrderRef.current = removeFromTabOrder(candidates);\n }\n }, []);\n return /* @__PURE__ */ jsx(\n NavigationMenuItemContextProvider,\n {\n scope: __scopeNavigationMenu,\n value,\n triggerRef,\n contentRef,\n focusProxyRef,\n wasEscapeCloseRef,\n onEntryKeyDown: handleContentEntry,\n onFocusProxyEnter: handleContentEntry,\n onRootContentClose: handleContentExit,\n onContentFocusOutside: handleContentExit,\n children: /* @__PURE__ */ jsx(Primitive.li, { ...itemProps, ref: forwardedRef })\n }\n );\n }\n);\nNavigationMenuItem.displayName = ITEM_NAME;\nvar TRIGGER_NAME = \"NavigationMenuTrigger\";\nvar NavigationMenuTrigger = React.forwardRef((props, forwardedRef) => {\n const { __scopeNavigationMenu, disabled, ...triggerProps } = props;\n const context = useNavigationMenuContext(TRIGGER_NAME, props.__scopeNavigationMenu);\n const itemContext = useNavigationMenuItemContext(TRIGGER_NAME, props.__scopeNavigationMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, itemContext.triggerRef, forwardedRef);\n const triggerId = makeTriggerId(context.baseId, itemContext.value);\n const contentId = makeContentId(context.baseId, itemContext.value);\n const hasPointerMoveOpenedRef = React.useRef(false);\n const wasClickCloseRef = React.useRef(false);\n const open = itemContext.value === context.value;\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(Collection.ItemSlot, { scope: __scopeNavigationMenu, value: itemContext.value, children: /* @__PURE__ */ jsx(FocusGroupItem, { asChild: true, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n id: triggerId,\n disabled,\n \"data-disabled\": disabled ? \"\" : void 0,\n \"data-state\": getOpenState(open),\n \"aria-expanded\": open,\n \"aria-controls\": contentId,\n ...triggerProps,\n ref: composedRefs,\n onPointerEnter: composeEventHandlers(props.onPointerEnter, () => {\n wasClickCloseRef.current = false;\n itemContext.wasEscapeCloseRef.current = false;\n }),\n onPointerMove: composeEventHandlers(\n props.onPointerMove,\n whenMouse(() => {\n if (disabled || wasClickCloseRef.current || itemContext.wasEscapeCloseRef.current || hasPointerMoveOpenedRef.current)\n return;\n context.onTriggerEnter(itemContext.value);\n hasPointerMoveOpenedRef.current = true;\n })\n ),\n onPointerLeave: composeEventHandlers(\n props.onPointerLeave,\n whenMouse(() => {\n if (disabled) return;\n context.onTriggerLeave();\n hasPointerMoveOpenedRef.current = false;\n })\n ),\n onClick: composeEventHandlers(props.onClick, () => {\n context.onItemSelect(itemContext.value);\n wasClickCloseRef.current = open;\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const verticalEntryKey = context.dir === \"rtl\" ? \"ArrowLeft\" : \"ArrowRight\";\n const entryKey = { horizontal: \"ArrowDown\", vertical: verticalEntryKey }[context.orientation];\n if (open && event.key === entryKey) {\n itemContext.onEntryKeyDown();\n event.preventDefault();\n }\n })\n }\n ) }) }),\n open && /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n VisuallyHiddenPrimitive.Root,\n {\n \"aria-hidden\": true,\n tabIndex: 0,\n ref: itemContext.focusProxyRef,\n onFocus: (event) => {\n const content = itemContext.contentRef.current;\n const prevFocusedElement = event.relatedTarget;\n const wasTriggerFocused = prevFocusedElement === ref.current;\n const wasFocusFromContent = content?.contains(prevFocusedElement);\n if (wasTriggerFocused || !wasFocusFromContent) {\n itemContext.onFocusProxyEnter(wasTriggerFocused ? \"start\" : \"end\");\n }\n }\n }\n ),\n context.viewport && /* @__PURE__ */ jsx(\"span\", { \"aria-owns\": contentId })\n ] })\n ] });\n});\nNavigationMenuTrigger.displayName = TRIGGER_NAME;\nvar LINK_NAME = \"NavigationMenuLink\";\nvar LINK_SELECT = \"navigationMenu.linkSelect\";\nvar NavigationMenuLink = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeNavigationMenu, active, onSelect, ...linkProps } = props;\n return /* @__PURE__ */ jsx(FocusGroupItem, { asChild: true, children: /* @__PURE__ */ jsx(\n Primitive.a,\n {\n \"data-active\": active ? \"\" : void 0,\n \"aria-current\": active ? \"page\" : void 0,\n ...linkProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(\n props.onClick,\n (event) => {\n const target = event.target;\n const linkSelectEvent = new CustomEvent(LINK_SELECT, {\n bubbles: true,\n cancelable: true\n });\n target.addEventListener(LINK_SELECT, (event2) => onSelect?.(event2), { once: true });\n dispatchDiscreteCustomEvent(target, linkSelectEvent);\n if (!linkSelectEvent.defaultPrevented && !event.metaKey) {\n const rootContentDismissEvent = new CustomEvent(ROOT_CONTENT_DISMISS, {\n bubbles: true,\n cancelable: true\n });\n dispatchDiscreteCustomEvent(target, rootContentDismissEvent);\n }\n },\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nNavigationMenuLink.displayName = LINK_NAME;\nvar INDICATOR_NAME = \"NavigationMenuIndicator\";\nvar NavigationMenuIndicator = React.forwardRef((props, forwardedRef) => {\n const { forceMount, ...indicatorProps } = props;\n const context = useNavigationMenuContext(INDICATOR_NAME, props.__scopeNavigationMenu);\n const isVisible = Boolean(context.value);\n return context.indicatorTrack ? ReactDOM.createPortal(\n /* @__PURE__ */ jsx(Presence, { present: forceMount || isVisible, children: /* @__PURE__ */ jsx(NavigationMenuIndicatorImpl, { ...indicatorProps, ref: forwardedRef }) }),\n context.indicatorTrack\n ) : null;\n});\nNavigationMenuIndicator.displayName = INDICATOR_NAME;\nvar NavigationMenuIndicatorImpl = React.forwardRef((props, forwardedRef) => {\n const { __scopeNavigationMenu, ...indicatorProps } = props;\n const context = useNavigationMenuContext(INDICATOR_NAME, __scopeNavigationMenu);\n const getItems = useCollection(__scopeNavigationMenu);\n const [activeTrigger, setActiveTrigger] = React.useState(\n null\n );\n const [position, setPosition] = React.useState(null);\n const isHorizontal = context.orientation === \"horizontal\";\n const isVisible = Boolean(context.value);\n React.useEffect(() => {\n const items = getItems();\n const triggerNode = items.find((item) => item.value === context.value)?.ref.current;\n if (triggerNode) setActiveTrigger(triggerNode);\n }, [getItems, context.value]);\n const handlePositionChange = () => {\n if (activeTrigger) {\n setPosition({\n size: isHorizontal ? activeTrigger.offsetWidth : activeTrigger.offsetHeight,\n offset: isHorizontal ? activeTrigger.offsetLeft : activeTrigger.offsetTop\n });\n }\n };\n useResizeObserver(activeTrigger, handlePositionChange);\n useResizeObserver(context.indicatorTrack, handlePositionChange);\n return position ? /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"aria-hidden\": true,\n \"data-state\": isVisible ? \"visible\" : \"hidden\",\n \"data-orientation\": context.orientation,\n ...indicatorProps,\n ref: forwardedRef,\n style: {\n position: \"absolute\",\n ...isHorizontal ? {\n left: 0,\n width: position.size + \"px\",\n transform: `translateX(${position.offset}px)`\n } : {\n top: 0,\n height: position.size + \"px\",\n transform: `translateY(${position.offset}px)`\n },\n ...indicatorProps.style\n }\n }\n ) : null;\n});\nvar CONTENT_NAME = \"NavigationMenuContent\";\nvar NavigationMenuContent = React.forwardRef((props, forwardedRef) => {\n const { forceMount, ...contentProps } = props;\n const context = useNavigationMenuContext(CONTENT_NAME, props.__scopeNavigationMenu);\n const itemContext = useNavigationMenuItemContext(CONTENT_NAME, props.__scopeNavigationMenu);\n const composedRefs = useComposedRefs(itemContext.contentRef, forwardedRef);\n const open = itemContext.value === context.value;\n const commonProps = {\n value: itemContext.value,\n triggerRef: itemContext.triggerRef,\n focusProxyRef: itemContext.focusProxyRef,\n wasEscapeCloseRef: itemContext.wasEscapeCloseRef,\n onContentFocusOutside: itemContext.onContentFocusOutside,\n onRootContentClose: itemContext.onRootContentClose,\n ...contentProps\n };\n return !context.viewport ? /* @__PURE__ */ jsx(Presence, { present: forceMount || open, children: /* @__PURE__ */ jsx(\n NavigationMenuContentImpl,\n {\n \"data-state\": getOpenState(open),\n ...commonProps,\n ref: composedRefs,\n onPointerEnter: composeEventHandlers(props.onPointerEnter, context.onContentEnter),\n onPointerLeave: composeEventHandlers(\n props.onPointerLeave,\n whenMouse(context.onContentLeave)\n ),\n style: {\n // Prevent interaction when animating out\n pointerEvents: !open && context.isRootMenu ? \"none\" : void 0,\n ...commonProps.style\n }\n }\n ) }) : /* @__PURE__ */ jsx(ViewportContentMounter, { forceMount, ...commonProps, ref: composedRefs });\n});\nNavigationMenuContent.displayName = CONTENT_NAME;\nvar ViewportContentMounter = React.forwardRef((props, forwardedRef) => {\n const context = useNavigationMenuContext(CONTENT_NAME, props.__scopeNavigationMenu);\n const { onViewportContentChange, onViewportContentRemove } = context;\n useLayoutEffect(() => {\n onViewportContentChange(props.value, {\n ref: forwardedRef,\n ...props\n });\n }, [props, forwardedRef, onViewportContentChange]);\n useLayoutEffect(() => {\n return () => onViewportContentRemove(props.value);\n }, [props.value, onViewportContentRemove]);\n return null;\n});\nvar ROOT_CONTENT_DISMISS = \"navigationMenu.rootContentDismiss\";\nvar NavigationMenuContentImpl = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeNavigationMenu,\n value,\n triggerRef,\n focusProxyRef,\n wasEscapeCloseRef,\n onRootContentClose,\n onContentFocusOutside,\n ...contentProps\n } = props;\n const context = useNavigationMenuContext(CONTENT_NAME, __scopeNavigationMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const getItems = useCollection(__scopeNavigationMenu);\n const prevMotionAttributeRef = React.useRef(null);\n const { onItemDismiss } = context;\n React.useEffect(() => {\n const content = ref.current;\n if (context.isRootMenu && content) {\n const handleClose = () => {\n onItemDismiss();\n onRootContentClose();\n if (content.contains(document.activeElement)) triggerRef.current?.focus();\n };\n content.addEventListener(ROOT_CONTENT_DISMISS, handleClose);\n return () => content.removeEventListener(ROOT_CONTENT_DISMISS, handleClose);\n }\n }, [context.isRootMenu, props.value, triggerRef, onItemDismiss, onRootContentClose]);\n const motionAttribute = React.useMemo(() => {\n const items = getItems();\n const values = items.map((item) => item.value);\n if (context.dir === \"rtl\") values.reverse();\n const index = values.indexOf(context.value);\n const prevIndex = values.indexOf(context.previousValue);\n const isSelected = value === context.value;\n const wasSelected = prevIndex === values.indexOf(value);\n if (!isSelected && !wasSelected) return prevMotionAttributeRef.current;\n const attribute = (() => {\n if (index !== prevIndex) {\n if (isSelected && prevIndex !== -1) return index > prevIndex ? \"from-end\" : \"from-start\";\n if (wasSelected && index !== -1) return index > prevIndex ? \"to-start\" : \"to-end\";\n }\n return null;\n })();\n prevMotionAttributeRef.current = attribute;\n return attribute;\n }, [context.previousValue, context.value, context.dir, getItems, value]);\n return /* @__PURE__ */ jsx(FocusGroup, { asChild: true, children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n id: contentId,\n \"aria-labelledby\": triggerId,\n \"data-motion\": motionAttribute,\n \"data-orientation\": context.orientation,\n ...contentProps,\n ref: composedRefs,\n disableOutsidePointerEvents: false,\n onDismiss: () => {\n const rootContentDismissEvent = new Event(ROOT_CONTENT_DISMISS, {\n bubbles: true,\n cancelable: true\n });\n ref.current?.dispatchEvent(rootContentDismissEvent);\n },\n onFocusOutside: composeEventHandlers(props.onFocusOutside, (event) => {\n onContentFocusOutside();\n const target = event.target;\n if (context.rootNavigationMenu?.contains(target)) event.preventDefault();\n }),\n onPointerDownOutside: composeEventHandlers(props.onPointerDownOutside, (event) => {\n const target = event.target;\n const isTrigger = getItems().some((item) => item.ref.current?.contains(target));\n const isRootViewport = context.isRootMenu && context.viewport?.contains(target);\n if (isTrigger || isRootViewport || !context.isRootMenu) event.preventDefault();\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isMetaKey = event.altKey || event.ctrlKey || event.metaKey;\n const isTabKey = event.key === \"Tab\" && !isMetaKey;\n if (isTabKey) {\n const candidates = getTabbableCandidates(event.currentTarget);\n const focusedElement = document.activeElement;\n const index = candidates.findIndex((candidate) => candidate === focusedElement);\n const isMovingBackwards = event.shiftKey;\n const nextCandidates = isMovingBackwards ? candidates.slice(0, index).reverse() : candidates.slice(index + 1, candidates.length);\n if (focusFirst(nextCandidates)) {\n event.preventDefault();\n } else {\n focusProxyRef.current?.focus();\n }\n }\n }),\n onEscapeKeyDown: composeEventHandlers(props.onEscapeKeyDown, (_event) => {\n wasEscapeCloseRef.current = true;\n })\n }\n ) });\n});\nvar VIEWPORT_NAME = \"NavigationMenuViewport\";\nvar NavigationMenuViewport = React.forwardRef((props, forwardedRef) => {\n const { forceMount, ...viewportProps } = props;\n const context = useNavigationMenuContext(VIEWPORT_NAME, props.__scopeNavigationMenu);\n const open = Boolean(context.value);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || open, children: /* @__PURE__ */ jsx(NavigationMenuViewportImpl, { ...viewportProps, ref: forwardedRef }) });\n});\nNavigationMenuViewport.displayName = VIEWPORT_NAME;\nvar NavigationMenuViewportImpl = React.forwardRef((props, forwardedRef) => {\n const { __scopeNavigationMenu, children, ...viewportImplProps } = props;\n const context = useNavigationMenuContext(VIEWPORT_NAME, __scopeNavigationMenu);\n const composedRefs = useComposedRefs(forwardedRef, context.onViewportChange);\n const viewportContentContext = useViewportContentContext(\n CONTENT_NAME,\n props.__scopeNavigationMenu\n );\n const [size, setSize] = React.useState(null);\n const [content, setContent] = React.useState(null);\n const viewportWidth = size ? size?.width + \"px\" : void 0;\n const viewportHeight = size ? size?.height + \"px\" : void 0;\n const open = Boolean(context.value);\n const activeContentValue = open ? context.value : context.previousValue;\n const handleSizeChange = () => {\n if (content) setSize({ width: content.offsetWidth, height: content.offsetHeight });\n };\n useResizeObserver(content, handleSizeChange);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getOpenState(open),\n \"data-orientation\": context.orientation,\n ...viewportImplProps,\n ref: composedRefs,\n style: {\n // Prevent interaction when animating out\n pointerEvents: !open && context.isRootMenu ? \"none\" : void 0,\n [\"--radix-navigation-menu-viewport-width\"]: viewportWidth,\n [\"--radix-navigation-menu-viewport-height\"]: viewportHeight,\n ...viewportImplProps.style\n },\n onPointerEnter: composeEventHandlers(props.onPointerEnter, context.onContentEnter),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, whenMouse(context.onContentLeave)),\n children: Array.from(viewportContentContext.items).map(([value, { ref, forceMount, ...props2 }]) => {\n const isActive = activeContentValue === value;\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isActive, children: /* @__PURE__ */ jsx(\n NavigationMenuContentImpl,\n {\n ...props2,\n ref: composeRefs(ref, (node) => {\n if (isActive && node) setContent(node);\n })\n }\n ) }, value);\n })\n }\n );\n});\nvar FOCUS_GROUP_NAME = \"FocusGroup\";\nvar FocusGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeNavigationMenu, ...groupProps } = props;\n const context = useNavigationMenuContext(FOCUS_GROUP_NAME, __scopeNavigationMenu);\n return /* @__PURE__ */ jsx(FocusGroupCollection.Provider, { scope: __scopeNavigationMenu, children: /* @__PURE__ */ jsx(FocusGroupCollection.Slot, { scope: __scopeNavigationMenu, children: /* @__PURE__ */ jsx(Primitive.div, { dir: context.dir, ...groupProps, ref: forwardedRef }) }) });\n }\n);\nvar ARROW_KEYS = [\"ArrowRight\", \"ArrowLeft\", \"ArrowUp\", \"ArrowDown\"];\nvar FOCUS_GROUP_ITEM_NAME = \"FocusGroupItem\";\nvar FocusGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeNavigationMenu, ...groupProps } = props;\n const getItems = useFocusGroupCollection(__scopeNavigationMenu);\n const context = useNavigationMenuContext(FOCUS_GROUP_ITEM_NAME, __scopeNavigationMenu);\n return /* @__PURE__ */ jsx(FocusGroupCollection.ItemSlot, { scope: __scopeNavigationMenu, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n ...groupProps,\n ref: forwardedRef,\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isFocusNavigationKey = [\"Home\", \"End\", ...ARROW_KEYS].includes(event.key);\n if (isFocusNavigationKey) {\n let candidateNodes = getItems().map((item) => item.ref.current);\n const prevItemKey = context.dir === \"rtl\" ? \"ArrowRight\" : \"ArrowLeft\";\n const prevKeys = [prevItemKey, \"ArrowUp\", \"End\"];\n if (prevKeys.includes(event.key)) candidateNodes.reverse();\n if (ARROW_KEYS.includes(event.key)) {\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n event.preventDefault();\n }\n })\n }\n ) });\n }\n);\nfunction getTabbableCandidates(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\nfunction focusFirst(candidates) {\n const previouslyFocusedElement = document.activeElement;\n return candidates.some((candidate) => {\n if (candidate === previouslyFocusedElement) return true;\n candidate.focus();\n return document.activeElement !== previouslyFocusedElement;\n });\n}\nfunction removeFromTabOrder(candidates) {\n candidates.forEach((candidate) => {\n candidate.dataset.tabindex = candidate.getAttribute(\"tabindex\") || \"\";\n candidate.setAttribute(\"tabindex\", \"-1\");\n });\n return () => {\n candidates.forEach((candidate) => {\n const prevTabIndex = candidate.dataset.tabindex;\n candidate.setAttribute(\"tabindex\", prevTabIndex);\n });\n };\n}\nfunction useResizeObserver(element, onResize) {\n const handleResize = useCallbackRef(onResize);\n useLayoutEffect(() => {\n let rAF = 0;\n if (element) {\n const resizeObserver = new ResizeObserver(() => {\n cancelAnimationFrame(rAF);\n rAF = window.requestAnimationFrame(handleResize);\n });\n resizeObserver.observe(element);\n return () => {\n window.cancelAnimationFrame(rAF);\n resizeObserver.unobserve(element);\n };\n }\n }, [element, handleResize]);\n}\nfunction getOpenState(open) {\n return open ? \"open\" : \"closed\";\n}\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\nfunction whenMouse(handler) {\n return (event) => event.pointerType === \"mouse\" ? handler(event) : void 0;\n}\nvar Root2 = NavigationMenu;\nvar Sub = NavigationMenuSub;\nvar List = NavigationMenuList;\nvar Item = NavigationMenuItem;\nvar Trigger = NavigationMenuTrigger;\nvar Link = NavigationMenuLink;\nvar Indicator = NavigationMenuIndicator;\nvar Content = NavigationMenuContent;\nvar Viewport = NavigationMenuViewport;\nexport {\n Content,\n Indicator,\n Item,\n Link,\n List,\n NavigationMenu,\n NavigationMenuContent,\n NavigationMenuIndicator,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n NavigationMenuSub,\n NavigationMenuTrigger,\n NavigationMenuViewport,\n Root2 as Root,\n Sub,\n Trigger,\n Viewport,\n createNavigationMenuScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from 'react'\n\nimport { ChevronDownIcon } from '@radix-ui/react-icons'\nimport * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu'\nimport { cn } from '@utils/cn'\nimport { cva } from 'class-variance-authority'\n\nconst NavigationMenuRoot = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Root\n ref={ref}\n className={cn('relative z-10 flex max-w-max flex-1 items-center justify-center', className)}\n {...props}\n >\n {children}\n <NavigationMenuViewport />\n </NavigationMenuPrimitive.Root>\n))\nNavigationMenuRoot.displayName = NavigationMenuPrimitive.Root.displayName\n\nconst NavigationMenuList = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.List>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.List\n ref={ref}\n className={cn('group flex flex-1 list-none items-center justify-center space-x-1', className)}\n {...props}\n />\n))\nNavigationMenuList.displayName = NavigationMenuPrimitive.List.displayName\n\nconst NavigationMenuItem = NavigationMenuPrimitive.Item\n\nconst navigationMenuTriggerStyle = cva(\n 'group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50'\n)\n\nconst NavigationMenuTrigger = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <NavigationMenuPrimitive.Trigger\n ref={ref}\n className={cn(navigationMenuTriggerStyle(), 'group', className)}\n {...props}\n >\n {children}{' '}\n <ChevronDownIcon\n className=\"relative top-px ml-1 size-3 transition duration-300 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n))\nNavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName\n\nconst NavigationMenuContent = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Content\n ref={ref}\n className={cn(\n 'data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 left-0 top-0 w-full md:absolute md:w-auto',\n className\n )}\n {...props}\n />\n))\nNavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName\n\nconst NavigationMenuLink = NavigationMenuPrimitive.Link\n\nconst NavigationMenuViewport = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Viewport>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Viewport>\n>(({ className, ...props }, ref) => (\n <div className={cn('absolute left-0 top-full flex justify-center')}>\n <NavigationMenuPrimitive.Viewport\n className={cn(\n 'origin-top-center bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 relative mt-1.5 h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden rounded-md border shadow md:w-[var(--radix-navigation-menu-viewport-width)]',\n className\n )}\n ref={ref}\n {...props}\n />\n </div>\n))\nNavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName\n\nconst NavigationMenuIndicator = React.forwardRef<\n React.ElementRef<typeof NavigationMenuPrimitive.Indicator>,\n React.ComponentPropsWithoutRef<typeof NavigationMenuPrimitive.Indicator>\n>(({ className, ...props }, ref) => (\n <NavigationMenuPrimitive.Indicator\n ref={ref}\n className={cn(\n 'data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in top-full z-[1] flex h-1.5 items-end justify-center overflow-hidden',\n className\n )}\n {...props}\n >\n <div className=\"relative top-[60%] size-2 rotate-45 rounded-tl-sm bg-border shadow-md\" />\n </NavigationMenuPrimitive.Indicator>\n))\nNavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName\n\nconst NavigationMenu = {\n Root: NavigationMenuRoot,\n List: NavigationMenuList,\n Item: NavigationMenuItem,\n Content: NavigationMenuContent,\n Trigger: NavigationMenuTrigger,\n Link: NavigationMenuLink,\n Indicator: NavigationMenuIndicator,\n Viewport: NavigationMenuViewport\n}\n\nexport { NavigationMenu }\n","import * as React from 'react'\n\nimport { cn } from '@/utils/cn'\nimport * as SeparatorPrimitive from '@radix-ui/react-separator'\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn('shrink-0 bg-border', orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]', className)}\n {...props}\n />\n))\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n","import * as React from \"react\";\nconst SvgChatAvatar = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 16, height: 16, viewBox: \"0 0 16 16\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"mask\", { id: \"mask0_25509_229350\", style: {\n maskType: \"alpha\"\n}, maskUnits: \"userSpaceOnUse\", x: 0, y: -1, width: 16, height: 17 }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M10.7586 1.14253C9.23506 -0.381005 6.76493 -0.381007 5.24139 1.14253L1.14265 5.24128C-0.380882 6.76481 -0.380885 9.23495 1.14265 10.7585L5.24139 14.8572C6.76493 16.3808 9.23506 16.3808 10.7586 14.8572L14.8573 10.7585C16.3809 9.23495 16.3809 6.76481 14.8573 5.24128L10.7586 1.14253ZM6.81774 2.71888C7.47068 2.06593 8.52931 2.06593 9.18225 2.71888L13.281 6.81762C13.9339 7.47057 13.9339 8.5292 13.281 9.18214L9.18225 13.2809C8.52931 13.9338 7.47068 13.9338 6.81774 13.2809L2.719 9.18214C2.06605 8.5292 2.06605 7.47057 2.719 6.81762L6.81774 2.71888ZM6.32544 5.52134C6.16941 5.36532 5.91643 5.36534 5.76038 5.52138C5.60434 5.67743 5.60432 5.93042 5.76034 6.08644C6.69641 7.02251 6.69629 8.54055 5.76008 9.47677C5.60403 9.63281 5.60401 9.8858 5.76004 10.0418C5.91606 10.1978 6.16904 10.1978 6.32509 10.0418C7.2613 9.10556 8.77934 9.10544 9.71541 10.0415C9.87144 10.1975 10.1244 10.1975 10.2805 10.0415C10.4365 9.88543 10.4365 9.63244 10.2805 9.47642C9.34444 8.54035 9.34455 7.02231 10.2808 6.08609C10.4368 5.93004 10.4368 5.67706 10.2808 5.52104C10.1248 5.36501 9.87181 5.36503 9.71576 5.52108C8.77954 6.4573 7.26151 6.45741 6.32544 5.52134Z\", fill: \"#60606C\", style: {\n fill: \"#60606C\",\n fill: \"color(display-p3 0.3760 0.3760 0.4240)\",\n fillOpacity: 1\n} })), /* @__PURE__ */ React.createElement(\"g\", { mask: \"url(#mask0_25509_229350)\" }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M10.7586 1.14253C9.23506 -0.381005 6.76493 -0.381007 5.24139 1.14253L1.14265 5.24128C-0.380882 6.76481 -0.380885 9.23495 1.14265 10.7585L5.24139 14.8572C6.76493 16.3808 9.23506 16.3808 10.7586 14.8572L14.8573 10.7585C16.3809 9.23495 16.3809 6.76481 14.8573 5.24128L10.7586 1.14253ZM6.81774 2.71888C7.47068 2.06593 8.52931 2.06593 9.18225 2.71888L13.281 6.81762C13.9339 7.47057 13.9339 8.5292 13.281 9.18214L9.18225 13.2809C8.52931 13.9338 7.47068 13.9338 6.81774 13.2809L2.719 9.18214C2.06605 8.5292 2.06605 7.47057 2.719 6.81762L6.81774 2.71888ZM6.32544 5.52134C6.16941 5.36532 5.91643 5.36534 5.76038 5.52138C5.60434 5.67743 5.60432 5.93042 5.76034 6.08644C6.69641 7.02251 6.69629 8.54055 5.76008 9.47677C5.60403 9.63281 5.60401 9.8858 5.76004 10.0418C5.91606 10.1978 6.16904 10.1978 6.32509 10.0418C7.2613 9.10556 8.77934 9.10544 9.71541 10.0415C9.87144 10.1975 10.1244 10.1975 10.2805 10.0415C10.4365 9.88543 10.4365 9.63244 10.2805 9.47642C9.34444 8.54035 9.34455 7.02231 10.2808 6.08609C10.4368 5.93004 10.4368 5.67706 10.2808 5.52104C10.1248 5.36501 9.87181 5.36503 9.71576 5.52108C8.77954 6.4573 7.26151 6.45741 6.32544 5.52134Z\", fill: \"#60606C\", style: {\n fill: \"#60606C\",\n fill: \"color(display-p3 0.3760 0.3760 0.4240)\",\n fillOpacity: 1\n} }), /* @__PURE__ */ React.createElement(\"g\", { style: {\n mixBlendMode: \"plus-lighter\"\n}, opacity: 0.7, filter: \"url(#filter0_f_25509_229350)\" }, /* @__PURE__ */ React.createElement(\"circle\", { cx: 9.08664, cy: 6.5452, r: 8.72727, fill: \"url(#paint0_linear_25509_229350)\", style: {} }))), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"filter\", { id: \"filter0_f_25509_229350\", x: -5.24708, y: -7.78853, width: 28.666, height: 28.6674, filterUnits: \"userSpaceOnUse\", colorInterpolationFilters: \"sRGB\" }, /* @__PURE__ */ React.createElement(\"feFlood\", { floodOpacity: 0, result: \"BackgroundImageFix\" }), /* @__PURE__ */ React.createElement(\"feBlend\", { mode: \"normal\", in: \"SourceGraphic\", in2: \"BackgroundImageFix\", result: \"shape\" }), /* @__PURE__ */ React.createElement(\"feGaussianBlur\", { stdDeviation: 2.80323, result: \"effect1_foregroundBlur_25509_229350\" })), /* @__PURE__ */ React.createElement(\"linearGradient\", { id: \"paint0_linear_25509_229350\", x1: 0.359375, y1: -2.18207, x2: 18.9813, y2: -0.832256, gradientUnits: \"userSpaceOnUse\" }, /* @__PURE__ */ React.createElement(\"stop\", { stopColor: \"#FAF4EB\", style: {\n stopColor: \"#FAF4EB\",\n stopColor: \"color(display-p3 0.9804 0.9569 0.9216)\",\n stopOpacity: 1\n} }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 0.334154, stopColor: \"#E6A0BD\", style: {\n stopColor: \"#E6A0BD\",\n stopColor: \"color(display-p3 0.9020 0.6275 0.7412)\",\n stopOpacity: 1\n} }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 0.690299, stopColor: \"#9188E7\", style: {\n stopColor: \"#9188E7\",\n stopColor: \"color(display-p3 0.5686 0.5333 0.9059)\",\n stopOpacity: 1\n} }), /* @__PURE__ */ React.createElement(\"stop\", { offset: 1, stopColor: \"#C6F7FE\", style: {\n stopColor: \"#C6F7FE\",\n stopColor: \"color(display-p3 0.7765 0.9686 0.9961)\",\n stopOpacity: 1\n} }))));\nexport default SvgChatAvatar;\n","import { ChangeEvent, FC, HTMLAttributes, KeyboardEvent, PropsWithChildren, ReactNode, RefObject } from 'react'\n\nimport { Button, Icon, Input } from '@/components'\nimport ChatAvatarIcon from '@/icons/chat-avatar.svg'\nimport { cn } from '@utils/cn'\n\nconst Root: FC<PropsWithChildren<HTMLAttributes<HTMLElement>>> = ({ children }) => {\n return <div className=\"flex size-full max-w-[460px] flex-col bg-background-1\">{children}</div>\n}\n\nconst Header: FC<{ onClose: () => void }> = ({ onClose }) => {\n return (\n <div className=\"sticky top-0 flex items-center justify-between bg-background-1 px-6 py-4\">\n <p className=\"text-16 font-medium text-foreground-1\">AI Assistant</p>\n <Button size=\"icon\" variant=\"custom\" className=\"-mr-2 text-icons-4 hover:text-icons-2\" onClick={onClose}>\n <Icon name=\"close\" size={16} />\n <span className=\"sr-only\">Close</span>\n </Button>\n </div>\n )\n}\n\nconst Body: FC<PropsWithChildren<HTMLAttributes<HTMLElement>>> = ({ children }) => {\n return (\n <div className=\"scrollbar-hidden flex flex-1 flex-col gap-y-7 overflow-y-auto overflow-x-hidden px-6 py-2\">\n {children}\n </div>\n )\n}\n\nconst Footer: FC<PropsWithChildren<HTMLAttributes<HTMLElement>>> = ({ children }) => {\n return <div className=\"sticky bottom-0 bg-background-1 px-6 py-3\">{children}</div>\n}\n\ninterface MessageProps extends PropsWithChildren<HTMLAttributes<HTMLElement>> {\n self?: boolean\n avatar?: ReactNode\n actions?: ReactNode\n}\n\nconst Message: FC<MessageProps> = ({ self, avatar, actions, children }) => {\n return (\n <div\n className={cn('flex gap-x-3 content-center items-start', {\n 'place-content-end': self\n })}\n >\n {!self && <div className=\"mt-0.5\">{avatar ? avatar : <ChatAvatarIcon />}</div>}\n <div\n className={cn('flex flex-col gap-3', {\n 'w-[85%] items-end': self,\n 'w-full': !self\n })}\n >\n <div\n className={cn('text-14 text-foreground-1 leading-relaxed', {\n 'px-3.5 py-2 bg-background-8 rounded-[8px_8px_2px_8px]': self\n })}\n >\n {children}\n </div>\n {actions && <div className=\"mt-1 flex items-center gap-1\">{actions}</div>}\n </div>\n </div>\n )\n}\n\nconst CodeBlock: FC<PropsWithChildren<{ className?: string }>> = ({ children, className }) => {\n return (\n <code\n className={cn(\n 'inline-block rounded-[3px] border border-borders-2 bg-background-8 px-1.5 text-13 leading-[18px]',\n className\n )}\n >\n {children}\n </code>\n )\n}\n\ninterface TypingProps {\n avatar?: ReactNode\n}\n\nconst Typing: FC<TypingProps> = ({ avatar }) => {\n return (\n <div className=\"mt-3 flex items-center gap-x-3.5\">\n {avatar || <ChatAvatarIcon />}\n <span className=\"size-2.5 rounded-full bg-foreground-2\" aria-hidden />\n </div>\n )\n}\n\ninterface SeparatorProps {\n title: string\n}\n\nconst Separator: FC<SeparatorProps> = ({ title }) => {\n return <div className=\"text-center text-xs font-medium opacity-50\">{title}</div>\n}\n\nconst emptyStateButtons = [\n {\n text: 'Pipeline design'\n },\n {\n text: 'Security reports'\n },\n {\n text: 'Error detection'\n },\n {\n text: 'Testing'\n }\n]\n\nconst EmptyState: FC = () => {\n return (\n <div className=\"mt-auto flex flex-col gap-5\">\n <div>\n <span className=\"block text-20 font-semibold leading-none text-foreground-4\">Hello Steven,</span>\n <span className=\"mt-[3px] block text-20 font-semibold leading-none text-foreground-1\">how can I help?</span>\n </div>\n <div>\n <span className=\"text-14 leading-relaxed text-foreground-2\">\n Here are some suggestions to enhance your CI/CD pipeline:\n </span>\n <ul className=\"mt-3 flex flex-col gap-y-1.5\">\n {emptyStateButtons.map(({ text }, index) => (\n <li key={index}>\n <Button\n className=\"w-full justify-start rounded-lg bg-background-3 px-3.5 text-foreground-1 hover:bg-background-12\"\n size=\"lg\"\n >\n {text}\n </Button>\n </li>\n ))}\n </ul>\n </div>\n </div>\n )\n}\n\ninterface InputFieldProps {\n value?: string\n inputRef?: RefObject<HTMLInputElement>\n onChange?: (e: ChangeEvent<HTMLInputElement>) => void\n onKeyDown?: (e: KeyboardEvent<HTMLInputElement>) => void\n onSend?: () => void\n placeholder?: string\n disabled?: boolean\n sendIcon?: ReactNode\n}\n\nconst InputField: FC<InputFieldProps> = ({\n value = '',\n inputRef,\n onChange = () => {},\n onKeyDown = () => {},\n onSend = () => {},\n placeholder = 'Type a message...',\n disabled = false,\n sendIcon = <Icon name=\"arrow\" size={12} />\n}) => {\n return (\n <div className=\"relative\">\n <Input\n ref={inputRef}\n className=\"h-11 flex-1 rounded-lg pl-3 pr-12 focus:ring-0 focus-visible:h-16 focus-visible:rounded-lg focus-visible:pb-8\"\n value={value}\n onChange={onChange}\n onKeyDown={event => {\n onKeyDown(event)\n if (event.code === 'Enter') {\n onSend()\n }\n }}\n placeholder={placeholder}\n aria-label=\"Chat input\"\n />\n <Button\n className=\"absolute bottom-2 right-2 z-10 size-7 rounded-full\"\n onClick={onSend}\n size=\"icon\"\n disabled={disabled}\n aria-label=\"Send message\"\n >\n {sendIcon}\n </Button>\n </div>\n )\n}\n\nexport const Chat = {\n Root,\n Body,\n Header,\n Footer,\n Message,\n Typing,\n CodeBlock,\n Separator,\n EmptyState,\n Input: InputField\n}\n","import { CSSProperties, useCallback, useEffect, useState } from 'react'\n\nimport { DiffFile, DiffModeEnum, DiffView } from '@git-diff-view/react'\nimport { getDiffViewHighlighter } from '@git-diff-view/shiki'\nimport { HighlighterType } from '@views/repo/pull-request/hooks/useDiffHighlighter'\nimport { debounce } from 'lodash-es'\n\ninterface ChatDiffViewerProps {\n data: string\n mode?: DiffModeEnum\n lang?: string\n fileName?: string\n}\n\nexport const ChatDiffViewer = ({ data, mode = 4, lang = 'go', fileName }: ChatDiffViewerProps) => {\n const [, setLoading] = useState(false)\n const [diffFileInstance, setDiffFileInstance] = useState<DiffFile>()\n const [highlighter, setHighlighter] = useState<HighlighterType>()\n\n useEffect(() => {\n const init = async () => {\n setLoading(true)\n try {\n const shikiHighlighter = await getDiffViewHighlighter()\n if (shikiHighlighter) {\n setHighlighter(shikiHighlighter as HighlighterType)\n }\n } finally {\n setLoading(false)\n }\n }\n init()\n }, [setLoading])\n\n const setDiffInstanceCb = useCallback(\n debounce((lang: string, diffString: string, content?: string) => {\n if (!diffString) {\n setDiffFileInstance(undefined)\n return\n }\n const data = DiffFile.createInstance({\n newFile: { fileLang: lang, content: content },\n hunks: [diffString]\n })\n try {\n data?.init()\n if (mode === DiffModeEnum.Split) {\n data?.buildSplitDiffLines()\n } else {\n data?.buildUnifiedDiffLines()\n }\n\n setDiffFileInstance(data)\n } catch (e) {\n alert((e as Error).message)\n }\n }, 100),\n []\n )\n\n useEffect(() => {\n if (data) {\n setDiffInstanceCb(lang, data)\n }\n }, [data, lang, setDiffInstanceCb])\n\n return (\n <div className=\"mr-7 mt-3 flex flex-col rounded-md border border-borders-1 bg-background-1\">\n {fileName && (\n <span className=\"rounded-[inherit] border-b border-borders-1 bg-background-2 p-4 text-14 font-medium text-foreground-1\">\n {fileName}\n </span>\n )}\n {diffFileInstance && (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n <DiffView\n style={{ '--diff-plain-lineNumber--': 'hsl(var(--canary-background-01))' } as CSSProperties}\n className=\"w-full text-foreground-8\"\n diffFile={diffFileInstance}\n diffViewFontSize={14}\n diffViewHighlight={true}\n diffViewMode={4}\n registerHighlighter={highlighter}\n diffViewWrap={false}\n />\n )}\n </div>\n )\n}\n","import { FC } from 'react'\n\nimport { Button, Chat, ChatDiffViewer, Icon } from '@/components'\n\nconst diffData =\n 'diff --git a/packages/ui/src/shared-style-variables.css b/packages/ui/src/shared-style-variables.css\\n' +\n 'index 68ad3fe8a7a992512924a537e5407fed671d645d..d7a93ea2d4900655ba8938218edec1524a4bb3da 100644\\n' +\n '--- a/packages/ui/src/shared-style-variables.css\\n' +\n '+++ b/packages/ui/src/shared-style-variables.css\\n' +\n '@@ -292,7 +290,5 @@\\n' +\n ' },\\n' +\n ' Issue: Scm.Issue}\\n' +\n '- Title: src.Resource.PullRequest.Description,\\n' +\n '- Link: src.Resource.PullRequest.URL,\\n' +\n '- Body: src.Resource.PullRequest.Description,\\n' +\n '+ Title: src.Resource.PullRequest.Description,\\n' +\n '+ Author: scm.User{\\n' +\n '+ Body: src.Resource.PullRequest.Description,\\n'\n\nexport const ChatPreviewWrapper: FC = () => {\n return (\n <div className=\"h-[calc(100vh-100px)] border-r border-borders-4\">\n <Chat.Root>\n <Chat.Header onClose={() => {}} />\n <Chat.Body>\n <Chat.Message>\n Hey Olivia! I've finished with the requirements doc! I made some notes in the gdoc as well for Phoenix\n to look over.\n </Chat.Message>\n <Chat.Message self>Awesome! Thanks, I'll take a look at this today.</Chat.Message>\n <Chat.Message\n actions={\n <Button\n className=\"flex h-6 gap-x-1 rounded bg-background-8 px-2.5 text-foreground-8 hover:bg-background-9 hover:text-foreground-1\"\n size=\"sm\"\n variant=\"custom\"\n >\n <Icon className=\"shrink-0 text-icons-9\" name=\"repo-icon\" size={12} />\n main\n </Button>\n }\n >\n No rush though — we still have to wait for Lana's design. Click the button in the actions panel below to\n see branches which require your attention to fix and redeploy.\n </Chat.Message>\n <Chat.Message>\n Hey Olivia, can you please review the latest design when you have a chance?\n <ChatDiffViewer data={diffData} fileName=\"scm/driver/azure/webhook.go\" />\n </Chat.Message>\n <Chat.Message self>\n Sure thing, I'll have a look today. They're looking great! Here's some code to make it better\n though:\n <Chat.CodeBlock>hello world</Chat.CodeBlock>\n </Chat.Message>\n <Chat.Typing />\n </Chat.Body>\n <Chat.Footer>\n <Chat.Input />\n </Chat.Footer>\n </Chat.Root>\n </div>\n )\n}\n","import { FC } from 'react'\n\nimport { Chat } from '@/components'\n\nexport const ChatEmptyPreviewWrapper: FC = () => {\n return (\n <div className=\"h-[calc(100vh-100px)] border-r border-borders-4\">\n <Chat.Root>\n <Chat.Body>\n <Chat.EmptyState />\n </Chat.Body>\n <Chat.Footer>\n <Chat.Input />\n </Chat.Footer>\n </Chat.Root>\n </div>\n )\n}\n","import { FormEvent, ReactNode, useState } from 'react'\n\nimport { Dialog } from './dialog'\nimport { Root as SearchBox } from './search-box'\nimport { Spacer } from './spacer'\n\ninterface ProjectProps {\n logo: ReactNode\n}\n\nfunction Root({ logo }: ProjectProps) {\n const [isSearchDialogOpen, setSearchDialogOpen] = useState(false)\n\n const openSearchDialog = (e?: FormEvent<HTMLInputElement>) => {\n e?.preventDefault()\n e?.stopPropagation()\n\n setSearchDialogOpen(true)\n }\n\n const closeSearchDialog = () => {\n setSearchDialogOpen(false)\n }\n\n return (\n <div className=\"flex w-full flex-col place-items-start px-3 pb-3\">\n <div className=\"flex h-[58px] items-center px-1\">{logo}</div>\n <SearchBox\n width=\"full\"\n placeholder=\"Search...\"\n hasShortcut\n shortcutLetter=\"K\"\n shortcutModifier=\"cmd\"\n value=\"\"\n onSearch={openSearchDialog}\n handleChange={openSearchDialog}\n />\n <Dialog.Root open={isSearchDialogOpen} onOpenChange={closeSearchDialog}>\n <Dialog.Content className=\"h-[600px] max-w-[800px]\">\n <Dialog.Header>\n <Dialog.Title>Search</Dialog.Title>\n <Dialog.Description>\n <Spacer size={6} />\n <SearchBox width=\"full\" placeholder=\"Search...\" />\n </Dialog.Description>\n </Dialog.Header>\n </Dialog.Content>\n </Dialog.Root>\n </div>\n )\n}\n\nexport { Root }\n","import { ReactNode } from 'react'\n\nimport { Accordion, Icon, Text } from '@/components'\nimport { useRouterContext } from '@/context'\nimport { cn } from '@utils/cn'\n\ninterface FolderItemProps {\n children: ReactNode\n value?: string\n isActive?: boolean\n content?: ReactNode\n chevronClassName?: string\n link: string\n}\n\nfunction FolderItem({ children, value = '', isActive, content, chevronClassName, link }: FolderItemProps) {\n const { Link } = useRouterContext()\n return (\n <Accordion.Item value={value} className=\"border-none\">\n <Accordion.Trigger\n className={cn(\n `relative w-full p-0 pr-1.5\n before:absolute before:z-[-1] before:top-0 before:-left-1.5 before:right-0 before:h-full before:rounded`,\n {\n 'before:bg-background-4': isActive\n }\n )}\n leftChevron\n rotateChevron\n chevronClassName={\n chevronClassName || 'text-icons-9 group-hover:text-icons-2 group-data-[state=open]:text-icons-2'\n }\n >\n <div\n className={cn(\n `flex w-full justify-start overflow-hidden transition-colors duration-200 text-foreground-2\n group-hover:text-foreground-1\n group-data-[state=open]:text-foreground-1`,\n {\n 'text-foreground-1 ': isActive\n }\n )}\n >\n <div className=\"flex w-full items-center gap-1.5 py-1.5\">\n <Icon\n className={cn(\n 'min-w-4 text-icons-9 duration-100 ease-in-out group-hover:text-icons-2 group-data-[state=open]:text-icons-2',\n { 'text-icons-2': isActive }\n )}\n name=\"folder\"\n size={16}\n />\n <Link to={link} className=\"overflow-hidden\">\n <Text className=\"duration-100 ease-in-out\" color=\"inherit\" as=\"p\" size={2} truncate weight=\"medium\">\n {children}\n </Text>\n </Link>\n </div>\n </div>\n </Accordion.Trigger>\n {!!content && (\n <Accordion.Content className=\"flex w-full items-center gap-2 pb-0 pl-4\">{content}</Accordion.Content>\n )}\n </Accordion.Item>\n )\n}\n\ninterface FileItemProps {\n children: ReactNode\n isActive?: boolean\n link?: string\n}\n\nfunction FileItem({ children, isActive, link }: FileItemProps) {\n const { Link } = useRouterContext()\n const comp = (\n <div\n className={cn(\n `relative group flex items-center justify-start gap-1.5 py-1.5 pr-1.5 pl-4 text-foreground-2\n hover:text-foreground-1\n before:absolute before:z-[-1] before:top-0 before:left-2.5 before:right-0 before:h-full before:rounded`,\n {\n 'text-foreground-1 before:bg-background-4': isActive\n }\n )}\n >\n <Icon\n className={cn('min-w-4 text-icons-9 duration-100 ease-in-out group-hover:text-icons-2', {\n 'text-icons-2': isActive\n })}\n name=\"file\"\n size={16}\n />\n <Text className=\"duration-100 ease-in-out\" size={2} color=\"inherit\" weight=\"medium\" truncate>\n {children}\n </Text>\n </div>\n )\n\n return link ? <Link to={link}>{comp}</Link> : comp\n}\n\ninterface RootProps {\n children: ReactNode\n onValueChange: (value: string | string[]) => void\n value: string[]\n}\n\nfunction Root({ children, onValueChange, value }: RootProps) {\n return (\n <Accordion.Root type=\"multiple\" className=\"w-full\" onValueChange={onValueChange} value={value}>\n {children}\n </Accordion.Root>\n )\n}\n\nexport { Root, FileItem, FolderItem }\n","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","import { ColorType, ContentStyleType, ContrastType, FullTheme, ModeType } from '@/context'\n\nexport interface ThemeInterface {\n mode: ModeType\n contrast: ContrastType\n colorAdjustment: ColorType\n accentColor: AccentColor\n grayColor: GrayColor\n}\n\nexport enum AccentColor {\n Red = '#FF4D4D',\n Green = '#63E979',\n Yellow = '#FFC44D',\n Cyan = '#4DA6FF',\n Pink = '#FF66E5',\n Purple = '#B266FF',\n Violet = '#9580FF',\n Blue = '#4D6AFF',\n Turquoise = '#33DDFF',\n Orange = '#FF884D',\n Brown = '#A68059',\n LightGreen = '#4DFFB5',\n Lime = '#A6FF4D',\n White = '#FFFFFF'\n}\n\nexport enum GrayColor {\n First = '#6B6E74',\n Second = '#6E6E6E',\n Third = '#6F6D76',\n Fourth = '#6B6E75',\n Fifth = '#66716B',\n Sixth = '#6B7068',\n Seventh = '#6F6D68'\n}\n\nexport interface ThemeDialogProps {\n defaultTheme?: ThemeInterface\n theme?: FullTheme\n isInset?: boolean\n setTheme: (theme: FullTheme) => void\n open: boolean\n onOpenChange: (open: boolean) => void\n onInsetChange?: (style: ContentStyleType) => void\n children?: React.ReactNode\n showSystemMode?: boolean\n showAccentColor?: boolean\n showGrayColor?: boolean\n}\n","import { FC, useEffect, useState } from 'react'\n\nimport { Dialog, getModeColorContrastFromFullTheme, Icon, Select, Separator } from '@/components'\nimport { ColorType, ContentStyleType, ContrastType, ModeType } from '@/context/theme'\nimport darkModeImage from '@/svgs/theme-dark.png'\nimport lightModeImage from '@/svgs/theme-light.png'\nimport { cn } from '@/utils/cn'\n\nimport { AccentColor, GrayColor, ThemeDialogProps } from './types'\n\nconst ThemeDialog: FC<ThemeDialogProps> = ({\n theme,\n isInset,\n setTheme,\n open,\n onOpenChange,\n onInsetChange,\n children,\n showSystemMode,\n showAccentColor,\n showGrayColor\n}) => {\n const [accentColor, setAccentColor] = useState<AccentColor>(AccentColor.Blue)\n const [grayColor, setGrayColor] = useState<GrayColor>(GrayColor.First)\n\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')\n const [systemMode, setSystemMode] = useState<ModeType>(mediaQuery.matches ? ModeType.Dark : ModeType.Light)\n useEffect(() => {\n const updateSystemTheme = () => {\n setSystemMode(mediaQuery.matches ? ModeType.Dark : ModeType.Light)\n }\n\n mediaQuery.addEventListener('change', updateSystemTheme)\n\n return () => {\n mediaQuery.removeEventListener('change', updateSystemTheme)\n }\n }, [])\n\n const { mode, color: colorAdjustment, contrast } = getModeColorContrastFromFullTheme(theme)\n\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n {!!children && <Dialog.Trigger asChild>{children}</Dialog.Trigger>}\n <Dialog.Content className=\"max-w-[538px]\">\n <Dialog.Title className=\"text-20 font-medium\">Appearance settings</Dialog.Title>\n {/* Mode */}\n <div className=\"mt-1 flex flex-col gap-y-5\">\n <div className=\"flex flex-col\">\n <span className=\"text-16 text-foreground-1 font-medium\">Mode</span>\n <p className=\"text-14 text-foreground-3 mt-1.5 leading-snug\">\n Choose Dark mode for low light or Light mode for bright spaces.\n </p>\n <div className=\"mt-[18px] grid grid-cols-2 gap-4\">\n {Object.entries(ModeType).map(([key, value]) => {\n if (!showSystemMode && value === ModeType.System) return null\n const valueMode = value === ModeType.System ? systemMode : value\n return (\n <button\n className=\"flex flex-col gap-y-2 focus-visible:outline-none\"\n key={key}\n onClick={() => {\n setTheme(`${value}-${colorAdjustment}-${contrast}`)\n }}\n >\n <div className=\"relative\">\n <img\n src={valueMode === ModeType.Dark ? darkModeImage : lightModeImage}\n alt=\"\"\n className={cn(\n 'w-full h-auto rounded border',\n mode === value ? 'border-borders-accent' : 'border-borders-4'\n )}\n />\n {mode === value && (\n <Icon className=\"text-foreground-1 absolute bottom-2 left-2\" name=\"checkbox-circle\" size={16} />\n )}\n <div\n className=\"absolute right-[27px] top-[61px] h-2 w-9 rounded-sm\"\n style={{\n backgroundColor:\n accentColor === AccentColor.White\n ? value === ModeType.Light\n ? 'hsla(240, 6%, 40%, 1)'\n : 'hsla(240, 9%, 67%, 1)'\n : accentColor\n }}\n aria-hidden\n />\n </div>\n <span className=\"text-14 text-foreground-1 leading-tight\">{key}</span>\n </button>\n )\n })}\n </div>\n </div>\n\n <Separator className=\"bg-borders-4 h-px\" />\n\n {/* Contrast */}\n <div className=\"grid grid-cols-[246px_1fr] gap-x-8\">\n <div>\n <span className=\"text-16 text-foreground-1 font-medium\">Contrast</span>\n <p className=\"text-14 text-foreground-3 mt-1.5 leading-snug\">\n High contrast improves readability, Dimmer mode reduces glare.\n </p>\n </div>\n <Select.Root\n name=\"contrast\"\n value={contrast}\n onValueChange={(value: ContrastType) => {\n setTheme(`${mode}-${colorAdjustment}-${value}`)\n }}\n placeholder=\"Select\"\n >\n <Select.Content>\n {Object.entries(ContrastType).map(([key, value]) => (\n <Select.Item key={value} value={value}>\n {key}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Root>\n </div>\n\n <Separator className=\"bg-borders-4 h-px\" />\n\n {/* Color Adjustment */}\n <div className=\"grid grid-cols-[246px_1fr] gap-x-8\">\n <div>\n <span className=\"text-16 text-foreground-1 font-medium\">Color adjustment</span>\n <p className=\"text-14 text-foreground-3 mt-1.5 leading-snug\">\n Adjust colors for different types of color blindness.\n </p>\n </div>\n <Select.Root\n name=\"color-adjustment\"\n value={colorAdjustment}\n onValueChange={(value: ColorType) => {\n setTheme(`${mode}-${value}-${contrast}`)\n }}\n placeholder=\"Select\"\n >\n <Select.Content>\n {Object.entries(ColorType).map(([key, value]) => (\n <Select.Item key={value} value={value}>\n {key}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Root>\n </div>\n\n <Separator className=\"bg-borders-4 h-px\" />\n\n {/* Inset Adjustment */}\n <div className=\"grid grid-cols-[246px_1fr] gap-x-8\">\n <div>\n <span className=\"text-16 text-foreground-1 font-medium\">Content style</span>\n <p className=\"text-14 text-foreground-3 mt-1.5 leading-snug\">Choose the style of the content area.</p>\n </div>\n <Select.Root\n name=\"color-adjustment\"\n value={isInset ? ContentStyleType.Inset : ContentStyleType.Default}\n onValueChange={onInsetChange}\n placeholder=\"Select\"\n >\n <Select.Content>\n {Object.values(ContentStyleType).map(value => (\n <Select.Item key={value} value={value}>\n {value === ContentStyleType.Inset ? 'Inset' : 'Default'}\n </Select.Item>\n ))}\n </Select.Content>\n </Select.Root>\n </div>\n\n {/* Accent Color */}\n {showAccentColor ? (\n <>\n <Separator className=\"bg-borders-4 h-px\" />\n <div className=\"grid grid-cols-[246px_1fr] gap-x-8\">\n <div>\n <span className=\"text-16 text-foreground-1 font-medium\">Accent color</span>\n <p className=\"text-14 text-foreground-3 mt-1.5 leading-snug\">Select your application accent color.</p>\n </div>\n <div className=\"flex flex-wrap gap-1.5\">\n {Object.values(AccentColor).map(item => (\n <button\n key={item}\n className={cn(\n 'focus-visible:rounded-full h-[26px] w-[26px] rounded-full',\n accentColor === item && 'border border-borders-8'\n )}\n onClick={() => {\n setAccentColor(item)\n }}\n >\n <span\n style={{\n backgroundColor:\n item === AccentColor.White && mode === ModeType.Light ? 'hsla(240, 6%, 40%, 1)' : item\n }}\n className=\"m-auto block size-[18px] rounded-full\"\n />\n </button>\n ))}\n </div>\n </div>\n </>\n ) : null}\n\n {/* Gray Color */}\n {showGrayColor ? (\n <>\n <Separator className=\"bg-borders-4 h-px\" />\n <div className=\"grid grid-cols-[246px_1fr] gap-x-8\">\n <div>\n <span className=\"text-16 text-foreground-1 font-medium\">Gray color</span>\n <p className=\"text-14 text-foreground-3 mt-1.5 leading-snug\">Select your application gray color.</p>\n </div>\n <div className=\"flex flex-wrap gap-1.5\">\n {Object.values(GrayColor).map(item => (\n <button\n key={item}\n className={cn(\n 'focus-visible:rounded-full h-[26px] w-[26px] rounded-full',\n grayColor === item && 'border border-borders-8'\n )}\n onClick={() => {\n setGrayColor(item)\n }}\n >\n <span style={{ backgroundColor: item }} className=\"m-auto block size-[18px] rounded-full\" />\n </button>\n ))}\n </div>\n </div>\n </>\n ) : null}\n </div>\n </Dialog.Content>\n </Dialog.Root>\n )\n}\n\nexport { ThemeDialog }\n","export enum Language {\n English = 'English',\n French = 'French'\n}\n\nexport enum LanguageCode {\n EN = 'en',\n FR = 'fr'\n}\n\nexport interface LanguageInterface {\n code: LanguageCode\n name: Language\n}\n\nexport interface LanguageDialogProps {\n defaultLanguage?: LanguageCode\n language?: LanguageCode\n supportedLanguages: LanguageInterface[]\n open: boolean\n onOpenChange: (open: boolean) => void\n onChange: (language: LanguageInterface) => void\n onSave: (language: LanguageInterface) => void\n onCancel: () => void\n children?: React.ReactNode\n}\n","import { FC, useEffect, useState } from 'react'\n\nimport { Dialog, Icon } from '@/components'\nimport { cn } from '@utils/cn'\n\nimport { Language, LanguageCode, LanguageDialogProps, LanguageInterface } from './types'\n\nexport const languages: LanguageInterface[] = [\n { code: LanguageCode.EN, name: Language.English },\n { code: LanguageCode.FR, name: Language.French }\n]\n\nconst LanguageDialog: FC<LanguageDialogProps> = ({\n defaultLanguage = LanguageCode.EN,\n language,\n supportedLanguages,\n open,\n onOpenChange,\n onChange,\n children\n}) => {\n const [selectedLanguage, setSelectedLanguage] = useState<LanguageCode | null>(null)\n\n useEffect(() => {\n if (language) {\n setSelectedLanguage(language)\n } else if (defaultLanguage) {\n setSelectedLanguage(defaultLanguage)\n }\n }, [defaultLanguage, language])\n\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n {!!children && <Dialog.Trigger asChild>{children}</Dialog.Trigger>}\n <Dialog.Content className=\"max-w-[400px]\">\n <Dialog.Title className=\"text-20 font-medium\">Language</Dialog.Title>\n <div className=\"mt-1 flex flex-col gap-3\">\n {supportedLanguages.map(lang => (\n <button\n key={lang.code}\n className=\"group relative flex cursor-pointer items-center justify-between rounded-md px-0 focus:ring-0 focus-visible:outline-none\"\n onClick={() => {\n setSelectedLanguage(lang.code)\n onChange(lang)\n }}\n >\n <div className=\"flex items-center gap-2\">\n <div className=\"flex size-6 items-center justify-center rounded bg-background-12 text-12 uppercase text-foreground-3\">\n {lang.code}\n </div>\n <span\n className={cn(\n 'group-hover:text-foreground-1',\n selectedLanguage === lang.code ? 'text-foreground-1' : 'text-foreground-2'\n )}\n >\n {lang.name}\n </span>\n </div>\n {selectedLanguage === lang.code && <Icon className=\"text-icons-2\" name=\"tick\" size={12} />}\n <span\n className={cn(\n 'absolute -inset-x-2 -inset-y-1 rounded group-hover:bg-background-4',\n selectedLanguage === lang.code && 'bg-background-4'\n )}\n aria-hidden\n />\n </button>\n ))}\n </div>\n </Dialog.Content>\n </Dialog.Root>\n )\n}\n\nexport { LanguageDialog }\n"],"names":["MoreSubmenu","showMoreMenu","handleMoreMenu","items","NavLink","useRouterContext","Sheet","jsxs","jsx","NavbarSkeleton","ScrollArea","Spacer","group","group_idx","item","isActive","Icon","SettingsMenu","showSettingMenu","handleSettingsMenu","DraggableItem","id","children","Tag","className","attributes","listeners","setNodeRef","transform","transition","isDragging","useSortable","style","CSS","cn","filterItems","categories","query","acc","category","filteredItems","ManageNavigationSearch","navbarMenuData","addToPinnedItems","setFilteredItems","useState","isSearchDialogOpen","setSearchDialogOpen","inputRef","useRef","popoverRef","searchQuery","handleSearchChange","handleResetSearch","useDebounceSearch","val","handleItemClick","handleInputFocus","useEffect","handleTabKey","e","isShift","activeElement","firstFocusableElement","countFilteredItems","Popover","SearchBox.Root","Text","index","Button","filterRecentItems","pinnedItems","recentItems","pinnedItem","filterMenuData","menuData","ManageNavigation","showManageNavigation","onSave","onClose","isSubmitting","submitted","currentPinnedItems","setCurrentPinnedItems","currentFilteredRecentItems","setCurrentFilteredRecentItems","isRecentCleared","setIsRecentCleared","handleDragEnd","getItemId","useDragAndDrop","handleCancel","handleClearRecent","onSubmit","updatePinnedItems","prevRecentItems","unpinnedItems","newItem","recentItem","removeFromPinnedItems","permanentlyPinnedItems","useMemo","draggablePinnedItems","AlertDialog","DndContext","closestCenter","SortableContext","_","Fragment","ButtonGroup","SidebarItem","isRecent","handleChangePinnedMenuItem","handleRemoveRecentMenuItem","handleCustomNav","t","iconName","handlePin","handleRemoveRecent","dropdownItems","DropdownMenu","Sidebar","SidebarSearchLegacy","logo","openSearchDialog","closeSearchDialog","Dialog","Root","React","props","ref","CommandPrimitive","open","onOpenChange","RadixDialog","Overlay","Input","Shortcut","List","Empty","Group","Item","Separator","CommandPalette","CommandPaletteWrapper","isOpen","setIsOpen","useSearch","search","setSearch","pages","setPages","page","DEFAULT","placeholder","setPlaceholder","onItemClick","target","MENU_OPTIONS","SUB_ITEMS","label","url","icon","key","action","shortcut","SearchContext","createContext","SearchProvider","searchTerm","setSearchTerm","selectedIndex","setSelectedIndex","toggleSearch","prev","handleKeyDown","event","context","useContext","NAME","DEFAULT_ORIENTATION","ORIENTATIONS","forwardedRef","decorative","orientationProp","domProps","orientation","isValidOrientation","semanticProps","Primitive","forwardRef","SeparatorPrimitive.Root","Skeleton","MOBILE_BREAKPOINT","useIsMobile","isMobile","setIsMobile","mql","onChange","SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","useSidebar","SidebarProvider","defaultOpen","openProp","setOpenProp","openMobile","setOpenMobile","_open","_setOpen","setOpen","useCallback","value","openState","toggleSidebar","state","contextValue","Tooltip","SidebarRoot","side","variant","collapsible","SidebarTrigger","onClick","SidebarRail","SidebarInset","SidebarInput","SidebarHeader","SidebarFooter","SidebarSeparator","SidebarContent","SidebarGroup","SidebarGroupLabel","asChild","Slot","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","cva","SidebarMenuButton","size","tooltip","Comp","button","SidebarMenuItemText","text","active","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSkeleton","showIcon","width","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton","SidebarSearch","searchContext","Label","UserAvatar","user","userName","Avatar","getInitials","User","openThemeDialog","openLanguageDialog","handleLogOut","Link","AppSidebar","useTranslationStore","pinnedMenuItems","recentMenuItems","currentUser","showNewSearch","i18n","changeLanguage","theme","setTheme","setInset","isInset","useTheme","navigate","setOpenThemeDialog","setOpenLanguageDialog","handleLanguageChange","language","handleLanguageSave","handleLanguageCancel","onInsetChange","ContentStyleType","ThemeDialog","LanguageDialog","languages","MenuGroupTypes","UserMenuKeys","ColorSelect","mode","color","contrast","Select","ColorType","ContrastSelect","ContrastType","ModeSelect","ModeType","getModeColorContrastFromFullTheme","modeColorContrast","ThemeSelector","TOAST_LIMIT","TOAST_REMOVE_DELAY","count","genId","toastTimeouts","addToRemoveQueue","toastId","timeout","dispatch","reducer","toast","memoryState","listener","update","dismiss","useToast","setState","PROVIDER_NAME","Collection","useCollection","createCollectionScope","createCollection","createToastContext","createToastScope","createContextScope","ToastProviderProvider","useToastProviderContext","ToastProvider","__scopeToast","duration","swipeDirection","swipeThreshold","viewport","setViewport","toastCount","setToastCount","isFocusedToastEscapeKeyDownRef","isClosePausedRef","prevCount","VIEWPORT_NAME","VIEWPORT_DEFAULT_HOTKEY","VIEWPORT_PAUSE","VIEWPORT_RESUME","ToastViewport","hotkey","viewportProps","getItems","wrapperRef","headFocusProxyRef","tailFocusProxyRef","composedRefs","useComposedRefs","hotkeyLabel","hasToasts","_a","wrapper","handlePause","pauseEvent","handleResume","resumeEvent","handleFocusOutResume","handlePointerLeaveResume","getSortedTabbableCandidates","tabbingDirection","tabbableCandidates","toastItem","toastNode","toastTabbableCandidates","getTabbableCandidates","isMetaKey","focusedElement","isTabbingBackwards","sortedCandidates","candidate","focusFirst","_b","_c","DismissableLayer.Branch","FocusProxy","FOCUS_PROXY_NAME","onFocusFromOutsideViewport","proxyProps","VisuallyHidden","prevFocusedElement","TOAST_NAME","TOAST_SWIPE_START","TOAST_SWIPE_MOVE","TOAST_SWIPE_CANCEL","TOAST_SWIPE_END","Toast","forceMount","toastProps","useControllableState","Presence","ToastImpl","useCallbackRef","composeEventHandlers","x","y","ToastInteractiveProvider","useToastInteractiveContext","type","durationProp","onEscapeKeyDown","onPause","onResume","onSwipeStart","onSwipeMove","onSwipeCancel","onSwipeEnd","node","setNode","node2","pointerStartRef","swipeDeltaRef","closeTimerStartTimeRef","closeTimerRemainingTimeRef","closeTimerRef","onToastAdd","onToastRemove","handleClose","startTimer","duration2","elapsedTime","announceTextContent","getAnnounceTextContent","ToastAnnounce","ReactDOM.createPortal","DismissableLayer.Root","hasSwipeMoveStarted","isHorizontalSwipe","clamp","clampedX","clampedY","moveStartBuffer","delta","eventDetail","handleAndDispatchCustomEvent","isDeltaInDirection","event2","announceProps","renderAnnounceText","setRenderAnnounceText","isAnnounced","setIsAnnounced","useNextFrame","timer","Portal","TITLE_NAME","ToastTitle","titleProps","DESCRIPTION_NAME","ToastDescription","descriptionProps","ACTION_NAME","ToastAction","altText","actionProps","ToastAnnounceExclude","ToastClose","CLOSE_NAME","closeProps","interactiveContext","announceExcludeProps","container","textContent","isHTMLElement","isHidden","isExcluded","name","handler","detail","discrete","currentTarget","dispatchDiscreteCustomEvent","direction","threshold","deltaX","deltaY","isDeltaX","callback","fn","useLayoutEffect","raf1","raf2","nodes","walker","isHiddenInput","candidates","previouslyFocusedElement","Provider","Viewport","Root2","Title","Description","Action","Close","ToastPrimitives.Provider","ToastPrimitives.Viewport","toastVariants","ToastRoot","ToastPrimitives.Root","ToastPrimitives.Action","ToastPrimitives.Close","Cross2Icon","ToastPrimitives.Title","ToastPrimitives.Description","FileViewerControlBar","view","onChangeView","isMarkdown","fileBytesSize","fileContent","handleDownloadFile","handleEditFile","handleOpenDeleteDialog","handleViewRaw","RightDetails","FileToolbarActions","StackedList.Root","StackedList.Item","ToggleGroup","StackedList.Field","FileEditorControlBar","createGitCommitSchema","isFileNameRequired","fileNameSchema","z","CommitToGitRefOption","data","ctx","GitCommitDialog","onFormSubmit","commitTitlePlaceHolder","dryRun","currentBranch","violation","bypassable","setAllStates","disableCTA","error","register","handleSubmit","setValue","watch","errors","useForm","zodResolver","isDisabledSubmission","commitToGitRefValue","fileNameValue","handleCommitToGitRefChange","handleNewBranchNameChange","_e","_d","Textarea","_f","ControlGroup","RadioGroup","Option","RadioButton","StyledLink","Message","MessageTheme","_h","_g","_j","_i","commitSuggestionsSchema","CommitSuggestionsDialog","isValid","isElement","Topbar","gridCols","child","cx","FileAdditionsTrigger","pathNewFile","pathUploadFiles","triggerRef","ExitConfirmDialog","onCancel","onConfirm","title","subtitle","confirmText","cancelText","DELETION_KEYWORD","DeleteAlertDialog","identifier","deleteFn","isLoading","withForm","verification","setVerification","handleChangeVerification","isDisabled","handleDelete","Fieldset","PipelineNodesComponents","Port","CollapsedGroupNode","RepoTabsKeys","repoTabsKeysArr","RepoSubheader","showPipelinesTab","SandboxLayout","TabNav","SortableItem","memo","onRename","onDelete","existingNames","validateViewNameChange","setName","hasError","setHasError","handleChange","newName","validation","ManageViews","views","viewManagement","localViews","setLocalViews","handleLocalRename","viewId","handleLocalDelete","v","isSaveDisabled","verticalListSortingStrategy","ViewTrigger","savedViews","currentView","layoutOptions","currentLayout","onLayoutChange","onManageClick","onViewSelect","handleManageClick","option","Filters","showFilter","showSort","filterOptions","sortOptions","activeFilters","activeSorts","handleFilterChange","handleResetFilters","searchQueries","handleSortChange","handleResetSorts","isManageDialogOpen","setIsManageDialogOpen","FilterTrigger","formatDateForInput","date","month","day","year","parseDateString","dateStr","separators","parts","separator","formattedMonth","formattedDay","formattedValue","Calendar","filter","onUpdateFilter","isBetweenMode","initialDate","rangeState","setRangeState","singleState","setSingleState","handleDateInput","handleDateConfirm","parsedDate","handleRangeDateConfirm","handleSingleDateConfirm","newState","newRange","UICalendar","Checkbox","filterOption","filteredOptions","getFilteredOptions","opt","newValues","Number","handleInputChange","newValue","handleClear","renderFilterValues","handleUpdateFilter","handleUpdateCondition","handleRemoveFilter","filterToOpen","onOpen","getFilterDisplayValue","c","condition","Views","hasChanges","isNewViewDialogOpen","setIsNewViewDialogOpen","isRenameDialogOpen","setIsRenameDialogOpen","newViewName","setNewViewName","nameError","setNameError","trimmedName","handleSaveNewView","handleRename","handleUpdateCurrentView","updatedView","canSaveNew","canRename","FiltersBar","sortDirections","filterHandlers","handleUpdateSort","handleRemoveSort","handleReorderSorts","handleResetAll","clearFilterToOpen","hasActiveFilters","Sorts","createTooltipContext","createTooltipScope","createPopperScope","usePopperScope","DEFAULT_DELAY_DURATION","TOOLTIP_OPEN","TooltipProviderContextProvider","useTooltipProviderContext","TooltipProvider","__scopeTooltip","delayDuration","skipDelayDuration","disableHoverableContent","isOpenDelayed","setIsOpenDelayed","isPointerInTransitRef","skipDelayTimerRef","skipDelayTimer","inTransit","TOOLTIP_NAME","TooltipContextProvider","useTooltipContext","disableHoverableContentProp","delayDurationProp","providerContext","popperScope","trigger","setTrigger","contentId","useId","openTimerRef","wasOpenDelayedRef","open2","stateAttribute","handleOpen","handleDelayedOpen","PopperPrimitive.Root","TRIGGER_NAME","TooltipTrigger","triggerProps","isPointerDownRef","hasPointerMoveOpenedRef","handlePointerUp","PopperPrimitive.Anchor","PORTAL_NAME","PortalProvider","usePortalContext","CONTENT_NAME","TooltipContent","portalContext","contentProps","TooltipContentImpl","TooltipContentHoverable","pointerGraceArea","setPointerGraceArea","content","onPointerInTransitChange","handleRemoveGraceArea","handleCreateGraceArea","hoverTarget","exitPoint","exitSide","getExitSideFromRect","paddedExitPoints","getPaddedExitPoints","hoverTargetPoints","getPointsFromRect","graceArea","getHull","handleTriggerLeave","handleContentLeave","handleTrackPointerGrace","pointerPosition","hasEnteredTarget","isPointerOutsideGraceArea","isPointInPolygon","VisuallyHiddenContentContextProvider","useVisuallyHiddenContentContext","ariaLabel","onPointerDownOutside","handleScroll","DismissableLayer","PopperPrimitive.Content","Slottable","VisuallyHiddenPrimitive.Root","ARROW_NAME","TooltipArrow","arrowProps","PopperPrimitive.Arrow","point","rect","top","bottom","right","left","padding","polygon","inside","i","j","xi","yi","xj","yj","points","newPoints","b","getHullPresorted","upperHull","p","q","r","lowerHull","Root3","Trigger","Content2","sideOffset","Content","NAVIGATION_MENU_NAME","FocusGroupCollection","useFocusGroupCollection","createFocusGroupCollectionScope","createNavigationMenuContext","createNavigationMenuScope","NavigationMenuProviderImpl","useNavigationMenuContext","ViewportContentProvider","useViewportContentContext","NavigationMenu","__scopeNavigationMenu","valueProp","onValueChange","defaultValue","dir","NavigationMenuProps","navigationMenu","setNavigationMenu","composedRef","useDirection","value2","hasSkipDelayDuration","startCloseTimer","itemValue","NavigationMenuProvider","prevValue","SUB_NAME","NavigationMenuSub","subProps","scope","isRootMenu","rootNavigationMenu","onItemSelect","onItemDismiss","onTriggerEnter","onTriggerLeave","onContentEnter","onContentLeave","viewportContent","setViewportContent","indicatorTrack","setIndicatorTrack","usePrevious","contentValue","contentData","prevContent","LIST_NAME","NavigationMenuList","listProps","list","FocusGroup","ITEM_NAME","NavigationMenuItemContextProvider","useNavigationMenuItemContext","NavigationMenuItem","itemProps","autoValue","contentRef","focusProxyRef","restoreContentTabOrderRef","wasEscapeCloseRef","handleContentEntry","handleContentExit","removeFromTabOrder","NavigationMenuTrigger","disabled","itemContext","triggerId","makeTriggerId","makeContentId","wasClickCloseRef","FocusGroupItem","getOpenState","whenMouse","entryKey","wasTriggerFocused","wasFocusFromContent","LINK_NAME","LINK_SELECT","NavigationMenuLink","onSelect","linkProps","linkSelectEvent","rootContentDismissEvent","ROOT_CONTENT_DISMISS","INDICATOR_NAME","NavigationMenuIndicator","indicatorProps","isVisible","ReactDOM","NavigationMenuIndicatorImpl","activeTrigger","setActiveTrigger","position","setPosition","isHorizontal","triggerNode","handlePositionChange","useResizeObserver","NavigationMenuContent","commonProps","ViewportContentMounter","NavigationMenuContentImpl","onViewportContentChange","onViewportContentRemove","onRootContentClose","onContentFocusOutside","prevMotionAttributeRef","motionAttribute","values","prevIndex","isSelected","wasSelected","attribute","isTrigger","isRootViewport","nextCandidates","_event","NavigationMenuViewport","NavigationMenuViewportImpl","viewportImplProps","viewportContentContext","setSize","setContent","viewportWidth","viewportHeight","activeContentValue","props2","composeRefs","FOCUS_GROUP_NAME","groupProps","ARROW_KEYS","FOCUS_GROUP_ITEM_NAME","candidateNodes","currentIndex","prevTabIndex","element","onResize","handleResize","rAF","resizeObserver","baseId","Indicator","NavigationMenuRoot","NavigationMenuPrimitive.Root","NavigationMenuPrimitive.List","NavigationMenuPrimitive.Item","navigationMenuTriggerStyle","NavigationMenuPrimitive.Trigger","ChevronDownIcon","NavigationMenuPrimitive.Content","NavigationMenuPrimitive.Link","NavigationMenuPrimitive.Viewport","NavigationMenuPrimitive.Indicator","SvgChatAvatar","Header","Body","Footer","self","avatar","actions","ChatAvatarIcon","CodeBlock","Typing","emptyStateButtons","EmptyState","InputField","onKeyDown","onSend","sendIcon","Chat","ChatDiffViewer","lang","fileName","setLoading","diffFileInstance","setDiffFileInstance","highlighter","setHighlighter","shikiHighlighter","getDiffViewHighlighter","setDiffInstanceCb","debounce","diffString","DiffFile","DiffModeEnum","DiffView","diffData","ChatPreviewWrapper","ChatEmptyPreviewWrapper","SearchBox","FolderItem","chevronClassName","link","Accordion","FileItem","comp","darkModeImage","lightModeImage","AccentColor","GrayColor","showSystemMode","showAccentColor","showGrayColor","accentColor","setAccentColor","grayColor","setGrayColor","mediaQuery","systemMode","setSystemMode","updateSystemTheme","colorAdjustment","valueMode","Language","LanguageCode","defaultLanguage","supportedLanguages","selectedLanguage","setSelectedLanguage"],"mappings":"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","x_google_ignoreList":[10,25,48,50]}
|