@rebasepro/ui 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/icons/index.d.ts +1 -1
- package/dist/index.css +13 -13
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +2119 -74
- package/dist/index.es.js.map +1 -1
- package/dist/src/index.css +13 -13
- package/dist/styles.d.ts +9 -9
- package/dist/views/CardView.d.ts +32 -0
- package/dist/views/CollectionView/CollectionCardView.d.ts +30 -0
- package/dist/views/CollectionView/CollectionKanbanView.d.ts +31 -0
- package/dist/views/CollectionView/CollectionListView.d.ts +30 -0
- package/dist/views/CollectionView/CollectionTableView.d.ts +37 -0
- package/dist/views/CollectionView/CollectionView.d.ts +121 -0
- package/dist/views/CollectionView/CollectionViewToolbar.d.ts +31 -0
- package/dist/views/CollectionView/CollectionViewTypes.d.ts +106 -0
- package/dist/views/CollectionView/DefaultCellRenderer.d.ts +9 -0
- package/dist/views/CollectionView/index.d.ts +24 -0
- package/dist/views/CollectionView/utils.d.ts +5 -0
- package/dist/views/Kanban/Board.d.ts +3 -0
- package/dist/views/Kanban/BoardColumn.d.ts +20 -0
- package/dist/views/Kanban/BoardColumnTitle.d.ts +8 -0
- package/dist/views/Kanban/BoardSortableList.d.ts +14 -0
- package/dist/views/Kanban/board_types.d.ts +61 -0
- package/dist/views/Kanban/index.d.ts +5 -0
- package/dist/views/KanbanView.d.ts +24 -0
- package/dist/views/ListView.d.ts +40 -0
- package/dist/views/TableView.d.ts +6 -0
- package/dist/views/index.d.ts +5 -0
- package/package.json +1 -1
- package/src/components/Alert.tsx +1 -1
- package/src/components/BooleanSwitchWithLabel.tsx +1 -1
- package/src/components/Button.tsx +5 -5
- package/src/components/Chip.tsx +39 -37
- package/src/components/DateTimeField.tsx +2 -2
- package/src/components/Dialog.tsx +1 -1
- package/src/components/ExpandablePanel.tsx +1 -1
- package/src/components/FileUpload.tsx +1 -1
- package/src/components/FilterChip.tsx +2 -2
- package/src/components/IconButton.tsx +1 -1
- package/src/components/MultiSelect.tsx +1 -1
- package/src/components/Select.tsx +2 -2
- package/src/components/Sheet.tsx +8 -4
- package/src/components/Table.tsx +2 -2
- package/src/components/TextField.tsx +3 -3
- package/src/components/VirtualTable/VirtualTableRow.tsx +1 -1
- package/src/icons/index.ts +3 -0
- package/src/index.css +13 -13
- package/src/index.ts +2 -0
- package/src/styles.ts +9 -9
- package/src/views/CardView.tsx +281 -0
- package/src/views/CollectionView/CollectionCardView.tsx +270 -0
- package/src/views/CollectionView/CollectionKanbanView.tsx +251 -0
- package/src/views/CollectionView/CollectionListView.tsx +245 -0
- package/src/views/CollectionView/CollectionTableView.tsx +229 -0
- package/src/views/CollectionView/CollectionView.tsx +388 -0
- package/src/views/CollectionView/CollectionViewToolbar.tsx +229 -0
- package/src/views/CollectionView/CollectionViewTypes.ts +137 -0
- package/src/views/CollectionView/DefaultCellRenderer.tsx +404 -0
- package/src/views/CollectionView/index.ts +44 -0
- package/src/views/CollectionView/utils.ts +14 -0
- package/src/views/Kanban/Board.tsx +421 -0
- package/src/views/Kanban/BoardColumn.tsx +135 -0
- package/src/views/Kanban/BoardColumnTitle.tsx +47 -0
- package/src/views/Kanban/BoardSortableList.tsx +170 -0
- package/src/views/Kanban/board_types.ts +70 -0
- package/src/views/Kanban/index.tsx +5 -0
- package/src/views/KanbanView.tsx +32 -0
- package/src/views/ListView.tsx +281 -0
- package/src/views/TableView.tsx +7 -0
- package/src/views/index.ts +5 -0
- package/dist/index.umd.js +0 -6958
- package/dist/index.umd.js.map +0 -1
package/dist/index.umd.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.js","names":[],"sources":["../src/util/cls.ts","../src/util/debounce.ts","../src/util/hash.ts","../src/util/chip_colors.ts","../src/util/key_to_icon_component.ts","../src/components/common/SelectInputLabel.tsx","../src/styles.ts","../src/hooks/PortalContainerContext.tsx","../src/hooks/useInjectStyles.tsx","../src/hooks/useOutsideAlerter.tsx","../src/hooks/useDebouncedCallback.ts","../src/hooks/useDebounceCallback.tsx","../src/hooks/useDebounceValue.tsx","../src/components/Collapse.tsx","../src/components/Autocomplete.tsx","../src/components/Alert.tsx","../src/components/Avatar.tsx","../src/components/BooleanSwitch.tsx","../src/components/BooleanSwitchWithLabel.tsx","../src/components/Button.tsx","../src/components/Card.tsx","../src/components/Container.tsx","../src/components/CenteredView.tsx","../src/components/CircularProgress.tsx","../src/components/Typography.tsx","../src/components/CircularProgressCenter.tsx","../src/icons/Icon.tsx","../src/components/ErrorBoundary.tsx","../src/components/Checkbox.tsx","../src/components/Chip.tsx","../src/components/Tooltip.tsx","../src/components/ColorPicker.tsx","../src/components/IconButton.tsx","../src/components/InputLabel.tsx","../src/components/DateTimeField.tsx","../src/components/Dialog.tsx","../src/components/DialogActions.tsx","../src/components/DialogContent.tsx","../src/components/DialogTitle.tsx","../src/components/ExpandablePanel.tsx","../src/components/FileUpload.tsx","../src/components/FilterChip.tsx","../src/components/InfoLabel.tsx","../src/components/Label.tsx","../src/components/LoadingButton.tsx","../src/components/Markdown.tsx","../src/components/Menu.tsx","../src/components/Menubar.tsx","../src/components/Separator.tsx","../src/components/MultiSelect.tsx","../src/components/Paper.tsx","../src/components/RadioGroup.tsx","../src/components/ResizablePanels.tsx","../src/components/SearchBar.tsx","../src/components/Select.tsx","../src/components/Slider.tsx","../src/components/Sheet.tsx","../src/components/TextareaAutosize.tsx","../src/components/TextField.tsx","../src/components/Tabs.tsx","../src/components/Table.tsx","../src/components/Popover.tsx","../src/components/Badge.tsx","../src/components/DebouncedTextField.tsx","../src/components/Skeleton.tsx","../src/components/ToggleButtonGroup.tsx","../src/components/VirtualTable/VirtualTableHeader.tsx","../src/components/VirtualTable/VirtualTableHeaderRow.tsx","../src/components/VirtualTable/VirtualTableRow.tsx","../src/components/VirtualTable/VirtualTableCell.tsx","../src/components/VirtualTable/VirtualTable.tsx","../src/icons/icon_keys.ts","../src/icons/cool_icon_keys.ts","../src/icons/GitHubIcon.tsx","../src/icons/HandleIcon.tsx"],"sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cls(...classes: ClassValue[]) {\n return twMerge(clsx(classes));\n}\n\n\n","/**\n * @ignore\n */\n\nexport function debounce<T extends (...args: any[]) => unknown>(func: T, wait = 166) {\n let timeout: ReturnType<typeof setTimeout>;\n\n function debounced(this: unknown, ...args: Parameters<T>) {\n const later = () => {\n func.apply(this, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n }\n\n debounced.clear = () => {\n clearTimeout(timeout);\n };\n\n return debounced as T & Cancelable;\n}\n\n/**\n * @ignore\n */\nexport interface Cancelable {\n clear(): void;\n}\n","export function hashString(str: string): number {\n let hash = 0;\n let i;\n let chr;\n for (i = 0; i < str.length; i++) {\n chr = str.charCodeAt(i);\n hash = ((hash << 5) - hash) + chr;\n hash |= 0; // Convert to 32bit integer\n }\n return Math.abs(hash);\n}\n","import { ChipColorKey, ChipColorScheme } from \"../components\";\nimport { hashString } from \"./hash\";\n\nexport const CHIP_COLORS: Record<string, ChipColorScheme> = {\n blue: { color: \"#cfdfff\",\ntext: \"#102046\",\ndarkColor: \"#2750ae\",\ndarkText: \"#cfdfff\" },\n teal: { color: \"#c2f5e9\",\ntext: \"#012524\",\ndarkColor: \"#06a09b\",\ndarkText: \"#daf3e9\" },\n yellow: { color: \"#ffeab6\",\ntext: \"#3b2501\",\ndarkColor: \"#b87503\",\ndarkText: \"#ffeab6\" },\n pink: { color: \"#ffdaf6\",\ntext: \"#400832\",\ndarkColor: \"#b2158b\",\ndarkText: \"#ffdaf6\" },\n purple: { color: \"#ede2fe\",\ntext: \"#280b42\",\ndarkColor: \"#6b1cb0\",\ndarkText: \"#ede2fe\" },\n cyan: { color: \"#d0f0fd\",\ntext: \"#04283f\",\ndarkColor: \"#0b76b7\",\ndarkText: \"#d0f0fd\" },\n orange: { color: \"#fee2d5\",\ntext: \"#6b2613\",\ndarkColor: \"#d74d26\",\ndarkText: \"#fee2d5\" },\n green: { color: \"#d1f7c4\",\ntext: \"#0b1d05\",\ndarkColor: \"#338a17\",\ndarkText: \"#d1f7c4\" },\n red: { color: \"#ffdce5\",\ntext: \"#4c0c1c\",\ndarkColor: \"#ba1e45\",\ndarkText: \"#ffdce5\" },\n gray: { color: \"#eee\",\ntext: \"#040404\",\ndarkColor: \"#444\",\ndarkText: \"#eee\" },\n indigo: { color: \"#e0e7ff\",\ntext: \"#312e81\",\ndarkColor: \"#4f46e5\",\ndarkText: \"#e0e7ff\" },\n violet: { color: \"#ede9fe\",\ntext: \"#4c1d95\",\ndarkColor: \"#7c3aed\",\ndarkText: \"#ede9fe\" },\n fuchsia: { color: \"#fae8ff\",\ntext: \"#701a75\",\ndarkColor: \"#c026d3\",\ndarkText: \"#fae8ff\" },\n rose: { color: \"#ffe4e6\",\ntext: \"#881337\",\ndarkColor: \"#e11d48\",\ndarkText: \"#ffe4e6\" },\n emerald: { color: \"#d1fae5\",\ntext: \"#064e3b\",\ndarkColor: \"#059669\",\ndarkText: \"#d1fae5\" }\n};\n\nexport function getColorSchemeForKey(key: ChipColorKey): ChipColorScheme {\n return CHIP_COLORS[key];\n}\n\nexport function getColorSchemeForSeed(seed: string): ChipColorScheme {\n const hash: number = hashString(seed);\n const colorKeys = Object.keys(CHIP_COLORS);\n const index = hash % colorKeys.length;\n return CHIP_COLORS[colorKeys[index]];\n}\n","export function keyToIconComponent(key: string) {\n const startsWithNumber = key.match(/^\\d/);\n\n // convert key to came case\n const componentName = (startsWithNumber ? \"_\" : \"\") +\n key.split(\"_\").map((word: string) => {\n return word.charAt(0).toUpperCase() + word.slice(1);\n }).join(\"\") +\n \"Icon\";\n return componentName;\n}\n","import React from \"react\";\nimport { cls } from \"../../util\";\n\nexport function SelectInputLabel({ children, error }: { children: React.ReactNode, error?: boolean }) {\n return <div className={cls(\"text-sm font-medium ml-3.5 mb-1\",\n error ? \"text-red-500 dark:text-red-600\" : \"text-surface-accent-500 dark:text-surface-accent-300\")}>\n {children}\n </div>;\n}\n","export const focusedDisabled = \"focus-visible:ring-0 focus-visible:ring-offset-0\";\nexport const focusedInvisibleMixin = \"focus:bg-opacity-70 focus:bg-surface-accent-100 focus:dark:bg-surface-900 focus:dark:bg-opacity-60 focus:bg-surface-accent-100/70 dark:focus:bg-surface-900/60\";\nexport const focusedClasses = \"z-30 outline-hidden outline-none ring-2 ring-primary ring-opacity-75 ring-primary/75 ring-offset-0 ring-offset-transparent \";\nexport const fieldBackgroundMixin = \"bg-opacity-50 bg-surface-accent-200 bg-surface-accent-200/50 dark:bg-surface-900 dark:bg-opacity-100 dark:bg-surface-900/100\";\nexport const fieldBackgroundInvisibleMixin = \"bg-opacity-0 bg-surface-accent-100 dark:bg-surface-900 dark:bg-opacity-0 bg-surface-accent-200/0 dark:bg-surface-900/0\";\nexport const fieldBackgroundDisabledMixin = \"dark:bg-surface-900 bg-opacity-50 dark:bg-opacity-90 bg-surface-accent-200/50 dark:bg-surface-900/90\";\nexport const fieldBackgroundHoverMixin = \"hover:bg-opacity-70 dark:hover:bg-surface-700 dark:hover:bg-opacity-40 hover:bg-surface-accent-200/70 hover:dark:bg-surface-700/40\";\nexport const defaultBorderMixin = \"border-surface-200/60 dark:border-surface-700/60 \";\nexport const paperMixin = \"bg-white rounded-md dark:bg-surface-800 border border-surface-200/60 dark:border-surface-700/60\";\nexport const cardMixin = \"bg-white dark:bg-surface-900 rounded-md border border-surface-200/60 dark:border-surface-700/60 m-1 -p-1\";\nexport const cardClickableMixin = \"hover:bg-surface-accent-100 dark:hover:bg-surface-800 hover:ring-1 hover:ring-primary/50 hover:shadow-sm cursor-pointer hover:bg-primary/10 dark:hover:bg-primary/10 transition-all duration-150\";\nexport const cardSelectedMixin = \"bg-primary-bg/30 dark:bg-primary-bg/10 ring-1 ring-primary/75\";\n","\"use client\";\nimport React, { createContext, useContext, useMemo } from \"react\";\n\nexport interface PortalContainerContextType {\n container: HTMLElement | null;\n}\n\nconst PortalContainerContext = createContext<PortalContainerContextType | undefined>(undefined);\n\nexport interface PortalContainerProviderProps {\n container: HTMLElement | null;\n children: React.ReactNode;\n}\n\n/**\n * Provider component that sets the portal container for all descendants.\n * This can be used at any level of the tree to specify where portals should be attached.\n *\n * @example\n * ```tsx\n * const containerRef = useRef<HTMLDivElement>(null);\n *\n * <div ref={containerRef}>\n * <PortalContainerProvider container={containerRef.current}>\n * <YourComponents />\n * </PortalContainerProvider>\n * </div>\n * ```\n */\nexport function PortalContainerProvider({ container, children }: PortalContainerProviderProps) {\n const contextValue = useMemo(() => ({ container }), [container]);\n\n return (\n <PortalContainerContext.Provider value={contextValue}>\n {children}\n </PortalContainerContext.Provider>\n );\n}\n\n/**\n * Hook to access the portal container from context.\n * Returns null if no provider is found in the tree.\n *\n * @returns The portal container element or null\n */\nexport function usePortalContainer(): HTMLElement | null {\n const context = useContext(PortalContainerContext);\n return context?.container ?? null;\n}\n\n","\"use client\";\nimport { useEffect } from \"react\";\nimport { usePortalContainer } from \"./PortalContainerContext\";\n\n/**\n * Use this hook to create a `<style>` element and inject it into the DOM.\n * It checks if the style already exists, and if it does, it does not inject it again.\n * @param key\n * @param styles\n */\nexport function useInjectStyles(key: string, styles: string) {\n\n const portalContainer = usePortalContainer();\n\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n\n const targetContainer: HTMLElement | null = portalContainer ?? document.head;\n\n // Try to find an existing style element within the target container first\n const existingStyle = (targetContainer as HTMLElement).querySelector?.(`#${key}`) as HTMLStyleElement | null;\n\n if (!existingStyle) {\n const style = document.createElement(\"style\");\n style.id = key;\n style.innerHTML = styles;\n (targetContainer || document.head).appendChild(style);\n }\n }, []);\n\n}\n","\"use client\";\n\nimport { RefObject, useEffect } from \"react\";\n\n/**\n * Hook that alerts clicks outside the passed ref\n */\nexport function useOutsideAlerter(ref: RefObject<HTMLElement | null>, onOutsideClick: () => void, active = true): void {\n useEffect(() => {\n if (!active)\n return;\n\n /**\n * Alert if clicked on outside of element\n */\n function handleClickOutside(event: Event) {\n if (isInPresentationLayer(event.target as Node)) {\n return;\n }\n\n if (ref.current && !ref.current.contains(event.target as Node)) {\n onOutsideClick();\n }\n }\n\n // Bind the event listener\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n // Unbind the event listener on clean up\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [ref, active, onOutsideClick]);\n}\n\n/**\n * Check if any parent of the node is a presentation node\n * @param node\n */\nfunction isInPresentationLayer(node: Node | null): boolean {\n if (node instanceof HTMLElement) {\n if (node.getAttribute(\"role\") === \"presentation\")\n return true;\n return isInPresentationLayer(node.parentNode);\n }\n return false;\n}\n","import React from \"react\";\n\nexport function useDebouncedCallback<T>(value: T, callback: () => void, immediate: boolean, timeoutMs = 300) {\n\n const pendingUpdate = React.useRef(false);\n\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n }, [callback]);\n\n const performUpdate = React.useCallback(() => {\n callbackRef.current();\n pendingUpdate.current = false;\n }, []);\n\n const handlerRef = React.useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n\n React.useEffect(\n () => {\n if (immediate) {\n clearTimeout(handlerRef.current);\n if (pendingUpdate.current) {\n performUpdate();\n }\n return;\n }\n\n pendingUpdate.current = true;\n clearTimeout(handlerRef.current);\n handlerRef.current = setTimeout(performUpdate, timeoutMs);\n return () => {\n if (immediate)\n performUpdate();\n };\n },\n [immediate, value, performUpdate, timeoutMs]\n );\n}\n","import { useCallback, useRef } from \"react\";\n\n\nexport function useDebounceCallback<T extends (...args: any[]) => unknown>(\n callback?: T,\n delay?: number\n): T {\n const timeoutRef = useRef<number | null>(null);\n\n const debouncedCallback = useCallback((...args: Parameters<T>) => {\n if (timeoutRef.current !== null) {\n clearTimeout(timeoutRef.current);\n }\n\n timeoutRef.current = window.setTimeout(() => {\n callback?.(...args);\n }, delay ?? 200);\n }, [callback, delay]);\n\n return debouncedCallback as T;\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\n\nexport function useDebounceValue<T>(value: T, delay = 300): T {\n // State and setters for debounced value\n const [debouncedValue, setDebouncedValue] = useState(value);\n useEffect(\n () => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n return () => {\n clearTimeout(handler);\n };\n },\n [value, delay] // Only re-call effect if value or delay changes\n );\n return debouncedValue;\n}\n","\"use client\";\nimport React from \"react\";\nimport * as Collapsible from \"@radix-ui/react-collapsible\";\n\nimport { cls } from \"../util\";\nimport { useInjectStyles } from \"../hooks\";\n\ninterface CollapseProps {\n children?: React.ReactNode;\n className?: string;\n in?: boolean;\n duration?: number;\n}\n\nexport const Collapse = React.memo(({\n children,\n className,\n in: isOpen = false,\n duration = 220\n }: CollapseProps) => {\n\n useInjectStyles(`Collapse-${duration}`, `\n.CollapseContent-${duration} {\n overflow: hidden;\n}\n.CollapseContent-${duration}[data-state='open'] {\n animation: slideDown ${duration}ms ease-out;\n}\n.CollapseContent-${duration}[data-state='closed'] {\n animation: slideUp ${duration}ms ease-in;\n}\n\n@keyframes slideDown {\n from {\n height: 0;\n }\n to {\n height: var(--radix-collapsible-content-height);\n }\n}\n\n@keyframes slideUp {\n from {\n height: var(--radix-collapsible-content-height);\n }\n to {\n height: 0;\n }\n}\n`);\n\n return (\n <Collapsible.Root\n open={isOpen}\n className={className}>\n\n <Collapsible.Content\n className={cls(`CollapseContent-${duration}`)}\n >\n {children}\n </Collapsible.Content>\n </Collapsible.Root>\n )\n});\n\nCollapse.displayName = \"Collapse\";\n","\"use client\";\nimport React from \"react\";\n\nimport { paperMixin } from \"../styles\";\nimport { Collapse } from \"./Collapse\";\nimport { cls } from \"../util\";\nimport { useOutsideAlerter } from \"../hooks\";\n\nexport type AutocompleteProps = {\n children: React.ReactNode;\n open: boolean;\n setOpen: (open: boolean) => void;\n className?: string;\n}\n\nexport const useAutoComplete = ({ ref }: {\n ref: React.MutableRefObject<HTMLDivElement | null>;\n}) => {\n\n const [autoCompleteOpen, setAutoCompleteOpen] = React.useState(false);\n const [inputFocused, setInputFocused] = React.useState(false);\n\n // if ref is not focused, close autocomplete\n React.useEffect(() => {\n if (ref.current) {\n ref.current.onfocus = () => {\n setAutoCompleteOpen(true);\n setInputFocused(true);\n }\n ref.current.onblur = () => {\n setInputFocused(false);\n }\n }\n }, [ref]);\n\n return {\n inputFocused,\n autoCompleteOpen,\n setAutoCompleteOpen\n };\n}\n\nexport function Autocomplete({\n children,\n open,\n setOpen,\n className\n }: AutocompleteProps) {\n\n const autocompleteRef = React.useRef<HTMLDivElement>(null);\n useOutsideAlerter(autocompleteRef, () => setOpen(false));\n\n return <Collapse\n in={open}\n duration={30}\n className={cls(\n \"absolute top-full left-0 right-0 overflow-visible\",\n open ? \"shadow-2xs\" : \"\",\n \"my-2\",\n \"z-20\",\n \"w-full\")}>\n <div ref={autocompleteRef}\n className={cls(\n open ? paperMixin : \"\",\n \"bg-surface-50 dark:bg-surface-800\",\n className\n )}>\n {children}\n </div>\n </Collapse>;\n\n}\n\nexport type AutocompleteItemProps = {\n children: React.ReactNode,\n onClick?: () => void,\n className?: string\n};\n\nexport const AutocompleteItem = React.memo(function AutocompleteItem({\n children,\n onClick,\n className\n }: AutocompleteItemProps) {\n\n return (\n <div\n className={cls(\"flex w-full items-center h-[48px] cursor-pointer hover:bg-surface-accent-100 dark:hover:bg-surface-accent-800\", className)}\n onClick={onClick}>\n {children}\n </div>\n )\n});\n","import * as React from \"react\";\nimport { cls } from \"../util\";\n\nexport interface AlertProps {\n children: React.ReactNode;\n onDismiss?: () => void;\n color?: \"error\" | \"warning\" | \"info\" | \"success\" | \"base\";\n size?: \"small\" | \"medium\" | \"large\";\n action?: React.ReactNode;\n className?: string;\n outerClassName?: string;\n style?: React.CSSProperties;\n}\n\nconst getSizeClasses = (size: \"small\" | \"medium\" | \"large\") => {\n switch (size) {\n case \"small\":\n return \"px-4 py-1\";\n case \"large\":\n return \"px-4 py-4\";\n case \"medium\":\n default:\n return \"px-4 py-2\";\n }\n}\nconst getColorClasses = (severity: string) => {\n switch (severity) {\n case \"error\":\n return \"bg-red-50 dark:bg-red-800 dark:text-red-100 text-red-900 border-l-[3px] border-l-red-500\";\n case \"warning\":\n return \"bg-amber-50 dark:bg-amber-800 dark:text-amber-100 text-amber-900 border-l-[3px] border-l-amber-500\";\n case \"info\":\n return \"bg-blue-100 dark:bg-blue-800 dark:text-blue-100 text-blue-900 border-l-[3px] border-l-blue-500\";\n case \"success\":\n return \"bg-emerald-50 dark:bg-emerald-800 dark:text-emerald-100 text-emerald-900 border-l-[3px] border-l-emerald-500\";\n case \"base\":\n default:\n return \"bg-surface-accent-50 dark:bg-surface-accent-800 dark:text-white text-surface-accent-900 border-l-[3px] border-l-surface-accent-400\";\n }\n};\n\nexport const Alert: React.FC<AlertProps> = ({\n children,\n onDismiss,\n color = \"info\",\n size = \"medium\",\n action,\n outerClassName,\n className,\n style\n }) => {\n const classes = getColorClasses(color);\n\n return (\n <div\n style={style}\n className={cls(\n getSizeClasses(size),\n \"w-full\",\n \"font-medium\",\n \"rounded-md flex items-center gap-2\",\n classes,\n outerClassName)}>\n <div className={cls(\"grow\", className)}>{children}</div>\n {onDismiss && (\n <button\n className=\"text-surface-accent-400 hover:text-surface-accent-600 dark:text-surface-accent-500 dark:hover:text-surface-accent-400\"\n onClick={onDismiss}>\n ×\n </button>\n )}\n {action}\n </div>\n );\n};\n","\"use client\";\nimport React, { useState } from \"react\";\nimport { cls } from \"../util\";\n\nexport interface AvatarProps {\n src?: string;\n alt?: string;\n children?: React.ReactNode;\n className?: string;\n outerClassName?: string;\n hover?: boolean;\n style?: React.CSSProperties;\n}\n\nconst AvatarInner: React.ForwardRefRenderFunction<HTMLButtonElement, AvatarProps> = (\n {\n src,\n alt,\n children,\n className,\n style,\n outerClassName,\n hover = true,\n ...props\n },\n ref\n) => {\n const [isImageError, setIsImageError] = useState(false);\n\n const handleImageError = () => {\n setIsImageError(true);\n };\n\n return (\n <button\n ref={ref}\n style={style}\n {...props}\n className={cls(\n \"rounded-full flex items-center justify-center overflow-hidden\",\n \"p-1 w-12 h-12 min-w-12 min-h-12\",\n hover && \"hover:bg-surface-accent-200 dark:hover:bg-surface-accent-700\",\n outerClassName\n )}\n >\n {src && !isImageError ? (\n <img\n className={cls(\n \"bg-surface-accent-100 dark:bg-surface-accent-800\",\n \"w-full h-full object-cover rounded-full\",\n className\n )}\n src={src}\n alt={alt}\n onError={handleImageError}\n />\n ) : (\n <span\n className={cls(\n \"bg-surface-accent-100 dark:bg-surface-accent-800\",\n \"flex items-center justify-center\",\n \"w-full h-full py-1.5 text-lg font-medium text-surface-accent-900 dark:text-white rounded-full\",\n className\n )}\n >\n {children}\n </span>\n )}\n </button>\n );\n};\n\nexport const Avatar = React.forwardRef(AvatarInner);\n","\"use client\";\nimport React from \"react\";\nimport { cls } from \"../util\";\n\nexport type BooleanSwitchProps = {\n value: boolean | null;\n className?: string;\n disabled?: boolean;\n size?: \"smallest\" | \"small\" | \"medium\" | \"large\";\n} & ({\n allowIndeterminate: true;\n onValueChange?: (newValue: boolean | null) => void;\n} | {\n allowIndeterminate?: false;\n onValueChange?: (newValue: boolean) => void;\n});\n\nexport const BooleanSwitch = React.forwardRef(function BooleanSwitch({\n value,\n allowIndeterminate,\n className,\n onValueChange,\n disabled = false,\n size = \"medium\",\n ...props\n }: BooleanSwitchProps, ref: React.Ref<HTMLButtonElement>) {\n return <button\n type=\"button\"\n role=\"switch\"\n aria-checked={allowIndeterminate && (value === null || value === undefined) ? \"mixed\" : !!value}\n aria-disabled={disabled || undefined}\n ref={ref}\n tabIndex={disabled ? -1 : undefined}\n onClick={disabled\n ? (e) => e.preventDefault()\n : (e) => {\n e.preventDefault();\n if (allowIndeterminate) {\n if (value === null || value === undefined) onValueChange?.(true)\n else if (value) onValueChange?.(false)\n else onValueChange?.(null);\n } else {\n onValueChange?.(!value);\n }\n }}\n className={cls(\n size === \"smallest\" ? \"w-[34px] h-[18px] min-w-[34px] min-h-[18px]\" : size === \"small\" ? \"w-[38px] h-[22px] min-w-[38px] min-h-[22px]\" : \"w-[44px] h-[26px] min-w-[44px] min-h-[26px]\",\n \"outline-none outline-hidden rounded-full relative shadow-sm\",\n value ? (disabled\n ? \"bg-white bg-opacity-54 bg-white/54 dark:bg-surface-accent-950 border-surface-accent-100 dark:border-surface-accent-700 ring-1 ring-surface-accent-200 dark:ring-surface-accent-700\"\n : \"ring-secondary ring-1 bg-secondary dark:bg-secondary\") : \"bg-white bg-opacity-54 bg-white/54 dark:bg-surface-accent-900 ring-1 ring-surface-accent-200 dark:ring-surface-accent-700\",\n className\n )}\n {...props}\n >\n {allowIndeterminate && (value === null || value === undefined) && <div\n key={\"knob\"}\n className={cls(\n \"block rounded-full transition-transform duration-100 ease-out transform will-change-auto shadow-sm\",\n disabled ? \"bg-surface-accent-400 dark:bg-surface-accent-600\" : \"bg-surface-accent-400 dark:bg-surface-accent-600\",\n {\n \"w-[21px] h-[10px]\": size === \"medium\" || size === \"large\",\n \"w-[19px] h-[8px]\": size === \"small\",\n \"w-[16px] h-[6px]\": size === \"smallest\",\n \"translate-x-[10px]\": size === \"medium\" || size === \"large\",\n \"translate-x-[9px]\": size === \"small\",\n \"translate-x-[8px]\": size === \"smallest\"\n }\n )}\n />}\n\n {!(allowIndeterminate && (value === null || value === undefined)) && <div\n key={\"knob\"}\n className={cls(\n \"block rounded-full transition-transform duration-100 ease-out transform will-change-auto shadow-sm\",\n disabled ? \"bg-surface-accent-300 dark:bg-surface-700\" : (value ? \"bg-white shadow\" : \"bg-surface-accent-600 dark:bg-surface-accent-400\"),\n {\n \"w-[21px] h-[21px]\": size === \"medium\" || size === \"large\",\n \"w-[19px] h-[19px]\": size === \"small\",\n \"w-[16px] h-[16px]\": size === \"smallest\",\n [value ? \"translate-x-[19px]\" : \"translate-x-[3px]\"]: size === \"medium\" || size === \"large\",\n [value ? \"translate-x-[17px]\" : \"translate-x-[2px]\"]: size === \"small\",\n [value ? \"translate-x-[16px]\" : \"translate-x-[1px]\"]: size === \"smallest\"\n }\n )}\n />}\n </button>;\n }\n) as React.ForwardRefExoticComponent<BooleanSwitchProps & React.RefAttributes<HTMLButtonElement>>;\n","\"use client\";\nimport React from \"react\";\nimport {\n fieldBackgroundDisabledMixin,\n fieldBackgroundHoverMixin,\n fieldBackgroundMixin,\n focusedClasses\n} from \"../styles\";\nimport { BooleanSwitch, BooleanSwitchProps } from \"./BooleanSwitch\";\nimport { cls } from \"../util\";\n\nexport type BooleanSwitchWithLabelProps = BooleanSwitchProps & {\n position?: \"start\" | \"end\",\n invisible?: boolean,\n label?: React.ReactNode,\n error?: boolean,\n autoFocus?: boolean,\n fullWidth?: boolean,\n className?: string,\n inputClassName?: string,\n};\n\n/**\n * Simple boolean switch.\n *\n */\nexport const BooleanSwitchWithLabel = function BooleanSwitchWithLabel({\n value,\n position = \"end\",\n size = \"medium\",\n invisible,\n onValueChange,\n error,\n label,\n autoFocus,\n disabled,\n className,\n fullWidth = true,\n inputClassName,\n ...props\n }: BooleanSwitchWithLabelProps) {\n\n const ref = React.useRef<HTMLDivElement | null>(null);\n const refInput = React.useRef<HTMLButtonElement | null>(null);\n const switchLabelId = React.useId();\n const [_, setFocused] = React.useState(autoFocus)\n const onFocus = () => setFocused(true);\n const onBlur = () => setFocused(false);\n\n React.useEffect(() => {\n if (autoFocus) {\n // refInput.current?.focus();\n }\n }, []);\n\n const focus = document.activeElement === refInput?.current || document.activeElement === ref?.current\n\n return (\n <div\n ref={ref}\n onFocus={onFocus}\n onBlur={onBlur}\n role=\"switch\"\n aria-checked={props.allowIndeterminate && (value === null || value === undefined) ? \"mixed\" : !!value}\n aria-disabled={disabled || undefined}\n aria-labelledby={label ? switchLabelId : undefined}\n tabIndex={-1}\n className={cls(\n !invisible && fieldBackgroundMixin,\n !invisible && (disabled ? fieldBackgroundDisabledMixin : fieldBackgroundHoverMixin),\n disabled ? \"cursor-default\" : \"cursor-pointer\",\n \"rounded-md max-w-full justify-between box-border relative inline-flex items-center\",\n !invisible && focus && !disabled ? focusedClasses : \"\",\n error ? \"text-red-500 dark:text-red-600\" : (focus && !disabled ? \"text-primary\" : (!disabled ? \"text-text-primary dark:text-text-primary-dark\" : \"text-text-secondary dark:text-text-secondary-dark\")),\n {\n \"min-h-[28px]\": size === \"smallest\",\n \"min-h-[32px]\": size === \"small\",\n \"min-h-[44px]\": size === \"medium\",\n \"min-h-[64px]\": size === \"large\"\n },\n size === \"small\" || size === \"smallest\" ? \"pl-2\" : \"pl-4\",\n size === \"small\" || size === \"smallest\" ? \"pr-4\" : \"pr-6\",\n position === \"end\" ? \"flex-row-reverse\" : \"flex-row\",\n fullWidth ? \"w-full\" : \"\",\n className\n )}\n onClick={disabled ? undefined : (e) => {\n if (props.allowIndeterminate) {\n const onChange = onValueChange as ((newValue: boolean | null) => void) | undefined;\n if (value === null || value === undefined) onChange?.(true)\n else if (value) onChange?.(false)\n else onChange?.(null);\n } else {\n onValueChange?.(!value);\n }\n // refInput.current?.focus();\n }}\n >\n\n <BooleanSwitch\n value={value}\n ref={refInput}\n size={size}\n className={cls(invisible && focus ? focusedClasses : \"\", inputClassName)}\n disabled={disabled}\n {...props}\n />\n\n <div id={switchLabelId} className={cls(\n \"grow\",\n position === \"end\" ? \"mr-4\" : \"ml-4\",\n size === \"small\" || size === \"smallest\" ? \"text-sm\" : \"text-base\"\n )}>\n {label}\n </div>\n\n </div>\n\n );\n};\n","\"use client\";\nimport React from \"react\";\nimport { cls } from \"../util\";\n\nexport type ButtonProps<C extends React.ElementType = \"button\"> = {\n children?: React.ReactNode;\n variant?: \"filled\" | \"outlined\" | \"text\";\n disabled?: boolean;\n color?: \"primary\" | \"secondary\" | \"text\" | \"error\" | \"neutral\";\n size?: \"small\" | \"medium\" | \"large\" | \"xl\" | \"2xl\";\n startIcon?: React.ReactNode;\n fullWidth?: boolean;\n className?: string;\n component?: C;\n onClick?: React.MouseEventHandler<HTMLElement>;\n} & React.ComponentPropsWithoutRef<C>;\n\nconst ButtonInner = React.memo(React.forwardRef<\n HTMLButtonElement,\n ButtonProps<React.ElementType>\n>(({\n children,\n className,\n variant = \"filled\",\n disabled = false,\n size = \"medium\",\n startIcon = null,\n fullWidth = false,\n component: Component,\n color = \"neutral\",\n ...props\n }: ButtonProps<React.ElementType>, ref) => {\n\n const baseClasses =\n \"typography-button h-fit rounded-md whitespace-nowrap inline-flex items-center justify-center p-2 px-4 focus:outline-none transition-all ease-in-out duration-150 gap-2 active:scale-[0.98]\";\n\n const buttonClasses = cls({\n \"w-full\": fullWidth,\n \"w-fit\": !fullWidth,\n\n // Filled Variants\n \"border border-primary bg-primary focus:ring-primary shadow-sm hover:shadow-md hover:brightness-110 text-white hover:text-white\": variant === \"filled\" && color === \"primary\" && !disabled,\n \"border border-secondary bg-secondary focus:ring-secondary shadow-sm hover:shadow-md hover:brightness-110 text-white hover:text-white\": variant === \"filled\" && color === \"secondary\" && !disabled,\n \"border border-red-500 bg-red-500 hover:bg-red-600 focus:ring-red-500 shadow-sm hover:shadow-md text-white hover:text-white\": variant === \"filled\" && color === \"error\" && !disabled,\n \"border border-surface-accent-200 bg-surface-accent-200 hover:bg-surface-accent-300 focus:ring-surface-accent-400 shadow-sm hover:shadow-md text-text-primary hover:text-text-primary dark:border-surface-accent-700 dark:bg-surface-accent-700 dark:hover:bg-surface-accent-600 dark:text-text-primary-dark hover:dark:text-text-primary-dark\": variant === \"filled\" && color === \"text\" && !disabled,\n \"border border-transparent bg-surface-100 hover:bg-surface-accent-200 text-text-primary dark:bg-surface-700 dark:hover:bg-surface-accent-700 dark:text-text-primary-dark hover:text-text-primary dark:text-text-primary-dark hover:dark:text-text-primary-dark\": variant === \"filled\" && color === \"neutral\" && !disabled,\n\n // Text Variants\n \"border border-transparent text-primary hover:text-primary hover:bg-surface-accent-200 hover:bg-opacity-75 hover:bg-surface-accent-200/75 dark:hover:bg-surface-accent-800\": variant === \"text\" && color === \"primary\" && !disabled,\n \"border border-transparent text-secondary hover:text-secondary hover:bg-surface-accent-200 hover:bg-opacity-75 hover:bg-surface-accent-200/75 dark:hover:bg-surface-accent-800\": variant === \"text\" && color === \"secondary\" && !disabled,\n \"border border-transparent text-red-500 hover:text-red-500 hover:bg-red-500 hover:bg-opacity-10 hover:bg-red-500/10\": variant === \"text\" && color === \"error\" && !disabled,\n \"border border-transparent text-text-primary hover:text-text-primary dark:text-text-primary-dark hover:dark:text-text-primary-dark hover:bg-surface-accent-200 hover:bg-opacity-75 hover:bg-surface-accent-200/75 dark:hover:bg-surface-accent-800\": variant === \"text\" && color === \"text\" && !disabled,\n \"border border-transparent text-text-primary hover:text-text-primary hover:bg-surface-accent-200 hover:bg-opacity-75 hover:bg-surface-accent-200/75 dark:text-text-primary-dark dark:hover:text-text-primary-dark dark:hover:bg-surface-accent-800\": variant === \"text\" && color === \"neutral\" && !disabled,\n\n // Outlined Variants\n \"border border-primary text-primary hover:text-primary hover:bg-primary-bg hover:bg-primary/10\": variant === \"outlined\" && color === \"primary\" && !disabled,\n \"border border-secondary text-secondary hover:text-secondary hover:bg-secondary-bg\": variant === \"outlined\" && color === \"secondary\" && !disabled,\n \"border border-red-500 text-red-500 hover:text-red-500 hover:bg-red-500 hover:text-white\": variant === \"outlined\" && color === \"error\" && !disabled,\n \"border border-surface-accent-400 text-text-primary hover:text-text-primary dark:text-text-primary-dark dark:border-surface-accent-600 hover:bg-surface-accent-200 hover:bg-opacity-75 hover:bg-surface-accent-200/75 dark:hover:bg-surface-accent-800\": variant === \"outlined\" && color === \"text\" && !disabled,\n \"border border-surface-300 text-text-primary hover:bg-surface-accent-200 hover:bg-opacity-75 hover:bg-surface-accent-200/75 dark:border-surface-600 dark:text-text-primary-dark dark:hover:bg-surface-accent-800\": variant === \"outlined\" && color === \"neutral\" && !disabled,\n\n // Disabled states for all variants\n \"text-text-disabled dark:text-text-disabled-dark\": disabled,\n \"border border-transparent opacity-50\": variant === \"text\" && disabled,\n \"border border-surface-500 opacity-50\": variant === \"outlined\" && disabled,\n \"border border-transparent bg-surface-300 dark:bg-surface-500 opacity-40 bg-surface-300/40 dark:bg-surface-500/40\": variant === \"filled\" && disabled\n });\n\n const sizeClasses = cls(\n {\n \"py-1 px-2\": size === \"small\",\n \"py-2 px-4\": size === \"medium\",\n \"py-2.5 px-5\": size === \"large\",\n \"py-3 px-6\": size === \"xl\",\n \"py-4 px-10\": size === \"2xl\"\n }\n );\n\n const iconColorClass = (color === \"neutral\" || color === \"text\") && !disabled\n ? \"[&>svg]:text-surface-accent-500 dark:[&>svg]:text-surface-accent-300\"\n : \"\";\n\n if (Component) {\n return (\n <Component\n ref={ref}\n onClick={props.onClick}\n className={cls(startIcon ? \"pl-3\" : \"\", baseClasses, buttonClasses, sizeClasses, iconColorClass, className)}\n {...props}>\n {startIcon}\n {children}\n </Component>\n );\n }\n\n return (\n <button ref={ref as React.Ref<HTMLButtonElement>}\n type={props.type ?? \"button\"}\n onClick={props.onClick}\n className={cls(startIcon ? \"pl-3\" : \"\", baseClasses, buttonClasses, sizeClasses, iconColorClass, className)}\n disabled={disabled}\n data-variant={variant}\n data-size={size}\n {...props as React.ButtonHTMLAttributes<HTMLButtonElement>}>\n {startIcon}\n {children}\n </button>\n );\n\n}));\n\nButtonInner.displayName = \"Button\"\n\nexport const Button = ButtonInner as React.FC<ButtonProps<React.ElementType>>;\n","\"use client\";\nimport React, { useCallback } from \"react\";\nimport { cardClickableMixin, cardMixin } from \"../styles\";\nimport { cls } from \"../util\";\n\ntype CardProps = {\n children: React.ReactNode;\n style?: React.CSSProperties;\n onClick?: (e?: React.MouseEvent) => void;\n className?: string;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(({\n children,\n className,\n onClick,\n style,\n ...props\n}, ref) => {\n const onKeyPress = useCallback((e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n onClick?.();\n }\n }, [onClick]);\n\n return (\n <div\n ref={ref}\n onKeyPress={onKeyPress}\n role={onClick ? \"button\" : undefined}\n tabIndex={onClick ? 0 : undefined}\n onClick={onClick}\n className={cls(cardMixin, onClick && cardClickableMixin, className)}\n style={style}\n {...props}>\n {children}\n </div>\n );\n});\n\nCard.displayName = \"Card\";\n\nexport { Card };\n","\"use client\";\nimport React, { ForwardRefRenderFunction } from \"react\";\nimport { cls } from \"../util\";\n\nexport type ContainerProps = {\n children: React.ReactNode;\n style?: React.CSSProperties;\n className?: string;\n maxWidth?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\" | \"4xl\" | \"5xl\" | \"6xl\" | \"7xl\";\n}\n\nconst containerMaxWidths = {\n xs: \"max-w-xs\",\n sm: \"max-w-sm\",\n md: \"max-w-md\",\n lg: \"max-w-lg\",\n xl: \"max-w-xl\",\n \"2xl\": \"max-w-2xl\",\n \"3xl\": \"max-w-3xl\",\n \"4xl\": \"max-w-4xl\",\n \"5xl\": \"max-w-5xl\",\n \"6xl\": \"max-w-6xl\",\n \"7xl\": \"max-w-7xl\"\n}\n\nconst ContainerInner: ForwardRefRenderFunction<HTMLDivElement, ContainerProps> = (\n {\n children,\n className,\n style,\n maxWidth = \"7xl\"\n },\n ref\n) => {\n\n const classForMaxWidth = maxWidth ? containerMaxWidths[maxWidth] : \"\";\n\n return (\n <div\n ref={ref}\n className={cls(\"mx-auto px-3 md:px-4 lg-px-6\",\n classForMaxWidth,\n className)}\n style={style}>\n {children}\n </div>\n );\n}\n\nexport const Container = React.forwardRef(ContainerInner);\n\n","\"use client\";\nimport React from \"react\";\nimport { Container } from \"./Container\";\nimport { cls } from \"../util\";\n\nexport type CenteredViewProps = {\n children: React.ReactNode;\n maxWidth?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\" | \"4xl\" | \"5xl\" | \"6xl\" | \"7xl\";\n outerClassName?: string;\n className?: string;\n fullScreen?: boolean;\n};\n\nexport const CenteredView = React.forwardRef<HTMLDivElement, CenteredViewProps>(({\n children,\n maxWidth,\n outerClassName,\n className,\n fullScreen,\n ...rest\n }, ref) => { // Notice how the ref is now received as the second argument\n\n return (\n <div ref={ref}\n className={cls(\"flex flex-col grow\", fullScreen ? \"h-screen\" : \"h-full\", outerClassName)}\n {...rest}>\n <Container className={cls(\"m-auto\", className)} maxWidth={maxWidth}>\n {children}\n </Container>\n </div>\n );\n\n});\n\nCenteredView.displayName = \"CenteredView\";\n","import React from \"react\";\nimport { cls } from \"../util\";\n\nexport type CircularProgressProps = {\n size?: \"smallest\" | \"small\" | \"medium\" | \"large\",\n className?: string\n}\n\nexport function CircularProgress({\n size = \"medium\",\n className\n }: CircularProgressProps) {\n\n let sizeClasses = \"\";\n if (size === \"smallest\") {\n sizeClasses = \"w-4 h-4\";\n } else if (size === \"small\") {\n sizeClasses = \"w-6 h-6\";\n } else if (size === \"medium\") {\n sizeClasses = \"w-8 h-8 m-1\";\n } else {\n sizeClasses = \"w-10 h-10 m-1\";\n }\n\n let borderClasses = \"\";\n if (size === \"smallest\") {\n borderClasses = \"border-[3px]\";\n } else if (size === \"small\") {\n borderClasses = \"border-[4px]\";\n } else if (size === \"medium\") {\n borderClasses = \"border-4\";\n } else {\n borderClasses = \"border-[6px]\";\n }\n\n return (\n <div\n className={cls(\n sizeClasses,\n borderClasses,\n \"inline-block animate-spin rounded-full border-solid border-current border-r-transparent align-[-0.125em] motion-reduce:animate-[spin_1.5s_linear_infinite]\",\n \"text-primary dark:text-primary\",\n className)}\n role=\"status\">\n <span\n className=\"absolute! -m-px! h-px! w-px! overflow-hidden! whitespace-nowrap! border-0! p-0! [clip:rect(0,0,0,0)]!\"\n >\n Loading...\n </span>\n </div>\n );\n}\n","import React, { ReactEventHandler } from \"react\";\nimport { cls } from \"../util\";\n\nexport type TypographyVariant = keyof typeof typographyVariants;\nexport type TypographyProps<C extends React.ElementType = \"span\"> = {\n align?: \"center\" | \"inherit\" | \"justify\" | \"left\" | \"right\";\n children?: React.ReactNode;\n className?: string;\n component?: C;\n gutterBottom?: boolean;\n noWrap?: boolean;\n paragraph?: boolean;\n variant?: TypographyVariant;\n variantMapping?: { [key: string]: string };\n color?: \"inherit\" | \"initial\" | \"primary\" | \"secondary\" | \"disabled\" | \"error\";\n onClick?: ReactEventHandler<HTMLElement>;\n style?: React.CSSProperties;\n} & React.ComponentPropsWithoutRef<C>;\n\nconst typographyVariants = {\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n h4: \"h4\",\n h5: \"h5\",\n h6: \"h6\",\n subtitle1: \"h6\",\n subtitle2: \"h6\",\n label: \"label\",\n body1: \"p\",\n body2: \"p\",\n inherit: \"p\",\n caption: \"p\",\n button: \"span\"\n};\n\nconst colorToClasses = {\n inherit: \"text-inherit\",\n initial: \"text-current\",\n primary: \"text-text-primary dark:text-text-primary-dark\",\n secondary: \"text-text-secondary dark:text-text-secondary-dark\",\n disabled: \"text-text-disabled dark:text-text-disabled-dark\",\n error: \"text-red-600 dark:text-red-500\"\n};\n\nconst gutterBottomClasses = {\n h1: \"mb-5\",\n h2: \"mb-4\",\n h3: \"mb-4\",\n h4: \"mb-4\",\n h5: \"mb-3\",\n h6: \"mb-3\",\n subtitle1: \"mb-3\",\n subtitle2: \"mb-3\",\n body1: \"mb-3\",\n body2: \"mb-3\",\n inherit: \"mb-3\",\n caption: \"mb-2\",\n button: \"mb-2\",\n label: \"mb-2\"\n};\n\nconst variantToClasses = {\n h1: \"typography-h1\",\n h2: \"typography-h2\",\n h3: \"typography-h3\",\n h4: \"typography-h4\",\n h5: \"typography-h5\",\n h6: \"typography-h6\",\n subtitle1: \"typography-subtitle1\",\n subtitle2: \"typography-subtitle2\",\n body1: \"typography-body1\",\n body2: \"typography-body2\",\n label: \"typography-label\",\n inherit: \"typography-inherit\",\n caption: \"typography-caption\",\n button: \"typography-button\"\n};\n\nexport function Typography<C extends React.ElementType = \"span\">(\n {\n align = \"inherit\",\n color = \"primary\",\n children,\n className,\n component,\n gutterBottom = false,\n noWrap = false,\n paragraph = false,\n variant = \"body1\",\n variantMapping = typographyVariants,\n style,\n onClick,\n ...other\n }: TypographyProps<C>\n) {\n const Component =\n component ||\n (paragraph ? \"p\" : variantMapping[variant] || typographyVariants[variant]) ||\n \"span\";\n\n const classes = cls(\n variantToClasses[variant],\n color ? colorToClasses[color] : \"\",\n align !== \"inherit\" && `text-${align}`,\n gutterBottom && gutterBottomClasses[variant],\n noWrap && \"truncate\",\n paragraph && \"mb-3\",\n className\n );\n\n return (\n <Component className={classes}\n onClick={onClick}\n style={style}\n {...other}>\n {children}\n </Component>\n );\n}\n","import React from \"react\";\nimport { CircularProgress, CircularProgressProps } from \"./CircularProgress\";\nimport { Typography } from \"./Typography\";\n\n/**\n *\n * @param text\n * @param props\n\n * @ignore\n */\nexport function CircularProgressCenter({ text, ...props }: CircularProgressProps & {\n text?: string\n}) {\n return (\n <div\n className=\"flex w-full h-screen max-h-full max-w-full gap-4\">\n <div className=\"m-auto flex flex-col gap-2 items-center\">\n <CircularProgress {...props}/>\n {text && <Typography\n color={\"secondary\"}\n variant={\"caption\"}\n className=\"text-center\">{text}</Typography>}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nexport type IconColor = \"inherit\" | \"primary\" | \"secondary\" | \"disabled\" | \"error\" | \"success\" | \"warning\";\nexport type IconSize = \"smallest\" | \"small\" | \"medium\" | \"large\";\n\n/**\n * Standardized icon size map in px.\n * Use with direct Lucide imports: `<Database size={iconSize.small} />`\n */\nexport const iconSize = {\n smallest: 16,\n small: 20,\n medium: 24,\n large: 28\n} as const satisfies Record<IconSize, number>;\n\nexport type IconProps = {\n size?: IconSize | number,\n color?: IconColor,\n className?: string,\n onClick?: (e: React.SyntheticEvent) => void,\n style?: React.CSSProperties,\n}\n\nexport const colorClassesMapping: Record<IconColor, string> = {\n inherit: \"\",\n primary: \"text-primary\",\n success: \"text-green-500\",\n warning: \"text-yellow-500\",\n secondary: \"text-secondary\",\n disabled: \"text-text-disabled dark:text-text-disabled-dark\",\n error: \"text-red-500\"\n}\n","\nimport React, { ErrorInfo, PropsWithChildren } from \"react\";\n\nimport { AlertCircleIcon, ShieldAlertIcon, RefreshCwIcon, ArrowLeftIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\";\nimport { iconSize } from \"../icons/Icon\";\nimport { Typography } from \"./Typography\";\nimport { Button } from \"./Button\";\nimport { cls } from \"../util\";\n\n/**\n * Checks whether the error message relates to missing permissions or\n * authorization failures. Used to show a friendlier message in fullPage mode.\n */\nfunction isPermissionError(error: Error | null): boolean {\n if (!error) return false;\n const msg = error.message?.toLowerCase() ?? \"\";\n const code = (error as { code?: string }).code?.toLowerCase() ?? \"\";\n return msg.includes(\"permission\")\n || msg.includes(\"insufficient\")\n || msg.includes(\"unauthorized\")\n || msg.includes(\"forbidden\")\n || msg.includes(\"access denied\")\n || code === \"permission_denied\"\n || code === \"insufficient_permissions\"\n || (error as { status?: number }).status === 403;\n}\n\nexport interface ErrorBoundaryProps {\n /**\n * When true, renders a full-page centered error screen instead of the\n * compact inline error. Intended for wrapping top-level app roots or\n * major route sections.\n */\n fullPage?: boolean;\n /**\n * Optional callback invoked when the user clicks \"Try again\". If provided,\n * the boundary resets its error state and calls this handler. If omitted,\n * the \"Try again\" button resets the boundary state, re-mounting children.\n */\n onReset?: () => void;\n}\n\ninterface ErrorBoundaryState {\n error: Error | null;\n showDetails: boolean;\n}\n\nexport class ErrorBoundary extends React.Component<PropsWithChildren<ErrorBoundaryProps>, ErrorBoundaryState> {\n constructor(props: PropsWithChildren<ErrorBoundaryProps>) {\n super(props);\n this.state = { error: null,\nshowDetails: false };\n }\n\n static getDerivedStateFromError(error: Error) {\n return { error };\n }\n\n componentDidCatch(error: Error, _errorInfo: ErrorInfo) {\n console.error(error);\n }\n\n private handleReset = () => {\n this.setState({ error: null,\nshowDetails: false });\n this.props.onReset?.();\n };\n\n private handleReload = () => {\n window.location.reload();\n };\n\n private toggleDetails = () => {\n this.setState(prev => ({ showDetails: !prev.showDetails }));\n };\n\n render() {\n if (this.state.error) {\n if (this.props.fullPage) {\n return this.renderFullPage();\n }\n return this.renderInline();\n }\n\n return this.props.children;\n }\n\n private renderInline() {\n return (\n <div className=\"flex flex-col m-2\">\n <div className=\"flex items-center m-2\">\n <AlertCircleIcon className={\"text-red-500\"} size={iconSize.small}/>\n <div className=\"ml-4\">Error</div>\n </div>\n <Typography variant={\"caption\"}>\n {this.state.error?.message ?? \"See the error in the console\"}\n </Typography>\n </div>\n );\n }\n\n private renderFullPage() {\n const { error, showDetails } = this.state;\n const isPermission = isPermissionError(error);\n\n const Icon = isPermission ? ShieldAlertIcon : AlertCircleIcon;\n const title = isPermission\n ? \"Access denied\"\n : \"Something went wrong\";\n const description = isPermission\n ? \"You don't have permission to access this resource. Please check your account permissions or contact your administrator.\"\n : \"An unexpected error occurred. You can try reloading the page or going back.\";\n\n return (\n <div className={cls(\n \"flex items-center justify-center min-h-[400px] h-full w-full\",\n \"bg-surface-50 dark:bg-surface-950\"\n )}>\n <div className=\"flex flex-col items-center max-w-md px-6 py-10 text-center\">\n <div className={cls(\n \"flex items-center justify-center w-14 h-14 rounded-2xl mb-6\",\n isPermission\n ? \"bg-amber-100 dark:bg-amber-900/30\"\n : \"bg-red-100 dark:bg-red-900/30\"\n )}>\n <Icon\n size={28}\n className={isPermission\n ? \"text-amber-600 dark:text-amber-400\"\n : \"text-red-500 dark:text-red-400\"}\n />\n </div>\n\n <Typography variant={\"h6\"}\n className=\"text-text-primary dark:text-text-primary-dark mb-2\">\n {title}\n </Typography>\n\n <Typography variant={\"body2\"}\n className=\"text-text-secondary dark:text-text-secondary-dark mb-8\">\n {description}\n </Typography>\n\n <div className=\"flex gap-3\">\n <Button\n variant=\"outlined\"\n color=\"neutral\"\n size=\"medium\"\n onClick={this.handleReset}\n >\n <ArrowLeftIcon size={16}/>\n Try again\n </Button>\n <Button\n variant=\"filled\"\n color=\"primary\"\n size=\"medium\"\n onClick={this.handleReload}\n >\n <RefreshCwIcon size={16}/>\n Reload page\n </Button>\n </div>\n\n {error?.message && (\n <div className=\"mt-8 w-full\">\n <button\n onClick={this.toggleDetails}\n className={cls(\n \"flex items-center gap-1 mx-auto text-xs\",\n \"text-text-disabled dark:text-text-disabled-dark\",\n \"hover:text-text-secondary dark:hover:text-text-secondary-dark\",\n \"transition-colors cursor-pointer bg-transparent border-none p-0\"\n )}\n >\n Technical details\n {showDetails\n ? <ChevronUpIcon size={14}/>\n : <ChevronDownIcon size={14}/>}\n </button>\n {showDetails && (\n <div className={cls(\n \"mt-3 p-3 rounded-lg text-left text-xs\",\n \"bg-surface-100 dark:bg-surface-800\",\n \"text-text-secondary dark:text-text-secondary-dark\",\n \"font-mono break-all\"\n )}>\n {error.message}\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n );\n }\n}\n","\nimport React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\n\nimport { CheckIcon, MinusIcon } from \"lucide-react\";\nimport { cls } from \"../util\";\n\nexport interface CheckboxProps {\n checked: boolean;\n id?: string;\n disabled?: boolean;\n indeterminate?: boolean;\n onCheckedChange?: (checked: boolean) => void;\n padding?: boolean;\n size?: \"smallest\" | \"small\" | \"medium\" | \"large\";\n color?: \"primary\" | \"secondary\";\n \"aria-label\"?: string;\n}\n\nconst sizeClasses = {\n large: \"w-6 h-6 rounded flex items-center justify-center\",\n medium: \"w-5 h-5 rounded flex items-center justify-center\",\n small: \"w-4 h-4 rounded flex items-center justify-center\",\n smallest: \"w-4 h-4 rounded flex items-center justify-center\"\n};\n\nconst outerSizeClasses = {\n medium: \"w-10 h-10\",\n small: \"w-8 h-8\",\n large: \"w-12 h-12 \",\n smallest: \"w-8 h-8\"\n}\nconst paddingClasses = {\n medium: \"p-2\",\n small: \"p-2\",\n large: \"p-2\",\n smallest: \"p-2\"\n}\n\nconst colorClasses = {\n primary: \"bg-primary\",\n secondary: \"bg-secondary\"\n}\n\nexport const Checkbox = React.memo(({\n id,\n checked,\n indeterminate = false,\n padding = true,\n disabled,\n size = \"medium\",\n onCheckedChange,\n color = \"primary\",\n \"aria-label\": ariaLabel\n }: CheckboxProps) => {\n\n const isChecked = indeterminate ? false : checked;\n\n const iconSize = size === \"medium\"\n ? 20\n : size === \"small\"\n ? 16\n : size === \"smallest\"\n ? 14\n : 24;\n return (\n <CheckboxPrimitive.Root\n id={id}\n checked={indeterminate || isChecked}\n disabled={disabled}\n aria-label={ariaLabel}\n aria-checked={indeterminate ? \"mixed\" : isChecked}\n onCheckedChange={disabled ? undefined : onCheckedChange}>\n\n <div className={cls(\n padding ? paddingClasses[size] : \"\",\n outerSizeClasses[size],\n \"inline-flex items-center justify-center text-sm font-medium focus:outline-none transition-colors ease-in-out duration-150\",\n onCheckedChange ? \"rounded-full hover:bg-surface-accent-200 hover:bg-opacity-75 hover:bg-surface-accent-200/75 dark:hover:bg-surface-accent-700 dark:hover:bg-opacity-75 dark:hover:bg-surface-accent-700/75\" : \"\",\n onCheckedChange ? \"cursor-pointer\" : \"cursor-default\"\n )}>\n <div\n className={cls(\n \"border-2 relative transition-colors ease-in-out duration-150\",\n sizeClasses[size],\n disabled\n ? (indeterminate || isChecked ? \"bg-surface-accent-400 dark:bg-surface-accent-600\" : \"bg-surface-accent-400 dark:bg-surface-accent-600\")\n : (indeterminate || isChecked ? colorClasses[color] : \"bg-white dark:bg-surface-900\"),\n (indeterminate || isChecked) ? \"text-surface-accent-100 dark:text-surface-accent-900\" : \"\",\n disabled\n ? \"border-transparent\"\n : (indeterminate || isChecked ? \"border-transparent\" : \"border-surface-accent-800 dark:border-surface-accent-500\")\n )}>\n <CheckboxPrimitive.Indicator asChild>\n {indeterminate\n ? (\n <MinusIcon size={iconSize} className={\"absolute\"}/>\n )\n : (\n <CheckIcon size={iconSize} className={\"absolute\"}/>\n )}\n </CheckboxPrimitive.Indicator>\n </div>\n </div>\n </CheckboxPrimitive.Root>\n );\n});\n\nCheckbox.displayName = \"Checkbox\";\n","import React from \"react\";\nimport { CHIP_COLORS, cls, getColorSchemeForKey } from \"../util\";\n\nexport type ChipColorScheme = {\n color: string;\n text: string;\n /** Background color override for dark mode */\n darkColor?: string;\n /** Text color override for dark mode */\n darkText?: string;\n}\n\nexport type ChipColorKey = keyof typeof CHIP_COLORS;\n\nexport interface ChipProps {\n className?: string;\n children: React.ReactNode;\n size?: \"smallest\" | \"small\" | \"medium\" | \"large\";\n colorScheme?: ChipColorScheme | ChipColorKey;\n error?: boolean;\n outlined?: boolean;\n onClick?: () => void;\n icon?: React.ReactNode;\n style?: React.CSSProperties;\n}\n\nconst sizeClassNames = {\n smallest: \"px-1.5 text-xs\",\n small: \"px-2 py-0.5 text-sm\",\n medium: \"px-3 py-1 text-sm\",\n large: \"px-4 py-1.5 text-sm\"\n}\n\n/**\n * Detect if the app is currently in dark mode by checking the\n * Tailwind `dark` class on the document root.\n */\nfunction isDarkMode(): boolean {\n return typeof document !== \"undefined\" &&\n document.documentElement.classList.contains(\"dark\");\n}\n\n/**\n * @group Preview components\n */\nexport function Chip({\n children,\n colorScheme,\n error,\n outlined,\n onClick,\n icon,\n size = \"large\",\n className,\n style\n }: ChipProps) {\n\n const usedColorScheme = typeof colorScheme === \"string\" ? getColorSchemeForKey(colorScheme) : colorScheme;\n\n // Resolve theme-aware colors\n const dark = isDarkMode();\n\n // Helper to generate rgba from hex or standard colors\n const getRgba = (hex: string, alpha: number): string => {\n if (!hex || !hex.startsWith(\"#\")) return hex;\n let color = hex.slice(1);\n if (color.length === 3) {\n color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];\n }\n const r = parseInt(color.slice(0, 2), 16);\n const g = parseInt(color.slice(2, 4), 16);\n const b = parseInt(color.slice(4, 6), 16);\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\n };\n\n let textColor = \"\";\n let bgColor = \"\";\n let border = \"\";\n\n if (error) {\n textColor = dark ? \"#f87171\" : \"#dc2626\";\n } else if (usedColorScheme) {\n textColor = dark && usedColorScheme.darkText ? usedColorScheme.darkText : usedColorScheme.text;\n } else {\n textColor = dark ? \"#d4d4d4\" : \"#404040\";\n }\n\n if (outlined) {\n bgColor = getRgba(textColor, dark ? 0.12 : 0.06);\n border = `1px solid ${getRgba(textColor, dark ? 0.25 : 0.18)}`;\n } else {\n if (error) {\n bgColor = dark ? \"rgba(220, 38, 38, 0.2)\" : \"rgba(239, 68, 68, 0.15)\";\n border = `1px solid ${dark ? \"rgba(220, 38, 38, 0.4)\" : \"rgba(239, 68, 68, 0.3)\"}`;\n } else if (usedColorScheme) {\n bgColor = dark && usedColorScheme.darkColor ? usedColorScheme.darkColor : usedColorScheme.color;\n } else {\n bgColor = dark ? \"#1f1f1f\" : \"#f4f4f5\";\n border = `1px solid ${dark ? \"#2e2e30\" : \"#e4e4e7\"}`;\n }\n }\n\n return (\n <div\n className={cls(\"rounded-lg max-w-full w-max h-fit font-regular inline-flex gap-1\",\n \"text-ellipsis\",\n \"items-center\",\n onClick ? \"cursor-pointer hover:bg-surface-accent-300 dark:hover:bg-surface-accent-700\" : \"\",\n sizeClassNames[size],\n className)}\n onClick={onClick}\n style={{\n backgroundColor: bgColor,\n color: textColor,\n border: border || undefined,\n overflow: \"hidden\",\n ...style\n }}\n >\n {children}\n {icon}\n </div>\n );\n}\n","\"use client\";\nimport React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cls } from \"../util\";\nimport { useInjectStyles } from \"../hooks\";\nimport { usePortalContainer } from \"../hooks/PortalContainerContext\";\n\nexport type TooltipProps = {\n open?: boolean,\n defaultOpen?: boolean,\n onOpenChange?: (open: boolean) => void,\n side?: \"top\" | \"bottom\" | \"left\" | \"right\",\n align?: \"start\" | \"center\" | \"end\",\n sideOffset?: number,\n title?: string | React.ReactNode,\n delayDuration?: number;\n asChild?: boolean;\n tooltipClassName?: string,\n tooltipStyle?: React.CSSProperties;\n children: React.ReactNode,\n className?: string,\n container?: HTMLElement,\n style?: React.CSSProperties;\n};\n\nexport const Tooltip = ({\n open,\n defaultOpen,\n side = \"bottom\",\n delayDuration = 200,\n sideOffset,\n align,\n onOpenChange,\n title,\n tooltipClassName,\n tooltipStyle,\n children,\n asChild = false,\n container,\n className,\n style\n }: TooltipProps) => {\n\n useInjectStyles(\"Tooltip\", styles);\n\n // Get the portal container from context\n const contextContainer = usePortalContainer();\n\n // Prioritize manual prop, fallback to context container\n const finalContainer = (container ?? contextContainer ?? undefined) as HTMLElement | undefined;\n\n if (!title)\n return <>{children}</>;\n\n const trigger = asChild\n ? <TooltipPrimitive.Trigger asChild={true}>\n {children}\n </TooltipPrimitive.Trigger>\n : <TooltipPrimitive.Trigger asChild={true}>\n <div style={style} className={className}>\n {children}\n </div>\n </TooltipPrimitive.Trigger>;\n\n return (\n <TooltipPrimitive.Provider delayDuration={delayDuration}>\n <TooltipPrimitive.Root {...(open !== undefined ? { open,\nonOpenChange } : {})} defaultOpen={defaultOpen}>\n {trigger}\n <TooltipPrimitive.Portal container={finalContainer}>\n <TooltipPrimitive.Content\n className={cls(\"TooltipContent\",\n \"max-w-lg leading-relaxed\",\n \"z-50 rounded px-3 py-2 text-xs leading-none bg-surface-accent-700 dark:bg-surface-accent-800 bg-opacity-90 bg-surface-accent-700/90 dark:bg-surface-accent-800/90 font-medium text-surface-accent-50 shadow-2xl select-none duration-400 ease-in transform opacity-100\",\n tooltipClassName)}\n style={tooltipStyle}\n sideOffset={sideOffset === undefined ? 4 : sideOffset}\n align={align}\n side={side}>\n {title}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n </TooltipPrimitive.Root>\n </TooltipPrimitive.Provider>\n );\n};\n\nconst styles = `\n\n.TooltipContent {\n animation-duration: 220ms;\n animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);\n will-change: transform, opacity;\n}\n\n.TooltipContent[data-state='delayed-open'][data-side='top'] {\n animation-name: slideDownAndFade;\n}\n.TooltipContent[data-state='delayed-open'][data-side='right'] {\n animation-name: slideLeftAndFade;\n}\n.TooltipContent[data-state='delayed-open'][data-side='bottom'] {\n animation-name: slideUpAndFade;\n}\n.TooltipContent[data-state='delayed-open'][data-side='left'] {\n animation-name: slideRightAndFade;\n}\n\n\n@keyframes slideUpAndFade {\n from {\n opacity: 0;\n transform: translateY(4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes slideRightAndFade {\n from {\n opacity: 0;\n transform: translateX(-4px);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n\n@keyframes slideDownAndFade {\n from {\n opacity: 0;\n transform: translateY(-4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes slideLeftAndFade {\n from {\n opacity: 0;\n transform: translateX(4px);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}`;\n","\nimport React from \"react\";\nimport { CHIP_COLORS, cls } from \"../util\";\nimport { ChipColorKey, ChipColorScheme } from \"./Chip\";\nimport { CheckIcon } from \"lucide-react\";\nimport { Tooltip } from \"./Tooltip\";\n\nexport interface ColorPickerProps {\n /**\n * Currently selected color key\n */\n value?: ChipColorKey;\n /**\n * Callback when color selection changes. Passes undefined when \"Auto\" is selected.\n */\n onChange: (colorKey: ChipColorKey | undefined) => void;\n /**\n * Size of the color swatches\n */\n size?: \"small\" | \"medium\";\n /**\n * Whether to show the \"Auto\" option that clears the selection\n */\n allowClear?: boolean;\n /**\n * Whether the picker is disabled\n */\n disabled?: boolean;\n}\n\n// Base colors in display order\nconst BASE_COLORS = [\"blue\", \"indigo\", \"violet\", \"purple\", \"fuchsia\", \"pink\", \"rose\", \"red\", \"orange\", \"yellow\", \"green\", \"emerald\", \"teal\", \"cyan\", \"gray\"] as const;\n\n// Helper to get readable name from color key\nfunction getColorDisplayName(colorKey: ChipColorKey): string {\n return `${colorKey.charAt(0).toUpperCase()}${colorKey.slice(1)}`;\n}\n\n/**\n * A color picker component that displays a grid of predefined CHIP_COLORS.\n * Used for selecting colors for enum values, tags, and other chip-based UI elements.\n *\n * @group Form components\n */\nexport function ColorPicker({\n value,\n onChange,\n size = \"medium\",\n allowClear = true,\n disabled = false\n}: ColorPickerProps) {\n\n const swatchSize = size === \"small\" ? \"w-5 h-5\" : \"w-6 h-6\";\n const checkSize = size === \"small\" ? 12 : 14;\n\n return (\n <div className=\"flex flex-col gap-2\">\n {allowClear && (\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => onChange(undefined)}\n className={cls(\n \"flex items-center gap-2 px-2 py-1 rounded text-sm transition-colors\",\n \"hover:bg-surface-accent-100 dark:hover:bg-surface-accent-800\",\n disabled && \"opacity-50 cursor-not-allowed\",\n !value && \"bg-surface-accent-100 dark:bg-surface-accent-800 font-medium\"\n )}\n >\n <div className={cls(\n swatchSize,\n \"rounded-full border-2 border-dashed border-surface-accent-400 dark:border-surface-accent-600\",\n \"flex items-center justify-center\"\n )}>\n {!value && <CheckIcon size={checkSize}/>}\n </div>\n <span className=\"text-surface-accent-700 dark:text-surface-accent-300\">\n Auto (based on ID)\n </span>\n </button>\n )}\n\n <div className=\"flex flex-wrap gap-1.5\">\n {BASE_COLORS.map((base) => {\n const colorKey = base as ChipColorKey;\n const colorScheme = CHIP_COLORS[colorKey] as ChipColorScheme;\n const isSelected = value === colorKey;\n const displayName = getColorDisplayName(colorKey);\n\n return (\n <Tooltip\n key={colorKey}\n title={displayName}\n delayDuration={300}\n >\n <button\n type=\"button\"\n disabled={disabled}\n onClick={() => onChange(colorKey)}\n className={cls(\n swatchSize,\n \"rounded-full transition-all flex items-center justify-center\",\n \"hover:scale-110 hover:shadow-md\",\n \"focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-1\",\n disabled && \"opacity-50 cursor-not-allowed hover:scale-100\",\n isSelected && \"ring-2 ring-primary ring-offset-1\"\n )}\n style={{\n backgroundColor: colorScheme.color\n }}\n aria-label={displayName}\n aria-pressed={isSelected}\n >\n {isSelected && (\n <CheckIcon\n size={checkSize}\n style={{ color: colorScheme.text }}\n />\n )}\n </button>\n </Tooltip>\n );\n })}\n </div>\n </div>\n );\n}\n","\"use client\";\nimport React from \"react\";\nimport { cls } from \"../util\";\n\nexport type IconButtonProps<C extends React.ElementType> =\n Omit<(C extends \"button\" ? React.ButtonHTMLAttributes<HTMLButtonElement> : React.ComponentProps<C>), \"onClick\">\n & {\n size?: \"medium\" | \"small\" | \"smallest\" | \"large\";\n variant?: \"ghost\" | \"filled\",\n shape?: \"circular\" | \"square\",\n disabled?: boolean;\n toggled?: boolean;\n component?: C;\n onClick?: React.MouseEventHandler<any>;\n \"aria-label\"?: string;\n}\n\nconst buttonClasses = \"hover:bg-surface-accent-200 hover:bg-opacity-75 hover:bg-surface-accent-200/75 dark:hover:bg-surface-accent-800 hover:scale-[1.04] active:scale-95 transition-transform\";\nconst baseClasses = \"inline-flex items-center justify-center p-2 text-sm font-medium focus:outline-none transition-colors ease-in-out duration-150\";\nconst colorClasses = \"text-surface-accent-500 visited:text-surface-accent-500 dark:text-surface-accent-300 dark:visited:text-surface-300\";\nconst sizeClasses = {\n medium: \"w-10 !h-10 min-w-10 min-h-10\",\n small: \"w-8 !h-8 min-w-8 min-h-8\",\n smallest: \"w-6 !h-6 min-w-6 min-h-6\",\n large: \"w-12 !h-12 min-w-12 min-h-12\"\n}\nconst shapeClasses = {\n circular: \"rounded-full\",\n square: \"rounded-md\"\n}\n\nconst IconButtonInner = <C extends React.ElementType = \"button\">({\n children,\n className,\n size = \"medium\",\n variant = \"ghost\",\n shape = \"circular\",\n disabled,\n toggled,\n component,\n ...props\n }: IconButtonProps<C>, ref: React.ForwardedRef<HTMLButtonElement>) => {\n\n const bgClasses = variant === \"ghost\" ? \"bg-transparent\" : \"bg-surface-accent-200 bg-opacity-50 bg-surface-accent-200/50 dark:bg-surface-900 dark:bg-opacity-50 dark:bg-surface-900/50\";\n const Component: React.ElementType<any> = component || \"button\";\n const isNativeButton = Component === \"button\";\n return (\n <Component\n type={isNativeButton ? \"button\" : undefined}\n role={isNativeButton ? undefined : \"button\"}\n ref={ref}\n aria-disabled={disabled || undefined}\n tabIndex={disabled ? -1 : undefined}\n {...props}\n className={cls(\n disabled ? \"opacity-50 pointer-events-none\" : \"cursor-pointer\",\n toggled ? \"outline outline-2 outline-primary\" : \"\",\n \"text-inherit dark:text-inherit\",\n colorClasses,\n bgClasses,\n baseClasses,\n buttonClasses,\n shapeClasses[shape],\n sizeClasses[size],\n className\n )}>\n {children}\n </Component>\n );\n};\n\nexport const IconButton = React.forwardRef(IconButtonInner as React.ForwardRefRenderFunction<HTMLButtonElement, IconButtonProps<any>>) as React.ComponentType<IconButtonProps<any>>;\n","\"use client\";\nimport * as React from \"react\";\nimport { cls } from \"../util\";\nimport { defaultBorderMixin } from \"../styles\";\n\nexport type InputLabelProps = {\n children?: React.ReactNode;\n className?: string;\n shrink?: boolean;\n} & React.LabelHTMLAttributes<HTMLLabelElement>;\n\nconst defaultClasses = {\n root: \"origin-left transition-transform block whitespace-nowrap overflow-hidden text-ellipsis max-w-full\",\n shrink: \"transform translate-y-[2px] scale-75 translate-x-[12px]\",\n expanded: \"translate-x-[16px] top-0 transform translate-y-[16px] scale-100\"\n};\n\nexport const InputLabel = React.forwardRef<HTMLLabelElement, InputLabelProps>(function InputLabel(inProps, ref) {\n const {\n shrink,\n className,\n ...other\n } = inProps;\n\n const computedClassName = cls(defaultClasses.root,\n {\n [defaultClasses.shrink]: shrink,\n [defaultClasses.expanded]: !shrink\n }, className);\n\n return (\n <label\n className={cls(\"text-sm font-medium peer-disabled:cursor-not-allowed\",\n defaultBorderMixin, computedClassName)}\n data-shrink={shrink}\n ref={ref}\n {...other}\n />\n );\n});\n","\n\"use client\";\n\nimport React, { useRef, useState } from \"react\";\nimport { CalendarIcon, XIcon, AlertCircleIcon } from \"lucide-react\";\nimport { iconSize } from \"../icons/Icon\";\nimport { IconButton } from \"./IconButton\";\nimport { fieldBackgroundDisabledMixin, fieldBackgroundHoverMixin, fieldBackgroundMixin } from \"../styles\";\nimport { InputLabel } from \"./InputLabel\";\nimport { Typography } from \"./Typography\";\nimport { cls } from \"../util\";\nimport { useInjectStyles } from \"../hooks\";\n\nexport type DateTimeFieldProps = {\n value?: Date | null;\n onChange?: (date: Date | null) => void;\n mode?: \"date\" | \"date_time\";\n disabled?: boolean;\n clearable?: boolean;\n error?: boolean;\n size?: \"smallest\" | \"small\" | \"medium\" | \"large\";\n label?: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n inputClassName?: string;\n invisible?: boolean;\n locale?: string;\n /**\n * IANA timezone string (e.g., \"America/New_York\", \"Europe/London\").\n * Used to display and input dates in the specified timezone.\n * The value passed to onChange will always be in UTC.\n * If not provided, uses the user's local timezone.\n */\n timezone?: string;\n};\n\nexport const DateTimeField: React.FC<DateTimeFieldProps> = ({\n value,\n label,\n onChange,\n disabled,\n clearable,\n mode = \"date\",\n error,\n size = \"large\",\n className,\n style,\n inputClassName,\n invisible,\n timezone\n}) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [focused, setFocused] = useState(false);\n const [internalValue, setInternalValue] = useState<string>(\"\");\n const [isTyping, setIsTyping] = useState(false);\n const invalidValue = value !== undefined && value !== null && (!(value instanceof Date) || isNaN(value.getTime()));\n\n useInjectStyles(\"DateTimeField\", inputStyles);\n\n const handleClear = (e: React.MouseEvent) => {\n e.preventDefault();\n setInternalValue(\"\");\n setIsTyping(false);\n onChange?.(null);\n };\n\n // Convert UTC Date to display string in the specified timezone\n const valueAsInputValue = (\n dateValue: Date | null,\n mode: \"date\" | \"date_time\"\n ) => {\n if (!dateValue || !(dateValue instanceof Date) || isNaN(dateValue.getTime())) {\n return \"\";\n }\n const pad = (n: number) => n.toString().padStart(2, \"0\");\n\n // Use Intl.DateTimeFormat to get date parts in the target timezone\n const options: Intl.DateTimeFormatOptions = {\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n hour12: false,\n timeZone: timezone // undefined = local timezone\n };\n\n const formatter = new Intl.DateTimeFormat(\"en-CA\", options);\n const parts = formatter.formatToParts(dateValue);\n\n const getPart = (type: string) => parts.find(p => p.type === type)?.value ?? \"\";\n\n const year = getPart(\"year\");\n const month = getPart(\"month\");\n const day = getPart(\"day\");\n\n if (mode === \"date\") {\n return `${year}-${month}-${day}`;\n } else {\n const hours = getPart(\"hour\");\n const minutes = getPart(\"minute\");\n return `${year}-${month}-${day}T${hours}:${minutes}`;\n }\n };\n\n // Get the UTC offset for a specific date in the target timezone (in minutes)\n const getTimezoneOffsetMinutes = (date: Date, tz?: string): number => {\n if (!tz) {\n // Local timezone: use built-in getTimezoneOffset (returns offset in minutes, inverted sign)\n return -date.getTimezoneOffset();\n }\n // For named timezones, calculate the offset by comparing formatted times\n const utcFormatter = new Intl.DateTimeFormat(\"en-CA\", {\n year: \"numeric\",\nmonth: \"2-digit\",\nday: \"2-digit\",\n hour: \"2-digit\",\nminute: \"2-digit\",\nhour12: false,\n timeZone: \"UTC\"\n });\n const tzFormatter = new Intl.DateTimeFormat(\"en-CA\", {\n year: \"numeric\",\nmonth: \"2-digit\",\nday: \"2-digit\",\n hour: \"2-digit\",\nminute: \"2-digit\",\nhour12: false,\n timeZone: tz\n });\n\n const utcParts = utcFormatter.formatToParts(date);\n const tzParts = tzFormatter.formatToParts(date);\n\n const getPart = (parts: Intl.DateTimeFormatPart[], type: string) =>\n parseInt(parts.find(p => p.type === type)?.value ?? \"0\", 10);\n\n const utcDate = new Date(Date.UTC(\n getPart(utcParts, \"year\"),\n getPart(utcParts, \"month\") - 1,\n getPart(utcParts, \"day\"),\n getPart(utcParts, \"hour\"),\n getPart(utcParts, \"minute\")\n ));\n\n const tzDate = new Date(Date.UTC(\n getPart(tzParts, \"year\"),\n getPart(tzParts, \"month\") - 1,\n getPart(tzParts, \"day\"),\n getPart(tzParts, \"hour\"),\n getPart(tzParts, \"minute\")\n ));\n\n return (tzDate.getTime() - utcDate.getTime()) / 60000;\n };\n\n // Handle input value change - convert from display timezone to UTC\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const inputValue = e.target.value;\n setInternalValue(inputValue);\n setIsTyping(true);\n\n if (!inputValue) {\n onChange?.(null);\n return;\n }\n\n try {\n let year: number, month: number, day: number, hours = 0, minutes = 0;\n\n if (mode === \"date\") {\n // Parse date-only input: \"YYYY-MM-DD\"\n [year, month, day] = inputValue.split(\"-\").map(Number);\n } else {\n // Parse datetime-local input: \"YYYY-MM-DDTHH:MM\"\n const [datePart, timePart] = inputValue.split(\"T\");\n [year, month, day] = datePart.split(\"-\").map(Number);\n [hours, minutes] = timePart.split(\":\").map(Number);\n }\n\n let resultDate: Date;\n\n if (!timezone) {\n // No timezone specified: interpret input as local time (backward compatible)\n resultDate = new Date(year, month - 1, day, hours, minutes);\n } else {\n // Timezone specified: interpret input as that timezone and convert to UTC\n // We need to find the UTC equivalent of the entered time in the target timezone\n\n // Create a reference UTC date to calculate the offset for this moment\n const refUtcDate = new Date(Date.UTC(year, month - 1, day, hours, minutes));\n const offsetMinutes = getTimezoneOffsetMinutes(refUtcDate, timezone);\n\n // Convert from target timezone to UTC:\n // If user entered 00:00 in Mexico (UTC-6, offset=-360), we subtract the offset\n // Date.UTC gives us 00:00 UTC, subtracting -360 minutes (= adding 360 min) gives 06:00 UTC\n resultDate = new Date(Date.UTC(year, month - 1, day, hours, minutes) - offsetMinutes * 60000);\n }\n\n if (isNaN(resultDate.getTime())) {\n throw new Error(\"Invalid date\");\n }\n\n onChange?.(resultDate);\n } catch (e) {\n // Don't call onChange with null while typing\n return;\n }\n };\n\n const handleFocus = () => {\n setFocused(true);\n setIsTyping(true);\n setInternalValue(valueAsInputValue(value ?? null, mode));\n };\n\n const handleBlur = () => {\n setFocused(false);\n setIsTyping(false);\n };\n\n return (\n <>\n {/* Inject the styles to hide the calendar icon */}\n <style>{inputStyles}</style>\n <div\n className={cls(\n \"rounded-md relative max-w-full\",\n !invisible && fieldBackgroundMixin,\n disabled ? fieldBackgroundDisabledMixin : fieldBackgroundHoverMixin,\n {\n \"min-h-[28px]\": size === \"smallest\",\n \"min-h-[32px]\": size === \"small\",\n \"min-h-[44px]\": size === \"medium\",\n \"min-h-[64px]\": size === \"large\"\n },\n className\n )}\n style={style}\n onClick={() => {\n if (!disabled) {\n inputRef.current?.focus();\n }\n }}\n >\n {label && (\n <InputLabel\n className={cls(\n \"absolute top-1 pointer-events-none\",\n !error\n ? focused\n ? \"text-primary\"\n : \"text-text-secondary dark:text-text-secondary-dark\"\n : \"text-red-500 dark:text-red-500\",\n disabled ? \"opacity-50\" : \"\"\n )}\n shrink={true}\n // shrink={hasValue || focused}\n >\n {label}\n </InputLabel>\n )}\n\n <input\n ref={inputRef}\n type={mode === \"date_time\" ? \"datetime-local\" : \"date\"}\n value={isTyping ? internalValue : valueAsInputValue(value ?? null, mode)}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n disabled={disabled}\n className={cls(\n \"w-full outline-hidden bg-transparent leading-normal text-base px-3\",\n clearable ? \"pr-14\" : \"pr-12\",\n \"rounded-md\",\n {\n \"min-h-[28px]\": size === \"smallest\",\n \"min-h-[32px]\": size === \"small\",\n \"min-h-[44px]\": size === \"medium\",\n \"min-h-[64px]\": size === \"large\"\n },\n label ? \"pt-8 pb-2\" : \"py-2\",\n inputClassName,\n disabled &&\n \"border border-transparent outline-hidden opacity-50 dark:opacity-50 text-surface-accent-600 dark:text-surface-accent-500\"\n )}\n />\n <IconButton\n onClick={(e) => {\n e.stopPropagation();\n inputRef.current?.showPicker();\n }}\n className=\"absolute right-3 top-1/2 transform -translate-y-1/2 text-surface-accent-500!\"\n >\n <CalendarIcon/>\n </IconButton>\n {clearable && value && (\n <IconButton\n onClick={handleClear}\n className=\"absolute right-14 top-1/2 transform -translate-y-1/2 text-surface-accent-400 \"\n >\n <XIcon/>\n </IconButton>\n )}\n </div>\n {invalidValue && (\n <div className=\"flex items-center m-2\">\n <AlertCircleIcon size={iconSize.small} color={\"error\"}/>\n <div className=\"pl-2\">\n <Typography variant={\"body2\"}>\n Invalid date value for this field\n </Typography>\n <Typography variant={\"body2\"}>\n {`The provided value is: ${JSON.stringify(value)}`}\n </Typography>\n </div>\n </div>\n )}\n </>\n );\n};\n\nconst inputStyles = `\n /* Hide the default calendar icon in Chrome, Safari, Edge, Opera */\n input[type=\"date\"]::-webkit-calendar-picker-indicator,\n input[type=\"datetime-local\"]::-webkit-calendar-picker-indicator {\n display: none;\n -webkit-appearance: none;\n }\n /* Hide default calendar icon in Firefox */\n input[type=\"date\"],\n input[type=\"datetime-local\"] {\n -moz-appearance:textfield;\n }\n `;\n","\"use client\";\nimport React, { useEffect, useState } from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { paperMixin } from \"../styles\";\nimport { cls } from \"../util\";\nimport { usePortalContainer } from \"../hooks/PortalContainerContext\";\n\nexport type DialogProps = {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n children: React.ReactNode;\n className?: string;\n containerClassName?: string;\n fullWidth?: boolean;\n fullHeight?: boolean;\n fullScreen?: boolean;\n scrollable?: boolean;\n maxWidth?: keyof typeof widthClasses;\n modal?: boolean;\n onOpenAutoFocus?: (e: Event) => void;\n onEscapeKeyDown?: (e: KeyboardEvent) => void;\n onPointerDownOutside?: (e: Event) => void;\n onInteractOutside?: (e: Event) => void;\n /**\n * If `true`, the dialog will not focus the first focusable element when opened.\n */\n disableInitialFocus?: boolean;\n portalContainer?: HTMLElement | null;\n \"aria-describedby\"?: string;\n};\n\nconst widthClasses = {\n xs: \"max-w-xs w-xs\",\n sm: \"max-w-sm w-sm\",\n md: \"max-w-md w-md\",\n lg: \"max-w-lg w-lg\",\n xl: \"max-w-xl w-xl\",\n \"2xl\": \"max-w-2xl w-2xl\",\n \"3xl\": \"max-w-3xl w-3xl\",\n \"4xl\": \"max-w-4xl w-4xl\",\n \"5xl\": \"max-w-5xl w-5xl\",\n \"6xl\": \"max-w-6xl w-6xl\",\n \"7xl\": \"max-w-7xl w-7xl\",\n full: \"max-w-full w-full\"\n};\n\nexport const Dialog = ({\n open,\n onOpenChange,\n children,\n className,\n containerClassName,\n fullWidth = true,\n fullHeight,\n fullScreen,\n scrollable = true,\n maxWidth = \"lg\",\n modal = true,\n onOpenAutoFocus,\n onEscapeKeyDown,\n onPointerDownOutside,\n onInteractOutside,\n disableInitialFocus = true,\n portalContainer,\n \"aria-describedby\": ariaDescribedby\n }: DialogProps) => {\n const [displayed, setDisplayed] = useState(false);\n\n // Get the portal container from context\n const contextContainer = usePortalContainer();\n\n // Prioritize manual prop, fallback to context container\n const finalContainer = (portalContainer ?? contextContainer ?? undefined) as HTMLElement | undefined;\n\n useEffect(() => {\n if (!open) {\n const timeout = setTimeout(() => {\n setDisplayed(false);\n }, 100);\n return () => clearTimeout(timeout);\n } else {\n setDisplayed(true);\n return () => {\n };\n }\n }, [open]);\n\n return (\n <DialogPrimitive.Root open={displayed || open}\n modal={modal}\n onOpenChange={onOpenChange}>\n <DialogPrimitive.Portal container={finalContainer}>\n\n <div className={cls(\"fixed inset-0 z-50\", containerClassName)}>\n\n <DialogPrimitive.Overlay\n className={cls(\"fixed inset-0 transition-opacity ease-in-out duration-200 bg-black/50 dark:bg-black/60 backdrop-blur-sm\",\n displayed && open ? \"opacity-100\" : \"opacity-0\",\n \"z-50 fixed top-0 left-0 w-full h-full flex justify-center items-center\"\n )}\n style={{\n pointerEvents: displayed ? \"auto\" : \"none\"\n }}\n />\n\n <DialogPrimitive.Content\n onEscapeKeyDown={onEscapeKeyDown}\n onOpenAutoFocus={(e) => {\n if (disableInitialFocus) {\n e.preventDefault();\n }\n onOpenAutoFocus?.(e);\n }}\n onPointerDownOutside={onPointerDownOutside}\n onInteractOutside={onInteractOutside}\n aria-describedby={ariaDescribedby}\n className={cls(\"relative h-full outline-none flex justify-center items-center z-60 opacity-100 transition-all duration-200 ease-in-out\")}\n >\n <div\n className={cls(paperMixin,\n \"rounded-2xl\",\n \"z-60\",\n \"relative\",\n \"overflow-hidden\",\n \"outline-none focus:outline-none\",\n fullWidth && !fullScreen ? \"w-11/12\" : undefined,\n fullHeight && !fullScreen ? \"h-full\" : undefined,\n \"text-surface-accent-900 dark:text-white\",\n \"justify-center items-center\",\n fullScreen ? \"h-screen w-screen\" : \"max-h-[90vh] shadow-xl\",\n \"ease-in-out duration-200\",\n scrollable && \"overflow-y-auto\",\n displayed && open ? \"opacity-100 scale-100\" : \"opacity-0 scale-[0.97]\",\n maxWidth && !fullScreen ? widthClasses[maxWidth] : undefined,\n className\n )}>\n {children}\n </div>\n\n </DialogPrimitive.Content>\n </div>\n\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n );\n};\n","import React from \"react\";\nimport { defaultBorderMixin } from \"../styles\";\nimport { cls } from \"../util\";\n\nexport function DialogActions({\n children,\n position = \"sticky\",\n translucent = true,\n className\n }: {\n children: React.ReactNode,\n position?: \"sticky\" | \"absolute\",\n translucent?: boolean,\n className?: string\n}) {\n\n return <div\n className={cls(\n defaultBorderMixin,\n \"pt-2 pb-4 px-4 border-t flex flex-row items-center justify-end bottom-0 right-0 left-0 text-right z-2 gap-2\",\n position,\n \"bg-white bg-opacity-60 bg-white/60 dark:bg-surface-800 dark:bg-opacity-60 dark:bg-surface-800/60\",\n translucent ? \"backdrop-blur-sm\" : \"\",\n className)}>\n {children}\n </div>;\n}\n","import React from \"react\";\nimport { cls } from \"../util\";\n\nexport function DialogContent({\n children,\n className,\n fullHeight,\n includeMargin = true\n }: {\n children: React.ReactNode,\n includeMargin?: boolean,\n fullHeight?: boolean,\n className?: string\n}) {\n\n if (fullHeight)\n return <div className={\"flex-grow flex flex-col h-full relative\"}>\n {children}\n </div>;\n\n return <div\n className={cls(\"flex-grow\",\n { \"my-8 mx-8\": includeMargin },\n className)}>\n {children}\n </div>;\n}\n","\"use client\";\n\nimport React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport * as VisuallyHidden from \"@radix-ui/react-visually-hidden\";\nimport { Typography, TypographyProps, TypographyVariant } from \"./Typography\";\nimport { cls } from \"../util\";\n\nexport type DialogContentProps = TypographyProps & {\n children: React.ReactNode,\n hidden?: boolean,\n className?: string,\n includeMargin?: boolean,\n variant?: TypographyVariant\n};\n\nexport function DialogTitle({\n children,\n hidden,\n className,\n variant = \"subtitle2\",\n gutterBottom = true,\n includeMargin = true,\n ...props\n }: DialogContentProps) {\n\n const title = <DialogPrimitive.Title asChild>\n <Typography variant={variant}\n className={cls({ \"mt-8 mx-8\": includeMargin }, className)}\n gutterBottom={gutterBottom}\n {...props}>\n {children}\n </Typography>\n </DialogPrimitive.Title>;\n\n if (hidden) {\n return <VisuallyHidden.Root>{title}</VisuallyHidden.Root>\n }\n\n return title;\n}\n","\n\"use client\";\nimport React, { PropsWithChildren, useEffect, useState } from \"react\";\n\nimport * as Collapsible from \"@radix-ui/react-collapsible\";\nimport { defaultBorderMixin, fieldBackgroundMixin } from \"../styles\";\nimport { ChevronDownIcon } from \"lucide-react\";\nimport { cls } from \"../util\";\nimport { useInjectStyles } from \"../hooks\";\n\nexport function ExpandablePanel({\n title,\n children,\n invisible = false,\n expanded,\n onExpandedChange,\n initiallyExpanded = true,\n titleClassName,\n asField,\n className,\n innerClassName\n }: PropsWithChildren<{\n title: React.ReactNode,\n invisible?: boolean,\n initiallyExpanded?: boolean;\n expanded?: boolean;\n onExpandedChange?: (expanded: boolean) => void,\n titleClassName?: string,\n asField?: boolean,\n className?: string,\n innerClassName?: string\n}>) {\n\n useInjectStyles(\"ExpandablePanel\", `\n.CollapsibleContent {\n overflow: hidden;\n}\n.CollapsibleContent[data-state='open'] {\n animation: slideDown 220ms ease-out\n}\n.CollapsibleContent[data-state='closed'] {\n animation: slideUp 220ms ease-out;\n}\n\n@keyframes slideDown {\n from {\n height: 0;\n }\n to {\n height: var(--radix-collapsible-content-height);\n }\n}\n\n@keyframes slideUp {\n from {\n height: var(--radix-collapsible-content-height);\n }\n to {\n height: 0;\n }\n}`);\n\n const [open, setOpen] = useState(expanded !== undefined ? expanded : initiallyExpanded);\n const [allowOverflow, setAllowOverflow] = useState(open);\n\n useEffect(() => {\n if (open) {\n setTimeout(() => {\n setAllowOverflow(true);\n }, 220);\n } else {\n setAllowOverflow(false);\n }\n }, [open]);\n\n useEffect(() => {\n if (expanded !== undefined)\n setOpen(expanded);\n }, [expanded]);\n\n return (<>\n <Collapsible.Root\n className={cls(\n !invisible && defaultBorderMixin + \" border\",\n \"rounded-md\",\n \"w-full\",\n className\n )}\n open={open}\n onOpenChange={(updatedOpen: boolean) => {\n onExpandedChange?.(updatedOpen);\n setOpen(updatedOpen);\n }}>\n\n <Collapsible.Trigger asChild>\n <div\n className={cls(\n \"rounded-t flex items-center justify-between w-full min-h-[52px]\",\n \"hover:bg-surface-accent-200 hover:bg-opacity-40 hover:bg-surface-accent-200/40 dark:hover:bg-surface-800 dark:hover:bg-opacity-40 dark:hover:bg-surface-800/40 active:bg-surface-accent-300/50 dark:active:bg-surface-700/50\",\n invisible ? \"border-b px-2\" : \"p-4\",\n open ? \"py-6\" : \"py-4\",\n \"transition-all duration-200\",\n invisible && defaultBorderMixin,\n asField && fieldBackgroundMixin,\n titleClassName,\n \"cursor-pointer\"\n )}\n role=\"button\"\n tabIndex={0}\n aria-expanded={open}\n >\n {title}\n <ChevronDownIcon className={cls(\"transition\", open ? \"rotate-180\" : \"\")}/>\n </div>\n </Collapsible.Trigger>\n\n <Collapsible.Content\n className={cls(\"CollapsibleContent\")}\n style={{\n overflow: allowOverflow ? \"visible\" : \"hidden\"\n }}\n >\n <div className={innerClassName}>\n {children}\n </div>\n </Collapsible.Content>\n </Collapsible.Root>\n </>\n )\n}\n","\"use client\";\nimport React from \"react\";\nimport { useDropzone } from \"react-dropzone\";\nimport { fieldBackgroundHoverMixin, fieldBackgroundMixin } from \"../styles\";\nimport { cls } from \"../util\";\nimport { Typography } from \"./Typography\";\n\nexport interface FileUploadError {\n message: string;\n code: string;\n}\n\nexport type OnFileUploadRejected = (fileRejections: {\n file: File;\n errors: readonly FileUploadError[];\n}[], event: object) => void;\n\nexport type OnFilesUploadAdded = (files: File[]) => void;\n\nexport type FileUploadProps = {\n // e.g. accept={{ \"*/image\": [] }}\n accept?: Record<string, string[]>,\n onFilesAdded: OnFilesUploadAdded,\n onFilesRejected?: OnFileUploadRejected,\n maxSize?: number,\n disabled?: boolean;\n maxFiles?: number;\n title?: React.ReactNode;\n uploadDescription?: React.ReactNode;\n preventDropOnDocument?: boolean;\n size?: \"small\" | \"medium\" | \"large\";\n};\n\nexport function FileUpload({\n accept,\n onFilesAdded,\n onFilesRejected,\n maxSize,\n disabled,\n maxFiles,\n title,\n uploadDescription,\n children,\n preventDropOnDocument = true,\n size\n}: React.PropsWithChildren<FileUploadProps>) {\n\n const {\n getRootProps,\n getInputProps,\n isDragActive,\n isDragAccept,\n isDragReject\n } = useDropzone({\n accept,\n noDragEventsBubbling: true,\n maxSize,\n onDrop: onFilesAdded,\n onDropRejected: onFilesRejected,\n disabled,\n maxFiles,\n preventDropOnDocument\n }\n );\n return <div\n {...getRootProps()}\n role=\"button\"\n aria-label={typeof title === \"string\" ? title : (typeof uploadDescription === \"string\" ? uploadDescription : \"Upload file\")}\n aria-disabled={disabled || undefined}\n className={cls(\n fieldBackgroundMixin,\n \"flex gap-2\",\n \"p-4 box-border relative items-center border-2 border-solid border-transparent outline-hidden rounded-md duration-200 ease-[cubic-bezier(0.4,0,0.2,1)] focus:border-primary-solid\",\n {\n \"h-44\": size === \"large\",\n \"h-28\": size === \"medium\",\n \"h-16\": size === \"small\",\n \"cursor-pointer\": !disabled,\n [fieldBackgroundHoverMixin]: !isDragActive,\n \"transition-colors duration-200 ease-[cubic-bezier(0,0,0.2,1)] border-red-500\": isDragReject,\n \"transition-colors duration-200 ease-[cubic-bezier(0,0,0.2,1)] border-green-500\": isDragAccept\n })}>\n\n <Typography variant={\"caption\"} color={\"secondary\"} className={\"absolute top-2 left-3.5 cursor-inherit\"}>\n {title}\n </Typography>\n\n <input\n {...getInputProps()}/>\n\n {children}\n\n <div\n className=\"grow h-28 box-border flex flex-col items-center justify-center text-center\">\n <Typography align={\"center\"}\n variant={\"label\"}\n className={\"flex flex-row gap-2 justify-center\"}>\n {uploadDescription}\n </Typography>\n </div>\n\n </div>\n}\n","import React from \"react\";\nimport { cls } from \"../util\";\n\nexport interface FilterChipProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"children\"> {\n /**\n * The text label displayed on the chip.\n */\n children: React.ReactNode;\n /**\n * Whether the chip is currently in an active/selected state.\n */\n active?: boolean;\n /**\n * Optional icon rendered before the label.\n */\n icon?: React.ReactNode;\n /**\n * Size variant.\n * @default \"medium\"\n */\n size?: \"small\" | \"medium\";\n /**\n * Whether the chip is disabled.\n */\n disabled?: boolean;\n}\n\nconst sizeClasses = {\n small: \"px-2 py-0.5 text-xs\",\n medium: \"px-2.5 py-1 text-xs\"\n};\n\n/**\n * A toggle chip used for filter presets and similar multi-select controls.\n *\n * Uses an inset box-shadow for the active ring instead of `border` so the\n * chip size stays stable across states and the ring cannot be clipped by\n * parent `overflow-hidden` containers.\n *\n * @group Interactive components\n */\nexport const FilterChip = React.forwardRef<HTMLButtonElement, FilterChipProps>(function FilterChip({\n children,\n active = false,\n onClick,\n icon,\n size = \"medium\",\n className,\n disabled = false,\n ...rest\n}: FilterChipProps, ref) {\n return (\n <button\n ref={ref}\n type=\"button\"\n onClick={onClick}\n disabled={disabled}\n className={cls(\n \"inline-flex items-center gap-1 rounded-full\",\n \"font-medium whitespace-nowrap select-none shrink-0\",\n \"transition-all duration-150\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/50\",\n sizeClasses[size],\n active\n ? \"bg-primary/12 text-primary dark:bg-primary/20 dark:text-primary shadow-[inset_0_0_0_1.5px_var(--color-primary)]\"\n : cls(\n \"bg-surface-accent-100 text-text-secondary dark:bg-surface-accent-800 dark:text-text-secondary-dark\",\n !disabled && \"cursor-pointer hover:bg-surface-accent-200 dark:hover:bg-surface-accent-700\"\n ),\n disabled && \"opacity-50 cursor-not-allowed\",\n className\n )}\n {...rest}\n >\n {icon}\n {children}\n </button>\n );\n});\n","import React from \"react\";\nimport { cls } from \"../util\";\n\nconst colorClasses = {\n info: \"bg-sky-200 dark:bg-teal-900\",\n warn: \"bg-orange-200 dark:bg-yellow-950\"\n}\n\nexport function InfoLabel({\n children,\n mode = \"info\"\n }: {\n children: React.ReactNode,\n mode?: \"info\" | \"warn\"\n}) {\n\n return (\n <div\n className={cls(\"my-3 py-2 px-4 rounded-xs\", colorClasses[mode])}>\n {children}\n </div>\n )\n}\n","\"use client\";\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { cls } from \"../util\";\nimport { defaultBorderMixin } from \"../styles\";\n\ntype LabelProps = React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> & {\n border?: boolean,\n onClick?: React.MouseEventHandler<HTMLLabelElement>\n};\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n LabelProps\n>(({\n className,\n border,\n onClick,\n ...props\n }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n onClick={onClick}\n className={cls(\"text-sm font-medium peer-disabled:cursor-not-allowed\",\n border && \"border border-surface-300 dark:border-surface-700 rounded-md px-3 py-1.5\",\n onClick && \"hover:cursor-pointer hover:bg-surface-200 dark:hover:bg-surface-800\",\n defaultBorderMixin, className)}\n {...props}\n />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n","import React from \"react\";\nimport { Button, ButtonProps } from \"./Button\";\nimport { CircularProgress } from \"./CircularProgress\";\n\nexport type LoadingButtonProps<P extends React.ElementType> = ButtonProps<P> & {\n startIcon?: React.ReactNode;\n loading?: boolean;\n}\n\nexport function LoadingButton<P extends React.ElementType = \"button\">({\n children,\n loading,\n disabled,\n onClick,\n startIcon,\n ...props\n }: LoadingButtonProps<P>) {\n return (\n <Button\n disabled={loading || disabled}\n onClick={onClick}\n component={props.component as React.ElementType}\n {...props}\n >\n {loading && (\n <CircularProgress size={\"smallest\"}/>\n )}\n {!loading && startIcon}\n {children}\n </Button>\n );\n};\n","\"use client\";\nimport React, { useMemo } from \"react\";\nimport { deepEqual as equal } from \"fast-equals\"\n\nimport MarkdownIt from \"markdown-it\";\nimport { cls } from \"../util\";\n\nexport interface MarkdownProps {\n source: string,\n size?: \"small\" | \"medium\" | \"large\" | \"xl\" | \"2xl\";\n className?: string\n}\n\nconst proseClasses = {\n small: \"prose prose-sm typography-body2\",\n medium: \"prose typography-body1\",\n large: \"prose prose-lg\",\n xl: \"prose prose-xl\",\n \"2xl\": \"prose prose-2xl\"\n};\n\n/**\n * Tailwind typography-plugin weight overrides.\n * The plugin defaults to very heavy weights (h1: 800, h2: 700, h3/h4: 600,\n * strong: 600, code: 600) which clash with the Rebase design-system that uses\n * font-light (300) / font-normal (400) for headings.\n * We reset them here so rendered markdown matches the rest of the UI.\n */\nconst proseWeightOverrides = [\n \"prose-headings:font-normal\",\n \"prose-strong:font-semibold\",\n \"prose-code:font-normal\",\n \"prose-blockquote:font-normal\",\n \"prose-a:font-normal\"\n].join(\" \");\n\nconst md = new MarkdownIt({ html: false });\n/**\n * @group Preview components\n */\nexport const Markdown = React.memo<MarkdownProps>(function Markdown({\n source,\n className,\n size = \"medium\"\n }: MarkdownProps) {\n const html = useMemo(() => {\n return md.render(typeof source === \"string\" ? source : \"\");\n }, [source]);\n\n return <div\n className={cls(proseClasses[size], \"dark:prose-invert prose-headings:font-title\", proseWeightOverrides, className)}\n dangerouslySetInnerHTML={{ __html: html }}\n />;\n }\n , equal) as React.FunctionComponent<MarkdownProps>;\n","\"use client\";\nimport React from \"react\";\nimport * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport { focusedDisabled, paperMixin } from \"../styles\";\nimport { cls } from \"../util\";\nimport { usePortalContainer } from \"../hooks/PortalContainerContext\";\n\nexport type MenuProps = {\n children: React.ReactNode;\n trigger: React.ReactNode;\n\n open?: boolean;\n defaultOpen?: boolean;\n onOpenChange?(open: boolean): void;\n\n portalContainer?: HTMLElement | null;\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n align?: \"start\" | \"center\" | \"end\";\n\n sideOffset?: number;\n className?: string;\n}\n\nconst Menu = React.forwardRef<\n React.ElementRef<typeof DropdownMenu.Trigger>,\n MenuProps\n>(({\n children,\n trigger,\n open,\n defaultOpen,\n side,\n align,\n onOpenChange,\n portalContainer,\n sideOffset = 4,\n className\n }, ref) => {\n // Get the portal container from context\n const contextContainer = usePortalContainer();\n\n // Prioritize manual prop, fallback to context container\n const finalContainer = (portalContainer ?? contextContainer ?? undefined) as HTMLElement | undefined;\n\n return (\n <DropdownMenu.Root\n open={open}\n defaultOpen={defaultOpen}\n onOpenChange={onOpenChange}>\n <DropdownMenu.Trigger\n ref={ref}\n asChild>\n {trigger}\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal container={finalContainer}>\n <DropdownMenu.Content\n side={side}\n sideOffset={sideOffset}\n align={align}\n className={cls(paperMixin, focusedDisabled, \"py-2 z-30\", className)}>\n {children}\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n})\nMenu.displayName = \"Menu\"\n\nexport { Menu }\n\nexport type MenuItemProps = {\n children: React.ReactNode;\n dense?: boolean;\n disabled?: boolean;\n onClick?: (event: React.MouseEvent) => void;\n className?: string;\n};\n\nexport const MenuItem = React.memo(({\n children,\n dense = false, // Default value is false if not provided\n disabled = false,\n onClick,\n className\n }: MenuItemProps) => {\n // Dynamically adjusting the class based on the \"dense\" prop\n const classNames = cls(\n onClick && !disabled && \"cursor-pointer\",\n disabled && \"opacity-50 cursor-not-allowed\",\n \"rounded-md text-sm font-medium text-surface-accent-700 dark:text-surface-accent-300 flex items-center gap-4\",\n !disabled && \"hover:bg-surface-accent-100 dark:hover:bg-surface-accent-900\",\n dense ? \"px-4 py-1.5\" : \"px-4 py-2\",\n className\n );\n\n return (\n <DropdownMenu.Item\n className={classNames}\n disabled={disabled}\n onClick={disabled ? undefined : onClick}>\n {children}\n </DropdownMenu.Item>\n );\n});\n\nMenuItem.displayName = \"MenuItem\";\n","\nimport * as React from \"react\";\n\nimport * as MenubarPrimitive from \"@radix-ui/react-menubar\";\nimport { cls } from \"../util\";\nimport { CheckIcon, ChevronRightIcon } from \"lucide-react\";\nimport { iconSize } from \"../icons/Icon\";\nimport { usePortalContainer } from \"../hooks/PortalContainerContext\";\n\nexport function Menubar({\n children,\n onSelect,\n className\n }: {\n children: React.ReactNode,\n onSelect?: (event: React.SyntheticEvent) => void,\n className?: string\n}) {\n return (\n <MenubarPrimitive.Root\n onSelect={onSelect}\n className={cls(\"z-10 flex bg-white dark:bg-surface-900 p-[3px] rounded-sm shadow-sm\", className)}>\n {children}\n </MenubarPrimitive.Root>\n )\n}\n\nexport function MenubarMenu({\n children\n }: { children: React.ReactNode }) {\n return (\n <MenubarPrimitive.Menu>\n {children}\n </MenubarPrimitive.Menu>\n )\n}\n\nexport function MenubarTrigger({\n children,\n onSelect,\n className\n }: {\n children: React.ReactNode,\n onSelect?: (event: React.SyntheticEvent) => void,\n className?: string\n}) {\n return (\n <MenubarPrimitive.Trigger\n onSelect={onSelect}\n className={cls(\"py-2 px-3 outline-none select-none font-medium leading-none rounded text-text-primary dark:text-text-primary-dark text-[13px] flex items-center justify-between gap-[2px] data-[highlighted]:bg-surface-accent-100 data-[highlighted]:dark:bg-surface-900 data-[state=open]:bg-surface-accent-100 data-[state=open]:dark:bg-surface-900 hover:bg-surface-accent-200 hover:bg-opacity-75 hover:bg-surface-accent-200/75 dark:hover:bg-surface-accent-800\",\n className)}>\n {children}\n </MenubarPrimitive.Trigger>\n )\n}\n\nexport function MenubarPortal({\n children,\n portalContainer\n }: {\n children: React.ReactNode;\n portalContainer?: HTMLElement | null;\n}) {\n // Get the portal container from context\n const contextContainer = usePortalContainer();\n\n // Prioritize manual prop, fallback to context container\n const finalContainer = (portalContainer ?? contextContainer ?? undefined) as HTMLElement | undefined;\n\n return (\n <MenubarPrimitive.Portal container={finalContainer}>\n {children}\n </MenubarPrimitive.Portal>\n )\n}\n\nexport function MenubarContent({\n children,\n className,\n align,\n sideOffset,\n alignOffset,\n onSelect,\n ...rest\n }: {\n children: React.ReactNode,\n className?: string,\n onSelect?: (event: React.SyntheticEvent) => void,\n align?: \"start\" | \"center\" | \"end\",\n sideOffset?: number,\n alignOffset?: number\n}) {\n return (\n <MenubarPrimitive.Content\n onSelect={onSelect}\n className={cls(\"min-w-[220px] bg-white dark:bg-surface-900 rounded-md p-[6px] shadow-[0px_10px_38px_-10px_rgba(22,_23,_24,_0.35),_0px_10px_20px_-15px_rgba(22,_23,_24,_0.2)] [animation-duration:_400ms] [animation-timing-function:_cubic-bezier(0.16,_1,_0.3,_1)] will-change-[transform,opacity]\", className)}\n align={align ?? \"start\"}\n sideOffset={sideOffset ?? 5}\n alignOffset={alignOffset ?? -3}\n {...rest}\n >\n {children}\n </MenubarPrimitive.Content>\n )\n}\n\nexport function MenubarItem({\n children,\n leftPadding,\n className,\n disabled,\n onSelect,\n ...rest\n }: {\n children: React.ReactNode,\n onSelect?: (event: Event) => void;\n leftPadding?: boolean,\n className?: string,\n disabled?: boolean\n}) {\n return (\n <MenubarPrimitive.Item\n onSelect={onSelect}\n className={cls(\"group text-[13px] leading-none rounded flex items-center h-[32px] px-[10px] py-[2px] relative select-none outline-none data-[state=open]:bg-surface-accent-100 data-[state=open]:dark:bg-surface-900 data-[state=open]:text-text-primary data-[state=open]:dark:text-text-primary-dark data-[highlighted]:bg-surface-accent-100 data-[highlighted]:dark:bg-surface-900 data-[disabled]:text-text-disabled data-[disabled]:dark:text-text-disabled-dark data-[disabled]:pointer-events-none\",\n leftPadding ? \"pl-5\" : \"\",\n disabled ? \"pointer-events-none text-text-secondary dark:text-text-secondary-dark\" : \"text-text-primary dark:text-text-primary-dark\",\n className)}\n disabled={disabled}\n {...rest}\n >\n {children}\n </MenubarPrimitive.Item>\n )\n}\n\nexport function MenubarSeparator({\n children,\n className,\n ...rest\n }: {\n children?: React.ReactNode,\n className?: string,\n}) {\n return (\n <MenubarPrimitive.Separator\n className={cls(\"h-[1px] bg-surface-accent-100 dark:bg-surface-900 m-[5px]\", className)}\n {...rest}\n >\n {children}\n </MenubarPrimitive.Separator>\n )\n}\n\nexport function MenubarSub({\n children,\n ...rest\n }: {\n children?: React.ReactNode,\n}) {\n return (\n <MenubarPrimitive.Sub\n {...rest}\n >\n {children}\n </MenubarPrimitive.Sub>\n )\n}\n\nexport function MenubarSubTrigger({\n children,\n className,\n onSelect,\n ...rest\n }: {\n children?: React.ReactNode,\n onSelect?: (event: React.SyntheticEvent) => void,\n className?: string,\n}) {\n return (\n <MenubarPrimitive.SubTrigger\n onSelect={onSelect}\n className={cls(\"group text-[13px] leading-none text-text-primary dark:text-text-primary-dark rounded flex items-center h-[32px] px-[10px] py-[2px] relative select-none outline-none data-[state=open]:bg-surface-accent-100 data-[state=open]:dark:bg-surface-900 data-[state=open]:text-text-primary data-[state=open]:dark:text-text-primary-dark data-[highlighted]:bg-surface-accent-100 data-[highlighted]:dark:bg-surface-900 data-[disabled]:text-text-disabled data-[disabled]:dark:text-text-disabled-dark data-[disabled]:pointer-events-none\",\n className)}\n {...rest}\n >\n {children}\n </MenubarPrimitive.SubTrigger>\n )\n}\n\nexport function MenubarSubContent({\n children,\n alignOffset,\n className,\n onSelect,\n ...rest\n }: {\n children?: React.ReactNode,\n onSelect?: (event: React.SyntheticEvent) => void,\n alignOffset?: number,\n className?: string,\n}) {\n return (\n <MenubarPrimitive.SubContent\n onSelect={onSelect}\n alignOffset={alignOffset ?? -5}\n className={cls(\"min-w-[220px] bg-white dark:bg-surface-900 rounded-md p-[6px] shadow-[0px_10px_38px_-10px_rgba(22,_23,_24,_0.35),_0px_10px_20px_-15px_rgba(22,_23,_24,_0.2)] [animation-duration:_400ms] [animation-timing-function:_cubic-bezier(0.16,_1,_0.3,_1)] will-change-[transform,opacity]\",\n className)}\n {...rest}\n >\n {children}\n </MenubarPrimitive.SubContent>\n )\n}\n\nexport function MenubarCheckboxItem({\n children,\n checked,\n onCheckedChange,\n className,\n onSelect,\n ...rest\n }: {\n children?: React.ReactNode,\n onSelect?: (event: Event) => void;\n checked?: boolean,\n onCheckedChange?: () => void,\n className?: string,\n}) {\n return (\n <MenubarPrimitive.CheckboxItem\n onSelect={onSelect}\n className={cls(\"text-[13px] leading-none text-text-primary dark:text-text-primary-dark rounded flex items-center h-[32px] px-[10px] py-[2px] relative select-none pl-5 outline-none data-[highlighted]:bg-surface-accent-100 data-[highlighted]:dark:bg-surface-900 data-[disabled]:text-text-disabled data-[disabled]:dark:text-text-disabled-dark data-[disabled]:pointer-events-none\",\n className)}\n checked={checked}\n onCheckedChange={onCheckedChange}\n {...rest}\n >\n {children}\n </MenubarPrimitive.CheckboxItem>\n )\n}\n\nexport function MenubarItemIndicator({\n children,\n className,\n ...rest\n }: {\n children?: React.ReactNode,\n className?: string,\n}) {\n return (\n <MenubarPrimitive.ItemIndicator\n className={cls(\"absolute left-0 w-4 inline-flex items-center justify-center\", className)}\n {...rest}>\n {children ?? <CheckIcon size={iconSize.smallest}/>}\n </MenubarPrimitive.ItemIndicator>\n )\n}\n\nexport function MenubarRadioGroup({\n children,\n className,\n value,\n onValueChange,\n onSelect,\n ...rest\n }: {\n children?: React.ReactNode,\n onSelect?: (event: React.SyntheticEvent) => void,\n value?: string,\n onValueChange?: (value: string) => void,\n className?: string,\n}) {\n return (\n <MenubarPrimitive.RadioGroup\n className={cls(className)}\n value={value}\n onValueChange={onValueChange}\n onSelect={onSelect}\n {...rest}>\n {children ?? <CheckIcon size={iconSize.small}/>}\n </MenubarPrimitive.RadioGroup>\n )\n}\n\nexport function MenubarRadioItem({\n children,\n className,\n value,\n onSelect,\n ...rest\n }: {\n children?: React.ReactNode,\n onSelect?: (event: Event) => void;\n value: string,\n className?: string,\n}) {\n return (\n <MenubarPrimitive.RadioItem\n onSelect={onSelect}\n className={cls(\"text-[13px] leading-none text-text-primary dark:text-text-primary-dark rounded flex items-center h-[32px] px-[10px] py-[2px] relative select-none pl-5 outline-none data-[highlighted]:bg-surface-accent-100 data-[highlighted]:dark:bg-surface-900 data-[disabled]:text-text-disabled data-[disabled]:dark:text-text-disabled-dark data-[disabled]:pointer-events-none\",\n className)}\n value={value}\n {...rest}>\n {children ?? <CheckIcon size={iconSize.small}/>}\n </MenubarPrimitive.RadioItem>\n )\n}\n\nexport function MenubarShortcut({\n children,\n className,\n ...rest\n }: {\n children?: React.ReactNode,\n className?: string,\n}) {\n return (\n <div\n className={cls(\"ml-auto pl-5 group-data-[disabled]:text-text-disabled data-[disabled]:dark:text-text-disabled-dark\",\n className)}\n {...rest}>\n {children}\n </div>\n )\n}\n\nexport function MenubarSubTriggerIndicator() {\n return (\n <div className=\"ml-auto pl-5 \">\n <ChevronRightIcon size={iconSize.small}/>\n </div>\n )\n}\n","import * as SeparatorPrimitive from \"@radix-ui/react-separator\";\nimport { cls } from \"../util\";\n\nexport function Separator({\n orientation,\n decorative,\n className\n }: {\n orientation: \"horizontal\" | \"vertical\",\n decorative?: boolean,\n className?: string\n}) {\n if (orientation === \"horizontal\")\n return (\n <SeparatorPrimitive.Root\n decorative={decorative}\n orientation=\"horizontal\"\n className={cls(\"dark:bg-surface-700 bg-surface-200 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px my-4\", className)}/>\n );\n else\n return (\n <SeparatorPrimitive.Root\n className={cls(\"dark:bg-surface-700 bg-surface-200 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px mx-4\", className)}\n decorative={decorative}\n orientation=\"vertical\"\n />\n );\n}\n","\n\"use client\";\nimport { CheckIcon, ChevronDownIcon, XIcon } from \"lucide-react\";\nimport { iconSize } from \"../icons/Icon\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport * as React from \"react\";\nimport { ChangeEvent, Children, useEffect, useState } from \"react\";\nimport { Command as CommandPrimitive } from \"cmdk\";\nimport { cls } from \"../util\";\n\nimport { Separator } from \"./Separator\";\nimport { Chip } from \"./Chip\";\nimport { SelectInputLabel } from \"./common/SelectInputLabel\";\nimport {\n defaultBorderMixin,\n fieldBackgroundDisabledMixin,\n fieldBackgroundHoverMixin,\n fieldBackgroundInvisibleMixin,\n fieldBackgroundMixin,\n focusedDisabled\n} from \"../styles\";\nimport { useInjectStyles } from \"../hooks\";\nimport { usePortalContainer } from \"../hooks/PortalContainerContext\";\n\nexport type MultiSelectValue = string | number | boolean;\n\n// Make the context properly generic\ninterface MultiSelectContextProps<T extends MultiSelectValue = string> {\n fieldValue?: T[];\n onItemClick: (v: T) => void;\n}\n\n// Create a proper generic context\nexport const MultiSelectContext = React.createContext<MultiSelectContextProps<MultiSelectValue>>(null! as MultiSelectContextProps<MultiSelectValue>);\n\n/**\n * Props for MultiSelect component\n */\ninterface MultiSelectProps<T extends MultiSelectValue = string> {\n modalPopover?: boolean;\n className?: string;\n open?: boolean,\n name?: string,\n id?: string,\n onOpenChange?: (open: boolean) => void,\n value?: T[],\n inputClassName?: string,\n onChange?: React.EventHandler<ChangeEvent<HTMLSelectElement>>,\n onValueChange?: (updatedValue: T[]) => void,\n placeholder?: React.ReactNode,\n size?: \"smallest\" | \"small\" | \"medium\" | \"large\",\n useChips?: boolean,\n label?: React.ReactNode | string,\n disabled?: boolean,\n error?: boolean,\n position?: \"item-aligned\" | \"popper\",\n endAdornment?: React.ReactNode,\n multiple?: boolean,\n includeSelectAll?: boolean,\n includeClear?: boolean,\n inputRef?: React.Ref<HTMLButtonElement>,\n padding?: boolean,\n invisible?: boolean,\n children: React.ReactNode;\n renderValues?: (values: T[]) => React.ReactNode;\n portalContainer?: HTMLElement | null;\n}\n\n// Use generic type for the forwarded ref\nexport const MultiSelect = React.forwardRef<\n HTMLButtonElement,\n MultiSelectProps\n>(\n (\n {\n value,\n size = \"large\",\n label,\n error,\n onValueChange,\n invisible,\n disabled,\n placeholder,\n modalPopover = true,\n includeClear = true,\n includeSelectAll = true,\n useChips = true,\n className,\n inputClassName,\n inputRef,\n children,\n renderValues,\n open,\n onOpenChange,\n portalContainer\n },\n ref\n ) => {\n const [isMounted, setIsMounted] = useState(false);\n const [isPopoverOpen, setIsPopoverOpen] = useState(open ?? false);\n const [selectedValues, setSelectedValues] = useState<string[]>(value ?? []);\n\n // Get the portal container from context\n const contextContainer = usePortalContainer();\n\n // Prioritize manual prop, fallback to context container\n const finalContainer = (portalContainer ?? contextContainer ?? undefined) as HTMLElement | undefined;\n\n useEffect(() => {\n setIsMounted(true);\n }, []);\n\n const onPopoverOpenChange = (open: boolean) => {\n setIsPopoverOpen(open);\n onOpenChange?.(open);\n }\n\n useEffect(() => {\n setIsPopoverOpen(open ?? false);\n }, [open]);\n\n const allValues = React.useMemo(() => children\n ?\n Children.map(children, (child) => {\n if (React.isValidElement<MultiSelectItemProps>(child)) {\n return child.props.value;\n }\n return null;\n })?.filter(Boolean) ?? []\n : [], [children]);\n\n const optionsMap = React.useMemo(() => {\n const map = new Map<string, React.ReactNode>();\n Children.forEach(children, (child) => {\n if (React.isValidElement<MultiSelectItemProps>(child)) {\n map.set(String(child.props.value), child.props.children);\n }\n });\n return map;\n }, [children]);\n\n React.useEffect(() => {\n setSelectedValues(value ?? []);\n }, [value]);\n\n const updateValues = React.useCallback((values: string[]) => {\n setSelectedValues(values);\n onValueChange?.(values);\n }, [onValueChange]);\n\n const onItemClick = React.useCallback((newValue: MultiSelectValue) => {\n let newSelectedValues: string[];\n if (selectedValues.some(v => String(v) === String(newValue))) {\n newSelectedValues = selectedValues.filter(v => String(v) !== String(newValue));\n } else {\n newSelectedValues = [...selectedValues, String(newValue)];\n }\n updateValues(newSelectedValues);\n }, [selectedValues, updateValues]);\n\n const handleInputKeyDown = (\n event: React.KeyboardEvent<HTMLInputElement>\n ) => {\n if (event.key === \"Enter\") {\n onPopoverOpenChange(true);\n } else if (event.key === \"Backspace\" && !event.currentTarget.value) {\n const newSelectedValues = [...selectedValues];\n newSelectedValues.pop();\n updateValues(newSelectedValues);\n }\n };\n\n const toggleOption = (value: string) => {\n const newSelectedValues = selectedValues.some(v => String(v) === String(value))\n ? selectedValues.filter(v => String(v) !== String(value))\n : [...selectedValues, value];\n updateValues(newSelectedValues);\n };\n\n const handleClear = () => {\n updateValues([]);\n };\n\n const handleTogglePopover = () => {\n onPopoverOpenChange(!isPopoverOpen);\n };\n\n const toggleAll = () => {\n if (selectedValues.length === allValues.length) {\n handleClear();\n } else {\n updateValues(allValues);\n }\n onPopoverOpenChange(false);\n };\n\n useInjectStyles(\"MultiSelect\", `\n[cmdk-group] {\n max-height: 45vh;\n overflow-y: auto;\n // width: 400px;\n} `)\n\n const contextValue = React.useMemo(() => ({\n fieldValue: selectedValues,\n onItemClick\n }), [selectedValues, onItemClick]);\n\n return (\n <MultiSelectContext.Provider value={contextValue}>\n\n {typeof label === \"string\" ? <SelectInputLabel error={error}>{label}</SelectInputLabel> : label}\n\n <PopoverPrimitive.Root\n open={isMounted && isPopoverOpen}\n onOpenChange={onPopoverOpenChange}\n modal={modalPopover}\n >\n <PopoverPrimitive.Trigger asChild>\n <button\n ref={inputRef ?? ref}\n onClick={handleTogglePopover}\n className={cls(\n {\n \"min-h-[28px]\": size === \"smallest\",\n \"min-h-[32px]\": size === \"small\",\n \"min-h-[44px]\": size === \"medium\",\n \"min-h-[64px]\": size === \"large\"\n },\n {\n \"py-1\": size === \"small\" || size === \"smallest\",\n \"py-2\": size === \"medium\" || size === \"large\"\n },\n {\n \"px-2\": size === \"small\" || size === \"smallest\",\n \"px-4\": size === \"medium\" || size === \"large\"\n },\n \"select-none rounded-md text-sm\",\n \"focus:ring-0 focus-visible:ring-0 outline-none focus:outline-none focus-visible:outline-none\",\n invisible ? fieldBackgroundInvisibleMixin : fieldBackgroundMixin,\n disabled ? fieldBackgroundDisabledMixin : fieldBackgroundHoverMixin,\n \"relative flex items-center\",\n className,\n inputClassName\n )}\n >\n {selectedValues.length > 0 ? (\n <div className=\"flex justify-between items-center w-full\">\n <div className=\"flex flex-wrap items-center gap-1.5 text-start\">\n {renderValues && renderValues(selectedValues)}\n {!renderValues && selectedValues.map((value) => {\n\n const optionChildren = optionsMap.get(String(value));\n if (!useChips) {\n return optionChildren;\n }\n return (\n <Chip\n size={\"medium\"}\n key={String(value)}\n className={cls(\"flex flex-row items-center p-1\")}\n >\n {optionChildren}\n <XIcon\n size={iconSize.smallest}\n onClick={(event) => {\n event.stopPropagation();\n toggleOption(value);\n }}\n />\n </Chip>\n );\n })}\n </div>\n <div className=\"flex items-center justify-between\">\n {includeClear && <XIcon\n className={\"ml-4\"}\n size={iconSize.small}\n onClick={(event) => {\n event.stopPropagation();\n handleClear();\n }}\n />}\n <div className={cls(\"px-2 h-full flex items-center\")}>\n <ChevronDownIcon size={size === \"large\" ? iconSize.medium : iconSize.small}\n className={cls(\"transition\", isPopoverOpen ? \"rotate-180\" : \"\")}/>\n </div>\n </div>\n </div>\n ) : (\n <div className=\"flex items-center justify-between w-full mx-auto\">\n <span className=\"text-sm\">\n {placeholder}\n </span>\n <div className={cls(\"px-2 h-full flex items-center\")}>\n <ChevronDownIcon size={size === \"large\" ? iconSize.medium : iconSize.small}\n className={cls(\"transition\", isPopoverOpen ? \"rotate-180\" : \"\")}/>\n </div>\n </div>\n )}\n </button>\n </PopoverPrimitive.Trigger>\n <PopoverPrimitive.Portal container={finalContainer}>\n <PopoverPrimitive.Content\n className={cls(\"z-50 overflow-hidden border bg-white dark:bg-surface-800 rounded-lg w-[400px]\", defaultBorderMixin)}\n align=\"start\"\n sideOffset={8}\n onEscapeKeyDown={() => onPopoverOpenChange(false)}\n >\n <CommandPrimitive>\n <div className={\"flex flex-row items-center\"}>\n <CommandPrimitive.Input\n className={cls(focusedDisabled, \"bg-transparent outline-none flex-1 h-full w-full m-4 flex-grow text-surface-accent-900 dark:text-white\")}\n placeholder=\"Search...\"\n onKeyDown={handleInputKeyDown}\n />\n {selectedValues.length > 0 && (\n <div\n onClick={handleClear}\n className=\"text-sm justify-center cursor-pointer py-3 px-4 text-text-secondary dark:text-text-secondary-dark\">\n Clear\n </div>\n )}\n </div>\n <Separator orientation={\"horizontal\"} className={\"my-0\"}/>\n <CommandPrimitive.List>\n <CommandPrimitive.Empty className={\"px-4 py-2 text-sm text-text-secondary dark:text-text-secondary-dark\"}>\n No results found.\n </CommandPrimitive.Empty>\n <CommandPrimitive.Group>\n {includeSelectAll && <CommandPrimitive.Item\n key=\"all\"\n onSelect={toggleAll}\n className={\n cls(\n \"flex flex-row items-center gap-1.5\",\n \"cursor-pointer\",\n \"m-1\",\n \"ring-offset-transparent\",\n \"p-1 rounded aria-[selected=true]:outline-none aria-[selected=true]:ring-2 aria-[selected=true]:ring-primary aria-[selected=true]:ring-opacity-75 aria-[selected=true]:ring-primary/75 aria-[selected=true]:ring-offset-2\",\n \"aria-[selected=true]:bg-surface-accent-100 aria-[selected=true]:dark:bg-surface-accent-900\",\n \"cursor-pointer p-2 rounded aria-[selected=true]:bg-surface-accent-100 aria-[selected=true]:dark:bg-surface-accent-900\"\n )\n }\n >\n <InnerCheckBox checked={selectedValues.length === allValues.length}/>\n <span className={\"text-sm text-text-secondary dark:text-text-secondary-dark\"}>(Select All)</span>\n </CommandPrimitive.Item>}\n {children}\n </CommandPrimitive.Group>\n </CommandPrimitive.List>\n </CommandPrimitive>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>\n </MultiSelectContext.Provider>\n );\n }\n);\n\nMultiSelect.displayName = \"MultiSelect\";\n\nexport interface MultiSelectItemProps<T extends MultiSelectValue = string> {\n value: T;\n children?: React.ReactNode,\n className?: string;\n}\n\nexport const MultiSelectItem = React.memo(function MultiSelectItem<T extends MultiSelectValue = string>({\n children,\n value,\n className\n}: MultiSelectItemProps<T>) {\n const context = React.useContext(MultiSelectContext);\n if (!context) throw new Error(\"MultiSelectItem must be used inside a MultiSelect\");\n const {\n fieldValue,\n onItemClick\n } = context;\n\n const isSelected = (fieldValue ?? []).some(v => String(v) === String(value));\n\n return <CommandPrimitive.Item\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onSelect={(_) => {\n onItemClick(value);\n }}\n className={cls(\n \"flex flex-row items-center gap-1.5\",\n isSelected ? \"bg-surface-accent-200 dark:bg-surface-accent-950\" : \"\",\n \"cursor-pointer\",\n \"m-1\",\n \"ring-offset-transparent\",\n \"p-1 rounded aria-[selected=true]:outline-none aria-[selected=true]:ring-2 aria-[selected=true]:ring-primary aria-[selected=true]:ring-opacity-75 aria-[selected=true]:ring-primary/75 aria-[selected=true]:ring-offset-2\",\n \"aria-[selected=true]:bg-surface-accent-100 aria-[selected=true]:dark:bg-surface-accent-900\",\n \"cursor-pointer p-2 rounded aria-[selected=true]:bg-surface-accent-100 aria-[selected=true]:dark:bg-surface-accent-900\",\n \"text-surface-accent-700 dark:text-surface-accent-300\",\n className\n )}\n >\n <InnerCheckBox checked={isSelected}/>\n {children}\n </CommandPrimitive.Item>;\n});\n\nconst InnerCheckBox = React.memo(function InnerCheckBox({ checked }: { checked: boolean }) {\n return <div className={cls(\n \"p-2\",\n \"w-8 h-8\",\n \"inline-flex items-center justify-center text-sm font-medium focus:outline-none transition-colors ease-in-out duration-150\"\n )}>\n <div\n className={cls(\n \"border-2 relative transition-colors ease-in-out duration-150\",\n \"w-4 h-4 rounded flex items-center justify-center\",\n (checked ? \"bg-primary\" : \"bg-white dark:bg-surface-accent-900\"),\n (checked) ? \"text-surface-accent-100 dark:text-surface-accent-900\" : \"\",\n (checked ? \"border-transparent\" : \"border-surface-accent-800 dark:border-surface-accent-200\")\n )}>\n {checked && <CheckIcon size={iconSize.smallest} className={\"absolute\"}/>}\n </div>\n </div>\n});\n","import React from \"react\";\n\nimport { paperMixin } from \"../styles\";\nimport { cls } from \"../util\";\n\nexport function Paper({\n children,\n style,\n className\n }: {\n children: React.ReactNode;\n style?: React.CSSProperties;\n className?: string;\n\n}) {\n return (\n <div\n className={cls(paperMixin, className)}\n style={style}>\n {children}\n </div>\n )\n}\n","\"use client\";\nimport * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { cls } from \"../util\";\n\nexport interface RadioGroupProps {\n id?: string;\n children: React.ReactNode;\n name?: string\n required?: boolean;\n disabled?: boolean;\n /**\n * Whether keyboard navigation should loop around\n * @defaultValue false\n */\n loop?: boolean;\n defaultValue?: string;\n value?: string;\n\n onValueChange?(value: string): void;\n\n className?: string;\n}\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n RadioGroupProps\n>(({\n className,\n ...props\n }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cls(\"grid gap-2\", className)}\n {...props}\n ref={ref}\n />\n )\n})\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\n\nexport interface RadioGroupItemProps {\n id?: string;\n value: string;\n checked?: boolean;\n required?: boolean;\n className?: string;\n disabled?: boolean;\n}\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n RadioGroupItemProps\n>(({\n className,\n ...props\n }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cls(\n \"aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <div className=\"h-2.5 w-2.5 fill-current text-current bg-primary rounded-lg\"/>\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n})\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\n\nexport { RadioGroup, RadioGroupItem }\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { cls } from \"../util\";\nimport { defaultBorderMixin } from \"../styles\";\n\nexport type ResizablePanelsProps = {\n firstPanel: React.ReactNode;\n secondPanel: React.ReactNode;\n /** Whether the first panel is visible (e.g. Sidebar) */\n showFirstPanel?: boolean;\n /** Whether the second panel is visible (e.g. Results) */\n showSecondPanel?: boolean;\n /** 0-100 representing the width/height of the first panel */\n panelSizePercent: number;\n onPanelSizeChange: (sizePercent: number) => void;\n minPanelSizePx?: number;\n orientation?: \"horizontal\" | \"vertical\";\n animateLayout?: boolean;\n className?: string;\n stacked?: boolean;\n};\n\nexport function ResizablePanels({\n firstPanel,\n secondPanel,\n showFirstPanel = true,\n showSecondPanel = true,\n panelSizePercent,\n onPanelSizeChange,\n minPanelSizePx = 200,\n orientation = \"horizontal\",\n animateLayout = true,\n className,\n stacked = false\n}: ResizablePanelsProps) {\n\n const containerRef = useRef<HTMLDivElement>(null);\n const isResizingRef = useRef(false);\n\n // For local layout tracking without triggering React rerenders during drag\n const firstPanelRef = useRef<HTMLDivElement>(null);\n const startPosRef = useRef(0);\n const startSizeRef = useRef(0);\n\n const [isResizing, setIsResizing] = useState(false);\n const isHorizontal = orientation === \"horizontal\";\n\n const handleResizeStart = useCallback((e: React.MouseEvent) => {\n if (!showFirstPanel || !showSecondPanel) return;\n\n e.preventDefault();\n isResizingRef.current = true;\n setIsResizing(true);\n\n startPosRef.current = isHorizontal ? e.clientX : e.clientY;\n\n if (firstPanelRef.current) {\n const rect = firstPanelRef.current.getBoundingClientRect();\n startSizeRef.current = isHorizontal ? rect.width : rect.height;\n }\n\n document.body.style.cursor = isHorizontal ? \"col-resize\" : \"row-resize\";\n document.body.style.userSelect = \"none\";\n }, [isHorizontal, showFirstPanel, showSecondPanel]);\n\n useEffect(() => {\n const handleMouseMove = (e: MouseEvent) => {\n if (!isResizingRef.current || !containerRef.current) return;\n\n const currentPos = isHorizontal ? e.clientX : e.clientY;\n const delta = currentPos - startPosRef.current; // Dragging right/down increases first panel size\n\n let newSize = startSizeRef.current + delta;\n\n const containerRect = containerRef.current.getBoundingClientRect();\n const containerTotal = isHorizontal ? containerRect.width : containerRect.height;\n\n // Limit the maximum size to prevent pushing the second panel offscreen\n const maxSize = containerTotal - minPanelSizePx;\n\n newSize = Math.max(minPanelSizePx, Math.min(newSize, maxSize));\n\n // Directly update the DOM for performance while dragging\n if (firstPanelRef.current) {\n firstPanelRef.current.style.flexBasis = `${newSize}px`;\n }\n };\n\n const handleMouseUp = () => {\n if (isResizingRef.current && containerRef.current && firstPanelRef.current) {\n // Calculate the final percentage\n const containerRect = containerRef.current.getBoundingClientRect();\n const firstPanelRect = firstPanelRef.current.getBoundingClientRect();\n\n const containerSize = isHorizontal ? containerRect.width : containerRect.height;\n const finalSize = isHorizontal ? firstPanelRect.width : firstPanelRect.height;\n\n // Pre-set the DOM to the exact % value BEFORE re-enabling transitions.\n // This prevents the visual \"snap\" that occurs when switching from px → %\n // with the CSS transition active.\n if (containerSize > 0) {\n const newPercent = (finalSize / containerSize) * 100;\n firstPanelRef.current.style.flexBasis = `${newPercent}%`;\n onPanelSizeChange(Math.max(0, Math.min(100, newPercent)));\n }\n\n isResizingRef.current = false;\n setIsResizing(false);\n document.body.style.cursor = \"\";\n document.body.style.userSelect = \"\";\n }\n };\n\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n }, [onPanelSizeChange, isHorizontal, minPanelSizePx]);\n\n // Calculate applied size\n const appliedBasis = !showFirstPanel ? \"0%\" : (showSecondPanel ? `${panelSizePercent}%` : \"100%\");\n\n return (\n <div\n ref={containerRef}\n className={cls(\n \"relative w-full h-full flex overflow-hidden\",\n !stacked && (isHorizontal ? \"flex-row\" : \"flex-col\"),\n className\n )}\n >\n {/* First Panel */}\n <div\n ref={firstPanelRef}\n className={cls(\n stacked ? \"absolute inset-0\" : \"relative flex-shrink-0\",\n \"flex flex-col overflow-hidden\",\n !stacked && !isResizing && animateLayout && \"transition-[flex-basis] duration-150 ease-out\",\n !showFirstPanel && \"hidden\"\n )}\n style={stacked ? undefined : {\n flexBasis: appliedBasis,\n minWidth: isHorizontal && showFirstPanel && showSecondPanel ? `${minPanelSizePx}px` : undefined,\n minHeight: !isHorizontal && showFirstPanel && showSecondPanel ? `${minPanelSizePx}px` : undefined,\n maxWidth: showSecondPanel ? undefined : \"100%\",\n maxHeight: showSecondPanel ? undefined : \"100%\"\n }}\n >\n {firstPanel}\n </div>\n\n {/* Divider */}\n {!stacked && showFirstPanel && showSecondPanel && (\n <div\n className={cls(\n \"relative z-10 flex flex-shrink-0 items-center justify-center\",\n defaultBorderMixin,\n isHorizontal ? \"border-l w-px h-full cursor-col-resize\" : \"border-t h-px w-full cursor-row-resize\"\n )}\n onMouseDown={handleResizeStart}\n >\n {/* Transparent Hit Area with Pill inside */}\n <div className={cls(\n \"absolute flex items-center justify-center group\",\n isHorizontal ? \"w-4 h-full cursor-col-resize top-0\" : \"h-4 w-full cursor-row-resize left-0\"\n )}>\n <div className={cls(\n \"bg-primary/60 dark:bg-primary rounded-full opacity-0 group-hover:opacity-100 transition-all duration-200\",\n isHorizontal ? \"w-1 h-8\" : \"h-1 w-8\"\n )}/>\n </div>\n </div>\n )}\n\n {/* Second Panel */}\n <div\n className={cls(\n stacked ? \"absolute inset-0\" : \"flex-grow relative min-w-0 min-h-0\",\n \"flex flex-col overflow-hidden\",\n !showSecondPanel && \"hidden\"\n )}\n >\n {secondPanel}\n </div>\n </div>\n );\n}\n","\n\"use client\";\nimport { SearchIcon, XIcon } from \"lucide-react\";\nimport { iconSize } from \"../icons/Icon\";\nimport React, { useCallback, useState } from \"react\";\n\nimport { defaultBorderMixin } from \"../styles\";\nimport { CircularProgress, IconButton } from \"./index\";\n\nimport { cls } from \"../util\";\nimport { useDebounceValue } from \"../hooks\";\n\ninterface SearchBarProps {\n onClick?: () => void;\n onTextSearch?: (searchString?: string) => void;\n placeholder?: string;\n expandable?: boolean;\n /**\n * Size of the search bar.\n * - \"small\": 32px height (matches TextField small)\n * - \"medium\": 44px height (matches TextField medium)\n * @default \"medium\"\n */\n size?: \"smallest\" | \"small\" | \"medium\";\n innerClassName?: string;\n className?: string;\n autoFocus?: boolean;\n disabled?: boolean;\n loading?: boolean;\n inputRef?: React.Ref<HTMLInputElement>;\n /**\n * Optional initial value for the search input, e.g. from URL params.\n */\n initialValue?: string;\n}\n\nexport function SearchBar({\n onClick,\n onTextSearch,\n placeholder = \"Search\",\n expandable = false,\n size = \"medium\",\n innerClassName,\n className,\n autoFocus,\n disabled,\n loading,\n inputRef,\n initialValue\n}: SearchBarProps) {\n\n const [searchText, setSearchText] = useState<string>(initialValue ?? \"\");\n const [active, setActive] = useState<boolean>(false);\n\n const deferredValues = useDebounceValue(searchText, 200);\n\n /**\n * Debounce on SearchIcon text update\n */\n React.useEffect(() => {\n if (!onTextSearch) return;\n if (deferredValues) {\n onTextSearch(deferredValues);\n } else {\n onTextSearch(undefined);\n }\n }, [deferredValues]);\n\n const clearText = useCallback(() => {\n if (!onTextSearch) return;\n setSearchText(\"\");\n onTextSearch(undefined);\n }, [onTextSearch]);\n\n // Height classes matching TextField sizes\n const heightClass = size === \"smallest\" ? \"h-8\" : size === \"small\" ? \"h-[36px]\" : \"h-[44px]\";\n const iconPaddingClass = size === \"smallest\" ? \"px-2\" : size === \"small\" ? \"px-2\" : \"px-4\";\n const inputPaddingClass = size === \"smallest\" ? \"pl-8\" : size === \"small\" ? \"pl-8\" : \"pl-12\";\n\n return (\n <div\n role=\"search\"\n aria-label=\"Search\"\n onClick={onClick}\n className={cls(\"relative transition-all\",\n heightClass,\n \"bg-surface-accent-50 dark:bg-surface-900 border\",\n defaultBorderMixin,\n \"focus-within:ring-1 focus-within:ring-primary/60 focus-within:border-primary focus-within:shadow-[0_0_0_3px_rgba(0,112,244,0.1)]\",\n \"rounded-lg overflow-hidden\",\n className)}>\n <div\n className={cls(\"absolute p-0 h-full pointer-events-none flex items-center justify-center top-0\", iconPaddingClass)}>\n {loading ? <CircularProgress size={\"smallest\"}/> : <SearchIcon className={\"text-text-disabled dark:text-text-disabled-dark\"} size={size === \"smallest\" ? 14 : size === \"small\" ? 18 : 20}/>}\n </div>\n <input\n value={searchText ?? \"\"}\n ref={inputRef}\n onClick={onClick}\n placeholder={placeholder}\n aria-label={placeholder}\n readOnly={!onTextSearch}\n onChange={onTextSearch\n ? (event) => {\n setSearchText(event.target.value);\n }\n : undefined}\n autoFocus={autoFocus}\n onFocus={() => setActive(true)}\n onBlur={() => setActive(false)}\n className={cls(\n (disabled || loading) && \"pointer-events-none\",\n \"placeholder-text-disabled dark:placeholder-text-disabled-dark\",\n \"relative flex items-center transition-all bg-transparent outline-none focus:outline-none focus:ring-0 appearance-none border-none focus:border-transparent\",\n inputPaddingClass, \"h-full w-full text-current\",\n size === \"small\" ? \"text-sm\" : \"\",\n expandable ? (active ? \"w-[220px]\" : \"w-[180px]\") : \"\",\n innerClassName\n )}\n />\n {searchText\n ? <IconButton\n className={`${size === \"small\" ? \"mr-0 top-0\" : \"mr-1 top-0\"} absolute right-0 z-10`}\n size={\"small\"}\n aria-label=\"Clear search\"\n onClick={clearText}>\n <XIcon size={iconSize.smallest}/>\n </IconButton>\n : <div style={{ width: 26 }}/>\n }\n </div>\n );\n}\n","\n\"use client\";\nimport { CheckIcon, ChevronDownIcon } from \"lucide-react\";\nimport { iconSize } from \"../icons/Icon\";\nimport React, { ChangeEvent, Children, forwardRef, useCallback, useEffect, useMemo, useState } from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport {\n defaultBorderMixin,\n fieldBackgroundDisabledMixin,\n fieldBackgroundHoverMixin,\n fieldBackgroundInvisibleMixin,\n fieldBackgroundMixin,\n focusedDisabled\n} from \"../styles\";\n\nimport { cls } from \"../util\";\nimport { SelectInputLabel } from \"./common/SelectInputLabel\";\nimport { usePortalContainer } from \"../hooks/PortalContainerContext\";\n\nexport type SelectValue = string | number | boolean;\n\nexport type SelectProps<T extends SelectValue = string> = {\n open?: boolean,\n name?: string,\n fullWidth?: boolean,\n id?: string,\n onOpenChange?: (open: boolean) => void,\n value?: T,\n className?: string,\n inputClassName?: string,\n viewportClassName?: string,\n onChange?: React.EventHandler<ChangeEvent<HTMLSelectElement>>,\n onValueChange?: (updatedValue: T) => void,\n placeholder?: React.ReactNode,\n renderValue?: (value: T) => React.ReactNode,\n size?: \"smallest\" | \"small\" | \"medium\" | \"large\",\n label?: React.ReactNode | string,\n disabled?: boolean,\n error?: boolean,\n position?: \"item-aligned\" | \"popper\",\n endAdornment?: React.ReactNode,\n inputRef?: React.Ref<HTMLButtonElement>,\n padding?: boolean,\n invisible?: boolean,\n children?: React.ReactNode;\n dataType?: \"string\" | \"number\" | \"boolean\";\n portalContainer?: HTMLElement | null; // Explicitly added to props type if missing\n};\n\nexport const Select = forwardRef<HTMLDivElement, SelectProps>(({\n inputRef,\n open,\n name,\n fullWidth = false,\n id,\n onOpenChange,\n value,\n onChange,\n onValueChange,\n className,\n inputClassName,\n viewportClassName,\n placeholder,\n renderValue,\n label,\n size = \"large\",\n error,\n disabled,\n padding = true,\n position = \"item-aligned\",\n endAdornment,\n invisible,\n children,\n dataType = \"string\",\n portalContainer: manualContainer, // Rename to avoid confusion\n ...props\n}, ref) => {\n\n const [openInternal, setOpenInternal] = useState(open ?? false);\n\n useEffect(() => {\n setOpenInternal(open ?? false);\n }, [open]);\n\n // Get the portal container from context\n const contextContainer = usePortalContainer();\n\n // Resolve final container (Manual Prop > Context Container > Undefined/Body)\n const finalContainer = (manualContainer ?? contextContainer ?? undefined) as HTMLElement | undefined;\n\n const onValueChangeInternal = useCallback((newValue: string) => {\n let typedValue: SelectValue = newValue;\n if (dataType === \"boolean\") {\n if (newValue === \"true\") typedValue = true;\n else if (newValue === \"false\") typedValue = false;\n } else if (dataType === \"number\") {\n if (!isNaN(Number(newValue)) && newValue.trim() !== \"\") typedValue = Number(newValue);\n }\n\n onValueChange?.(typedValue as SelectValue & typeof value);\n if (onChange) {\n const event = {\n target: {\n name,\n value: typedValue\n }\n } as ChangeEvent<HTMLSelectElement>;\n onChange(event);\n }\n }, [onChange, onValueChange, name, dataType]);\n\n const hasValue = Array.isArray(value) ? value.length > 0 : (value != null && value !== \"\" && value !== undefined);\n const stringValue = value !== undefined ? String(value) : undefined;\n\n const displayChildren = useMemo(() => {\n if (!hasValue || renderValue) return null;\n\n // Find the child that matches the current value to display its content\n let found: React.ReactNode = null;\n Children.forEach(children, (child) => {\n if (React.isValidElement<SelectItemProps>(child) && String(child.props.value) === String(value)) {\n found = child.props.children;\n }\n });\n return found;\n }, [children, hasValue, renderValue, value]);\n\n return (\n <SelectPrimitive.Root\n name={name}\n value={stringValue}\n open={openInternal}\n disabled={disabled}\n onValueChange={onValueChangeInternal}\n onOpenChange={(open) => {\n onOpenChange?.(open);\n setOpenInternal(open);\n }}\n {...props}>\n {typeof label === \"string\" ? <SelectInputLabel error={error}>{label}</SelectInputLabel> : label}\n <div className={cls(\n \"select-none rounded-md text-sm\",\n invisible ? fieldBackgroundInvisibleMixin : fieldBackgroundMixin,\n disabled ? fieldBackgroundDisabledMixin : fieldBackgroundHoverMixin,\n \"relative flex items-center\",\n className,\n {\n \"min-h-[28px]\": size === \"smallest\",\n \"min-h-[32px]\": size === \"small\",\n \"min-h-[44px]\": size === \"medium\",\n \"min-h-[64px]\": size === \"large\",\n \"w-fit\": !fullWidth,\n \"w-full\": fullWidth\n }\n )}>\n <SelectPrimitive.Trigger\n ref={inputRef}\n id={id}\n asChild={false}\n type=\"button\"\n aria-label={typeof label === \"string\" ? label : (typeof renderValue === \"string\" ? renderValue : \"Select an option\")}\n aria-invalid={error || undefined}\n className={cls(\n \"h-full\",\n padding ? {\n \"px-4\": size === \"large\",\n \"px-3\": size === \"medium\",\n \"px-2\": size === \"small\" || size === \"smallest\"\n } : \"\",\n \"outline-hidden focus:outline-hidden\",\n \"outline-none focus:outline-none\",\n \"select-none rounded-md text-sm\",\n error ? \"text-red-500 dark:text-red-600\" : \"focus:text-text-primary dark:focus:text-text-primary-dark\",\n error ? \"border border-red-500 dark:border-red-600\" : \"\",\n disabled ? \"text-surface-accent-600 dark:text-surface-accent-400\" : \"text-surface-accent-800 dark:text-white\",\n \"relative flex flex-row items-center\",\n {\n \"min-h-[28px]\": size === \"smallest\",\n \"min-h-[32px]\": size === \"small\",\n \"min-h-[44px]\": size === \"medium\",\n \"min-h-[64px]\": size === \"large\",\n \"w-full\": fullWidth,\n \"w-fit\": !fullWidth\n },\n inputClassName\n )}\n >\n <div\n ref={ref}\n className={cls(\n \"flex-grow max-w-full flex flex-row gap-2 items-center\",\n \"overflow-visible\",\n {\n \"min-h-[28px]\": size === \"smallest\",\n \"min-h-[32px]\": size === \"small\",\n \"min-h-[44px]\": size === \"medium\",\n \"min-h-[64px]\": size === \"large\"\n }\n )}>\n <SelectPrimitive.Value\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n placeholder={placeholder}\n className={\"w-full\"}>\n\n {hasValue && value !== undefined && renderValue\n ? renderValue(value)\n : (displayChildren || placeholder)\n }\n\n </SelectPrimitive.Value>\n </div>\n\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon size={size === \"large\" ? iconSize.medium : iconSize.small}\n className={cls(\"transition\", open ? \"rotate-180\" : \"\", {\n \"px-2\": size === \"large\",\n \"px-1\": size === \"medium\" || size === \"small\"\n })}/>\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n\n {endAdornment && (\n <div\n className={cls(\"h-full flex items-center absolute right-0 pr-12\")}\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}>\n {endAdornment}\n </div>\n )}\n </div>\n\n {/* Pass the calculated finalContainer */}\n <SelectPrimitive.Portal container={finalContainer}>\n <SelectPrimitive.Content position={position}\n className={cls(focusedDisabled, \"z-50 relative overflow-hidden border bg-white dark:bg-surface-800 p-2 rounded-lg shadow-lg animate-in fade-in-0 zoom-in-95 duration-150\", defaultBorderMixin)}>\n <SelectPrimitive.Viewport className={cls(\"p-1\", viewportClassName)}\n style={{ maxHeight: \"var(--radix-select-content-available-height)\" }}>\n {children}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n </SelectPrimitive.Root>\n );\n});\n\nSelect.displayName = \"Select\";\n\n// ... (SelectItem and SelectGroup remain unchanged)\nexport type SelectItemProps<T extends SelectValue = string> = {\n value: T,\n children?: React.ReactNode,\n disabled?: boolean,\n className?: string,\n};\n\nexport const SelectItem = React.memo(function SelectItem<T extends SelectValue = string>({\n value,\n children,\n disabled,\n className\n}: SelectItemProps<T>) {\n // Convert value to string for Radix UI\n const stringValue = String(value);\n\n return <SelectPrimitive.Item\n key={stringValue}\n value={stringValue}\n disabled={disabled}\n className={cls(\n \"w-full\",\n \"relative flex items-center p-2 rounded-md text-sm text-surface-accent-700 dark:text-surface-accent-300\",\n \"focus:z-10\",\n \"data-[state=checked]:bg-surface-accent-100 data-[state=checked]:dark:bg-surface-accent-800 focus:bg-surface-accent-100 dark:focus:bg-surface-900\",\n \"data-[state=checked]:focus:bg-surface-accent-200 data-[state=checked]:dark:focus:bg-surface-900\",\n disabled ? \"opacity-50 cursor-not-allowed\" : \"cursor-pointer\",\n \"[&>*]:w-full\",\n \"overflow-visible\",\n className\n )}>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n <div\n className=\"absolute left-1 data-[state=checked]:block hidden\">\n <CheckIcon size={iconSize.smallest}/>\n </div>\n </SelectPrimitive.Item>;\n});\n\nexport type SelectGroupProps = {\n label: React.ReactNode,\n children: React.ReactNode,\n className?: string\n};\n\nexport const SelectGroup = React.memo(function SelectGroup({\n label,\n children,\n className\n}: SelectGroupProps) {\n return <>\n <SelectPrimitive.Group\n className={cls(\n \"text-xs text-surface-accent-900 dark:text-white uppercase tracking-wider font-bold mt-6 first:mt-2\",\n \"px-2 py-2\",\n className\n )}>\n {label}\n </SelectPrimitive.Group>\n\n {children}\n </>;\n});\n","\"use client\";\nimport * as React from \"react\";\nimport { cls } from \"../util\";\nimport * as SliderPrimitive from \"@radix-ui/react-slider\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nexport interface SliderProps {\n className?: string;\n name?: string;\n disabled?: boolean;\n orientation?: React.AriaAttributes[\"aria-orientation\"];\n dir?: \"ltr\" | \"rtl\";\n min?: number;\n max?: number;\n step?: number;\n minStepsBetweenThumbs?: number;\n value?: number[];\n defaultValue?: number[];\n onValueChange?: (value: number[]) => void;\n onValueCommit?: (value: number[]) => void;\n inverted?: boolean;\n form?: string;\n size?: \"small\" | \"regular\";\n}\n\nfunction SliderThumb(props: {\n props: Omit<React.PropsWithoutRef<SliderProps>, \"size\" | \"className\">,\n index: number,\n hovered: boolean,\n classes: string\n}) {\n return <TooltipPrimitive.Root open={props.hovered}>\n <TooltipPrimitive.Trigger asChild>\n <SliderPrimitive.Thumb\n className={cls({\n \"border-primary bg-primary outline-none\": !props.props.disabled,\n \"border-surface-accent-300 bg-surface-accent-300 dark:border-surface-700 dark:bg-surface-700\": props.props.disabled\n },\n props.classes,\n \"focus-visible:ring-4 focus-visible:ring-primary focus-visible:ring-opacity-50 focus-visible:ring-primary/50\",\n \"hover:ring-4 hover:ring-primary hover:ring-opacity-25 hover:ring-primary/25\",\n \"block rounded-full transition-colors focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50\")}\n\n />\n </TooltipPrimitive.Trigger>\n <TooltipPrimitive.Content side=\"top\"\n sideOffset={5}\n className={cls(\n \"TooltipContent\",\n \"max-w-lg leading-relaxed\",\n \"z-50 rounded px-3 py-2 text-xs leading-none bg-surface-accent-700 dark:bg-surface-accent-800 bg-opacity-90 bg-surface-accent-700/90 dark:bg-surface-accent-800/90 font-medium text-surface-accent-50 shadow-2xl select-none duration-400 ease-in transform opacity-100\"\n )}>\n {props.props.value?.[props.index]}\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Root>;\n}\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n SliderProps\n>(({\n className,\n size = \"regular\",\n ...props\n }, ref) => {\n const [hovered, setHovered] = React.useState(false);\n\n const thumbSizeClasses =\n size === \"small\"\n ? \"h-4 w-4\" // Smaller size for the thumb\n : \"h-6 w-6\"; // Default size\n\n return (\n <TooltipPrimitive.Provider delayDuration={200}>\n <SliderPrimitive.Root\n ref={ref}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n className={cls(\n \"relative flex w-full touch-none select-none items-center\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track\n style={{ height: size === \"small\" ? 4 : 8 }}\n className={\"relative w-full grow overflow-hidden rounded-full bg-surface-accent-300 bg-opacity-40 bg-surface-accent-300/40 dark:bg-surface-700 dark:bg-opacity-40 dark:bg-surface-700/40\"}>\n\n <SliderPrimitive.Range\n className={cls(\"absolute h-full\", {\n \"bg-primary\": !props.disabled,\n \"bg-surface-accent-300 dark:bg-surface-700\": props.disabled\n })}\n />\n </SliderPrimitive.Track>\n\n {(props.value ?? [0]).map((_, index) => <SliderThumb\n key={index}\n index={index}\n props={props}\n hovered={hovered}\n classes={thumbSizeClasses}/>)}\n </SliderPrimitive.Root>\n </TooltipPrimitive.Provider>\n );\n});\n\nSlider.displayName = \"Slider\";\n\nexport { Slider };\n","\"use client\";\nimport React, { useEffect, useState } from \"react\";\nimport { cls } from \"../util\";\nimport { defaultBorderMixin } from \"../styles\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { usePortalContainer } from \"../hooks/PortalContainerContext\";\n\ninterface SheetProps {\n children: React.ReactNode;\n open: boolean;\n title?: string;\n modal?: boolean;\n includeBackgroundOverlay?: boolean;\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n darkBackground?: boolean;\n transparent?: boolean;\n onOpenChange?: (open: boolean) => void;\n onPointerDownOutside?: (e: Event) => void;\n onInteractOutside?: (e: Event) => void;\n className?: string;\n style?: React.CSSProperties;\n overlayClassName?: string;\n overlayZIndex?: string;\n overlayStyle?: React.CSSProperties;\n portalContainer?: HTMLElement | null;\n}\n\nexport const Sheet: React.FC<SheetProps> = ({\n children,\n side = \"right\",\n title,\n modal = true,\n includeBackgroundOverlay = true,\n open,\n onOpenChange,\n onPointerDownOutside,\n onInteractOutside,\n transparent,\n className,\n style,\n overlayClassName,\n overlayZIndex = \"z-50\",\n overlayStyle,\n portalContainer,\n ...props\n}) => {\n const [displayed, setDisplayed] = useState(false);\n\n // Get the portal container from context\n const contextContainer = usePortalContainer();\n\n // Prioritize manual prop, fallback to context container\n const finalContainer = (portalContainer ?? contextContainer ?? undefined) as HTMLElement | undefined;\n\n useEffect(() => {\n const raf = requestAnimationFrame(() => {\n setDisplayed(open);\n });\n return () => cancelAnimationFrame(raf);\n }, [open]);\n\n const transformValue: Record<string, string> = {\n top: \"-translate-y-full\",\n bottom: \"translate-y-full\",\n left: \"-translate-x-full\",\n right: \"translate-x-full\"\n };\n\n const borderClass: Record<string, string> = {\n top: \"border-b\",\n bottom: \"border-t\",\n left: \"border-r\",\n right: \"border-l\"\n };\n\n return (\n <DialogPrimitive.Root open={displayed || open}\n modal={modal}\n onOpenChange={onOpenChange}>\n <DialogPrimitive.Portal container={finalContainer}>\n {includeBackgroundOverlay && <DialogPrimitive.Overlay\n className={cls(\n \"outline-none\",\n \"fixed inset-0 bg-white/80 dark:bg-surface-900/80\",\n \"backdrop-blur-sm transition-all duration-100 data-[state=closed]:animate-out data-[state=closed]:fade-out data-[state=open]:fade-in\",\n overlayZIndex,\n overlayClassName\n )}\n style={overlayStyle}\n />}\n <DialogPrimitive.Content\n {...props}\n onFocusCapture={(event) => event.preventDefault()}\n onPointerDownOutside={onPointerDownOutside}\n onInteractOutside={onInteractOutside}\n className={cls(\n \"outline-none\",\n borderClass[side],\n defaultBorderMixin,\n \"transform-gpu\",\n \"will-change-transform\",\n \"text-surface-accent-900 dark:text-white\",\n \"fixed transform z-50 transition-[transform,opacity] ease-in-out\",\n !displayed ? \"duration-150\" : \"duration-100\",\n \"outline-none focus:outline-none focus-visible:outline-none focus-visible:ring-0 focus:ring-0\",\n transparent ? \"\" : \"shadow-md bg-white dark:bg-surface-900\",\n side === \"top\" || side === \"bottom\" ? \"w-full\" : \"h-full\",\n side === \"left\" || side === \"top\" ? \"left-0 top-0\" : \"right-0 bottom-0\",\n displayed && open ? \"opacity-100\" : \"opacity-50\",\n !displayed || !open ? transformValue[side] : \"\",\n className\n )}\n style={style}\n >\n <DialogPrimitive.Title autoFocus tabIndex={0} className=\"sr-only outline-none focus:outline-none focus-visible:outline-none focus-visible:ring-0 focus:ring-0\">\n {title ?? \"Sheet\"}\n </DialogPrimitive.Title>\n {children}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n );\n};\n","\"use client\";\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { cls, debounce } from \"../util\";\n\ntype State = {\n outerHeightStyle: number;\n overflow?: boolean | undefined;\n};\n\nfunction getStyleValue(value: string) {\n return parseInt(value, 10) || 0;\n}\n\nconst styles: {\n shadow: React.CSSProperties;\n} = {\n shadow: {\n // Visibility needed to hide the extra text area on iPads\n visibility: \"hidden\",\n // Remove from the content flow\n position: \"absolute\",\n // Ignore the scrollbar width\n overflow: \"hidden\",\n height: 0,\n top: 0,\n left: 0,\n // Create a new layer, increase the isolation of the computed values\n transform: \"translateZ(0)\"\n }\n};\n\nfunction isEmpty(obj: State) {\n return (\n obj === undefined ||\n obj === null ||\n Object.keys(obj).length === 0 ||\n (obj.outerHeightStyle === 0 && !obj.overflow)\n );\n}\n\nexport const TextareaAutosize = React.forwardRef(function TextareaAutosize(\n props: TextareaAutosizeProps,\n ref: React.ForwardedRef<Element>\n) {\n const {\n onChange,\n onScroll,\n onResize,\n maxRows,\n minRows = 1,\n style,\n value,\n onFocus,\n onBlur,\n sizeRef,\n ignoreBoxSizing,\n ...other\n } = props;\n\n const { current: isControlled } = React.useRef(value != null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const handleRef = useForkRef(ref, inputRef);\n const shadowRef = React.useRef<HTMLTextAreaElement>(null);\n const renders = React.useRef(0);\n const [state, setState] = React.useState<State>({\n outerHeightStyle: 0\n });\n\n const getUpdatedState = React.useCallback(() => {\n\n const input = inputRef.current!;\n if (typeof window === \"undefined\") {\n return {\n outerHeightStyle: 0\n };\n }\n\n const containerWindow = window;\n const computedStyle = containerWindow.getComputedStyle(input);\n\n // If input's width is shrunk and it's not visible, don't sync height.\n if (computedStyle.width === \"0px\") {\n return {\n outerHeightStyle: 0\n };\n }\n\n const sizeReferenceElement = sizeRef?.current ?? shadowRef.current!;\n const inputShallow = shadowRef.current!;\n\n sizeReferenceElement.style.width = computedStyle.width;\n inputShallow.value = input.value || props.placeholder || \"x\";\n if (inputShallow.value.slice(-1) === \"\\n\") {\n // Certain fonts which overflow the line height will cause the textarea\n // to report a different scrollHeight depending on whether the last line\n // is empty. Make it non-empty to avoid this issue.\n inputShallow.value += \" \";\n }\n\n const boxSizing = computedStyle.boxSizing;\n const padding =\n getStyleValue(computedStyle.paddingBottom) + getStyleValue(computedStyle.paddingTop);\n const border =\n getStyleValue(computedStyle.borderBottomWidth) + getStyleValue(computedStyle.borderTopWidth);\n const minHeight = getStyleValue(computedStyle.minHeight);\n\n // The height of the inner content\n const innerHeight = sizeReferenceElement.scrollHeight;\n\n // Measure height of a textarea with a single row\n inputShallow.value = \"x\";\n const singleRowHeight = sizeReferenceElement.scrollHeight;\n\n // The height of the outer content\n let outerHeight = innerHeight;\n\n if (minRows) {\n outerHeight = Math.max(Number(minRows) * singleRowHeight, outerHeight);\n }\n if (maxRows) {\n outerHeight = Math.min(Number(maxRows) * singleRowHeight, outerHeight);\n }\n outerHeight = Math.max(outerHeight, singleRowHeight, minHeight);\n\n // Take the box sizing into account for applying this value as a style.\n const outerHeightStyle = outerHeight + (!ignoreBoxSizing && boxSizing === \"border-box\" ? padding + border : 0);\n\n const overflow = Math.abs(outerHeight - innerHeight) <= 1;\n\n return {\n outerHeightStyle,\n overflow\n };\n }, [maxRows, minRows, props.placeholder]);\n\n const updateState = React.useCallback((prevState: State, newState: State) => {\n const {\n outerHeightStyle,\n overflow\n } = newState;\n // Need a large enough difference to update the height.\n // This prevents infinite rendering loop.\n if (\n renders.current < 20 &&\n ((outerHeightStyle > 0 &&\n Math.abs((prevState.outerHeightStyle || 0) - outerHeightStyle) > 1) ||\n prevState.overflow !== overflow)\n ) {\n renders.current += 1;\n return {\n overflow,\n outerHeightStyle\n };\n }\n if (process.env.NODE_ENV !== \"production\") {\n if (renders.current === 20) {\n console.error(\n [\n \"MUI: Too many re-renders. The layout is unstable.\",\n \"TextareaAutosize limits the number of renders to prevent an infinite loop.\"\n ].join(\"\\n\")\n );\n }\n }\n return prevState;\n }, []);\n\n const syncHeight = React.useCallback(() => {\n const newState = getUpdatedState();\n\n if (isEmpty(newState)) {\n return;\n }\n if (onResize) {\n onResize(newState);\n }\n\n setState((prevState) => {\n return updateState(prevState, newState);\n });\n }, [getUpdatedState, onResize, updateState]);\n\n const syncHeightWithFlushSync = React.useCallback(() => {\n const newState = getUpdatedState();\n\n if (isEmpty(newState)) {\n return;\n }\n\n // In React 18, state updates in a ResizeObserver's callback are happening after the paint which causes flickering\n // when doing some visual updates in it. Using flushSync ensures that the dom will be painted after the states updates happen\n // Related issue - https://github.com/facebook/react/issues/24331\n ReactDOM.flushSync(() => {\n setState((prevState) => {\n return updateState(prevState, newState);\n });\n });\n }, [getUpdatedState, updateState]);\n\n React.useEffect(() => {\n const handleResize = debounce(() => {\n renders.current = 0;\n\n // If the TextareaAutosize component is replaced by Suspense with a fallback, the last\n // ResizeObserver's handler that runs because of the change in the layout is trying to\n // access a dom node that is no longer there (as the fallback component is being shown instead).\n if (inputRef.current) {\n syncHeightWithFlushSync();\n }\n });\n let resizeObserver: ResizeObserver;\n\n const input = inputRef.current!;\n const containerWindow = window;\n if (typeof window === \"undefined\") {\n return;\n }\n\n containerWindow.addEventListener(\"resize\", handleResize);\n\n if (typeof ResizeObserver !== \"undefined\") {\n resizeObserver = new ResizeObserver(handleResize);\n resizeObserver.observe(input);\n }\n\n return () => {\n handleResize.clear();\n containerWindow.removeEventListener(\"resize\", handleResize);\n if (resizeObserver) {\n resizeObserver.disconnect();\n }\n };\n }, [syncHeightWithFlushSync]);\n\n useLayoutEffect(() => {\n syncHeight();\n });\n\n React.useEffect(() => {\n renders.current = 0;\n }, [value]);\n\n const handleChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n renders.current = 0;\n\n if (!isControlled) {\n syncHeight();\n }\n\n if (onChange) {\n onChange(event);\n }\n };\n\n return (\n <React.Fragment>\n <textarea\n value={value}\n onChange={handleChange}\n className={props.className}\n ref={handleRef as React.Ref<HTMLTextAreaElement>}\n onFocus={onFocus}\n onBlur={onBlur}\n // Apply the rows prop to get a \"correct\" first SSR paint\n rows={minRows as number}\n style={{\n height: state.outerHeightStyle,\n // Need a large enough difference to allow scrolling.\n // This prevents infinite rendering loop.\n overflow: state.overflow ? \"hidden\" : undefined,\n ...style\n }}\n onScroll={onScroll}\n {...other}\n />\n <textarea\n aria-hidden\n className={cls(props.className, props.shadowClassName)}\n readOnly\n ref={shadowRef}\n tabIndex={-1}\n style={{\n padding: 0,\n ...styles.shadow,\n ...style\n }}\n />\n </React.Fragment>\n );\n}) as React.FC<TextareaAutosizeProps & { ref?: React.ForwardedRef<Element> }>;\n\nexport type TextareaAutosizeProps = Omit<React.InputHTMLAttributes<HTMLTextAreaElement>, \"onResize\"> & {\n\n className?: string;\n\n shadowClassName?: string;\n\n /**\n * Maximum number of rows to display.\n */\n maxRows?: number | string;\n /**\n * Minimum number of rows to display.\n * @default 1\n */\n minRows?: number | string;\n /**\n * @ignore\n */\n onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>) => void;\n /**\n * @ignore\n */\n placeholder?: string;\n /**\n * @ignore\n */\n style?: object;\n /**\n * @ignore\n */\n value?: string[] | number | string;\n\n sizeRef?: React.RefObject<HTMLDivElement>;\n\n onScroll?: (event: React.UIEvent<HTMLTextAreaElement>) => void;\n\n onResize?: (state: State) => void;\n\n autoFocus?: boolean;\n\n ignoreBoxSizing?: boolean;\n}\n\nfunction useForkRef<Instance>(\n ...refs: Array<React.Ref<Instance> | undefined>\n): React.RefCallback<Instance> | null {\n /**\n * This will create a new function if the refs passed to this hook change and are all defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior.\n */\n return React.useMemo(() => {\n if (refs.every((ref) => ref == null)) {\n return null;\n }\n\n return (instance) => {\n refs.forEach((ref) => {\n setRef(ref, instance);\n });\n };\n\n }, refs);\n}\n\nfunction setRef<T>(\n ref: React.MutableRefObject<T | null> | ((instance: T | null) => void) | null | undefined,\n value: T | null\n): void {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\n","\"use client\";\nimport React, { ForwardedRef, forwardRef, useEffect, useId, useRef } from \"react\";\n\nimport {\n fieldBackgroundDisabledMixin,\n fieldBackgroundHoverMixin,\n fieldBackgroundInvisibleMixin,\n fieldBackgroundMixin,\n focusedInvisibleMixin\n} from \"../styles\";\nimport { InputLabel } from \"./InputLabel\";\nimport { cls } from \"../util\";\n\nexport type InputType =\n | \"text\"\n | \"number\"\n | \"phone\"\n | \"email\"\n | \"password\"\n | \"search\"\n | \"url\"\n | \"date\"\n | \"time\"\n | \"datetime-local\"\n | \"month\"\n | \"week\"\n | \"color\";\n\nexport type TextFieldProps<T extends string | number> = {\n type?: InputType;\n value?: T;\n onChange?: (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => void;\n label?: React.ReactNode;\n multiline?: boolean;\n disabled?: boolean;\n invisible?: boolean;\n error?: boolean;\n endAdornment?: React.ReactNode;\n autoFocus?: boolean;\n placeholder?: string;\n size?: \"smallest\" | \"small\" | \"medium\" | \"large\";\n className?: string;\n style?: React.CSSProperties;\n inputClassName?: string;\n inputStyle?: React.CSSProperties;\n inputRef?: React.ForwardedRef<any>;\n /**\n * Maximum number of rows to display.\n */\n maxRows?: number | string;\n /**\n * Minimum number of rows to display.\n * @default 1\n */\n minRows?: number | string;\n} & Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"value\">;\n\nexport const TextField = forwardRef<HTMLDivElement, TextFieldProps<string | number>>(\n <T extends string | number>(\n {\n value,\n onChange,\n label,\n type = \"text\",\n multiline = false,\n invisible,\n maxRows,\n minRows,\n disabled,\n error,\n endAdornment,\n autoFocus,\n placeholder,\n size = \"large\",\n className,\n style,\n inputClassName,\n inputStyle,\n inputRef: inputRefProp,\n ...inputProps\n }: TextFieldProps<T>,\n ref: ForwardedRef<HTMLDivElement>\n ) => {\n\n const fallbackRef = useRef(null);\n const inputRef = inputRefProp ?? fallbackRef;\n const autoId = useId();\n const inputId = inputProps.id ?? autoId;\n const labelId = `${inputId}-label`;\n\n const [focused, setFocused] = React.useState(false);\n const hasValue = value !== undefined && value !== null && value !== \"\";\n\n useEffect(() => {\n const element = inputRef && \"current\" in inputRef ? inputRef.current : null;\n if (element && document.activeElement === element) {\n setFocused(true);\n }\n }, []);\n\n useEffect(() => {\n if (type !== \"number\") return;\n const handleWheel = (event: any) => {\n if (event.target instanceof HTMLElement) event.target.blur();\n };\n\n const element = \"current\" in inputRef ? inputRef.current : inputRef;\n\n element?.addEventListener(\"wheel\", handleWheel);\n\n return () => {\n element?.removeEventListener(\"wheel\", handleWheel);\n };\n }, [inputRef, type]);\n\n const input = multiline ? (\n <textarea\n {...(inputProps as React.TextareaHTMLAttributes<HTMLTextAreaElement>)}\n ref={inputRef}\n id={inputId}\n aria-labelledby={label ? labelId : undefined}\n aria-invalid={error || undefined}\n aria-disabled={disabled || undefined}\n placeholder={focused || hasValue || !label ? placeholder : undefined}\n autoFocus={autoFocus}\n rows={typeof minRows === \"string\" ? parseInt(minRows) : (minRows ?? 3)}\n value={value ?? \"\"}\n onChange={onChange}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n style={inputStyle}\n className={cls(\n invisible ? focusedInvisibleMixin : \"\",\n \"rounded-md resize-none w-full outline-none text-base bg-transparent min-h-[64px] px-3\",\n label ? \"pt-8 pb-2\" : \"py-2\",\n disabled && \"outline-none opacity-50 text-surface-accent-600 dark:text-surface-accent-500\",\n inputClassName\n )}\n />\n ) : (\n <input\n {...inputProps}\n ref={inputRef}\n id={inputId}\n aria-labelledby={label ? labelId : undefined}\n aria-invalid={error || undefined}\n aria-disabled={disabled || undefined}\n disabled={disabled}\n style={inputStyle}\n className={cls(\n \"w-full outline-none bg-transparent leading-normal px-3\",\n \"rounded-md\",\n \"focused:text-text-primary focused:dark:text-text-primary-dark\",\n invisible ? focusedInvisibleMixin : \"\",\n disabled ? fieldBackgroundDisabledMixin : fieldBackgroundHoverMixin,\n {\n \"min-h-[28px]\": size === \"smallest\",\n \"min-h-[32px]\": size === \"small\",\n \"min-h-[44px]\": size === \"medium\",\n \"min-h-[64px]\": size === \"large\"\n },\n label\n ? size === \"large\"\n ? \"pt-8 pb-2\"\n : \"pt-4 pb-2\"\n : size === \"smallest\"\n ? \"py-0.5\"\n : size === \"small\"\n ? \"py-1\"\n : \"py-2\",\n endAdornment ? \"pr-12\" : \"pr-3\",\n disabled &&\n \"outline-none opacity-65 dark:opacity-60 text-surface-accent-800 dark:text-white\",\n inputClassName\n )}\n placeholder={focused || hasValue || !label ? placeholder : undefined}\n autoFocus={autoFocus}\n onFocus={() => setFocused(true)}\n onBlur={() => setFocused(false)}\n type={type}\n value={type === \"number\" && Number.isNaN(value) ? \"\" : value ?? \"\"}\n onChange={onChange}\n />\n );\n\n return (\n <div\n ref={ref}\n className={cls(\n \"rounded-md relative max-w-full\",\n invisible ? fieldBackgroundInvisibleMixin : fieldBackgroundMixin,\n disabled ? fieldBackgroundDisabledMixin : fieldBackgroundHoverMixin,\n error ? \"border border-red-500 dark:border-red-600\" : \"\",\n {\n \"min-h-[28px]\": size === \"smallest\",\n \"min-h-[32px]\": size === \"small\",\n \"min-h-[44px]\": size === \"medium\",\n \"min-h-[64px]\": size === \"large\"\n },\n className\n )}\n style={style}\n >\n {label && (\n <InputLabel\n id={labelId}\n htmlFor={inputId}\n className={cls(\n \"pointer-events-none absolute\",\n size === \"large\" ? \"top-1\" : \"top-[-1px]\",\n !error\n ? focused\n ? \"text-primary dark:text-primary\"\n : \"text-text-secondary dark:text-text-secondary-dark\"\n : \"text-red-500 dark:text-red-600\",\n disabled ? \"opacity-50\" : \"\"\n )}\n shrink={hasValue || focused}\n >\n {label}\n </InputLabel>\n )}\n\n {input}\n\n {endAdornment && (\n <div\n className={cls(\n \"flex flex-row justify-center items-center absolute h-full right-0 top-0\",\n {\n \"mr-4\": size === \"large\",\n \"mr-3\": size === \"medium\",\n \"mr-2\": size === \"small\" || size === \"smallest\"\n }\n )}\n >\n {endAdornment}\n </div>\n )}\n </div>\n );\n }\n);\n\nTextField.displayName = \"TextField\";\n","\nimport React, { createContext, useContext, useRef, useState, useEffect, useMemo } from \"react\";\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cls } from \"../util\";\nimport { defaultBorderMixin } from \"../styles\";\n\nexport type TabVariant = \"standard\" | \"boxy\" | \"pill\";\n\nconst TabsContext = createContext<{ variant: TabVariant }>({ variant: \"standard\" });\nimport { IconButton } from \"./IconButton\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\";\nimport { iconSize } from \"../icons/Icon\";\n\nexport type TabsProps = {\n value: string,\n children: React.ReactNode,\n innerClassName?: string,\n className?: string,\n variant?: TabVariant,\n onValueChange: (value: string) => void\n};\n\nexport function Tabs({\n value,\n onValueChange,\n className,\n innerClassName,\n variant = \"standard\",\n children\n}: TabsProps) {\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const [showLeftScroll, setShowLeftScroll] = useState(false);\n const [showRightScroll, setShowRightScroll] = useState(false);\n const [isScrollable, setIsScrollable] = useState(false);\n\n const checkScroll = () => {\n if (scrollContainerRef.current) {\n const { scrollLeft, scrollWidth, clientWidth } = scrollContainerRef.current;\n setShowLeftScroll(scrollLeft > 0);\n setShowRightScroll(Math.ceil(scrollLeft + clientWidth) < scrollWidth);\n setIsScrollable(scrollWidth > clientWidth);\n }\n };\n\n useEffect(() => {\n checkScroll();\n window.addEventListener(\"resize\", checkScroll);\n\n let observer: ResizeObserver;\n if (scrollContainerRef.current) {\n observer = new ResizeObserver(checkScroll);\n observer.observe(scrollContainerRef.current);\n if (scrollContainerRef.current.firstElementChild) {\n observer.observe(scrollContainerRef.current.firstElementChild);\n }\n }\n\n return () => {\n window.removeEventListener(\"resize\", checkScroll);\n observer?.disconnect();\n };\n }, [children]);\n\n const scroll = (direction: \"left\" | \"right\") => {\n if (scrollContainerRef.current) {\n const container = scrollContainerRef.current;\n const scrollAmount = Math.max(container.clientWidth / 2, 200);\n const targetScroll = container.scrollLeft + (direction === \"left\" ? -scrollAmount : scrollAmount);\n\n container.scrollTo({\n left: targetScroll,\n behavior: \"smooth\"\n });\n // checkScroll will be called by onScroll event\n }\n };\n\n const contextValue = useMemo(() => ({ variant }), [variant]);\n\n return <TabsContext.Provider value={contextValue}>\n <TabsPrimitive.Root\n value={value}\n onValueChange={onValueChange}\n className={cls(\"relative flex flex-row items-center min-w-0 w-full\", className)}\n >\n {isScrollable && (\n <button\n type=\"button\"\n disabled={!showLeftScroll}\n aria-label=\"Scroll tabs left\"\n onClick={() => scroll(\"left\")}\n className={cls(\n \"absolute left-0 top-1/2 -translate-y-1/2 z-10 flex items-center justify-center rounded-md transition-all h-8 w-6\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-surface-400\",\n !showLeftScroll ? \"pointer-events-none opacity-0\" : \"text-surface-600 dark:text-surface-400 hover:bg-surface-200 dark:hover:bg-surface-800\",\n \"bg-surface-50 dark:bg-surface-900 border shadow-sm\", defaultBorderMixin\n )}\n >\n <ChevronLeftIcon size={iconSize.smallest}/>\n </button>\n )}\n <div\n ref={scrollContainerRef}\n className=\"flex-1 overflow-x-auto no-scrollbar min-w-0\"\n onScroll={checkScroll}\n style={{ scrollbarWidth: \"none\",\nmsOverflowStyle: \"none\" }}\n >\n <TabsPrimitive.List className={cls(\n variant === \"standard\" && \"inline-flex h-9 items-center justify-start rounded-md bg-surface-50 p-1 text-surface-600 dark:bg-surface-900 dark:text-surface-400 gap-2 border\",\n variant === \"standard\" && defaultBorderMixin,\n variant === \"boxy\" && \"flex items-center h-full\",\n variant === \"pill\" && \"flex items-center gap-0.5\",\n innerClassName)\n }>\n {children}\n </TabsPrimitive.List>\n </div>\n {isScrollable && (\n <button\n type=\"button\"\n disabled={!showRightScroll}\n aria-label=\"Scroll tabs right\"\n onClick={() => scroll(\"right\")}\n className={cls(\n \"absolute right-0 top-1/2 -translate-y-1/2 z-10 flex items-center justify-center rounded-md transition-all h-8 w-6\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-surface-400\",\n !showRightScroll ? \"pointer-events-none opacity-0\" : \"text-surface-600 dark:text-surface-400 hover:bg-surface-200 dark:hover:bg-surface-800\",\n \"bg-surface-50 dark:bg-surface-900 border shadow-sm\", defaultBorderMixin\n )}\n >\n <ChevronRightIcon size={iconSize.smallest}/>\n </button>\n )}\n </TabsPrimitive.Root>\n </TabsContext.Provider>;\n}\n\nexport type TabProps = {\n value: string,\n className?: string,\n innerClassName?: string,\n children: React.ReactNode,\n disabled?: boolean\n};\n\nexport function Tab({\n value,\n className,\n innerClassName,\n children,\n disabled\n}: TabProps) {\n const { variant } = useContext(TabsContext);\n\n return (\n <TabsPrimitive.Trigger\n value={value}\n disabled={disabled}\n className={cls(\n \"inline-flex items-center justify-center whitespace-nowrap text-sm font-medium ring-offset-white transition-all\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-surface-400 focus-visible:ring-offset-2\",\n \"disabled:pointer-events-none disabled:opacity-50\",\n variant === \"standard\" && \"rounded-sm px-3 py-1 data-[state=active]:bg-white data-[state=active]:text-surface-900 data-[state=active]:shadow-sm dark:data-[state=active]:bg-surface-900 dark:data-[state=active]:text-surface-50\",\n variant === \"boxy\" && cls(\n \"flex-shrink-0 flex items-center gap-1.5 px-3.5 h-9 border-r border-surface-200 dark:border-surface-800 cursor-pointer text-[12px] font-medium transition-colors group relative box-border overflow-hidden\",\n \"border-b-2 border-b-transparent\",\n \"data-[state=active]:bg-surface-50 dark:data-[state=active]:bg-surface-900\",\n \"data-[state=active]:text-text-primary dark:data-[state=active]:text-text-primary-dark\",\n \"data-[state=active]:border-b-primary\",\n \"text-text-secondary dark:text-text-secondary-dark hover:bg-surface-100 dark:hover:bg-surface-800\"\n ),\n variant === \"pill\" && cls(\n \"px-2 py-0.5 rounded text-[10px] font-medium transition-colors\",\n \"data-[state=active]:bg-primary/10 data-[state=active]:text-primary dark:data-[state=active]:bg-primary/20 dark:data-[state=active]:text-blue-400\",\n \"text-text-disabled dark:text-text-disabled-dark hover:text-text-secondary dark:hover:text-text-secondary-dark\"\n ),\n className,\n variant === \"standard\" && innerClassName\n )}\n >\n {children}\n </TabsPrimitive.Trigger>\n );\n}\n","\n\"use client\";\n\nimport { TagIcon } from \"lucide-react\";\nimport React, { useRef } from \"react\";\nimport { defaultBorderMixin } from \"../styles\";\nimport { cls } from \"../util\";\n\nexport type TableProps = {\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n} & React.TableHTMLAttributes<HTMLTableElement>;\n\nexport const Table = React.memo(({\n children,\n className,\n style,\n ...rest\n }: TableProps) => (\n <table\n className={cls(\"text-left text-surface-900 dark:text-white rounded-md overflow-x-auto\", className)}\n style={style}\n {...rest}\n >\n {children}\n </table>\n));\n\nexport type TableBodyProps = {\n children?: React.ReactNode;\n className?: string;\n} & React.HTMLAttributes<HTMLTableSectionElement>;\n\nexport const TableBody = React.memo(({\n children,\n className,\n ...rest\n }: TableBodyProps) => (\n <tbody\n className={cls(\"bg-white dark:bg-surface-900 text-sm divide-y divide-surface-100 dark:divide-surface-700 dark:divide-opacity-70 dark:divide-surface-700/70\", className)}\n {...rest}\n >\n {children}\n </tbody>\n));\n\nexport type TableHeaderProps = {\n children?: React.ReactNode;\n className?: string;\n} & React.HTMLAttributes<HTMLTableSectionElement>;\n\nexport const TableHeader = React.memo(({\n children,\n className,\n ...rest\n }: TableHeaderProps) => (\n <thead {...rest}>\n <tr\n className={cls(\n defaultBorderMixin,\n \"text-sm font-medium text-surface-700 dark:text-surface-accent-300\",\n \"bg-surface-accent-50 border-b dark:bg-surface-800\",\n className\n )}\n >\n {children}\n </tr>\n </thead>\n));\n\nexport type TableRowProps = {\n children?: React.ReactNode;\n className?: string;\n onClick?: React.MouseEventHandler<any>;\n style?: React.CSSProperties;\n} & React.HTMLAttributes<HTMLTableRowElement>;\n\nexport const TableRow = React.memo(({\n children,\n className,\n onClick,\n style,\n ...rest\n }: TableRowProps) => (\n <tr\n onClick={onClick}\n style={style}\n className={cls(\n \"bg-white dark:bg-surface-900\",\n onClick ? \"hover:bg-surface-accent-100 dark:hover:bg-surface-accent-800 cursor-pointer\" : \"\",\n className\n )}\n {...rest}\n >\n {children}\n </tr>\n));\n\nexport type TableCellProps = {\n children?: React.ReactNode;\n header?: boolean;\n scope?: string;\n className?: string;\n style?: React.CSSProperties;\n align?: \"left\" | \"center\" | \"right\";\n colspan?: number;\n} & React.HTMLAttributes<HTMLTableCellElement>;\n\nexport const TableCell = React.memo(({\n children,\n header = false,\n scope = \"\",\n align,\n className,\n style,\n colspan,\n ...rest\n }: TableCellProps) => {\n const ref = useRef<HTMLTableCellElement>(null);\n const TagIcon = header || getParentName(ref.current) === \"TableHeader\" ? \"th\" : \"td\";\n return (\n <TagIcon\n scope={scope}\n colSpan={colspan}\n ref={ref}\n style={style}\n className={cls(\n \"px-4 py-3 text-clip \",\n align === \"center\" ? \"text-center\" : (align === \"right\" ? \"text-right\" : \"text-left\"),\n className\n )}\n {...rest}\n >\n {children}\n </TagIcon>\n );\n});\n\ninterface ReactFiber {\n return: ReactFiber;\n type: string | Function;\n elementType?: {\n name?: string;\n };\n}\n\n// This is highly experimental and might break in the future\nfunction getParentName(element: HTMLElement | null): string | undefined {\n if (element) {\n const key = Object.keys(element).find((key) => {\n return (\n key.startsWith(\"__reactFiber$\") ||\n key.startsWith(\"__reactInternalInstance$\")\n );\n });\n if (key) {\n const domFiber = (element as unknown as Record<string, ReactFiber>)[key];\n const getComponentFiber = (fiber: ReactFiber): ReactFiber => {\n let parentFiber = fiber.return;\n while (parentFiber && typeof parentFiber.type === \"string\") {\n parentFiber = parentFiber.return;\n }\n return parentFiber;\n };\n let fiber = getComponentFiber(domFiber);\n fiber = getComponentFiber(fiber);\n return fiber?.elementType?.name;\n }\n }\n return undefined;\n}\n\nTable.displayName = \"Table\";\nTableBody.displayName = \"TableBody\";\nTableHeader.displayName = \"TableHeader\";\nTableRow.displayName = \"TableRow\";\nTableCell.displayName = \"TableCell\";\n","\"use client\";\nimport React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\n\nimport { paperMixin } from \"../styles\";\nimport { cls } from \"../util\";\nimport { useInjectStyles } from \"../hooks\";\nimport { usePortalContainer } from \"../hooks/PortalContainerContext\";\n\nexport type PopoverSide = \"top\" | \"right\" | \"bottom\" | \"left\";\nexport type PopoverAlign = \"start\" | \"center\" | \"end\";\n\nexport interface PopoverProps {\n trigger: React.ReactNode;\n children: React.ReactNode;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n side?: PopoverSide;\n sideOffset?: number;\n align?: PopoverAlign;\n alignOffset?: number;\n arrowPadding?: number;\n sticky?: \"partial\" | \"always\";\n hideWhenDetached?: boolean;\n avoidCollisions?: boolean;\n enabled?: boolean;\n modal?: boolean;\n className?: string;\n portalContainer?: HTMLElement | null;\n onMouseEnter?: React.MouseEventHandler<HTMLDivElement>;\n onMouseLeave?: React.MouseEventHandler<HTMLDivElement>;\n}\n\nexport function Popover({\n trigger,\n children,\n open,\n onOpenChange,\n side,\n sideOffset = 5,\n align,\n alignOffset,\n arrowPadding,\n sticky,\n hideWhenDetached,\n avoidCollisions,\n enabled = true,\n modal = false,\n portalContainer,\n className,\n onMouseEnter,\n onMouseLeave\n }: PopoverProps) {\n\n useInjectStyles(\"Popover\", popoverStyles);\n\n // Get the portal container from context\n const contextContainer = usePortalContainer();\n\n // Prioritize manual prop, fallback to context container\n const finalContainer = (portalContainer ?? contextContainer ?? undefined) as HTMLElement | undefined;\n\n if (!enabled)\n return <>{trigger}</>;\n\n return <PopoverPrimitive.Root open={open}\n onOpenChange={onOpenChange}\n modal={modal}>\n\n <PopoverPrimitive.Trigger asChild>\n {trigger}\n </PopoverPrimitive.Trigger>\n\n <PopoverPrimitive.Portal container={finalContainer}>\n <PopoverPrimitive.Content\n className={cls(paperMixin,\n \"PopoverContent z-40\", className)}\n side={side}\n sideOffset={sideOffset}\n align={align}\n alignOffset={alignOffset}\n arrowPadding={arrowPadding}\n sticky={sticky}\n hideWhenDetached={hideWhenDetached}\n avoidCollisions={avoidCollisions}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}>\n\n {children}\n <PopoverPrimitive.Arrow className=\"fill-white dark:fill-surface-800\"/>\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Portal>\n </PopoverPrimitive.Root>;\n}\n\nconst popoverStyles = `\n/* ... (styles remain unchanged) ... */\n.PopoverContent {\n animation-duration: 400ms;\n animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);\n will-change: transform, opacity;\n}\n.PopoverContent[data-state='open'][data-side='top'] {\n animation-name: slideDownAndFade;\n}\n.PopoverContent[data-state='open'][data-side='right'] {\n animation-name: slideLeftAndFade;\n}\n.PopoverContent[data-state='open'][data-side='bottom'] {\n animation-name: slideUpAndFade;\n}\n.PopoverContent[data-state='open'][data-side='left'] {\n animation-name: slideRightAndFade;\n}\n\n@keyframes slideUpAndFade {\n from {\n opacity: 0;\n transform: translateY(2px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes slideRightAndFade {\n from {\n opacity: 0;\n transform: translateX(-2px);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n\n@keyframes slideDownAndFade {\n from {\n opacity: 0;\n transform: translateY(-2px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes slideLeftAndFade {\n from {\n opacity: 0;\n transform: translateX(2px);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n}\n`;\n","import React from \"react\";\n\nexport type BadgeColor = \"primary\" | \"secondary\" | \"warning\" | \"error\";\n\nexport interface BadgeProps {\n color?: BadgeColor;\n children: React.ReactNode;\n invisible?: boolean;\n}\n\nconst getColor = (color: BadgeColor) => {\n switch (color) {\n case \"primary\":\n return \"bg-primary\";\n case \"secondary\":\n return \"bg-secondary\";\n case \"warning\":\n return \"bg-orange-500\";\n case \"error\":\n return \"bg-red-500\";\n default:\n return \"bg-surface-accent-300 dark:bg-surface-accent-700\";\n }\n}\n\nexport const Badge = React.forwardRef<HTMLDivElement, BadgeProps>(({\n color = \"primary\",\n invisible = false,\n children\n }, ref) => {\n return (\n <div ref={ref} className=\"relative inline-block w-fit\">\n {children}\n <span\n className={`absolute top-0.5 right-0.5 transform translate-x-1/2 -translate-y-1/2 rounded-full\n ${getColor(color)}\n transition-all duration-200 ease-out\n ${invisible ? \"w-0 h-0\" : \"w-2 h-2\"}`}\n />\n </div>\n );\n});\n\nBadge.displayName = \"Badge\";\n","\"use client\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { TextField, TextFieldProps } from \"./index\";\n\ntype TextFieldChangeEvent = React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>;\n\nexport function DebouncedTextField<T extends string | number>(props: TextFieldProps<T>) {\n\n const [internalValue, setInternalValue] = useState<T | string>(props.value ?? \"\");\n const lastSentValueRef = useRef<T | string>(props.value ?? \"\");\n const timerRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n\n // Sync state with props.value when it changes externally\n useEffect(() => {\n const externalValue = props.value ?? \"\";\n if (externalValue !== lastSentValueRef.current) {\n setInternalValue(externalValue);\n lastSentValueRef.current = externalValue;\n }\n }, [props.value]);\n\n // Cleanup timer on unmount\n useEffect(() => {\n return () => {\n if (timerRef.current) clearTimeout(timerRef.current);\n };\n }, []);\n\n const flushChange = useCallback((value: T | string, event?: TextFieldChangeEvent) => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n timerRef.current = undefined;\n }\n if (value !== props.value && props.onChange) {\n lastSentValueRef.current = value;\n const e = {\n ...event,\n target: {\n ...event?.target,\n value: value,\n name: props.name\n }\n } as TextFieldChangeEvent;\n props.onChange(e);\n }\n }, [props.value, props.onChange, props.name]);\n\n const internalOnChange = useCallback((event: TextFieldChangeEvent) => {\n const newValue = event.target.value;\n setInternalValue(newValue);\n\n if (timerRef.current) clearTimeout(timerRef.current);\n\n const eventCopy = {\n ...event,\n target: {\n ...event?.target,\n name: event?.target?.name\n }\n };\n\n timerRef.current = setTimeout(() => {\n flushChange(newValue, eventCopy as TextFieldChangeEvent);\n }, 150);\n }, [flushChange]);\n\n const internalOnBlur = useCallback((event: React.FocusEvent<HTMLInputElement>) => {\n flushChange(internalValue, event as TextFieldChangeEvent);\n props.onBlur?.(event);\n }, [internalValue, flushChange, props.onBlur]);\n\n return <TextField {...props}\n onChange={internalOnChange}\n onBlur={internalOnBlur}\n value={internalValue as T}/>;\n}\n","import React from \"react\";\nimport { cls } from \"../util\";\nimport { useInjectStyles } from \"../hooks\";\n\nexport type SkeletonProps = {\n width?: number;\n height?: number;\n className?: string;\n}\n\nconst styles = `\n@keyframes shimmer {\n 0% {\n transform: translateX(-150%);\n }\n 100% {\n transform: translateX(150%);\n }\n}\n`;\n\nexport function Skeleton({\n width,\n height,\n className\n }: SkeletonProps) {\n\n useInjectStyles(\"Skeleton\", styles);\n\n return <span\n style={{\n width: width ? `${width}px` : \"100%\",\n height: height ? `${height}px` : \"12px\"\n }}\n className={\n cls(\n \"block relative overflow-hidden\",\n \"bg-surface-accent-50 dark:bg-surface-accent-800 rounded-md\",\n \"max-w-full max-h-full\",\n className)\n }>\n <span\n className=\"absolute inset-0 bg-gradient-to-r from-transparent via-white/50 dark:via-white/8 to-transparent\"\n style={{ animation: \"shimmer 1.8s ease-in-out infinite\" }}\n />\n </span>;\n}\n","import React from \"react\";\nimport { cls } from \"../util\";\n\nexport type ToggleButtonOption<T extends string = string> = {\n value: T;\n label: string;\n icon?: React.ReactNode;\n disabled?: boolean;\n}\n\nexport type ToggleButtonGroupProps<T extends string = string> = {\n /**\n * Currently selected value\n */\n value: T;\n /**\n * Callback when value changes\n */\n onValueChange: (value: T) => void;\n /**\n * Options to display\n */\n options: ToggleButtonOption<T>[];\n /**\n * Additional class names for the container\n */\n className?: string;\n}\n\n/**\n * A toggle button group component for selecting one option from a set.\n * Displays options as buttons in a horizontal row with active state styling.\n */\nexport function ToggleButtonGroup<T extends string = string>({\n value,\n onValueChange,\n options,\n className\n}: ToggleButtonGroupProps<T>) {\n return (\n <div role=\"group\" aria-label=\"Toggle options\" className={cls(\"inline-flex flex-row bg-surface-100 dark:bg-surface-900 rounded-lg p-1 gap-1\", className)}>\n {options.map((option) => (\n <button\n key={option.value}\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n if (!option.disabled) {\n onValueChange(option.value);\n }\n }}\n disabled={option.disabled}\n aria-pressed={value === option.value}\n aria-disabled={option.disabled || undefined}\n className={cls(\n \"flex flex-row items-center justify-center gap-2 py-3 px-4 rounded-md transition-colors\",\n value === option.value\n ? \"bg-white dark:bg-surface-900 text-primary dark:text-primary-300 shadow-sm\"\n : \"text-surface-500 dark:text-surface-400 hover:bg-surface-100 dark:hover:bg-surface-700\",\n option.disabled && \"opacity-50 cursor-not-allowed\"\n )}\n >\n {option.icon}\n <span className=\"text-sm font-medium\">{option.label}</span>\n </button>\n ))}\n </div>\n );\n}\n","import { ArrowUpIcon, FilterIcon } from \"lucide-react\";\nimport { iconSize } from \"../../icons/Icon\";\n\nimport React, { RefObject, useCallback, useEffect, useState } from \"react\";\nimport { deepEqual as equal } from \"fast-equals\";\n\nimport { VirtualTableColumn, VirtualTableSort, VirtualTableWhereFilterOp } from \"./VirtualTableProps\";\nimport { ErrorBoundary } from \"../ErrorBoundary\";\nimport { Badge } from \"../Badge\";\nimport { Button } from \"../Button\";\nimport { IconButton } from \"../IconButton\";\nimport { Popover } from \"../Popover\";\nimport { defaultBorderMixin } from \"../../styles\";\nimport { cls } from \"../../util/cls\";\ninterface FilterFormProps<T> {\n column: VirtualTableColumn<T>;\n onFilterUpdate: (filter?: [VirtualTableWhereFilterOp, unknown], newOpenFilterState?: boolean) => void;\n filter?: [VirtualTableWhereFilterOp, unknown];\n onHover: boolean,\n createFilterField: (props: FilterFormFieldProps<T>) => React.ReactNode;\n hidden: boolean;\n setHidden: (hidden: boolean) => void;\n}\n\nexport type FilterFormFieldProps<CustomProps> = {\n id: React.Key,\n filterValue: [VirtualTableWhereFilterOp, unknown] | undefined,\n setFilterValue: (filterValue?: [VirtualTableWhereFilterOp, unknown]) => void;\n column: VirtualTableColumn<CustomProps>;\n hidden: boolean;\n setHidden: (hidden: boolean) => void;\n};\n\ntype VirtualTableHeaderProps<M extends Record<string, unknown>> = {\n resizeHandleRef: React.Ref<HTMLDivElement>;\n columnIndex: number;\n isResizingIndex: number;\n column: VirtualTableColumn<unknown>;\n onColumnSort: (key: Extract<keyof M, string>) => void;\n filter?: [VirtualTableWhereFilterOp, unknown];\n sort: VirtualTableSort;\n onFilterUpdate: (column: VirtualTableColumn, filterForProperty?: [VirtualTableWhereFilterOp, unknown]) => void;\n onClickResizeColumn?: (columnIndex: number, column: VirtualTableColumn) => void;\n createFilterField?: (props: FilterFormFieldProps<unknown>) => React.ReactNode;\n AdditionalHeaderWidget?: (props: { onHover: boolean }) => React.ReactNode;\n isDragging?: boolean;\n isDraggable?: boolean;\n};\n\nexport const VirtualTableHeader = React.memo<VirtualTableHeaderProps<Record<string, unknown>>>(\n function VirtualTableHeader<M extends Record<string, unknown>>({\n resizeHandleRef,\n columnIndex,\n isResizingIndex,\n sort,\n onColumnSort,\n onFilterUpdate,\n filter,\n column,\n onClickResizeColumn,\n createFilterField,\n AdditionalHeaderWidget,\n isDragging,\n isDraggable\n }: VirtualTableHeaderProps<M>) {\n\n const [onHover, setOnHover] = useState(false);\n\n const [openFilter, setOpenFilter] = React.useState(false);\n const [hidden, setHidden] = React.useState(false);\n\n const handleSettingsClick = useCallback((_event: React.MouseEvent) => {\n setOpenFilter(true);\n }, []);\n\n const update = useCallback((filterForProperty?: [VirtualTableWhereFilterOp, unknown], newOpenFilterState?: boolean) => {\n onFilterUpdate(column, filterForProperty);\n if (newOpenFilterState !== undefined)\n setOpenFilter(newOpenFilterState);\n }, [column, onFilterUpdate]);\n\n const thisColumnIsResizing = isResizingIndex === columnIndex;\n const anotherColumnIsResizing = isResizingIndex !== columnIndex && isResizingIndex > 0;\n\n const hovered = !anotherColumnIsResizing && (onHover || thisColumnIsResizing);\n\n return (\n <ErrorBoundary>\n <div\n className={cls(\"flex py-0 px-3 h-full text-xs uppercase font-semibold relative select-none items-center\",\n isDragging\n ? \"bg-primary-bg dark:bg-primary-bg-dark\"\n : \"bg-surface-50 dark:bg-surface-900\",\n \"text-text-secondary hover:text-text-primary dark:text-text-secondary-dark dark:hover:text-text-primary-dark\",\n !isDragging && \"hover:bg-surface-100 dark:hover:bg-surface-900 hover:bg-opacity-50 hover:bg-surface-100/50 dark:hover:bg-opacity-50 dark:hover:bg-surface-900/50\",\n column.frozen ? \"sticky left-0 z-10\" : \"relative z-0\",\n isDraggable && \"cursor-grab\"\n )}\n style={{\n left: column.frozen ? 0 : undefined,\n minWidth: column.width,\n maxWidth: column.width\n }}\n onMouseEnter={() => setOnHover(true)}\n onMouseMove={() => setOnHover(true)}\n onMouseLeave={() => setOnHover(false)}\n >\n\n <div className=\"overflow-hidden grow\">\n <div\n className={`flex items-center justify-${column.headerAlign} flex-row`}>\n\n {column.icon && (\n <div className=\"flex-shrink-0 flex items-center justify-center mr-1\">\n {React.isValidElement(column.icon) ? (\n React.cloneElement(column.icon as React.ReactElement<any>, {\n size: 14,\n className: cls((column.icon as React.ReactElement<any>).props?.className, \"flex-shrink-0\")\n })\n ) : (\n column.icon\n )}\n </div>\n )}\n\n <div\n className=\"truncate -webkit-box w-full mr-1 overflow-hidden\"\n style={{\n WebkitBoxOrient: \"vertical\",\n WebkitLineClamp: 2,\n justifyContent: column.align\n }}>\n {column.title}\n </div>\n\n </div>\n </div>\n <>\n\n {AdditionalHeaderWidget &&\n <AdditionalHeaderWidget onHover={onHover || openFilter}/>}\n\n {column.sortable && (sort || hovered || openFilter) &&\n <div className=\"flex-shrink-0\">\n <Badge color=\"secondary\"\n invisible={!sort}>\n <IconButton\n size={\"small\"}\n className={onHover || openFilter ? \"bg-white dark:bg-surface-900\" : undefined}\n onClick={() => {\n onColumnSort(column.key as Extract<keyof M, string>);\n }}\n >\n {!sort &&\n <ArrowUpIcon size={14} className=\"flex-shrink-0\" />}\n {sort === \"asc\" &&\n <ArrowUpIcon size={14} className=\"flex-shrink-0\" />}\n {sort === \"desc\" &&\n <ArrowUpIcon size={14} className=\"flex-shrink-0 rotate-180\" />}\n </IconButton>\n </Badge>\n </div>\n }\n </>\n\n {column.filter && createFilterField && <div className=\"flex-shrink-0\">\n <Badge color=\"secondary\"\n invisible={!filter}>\n\n <Popover\n open={openFilter}\n onOpenChange={setOpenFilter}\n className={hidden ? \"hidden\" : undefined}\n modal={true}\n trigger={\n <IconButton\n className={onHover || openFilter ? \"bg-white dark:bg-surface-900\" : undefined}\n size={\"small\"}\n onClick={handleSettingsClick}>\n <FilterIcon size={14} className=\"flex-shrink-0\"/>\n </IconButton>}\n >\n <FilterForm column={column}\n filter={filter}\n onHover={onHover}\n onFilterUpdate={update}\n createFilterField={createFilterField}\n hidden={hidden}\n setHidden={setHidden}/>\n\n </Popover>\n\n </Badge>\n\n </div>}\n\n {column.resizable && <div\n ref={resizeHandleRef as React.Ref<HTMLDivElement>}\n data-no-dnd=\"true\"\n className={cls(\n \"absolute h-full w-[6px] top-0 right-0 cursor-col-resize\",\n hovered && \"bg-surface-300 dark:bg-surface-700\"\n )}\n onPointerDown={(e) => {\n e.stopPropagation();\n if (onClickResizeColumn) {\n onClickResizeColumn(columnIndex, column);\n }\n }}\n />}\n </div>\n\n </ErrorBoundary>\n );\n }, equal) as React.FunctionComponent<VirtualTableHeaderProps<Record<string, unknown>>>;\n\nfunction FilterForm<M>({\n column,\n onFilterUpdate,\n filter,\n onHover,\n createFilterField,\n hidden,\n setHidden\n}: FilterFormProps<M>) {\n\n const id = column.key;\n\n const [filterInternal, setFilterInternal] = useState<[VirtualTableWhereFilterOp, unknown] | undefined>(filter);\n\n useEffect(() => {\n setFilterInternal(filter);\n }, [filter]);\n\n if (!column.filter) return null;\n\n const submit = () => {\n onFilterUpdate(filterInternal, false);\n };\n\n const reset = (_e: React.MouseEvent) => {\n onFilterUpdate(undefined, false);\n };\n\n const filterIsSet = !!filter;\n\n const filterField = createFilterField({\n id,\n filterValue: filterInternal,\n setFilterValue: setFilterInternal,\n column,\n hidden,\n setHidden\n });\n\n if (!filterField) return null;\n return (\n <form noValidate={true}\n onSubmit={(e) => {\n e.stopPropagation();\n e.preventDefault();\n submit();\n }}\n className={\"text-surface-900 dark:text-white\"}>\n <div\n className={cls(defaultBorderMixin, \"py-4 px-6 typography-label border-b\")}>\n {column.title ?? id}\n </div>\n {filterField && <div className=\"m-4 w-[400px]\">\n {filterField}\n </div>}\n <div className=\"flex justify-end m-4\">\n <Button\n className=\"mr-4\"\n disabled={!filterIsSet}\n variant={\"text\"}\n type=\"reset\"\n aria-label=\"filter clear\"\n onClick={reset}>Clear</Button>\n <Button\n type=\"submit\">Filter</Button>\n </div>\n </form>\n );\n\n}\n","import React, { createRef, useCallback, useEffect, useMemo, useState } from \"react\";\n\nimport { VirtualTableColumn, VirtualTableWhereFilterOp } from \"./VirtualTableProps\";\nimport { ErrorBoundary } from \"../ErrorBoundary\";\nimport { VirtualTableHeader } from \"./VirtualTableHeader\";\nimport { VirtualTableContextProps } from \"./types\";\nimport { defaultBorderMixin } from \"../../styles\";\nimport { cls } from \"../../util/cls\";import { useSortable } from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\n\n// Sortable column header wrapper\nconst SortableColumnHeader = ({\n column,\n columnIndex,\n columnRefs,\n isResizing,\n onFilterUpdate,\n filter,\n sortByProperty,\n currentSort,\n onColumnSort,\n onClickResizeColumn,\n createFilterField,\n isDragging,\n isDraggable\n}: {\n column: VirtualTableColumn;\n columnIndex: number;\n columnRefs: React.Ref<HTMLDivElement>[];\n isResizing: number;\n onFilterUpdate: (column: VirtualTableColumn, filterForProperty?: [VirtualTableWhereFilterOp, unknown]) => void;\n filter: [VirtualTableWhereFilterOp, unknown] | undefined;\n sortByProperty: string | undefined;\n currentSort: \"asc\" | \"desc\" | undefined;\n onColumnSort: (key: string) => void;\n onClickResizeColumn: (index: number) => void;\n createFilterField: ((props: import(\"./VirtualTableHeader\").FilterFormFieldProps<unknown>) => React.ReactNode) | undefined;\n isDragging: boolean;\n isDraggable: boolean;\n}) => {\n const [isPressing, setIsPressing] = useState(false);\n\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition\n } = useSortable({\n id: column.key,\n disabled: !isDraggable || column.frozen\n });\n\n const style = {\n // Only use translate, ignore any scale transforms\n transform: transform ? `translateX(${transform.x}px)` : undefined,\n // Don't transition the dragged item - only other items should animate\n transition: isDragging ? undefined : transition,\n minWidth: column.width,\n maxWidth: column.width,\n width: column.width\n };\n\n // Combine our press handlers with dnd-kit listeners\n const combinedListeners = isDraggable ? {\n ...listeners,\n onPointerDown: (e: React.PointerEvent) => {\n setIsPressing(true);\n listeners?.onPointerDown?.(e);\n },\n onPointerUp: () => setIsPressing(false),\n onPointerCancel: () => setIsPressing(false)\n } : {};\n\n // Reset pressing state when drag ends\n React.useEffect(() => {\n if (!isDragging) {\n setIsPressing(false);\n }\n }, [isDragging]);\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className={cls(\n \"flex-shrink-0 h-full\",\n column.frozen && \"sticky left-0 z-10\"\n )}\n {...attributes}\n {...combinedListeners}\n >\n <VirtualTableHeader\n resizeHandleRef={columnRefs[columnIndex]}\n columnIndex={columnIndex}\n isResizingIndex={isResizing}\n onFilterUpdate={onFilterUpdate}\n filter={filter}\n sort={sortByProperty === column.key ? currentSort : undefined}\n onColumnSort={onColumnSort}\n onClickResizeColumn={onClickResizeColumn}\n column={column}\n createFilterField={createFilterField}\n AdditionalHeaderWidget={column.AdditionalHeaderWidget}\n isDragging={isDragging || isPressing}\n isDraggable={isDraggable}/>\n </div>\n );\n};\n\nexport const VirtualTableHeaderRow = ({\n columns,\n currentSort,\n onColumnSort,\n onFilterUpdate,\n sortByProperty,\n filter,\n onColumnResize,\n onColumnResizeEnd,\n createFilterField,\n AddColumnComponent,\n onColumnsOrderChange,\n data,\n cellRenderer: CellRenderer,\n rowHeight = 54,\n draggingColumnId,\n headerHeight = 48\n}: VirtualTableContextProps<Record<string, unknown>>) => {\n\n const columnRefs = useMemo(() => columns.map(() => createRef<HTMLDivElement>()), [columns.length]);\n const [isResizing, setIsResizing] = useState(-1);\n\n const adjustWidthColumn = useCallback((index: number, width: number, end: boolean) => {\n const column = columns[index];\n const minWidth = 100;\n const maxWidth = 800;\n const newWidth = width > maxWidth ? maxWidth : (width < minWidth ? minWidth : width);\n const params = {\n width: newWidth,\n key: column.key as string,\n column: {\n ...column,\n width: newWidth\n } as VirtualTableColumn\n };\n if (!end)\n onColumnResize(params);\n else\n onColumnResizeEnd(params);\n }, [columns, onColumnResize, onColumnResizeEnd]);\n\n const getEventNewWidth = useCallback((e: MouseEvent) => {\n if (isResizing >= 0) {\n const left = columnRefs[isResizing].current?.parentElement?.getBoundingClientRect().left;\n if (!left) return;\n return e.clientX - left;\n }\n return undefined;\n }, [columnRefs, isResizing]);\n\n const setCursorDocument = useCallback((isResizing: boolean) => {\n document.body.style.cursor = isResizing ? \"col-resize\" : \"auto\";\n }, []);\n\n const handleOnMouseMove = useCallback((e: MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n const newWidth = getEventNewWidth(e);\n if (newWidth)\n adjustWidthColumn(isResizing, newWidth, false);\n }, [adjustWidthColumn, getEventNewWidth, isResizing]);\n\n const handleOnMouseUp = useCallback((e: MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n const newWidth = getEventNewWidth(e);\n if (newWidth)\n adjustWidthColumn(isResizing, newWidth, true);\n setIsResizing(-1);\n setCursorDocument(false);\n }, [adjustWidthColumn, getEventNewWidth, isResizing, setCursorDocument]);\n\n const removeResizingListeners = useCallback(() => {\n document.removeEventListener(\"mousemove\", handleOnMouseMove);\n document.removeEventListener(\"mouseup\", handleOnMouseUp);\n }, [handleOnMouseMove, handleOnMouseUp]);\n\n const attachResizeListeners = useCallback(() => {\n document.addEventListener(\"mousemove\", handleOnMouseMove);\n document.addEventListener(\"mouseup\", handleOnMouseUp);\n }, [handleOnMouseMove, handleOnMouseUp]);\n\n useEffect(() => {\n if (isResizing >= 0) {\n attachResizeListeners();\n } else {\n removeResizingListeners();\n }\n return () => {\n removeResizingListeners();\n };\n }, [attachResizeListeners, isResizing, removeResizingListeners]);\n\n const onClickResizeColumn = useCallback((index: number) => {\n setIsResizing(index);\n setCursorDocument(true);\n }, [setCursorDocument]);\n\n return (\n <>\n <div\n className={cls(defaultBorderMixin, \"z-20 sticky min-w-full flex w-fit flex-row top-0 left-0 border-b bg-surface-50 dark:bg-surface-900\")}\n style={{ height: headerHeight }}>\n {columns.map((column, columnIndex) => {\n const columnFilter = column && filter && filter[column.key] ? filter[column.key] : undefined;\n const filterForThisProperty: [VirtualTableWhereFilterOp, unknown] | undefined =\n columnFilter\n ? (Array.isArray(columnFilter[0]) ? (columnFilter as [VirtualTableWhereFilterOp, unknown][])[0] : (columnFilter as [VirtualTableWhereFilterOp, unknown]))\n : undefined;\n\n const isDraggable = !column.frozen && !!onColumnsOrderChange;\n const isDragging = draggingColumnId === column.key;\n\n return (\n <ErrorBoundary key={\"header_\" + column.key}>\n <SortableColumnHeader\n column={column}\n columnIndex={columnIndex}\n columnRefs={columnRefs}\n isResizing={isResizing}\n onFilterUpdate={onFilterUpdate}\n filter={filterForThisProperty}\n sortByProperty={sortByProperty}\n currentSort={currentSort}\n onColumnSort={onColumnSort}\n onClickResizeColumn={onClickResizeColumn}\n createFilterField={createFilterField}\n isDragging={isDragging}\n isDraggable={isDraggable}\n />\n </ErrorBoundary>\n );\n })}\n\n {AddColumnComponent && <AddColumnComponent/>}\n\n </div>\n </>\n );\n};\n","import React, { useCallback } from \"react\";\n\nimport { deepEqual as equal } from \"fast-equals\"\n\nimport { VirtualTableRowProps } from \"./types\";\nimport { cls } from \"../../util/cls\";\nexport const VirtualTableRow = React.memo<VirtualTableRowProps<Record<string, unknown>>>(\n function VirtualTableRow<T extends Record<string, unknown>>({\n rowData,\n rowIndex,\n children,\n onRowClick,\n rowHeight,\n style,\n hoverRow,\n rowClassName\n }: VirtualTableRowProps<T>) {\n\n const onClick = useCallback((event: React.SyntheticEvent) => {\n if (onRowClick)\n onRowClick({\n rowData,\n rowIndex,\n event\n })\n }, [onRowClick, rowData, rowIndex]);\n\n return (\n <div\n className={cls(\n \"flex min-w-full text-sm border-b border-surface-200/60 dark:border-surface-700/60 dark:bg-surface-800\",\n rowClassName ? rowClassName(rowData) : \"\",\n {\n \"hover:!bg-surface-50/75 dark:hover:!bg-surface-800/75\": hoverRow,\n \"cursor-pointer \": onRowClick\n }\n )}\n onClick={onClick}\n style={{\n ...(style),\n height: rowHeight,\n width: \"fit-content\"\n }}\n >\n {children}\n </div>\n );\n\n },\n equal\n);\n","import React from \"react\";\n\nimport { deepEqual as equal } from \"fast-equals\"\n\nimport { CellRendererParams, VirtualTableColumn } from \"./VirtualTableProps\";\n\ntype VirtualTableCellProps<T> = {\n dataKey: string;\n column: VirtualTableColumn;\n columns: VirtualTableColumn[];\n rowData: T;\n cellData: unknown;\n rowIndex: number;\n columnIndex: number;\n cellRenderer: (props: CellRendererParams<T>) => React.ReactNode;\n // Sortable props\n sortableNodeRef?: (node: HTMLElement | null) => void;\n sortableStyle?: React.CSSProperties;\n sortableAttributes?: Record<string, unknown>;\n isDragging?: boolean;\n isDraggable?: boolean;\n frozen?: boolean;\n extraData?: unknown;\n};\n\nexport const VirtualTableCell = React.memo<VirtualTableCellProps<unknown>>(\n function VirtualTableCell<T>(props: VirtualTableCellProps<T>) {\n return props.rowData ? props.cellRenderer(\n {\n cellData: props.cellData,\n rowData: props.rowData,\n rowIndex: props.rowIndex,\n isScrolling: false,\n column: props.column,\n columns: props.columns,\n columnIndex: props.columnIndex,\n width: props.column.width,\n sortableNodeRef: props.sortableNodeRef,\n sortableStyle: props.sortableStyle,\n sortableAttributes: props.sortableAttributes,\n isDragging: props.isDragging,\n isDraggable: props.isDraggable,\n frozen: props.frozen,\n extraData: props.extraData\n } as CellRendererParams<T>\n ) : null;\n },\n (a, b) => {\n return equal(a.rowData, b.rowData) &&\n equal(a.column, b.column) &&\n equal(a.cellData, b.cellData) &&\n a.rowIndex === b.rowIndex &&\n a.columnIndex === b.columnIndex &&\n a.isDragging === b.isDragging &&\n a.isDraggable === b.isDraggable &&\n a.frozen === b.frozen &&\n equal(a.extraData, b.extraData)\n }\n);\n","\n\nimport React, { createContext, forwardRef, RefObject, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { deepEqual as equal } from \"fast-equals\"\n\nimport { FixedSizeList as List } from \"react-window\";\nimport useMeasure from \"react-use-measure\";\n\nimport { CircularProgress } from \"../CircularProgress\";\nimport {\n OnVirtualTableColumnResizeParams,\n VirtualTableColumn,\n VirtualTableFilterValues,\n VirtualTableProps,\n VirtualTableWhereFilterOp\n} from \"./VirtualTableProps\";\n\nimport { VirtualTableContextProps } from \"./types\";\nimport { VirtualTableHeaderRow } from \"./VirtualTableHeaderRow\";\nimport { VirtualTableRow } from \"./VirtualTableRow\";\nimport { VirtualTableCell } from \"./VirtualTableCell\";\nimport { CenteredView, cls, Typography } from \"../../index\";\nimport { useDebounceCallback } from \"../../hooks/useDebounceCallback\";\nimport {\n closestCenter,\n DndContext,\n DragEndEvent,\n DragStartEvent,\n PointerSensor,\n useSensor,\n useSensors\n} from \"@dnd-kit/core\";\nimport { arrayMove, horizontalListSortingStrategy, SortableContext, useSortable } from \"@dnd-kit/sortable\";\n\n\nconst VirtualListContext = createContext<VirtualTableContextProps<Record<string, unknown>>>(null! as VirtualTableContextProps<Record<string, unknown>>);\nVirtualListContext.displayName = \"VirtualListContext\";\n\ntype InnerElementProps = {\n children: React.ReactNode,\n style: React.CSSProperties\n};\n\n// eslint-disable-next-line react/display-name\nconst innerElementType = forwardRef<HTMLDivElement, InnerElementProps>(({\n children,\n ...rest\n}: InnerElementProps, ref) => {\n\n return (\n <VirtualListContext.Consumer>\n {(virtualTableProps) => {\n const customView = virtualTableProps.customView;\n const headerHeight = virtualTableProps.headerHeight ?? 48;\n return (\n <>\n <div\n id={\"virtual-table\"}\n style={{\n position: \"relative\",\n height: \"100%\",\n zIndex: 0\n }}>\n <div\n ref={ref}\n {...rest}\n style={{\n ...rest?.style,\n height: (typeof rest?.style?.height === \"number\" ? rest.style.height : parseFloat((rest?.style?.height as string) || \"0\")) + headerHeight,\n minHeight: \"100%\",\n position: \"relative\"\n }}>\n <div style={{ position: \"sticky\",\ntop: 0,\nzIndex: 20 }}>\n <VirtualTableHeaderRow {...virtualTableProps}/>\n </div>\n {!customView && children}\n </div>\n\n </div>\n\n {customView && <div style={{\n position: \"sticky\",\n top: virtualTableProps.headerHeight ?? 48,\n flexGrow: 1,\n height: `calc(100% - ${virtualTableProps.headerHeight ?? 48}px)`,\n marginTop: `calc(${(virtualTableProps.headerHeight ?? 48)}px - 100vh)`,\n left: 0\n }}>{customView}</div>}\n\n </>\n );\n }}\n </VirtualListContext.Consumer>\n );\n})\n ;\n\n/**\n * This is a Table component that allows displaying arbitrary data, not\n * necessarily related to entities or properties. It is the component\n * that powers the entity collections but has a generic API, so it\n * can be reused.\n *\n * @group Components\n */\nexport const VirtualTable = React.memo<VirtualTableProps<Record<string, unknown>>>(\n function VirtualTable<T extends Record<string, unknown>>({\n data,\n onResetPagination,\n onEndReached,\n endOffset = 600,\n rowHeight = 54,\n headerHeight = 48,\n columns: columnsProp,\n onRowClick,\n onColumnResize,\n onColumnResizeEnd,\n filter: filterInput,\n checkFilterCombination,\n onFilterUpdate,\n sortBy,\n error,\n emptyComponent,\n onSortByUpdate,\n onScroll: onScrollProp,\n loading,\n cellRenderer,\n hoverRow,\n createFilterField,\n rowClassName,\n style,\n className,\n endAdornment,\n AddColumnComponent,\n initialScroll = 0,\n onColumnsOrderChange,\n extraData\n }: VirtualTableProps<T>) {\n\n const sortByProperty: string | undefined = sortBy ? sortBy[0] : undefined;\n const currentSort: \"asc\" | \"desc\" | undefined = sortBy ? sortBy[1] : undefined;\n\n const [columns, setColumns] = useState(columnsProp);\n\n const tableRef = useRef<HTMLDivElement>(null);\n const endReachCallbackThreshold = useRef<number>(0);\n\n const debouncedScroll = useDebounceCallback(onScrollProp, 200);\n\n // Drag and drop state\n const [draggingColumnId, setDraggingColumnId] = useState<string | null>(null);\n\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n distance: 5\n }\n })\n );\n\n const handleDragStart = useCallback((event: DragStartEvent) => {\n setDraggingColumnId(event.active.id as string);\n }, []);\n\n const handleDragEnd = useCallback((event: DragEndEvent) => {\n const {\n active,\n over\n } = event;\n setDraggingColumnId(null);\n\n if (over && active.id !== over.id && onColumnsOrderChange) {\n const oldIndex = columns.findIndex((col) => col.key === active.id);\n const newIndex = columns.findIndex((col) => col.key === over.id);\n\n if (oldIndex !== -1 && newIndex !== -1) {\n const newColumns = arrayMove(columns, oldIndex, newIndex);\n setColumns(newColumns);\n onColumnsOrderChange(newColumns);\n }\n }\n }, [columns, onColumnsOrderChange]);\n\n const handleDragCancel = useCallback(() => {\n setDraggingColumnId(null);\n }, []);\n\n // Set initial scroll position\n useEffect(() => {\n if (tableRef.current && initialScroll) {\n const { scrollLeft } = tableRef.current;\n tableRef.current.scrollTo(scrollLeft, initialScroll);\n }\n }, [tableRef, initialScroll]);\n\n useEffect(() => {\n setColumns(columnsProp);\n }, [columnsProp]);\n\n // Removed redundant ResizeObserver to prevent performance issues and UI flickering.\n\n const [measureRef, bounds] = useMeasure({\n polyfill: ResizeObserver,\n scroll: true,\n // This is important for handling zooming in react-flow\n offsetSize: true\n });\n\n const onColumnResizeInternal = useCallback((params: OnVirtualTableColumnResizeParams) => {\n setColumns(prevColumns =>\n prevColumns.map((column) =>\n column.key === params.column.key ? params.column : column\n )\n );\n }, []);\n\n const onColumnResizeEndInternal = useCallback((params: OnVirtualTableColumnResizeParams) => {\n setColumns(columns.map((column) => column.key === params.column.key ? params.column : column));\n if (onColumnResize) {\n onColumnResize(params);\n }\n if (onColumnResizeEnd) {\n onColumnResizeEnd(params);\n }\n }, [columns, onColumnResize, onColumnResizeEnd]);\n\n // saving the current filter as a ref as a workaround for header closure\n const filterRef = useRef<VirtualTableFilterValues<string> | undefined>(undefined);\n\n useEffect(() => {\n filterRef.current = filterInput;\n }, [filterInput]);\n\n const scrollToTop = useCallback(() => {\n endReachCallbackThreshold.current = 0;\n if (tableRef.current) {\n tableRef.current.scrollTo(tableRef.current?.scrollLeft, 0);\n }\n }, []);\n\n const onColumnSort = useCallback((key: string) => {\n\n const isDesc = sortByProperty === key && currentSort === \"desc\";\n const isAsc = sortByProperty === key && currentSort === \"asc\";\n const newSort = isAsc ? \"desc\" : (isDesc ? undefined : \"asc\");\n const newSortProperty: string | undefined = isDesc ? undefined : key;\n\n const filter = filterRef.current;\n\n const newSortBy: [string, \"asc\" | \"desc\"] | undefined = newSort && newSortProperty ? [newSortProperty, newSort] : undefined;\n if (filter) {\n if (checkFilterCombination && !checkFilterCombination(filter, newSortBy)) {\n if (onFilterUpdate)\n onFilterUpdate(undefined);\n }\n }\n\n if (onResetPagination) {\n onResetPagination();\n }\n\n if (onSortByUpdate) {\n onSortByUpdate(newSortBy);\n }\n\n scrollToTop();\n }, [checkFilterCombination, currentSort, onFilterUpdate, onResetPagination, onSortByUpdate, scrollToTop, sortByProperty]);\n\n const maxScroll = Math.max((data?.length ?? 0) * rowHeight - bounds.height, 0);\n\n const onEndReachedInternal = useCallback((scrollOffset: number) => {\n if (onEndReached && (data?.length ?? 0) > 0 && scrollOffset > endReachCallbackThreshold.current + endOffset) {\n endReachCallbackThreshold.current = scrollOffset;\n onEndReached();\n }\n }, [data?.length, onEndReached]);\n\n const onScroll = useCallback(({\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested\n }: {\n scrollDirection: \"forward\" | \"backward\",\n scrollOffset: number,\n scrollUpdateWasRequested: boolean;\n }) => {\n if (onScrollProp) {\n debouncedScroll({\n scrollDirection,\n scrollOffset,\n scrollUpdateWasRequested\n })\n }\n if (!scrollUpdateWasRequested && (scrollOffset >= maxScroll - endOffset))\n onEndReachedInternal(scrollOffset);\n }, [maxScroll, onEndReachedInternal]);\n\n const onFilterUpdateInternal = useCallback((column: VirtualTableColumn, filterForProperty?: [VirtualTableWhereFilterOp, unknown]) => {\n\n endReachCallbackThreshold.current = 0;\n const filter = filterRef.current;\n let newFilterValue: VirtualTableFilterValues<string> = filter ? { ...filter } : {};\n\n if (!filterForProperty) {\n delete newFilterValue[column.key];\n } else {\n newFilterValue[column.key] = filterForProperty;\n }\n const newSortBy: [string, \"asc\" | \"desc\"] | undefined = sortByProperty && currentSort ? [sortByProperty, currentSort] : undefined;\n const isNewFilterCombinationValid = !checkFilterCombination || checkFilterCombination(newFilterValue, newSortBy);\n if (!isNewFilterCombinationValid) {\n newFilterValue = filterForProperty ? { [column.key]: filterForProperty } as VirtualTableFilterValues<Extract<keyof T, string>> : {};\n }\n\n if (onFilterUpdate) onFilterUpdate(newFilterValue);\n }, [checkFilterCombination, currentSort, onFilterUpdate, sortByProperty]);\n\n const empty = !loading && (data?.length ?? 0) === 0;\n const customView = (error && (data?.length ?? 0) === 0)\n ? <CenteredView maxWidth={\"2xl\"}\n className=\"flex flex-col gap-2\">\n\n <Typography variant={\"h6\"}>\n {\"Error\"}\n </Typography>\n\n {error?.message && <SafeLinkRenderer text={error.message}/>}\n\n </CenteredView>\n : (empty\n ? (loading\n ? <div className=\"flex items-center justify-center py-12 px-8\">\n <CircularProgress size=\"small\"/>\n </div>\n : <div\n className=\"flex flex-col overflow-auto items-center justify-center py-12 px-8\">\n {emptyComponent}\n </div>)\n : undefined);\n\n const virtualListController = useMemo(() => ({\n data,\n rowHeight: rowHeight,\n headerHeight: headerHeight,\n cellRenderer,\n columns,\n currentSort,\n onRowClick,\n customView,\n onColumnResize: onColumnResizeInternal,\n onColumnResizeEnd: onColumnResizeEndInternal,\n filter: filterRef.current,\n onColumnSort,\n onFilterUpdate: onFilterUpdateInternal,\n sortByProperty,\n hoverRow: hoverRow ?? false,\n createFilterField,\n rowClassName,\n endAdornment,\n AddColumnComponent,\n onColumnsOrderChange: onColumnsOrderChange ? (newColumns: VirtualTableColumn[]) => {\n setColumns(newColumns);\n onColumnsOrderChange(newColumns);\n } : undefined,\n draggingColumnId,\n extraData\n }), [data, rowHeight, cellRenderer, columns, currentSort, onRowClick, customView, onColumnResizeInternal, onColumnResizeEndInternal, filterInput, onColumnSort, onFilterUpdateInternal, sortByProperty, hoverRow, createFilterField, rowClassName, endAdornment, AddColumnComponent, onColumnsOrderChange, draggingColumnId, extraData]);\n\n // Get sortable column keys (excluding frozen columns)\n const sortableColumnKeys = columns\n .filter(col => !col.frozen)\n .map(col => col.key);\n\n const tableContent = (\n <div\n ref={measureRef}\n style={style}\n className={cls(\n \"h-full w-full\",\n className,\n draggingColumnId && \"overflow-hidden\"\n )}>\n {/* SAFETY: T extends Record<string, any> is structurally assignable to Record<string, unknown> */}\n <VirtualListContext.Provider\n value={virtualListController as VirtualTableContextProps<Record<string, unknown>>}>\n\n <MemoizedList\n outerRef={tableRef}\n key={rowHeight}\n width={bounds.width}\n height={bounds.height}\n itemCount={(data?.length ?? 0) + (endAdornment ? 1 : 0)}\n onScroll={draggingColumnId ? undefined : onScroll}\n includeAddColumn={Boolean(AddColumnComponent)}\n itemSize={rowHeight}/>\n\n </VirtualListContext.Provider>\n </div>\n );\n\n // Wrap with DndContext if column reorder is enabled\n if (onColumnsOrderChange) {\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onDragCancel={handleDragCancel}\n >\n <SortableContext\n items={sortableColumnKeys}\n strategy={horizontalListSortingStrategy}\n >\n {tableContent}\n </SortableContext>\n </DndContext>\n );\n }\n\n return tableContent;\n },\n equal\n);\n// Wrapper that applies sortable transforms to cells\nconst SortableCellWrapper = ({\n columnKey,\n width,\n isDragging,\n isDraggable,\n frozen,\n children\n}: {\n columnKey: string;\n width: number;\n isDragging: boolean;\n isDraggable: boolean;\n frozen?: boolean;\n children: React.ReactNode;\n}) => {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition\n } = useSortable({\n id: columnKey,\n disabled: !isDraggable || frozen\n });\n\n // Remove tabIndex from attributes to avoid capturing focus before cell content\n const { tabIndex: _tabIndex, ...attrsWithoutTabIndex } = attributes;\n\n const style = {\n // Only use translate, ignore any scale transforms\n transform: transform ? `translateX(${transform.x}px)` : undefined,\n // Don't transition the dragged item - only other items should animate\n transition: isDragging ? undefined : transition,\n minWidth: width,\n maxWidth: width,\n width: width\n };\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n className={cls(\n \"flex-shrink-0\",\n frozen && \"sticky left-0 z-10 bg-white dark:bg-surface-900\"\n )}\n {...attrsWithoutTabIndex}\n >\n {children}\n </div>\n );\n};\n\nfunction MemoizedList({\n outerRef,\n width,\n height,\n itemCount,\n onScroll,\n itemSize,\n includeAddColumn\n}: {\n outerRef: RefObject<HTMLDivElement | null>;\n width: number;\n height: number;\n itemCount: number;\n onScroll?: (params: {\n scrollDirection: \"forward\" | \"backward\",\n scrollOffset: number,\n scrollUpdateWasRequested: boolean;\n }) => void;\n itemSize: number;\n includeAddColumn?: boolean;\n}) {\n\n const Row = useCallback(({\n index,\n style\n }: { index: number; style: React.CSSProperties }) => {\n return <VirtualListContext.Consumer>\n {({\n onRowClick,\n data,\n columns,\n rowHeight = 54,\n headerHeight = 48,\n cellRenderer,\n hoverRow,\n rowClassName,\n endAdornment,\n draggingColumnId,\n onColumnsOrderChange,\n extraData\n }) => {\n\n if (endAdornment && index === (data ?? []).length) {\n return <div style={{\n ...style,\n height: \"auto\",\n position: \"sticky\",\n bottom: 0,\n zIndex: 1\n }}>\n {endAdornment}\n </div>;\n }\n\n const rowData = (data ? data[index] : undefined) as Record<string, unknown>;\n return (\n <VirtualTableRow\n key={`row_${index}`}\n rowData={rowData}\n rowIndex={index}\n onRowClick={onRowClick}\n columns={columns}\n hoverRow={hoverRow}\n rowClassName={rowClassName}\n style={{\n ...style,\n top: `calc(${style.top}px + ${headerHeight ?? 48}px)`\n }}\n rowHeight={rowHeight}>\n\n {columns.map((column: VirtualTableColumn, columnIndex: number) => {\n const cellData = rowData && rowData[column.key];\n const isDragging = draggingColumnId === column.key;\n const isDraggable = !column.frozen && !!onColumnsOrderChange;\n\n return onColumnsOrderChange ? (\n <SortableCellWrapper\n key={`cell_wrapper_${column.key}`}\n columnKey={column.key}\n width={column.width}\n isDragging={isDragging}\n isDraggable={isDraggable}\n frozen={column.frozen}\n >\n <VirtualTableCell\n dataKey={column.key}\n // @ts-expect-error -- React.memo<VirtualTableProps<any>> erases the generic T, so cellRenderer's parameter type widens to `any` losing structural compatibility with VirtualTableCell<T>. The types are structurally correct at runtime.\n cellRenderer={cellRenderer}\n column={column}\n columns={columns}\n rowData={rowData}\n cellData={cellData}\n rowIndex={index}\n columnIndex={columnIndex}\n extraData={extraData}/>\n </SortableCellWrapper>\n ) : (\n <div\n key={`cell_wrapper_${column.key}`}\n className={cls(\n \"flex-shrink-0 relative\",\n column.frozen && \"sticky left-0 z-10 bg-white dark:bg-surface-900\"\n )}\n style={{\n minWidth: column.width,\n maxWidth: column.width,\n width: column.width\n }}\n >\n <VirtualTableCell\n dataKey={column.key}\n // @ts-expect-error -- React.memo<VirtualTableProps<any>> erases the generic T, so cellRenderer's parameter type widens to `any` losing structural compatibility with VirtualTableCell<T>. The types are structurally correct at runtime.\n cellRenderer={cellRenderer}\n column={column}\n columns={columns}\n rowData={rowData}\n cellData={cellData}\n rowIndex={index}\n columnIndex={columnIndex}\n extraData={extraData}/>\n </div>\n );\n })}\n\n {includeAddColumn && <div className={\"w-20\"}/>}\n\n </VirtualTableRow>\n );\n }}\n </VirtualListContext.Consumer>;\n }, []);\n\n return <List\n outerRef={outerRef}\n innerElementType={innerElementType}\n width={width}\n height={height}\n overscanCount={4}\n itemCount={itemCount}\n onScroll={onScroll}\n itemSize={itemSize}>\n {Row}\n </List>;\n}\n\nconst SafeLinkRenderer: React.FC<{\n text: string;\n}> = ({ text }) => {\n const urlRegex = /https?:\\/\\/[^\\s]+/g;\n const urls = text.match(urlRegex) || [];\n const parts = text.split(urlRegex);\n\n return (\n <div className={\"break-all\"}>\n {parts.map((part, i) => (\n <React.Fragment key={i}>\n {part}\n {urls[i] && (\n <>\n <a href={urls[i]} className=\"underline\" target=\"_blank\" rel=\"noopener noreferrer\">Link</a>\n <br/>\n </>\n )}\n </React.Fragment>\n ))}\n </div>\n );\n};\n","export const iconKeys = [\n \"AArrowDown\",\n \"AArrowUp\",\n \"ALargeSmall\",\n \"Accessibility\",\n \"Activity\",\n \"ActivitySquare\",\n \"AirVent\",\n \"Airplay\",\n \"AlarmCheck\",\n \"AlarmClock\",\n \"AlarmClockCheck\",\n \"AlarmClockMinus\",\n \"AlarmClockOff\",\n \"AlarmClockPlus\",\n \"AlarmMinus\",\n \"AlarmPlus\",\n \"AlarmSmoke\",\n \"Album\",\n \"AlertCircle\",\n \"AlertOctagon\",\n \"AlertTriangle\",\n \"AlignCenter\",\n \"AlignCenterHorizontal\",\n \"AlignCenterVertical\",\n \"AlignEndHorizontal\",\n \"AlignEndVertical\",\n \"AlignHorizontalDistributeCenter\",\n \"AlignHorizontalDistributeEnd\",\n \"AlignHorizontalDistributeStart\",\n \"AlignHorizontalJustifyCenter\",\n \"AlignHorizontalJustifyEnd\",\n \"AlignHorizontalJustifyStart\",\n \"AlignHorizontalSpaceAround\",\n \"AlignHorizontalSpaceBetween\",\n \"AlignJustify\",\n \"AlignLeft\",\n \"AlignRight\",\n \"AlignStartHorizontal\",\n \"AlignStartVertical\",\n \"AlignVerticalDistributeCenter\",\n \"AlignVerticalDistributeEnd\",\n \"AlignVerticalDistributeStart\",\n \"AlignVerticalJustifyCenter\",\n \"AlignVerticalJustifyEnd\",\n \"AlignVerticalJustifyStart\",\n \"AlignVerticalSpaceAround\",\n \"AlignVerticalSpaceBetween\",\n \"Ambulance\",\n \"Ampersand\",\n \"Ampersands\",\n \"Amphora\",\n \"Anchor\",\n \"Angry\",\n \"Annoyed\",\n \"Antenna\",\n \"Anvil\",\n \"Aperture\",\n \"AppWindow\",\n \"AppWindowMac\",\n \"Apple\",\n \"Archive\",\n \"ArchiveRestore\",\n \"ArchiveX\",\n \"AreaChart\",\n \"Armchair\",\n \"ArrowBigDown\",\n \"ArrowBigDownDash\",\n \"ArrowBigLeft\",\n \"ArrowBigLeftDash\",\n \"ArrowBigRight\",\n \"ArrowBigRightDash\",\n \"ArrowBigUp\",\n \"ArrowBigUpDash\",\n \"ArrowDown\",\n \"ArrowDown01\",\n \"ArrowDown10\",\n \"ArrowDownAZ\",\n \"ArrowDownCircle\",\n \"ArrowDownFromLine\",\n \"ArrowDownLeft\",\n \"ArrowDownLeftFromCircle\",\n \"ArrowDownLeftFromSquare\",\n \"ArrowDownLeftSquare\",\n \"ArrowDownNarrowWide\",\n \"ArrowDownRight\",\n \"ArrowDownRightFromCircle\",\n \"ArrowDownRightFromSquare\",\n \"ArrowDownRightSquare\",\n \"ArrowDownSquare\",\n \"ArrowDownToDot\",\n \"ArrowDownToLine\",\n \"ArrowDownUp\",\n \"ArrowDownWideNarrow\",\n \"ArrowDownZA\",\n \"ArrowLeft\",\n \"ArrowLeftCircle\",\n \"ArrowLeftFromLine\",\n \"ArrowLeftRight\",\n \"ArrowLeftSquare\",\n \"ArrowLeftToLine\",\n \"ArrowRight\",\n \"ArrowRightCircle\",\n \"ArrowRightFromLine\",\n \"ArrowRightLeft\",\n \"ArrowRightSquare\",\n \"ArrowRightToLine\",\n \"ArrowUp\",\n \"ArrowUp01\",\n \"ArrowUp10\",\n \"ArrowUpAZ\",\n \"ArrowUpCircle\",\n \"ArrowUpDown\",\n \"ArrowUpFromDot\",\n \"ArrowUpFromLine\",\n \"ArrowUpLeft\",\n \"ArrowUpLeftFromCircle\",\n \"ArrowUpLeftFromSquare\",\n \"ArrowUpLeftSquare\",\n \"ArrowUpNarrowWide\",\n \"ArrowUpRight\",\n \"ArrowUpRightFromCircle\",\n \"ArrowUpRightFromSquare\",\n \"ArrowUpRightSquare\",\n \"ArrowUpSquare\",\n \"ArrowUpToLine\",\n \"ArrowUpWideNarrow\",\n \"ArrowUpZA\",\n \"ArrowsUpFromLine\",\n \"Asterisk\",\n \"AsteriskSquare\",\n \"Astroid\",\n \"AtSign\",\n \"Atom\",\n \"AudioLines\",\n \"AudioWaveform\",\n \"Award\",\n \"Axe\",\n \"Axis3D\",\n \"Baby\",\n \"Backpack\",\n \"Badge\",\n \"BadgeAlert\",\n \"BadgeCent\",\n \"BadgeCheck\",\n \"BadgeDollarSign\",\n \"BadgeEuro\",\n \"BadgeHelp\",\n \"BadgeIndianRupee\",\n \"BadgeInfo\",\n \"BadgeJapaneseYen\",\n \"BadgeMinus\",\n \"BadgePercent\",\n \"BadgePlus\",\n \"BadgePoundSterling\",\n \"BadgeQuestionMark\",\n \"BadgeRussianRuble\",\n \"BadgeSwissFranc\",\n \"BadgeTurkishLira\",\n \"BadgeX\",\n \"BaggageClaim\",\n \"Balloon\",\n \"Ban\",\n \"Banana\",\n \"Bandage\",\n \"Banknote\",\n \"BanknoteArrowDown\",\n \"BanknoteArrowUp\",\n \"BanknoteX\",\n \"BarChart\",\n \"BarChart2\",\n \"BarChart3\",\n \"BarChart4\",\n \"BarChartBig\",\n \"BarChartHorizontal\",\n \"BarChartHorizontalBig\",\n \"Barcode\",\n \"Barrel\",\n \"Baseline\",\n \"Bath\",\n \"Battery\",\n \"BatteryCharging\",\n \"BatteryFull\",\n \"BatteryLow\",\n \"BatteryMedium\",\n \"BatteryPlus\",\n \"BatteryWarning\",\n \"Beaker\",\n \"Bean\",\n \"BeanOff\",\n \"Bed\",\n \"BedDouble\",\n \"BedSingle\",\n \"Beef\",\n \"BeefOff\",\n \"Beer\",\n \"BeerOff\",\n \"Bell\",\n \"BellCheck\",\n \"BellDot\",\n \"BellElectric\",\n \"BellMinus\",\n \"BellOff\",\n \"BellPlus\",\n \"BellRing\",\n \"BetweenHorizonalEnd\",\n \"BetweenHorizonalStart\",\n \"BetweenHorizontalEnd\",\n \"BetweenHorizontalStart\",\n \"BetweenVerticalEnd\",\n \"BetweenVerticalStart\",\n \"BicepsFlexed\",\n \"Bike\",\n \"Binary\",\n \"Binoculars\",\n \"Biohazard\",\n \"Bird\",\n \"Birdhouse\",\n \"Bitcoin\",\n \"Blend\",\n \"Blinds\",\n \"Blocks\",\n \"Bluetooth\",\n \"BluetoothConnected\",\n \"BluetoothOff\",\n \"BluetoothSearching\",\n \"Bold\",\n \"Bolt\",\n \"Bomb\",\n \"Bone\",\n \"Book\",\n \"BookA\",\n \"BookAlert\",\n \"BookAudio\",\n \"BookCheck\",\n \"BookCopy\",\n \"BookDashed\",\n \"BookDown\",\n \"BookHeadphones\",\n \"BookHeart\",\n \"BookImage\",\n \"BookKey\",\n \"BookLock\",\n \"BookMarked\",\n \"BookMinus\",\n \"BookOpen\",\n \"BookOpenCheck\",\n \"BookOpenText\",\n \"BookPlus\",\n \"BookSearch\",\n \"BookTemplate\",\n \"BookText\",\n \"BookType\",\n \"BookUp\",\n \"BookUp2\",\n \"BookUser\",\n \"BookX\",\n \"Bookmark\",\n \"BookmarkCheck\",\n \"BookmarkMinus\",\n \"BookmarkOff\",\n \"BookmarkPlus\",\n \"BookmarkX\",\n \"BoomBox\",\n \"Bot\",\n \"BotMessageSquare\",\n \"BotOff\",\n \"BottleWine\",\n \"BowArrow\",\n \"Box\",\n \"BoxSelect\",\n \"Boxes\",\n \"Braces\",\n \"Brackets\",\n \"Brain\",\n \"BrainCircuit\",\n \"BrainCog\",\n \"BrickWall\",\n \"BrickWallFire\",\n \"BrickWallShield\",\n \"Briefcase\",\n \"BriefcaseBusiness\",\n \"BriefcaseConveyorBelt\",\n \"BriefcaseMedical\",\n \"BringToFront\",\n \"Brush\",\n \"BrushCleaning\",\n \"Bubbles\",\n \"Bug\",\n \"BugOff\",\n \"BugPlay\",\n \"Building\",\n \"Building2\",\n \"Bus\",\n \"BusFront\",\n \"Cable\",\n \"CableCar\",\n \"Cake\",\n \"CakeSlice\",\n \"Calculator\",\n \"Calendar\",\n \"Calendar1\",\n \"CalendarArrowDown\",\n \"CalendarArrowUp\",\n \"CalendarCheck\",\n \"CalendarCheck2\",\n \"CalendarClock\",\n \"CalendarCog\",\n \"CalendarDays\",\n \"CalendarFold\",\n \"CalendarHeart\",\n \"CalendarMinus\",\n \"CalendarMinus2\",\n \"CalendarOff\",\n \"CalendarPlus\",\n \"CalendarPlus2\",\n \"CalendarRange\",\n \"CalendarSearch\",\n \"CalendarSync\",\n \"CalendarX\",\n \"CalendarX2\",\n \"Calendars\",\n \"Camera\",\n \"CameraOff\",\n \"CandlestickChart\",\n \"Candy\",\n \"CandyCane\",\n \"CandyOff\",\n \"Cannabis\",\n \"CannabisOff\",\n \"Captions\",\n \"CaptionsOff\",\n \"Car\",\n \"CarFront\",\n \"CarTaxiFront\",\n \"Caravan\",\n \"CardSim\",\n \"Carrot\",\n \"CaseLower\",\n \"CaseSensitive\",\n \"CaseUpper\",\n \"CassetteTape\",\n \"Cast\",\n \"Castle\",\n \"Cat\",\n \"Cctv\",\n \"CctvOff\",\n \"ChartArea\",\n \"ChartBar\",\n \"ChartBarBig\",\n \"ChartBarDecreasing\",\n \"ChartBarIncreasing\",\n \"ChartBarStacked\",\n \"ChartCandlestick\",\n \"ChartColumn\",\n \"ChartColumnBig\",\n \"ChartColumnDecreasing\",\n \"ChartColumnIncreasing\",\n \"ChartColumnStacked\",\n \"ChartGantt\",\n \"ChartLine\",\n \"ChartNetwork\",\n \"ChartNoAxesColumn\",\n \"ChartNoAxesColumnDecreasing\",\n \"ChartNoAxesColumnIncreasing\",\n \"ChartNoAxesCombined\",\n \"ChartNoAxesGantt\",\n \"ChartPie\",\n \"ChartScatter\",\n \"ChartSpline\",\n \"Check\",\n \"CheckCheck\",\n \"CheckCircle\",\n \"CheckCircle2\",\n \"CheckLine\",\n \"CheckSquare\",\n \"CheckSquare2\",\n \"ChefHat\",\n \"Cherry\",\n \"ChessBishop\",\n \"ChessKing\",\n \"ChessKnight\",\n \"ChessPawn\",\n \"ChessQueen\",\n \"ChessRook\",\n \"ChevronDown\",\n \"ChevronDownCircle\",\n \"ChevronDownSquare\",\n \"ChevronFirst\",\n \"ChevronLast\",\n \"ChevronLeft\",\n \"ChevronLeftCircle\",\n \"ChevronLeftSquare\",\n \"ChevronRight\",\n \"ChevronRightCircle\",\n \"ChevronRightSquare\",\n \"ChevronUp\",\n \"ChevronUpCircle\",\n \"ChevronUpSquare\",\n \"ChevronsDown\",\n \"ChevronsDownUp\",\n \"ChevronsLeft\",\n \"ChevronsLeftRight\",\n \"ChevronsLeftRightEllipsis\",\n \"ChevronsRight\",\n \"ChevronsRightLeft\",\n \"ChevronsUp\",\n \"ChevronsUpDown\",\n \"Church\",\n \"Cigarette\",\n \"CigaretteOff\",\n \"Circle\",\n \"CircleAlert\",\n \"CircleArrowDown\",\n \"CircleArrowLeft\",\n \"CircleArrowOutDownLeft\",\n \"CircleArrowOutDownRight\",\n \"CircleArrowOutUpLeft\",\n \"CircleArrowOutUpRight\",\n \"CircleArrowRight\",\n \"CircleArrowUp\",\n \"CircleCheck\",\n \"CircleCheckBig\",\n \"CircleChevronDown\",\n \"CircleChevronLeft\",\n \"CircleChevronRight\",\n \"CircleChevronUp\",\n \"CircleDashed\",\n \"CircleDivide\",\n \"CircleDollarSign\",\n \"CircleDot\",\n \"CircleDotDashed\",\n \"CircleEllipsis\",\n \"CircleEqual\",\n \"CircleFadingArrowUp\",\n \"CircleFadingPlus\",\n \"CircleGauge\",\n \"CircleHelp\",\n \"CircleMinus\",\n \"CircleOff\",\n \"CircleParking\",\n \"CircleParkingOff\",\n \"CirclePause\",\n \"CirclePercent\",\n \"CirclePile\",\n \"CirclePlay\",\n \"CirclePlus\",\n \"CirclePoundSterling\",\n \"CirclePower\",\n \"CircleQuestionMark\",\n \"CircleSlash\",\n \"CircleSlash2\",\n \"CircleSlashed\",\n \"CircleSmall\",\n \"CircleStar\",\n \"CircleStop\",\n \"CircleUser\",\n \"CircleUserRound\",\n \"CircleX\",\n \"CircuitBoard\",\n \"Citrus\",\n \"Clapperboard\",\n \"Clipboard\",\n \"ClipboardCheck\",\n \"ClipboardClock\",\n \"ClipboardCopy\",\n \"ClipboardEdit\",\n \"ClipboardList\",\n \"ClipboardMinus\",\n \"ClipboardPaste\",\n \"ClipboardPen\",\n \"ClipboardPenLine\",\n \"ClipboardPlus\",\n \"ClipboardSignature\",\n \"ClipboardType\",\n \"ClipboardX\",\n \"Clock\",\n \"Clock1\",\n \"Clock10\",\n \"Clock11\",\n \"Clock12\",\n \"Clock2\",\n \"Clock3\",\n \"Clock4\",\n \"Clock5\",\n \"Clock6\",\n \"Clock7\",\n \"Clock8\",\n \"Clock9\",\n \"ClockAlert\",\n \"ClockArrowDown\",\n \"ClockArrowUp\",\n \"ClockCheck\",\n \"ClockFading\",\n \"ClockPlus\",\n \"ClosedCaption\",\n \"Cloud\",\n \"CloudAlert\",\n \"CloudBackup\",\n \"CloudCheck\",\n \"CloudCog\",\n \"CloudDownload\",\n \"CloudDrizzle\",\n \"CloudFog\",\n \"CloudHail\",\n \"CloudLightning\",\n \"CloudMoon\",\n \"CloudMoonRain\",\n \"CloudOff\",\n \"CloudRain\",\n \"CloudRainWind\",\n \"CloudSnow\",\n \"CloudSun\",\n \"CloudSunRain\",\n \"CloudSync\",\n \"CloudUpload\",\n \"Cloudy\",\n \"Clover\",\n \"Club\",\n \"Code\",\n \"Code2\",\n \"CodeSquare\",\n \"CodeXml\",\n \"Coffee\",\n \"Cog\",\n \"Coins\",\n \"Columns\",\n \"Columns2\",\n \"Columns3\",\n \"Columns3Cog\",\n \"Columns4\",\n \"ColumnsSettings\",\n \"Combine\",\n \"Command\",\n \"Compass\",\n \"Component\",\n \"Computer\",\n \"ConciergeBell\",\n \"Cone\",\n \"Construction\",\n \"Contact\",\n \"Contact2\",\n \"ContactRound\",\n \"Container\",\n \"Contrast\",\n \"Cookie\",\n \"CookingPot\",\n \"Copy\",\n \"CopyCheck\",\n \"CopyMinus\",\n \"CopyPlus\",\n \"CopySlash\",\n \"CopyX\",\n \"Copyleft\",\n \"Copyright\",\n \"CornerDownLeft\",\n \"CornerDownRight\",\n \"CornerLeftDown\",\n \"CornerLeftUp\",\n \"CornerRightDown\",\n \"CornerRightUp\",\n \"CornerUpLeft\",\n \"CornerUpRight\",\n \"Cpu\",\n \"CreativeCommons\",\n \"CreditCard\",\n \"Croissant\",\n \"Crop\",\n \"Cross\",\n \"Crosshair\",\n \"Crown\",\n \"Cuboid\",\n \"CupSoda\",\n \"CurlyBraces\",\n \"Currency\",\n \"Cylinder\",\n \"Dam\",\n \"Database\",\n \"DatabaseBackup\",\n \"DatabaseSearch\",\n \"DatabaseZap\",\n \"DecimalsArrowLeft\",\n \"DecimalsArrowRight\",\n \"Delete\",\n \"Dessert\",\n \"Diameter\",\n \"Diamond\",\n \"DiamondMinus\",\n \"DiamondPercent\",\n \"DiamondPlus\",\n \"Dice1\",\n \"Dice2\",\n \"Dice3\",\n \"Dice4\",\n \"Dice5\",\n \"Dice6\",\n \"Dices\",\n \"Diff\",\n \"Disc\",\n \"Disc2\",\n \"Disc3\",\n \"DiscAlbum\",\n \"Divide\",\n \"DivideCircle\",\n \"DivideSquare\",\n \"Dna\",\n \"DnaOff\",\n \"Dock\",\n \"Dog\",\n \"DollarSign\",\n \"Donut\",\n \"DoorClosed\",\n \"DoorClosedLocked\",\n \"DoorOpen\",\n \"Dot\",\n \"DotSquare\",\n \"Download\",\n \"DownloadCloud\",\n \"DraftingCompass\",\n \"Drama\",\n \"Drill\",\n \"Drone\",\n \"Droplet\",\n \"DropletOff\",\n \"Droplets\",\n \"Drum\",\n \"Drumstick\",\n \"Dumbbell\",\n \"Ear\",\n \"EarOff\",\n \"Earth\",\n \"EarthLock\",\n \"Eclipse\",\n \"Edit\",\n \"Edit2\",\n \"Edit3\",\n \"Egg\",\n \"EggFried\",\n \"EggOff\",\n \"Ellipse\",\n \"Ellipsis\",\n \"EllipsisVertical\",\n \"Equal\",\n \"EqualApproximately\",\n \"EqualNot\",\n \"EqualSquare\",\n \"Eraser\",\n \"EthernetPort\",\n \"Euro\",\n \"EvCharger\",\n \"Expand\",\n \"ExternalLink\",\n \"Eye\",\n \"EyeClosed\",\n \"EyeOff\",\n \"Factory\",\n \"Fan\",\n \"FastForward\",\n \"Feather\",\n \"Fence\",\n \"FerrisWheel\",\n \"File\",\n \"FileArchive\",\n \"FileAudio\",\n \"FileAudio2\",\n \"FileAxis3D\",\n \"FileBadge\",\n \"FileBadge2\",\n \"FileBarChart\",\n \"FileBarChart2\",\n \"FileBox\",\n \"FileBraces\",\n \"FileBracesCorner\",\n \"FileChartColumn\",\n \"FileChartColumnIncreasing\",\n \"FileChartLine\",\n \"FileChartPie\",\n \"FileCheck\",\n \"FileCheck2\",\n \"FileCheckCorner\",\n \"FileClock\",\n \"FileCode\",\n \"FileCode2\",\n \"FileCodeCorner\",\n \"FileCog\",\n \"FileCog2\",\n \"FileDiff\",\n \"FileDigit\",\n \"FileDown\",\n \"FileEdit\",\n \"FileExclamationPoint\",\n \"FileHeadphone\",\n \"FileHeart\",\n \"FileImage\",\n \"FileInput\",\n \"FileJson\",\n \"FileJson2\",\n \"FileKey\",\n \"FileKey2\",\n \"FileLineChart\",\n \"FileLock\",\n \"FileLock2\",\n \"FileMinus\",\n \"FileMinus2\",\n \"FileMinusCorner\",\n \"FileMusic\",\n \"FileOutput\",\n \"FilePen\",\n \"FilePenLine\",\n \"FilePieChart\",\n \"FilePlay\",\n \"FilePlus\",\n \"FilePlus2\",\n \"FilePlusCorner\",\n \"FileQuestion\",\n \"FileQuestionMark\",\n \"FileScan\",\n \"FileSearch\",\n \"FileSearch2\",\n \"FileSearchCorner\",\n \"FileSignal\",\n \"FileSignature\",\n \"FileSliders\",\n \"FileSpreadsheet\",\n \"FileStack\",\n \"FileSymlink\",\n \"FileTerminal\",\n \"FileText\",\n \"FileType\",\n \"FileType2\",\n \"FileTypeCorner\",\n \"FileUp\",\n \"FileUser\",\n \"FileVideo\",\n \"FileVideo2\",\n \"FileVideoCamera\",\n \"FileVolume\",\n \"FileVolume2\",\n \"FileWarning\",\n \"FileX\",\n \"FileX2\",\n \"FileXCorner\",\n \"Files\",\n \"Film\",\n \"Filter\",\n \"FilterX\",\n \"Fingerprint\",\n \"FingerprintPattern\",\n \"FireExtinguisher\",\n \"Fish\",\n \"FishOff\",\n \"FishSymbol\",\n \"FishingHook\",\n \"FishingRod\",\n \"Flag\",\n \"FlagOff\",\n \"FlagTriangleLeft\",\n \"FlagTriangleRight\",\n \"Flame\",\n \"FlameKindling\",\n \"Flashlight\",\n \"FlashlightOff\",\n \"FlaskConical\",\n \"FlaskConicalOff\",\n \"FlaskRound\",\n \"FlipHorizontal\",\n \"FlipHorizontal2\",\n \"FlipVertical\",\n \"FlipVertical2\",\n \"Flower\",\n \"Flower2\",\n \"Focus\",\n \"FoldHorizontal\",\n \"FoldVertical\",\n \"Folder\",\n \"FolderArchive\",\n \"FolderBookmark\",\n \"FolderCheck\",\n \"FolderClock\",\n \"FolderClosed\",\n \"FolderCode\",\n \"FolderCog\",\n \"FolderCog2\",\n \"FolderDot\",\n \"FolderDown\",\n \"FolderEdit\",\n \"FolderGit\",\n \"FolderGit2\",\n \"FolderHeart\",\n \"FolderInput\",\n \"FolderKanban\",\n \"FolderKey\",\n \"FolderLock\",\n \"FolderMinus\",\n \"FolderOpen\",\n \"FolderOpenDot\",\n \"FolderOutput\",\n \"FolderPen\",\n \"FolderPlus\",\n \"FolderRoot\",\n \"FolderSearch\",\n \"FolderSearch2\",\n \"FolderSymlink\",\n \"FolderSync\",\n \"FolderTree\",\n \"FolderUp\",\n \"FolderX\",\n \"Folders\",\n \"Footprints\",\n \"ForkKnife\",\n \"ForkKnifeCrossed\",\n \"Forklift\",\n \"Form\",\n \"FormInput\",\n \"Forward\",\n \"Frame\",\n \"Frown\",\n \"Fuel\",\n \"Fullscreen\",\n \"FunctionSquare\",\n \"Funnel\",\n \"FunnelPlus\",\n \"FunnelX\",\n \"GalleryHorizontal\",\n \"GalleryHorizontalEnd\",\n \"GalleryThumbnails\",\n \"GalleryVertical\",\n \"GalleryVerticalEnd\",\n \"Gamepad\",\n \"Gamepad2\",\n \"GamepadDirectional\",\n \"GanttChart\",\n \"GanttChartSquare\",\n \"Gauge\",\n \"GaugeCircle\",\n \"Gavel\",\n \"Gem\",\n \"GeorgianLari\",\n \"Ghost\",\n \"Gift\",\n \"GitBranch\",\n \"GitBranchMinus\",\n \"GitBranchPlus\",\n \"GitCommit\",\n \"GitCommitHorizontal\",\n \"GitCommitVertical\",\n \"GitCompare\",\n \"GitCompareArrows\",\n \"GitFork\",\n \"GitGraph\",\n \"GitMerge\",\n \"GitMergeConflict\",\n \"GitPullRequest\",\n \"GitPullRequestArrow\",\n \"GitPullRequestClosed\",\n \"GitPullRequestCreate\",\n \"GitPullRequestCreateArrow\",\n \"GitPullRequestDraft\",\n \"GlassWater\",\n \"Glasses\",\n \"Globe\",\n \"Globe2\",\n \"GlobeLock\",\n \"GlobeOff\",\n \"GlobeX\",\n \"Goal\",\n \"Gpu\",\n \"Grab\",\n \"GraduationCap\",\n \"Grape\",\n \"Grid\",\n \"Grid2X2\",\n \"Grid2X2Check\",\n \"Grid2X2Plus\",\n \"Grid2X2X\",\n \"Grid3X3\",\n \"Grid3x2\",\n \"Grip\",\n \"GripHorizontal\",\n \"GripVertical\",\n \"Group\",\n \"Guitar\",\n \"Ham\",\n \"Hamburger\",\n \"Hammer\",\n \"Hand\",\n \"HandCoins\",\n \"HandFist\",\n \"HandGrab\",\n \"HandHeart\",\n \"HandHelping\",\n \"HandMetal\",\n \"HandPlatter\",\n \"Handbag\",\n \"Handshake\",\n \"HardDrive\",\n \"HardDriveDownload\",\n \"HardDriveUpload\",\n \"HardHat\",\n \"Hash\",\n \"HatGlasses\",\n \"Haze\",\n \"Hd\",\n \"HdmiPort\",\n \"Heading\",\n \"Heading1\",\n \"Heading2\",\n \"Heading3\",\n \"Heading4\",\n \"Heading5\",\n \"Heading6\",\n \"HeadphoneOff\",\n \"Headphones\",\n \"Headset\",\n \"Heart\",\n \"HeartCrack\",\n \"HeartHandshake\",\n \"HeartMinus\",\n \"HeartOff\",\n \"HeartPlus\",\n \"HeartPulse\",\n \"HeartX\",\n \"Heater\",\n \"Helicopter\",\n \"HelpCircle\",\n \"HelpingHand\",\n \"Hexagon\",\n \"Highlighter\",\n \"History\",\n \"Home\",\n \"Hop\",\n \"HopOff\",\n \"Hospital\",\n \"Hotel\",\n \"Hourglass\",\n \"House\",\n \"HouseHeart\",\n \"HousePlug\",\n \"HousePlus\",\n \"HouseWifi\",\n \"IceCream\",\n \"IceCream2\",\n \"IceCreamBowl\",\n \"IceCreamCone\",\n \"IdCard\",\n \"IdCardLanyard\",\n \"Image\",\n \"ImageDown\",\n \"ImageMinus\",\n \"ImageOff\",\n \"ImagePlay\",\n \"ImagePlus\",\n \"ImageUp\",\n \"ImageUpscale\",\n \"Images\",\n \"Import\",\n \"Inbox\",\n \"Indent\",\n \"IndentDecrease\",\n \"IndentIncrease\",\n \"IndianRupee\",\n \"Infinity\",\n \"Info\",\n \"Inspect\",\n \"InspectionPanel\",\n \"Italic\",\n \"IterationCcw\",\n \"IterationCw\",\n \"JapaneseYen\",\n \"Joystick\",\n \"Kanban\",\n \"KanbanSquare\",\n \"KanbanSquareDashed\",\n \"Kayak\",\n \"Key\",\n \"KeyRound\",\n \"KeySquare\",\n \"Keyboard\",\n \"KeyboardMusic\",\n \"KeyboardOff\",\n \"Lamp\",\n \"LampCeiling\",\n \"LampDesk\",\n \"LampFloor\",\n \"LampWallDown\",\n \"LampWallUp\",\n \"LandPlot\",\n \"Landmark\",\n \"Languages\",\n \"Laptop\",\n \"Laptop2\",\n \"LaptopMinimal\",\n \"LaptopMinimalCheck\",\n \"Lasso\",\n \"LassoSelect\",\n \"Laugh\",\n \"Layers\",\n \"Layers2\",\n \"Layers3\",\n \"LayersMinus\",\n \"LayersPlus\",\n \"Layout\",\n \"LayoutDashboard\",\n \"LayoutGrid\",\n \"LayoutList\",\n \"LayoutPanelLeft\",\n \"LayoutPanelTop\",\n \"LayoutTemplate\",\n \"Leaf\",\n \"LeafyGreen\",\n \"Lectern\",\n \"LensConcave\",\n \"LensConvex\",\n \"LetterText\",\n \"Library\",\n \"LibraryBig\",\n \"LibrarySquare\",\n \"LifeBuoy\",\n \"Ligature\",\n \"Lightbulb\",\n \"LightbulbOff\",\n \"LineChart\",\n \"LineDotRightHorizontal\",\n \"LineSquiggle\",\n \"LineStyle\",\n \"Link\",\n \"Link2\",\n \"Link2Off\",\n \"List\",\n \"ListCheck\",\n \"ListChecks\",\n \"ListChevronsDownUp\",\n \"ListChevronsUpDown\",\n \"ListCollapse\",\n \"ListEnd\",\n \"ListFilter\",\n \"ListFilterPlus\",\n \"ListIndentDecrease\",\n \"ListIndentIncrease\",\n \"ListMinus\",\n \"ListMusic\",\n \"ListOrdered\",\n \"ListPlus\",\n \"ListRestart\",\n \"ListStart\",\n \"ListTodo\",\n \"ListTree\",\n \"ListVideo\",\n \"ListX\",\n \"Loader\",\n \"Loader2\",\n \"LoaderCircle\",\n \"LoaderPinwheel\",\n \"Locate\",\n \"LocateFixed\",\n \"LocateOff\",\n \"LocationEdit\",\n \"Lock\",\n \"LockKeyhole\",\n \"LockKeyholeOpen\",\n \"LockOpen\",\n \"LogIn\",\n \"LogOut\",\n \"Logs\",\n \"Lollipop\",\n \"Luggage\",\n \"MSquare\",\n \"Magnet\",\n \"Mail\",\n \"MailCheck\",\n \"MailMinus\",\n \"MailOpen\",\n \"MailPlus\",\n \"MailQuestion\",\n \"MailQuestionMark\",\n \"MailSearch\",\n \"MailWarning\",\n \"MailX\",\n \"Mailbox\",\n \"Mails\",\n \"Map\",\n \"MapMinus\",\n \"MapPin\",\n \"MapPinCheck\",\n \"MapPinCheckInside\",\n \"MapPinHouse\",\n \"MapPinMinus\",\n \"MapPinMinusInside\",\n \"MapPinOff\",\n \"MapPinPen\",\n \"MapPinPlus\",\n \"MapPinPlusInside\",\n \"MapPinSearch\",\n \"MapPinX\",\n \"MapPinXInside\",\n \"MapPinned\",\n \"MapPlus\",\n \"Mars\",\n \"MarsStroke\",\n \"Martini\",\n \"Maximize\",\n \"Maximize2\",\n \"Medal\",\n \"Megaphone\",\n \"MegaphoneOff\",\n \"Meh\",\n \"MemoryStick\",\n \"Menu\",\n \"MenuSquare\",\n \"Merge\",\n \"MessageCircle\",\n \"MessageCircleCheck\",\n \"MessageCircleCode\",\n \"MessageCircleDashed\",\n \"MessageCircleHeart\",\n \"MessageCircleMore\",\n \"MessageCircleOff\",\n \"MessageCirclePlus\",\n \"MessageCircleQuestion\",\n \"MessageCircleQuestionMark\",\n \"MessageCircleReply\",\n \"MessageCircleWarning\",\n \"MessageCircleX\",\n \"MessageSquare\",\n \"MessageSquareCheck\",\n \"MessageSquareCode\",\n \"MessageSquareDashed\",\n \"MessageSquareDiff\",\n \"MessageSquareDot\",\n \"MessageSquareHeart\",\n \"MessageSquareLock\",\n \"MessageSquareMore\",\n \"MessageSquareOff\",\n \"MessageSquarePlus\",\n \"MessageSquareQuote\",\n \"MessageSquareReply\",\n \"MessageSquareShare\",\n \"MessageSquareText\",\n \"MessageSquareWarning\",\n \"MessageSquareX\",\n \"MessagesSquare\",\n \"Metronome\",\n \"Mic\",\n \"Mic2\",\n \"MicOff\",\n \"MicVocal\",\n \"Microchip\",\n \"Microscope\",\n \"Microwave\",\n \"Milestone\",\n \"Milk\",\n \"MilkOff\",\n \"Minimize\",\n \"Minimize2\",\n \"Minus\",\n \"MinusCircle\",\n \"MinusSquare\",\n \"MirrorRectangular\",\n \"MirrorRound\",\n \"Monitor\",\n \"MonitorCheck\",\n \"MonitorCloud\",\n \"MonitorCog\",\n \"MonitorDot\",\n \"MonitorDown\",\n \"MonitorOff\",\n \"MonitorPause\",\n \"MonitorPlay\",\n \"MonitorSmartphone\",\n \"MonitorSpeaker\",\n \"MonitorStop\",\n \"MonitorUp\",\n \"MonitorX\",\n \"Moon\",\n \"MoonStar\",\n \"MoreHorizontal\",\n \"MoreVertical\",\n \"Motorbike\",\n \"Mountain\",\n \"MountainSnow\",\n \"Mouse\",\n \"MouseLeft\",\n \"MouseOff\",\n \"MousePointer\",\n \"MousePointer2\",\n \"MousePointer2Off\",\n \"MousePointerBan\",\n \"MousePointerClick\",\n \"MousePointerSquareDashed\",\n \"MouseRight\",\n \"Move\",\n \"Move3D\",\n \"MoveDiagonal\",\n \"MoveDiagonal2\",\n \"MoveDown\",\n \"MoveDownLeft\",\n \"MoveDownRight\",\n \"MoveHorizontal\",\n \"MoveLeft\",\n \"MoveRight\",\n \"MoveUp\",\n \"MoveUpLeft\",\n \"MoveUpRight\",\n \"MoveVertical\",\n \"Music\",\n \"Music2\",\n \"Music3\",\n \"Music4\",\n \"Navigation\",\n \"Navigation2\",\n \"Navigation2Off\",\n \"NavigationOff\",\n \"Network\",\n \"Newspaper\",\n \"Nfc\",\n \"NonBinary\",\n \"Notebook\",\n \"NotebookPen\",\n \"NotebookTabs\",\n \"NotebookText\",\n \"NotepadText\",\n \"NotepadTextDashed\",\n \"Nut\",\n \"NutOff\",\n \"Octagon\",\n \"OctagonAlert\",\n \"OctagonMinus\",\n \"OctagonPause\",\n \"OctagonX\",\n \"Omega\",\n \"Option\",\n \"Orbit\",\n \"Origami\",\n \"Outdent\",\n \"Package\",\n \"Package2\",\n \"PackageCheck\",\n \"PackageMinus\",\n \"PackageOpen\",\n \"PackagePlus\",\n \"PackageSearch\",\n \"PackageX\",\n \"PaintBucket\",\n \"PaintRoller\",\n \"Paintbrush\",\n \"Paintbrush2\",\n \"PaintbrushVertical\",\n \"Palette\",\n \"Palmtree\",\n \"Panda\",\n \"PanelBottom\",\n \"PanelBottomClose\",\n \"PanelBottomDashed\",\n \"PanelBottomInactive\",\n \"PanelBottomOpen\",\n \"PanelLeft\",\n \"PanelLeftClose\",\n \"PanelLeftDashed\",\n \"PanelLeftInactive\",\n \"PanelLeftOpen\",\n \"PanelLeftRightDashed\",\n \"PanelRight\",\n \"PanelRightClose\",\n \"PanelRightDashed\",\n \"PanelRightInactive\",\n \"PanelRightOpen\",\n \"PanelTop\",\n \"PanelTopBottomDashed\",\n \"PanelTopClose\",\n \"PanelTopDashed\",\n \"PanelTopInactive\",\n \"PanelTopOpen\",\n \"PanelsLeftBottom\",\n \"PanelsLeftRight\",\n \"PanelsRightBottom\",\n \"PanelsTopBottom\",\n \"PanelsTopLeft\",\n \"Paperclip\",\n \"Parentheses\",\n \"ParkingCircle\",\n \"ParkingCircleOff\",\n \"ParkingMeter\",\n \"ParkingSquare\",\n \"ParkingSquareOff\",\n \"PartyPopper\",\n \"Pause\",\n \"PauseCircle\",\n \"PauseOctagon\",\n \"PawPrint\",\n \"PcCase\",\n \"Pen\",\n \"PenBox\",\n \"PenLine\",\n \"PenOff\",\n \"PenSquare\",\n \"PenTool\",\n \"Pencil\",\n \"PencilLine\",\n \"PencilOff\",\n \"PencilRuler\",\n \"Pentagon\",\n \"Percent\",\n \"PercentCircle\",\n \"PercentDiamond\",\n \"PercentSquare\",\n \"PersonStanding\",\n \"PhilippinePeso\",\n \"Phone\",\n \"PhoneCall\",\n \"PhoneForwarded\",\n \"PhoneIncoming\",\n \"PhoneMissed\",\n \"PhoneOff\",\n \"PhoneOutgoing\",\n \"Pi\",\n \"PiSquare\",\n \"Piano\",\n \"Pickaxe\",\n \"PictureInPicture\",\n \"PictureInPicture2\",\n \"PieChart\",\n \"PiggyBank\",\n \"Pilcrow\",\n \"PilcrowLeft\",\n \"PilcrowRight\",\n \"PilcrowSquare\",\n \"Pill\",\n \"PillBottle\",\n \"Pin\",\n \"PinOff\",\n \"Pipette\",\n \"Pizza\",\n \"Plane\",\n \"PlaneLanding\",\n \"PlaneTakeoff\",\n \"Play\",\n \"PlayCircle\",\n \"PlaySquare\",\n \"Plug\",\n \"Plug2\",\n \"PlugZap\",\n \"PlugZap2\",\n \"Plus\",\n \"PlusCircle\",\n \"PlusSquare\",\n \"PocketKnife\",\n \"Podcast\",\n \"Pointer\",\n \"PointerOff\",\n \"Popcorn\",\n \"Popsicle\",\n \"PoundSterling\",\n \"Power\",\n \"PowerCircle\",\n \"PowerOff\",\n \"PowerSquare\",\n \"Presentation\",\n \"Printer\",\n \"PrinterCheck\",\n \"PrinterX\",\n \"Projector\",\n \"Proportions\",\n \"Puzzle\",\n \"Pyramid\",\n \"QrCode\",\n \"Quote\",\n \"Rabbit\",\n \"Radar\",\n \"Radiation\",\n \"Radical\",\n \"Radio\",\n \"RadioOff\",\n \"RadioReceiver\",\n \"RadioTower\",\n \"Radius\",\n \"Rainbow\",\n \"Rat\",\n \"Ratio\",\n \"Receipt\",\n \"ReceiptCent\",\n \"ReceiptEuro\",\n \"ReceiptIndianRupee\",\n \"ReceiptJapaneseYen\",\n \"ReceiptPoundSterling\",\n \"ReceiptRussianRuble\",\n \"ReceiptSwissFranc\",\n \"ReceiptText\",\n \"ReceiptTurkishLira\",\n \"RectangleCircle\",\n \"RectangleEllipsis\",\n \"RectangleGoggles\",\n \"RectangleHorizontal\",\n \"RectangleVertical\",\n \"Recycle\",\n \"Redo\",\n \"Redo2\",\n \"RedoDot\",\n \"RefreshCcw\",\n \"RefreshCcwDot\",\n \"RefreshCw\",\n \"RefreshCwOff\",\n \"Refrigerator\",\n \"Regex\",\n \"RemoveFormatting\",\n \"Repeat\",\n \"Repeat1\",\n \"Repeat2\",\n \"RepeatOff\",\n \"Replace\",\n \"ReplaceAll\",\n \"Reply\",\n \"ReplyAll\",\n \"Rewind\",\n \"Ribbon\",\n \"Road\",\n \"Rocket\",\n \"RockingChair\",\n \"RollerCoaster\",\n \"Rose\",\n \"Rotate3D\",\n \"RotateCcw\",\n \"RotateCcwKey\",\n \"RotateCcwSquare\",\n \"RotateCw\",\n \"RotateCwSquare\",\n \"Route\",\n \"RouteOff\",\n \"Router\",\n \"Rows\",\n \"Rows2\",\n \"Rows3\",\n \"Rows4\",\n \"Rss\",\n \"Ruler\",\n \"RulerDimensionLine\",\n \"RussianRuble\",\n \"Sailboat\",\n \"Salad\",\n \"Sandwich\",\n \"Satellite\",\n \"SatelliteDish\",\n \"SaudiRiyal\",\n \"Save\",\n \"SaveAll\",\n \"SaveOff\",\n \"Scale\",\n \"Scale3D\",\n \"Scaling\",\n \"Scan\",\n \"ScanBarcode\",\n \"ScanEye\",\n \"ScanFace\",\n \"ScanHeart\",\n \"ScanLine\",\n \"ScanQrCode\",\n \"ScanSearch\",\n \"ScanText\",\n \"ScatterChart\",\n \"School\",\n \"School2\",\n \"Scissors\",\n \"ScissorsLineDashed\",\n \"ScissorsSquare\",\n \"ScissorsSquareDashedBottom\",\n \"Scooter\",\n \"ScreenShare\",\n \"ScreenShareOff\",\n \"Scroll\",\n \"ScrollText\",\n \"Search\",\n \"SearchAlert\",\n \"SearchCheck\",\n \"SearchCode\",\n \"SearchSlash\",\n \"SearchX\",\n \"Section\",\n \"Send\",\n \"SendHorizonal\",\n \"SendHorizontal\",\n \"SendToBack\",\n \"SeparatorHorizontal\",\n \"SeparatorVertical\",\n \"Server\",\n \"ServerCog\",\n \"ServerCrash\",\n \"ServerOff\",\n \"Settings\",\n \"Settings2\",\n \"Shapes\",\n \"Share\",\n \"Share2\",\n \"Sheet\",\n \"Shell\",\n \"ShelvingUnit\",\n \"Shield\",\n \"ShieldAlert\",\n \"ShieldBan\",\n \"ShieldCheck\",\n \"ShieldClose\",\n \"ShieldCog\",\n \"ShieldCogCorner\",\n \"ShieldEllipsis\",\n \"ShieldHalf\",\n \"ShieldMinus\",\n \"ShieldOff\",\n \"ShieldPlus\",\n \"ShieldQuestion\",\n \"ShieldQuestionMark\",\n \"ShieldUser\",\n \"ShieldX\",\n \"Ship\",\n \"ShipWheel\",\n \"Shirt\",\n \"ShoppingBag\",\n \"ShoppingBasket\",\n \"ShoppingCart\",\n \"Shovel\",\n \"ShowerHead\",\n \"Shredder\",\n \"Shrimp\",\n \"Shrink\",\n \"Shrub\",\n \"Shuffle\",\n \"Sidebar\",\n \"SidebarClose\",\n \"SidebarOpen\",\n \"Sigma\",\n \"SigmaSquare\",\n \"Signal\",\n \"SignalHigh\",\n \"SignalLow\",\n \"SignalMedium\",\n \"SignalZero\",\n \"Signature\",\n \"Signpost\",\n \"SignpostBig\",\n \"Siren\",\n \"SkipBack\",\n \"SkipForward\",\n \"Skull\",\n \"Slash\",\n \"SlashSquare\",\n \"Slice\",\n \"Sliders\",\n \"SlidersHorizontal\",\n \"SlidersVertical\",\n \"Smartphone\",\n \"SmartphoneCharging\",\n \"SmartphoneNfc\",\n \"Smile\",\n \"SmilePlus\",\n \"Snail\",\n \"Snowflake\",\n \"SoapDispenserDroplet\",\n \"Sofa\",\n \"SolarPanel\",\n \"SortAsc\",\n \"SortDesc\",\n \"Soup\",\n \"Space\",\n \"Spade\",\n \"Sparkle\",\n \"Sparkles\",\n \"Speaker\",\n \"Speech\",\n \"SpellCheck\",\n \"SpellCheck2\",\n \"Spline\",\n \"SplinePointer\",\n \"Split\",\n \"SplitSquareHorizontal\",\n \"SplitSquareVertical\",\n \"Spool\",\n \"SportShoe\",\n \"Spotlight\",\n \"SprayCan\",\n \"Sprout\",\n \"Square\",\n \"SquareActivity\",\n \"SquareArrowDown\",\n \"SquareArrowDownLeft\",\n \"SquareArrowDownRight\",\n \"SquareArrowLeft\",\n \"SquareArrowOutDownLeft\",\n \"SquareArrowOutDownRight\",\n \"SquareArrowOutUpLeft\",\n \"SquareArrowOutUpRight\",\n \"SquareArrowRight\",\n \"SquareArrowRightEnter\",\n \"SquareArrowRightExit\",\n \"SquareArrowUp\",\n \"SquareArrowUpLeft\",\n \"SquareArrowUpRight\",\n \"SquareAsterisk\",\n \"SquareBottomDashedScissors\",\n \"SquareCenterlineDashedHorizontal\",\n \"SquareCenterlineDashedVertical\",\n \"SquareChartGantt\",\n \"SquareCheck\",\n \"SquareCheckBig\",\n \"SquareChevronDown\",\n \"SquareChevronLeft\",\n \"SquareChevronRight\",\n \"SquareChevronUp\",\n \"SquareCode\",\n \"SquareDashed\",\n \"SquareDashedBottom\",\n \"SquareDashedBottomCode\",\n \"SquareDashedKanban\",\n \"SquareDashedMousePointer\",\n \"SquareDashedText\",\n \"SquareDashedTopSolid\",\n \"SquareDivide\",\n \"SquareDot\",\n \"SquareEqual\",\n \"SquareFunction\",\n \"SquareGanttChart\",\n \"SquareKanban\",\n \"SquareLibrary\",\n \"SquareM\",\n \"SquareMenu\",\n \"SquareMinus\",\n \"SquareMousePointer\",\n \"SquareParking\",\n \"SquareParkingOff\",\n \"SquarePause\",\n \"SquarePen\",\n \"SquarePercent\",\n \"SquarePi\",\n \"SquarePilcrow\",\n \"SquarePlay\",\n \"SquarePlus\",\n \"SquarePower\",\n \"SquareRadical\",\n \"SquareRoundCorner\",\n \"SquareScissors\",\n \"SquareSigma\",\n \"SquareSlash\",\n \"SquareSplitHorizontal\",\n \"SquareSplitVertical\",\n \"SquareSquare\",\n \"SquareStack\",\n \"SquareStar\",\n \"SquareStop\",\n \"SquareTerminal\",\n \"SquareUser\",\n \"SquareUserRound\",\n \"SquareX\",\n \"SquaresExclude\",\n \"SquaresIntersect\",\n \"SquaresSubtract\",\n \"SquaresUnite\",\n \"Squircle\",\n \"SquircleDashed\",\n \"Squirrel\",\n \"Stamp\",\n \"Star\",\n \"StarHalf\",\n \"StarOff\",\n \"Stars\",\n \"StepBack\",\n \"StepForward\",\n \"Stethoscope\",\n \"Sticker\",\n \"StickyNote\",\n \"Stone\",\n \"StopCircle\",\n \"Store\",\n \"StretchHorizontal\",\n \"StretchVertical\",\n \"Strikethrough\",\n \"Subscript\",\n \"Subtitles\",\n \"Sun\",\n \"SunDim\",\n \"SunMedium\",\n \"SunMoon\",\n \"SunSnow\",\n \"Sunrise\",\n \"Sunset\",\n \"Superscript\",\n \"SwatchBook\",\n \"SwissFranc\",\n \"SwitchCamera\",\n \"Sword\",\n \"Swords\",\n \"Syringe\",\n \"Table\",\n \"Table2\",\n \"TableCellsMerge\",\n \"TableCellsSplit\",\n \"TableColumnsSplit\",\n \"TableConfig\",\n \"TableOfContents\",\n \"TableProperties\",\n \"TableRowsSplit\",\n \"Tablet\",\n \"TabletSmartphone\",\n \"Tablets\",\n \"Tag\",\n \"Tags\",\n \"Tally1\",\n \"Tally2\",\n \"Tally3\",\n \"Tally4\",\n \"Tally5\",\n \"Tangent\",\n \"Target\",\n \"Telescope\",\n \"Tent\",\n \"TentTree\",\n \"Terminal\",\n \"TerminalSquare\",\n \"TestTube\",\n \"TestTube2\",\n \"TestTubeDiagonal\",\n \"TestTubes\",\n \"Text\",\n \"TextAlignCenter\",\n \"TextAlignEnd\",\n \"TextAlignJustify\",\n \"TextAlignStart\",\n \"TextCursor\",\n \"TextCursorInput\",\n \"TextInitial\",\n \"TextQuote\",\n \"TextSearch\",\n \"TextSelect\",\n \"TextSelection\",\n \"TextWrap\",\n \"Theater\",\n \"Thermometer\",\n \"ThermometerSnowflake\",\n \"ThermometerSun\",\n \"ThumbsDown\",\n \"ThumbsUp\",\n \"Ticket\",\n \"TicketCheck\",\n \"TicketMinus\",\n \"TicketPercent\",\n \"TicketPlus\",\n \"TicketSlash\",\n \"TicketX\",\n \"Tickets\",\n \"TicketsPlane\",\n \"Timeline\",\n \"Timer\",\n \"TimerOff\",\n \"TimerReset\",\n \"ToggleLeft\",\n \"ToggleRight\",\n \"Toilet\",\n \"ToolCase\",\n \"Toolbox\",\n \"Tornado\",\n \"Torus\",\n \"Touchpad\",\n \"TouchpadOff\",\n \"TowelRack\",\n \"TowerControl\",\n \"ToyBrick\",\n \"Tractor\",\n \"TrafficCone\",\n \"Train\",\n \"TrainFront\",\n \"TrainFrontTunnel\",\n \"TrainTrack\",\n \"TramFront\",\n \"Transgender\",\n \"Trash\",\n \"Trash2\",\n \"TreeDeciduous\",\n \"TreePalm\",\n \"TreePine\",\n \"Trees\",\n \"TrendingDown\",\n \"TrendingUp\",\n \"TrendingUpDown\",\n \"Triangle\",\n \"TriangleAlert\",\n \"TriangleDashed\",\n \"TriangleRight\",\n \"Trophy\",\n \"Truck\",\n \"TruckElectric\",\n \"TurkishLira\",\n \"Turntable\",\n \"Turtle\",\n \"Tv\",\n \"Tv2\",\n \"TvMinimal\",\n \"TvMinimalPlay\",\n \"Type\",\n \"TypeOutline\",\n \"Umbrella\",\n \"UmbrellaOff\",\n \"Underline\",\n \"Undo\",\n \"Undo2\",\n \"UndoDot\",\n \"UnfoldHorizontal\",\n \"UnfoldVertical\",\n \"Ungroup\",\n \"University\",\n \"Unlink\",\n \"Unlink2\",\n \"Unlock\",\n \"UnlockKeyhole\",\n \"Unplug\",\n \"Upload\",\n \"UploadCloud\",\n \"Usb\",\n \"User\",\n \"User2\",\n \"UserCheck\",\n \"UserCheck2\",\n \"UserCircle\",\n \"UserCircle2\",\n \"UserCog\",\n \"UserCog2\",\n \"UserKey\",\n \"UserLock\",\n \"UserMinus\",\n \"UserMinus2\",\n \"UserPen\",\n \"UserPlus\",\n \"UserPlus2\",\n \"UserRound\",\n \"UserRoundCheck\",\n \"UserRoundCog\",\n \"UserRoundKey\",\n \"UserRoundMinus\",\n \"UserRoundPen\",\n \"UserRoundPlus\",\n \"UserRoundSearch\",\n \"UserRoundX\",\n \"UserSearch\",\n \"UserSquare\",\n \"UserSquare2\",\n \"UserStar\",\n \"UserX\",\n \"UserX2\",\n \"Users\",\n \"Users2\",\n \"UsersRound\",\n \"Utensils\",\n \"UtensilsCrossed\",\n \"UtilityPole\",\n \"Van\",\n \"Variable\",\n \"Vault\",\n \"VectorSquare\",\n \"Vegan\",\n \"VenetianMask\",\n \"Venus\",\n \"VenusAndMars\",\n \"Verified\",\n \"Vibrate\",\n \"VibrateOff\",\n \"Video\",\n \"VideoOff\",\n \"Videotape\",\n \"View\",\n \"Voicemail\",\n \"Volleyball\",\n \"Volume\",\n \"Volume1\",\n \"Volume2\",\n \"VolumeOff\",\n \"VolumeX\",\n \"Vote\",\n \"Wallet\",\n \"Wallet2\",\n \"WalletCards\",\n \"WalletMinimal\",\n \"Wallpaper\",\n \"Wand\",\n \"Wand2\",\n \"WandSparkles\",\n \"Warehouse\",\n \"WashingMachine\",\n \"Watch\",\n \"Waves\",\n \"WavesArrowDown\",\n \"WavesArrowUp\",\n \"WavesHorizontal\",\n \"WavesLadder\",\n \"WavesVertical\",\n \"Waypoints\",\n \"Webcam\",\n \"Webhook\",\n \"WebhookOff\",\n \"Weight\",\n \"WeightTilde\",\n \"Wheat\",\n \"WheatOff\",\n \"WholeWord\",\n \"Wifi\",\n \"WifiCog\",\n \"WifiHigh\",\n \"WifiLow\",\n \"WifiOff\",\n \"WifiPen\",\n \"WifiSync\",\n \"WifiZero\",\n \"Wind\",\n \"WindArrowDown\",\n \"Wine\",\n \"WineOff\",\n \"Workflow\",\n \"Worm\",\n \"WrapText\",\n \"Wrench\",\n \"X\",\n \"XCircle\",\n \"XLineTop\",\n \"XOctagon\",\n \"XSquare\",\n \"Zap\",\n \"ZapOff\",\n \"ZodiacAquarius\",\n \"ZodiacAries\",\n \"ZodiacCancer\",\n \"ZodiacCapricorn\",\n \"ZodiacGemini\",\n \"ZodiacLeo\",\n \"ZodiacLibra\",\n \"ZodiacOphiuchus\",\n \"ZodiacPisces\",\n \"ZodiacSagittarius\",\n \"ZodiacScorpio\",\n \"ZodiacTaurus\",\n \"ZodiacVirgo\",\n \"ZoomIn\",\n \"ZoomOut\"\n];\n","export const coolIconKeys: string[] = [\n \"Rows4\", \"Video\",\n \"Plane\", \"LayoutDashboard\", \"LayoutGrid\", \"Square\", \"Snowflake\",\n \"CircleDashed\", \"AlignCenterHorizontal\", \"Disc\", \"Infinity\",\n \"Maximize\", \"Play\", \"Sparkles\", \"Music\",\n \"Wallet\", \"Layout\", \"Zap\", \"Circle\", \"Coffee\",\n \"ImageOff\", \"Sun\", \"Cable\", \"CalendarDays\",\n \"Dices\", \"Shapes\", \"Cloud\", \"Palette\",\n \"CreditCard\", \"Headphones\", \"Egg\", \"Disc3\", \"Flag\",\n \"Bandage\", \"Thermometer\", \"Hexagon\", \"Network\", \"Library\", \"Pizza\",\n \"Cpu\", \"Plug\", \"Files\", \"Globe\", \"SignalZero\",\n \"Gamepad2\", \"CloudLightning\", \"ListTree\", \"Command\"];\n","import React from \"react\";\n\nimport { IconProps } from \"./Icon\";\n\nexport function GitHubIcon(props: IconProps) {\n return <svg xmlns=\"http://www.w3.org/2000/svg\"\n className={props.className}\n fill={\"currentColor\"}\n width={props.size ?? 24}\n height={props.size ?? 24}\n viewBox=\"0 0 24 24\">\n <path\n d=\"M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z\"/>\n </svg>;\n}\n","export function HandleIcon() {\n return <svg width=\"24\" height=\"24\" viewBox=\"0 0 100 100\" fill=\"none\">\n <circle cx=\"28\" cy=\"50\" r=\"9\" fill={\"currentColor\"}/>\n <circle cx=\"28\" cy=\"21\" r=\"9\" fill={\"currentColor\"}/>\n <circle cx=\"71\" cy=\"21\" r=\"9\" fill={\"currentColor\"}/>\n <circle cx=\"71\" cy=\"50\" r=\"9\" fill={\"currentColor\"}/>\n <circle cx=\"71\" cy=\"78\" r=\"9\" fill={\"currentColor\"}/>\n <circle cx=\"28\" cy=\"78\" r=\"9\" fill={\"currentColor\"}/>\n </svg>;\n}\n"],"mappings":"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AAgB,OAAO,KAsB3B;MAEb,CAAC,GAEA,oBAAoB,iBAAA,GAAA,kBAAA,KAAC,OAAD,EAAK,WAAW,OAAQ,CAAA,CAEhC;QArER,OAAO,OAqEC;IAEzB,EACyB,CAAA;GACjC,GAAG,CAAC,CAWC;EACC,CAAA;CACV;CAEA,IAAM,oBAEA,EAAE,WAAW;EACf,MAAM,WAAW;EACjB,MAAM,OAAO,KAAK,MAAM,QAAQ,KAAK,CAAC;EAGtC,OACI,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,WAAW;aAHN,KAAK,MAAM,QAIhB,EAAM,KAAK,MAAM,MACd,iBAAA,GAAA,kBAAA,MAAC,MAAA,QAAM,UAAP,EAAA,UAAA,CACK,MACA,KAAK,MACF,iBAAA,GAAA,kBAAA,MAAA,kBAAA,UAAA,EAAA,UAAA,CACI,iBAAA,GAAA,kBAAA,KAAC,KAAD;IAAG,MAAM,KAAK;IAAI,WAAU;IAAY,QAAO;IAAS,KAAI;cAAsB;GAAO,CAAA,GACzF,iBAAA,GAAA,kBAAA,KAAC,MAAD,CAAI,CAAA,CACN,EAAA,CAAA,CAEM,EAAA,GARK,CAQL,CACnB;EACA,CAAA;CAEb;;;CCzoBA,IAAa,WAAW;EACpB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACJ;;;CC/4DA,IAAa,eAAyB;EAClC;EAAS;EACT;EAAS;EAAmB;EAAc;EAAU;EACpD;EAAgB;EAAyB;EAAQ;EACjD;EAAY;EAAQ;EAAY;EAChC;EAAU;EAAU;EAAO;EAAU;EACrC;EAAY;EAAO;EAAS;EAC5B;EAAS;EAAU;EAAS;EAC5B;EAAc;EAAc;EAAO;EAAS;EAC5C;EAAW;EAAe;EAAW;EAAW;EAAW;EAC3D;EAAO;EAAQ;EAAS;EAAS;EACjC;EAAY;EAAkB;EAAY;CAAS;;;CCPvD,SAAgB,WAAW,OAAkB;EACzC,OAAO,iBAAA,GAAA,kBAAA,KAAC,OAAD;GAAK,OAAM;GACN,WAAW,MAAM;GACjB,MAAM;GACN,OAAO,MAAM,QAAQ;GACrB,QAAQ,MAAM,QAAQ;GACtB,SAAQ;aAChB,iBAAA,GAAA,kBAAA,KAAC,QAAD,EACI,GAAE,4sBAA4sB,CAAA;EACjtB,CAAA;CACT;;;CCdA,SAAgB,aAAa;EACzB,OAAO,iBAAA,GAAA,kBAAA,MAAC,OAAD;GAAK,OAAM;GAAK,QAAO;GAAK,SAAQ;GAAc,MAAK;aAAvD;IACH,iBAAA,GAAA,kBAAA,KAAC,UAAD;KAAQ,IAAG;KAAK,IAAG;KAAK,GAAE;KAAI,MAAM;IAAgB,CAAA;IACpD,iBAAA,GAAA,kBAAA,KAAC,UAAD;KAAQ,IAAG;KAAK,IAAG;KAAK,GAAE;KAAI,MAAM;IAAgB,CAAA;IACpD,iBAAA,GAAA,kBAAA,KAAC,UAAD;KAAQ,IAAG;KAAK,IAAG;KAAK,GAAE;KAAI,MAAM;IAAgB,CAAA;IACpD,iBAAA,GAAA,kBAAA,KAAC,UAAD;KAAQ,IAAG;KAAK,IAAG;KAAK,GAAE;KAAI,MAAM;IAAgB,CAAA;IACpD,iBAAA,GAAA,kBAAA,KAAC,UAAD;KAAQ,IAAG;KAAK,IAAG;KAAK,GAAE;KAAI,MAAM;IAAgB,CAAA;IACpD,iBAAA,GAAA,kBAAA,KAAC,UAAD;KAAQ,IAAG;KAAK,IAAG;KAAK,GAAE;KAAI,MAAM;IAAgB,CAAA;GACnD;;CACT"}
|