@keboola/design 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +4 -4
- package/dist/icon-names.cjs +0 -18
- package/dist/icon-names.cjs.map +0 -1
- package/dist/icon-names.js +0 -16
- package/dist/icon-names.js.map +0 -1
- package/dist/index.cjs +0 -14632
- package/dist/index.cjs.map +0 -1
- package/dist/index.js +0 -14458
- package/dist/index.js.map +0 -1
- package/dist/markdown-editor.cjs +0 -4305
- package/dist/markdown-editor.cjs.map +0 -1
- package/dist/markdown-editor.js +0 -4278
- package/dist/markdown-editor.js.map +0 -1
- package/dist/mermaid.cjs +0 -1002
- package/dist/mermaid.cjs.map +0 -1
- package/dist/mermaid.js +0 -996
- package/dist/mermaid.js.map +0 -1
- package/dist/styles.css +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/classNames.ts","../src/utils/copyToClipboard.ts","../src/utils/createChangeInputEvent.ts","../src/constants/keyCodes.ts","../src/components/Tooltip/TooltipContent.tsx","../src/components/Tooltip/TooltipRoot.tsx","../src/components/Tooltip/TooltipTrigger.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Tooltip/index.ts","../src/utils/decorators.tsx","../src/utils/createPrefixedString.ts","../src/utils/escapeStringRegexp.ts","../src/utils/mergeRefs.ts","../src/utils/noop.ts","../src/utils/debounce.ts","../src/utils/isMac.ts","../src/utils/useSHA256.ts","../src/utils/index.ts","../src/components/Skeleton/Skeleton.tsx","../src/components/Icon/Icon.tsx","../src/components/Icon/index.ts","../src/components/Button/styles.ts","../src/components/Button/Button.tsx","../src/components/Button/ButtonInline.tsx","../src/components/Button/index.ts","../src/components/Clipboard/Clipboard.tsx","../src/components/Clipboard/index.ts","../src/blocks/ClipboardButton/ClipboardButton.tsx","../src/blocks/ClipboardButton/index.ts","../src/components/ZoomableSvg/ZoomableSvg.tsx","../src/components/ZoomableSvg/index.ts","../src/blocks/MermaidDiagram/MermaidDiagram.tsx","../src/components/MarkdownEditor/MarkdownEditor.tsx","../src/components/MarkdownEditor/context.ts","../src/components/MarkdownEditor/nodes/ImageNodeComponent.tsx","../src/components/MarkdownEditor/nodes/ImageNode.tsx","../src/components/MarkdownEditor/nodes/MermaidNodeComponent.tsx","../src/components/MarkdownEditor/nodes/MermaidNode.tsx","../src/components/Toast/toast.tsx","../src/components/Toast/ToastRoot.tsx","../src/components/Toast/ToastAction.tsx","../src/components/Toast/ToastDescription.tsx","../src/components/Toast/ToastDismiss.tsx","../src/components/Toast/ToastDuration.tsx","../src/components/Toast/ToastTitle.tsx","../src/components/MarkdownEditor/plugins/ImagePastePlugin.tsx","../src/components/MarkdownEditor/plugins/KeyboardPlugin.tsx","../src/components/MarkdownEditor/transformers.ts","../src/components/MarkdownEditor/plugins/MarkdownSyncPlugin.tsx","../src/components/MarkdownEditor/plugins/ToolbarPlugin.tsx","../src/components/MarkdownEditor/plugins/toolbar/AlignmentDropdown.tsx","../src/components/DropdownMenu/DropdownMenuCheckboxItem.tsx","../src/components/DropdownMenu/DropdownMenuItemIndicator.tsx","../src/components/DropdownMenu/ItemIcon.tsx","../src/components/DropdownMenu/styles.ts","../src/components/DropdownMenu/DropdownMenuContent.tsx","../src/components/ScrollArea/ScrollArea.tsx","../src/components/ScrollArea/ScrollBar.tsx","../src/components/DropdownMenu/DropdownMenuContext.tsx","../src/components/DropdownMenu/DropdownMenuItem.tsx","../src/components/DropdownMenu/DropdownMenuItemDescription.tsx","../src/components/DropdownMenu/DropdownMenuLabel.tsx","../src/components/DropdownMenu/DropdownMenuRadioGroup/DropdownMenuRadioGroup.tsx","../src/components/DropdownMenu/DropdownMenuRadioGroup/DropdownMenuRadioItem.tsx","../src/components/DropdownMenu/DropdownMenuSeparator.tsx","../src/components/DropdownMenu/DropdownMenuSub/DropdownMenuSub.tsx","../src/components/DropdownMenu/DropdownMenuSub/DropdownMenuSubContent.tsx","../src/components/DropdownMenu/DropdownMenuSub/DropdownMenuSubTrigger.tsx","../src/components/DropdownMenu/DropdownMenuTrigger.tsx","../src/components/DropdownMenu/DropdownMenu.tsx","../src/components/MarkdownEditor/plugins/toolbar/BlockTypeDropdown.tsx","../src/components/MarkdownEditor/plugins/toolbar/LinkPanel.tsx","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/FormGroup/FormGroup.tsx","../src/components/FormGroup/context.ts","../src/components/InputGroup/InputGroup.tsx","../src/components/InputGroup/InputGroupAddon.tsx","../src/components/InputGroup/InputGroupButton.tsx","../src/components/InputGroup/InputGroupInput.tsx","../src/components/InputGroup/InputGroupText.tsx","../src/components/InputGroup/InputGroupTextArea.tsx","../src/blocks/ColorInput/ColorInput.tsx","../src/blocks/ColorInput/utils.ts","../src/blocks/ColorInput/ColorPicker.tsx","../src/components/FormGroup/FormGroupColorInput.tsx","../src/components/HelpBlock/HelpBlock.tsx","../src/components/FormGroup/FormGroupHelp.tsx","../src/blocks/NumberInput/NumberInput.tsx","../src/components/FormGroup/FormGroupNumberInput.tsx","../src/blocks/Textarea/Textarea.tsx","../src/components/FormGroup/FormGroupTextarea.tsx","../src/components/Input/Input.tsx","../src/components/Input/utils.ts","../src/components/Input/TextInput/TextInput.tsx","../src/components/FormGroup/FormGroupTextInput.tsx","../src/components/Label/Label.tsx","../src/components/MarkdownEditor/plugins/toolbar/ToolbarButton.tsx","../src/components/MarkdownEditor/plugins/toolbar/ToolbarDivider.tsx","../src/components/MarkdownEditor/theme.ts"],"names":["jsx","init_Tooltip","Fragment","init_Icon","cva","Root","jsxs","init_Button","useState","text","Tooltip","cn","init_Clipboard","init_ClipboardButton","useEffect","init_ZoomableSvg","useId","useRef","MermaidDiagram","DecoratorNode","variants","sonnerToast","toast","useLexicalComposerContext","code","DropdownMenuPrimitive","DropdownMenuPrimitive2","ScrollAreaPrimitive","createContext","use","DropdownMenuPrimitive4","Slottable","DropdownMenuPrimitive5","value","DropdownMenuPrimitive6","DropdownMenuPrimitive7","DropdownMenuPrimitive8","DropdownMenuPrimitive9","DropdownMenuPrimitive10","DropdownMenuPrimitive11","Trigger","$getSelection","$setSelection","Label","$isRangeSelection","useCallback","$getNearestBlockElementAncestorOrThrow","INSERT_UNORDERED_LIST_COMMAND","INSERT_ORDERED_LIST_COMMAND","$createParagraphNode","$createQuoteNode","$createCodeNode","HorizontalRuleNode","$convertFromMarkdownString"],"mappings":"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","file":"markdown-editor.js","sourcesContent":["import { clsx } from 'clsx';\nimport { extendTailwindMerge } from 'tailwind-merge';\n\nconst twMerge = extendTailwindMerge({\n prefix: 'tw-',\n});\n\ntype Mapping = Record<string, unknown>;\ntype Argument = string | boolean | undefined | Mapping;\n\nexport const cn = (...classes: Argument[]) => twMerge(clsx(...classes));\n\nexport const extractExternalClasses = (className?: string) => {\n if (!className) {\n return ['', ''];\n }\n\n const [extCls, rest] = className.split(' ').reduce(\n (acc, cls) => {\n acc[cls.startsWith('extCls-') ? 0 : 1].push(cls);\n return acc;\n },\n [[], []] as [string[], string[]],\n );\n\n return [extCls.join(' '), rest.join(' ')];\n};\n","export const copyToClipboard = (text: string) => {\n return navigator.clipboard.writeText(text);\n};\n","import type { ChangeEvent } from 'react';\n\nexport const createChangeInputEvent = (input: HTMLInputElement) => {\n const changeEvent: ChangeEvent<HTMLInputElement> = {\n target: input,\n currentTarget: input,\n type: 'change',\n nativeEvent: new Event('change', { bubbles: true }),\n bubbles: true,\n cancelable: false,\n defaultPrevented: false,\n eventPhase: 2, // AT_TARGET\n isTrusted: false, // Synthetic events are not trusted\n preventDefault: () => {}, // Provide dummy functions if not needed\n isDefaultPrevented: () => false,\n stopPropagation: () => {},\n isPropagationStopped: () => false,\n persist: () => {},\n timeStamp: Date.now(),\n };\n\n Object.defineProperty(changeEvent, 'target', {\n value: input,\n writable: false,\n });\n\n return changeEvent;\n};\n","export const keyCodes = {\n ENTER: 'Enter',\n ESCAPE: 'Escape',\n SPACE: ' ',\n};\n","import type { ComponentProps } from 'react';\nimport { Content, Portal } from '@radix-ui/react-tooltip';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nconst tooltipVariants = cva(\n [\n 'tailwindcss-preflight',\n 'tw-inline-block',\n 'tw-rounded',\n 'tw-bg-neutral-800',\n 'tw-text-white',\n 'tw-break-anywhere',\n 'tw-max-h-96',\n 'tw-overflow-y-auto',\n 'tw-z-[1060]',\n ],\n {\n defaultVariants: {\n variant: 'action',\n },\n variants: {\n variant: {\n action: [\n 'tw-max-w-fit',\n 'tw-px-3',\n 'tw-py-2',\n\n 'tw-text-center',\n 'tw-text-xs',\n 'tw-font-medium',\n 'tw-uppercase',\n 'tw-tracking-wider',\n ],\n explanatory: [\n 'tw-max-w-80',\n 'tw-px-4',\n 'tw-py-3',\n 'tw-text-left',\n\n 'tw-text-sm',\n 'tw-font-normal',\n ],\n },\n },\n },\n);\n\ntype Props = {\n keepOpenOnPointerDownOutside?: boolean;\n placement?: ComponentProps<typeof Content>['side'];\n} & Omit<ComponentProps<typeof Content>, 'side'> &\n VariantProps<typeof tooltipVariants>;\n\nexport const TooltipContent = ({\n className,\n variant,\n keepOpenOnPointerDownOutside = false,\n children,\n onPointerDownOutside,\n sideOffset = 8,\n collisionPadding = 8,\n hideWhenDetached = true,\n placement = 'right',\n ...rest\n}: Props) => {\n const handlePointerDownOutside: ComponentProps<typeof Content>['onPointerDownOutside'] = (\n event,\n ) => {\n if (keepOpenOnPointerDownOutside) event.preventDefault();\n onPointerDownOutside?.(event);\n };\n\n return (\n <Portal>\n <Content\n {...rest}\n data-tooltip-content\n sideOffset={sideOffset}\n collisionPadding={collisionPadding}\n onPointerDownOutside={handlePointerDownOutside}\n className={tooltipVariants({ className, variant: variant })}\n hideWhenDetached={hideWhenDetached}\n side={placement}\n >\n {children}\n </Content>\n </Portal>\n );\n};\n","import type { ComponentProps } from 'react';\nimport { Root } from '@radix-ui/react-tooltip';\n\ntype Props = ComponentProps<typeof Root>;\n\nconst DELAY_SHOW_TOOLTIP = 300;\n\nexport const TooltipRoot = ({ children, delayDuration = DELAY_SHOW_TOOLTIP, ...rest }: Props) => (\n <Root {...rest} delayDuration={delayDuration}>\n {children}\n </Root>\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Trigger } from '@radix-ui/react-tooltip';\n\nimport { cn } from '../../utils';\n\ntype Props = {\n keepOpenOnClick?: boolean;\n} & ComponentProps<typeof Trigger>;\n\nexport const TooltipTrigger = ({\n ref,\n children,\n className,\n keepOpenOnClick = false,\n onClick,\n onPointerDown,\n asChild,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => {\n const handleClick: ComponentProps<typeof Trigger>['onClick'] = (event) => {\n if (keepOpenOnClick) event.preventDefault();\n onClick?.(event);\n };\n\n const handePointerDown: ComponentProps<typeof Trigger>['onPointerDown'] = (event) => {\n if (keepOpenOnClick) event.preventDefault();\n onPointerDown?.(event);\n };\n\n return (\n <Trigger\n {...rest}\n asChild\n ref={ref}\n className={cn('tailwindcss-preflight', className)}\n onClick={handleClick}\n onPointerDown={handePointerDown}\n >\n {asChild ? children : <span>{children}</span>}\n </Trigger>\n );\n};\n","import { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport type { Content, Trigger } from '@radix-ui/react-tooltip';\nimport { Provider } from '@radix-ui/react-tooltip';\n\nimport { keyCodes } from '../../constants/keyCodes';\n\nimport { TooltipContent } from './TooltipContent';\nimport { TooltipRoot } from './TooltipRoot';\nimport { TooltipTrigger } from './TooltipTrigger';\n\nconst ACTION_TOOLTIP_LIMIT = 30;\n\ntype TriggerProps = {\n triggerAsChild?: boolean;\n};\n\nexport type Props = {\n keepOpenOnTriggerClick?: boolean;\n tooltip: ReactNode;\n children: ReactNode;\n placement?: ComponentProps<typeof Content>['side'];\n forceHide?: boolean;\n forceShow?: boolean;\n className?: string;\n} & TriggerProps &\n Pick<ComponentProps<typeof TooltipContent>, 'variant' | 'className'>;\n\nexport const TooltipProvider = Provider;\n\nexport const Tooltip = ({\n tooltip,\n children,\n className,\n keepOpenOnTriggerClick = false,\n variant,\n placement = 'right',\n forceHide = false,\n forceShow = false,\n // trigger props\n triggerAsChild = false,\n}: Props) => {\n const [open, setOpen] = useState(false);\n\n const resolvedVariant = (() => {\n if (!!variant) return variant;\n if (typeof tooltip === 'string' && tooltip.length > ACTION_TOOLTIP_LIMIT) return 'explanatory';\n\n return 'action';\n })();\n\n const isActionVariant = resolvedVariant === 'action';\n\n const handleKeyUp: ComponentProps<typeof Trigger>['onKeyUp'] = (event) => {\n if (![keyCodes.ENTER, keyCodes.SPACE].includes(event.key)) return;\n event.stopPropagation();\n };\n\n return (\n <TooltipRoot\n open={!!tooltip && (open || forceShow) && !forceHide}\n onOpenChange={setOpen}\n disableHoverableContent={isActionVariant}\n >\n <TooltipTrigger\n asChild={triggerAsChild}\n keepOpenOnClick={keepOpenOnTriggerClick}\n onKeyUp={handleKeyUp}\n >\n {children}\n </TooltipTrigger>\n\n <TooltipContent\n className={className}\n variant={resolvedVariant}\n placement={placement}\n keepOpenOnPointerDownOutside={keepOpenOnTriggerClick}\n >\n {tooltip}\n </TooltipContent>\n </TooltipRoot>\n );\n};\n\nTooltip.Root = TooltipRoot;\nTooltip.Content = TooltipContent;\nTooltip.Trigger = TooltipTrigger;\n","export * from './Tooltip';\n","import type { ComponentType } from 'react';\n\nimport { TooltipProvider } from '../components/Tooltip';\n\nexport const withTooltipProvider = (Story: ComponentType) => (\n <TooltipProvider>\n <Story />\n </TooltipProvider>\n);\n\n// position:fixed only fills the Storybook iframe, not the browser window.\nexport const withHiddenFullscreen = (Story: ComponentType) => (\n <div className=\"[&_[aria-label=Fullscreen]]:tw-hidden\">\n <Story />\n </div>\n);\n","export const createPrefixedString = (prefix: string) => (literals: TemplateStringsArray) =>\n literals.reduce((acc, literal) => acc + literal, `${prefix}-`);\n","// Escape characters with special meaning either inside or outside character sets.\n// Use a simple backslash escape when it's always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns' stricter grammar.\nexport const escapeStringRegexp = (string: string) =>\n string.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&').replace(/-/g, '\\\\x2d');\n","import type { MutableRefObject, RefCallback } from 'react';\n\ntype PossibleRef<T> = MutableRefObject<T> | RefCallback<T> | null;\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref != null) {\n ref.current = value;\n }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nexport const mergeRefs = <T>(...refs: PossibleRef<T>[]) => {\n return (node: T) => refs.forEach((ref) => setRef(ref, node));\n};\n","export const noop = () => void 0;\n","type DebouncedFn<T extends (...args: any[]) => void> = {\n (...args: Parameters<T>): void;\n cancel: () => void;\n};\n\nexport const debounce = <T extends (...args: any[]) => void>(\n fn: T,\n delay: number,\n): DebouncedFn<T> => {\n let timeoutId: ReturnType<typeof setTimeout>;\n const debounced = (...args: Parameters<T>) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => fn(...args), delay);\n };\n debounced.cancel = () => clearTimeout(timeoutId);\n return debounced;\n};\n","// Platform detection\ntype NavigatorUAData = {\n platform: string;\n brands: { brand: string; version: string }[];\n mobile: boolean;\n};\n\nconst getIsMac = (): boolean => {\n // Modern approach using navigator.userAgentData\n if (typeof navigator !== 'undefined' && 'userAgentData' in navigator) {\n const platform = (navigator.userAgentData as NavigatorUAData).platform;\n\n if (typeof platform === 'string') {\n return platform.toLowerCase() === 'macos';\n }\n }\n\n if (typeof navigator !== 'undefined' && typeof navigator.platform === 'string') {\n return navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n }\n\n // Server-side rendering fallback\n return false;\n};\n\nexport const isMac = getIsMac();\n","import { useEffect, useState } from 'react';\n\n// https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest#converting_a_digest_to_a_hex_string\nconst sha256 = async (text: string) => {\n const msgUint8 = new TextEncoder().encode(text);\n const hashBuffer = await crypto.subtle.digest('SHA-256', msgUint8);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n return hashArray.map((b) => b.toString(16).padStart(2, '0')).join('');\n};\n\nexport const useSHA256 = (text?: string) => {\n const [hash, setHash] = useState('');\n\n useEffect(() => {\n if (text) {\n sha256(text).then(setHash);\n }\n }, [text]);\n\n return hash;\n};\n","export * from './classNames';\nexport * from './copyToClipboard';\nexport * from './createChangeInputEvent';\nexport * from './decorators';\nexport * from './createPrefixedString';\nexport * from './escapeStringRegexp';\nexport * from './mergeRefs';\nexport * from './noop';\nexport * from './debounce';\nexport * from './isMac';\nexport * from './useSHA256';\n","import { useId } from 'react';\n\nimport { cn } from '../../utils';\n\nexport type Height = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\ntype SkeletonProps = {\n height?: Height;\n className?: string;\n count?: number;\n};\n\nconst HEIGHT_CLASS_NAME: Record<Height, string> = {\n xxs: 'tw-h-3 tw-rounded',\n xs: 'tw-h-4 tw-rounded',\n sm: 'tw-h-5 tw-rounded',\n md: 'tw-h-6 tw-rounded-md',\n lg: 'tw-h-8 tw-rounded-lg',\n xl: 'tw-h-10 tw-rounded-lg',\n '2xl': 'tw-h-12 tw-rounded-lg',\n};\n\nconst ANIMATION_CLASS_NAME = cn(\n // base styles\n 'tw-relative',\n 'tw-overflow-hidden',\n 'tw-pointer-events-none',\n 'tw-bg-neutral-150',\n\n // before\n 'before:tw-content-[\"\"]',\n 'before:tw-opacity-100',\n 'before:tw-absolute',\n 'before:tw-inset-0',\n 'before:-tw-translate-x-full',\n 'before:tw-animate-[shimmer_2s_infinite]',\n 'before:tw-bg-gradient-to-r',\n 'before:tw-from-transparent',\n 'before:tw-to-transparent',\n 'before:tw-via-neutral-50',\n);\n\nexport const Skeleton = ({ height = 'md', className, count = 1 }: SkeletonProps) => {\n const prefixId = useId();\n const keys = Array.from({ length: count }, (_, i) => `${prefixId}-${i}`);\n\n return (\n <>\n {keys.map((key) => (\n <div key={key} className={cn(HEIGHT_CLASS_NAME[height], ANIMATION_CLASS_NAME, className)} />\n ))}\n </>\n );\n};\n","import type { ElementRef, Ref } from 'react';\nimport type { IconName, IconPrefix } from '@awesome.me/kit-be8bcf7e5e/icons';\nimport type { IconProp } from '@fortawesome/fontawesome-svg-core';\nimport { FontAwesomeIcon, type FontAwesomeIconProps } from '@fortawesome/react-fontawesome';\n\ntype Props = Omit<FontAwesomeIconProps, 'icon'> & { icon: IconName | [IconPrefix, IconName] };\n\nexport const Icon = ({ ref, icon, ...rest }: Props & { ref?: Ref<ElementRef<'svg'>> }) => (\n <FontAwesomeIcon {...rest} ref={ref} icon={icon as IconProp} />\n);\n","import type { IconName } from '@awesome.me/kit-be8bcf7e5e/icons';\nimport { fas } from '@awesome.me/kit-be8bcf7e5e/icons';\n\nexport * from './Icon';\nexport type { IconName } from '@awesome.me/kit-be8bcf7e5e/icons';\n\nlet validIconNames: Set<string> | undefined;\n\nconst getValidIconNames = (): Set<string> => {\n if (validIconNames) return validIconNames;\n validIconNames = new Set<string>(\n Object.values(fas).flatMap((def) => {\n if (\n def !== null &&\n typeof def === 'object' &&\n 'iconName' in def &&\n typeof def.iconName === 'string'\n ) {\n return [def.iconName];\n }\n return [];\n }),\n );\n return validIconNames;\n};\n\nexport const isIconName = (name: string): name is IconName => getValidIconNames().has(name);\n","import { cva } from 'class-variance-authority';\n\nexport const variants = cva(\n [\n 'tailwindcss-preflight',\n 'tw-group/button',\n 'tw-border-box',\n\n // layout\n 'tw-relative',\n 'tw-flex',\n 'tw-items-center',\n 'tw-justify-center',\n 'tw-gap-2',\n\n // text\n 'tw-text-xs',\n 'tw-leading-5',\n 'tw-font-medium',\n 'tw-tracking-[1px]',\n 'tw-uppercase',\n\n // border\n 'tw-rounded',\n 'tw-border',\n 'tw-border-transparent',\n\n // styling\n 'tw-shadow-none',\n '[a]:tw-cursor-pointer', // explicitly set for anchor\n\n 'focus-visible:tw-outline',\n 'focus-visible:tw-outline-1',\n 'focus-visible:-tw-outline-offset-1',\n 'focus-visible:tw-outline-secondary-500',\n 'focus-visible:tw-ring-4',\n 'focus-visible:tw-ring-secondary-200',\n\n // disabled\n 'disabled:tw-opacity-40',\n 'disabled:tw-cursor-not-allowed',\n\n // anchor support\n '!tw-no-underline',\n 'aria-disabled:tw-opacity-40',\n 'aria-disabled:tw-cursor-not-allowed',\n\n '[&_svg]:tw-shrink-0',\n ],\n {\n defaultVariants: {\n size: 'medium',\n variant: 'primary',\n block: false,\n },\n variants: {\n block: {\n true: ['tw-w-full'],\n },\n variant: {\n primary: [\n 'tw-text-white',\n 'tw-bg-primary-500',\n\n 'focus:tw-text-white',\n 'hover:tw-text-white',\n 'hover:not-disabled:tw-bg-primary-600',\n 'active:not-disabled:tw-bg-primary-800',\n\n // anchor disabled override\n 'aria-disabled:!tw-bg-primary-500',\n ],\n secondary: [\n 'tw-text-white',\n 'tw-bg-secondary-500',\n\n 'focus:tw-text-white',\n 'hover:tw-text-white',\n 'hover:not-disabled:tw-bg-secondary-700',\n 'active:not-disabled:tw-bg-secondary-800',\n\n // anchor disabled override\n 'aria-disabled:!tw-bg-secondary-500',\n ],\n danger: [\n 'tw-text-white',\n 'tw-bg-error-500',\n\n 'focus:tw-text-white',\n 'hover:tw-text-white',\n 'hover:not-disabled:tw-bg-error-600',\n 'active:not-disabled:tw-bg-error-700',\n\n // anchor disabled override\n 'aria-disabled:!tw-bg-error-500',\n ],\n invisible: [\n 'tw-text-neutral-800',\n 'tw-bg-transparent',\n\n 'focus:tw-text-neutral-800',\n 'hover:not-disabled:tw-bg-neutral-100',\n 'hover:tw-text-neutral-800',\n 'active:not-disabled:tw-bg-neutral-150',\n\n // contrasting icon on hover/active\n '[&_svg]:tw-text-neutral-400',\n '[&_svg]:hover:not-disabled:tw-text-secondary-600',\n '[&_svg]:active:not-disabled:tw-text-secondary-600',\n\n // anchor disabled override\n 'aria-disabled:!tw-bg-transparent',\n ],\n outline: [\n 'tw-text-neutral-800',\n 'tw-bg-white',\n // border\n '!tw-border-neutral-200',\n 'hover:tw-text-neutral-800',\n 'focus:tw-text-neutral-800',\n 'hover:not-disabled:!tw-border-neutral-300',\n 'hover:not-disabled:tw-bg-neutral-100',\n 'active:not-disabled:tw-bg-neutral-200',\n\n // contrasting icon hover, same as invisible\n '[&_svg]:tw-text-neutral-400',\n '[&_svg]:not-disabled:hover:tw-text-secondary-600',\n '[&_svg]:active:not-disabled:tw-text-secondary-600',\n\n // anchor disabled override\n 'aria-disabled:!tw-bg-white',\n 'aria-disabled:!tw-border-neutral-200',\n ],\n\n inline: [\n 'tw-text-neutral-800',\n 'tw-bg-transparent',\n 'tw-rounded-full',\n\n '[&_svg]:tw-text-neutral-400',\n '[&_svg]:not-disabled:hover:tw-text-secondary-600',\n '[&_svg]:not-disabled:focus:tw-text-secondary-600',\n ],\n },\n size: {\n medium: ['tw-max-h-10', 'tw-min-h-10', 'tw-px-4', 'tw-py-2.5', '[&_svg]:tw-size-4'],\n small: ['tw-max-h-8', 'tw-min-h-8', 'tw-px-4', 'tw-py-1.5', '[&_svg]:tw-size-4'],\n large: ['tw-max-h-12', 'tw-min-h-12', 'tw-px-4', 'tw-py-3.5', '[&_svg]:tw-size-4'],\n\n 'icon-lg': ['tw-size-12', 'tw-p-0', '[&_svg]:tw-size-6'],\n icon: ['tw-size-10', 'tw-p-0', '[&_svg]:tw-size-4'],\n 'icon-sm': ['tw-size-8', 'tw-p-0', '[&_svg]:tw-size-4'],\n 'icon-xs': ['tw-size-6', 'tw-p-0', '[&_svg]:tw-size-4'],\n 'icon-2xs': ['!tw-inline-flex', 'tw-size-5', 'tw-max-h-5', '[&_svg]:tw-size-3'],\n 'icon-3xs': ['tw-h-fit', 'tw-w-fit', '[&_svg]:tw-size-4'],\n },\n },\n },\n);\n\nexport const argoVariants = cva(\n [\n 'tailwindcss-preflight',\n\n // layout\n 'tw-relative',\n 'tw-inline-flex',\n 'tw-items-center',\n 'tw-justify-center',\n 'tw-whitespace-nowrap',\n 'tw-gap-2',\n\n // border\n 'tw-border',\n 'tw-border-transparent',\n 'tw-rounded-lg',\n\n // text\n 'tw-font-medium',\n 'tw-select-none',\n\n // focus visible\n '!tw-outline-none',\n 'focus-visible:tw-ring-2',\n\n // disabled\n 'disabled:tw-cursor-not-allowed',\n 'disabled:tw-opacity-50',\n 'active:tw-opacity-60',\n\n 'tw-transition-all',\n 'tw-bg-clip-padding',\n\n // anchor support\n '!tw-no-underline',\n\n // icon\n 'tw-shrink-0',\n '[&_svg]:tw-pointer-events-none',\n '[&_svg]:tw-shrink-0',\n \"[&_svg:not([class*='tw-size-'])]:tw-size-4\",\n ],\n {\n defaultVariants: {\n variant: 'primary',\n size: 'medium',\n },\n variants: {\n block: {\n true: ['tw-w-full'],\n },\n variant: {\n primary: [\n 'tw-bg-primary',\n 'tw-text-primary-foreground',\n '[a]:hover:tw-bg-primary/80',\n 'hover:not-disabled:tw-bg-primary/90',\n 'hover:tw-text-primary-foreground',\n 'focus:tw-text-primary-foreground',\n\n 'focus-visible:tw-border-primary',\n 'focus-visible:tw-ring-primary/50',\n ],\n secondary: [\n 'tw-bg-secondary',\n 'tw-text-secondary-foreground',\n 'hover:tw-bg-secondary/80',\n 'hover:tw-text-secondary-foreground',\n 'focus:tw-text-secondary-foreground',\n\n 'focus-visible:tw-border-secondary',\n 'focus-visible:tw-ring-primary/50',\n ],\n\n // should be called \"destructive\" by Figma\n danger: [\n 'tw-bg-destructive',\n 'tw-text-destructive-foreground',\n 'hover:tw-text-destructive-foreground',\n 'focus:tw-text-destructive-foreground',\n\n 'focus-visible:tw-border-destructive',\n 'focus-visible:tw-ring-destructive/20',\n ],\n outline: [\n '!tw-border-input',\n 'tw-bg-background',\n 'hover:not-disabled:tw-bg-accent',\n 'hover:not-disabled:tw-text-accent-foreground',\n 'hover:active:tw-bg-background',\n 'focus-visible:!tw-border-primary',\n 'focus-visible:tw-ring-primary/50',\n ],\n\n // should be called \"ghost\" by Figma\n invisible: [\n 'tw-bg-transparent',\n 'tw-text-foreground',\n 'hover:not-disabled:tw-bg-accent',\n 'hover:not-disabled:tw-text-accent-foreground',\n 'hover:not-disabled:tw-border-accent',\n\n 'focus-visible:tw-ring-primary/50',\n ],\n // should be called \"link\" by Figma\n inline: [\n 'tw-bg-transparent',\n 'tw-text-primary',\n 'hover:tw-underline',\n 'hover:active:tw-bg-transparent',\n 'focus-visible:tw-ring-primary/50',\n ],\n },\n size: {\n // should be called \"default\" by Figma\n medium: ['tw-max-h-9', 'tw-py-2', 'tw-px-4', 'tw-text-sm'],\n // should be called \"small\" by Figma\n small: ['tw-max-h-8', 'tw-py-2', 'tw-px-3', 'tw-text-xs'],\n // should be called \"large\" by Figma\n large: ['tw-max-h-10', 'tw-py-2.5', 'tw-px-6', 'tw-text-sm'],\n\n 'icon-lg': ['tw-size-10'],\n icon: ['tw-size-9'],\n 'icon-sm': ['tw-size-8'],\n // unsupported in ARGO, remove when old design is gone\n 'icon-xs': [],\n 'icon-2xs': [],\n 'icon-3xs': [],\n },\n },\n },\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Root, Slottable } from '@radix-ui/react-slot';\nimport type { VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\n\nimport { argoVariants, variants } from './styles';\n\ntype Props = {\n icon?: ComponentProps<typeof Icon>['icon'];\n isLoading?: boolean;\n asChild?: boolean;\n argo?: boolean;\n} & ComponentProps<'button'> &\n VariantProps<typeof variants>;\n\nexport const Button = ({\n ref,\n children,\n disabled = false,\n className,\n type = 'button',\n icon: iconProp,\n isLoading = false,\n asChild = false,\n onClick,\n argo = false,\n variant = 'primary',\n size = 'medium',\n block = false,\n ...buttonProps\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => {\n const Comp = asChild ? Root : 'button';\n const icon = isLoading ? 'spinner' : iconProp;\n const classNames = argo\n ? argoVariants({ variant: variant, size, block, className })\n : variants({\n size,\n variant,\n block,\n className,\n });\n\n const handleClick: ComponentProps<'button'>['onClick'] = (event) => {\n const isAnchor = event.currentTarget.tagName === 'A';\n\n // <a/> does not support disabled by default, and we cannot use pointer-events: none because cursor-not-allowed would not work.\n if (isAnchor && disabled) {\n event.preventDefault();\n return;\n }\n\n onClick?.(event);\n };\n\n return (\n <Comp\n {...buttonProps}\n ref={ref}\n disabled={disabled}\n aria-disabled={disabled}\n data-variant={variant}\n data-icon-only={!children}\n type={type}\n onClick={handleClick}\n className={cn(classNames)}\n >\n {icon && <Icon spin={isLoading} icon={icon} />}\n <Slottable>{children}</Slottable>\n </Comp>\n );\n};\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Root } from '@radix-ui/react-slot';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nconst buttonInlineVariants = cva(\n [\n 'tailwindcss-preflight',\n\n 'tw-inline-flex',\n 'tw-items-center',\n 'tw-gap-2',\n\n 'tw-underline-offset-2',\n\n 'disabled:tw-opacity-40',\n 'disabled:tw-cursor-not-allowed',\n 'disabled:tw-text-neutral-500',\n 'disabled:tw-no-underline',\n '[&_svg]:disabled:tw-text-neutral-400',\n ],\n {\n defaultVariants: {\n variant: 'link',\n color: 'link',\n },\n variants: {\n color: {\n link: [\n 'tw-text-secondary-500',\n 'hover:tw-text-secondary-600',\n '[&_svg]:tw-text-secondary-500',\n ],\n dark: ['tw-text-neutral-800 [&_svg]:tw-text-neutral-400'],\n danger: ['tw-text-error-500 [&_svg]:tw-text-error-500'],\n muted: ['tw-text-muted-foreground [&_svg]:tw-text-muted-foreground'],\n custom: [],\n },\n variant: {\n link: ['tw-underline', 'hover:tw-no-underline'],\n 'link-reverse': ['tw-no-underline', '', 'hover:tw-underline'],\n custom: [],\n },\n },\n },\n);\n\ntype Props = ComponentProps<'button'> &\n VariantProps<typeof buttonInlineVariants> & { asChild?: boolean };\n\nexport const ButtonInline = ({\n ref,\n children,\n className,\n variant,\n color,\n type = 'button',\n asChild = false,\n ...buttonProps\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => {\n const Comp = asChild ? Root : 'button';\n\n return (\n <Comp\n {...buttonProps}\n ref={ref}\n type={asChild ? undefined : type}\n className={buttonInlineVariants({ variant, color, className })}\n >\n {children}\n </Comp>\n );\n};\n","export * from './Button';\nexport * from './ButtonInline';\nexport { argoVariants } from './styles';\n","import { useState } from 'react';\nimport type { ComponentProps, ElementRef, MouseEventHandler, Ref } from 'react';\n\nimport type { TooltipProps } from '@keboola/design';\nimport { cn, Tooltip } from '@keboola/design';\n\nimport { copyToClipboard } from '../../utils';\n\ntype Props = {\n tooltip?: TooltipProps['tooltip'];\n tooltipPlacement?: TooltipProps['placement'];\n tooltipVariant?: TooltipProps['variant'];\n asChild?: TooltipProps['triggerAsChild'];\n text?: string | (() => string);\n} & ComponentProps<'button'>;\n\nexport const Clipboard = ({\n ref,\n text: textProp,\n children,\n tooltip = 'Copy to Clipboard',\n tooltipPlacement = 'top',\n tooltipVariant: tooltipVariantProp = 'action',\n asChild = false,\n onClick,\n className,\n ...restButtonProps\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => {\n const [isTooltipOpen, setIsTooltipOpen] = useState(false);\n const [state, setState] = useState<'ready' | 'copied' | 'error'>('ready');\n const text = typeof textProp === 'function' ? textProp() : textProp;\n\n const copy = async (text: string) => {\n try {\n // For the clipboard feature to work reliably, the window must be in focus for security reasons.\n // However, the button can be clicked without the window being focused.\n if (!document.hasFocus()) window.focus();\n\n await copyToClipboard(text);\n setState('copied');\n } catch {\n setState('error');\n }\n };\n\n const handleOnClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n if (text && state === 'ready') void copy(text);\n onClick?.(event);\n };\n\n const handleOnOpenChange: ComponentProps<typeof Tooltip.Root>['onOpenChange'] = (open) => {\n // Reset when the tooltip closes, allowing the user to leave the copy button.\n if (!open && state !== 'ready') setState('ready');\n setIsTooltipOpen(open);\n };\n\n const tooltipContent = (() => {\n if (!text) return 'Nothing to copy';\n if (state === 'error') return 'Failed to copy';\n if (state === 'copied') return 'Copied to Clipboard';\n return tooltip;\n })();\n\n const tooltipVariant: TooltipProps['variant'] =\n state === 'ready' && !!text ? tooltipVariantProp : 'action';\n\n return (\n <Tooltip.Root open={isTooltipOpen} onOpenChange={handleOnOpenChange}>\n <Tooltip.Trigger\n {...restButtonProps}\n asChild={asChild}\n keepOpenOnClick\n onClick={handleOnClick}\n className={cn('tw-cursor-pointer', className)}\n ref={ref}\n >\n {children ?? text}\n </Tooltip.Trigger>\n\n <Tooltip.Content\n keepOpenOnPointerDownOutside\n placement={tooltipPlacement}\n variant={tooltipVariant}\n >\n {tooltipContent}\n </Tooltip.Content>\n </Tooltip.Root>\n );\n};\n","export { Clipboard } from './Clipboard';\n","import type { ComponentProps } from 'react';\n\nimport { Button } from '../../components/Button';\nimport { Clipboard } from '../../components/Clipboard';\n\ntype ClipboardProps = Pick<\n ComponentProps<typeof Clipboard>,\n 'text' | 'tooltip' | 'tooltipPlacement' | 'tooltipVariant'\n>;\n\ntype ButtonProps = Omit<ComponentProps<typeof Button>, 'disabled'>;\n\ntype Props = ClipboardProps & ButtonProps;\n\nconst DEFAULT_ICON: Props['icon'] = 'copy';\n\nexport const ClipboardButton = ({\n // clipboard props\n text,\n tooltip,\n tooltipPlacement,\n tooltipVariant,\n\n // button props\n icon = DEFAULT_ICON,\n variant = 'outline',\n children,\n ...rest\n}: Props) => (\n <Clipboard\n asChild\n tooltip={tooltip}\n tooltipPlacement={tooltipPlacement}\n tooltipVariant={tooltipVariant}\n text={text}\n >\n <Button {...rest} icon={icon} variant={variant} disabled={!text}>\n {children}\n </Button>\n </Clipboard>\n);\n","export { ClipboardButton } from './ClipboardButton';\nexport { ClipboardInline } from './ClipboardInline';\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { ClipboardButton } from '../../blocks/ClipboardButton';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport { Tooltip } from '../Tooltip';\n\nconst MIN_SCALE = 0.5;\nconst MAX_SCALE = 3;\nconst ZOOM_STEP = 0.1;\n\ntype Props = {\n /** Raw HTML/SVG string. Caller is responsible for sanitizing user-generated content before passing. */\n html: string;\n copyText?: string;\n className?: string;\n};\n\nexport const ZoomableSvg = ({ html, copyText, className }: Props) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [scale, setScale] = useState(1);\n const [translate, setTranslate] = useState({ x: 0, y: 0 });\n const [isFullscreen, setIsFullscreen] = useState(false);\n\n useEffect(() => {\n if (!isFullscreen) return;\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.stopPropagation();\n setIsFullscreen(false);\n }\n };\n document.addEventListener('keydown', onKeyDown, { capture: true });\n return () => document.removeEventListener('keydown', onKeyDown, { capture: true });\n }, [isFullscreen]);\n\n const dragRef = useRef<{\n startX: number;\n startY: number;\n startTx: number;\n startTy: number;\n } | null>(null);\n\n useEffect(() => {\n const el = containerRef.current;\n if (!el) return;\n\n const onWheel = (e: WheelEvent) => {\n if (!e.ctrlKey && !e.metaKey) return;\n e.preventDefault();\n const delta = e.deltaY > 0 ? -ZOOM_STEP : ZOOM_STEP;\n setScale((s) => Math.min(MAX_SCALE, Math.max(MIN_SCALE, s + delta)));\n };\n\n el.addEventListener('wheel', onWheel, { passive: false });\n return () => el.removeEventListener('wheel', onWheel);\n }, []);\n\n const didDragRef = useRef(false);\n\n const handleMouseDown = useCallback(\n (e: React.MouseEvent) => {\n if (e.button !== 0) return;\n e.preventDefault();\n didDragRef.current = false;\n dragRef.current = {\n startX: e.clientX,\n startY: e.clientY,\n startTx: translate.x,\n startTy: translate.y,\n };\n },\n [translate],\n );\n\n const handleMouseMove = useCallback((e: React.MouseEvent) => {\n if (!dragRef.current) return;\n didDragRef.current = true;\n setTranslate({\n x: dragRef.current.startTx + e.clientX - dragRef.current.startX,\n y: dragRef.current.startTy + e.clientY - dragRef.current.startY,\n });\n }, []);\n\n const handleMouseUp = useCallback(() => {\n dragRef.current = null;\n }, []);\n\n const handleReset = useCallback(() => {\n setScale(1);\n setTranslate({ x: 0, y: 0 });\n }, []);\n\n const isZoomed = Math.abs(scale - 1) > 0.001 || translate.x !== 0 || translate.y !== 0;\n\n const handleClick = useCallback((e: React.MouseEvent) => {\n if (didDragRef.current) {\n e.stopPropagation();\n }\n }, []);\n\n const stopPropagation = useCallback((e: React.SyntheticEvent) => {\n e.stopPropagation();\n }, []);\n\n const diagramContent = (\n <div\n role=\"presentation\"\n className={cn('tw-group/zoom tw-relative', isFullscreen && 'tw-h-full')}\n onClick={handleClick}\n >\n <div\n role=\"presentation\"\n ref={containerRef}\n className={cn(\n 'tw-overflow-hidden tw-cursor-grab active:tw-cursor-grabbing tw-p-3',\n isFullscreen && 'tw-h-full',\n )}\n onMouseDown={handleMouseDown}\n onMouseMove={handleMouseMove}\n onMouseUp={handleMouseUp}\n onMouseLeave={handleMouseUp}\n >\n <div\n className={cn(\n 'tw-flex tw-justify-center tw-origin-center',\n isFullscreen && 'tw-h-full [&>svg]:tw-h-full',\n )}\n style={{ transform: `translate(${translate.x}px, ${translate.y}px) scale(${scale})` }}\n dangerouslySetInnerHTML={{ __html: html }}\n />\n </div>\n <div\n role=\"presentation\"\n className=\"tw-absolute tw-right-1 tw-top-1 tw-flex tw-gap-1 tw-opacity-0 tw-transition-opacity group-hover/zoom:tw-opacity-100\"\n onClick={stopPropagation}\n >\n {isZoomed && (\n <Tooltip tooltip=\"Reset zoom\" placement=\"top\" triggerAsChild>\n <Button size=\"small\" variant=\"outline\" onClick={handleReset} argo>\n Reset\n </Button>\n </Tooltip>\n )}\n {copyText && (\n <ClipboardButton\n text={copyText}\n tooltip=\"Copy code\"\n size=\"icon-sm\"\n variant=\"outline\"\n argo\n />\n )}\n <Tooltip\n tooltip={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'}\n placement=\"top\"\n triggerAsChild\n >\n <Button\n size=\"icon-sm\"\n variant=\"outline\"\n icon={\n isFullscreen\n ? 'down-left-and-up-right-to-center'\n : 'up-right-and-down-left-from-center'\n }\n aria-label={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'}\n onClick={() => setIsFullscreen((f) => !f)}\n argo\n />\n </Tooltip>\n </div>\n </div>\n );\n\n if (isFullscreen) {\n return (\n <div\n role=\"presentation\"\n className=\"tw-fixed tw-inset-0 tw-z-[1060] tw-bg-neutral-50 tw-p-4\"\n onClick={stopPropagation}\n >\n {diagramContent}\n </div>\n );\n }\n\n return (\n <div\n className={cn(\n 'tw-overflow-hidden tw-rounded-md tw-border tw-border-neutral-150 tw-bg-neutral-50',\n className,\n )}\n >\n {diagramContent}\n </div>\n );\n};\n","export { ZoomableSvg } from './ZoomableSvg';\n","import { useEffect, useId, useRef, useState } from 'react';\nimport { renderMermaidSVG } from 'beautiful-mermaid';\nimport type mermaid from 'mermaid';\n\nimport colors from '@keboola/tailwind-config/colors';\n\nimport { Skeleton } from '../../components/Skeleton/Skeleton';\nimport { ZoomableSvg } from '../../components/ZoomableSvg';\nimport { cn } from '../../utils';\n\ntype MermaidModule = { default: typeof mermaid };\n\nlet mermaidPromise: Promise<MermaidModule> | null = null;\n\nconst getMermaid = (): Promise<MermaidModule> => {\n if (!mermaidPromise) {\n mermaidPromise = import('mermaid')\n .then((m) => {\n m.default.initialize({\n startOnLoad: false,\n securityLevel: 'strict',\n theme: 'base',\n themeVariables: {\n primaryColor: colors.secondary[100],\n primaryTextColor: colors.neutral[800],\n primaryBorderColor: colors.secondary[700],\n secondaryColor: colors.white,\n secondaryTextColor: colors.neutral[800],\n secondaryBorderColor: colors.neutral[150],\n tertiaryColor: colors.warning[100],\n tertiaryTextColor: colors.neutral[800],\n tertiaryBorderColor: colors.warning[500],\n lineColor: colors.neutral[300],\n textColor: colors.neutral[800],\n mainBkg: colors.secondary[100],\n nodeBorder: colors.secondary[700],\n clusterBkg: colors.white,\n clusterBorder: colors.neutral[150],\n titleColor: colors.neutral[800],\n edgeLabelBackground: colors.white,\n nodeTextColor: colors.neutral[800],\n actorBorder: colors.secondary[700],\n actorBkg: colors.secondary[100],\n actorTextColor: colors.neutral[800],\n actorLineColor: colors.neutral[300],\n signalColor: colors.neutral[800],\n signalTextColor: colors.neutral[800],\n labelBoxBkgColor: colors.secondary[100],\n labelBoxBorderColor: colors.secondary[700],\n labelTextColor: colors.neutral[800],\n loopTextColor: colors.neutral[800],\n noteBorderColor: colors.warning[500],\n noteBkgColor: colors.warning[100],\n noteTextColor: colors.neutral[800],\n sectionBkgColor: colors.secondary[100],\n altSectionBkgColor: colors.white,\n sectionBkgColor2: colors.neutral[100],\n taskBorderColor: colors.secondary[700],\n taskBkgColor: colors.secondary[100],\n taskTextColor: colors.neutral[800],\n taskTextDarkColor: colors.neutral[800],\n taskTextLightColor: colors.neutral[800],\n activeTaskBorderColor: colors.primary.DEFAULT,\n activeTaskBkgColor: colors.secondary[200],\n doneTaskBorderColor: colors.primary[600],\n doneTaskBkgColor: colors.primary[100],\n critBorderColor: colors.error[500],\n critBkgColor: colors.error[100],\n fontFamily: 'Inter, system-ui, sans-serif',\n fontSize: '14px',\n },\n });\n return m;\n })\n .catch((err) => {\n mermaidPromise = null;\n throw err;\n });\n }\n return mermaidPromise;\n};\n\nconst stripFontImports = (svg: string): string =>\n svg.replace(/@import\\s+url\\([^)]*fonts\\.googleapis\\.com[^)]*\\);?\\s*/g, '');\n\nconst tryFastRender = (code: string): string | null => {\n try {\n return stripFontImports(\n renderMermaidSVG(code, {\n bg: colors.white,\n fg: colors.neutral[800],\n transparent: true,\n font: 'Inter, system-ui, sans-serif',\n }),\n );\n } catch {\n return null;\n }\n};\n\nconst makeResponsive = (svgString: string): string => {\n const viewBoxMatch = svgString.match(/viewBox=\"[^\"]*\\s([\\d.]+)\\s[\\d.]+\"/);\n const vbWidth = viewBoxMatch ? Math.round(Number(viewBoxMatch[1])) : undefined;\n\n let result = svgString\n .replace(/(<svg[^>]*?)\\s+width=\"[^\"]*\"/i, '$1 width=\"100%\"')\n .replace(/(<svg[^>]*?)\\s+height=\"[^\"]*\"/i, '$1');\n\n if (!vbWidth) return result;\n\n const hasStyle = /(<svg[^>]*?)\\s+style=\"([^\"]*)\"/i.test(result);\n if (hasStyle) {\n result = result.replace(/(<svg[^>]*?)\\s+style=\"([^\"]*)\"/i, (_m, pre, styles) => {\n const cleaned = styles.replace(/max-width:\\s*[^;\"]*;?\\s*/g, '').trim();\n const combined = [cleaned, `max-width: ${vbWidth}px`].filter(Boolean).join('; ');\n return `${pre} style=\"${combined}\"`;\n });\n } else {\n result = result.replace(/<svg/, `<svg style=\"max-width: ${vbWidth}px\"`);\n }\n\n return result;\n};\n\nconst RENDER_DEBOUNCE_MS = 300;\n\n// Module-level SVG cache — persists across component remounts (e.g. tab switches\n// that cause React to remount the tree). Same code always produces the same SVG.\nconst svgCache = new Map<string, string>();\n\ntype Props = {\n /** Mermaid diagram source code. Supports flowchart, sequence, class, state, ER,\n * pie, gantt, and mindmap. Gantt `dateFormat HH:mm` (time-only) is not supported\n * by mermaid's dayjs parser — use `dateFormat YYYY-MM-DD HH:mm` with `axisFormat %H:%M` instead. */\n code: string;\n};\n\nexport const MermaidDiagram = ({ code }: Props) => {\n const id = useId();\n const [svg, setSvg] = useState<string | null>(() => {\n const cached = svgCache.get(code);\n if (cached) return cached;\n const fast = tryFastRender(code);\n if (fast) {\n svgCache.set(code, fast);\n return fast;\n }\n return null;\n });\n const [renderFailed, setRenderFailed] = useState(false);\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const renderIdRef = useRef(0);\n\n // Synchronously reset stale state when code changes to avoid one-frame flash\n const [prevCode, setPrevCode] = useState(code);\n if (code !== prevCode) {\n setPrevCode(code);\n const cached = svgCache.get(code);\n const fast = cached ?? tryFastRender(code);\n if (fast && !cached) svgCache.set(code, fast);\n setSvg(fast);\n setRenderFailed(false);\n }\n\n useEffect(() => {\n // Skip if we already have a cached result (instant on remount)\n if (svgCache.has(code)) {\n setSvg(svgCache.get(code)!);\n setRenderFailed(false);\n return;\n }\n\n // Try fast synchronous render immediately\n const fastResult = tryFastRender(code);\n if (fastResult) {\n svgCache.set(code, fastResult);\n setSvg(fastResult);\n setRenderFailed(false);\n return;\n }\n\n // Fallback: debounce the async mermaid render\n setSvg(null);\n const currentRenderId = ++renderIdRef.current;\n setRenderFailed(false);\n\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n }\n\n debounceRef.current = setTimeout(() => {\n getMermaid()\n .then(async (mermaidModule) => {\n if (renderIdRef.current !== currentRenderId) return;\n const rendererId = `mermaid-${id.replaceAll(':', '')}`;\n const container = document.createElement('div');\n container.style.visibility = 'hidden';\n container.style.position = 'absolute';\n container.style.top = '-9999px';\n container.style.width = '900px';\n document.body.appendChild(container);\n try {\n const result = await mermaidModule.default.render(rendererId, code, container);\n if (renderIdRef.current === currentRenderId && result) {\n svgCache.set(code, result.svg);\n setSvg(result.svg);\n setRenderFailed(false);\n }\n } finally {\n container.remove();\n }\n })\n .catch((err) => {\n if (renderIdRef.current === currentRenderId) {\n console.error('[MermaidDiagram] fallback failed:', err);\n setSvg(null);\n setRenderFailed(true);\n }\n });\n }, RENDER_DEBOUNCE_MS);\n\n const timer = debounceRef.current;\n const renderId = renderIdRef;\n return () => {\n renderId.current++;\n if (timer) {\n clearTimeout(timer);\n }\n };\n }, [code, id]);\n\n const processedSvg = svg ? makeResponsive(svg) : null;\n\n if (renderFailed) {\n return (\n <pre\n className={cn(\n 'tw-my-3 tw-overflow-auto tw-whitespace-pre-wrap tw-break-all',\n 'tw-py-3 tw-px-4',\n 'tw-bg-neutral-50',\n 'tw-rounded-md tw-text-neutral-400',\n 'tw-text-sm tw-font-mono',\n )}\n >\n <code>{code}</code>\n </pre>\n );\n }\n\n if (processedSvg) {\n return (\n <ZoomableSvg\n key={code}\n html={processedSvg}\n copyText={`\\`\\`\\`mermaid\\n${code}\\n\\`\\`\\``}\n className=\"tw-my-3\"\n />\n );\n }\n\n return (\n <div className=\"tw-my-3 tw-overflow-hidden tw-rounded-md tw-border tw-border-neutral-150 tw-bg-neutral-50 tw-p-6\">\n <Skeleton className=\"tw-h-40\" />\n </div>\n );\n};\n","import { useState } from 'react';\nimport type { ReactNode } from 'react';\nimport { CodeNode } from '@lexical/code';\nimport { LinkNode } from '@lexical/link';\nimport { ListItemNode, ListNode } from '@lexical/list';\nimport { $convertFromMarkdownString } from '@lexical/markdown';\nimport { AutoFocusPlugin } from '@lexical/react/LexicalAutoFocusPlugin';\nimport { CheckListPlugin } from '@lexical/react/LexicalCheckListPlugin';\nimport { ClickableLinkPlugin } from '@lexical/react/LexicalClickableLinkPlugin';\nimport type { InitialConfigType } from '@lexical/react/LexicalComposer';\nimport { LexicalComposer } from '@lexical/react/LexicalComposer';\nimport { ContentEditable } from '@lexical/react/LexicalContentEditable';\nimport { LexicalErrorBoundary } from '@lexical/react/LexicalErrorBoundary';\nimport { HistoryPlugin } from '@lexical/react/LexicalHistoryPlugin';\nimport { HorizontalRuleNode } from '@lexical/react/LexicalHorizontalRuleNode';\nimport { HorizontalRulePlugin } from '@lexical/react/LexicalHorizontalRulePlugin';\nimport { LinkPlugin } from '@lexical/react/LexicalLinkPlugin';\nimport { ListPlugin } from '@lexical/react/LexicalListPlugin';\nimport { MarkdownShortcutPlugin } from '@lexical/react/LexicalMarkdownShortcutPlugin';\nimport { RichTextPlugin } from '@lexical/react/LexicalRichTextPlugin';\nimport { TabIndentationPlugin } from '@lexical/react/LexicalTabIndentationPlugin';\nimport { HeadingNode, QuoteNode } from '@lexical/rich-text';\n\nimport { cn } from '../../utils';\n\nimport { ImageNode } from './nodes/ImageNode';\nimport { MermaidNode } from './nodes/MermaidNode';\nimport { ImagePastePlugin } from './plugins/ImagePastePlugin';\nimport { KeyboardPlugin } from './plugins/KeyboardPlugin';\nimport { MarkdownSyncPlugin } from './plugins/MarkdownSyncPlugin';\nimport { ToolbarPlugin } from './plugins/ToolbarPlugin';\nimport { ImageRendererProvider } from './context';\nimport { editorTheme } from './theme';\nimport { CUSTOM_TRANSFORMERS, preprocessMarkdown } from './transformers';\n\nexport type MarkdownEditorProps = {\n /** Markdown string (controlled) */\n value: string;\n onChange?: (markdown: string) => void;\n /**\n * Renders content but never accepts input. Use for permanent view-only contexts\n * (e.g. a current user lacks edit permission). Toolbar is hidden.\n */\n readOnly?: boolean;\n /**\n * Temporarily blocks input but signals intent to re-enable\n * (e.g. while a save is in flight). Functionally identical to `readOnly` today.\n */\n disabled?: boolean;\n placeholder?: string;\n autoFocus?: boolean;\n /** Invoked on Cmd/Ctrl+Enter — typically used to commit a form. */\n onSave?: () => void;\n /** Invoked on Escape — typically used to discard or close the editor. */\n onCancel?: () => void;\n /**\n * Async image upload. Resolved URL is embedded as the image src\n * (`` in the underlying markdown).\n */\n onImageUpload?: (file: File) => Promise<{ url: string }>;\n className?: string;\n imageRenderer?: (props: { src: string; alt: string }) => ReactNode;\n showToolbar?: boolean;\n};\n\nconst EDITOR_NODES = [\n ImageNode,\n MermaidNode,\n HeadingNode,\n QuoteNode,\n ListNode,\n ListItemNode,\n CodeNode,\n LinkNode,\n HorizontalRuleNode,\n];\n\nexport const MarkdownEditor = ({\n value,\n onChange,\n readOnly = false,\n placeholder,\n autoFocus = false,\n disabled = false,\n onSave,\n onCancel,\n onImageUpload,\n className,\n imageRenderer,\n showToolbar = false,\n}: MarkdownEditorProps) => {\n const editable = !readOnly && !disabled;\n\n // Lexical reads editorState only on first render; later prop changes are applied by MarkdownSyncPlugin.\n const [initialConfig] = useState<InitialConfigType>(() => ({\n namespace: 'MarkdownEditor',\n theme: editorTheme,\n nodes: EDITOR_NODES,\n onError: (error: Error) => {\n console.error('[MarkdownEditor] uncaught editor error', error);\n },\n editable,\n editorState: () => {\n $convertFromMarkdownString(preprocessMarkdown(value), CUSTOM_TRANSFORMERS);\n },\n }));\n\n return (\n <LexicalComposer initialConfig={initialConfig}>\n <ImageRendererProvider value={imageRenderer ?? null}>\n <div className={cn('tw-prose', className)}>\n {showToolbar && editable && <ToolbarPlugin />}\n <div\n className={cn(\n 'tw-relative tw-rounded-md tw-p-2 tw-transition-colors',\n editable &&\n 'tw-cursor-text hover:tw-bg-neutral-50 focus-within:tw-ring-2 focus-within:tw-ring-secondary-500/40',\n )}\n >\n <RichTextPlugin\n contentEditable={\n <ContentEditable\n className=\"tw-min-h-[100px] tw-outline-none\"\n aria-placeholder={placeholder ?? ''}\n placeholder={\n placeholder ? (\n <div className=\"tw-pointer-events-none tw-absolute tw-left-2 tw-top-[calc(0.5rem+0.35em)] tw-select-none tw-text-neutral-400\">\n {placeholder}\n </div>\n ) : (\n <div />\n )\n }\n />\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n </div>\n <HistoryPlugin />\n <LinkPlugin />\n <ClickableLinkPlugin newTab />\n <ListPlugin />\n <CheckListPlugin />\n <HorizontalRulePlugin />\n <TabIndentationPlugin />\n <MarkdownShortcutPlugin transformers={CUSTOM_TRANSFORMERS} />\n <MarkdownSyncPlugin value={value} editable={editable} onChange={onChange} />\n <ImagePastePlugin onImageUpload={onImageUpload} />\n <KeyboardPlugin onSave={onSave} onCancel={onCancel} />\n {autoFocus && <AutoFocusPlugin />}\n </div>\n </ImageRendererProvider>\n </LexicalComposer>\n );\n};\n","import { createContext, use } from 'react';\nimport type { ReactNode } from 'react';\n\ntype ImageRenderer = (props: { src: string; alt: string }) => ReactNode;\n\nconst ImageRendererContext = createContext<ImageRenderer | null>(null);\n\nexport const ImageRendererProvider = ImageRendererContext;\n\nexport const useImageRenderer = (): ImageRenderer | null => use(ImageRendererContext);\n","import { useImageRenderer } from '../context';\n\nconst isPlaceholder = (src: string) => src.startsWith('upload-placeholder-');\n\nexport const ImageNodeComponent = ({ src, alt }: { src: string; alt: string }) => {\n const renderer = useImageRenderer();\n\n if (isPlaceholder(src)) {\n return (\n <span className=\"tw-inline-flex tw-items-center tw-gap-1 tw-rounded tw-bg-neutral-100 tw-px-2 tw-py-1 tw-text-xs tw-text-neutral-400\">\n Uploading image…\n </span>\n );\n }\n\n if (renderer) return <>{renderer({ src, alt })}</>;\n return <img src={src} alt={alt} />;\n};\n","/* eslint-disable react/only-export-components -- Lexical convention: $create/$is helpers co-locate with node */\nimport type { ReactNode } from 'react';\nimport type {\n DOMConversionMap,\n DOMExportOutput,\n EditorConfig,\n LexicalNode,\n NodeKey,\n SerializedLexicalNode,\n Spread,\n} from 'lexical';\nimport { DecoratorNode } from 'lexical';\n\nimport { ImageNodeComponent } from './ImageNodeComponent';\n\ntype SerializedImageNode = Spread<{ src: string; altText: string }, SerializedLexicalNode>;\n\nexport class ImageNode extends DecoratorNode<ReactNode> {\n __src: string;\n __altText: string;\n\n static getType(): string {\n return 'image';\n }\n\n static clone(node: ImageNode): ImageNode {\n return new ImageNode(node.__src, node.__altText, node.__key);\n }\n\n constructor(src: string, altText: string, key?: NodeKey) {\n super(key);\n this.__src = src;\n this.__altText = altText;\n }\n\n getSrc(): string {\n return this.__src;\n }\n\n getAlt(): string {\n return this.__altText;\n }\n\n setSrc(src: string): void {\n const writable = this.getWritable();\n writable.__src = src;\n }\n\n setAlt(altText: string): void {\n const writable = this.getWritable();\n writable.__altText = altText;\n }\n\n createDOM(config: EditorConfig): HTMLElement {\n const span = document.createElement('span');\n const className = config.theme.image;\n if (typeof className === 'string') {\n span.className = className;\n }\n return span;\n }\n\n updateDOM(): boolean {\n return false;\n }\n\n decorate(): ReactNode {\n return <ImageNodeComponent src={this.__src} alt={this.__altText} />;\n }\n\n isInline(): boolean {\n return true;\n }\n\n static importJSON(serializedNode: SerializedImageNode): ImageNode {\n return $createImageNode(serializedNode.src, serializedNode.altText);\n }\n\n exportJSON(): SerializedImageNode {\n return {\n type: 'image',\n version: 1,\n src: this.__src,\n altText: this.__altText,\n };\n }\n\n exportDOM(): DOMExportOutput {\n const element = document.createElement('img');\n element.setAttribute('src', this.__src);\n element.setAttribute('alt', this.__altText);\n return { element };\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n img: () => ({\n conversion: (domNode: HTMLElement) => {\n const src = domNode.getAttribute('src') || '';\n const alt = domNode.getAttribute('alt') || '';\n return { node: $createImageNode(src, alt) };\n },\n priority: 0,\n }),\n };\n }\n}\n\nexport const $createImageNode = (src: string, altText: string): ImageNode => {\n return new ImageNode(src, altText);\n};\n\nexport const $isImageNode = (node: LexicalNode | null | undefined): node is ImageNode => {\n return node instanceof ImageNode;\n};\n","import { lazy, Suspense } from 'react';\n\nimport { Skeleton } from '../../../components/Skeleton/Skeleton';\n\nconst MermaidDiagram = lazy(() =>\n import('../../../blocks/MermaidDiagram/MermaidDiagram').then(\n (m) => ({ default: m.MermaidDiagram }),\n (error: unknown) => {\n // Falling back to raw code on chunk-load failure (typically a stale tab after deploy).\n // Logging so we don't silently swap implementations.\n console.error('[MarkdownEditor] failed to load MermaidDiagram chunk', error);\n return {\n default: ({ code }: { code: string }) => (\n <pre>\n <code>{code}</code>\n </pre>\n ),\n };\n },\n ),\n);\n\nexport const MermaidNodeComponent = ({ code }: { code: string }) => {\n return (\n <Suspense\n fallback={\n <div className=\"tw-my-3 tw-overflow-hidden tw-rounded-card tw-border tw-border-neutral-150 tw-bg-neutral-50 tw-p-6\">\n <Skeleton className=\"tw-h-40\" />\n </div>\n }\n >\n <MermaidDiagram code={code} />\n </Suspense>\n );\n};\n","/* eslint-disable react/only-export-components -- Lexical convention: $create/$is helpers co-locate with node */\nimport type { ReactNode } from 'react';\nimport type { LexicalNode, NodeKey, SerializedLexicalNode, Spread } from 'lexical';\nimport { DecoratorNode } from 'lexical';\n\nimport { MermaidNodeComponent } from './MermaidNodeComponent';\n\ntype SerializedMermaidNode = Spread<{ code: string }, SerializedLexicalNode>;\n\nexport class MermaidNode extends DecoratorNode<ReactNode> {\n __code: string;\n\n static getType(): string {\n return 'mermaid';\n }\n\n static clone(node: MermaidNode): MermaidNode {\n return new MermaidNode(node.__code, node.__key);\n }\n\n constructor(code: string, key?: NodeKey) {\n super(key);\n this.__code = code;\n }\n\n getCode(): string {\n return this.__code;\n }\n\n setCode(code: string): void {\n const writable = this.getWritable();\n writable.__code = code;\n }\n\n createDOM(): HTMLElement {\n const div = document.createElement('div');\n div.setAttribute('data-lexical-mermaid', 'true');\n return div;\n }\n\n updateDOM(): boolean {\n return false;\n }\n\n decorate(): ReactNode {\n return <MermaidNodeComponent code={this.__code} />;\n }\n\n isInline(): boolean {\n return false;\n }\n\n static importJSON(serializedNode: SerializedMermaidNode): MermaidNode {\n return $createMermaidNode(serializedNode.code);\n }\n\n exportJSON(): SerializedMermaidNode {\n return {\n type: 'mermaid',\n version: 1,\n code: this.__code,\n };\n }\n}\n\nexport const $createMermaidNode = (code: string): MermaidNode => {\n return new MermaidNode(code);\n};\n\nexport const $isMermaidNode = (node: LexicalNode | null | undefined): node is MermaidNode => {\n return node instanceof MermaidNode;\n};\n","import type { ComponentProps, ReactNode } from 'react';\nimport { type ExternalToast, toast as sonnerToast } from 'sonner';\n\nimport { cn } from '../../utils';\n\nimport { ToastRoot } from './ToastRoot';\n\ntype ToastProps = ComponentProps<typeof ToastRoot>;\ntype Title = ToastProps['title'] | ((opts: { dismiss: () => void }) => ReactNode);\n\nexport type ToastOptions = { id?: string | number; title: Title } & Omit<\n ToastProps,\n 'id' | 'title'\n> &\n Pick<\n ExternalToast,\n 'onAutoClose' | 'onDismiss' | 'testId' | 'toasterId' | 'dismissible' | 'position'\n >;\ntype DerivedToastOptions = Omit<ToastOptions, 'title' | 'variant'>;\n\nexport const toast = ({\n onAutoClose,\n onDismiss,\n testId,\n toasterId,\n dismissible = true,\n position,\n title: titleProp,\n ...toast\n}: ToastOptions) => {\n const duration = (() => {\n if (typeof toast.duration === 'number') return toast.duration;\n if (toast.variant === 'error' || toast.variant === 'warning') return Infinity;\n return toast.duration ?? 5000;\n })();\n\n const renderCustomToast: Parameters<typeof sonnerToast.custom>[0] = (id) => {\n const title =\n typeof titleProp === 'function'\n ? titleProp({ dismiss: () => sonnerToast.dismiss(id) })\n : titleProp;\n\n return <ToastRoot {...toast} id={id} title={title} duration={duration} />;\n };\n\n return sonnerToast.custom(renderCustomToast, {\n // toast generated by sonner will always have an id, but we want to allow users to specify their own id if they want to\n // can not pass undefined, as it will break dismiss\n ...(toast.id != null ? { id: toast.id } : {}),\n unstyled: true,\n position,\n onAutoClose,\n onDismiss,\n testId,\n toasterId,\n dismissible,\n duration,\n // override defult focus-visible styles to match our design\n className: cn('tw-rounded-lg', 'focus-visible:!tw-ring-4', 'focus-visible:!tw-ring-primary/50'),\n });\n};\n\ntoast.success = (title: Title, options?: DerivedToastOptions) =>\n toast({\n ...options,\n title,\n variant: 'success',\n });\n\ntoast.error = (title: Title, options?: DerivedToastOptions) =>\n toast({\n ...options,\n title,\n variant: 'error',\n duration: options?.duration ?? Infinity,\n });\n\ntoast.warning = (title: Title, options?: DerivedToastOptions) =>\n toast({\n ...options,\n title,\n variant: 'warning',\n duration: options?.duration ?? Infinity,\n });\n\ntoast.info = (title: Title, options?: DerivedToastOptions) =>\n toast({\n ...options,\n title,\n variant: 'info',\n });\n\ntoast.dismiss = (toastId?: ToastOptions['id']) => sonnerToast.dismiss(toastId);\ntoast.dismissAll = () => sonnerToast.dismiss();\n","import type { ComponentProps, MouseEventHandler, ReactNode } from 'react';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\nimport { type Action, toast as sonnerToast } from 'sonner';\n\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\n\nimport { ToastAction } from './ToastAction';\nimport { ToastDescription } from './ToastDescription';\nimport { ToastDismiss } from './ToastDismiss';\nimport { ToastDuration } from './ToastDuration';\nimport { ToastTitle } from './ToastTitle';\n\nconst variants = cva(\n [\n 'tailwindcss-preflight',\n 'tw-group/toast',\n 'tw-relative',\n\n // layout\n 'tw-grid',\n 'tw-grid-cols-[0_1fr_auto_auto]',\n 'tw-items-start',\n 'has-[[data-slot=toast-description]]:tw-grid-rows-[auto_auto]',\n 'has-[[data-slot=toast-icon]]:tw-grid-cols-[auto_1fr_auto_auto]',\n '[&_[data-slot=toast-icon]]:tw-mr-2',\n '[&_[data-slot=toast-title]]:tw-mr-2.5',\n '[&_[data-slot=toast-description]]:tw-mr-2.5',\n '[&_[data-slot=toast-action]]:tw-mr-2',\n '[&_[data-slot=toast-description]]:tw-col-end-3',\n 'tw-gap-y-0',\n\n // styles\n 'tw-p-4',\n 'tw-rounded-lg',\n 'tw-shadow-md',\n ],\n {\n defaultVariants: {\n variant: 'info',\n },\n variants: {\n variant: {\n default: 'tw-border tw-border-border tw-bg-popover',\n error: 'tw-bg-error-550',\n info: 'tw-bg-secondary-600',\n success: 'tw-bg-primary-700',\n warning: 'tw-bg-warning-550',\n },\n },\n },\n);\n\ntype Variants = VariantProps<typeof variants>;\ntype Variant = NonNullable<Variants['variant']>;\ntype VariantIcon = Exclude<Variant, 'default'>;\ntype Icon = ComponentProps<typeof Icon>['icon'];\n\ntype Props = {\n id: string | number;\n title: ReactNode;\n icon?: Icon;\n description?: ReactNode;\n action?: Action;\n loading?: boolean;\n duration?: number;\n // offset?: number;\n} & Variants;\n\nconst DEFAULT_VARIANT_ICON: Record<VariantIcon, ComponentProps<typeof Icon>['icon']> = {\n error: 'exclamation-triangle',\n info: 'info-circle',\n success: 'check-circle',\n warning: 'exclamation-circle',\n};\n\nexport const ToastRoot = ({\n id,\n title,\n description,\n action,\n duration = Infinity,\n variant = 'info',\n loading = false,\n icon: iconProp,\n}: Props) => {\n const icon: Icon | null = (() => {\n if (loading) return 'spinner';\n if (iconProp) return iconProp;\n if (variant === 'default' || variant === null) return null;\n return DEFAULT_VARIANT_ICON[variant];\n })();\n\n const handleActionClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n sonnerToast.dismiss(id);\n action?.onClick(event);\n };\n\n return (\n <div data-variant={variant} className={cn(variants({ variant }))}>\n {icon && (\n <Icon\n data-slot=\"toast-icon\"\n spin={loading}\n className={cn(\n // styles\n 'tw-aspect-square',\n 'tw-size-4',\n 'tw-shrink-0',\n 'tw-p-1',\n 'tw-text-white',\n 'group-data-[variant=default]/toast:tw-text-popover-foreground',\n )}\n icon={icon}\n />\n )}\n\n <ToastTitle>{title}</ToastTitle>\n {description && <ToastDescription>{description}</ToastDescription>}\n {action && (\n <ToastAction style={action?.actionButtonStyle} onClick={handleActionClick}>\n {action.label}\n </ToastAction>\n )}\n <ToastDismiss onClick={() => sonnerToast.dismiss(id)} />\n {duration !== Infinity && <ToastDuration duration={duration} />}\n </div>\n );\n};\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'button'>;\n\nexport const ToastAction = ({\n ref,\n className,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => (\n <button\n {...rest}\n ref={ref}\n data-slot=\"toast-action\"\n type=\"button\"\n className={cn(\n // layout\n 'tw-col-start-3',\n 'tw-row-start-1',\n 'tw-flex',\n 'tw-items-center',\n 'tw-justify-center',\n\n // font\n 'tw-text-xs',\n 'tw-font-medium',\n 'tw-text-primary',\n\n // sizing\n 'tw-px-2',\n 'tw-h-6',\n\n // styles\n 'tw-bg-primary-foreground',\n 'tw-rounded',\n className,\n )}\n />\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const ToastDescription = ({\n ref,\n className,\n children,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => (\n <div\n ref={ref}\n data-slot=\"toast-description\"\n className={cn(\n 'tw-col-start-2',\n 'tw-font-normal',\n 'tw-break-words',\n 'tw-text-white',\n 'group-data-[variant=default]/toast:tw-text-muted-foreground',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\n\ntype Props = ComponentProps<'button'>;\n\nexport const ToastDismiss = ({\n ref,\n className,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => (\n <button\n ref={ref}\n data-slot=\"toast-dismiss\"\n className={cn(\n 'tw-flex',\n 'tw-justify-center',\n 'tw-col-start-4',\n 'tw-row-start-1',\n 'tailwindcss-preflight',\n '[&_svg]:tw-aspect-square',\n '[&_svg]:tw-size-4',\n '[&_svg]:tw-p-1',\n\n 'tw-text-white',\n 'group-data-[variant=default]/toast:[&_svg]:tw-text-popover-foreground',\n className,\n )}\n type=\"button\"\n {...rest}\n >\n <Icon icon=\"times\" />\n <span className=\"tw-sr-only\">Dismiss</span>\n </button>\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../utils';\n\ntype ToastDurationProps = ComponentProps<'span'> & {\n duration: number;\n};\n\nexport const ToastDuration = ({\n ref,\n duration,\n className,\n style,\n ...rest\n}: ToastDurationProps & { ref?: Ref<ElementRef<'span'>> }) => (\n <span\n {...rest}\n ref={ref}\n className={cn(\n 'tw-bg-white/30',\n 'group-data-[variant=default]/toast:tw-bg-popover-foreground/20',\n 'tw-rounded-bl-lg',\n 'tw-mx-px',\n\n // positioning\n 'tw-absolute',\n 'tw-bottom-0',\n 'tw-left-0',\n\n // sizing\n 'tw-h-1',\n\n // animation\n 'tw-animate-toast-progress',\n 'group-hover/toast:[animation-play-state:paused]',\n className,\n )}\n style={{\n animationDuration: `${duration}ms`,\n ...style,\n }}\n />\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'div'>;\n\nexport const ToastTitle = ({\n ref,\n className,\n children,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => (\n <div\n ref={ref}\n data-slot=\"toast-title\"\n className={cn(\n 'tw-col-start-2',\n 'tw-text-sm',\n 'tw-leading-6',\n 'tw-min-h-6',\n 'tw-self-center',\n 'tw-text-white',\n 'group-data-[variant=default]/toast:tw-text-popover-foreground',\n\n 'tw-break-words',\n 'tw-font-medium',\n className,\n )}\n {...rest}\n >\n {children}\n </div>\n);\n","import { useEffect, useRef } from 'react';\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\nimport type { NodeKey } from 'lexical';\nimport {\n $getNodeByKey,\n $insertNodes,\n COMMAND_PRIORITY_CRITICAL,\n DROP_COMMAND,\n PASTE_COMMAND,\n} from 'lexical';\n\nimport { toast } from '../../Toast/toast';\nimport { $createImageNode, $isImageNode } from '../nodes/ImageNode';\n\nconst ACCEPTED_IMAGE_TYPES = [\n 'image/png',\n 'image/jpeg',\n 'image/gif',\n 'image/webp',\n 'image/svg+xml',\n];\n\nconst MAX_IMAGE_SIZE = 10 * 1024 * 1024; // 10 MB\n\nconst PLACEHOLDER_PREFIX = 'upload-placeholder-';\n\nconst generatePlaceholderId = (): string => {\n if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') {\n return crypto.randomUUID();\n }\n return `${Date.now()}-${Math.random().toString(36).slice(2)}`;\n};\n\nconst isAcceptedImageType = (type: string) => ACCEPTED_IMAGE_TYPES.includes(type);\n\nconst getImageFilesFromDataTransfer = (dataTransfer: DataTransfer | null): File[] => {\n if (!dataTransfer) return [];\n\n if (dataTransfer.items.length > 0) {\n const files: File[] = [];\n for (const item of dataTransfer.items) {\n if (item.kind === 'file' && isAcceptedImageType(item.type)) {\n const file = item.getAsFile();\n if (file) files.push(file);\n }\n }\n if (files.length > 0) return files;\n }\n\n return Array.from(dataTransfer.files).filter((file) => isAcceptedImageType(file.type));\n};\n\nconst escapeMarkdownAlt = (text: string) => text.replace(/[[\\]()]/g, '');\n\ntype ImagePastePluginProps = {\n onImageUpload?: (file: File) => Promise<{ url: string }>;\n};\n\nexport const ImagePastePlugin = ({ onImageUpload }: ImagePastePluginProps) => {\n const [editor] = useLexicalComposerContext();\n const onImageUploadRef = useRef(onImageUpload);\n onImageUploadRef.current = onImageUpload;\n\n useEffect(() => {\n const uploadFile = (file: File) => {\n const upload = onImageUploadRef.current;\n if (!upload) return;\n\n if (file.size > MAX_IMAGE_SIZE) {\n toast.error(`Image \"${file.name}\" is too large. Maximum size is 10 MB.`);\n return;\n }\n\n // Insert placeholder and start upload outside the command handler\n // to avoid nested editor.update() batching issues\n let nodeKey: NodeKey | null = null;\n\n editor.update(() => {\n const placeholderNode = $createImageNode(\n `${PLACEHOLDER_PREFIX}${generatePlaceholderId()}`,\n 'Uploading image\\u2026',\n );\n $insertNodes([placeholderNode]);\n nodeKey = placeholderNode.getKey();\n });\n\n if (!nodeKey) return;\n const capturedKey: NodeKey = nodeKey;\n\n upload(file)\n .then(({ url }) => {\n editor.update(() => {\n const node = $getNodeByKey(capturedKey);\n if ($isImageNode(node)) {\n const altText = escapeMarkdownAlt(file.name.replace(/\\.[^.]+$/, '') || 'image');\n node.setSrc(url);\n node.setAlt(altText);\n }\n });\n })\n .catch((error: unknown) => {\n console.error('[MarkdownEditor] image upload failed', error);\n toast.error(`Failed to upload \"${file.name}\". Please try again.`);\n editor.update(() => {\n const node = $getNodeByKey(capturedKey);\n if (node) node.remove();\n });\n });\n };\n\n const removePaste = editor.registerCommand(\n PASTE_COMMAND,\n (event) => {\n if (!onImageUploadRef.current) return false;\n if (!(event instanceof ClipboardEvent)) return false;\n const files = getImageFilesFromDataTransfer(event.clipboardData);\n if (files.length === 0) return false;\n\n event.preventDefault();\n // Defer upload to next microtask to escape the command handler's update context\n Promise.resolve().then(() => files.forEach(uploadFile));\n return true;\n },\n COMMAND_PRIORITY_CRITICAL,\n );\n\n const removeDrop = editor.registerCommand(\n DROP_COMMAND,\n (event: DragEvent) => {\n if (!onImageUploadRef.current) return false;\n const files = getImageFilesFromDataTransfer(event.dataTransfer);\n if (files.length === 0) return false;\n\n event.preventDefault();\n // Defer upload to next microtask to escape the command handler's update context\n Promise.resolve().then(() => files.forEach(uploadFile));\n return true;\n },\n COMMAND_PRIORITY_CRITICAL,\n );\n\n return () => {\n removePaste();\n removeDrop();\n };\n }, [editor]);\n\n return null;\n};\n","import { useEffect, useRef } from 'react';\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\nimport { COMMAND_PRIORITY_HIGH, KEY_DOWN_COMMAND } from 'lexical';\n\ntype KeyboardPluginProps = {\n onSave?: () => void;\n onCancel?: () => void;\n};\n\nexport const KeyboardPlugin = ({ onSave, onCancel }: KeyboardPluginProps) => {\n const [editor] = useLexicalComposerContext();\n const onSaveRef = useRef(onSave);\n onSaveRef.current = onSave;\n const onCancelRef = useRef(onCancel);\n onCancelRef.current = onCancel;\n\n useEffect(() => {\n return editor.registerCommand(\n KEY_DOWN_COMMAND,\n (event: KeyboardEvent) => {\n if (event.key === 'Enter' && (event.ctrlKey || event.metaKey)) {\n event.preventDefault();\n onSaveRef.current?.();\n return true;\n }\n if (event.key === 'Escape') {\n onCancelRef.current?.();\n return true;\n }\n return false;\n },\n COMMAND_PRIORITY_HIGH,\n );\n }, [editor]);\n\n return null;\n};\n","import type {\n ElementTransformer,\n MultilineElementTransformer,\n TextMatchTransformer,\n Transformer,\n} from '@lexical/markdown';\nimport { CHECK_LIST, TRANSFORMERS } from '@lexical/markdown';\nimport {\n $createHorizontalRuleNode,\n $isHorizontalRuleNode,\n HorizontalRuleNode,\n} from '@lexical/react/LexicalHorizontalRuleNode';\n\nimport { $createImageNode, $isImageNode, ImageNode } from './nodes/ImageNode';\nimport { $createMermaidNode, $isMermaidNode, MermaidNode } from './nodes/MermaidNode';\n\n/** Markdown image: `` */\nconst IMAGE: TextMatchTransformer = {\n dependencies: [ImageNode],\n export: (node) => {\n if (!$isImageNode(node)) return null;\n return `})`;\n },\n importRegExp: /!\\[([^\\]]*)\\]\\(([^)]+)\\)/,\n regExp: /!\\[([^\\]]*)\\]\\(([^)]+)\\)$/,\n replace: (textNode, match) => {\n const [, alt = '', src = ''] = match;\n const imageNode = $createImageNode(src, alt);\n textNode.replace(imageNode);\n },\n trigger: ')',\n type: 'text-match',\n};\n\n/** Horizontal rule: `---`, `***`, or `___` */\nconst HORIZONTAL_RULE: ElementTransformer = {\n dependencies: [HorizontalRuleNode],\n export: (node) => {\n return $isHorizontalRuleNode(node) ? '---' : null;\n },\n regExp: /^(---|\\*\\*\\*|___)$/,\n replace: (parentNode) => {\n const node = $createHorizontalRuleNode();\n parentNode.replace(node);\n },\n type: 'element',\n};\n\n/** Fenced mermaid block: ` ```mermaid ... ``` ` → MermaidNode (rendered as diagram) */\nconst MERMAID: MultilineElementTransformer = {\n dependencies: [MermaidNode],\n export: (node) => {\n if (!$isMermaidNode(node)) return null;\n return '```mermaid\\n' + node.getCode() + '\\n```';\n },\n regExpStart: /^[ \\t]*(`{3,})mermaid(?:\\s.*)?$/,\n regExpEnd: {\n optional: true,\n regExp: /^[ \\t]*`{3,}$/,\n },\n replace: (rootNode, _children, _startMatch, _endMatch, linesInBetween) => {\n if (!linesInBetween) return;\n const code = linesInBetween.join('\\n').trim();\n if (code) {\n rootNode.append($createMermaidNode(code));\n }\n },\n handleImportAfterStartMatch: ({\n lines,\n rootNode,\n startLineIndex,\n startMatch,\n }): [boolean, number] => {\n const fence = startMatch[1];\n if (!fence) return [false, startLineIndex];\n const fenceLength = fence.trim().length;\n const endRegex = new RegExp(`^[ \\\\t]*\\`{${fenceLength},}$`);\n\n for (let i = startLineIndex + 1; i < lines.length; i++) {\n if (endRegex.test(lines[i] ?? '')) {\n const code = lines\n .slice(startLineIndex + 1, i)\n .join('\\n')\n .trim();\n if (code) {\n rootNode.append($createMermaidNode(code));\n }\n return [true, i];\n }\n }\n\n // No closing fence — consume remaining lines\n const code = lines\n .slice(startLineIndex + 1)\n .join('\\n')\n .trim();\n if (code) {\n rootNode.append($createMermaidNode(code));\n }\n return [true, lines.length - 1];\n },\n type: 'multiline-element',\n};\n\n/**\n * Custom transformers = our additions + built-in Lexical transformers.\n * MERMAID is placed before TRANSFORMERS so it intercepts ` ```mermaid ``` ` before the generic CODE transformer.\n * IMAGE is placed before built-in LINK to prevent `` from being parsed as `!` + link.\n */\nexport const CUSTOM_TRANSFORMERS: Transformer[] = [\n IMAGE,\n HORIZONTAL_RULE,\n CHECK_LIST,\n MERMAID,\n ...TRANSFORMERS,\n];\n\n// --- Table pre/post-processing ---\n// GFM tables can't round-trip through Lexical's markdown (no built-in table transformer).\n// We wrap them in fenced code blocks on import and unwrap on export to preserve them exactly.\n\nconst TABLE_FENCE_LANG = '__kbc_table__';\n\nconst isTableLine = (line: string): boolean => {\n const trimmed = line.trim();\n return trimmed.startsWith('|') && trimmed.endsWith('|');\n};\n\nconst CODE_FENCE_REGEX = /^[ \\t]*`{3,}/;\n\n/** Wrap GFM tables in code fences so they survive Lexical's markdown round-trip. */\nexport const preprocessMarkdown = (markdown: string): string => {\n const lines = markdown.split('\\n');\n const result: string[] = [];\n let tableLines: string[] = [];\n let insideCodeFence = false;\n\n const flushTable = () => {\n if (tableLines.length >= 2) {\n result.push(`\\`\\`\\`${TABLE_FENCE_LANG}`);\n result.push(...tableLines);\n result.push('```');\n } else {\n // Single pipe line isn't a table — keep as-is\n result.push(...tableLines);\n }\n tableLines = [];\n };\n\n for (const line of lines) {\n if (CODE_FENCE_REGEX.test(line)) {\n if (tableLines.length > 0) flushTable();\n insideCodeFence = !insideCodeFence;\n result.push(line);\n continue;\n }\n\n if (insideCodeFence) {\n result.push(line);\n continue;\n }\n\n if (isTableLine(line)) {\n tableLines.push(line);\n } else {\n if (tableLines.length > 0) flushTable();\n result.push(line);\n }\n }\n if (tableLines.length > 0) flushTable();\n\n return result.join('\\n');\n};\n\n/** Unwrap code-fenced tables back to raw GFM table markdown. */\nexport const postprocessMarkdown = (markdown: string): string => {\n const regex = new RegExp(`\\`\\`\\`${TABLE_FENCE_LANG}\\\\n([\\\\s\\\\S]*?)\\\\n\\`\\`\\``, 'g');\n return markdown.replace(regex, '$1');\n};\n","import { useEffect, useRef } from 'react';\nimport { $convertFromMarkdownString, $convertToMarkdownString } from '@lexical/markdown';\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\n\nimport { CUSTOM_TRANSFORMERS, postprocessMarkdown, preprocessMarkdown } from '../transformers';\n\nconst IMPORT_TAG = 'markdown-import';\n\ntype MarkdownSyncPluginProps = {\n value: string;\n editable: boolean;\n onChange?: (markdown: string) => void;\n};\n\nexport const MarkdownSyncPlugin = ({ value, editable, onChange }: MarkdownSyncPluginProps) => {\n const [editor] = useLexicalComposerContext();\n const lastExportedRef = useRef(value);\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n // Sync editable state — only when it actually changes\n useEffect(() => {\n editor.setEditable(editable);\n }, [editor, editable]);\n\n // Import: external value -> editor state\n useEffect(() => {\n if (value === lastExportedRef.current) return;\n lastExportedRef.current = value;\n\n editor.update(\n () => {\n $convertFromMarkdownString(preprocessMarkdown(value), CUSTOM_TRANSFORMERS);\n },\n { tag: IMPORT_TAG },\n );\n }, [editor, value]);\n\n // Export: editor state -> onChange (subscription)\n useEffect(() => {\n return editor.registerUpdateListener(({ tags }) => {\n if (tags.has(IMPORT_TAG)) return;\n\n editor.getEditorState().read(() => {\n const raw = $convertToMarkdownString(CUSTOM_TRANSFORMERS);\n const markdown = postprocessMarkdown(raw);\n if (markdown !== lastExportedRef.current) {\n lastExportedRef.current = markdown;\n onChangeRef.current?.(markdown);\n }\n });\n });\n }, [editor]);\n\n return null;\n};\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { $createCodeNode, $isCodeNode } from '@lexical/code';\nimport { $isLinkNode } from '@lexical/link';\nimport {\n $isListNode,\n INSERT_ORDERED_LIST_COMMAND,\n INSERT_UNORDERED_LIST_COMMAND,\n REMOVE_LIST_COMMAND,\n} from '@lexical/list';\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';\nimport { $createQuoteNode, $isHeadingNode, $isQuoteNode } from '@lexical/rich-text';\nimport { $getNearestBlockElementAncestorOrThrow } from '@lexical/utils';\nimport {\n $createParagraphNode,\n $getSelection,\n $isRangeSelection,\n type ElementFormatType,\n FORMAT_TEXT_COMMAND,\n} from 'lexical';\n\nimport { Icon } from '../../Icon';\n\nimport { AlignmentDropdown } from './toolbar/AlignmentDropdown';\nimport { BlockTypeDropdown } from './toolbar/BlockTypeDropdown';\nimport { LinkPanel } from './toolbar/LinkPanel';\nimport { ToolbarButton } from './toolbar/ToolbarButton';\nimport { ToolbarDivider } from './toolbar/ToolbarDivider';\n\nconst ELEMENT_FORMAT_TYPES = ['left', 'center', 'right', 'justify', 'start', 'end', ''] as const;\n\nconst isElementFormatType = (value: string): value is ElementFormatType =>\n (ELEMENT_FORMAT_TYPES as readonly string[]).includes(value);\n\nconst toElementFormatType = (value: string): ElementFormatType =>\n isElementFormatType(value) ? value : 'left';\n\nexport const ToolbarPlugin = () => {\n const [editor] = useLexicalComposerContext();\n const [isBold, setIsBold] = useState(false);\n const [isItalic, setIsItalic] = useState(false);\n const [isUnderline, setIsUnderline] = useState(false);\n const [isStrikethrough, setIsStrikethrough] = useState(false);\n const [isCode, setIsCode] = useState(false);\n const [isLink, setIsLink] = useState(false);\n const [blockType, setBlockType] = useState<string>('paragraph');\n const [alignment, setAlignment] = useState<ElementFormatType>('left');\n const [isVisible, setIsVisible] = useState(false);\n const [position, setPosition] = useState<{ top: number; left: number } | null>(null);\n const toolbarRef = useRef<HTMLDivElement>(null);\n const isMouseDownRef = useRef(false);\n const hasSelectionRef = useRef(false);\n\n const updatePosition = useCallback(() => {\n const nativeSelection = window.getSelection();\n if (!nativeSelection || nativeSelection.rangeCount === 0) return;\n const range = nativeSelection.getRangeAt(0);\n const rect = range.getBoundingClientRect();\n if (rect.width > 0) {\n const toolbarWidth = toolbarRef.current?.offsetWidth ?? 300;\n setPosition({\n top: rect.top + window.scrollY - 8,\n left: Math.max(8, rect.left + window.scrollX + rect.width / 2 - toolbarWidth / 2),\n });\n }\n }, []);\n\n useEffect(() => {\n const handleMouseDown = () => {\n isMouseDownRef.current = true;\n };\n const handleMouseUp = () => {\n isMouseDownRef.current = false;\n if (hasSelectionRef.current) {\n setIsVisible(true);\n }\n };\n document.addEventListener('mousedown', handleMouseDown);\n document.addEventListener('mouseup', handleMouseUp);\n return () => {\n document.removeEventListener('mousedown', handleMouseDown);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n }, []);\n\n const updateToolbar = useCallback(() => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n hasSelectionRef.current = false;\n setIsVisible(false);\n return;\n }\n\n const hasSelection = !selection.isCollapsed() && selection.getTextContent().length > 0;\n hasSelectionRef.current = hasSelection;\n\n if (!hasSelection) {\n setIsVisible(false);\n } else if (!isMouseDownRef.current) {\n setIsVisible(true);\n }\n\n if (hasSelection) {\n updatePosition();\n }\n\n setIsBold(selection.hasFormat('bold'));\n setIsItalic(selection.hasFormat('italic'));\n setIsUnderline(selection.hasFormat('underline'));\n setIsStrikethrough(selection.hasFormat('strikethrough'));\n setIsCode(selection.hasFormat('code'));\n\n const node = selection.anchor.getNode();\n const parent = node.getParent();\n setIsLink($isLinkNode(parent) || $isLinkNode(node));\n\n const blockElement = $getNearestBlockElementAncestorOrThrow(node);\n\n if ($isListNode(blockElement)) {\n const listType = blockElement.getListType();\n setBlockType(listType === 'number' ? 'number' : 'bullet');\n } else if ($isHeadingNode(blockElement)) {\n setBlockType(blockElement.getTag());\n } else if ($isCodeNode(blockElement)) {\n setBlockType('code');\n } else if ($isQuoteNode(blockElement)) {\n setBlockType('quote');\n } else {\n setBlockType('paragraph');\n }\n\n setAlignment(toElementFormatType(blockElement.getFormatType()));\n }, [updatePosition]);\n\n useEffect(() => {\n const unregisterUpdate = editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateToolbar();\n });\n });\n\n return () => {\n unregisterUpdate();\n };\n }, [editor, updateToolbar]);\n\n if (!isVisible || !position) return null;\n\n return createPortal(\n <div\n ref={toolbarRef}\n role=\"toolbar\"\n aria-label=\"Formatting options\"\n onMouseDown={(e) => e.preventDefault()}\n style={{ top: position.top, left: position.left }}\n className=\"tw-absolute tw-z-[1060] tw-flex tw--translate-y-full tw-items-center tw-gap-0.5 tw-rounded-lg tw-border tw-border-neutral-200 tw-bg-white tw-px-1.5 tw-py-1 tw-shadow-lg\"\n >\n <BlockTypeDropdown editor={editor} blockType={blockType} />\n\n <ToolbarDivider />\n\n <ToolbarButton\n active={isBold}\n onClick={() => editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'bold')}\n tooltip=\"Bold (Ctrl+B)\"\n >\n <Icon icon={['far', 'bold']} />\n </ToolbarButton>\n <ToolbarButton\n active={isItalic}\n onClick={() => editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'italic')}\n tooltip=\"Italic (Ctrl+I)\"\n >\n <Icon icon={['far', 'italic']} />\n </ToolbarButton>\n <ToolbarButton\n active={isUnderline}\n onClick={() => editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'underline')}\n tooltip=\"Underline (Ctrl+U)\"\n >\n <Icon icon={['far', 'underline']} />\n </ToolbarButton>\n <ToolbarButton\n active={isStrikethrough}\n onClick={() => editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'strikethrough')}\n tooltip=\"Strikethrough\"\n >\n <Icon icon={['far', 'strikethrough']} />\n </ToolbarButton>\n <ToolbarButton\n active={isCode}\n onClick={() => editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'code')}\n tooltip=\"Inline Code\"\n >\n <Icon icon={['far', 'code']} />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n <LinkPanel editor={editor} isLink={isLink} />\n\n <ToolbarDivider />\n\n <ToolbarButton\n active={blockType === 'bullet'}\n onClick={() => {\n if (blockType === 'bullet') {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined);\n }\n }}\n tooltip=\"Bullet List\"\n >\n <Icon icon={['far', 'list-ul']} />\n </ToolbarButton>\n <ToolbarButton\n active={blockType === 'number'}\n onClick={() => {\n if (blockType === 'number') {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n } else {\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined);\n }\n }}\n tooltip=\"Numbered List\"\n >\n <Icon icon={['far', 'list-ol']} />\n </ToolbarButton>\n\n <ToolbarDivider />\n\n <AlignmentDropdown editor={editor} alignment={alignment} />\n\n <ToolbarDivider />\n\n <ToolbarButton\n active={blockType === 'quote'}\n onClick={() => {\n editor.update(() => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) return;\n const anchorNode = selection.anchor.getNode();\n const element = $getNearestBlockElementAncestorOrThrow(anchorNode);\n const newNode = blockType === 'quote' ? $createParagraphNode() : $createQuoteNode();\n element.getChildren().forEach((child) => newNode.append(child));\n element.replace(newNode);\n });\n }}\n tooltip=\"Quote\"\n >\n <Icon icon={['far', 'block-quote']} />\n </ToolbarButton>\n <ToolbarButton\n active={blockType === 'code'}\n onClick={() => {\n editor.update(() => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) return;\n const anchorNode = selection.anchor.getNode();\n const element = $getNearestBlockElementAncestorOrThrow(anchorNode);\n const newNode = blockType === 'code' ? $createParagraphNode() : $createCodeNode();\n element.getChildren().forEach((child) => newNode.append(child));\n element.replace(newNode);\n });\n }}\n tooltip=\"Code Block\"\n >\n <Icon icon=\"square-code\" />\n </ToolbarButton>\n </div>,\n document.body,\n );\n};\n","import { useRef } from 'react';\nimport type { ComponentProps } from 'react';\nimport {\n $getSelection,\n $setSelection,\n type BaseSelection,\n type ElementFormatType,\n FORMAT_ELEMENT_COMMAND,\n type LexicalEditor,\n} from 'lexical';\n\nimport { cn } from '../../../../utils';\nimport { DropdownMenu } from '../../../DropdownMenu';\nimport { Icon } from '../../../Icon';\nimport { Tooltip } from '../../../Tooltip';\n\ntype IconProp = ComponentProps<typeof Icon>['icon'];\n\nconst ALIGNMENT_OPTIONS: { value: ElementFormatType; label: string; icon: IconProp }[] = [\n { value: 'left', label: 'Left', icon: ['far', 'align-left'] },\n { value: 'center', label: 'Center', icon: ['far', 'align-center'] },\n { value: 'right', label: 'Right', icon: ['far', 'align-right'] },\n { value: 'justify', label: 'Justify', icon: ['far', 'align-justify'] },\n];\n\nconst ALIGNMENT_ICONS: Record<string, IconProp> = Object.fromEntries(\n ALIGNMENT_OPTIONS.map(({ value, icon }) => [value, icon]),\n);\n\nexport const AlignmentDropdown = ({\n editor,\n alignment,\n}: {\n editor: LexicalEditor;\n alignment: ElementFormatType;\n}) => {\n const savedSelectionRef = useRef<BaseSelection | null>(null);\n\n const handleOpenChange = (open: boolean) => {\n if (open) {\n editor.getEditorState().read(() => {\n const selection = $getSelection();\n savedSelectionRef.current = selection ? selection.clone() : null;\n });\n }\n };\n\n const handleSelect = (align: ElementFormatType) => {\n // Restore selection and dispatch within the same update so the command sees\n // the restored selection (otherwise dispatchCommand may race with the queued\n // $setSelection and apply the format to the wrong block).\n editor.update(() => {\n if (savedSelectionRef.current) {\n $setSelection(savedSelectionRef.current);\n }\n editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, align);\n });\n };\n\n return (\n <DropdownMenu onOpenChange={handleOpenChange}>\n <Tooltip tooltip=\"Text alignment\" placement=\"top\" triggerAsChild>\n <DropdownMenu.Trigger asChild>\n <button\n type=\"button\"\n className={cn(\n 'tw-flex tw-h-7 tw-cursor-pointer tw-items-center tw-gap-1 tw-rounded tw-border-0 tw-bg-transparent tw-px-1.5 tw-text-xs tw-text-neutral-600',\n 'hover:tw-bg-neutral-100',\n )}\n >\n <Icon icon={ALIGNMENT_ICONS[alignment] ?? ['far', 'align-left']} fixedWidth />\n <Icon icon={['fas', 'caret-down']} className=\"tw-text-[8px]\" />\n </button>\n </DropdownMenu.Trigger>\n </Tooltip>\n <DropdownMenu.Content align=\"start\" className=\"tw-min-w-32\">\n {ALIGNMENT_OPTIONS.map(({ value, label, icon }) => (\n <DropdownMenu.Item\n key={value}\n onSelect={() => handleSelect(value)}\n className={cn(\n 'tw-flex tw-items-center tw-gap-2',\n alignment === value && 'tw-bg-secondary-50 tw-text-secondary-500',\n )}\n >\n <Icon icon={icon} fixedWidth />\n {label}\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n );\n};\n","import type { ComponentProps } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '../../utils';\n\nimport { DropdownMenuItemIndicator } from './DropdownMenuItemIndicator';\nimport { ItemIcon } from './ItemIcon';\nimport { itemVariants } from './styles';\n\ntype Props = ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem> & {\n closeOnSelect?: boolean;\n indicator?: 'switch' | 'checkbox' | 'check';\n indicatorAlign?: 'start' | 'end';\n isLoading?: boolean;\n};\n\nexport const DropdownMenuCheckboxItem = ({\n className,\n children,\n checked,\n closeOnSelect = false,\n onSelect,\n indicatorAlign = 'start',\n indicator = 'checkbox',\n isLoading = false,\n ...props\n}: Props) => {\n const isAtStart = indicatorAlign === 'start';\n const indicatorEle = isLoading ? (\n <ItemIcon spin icon=\"spinner\" className={isAtStart ? '' : 'tw-ml-auto'} />\n ) : (\n <DropdownMenuItemIndicator variant={indicator} className={isAtStart ? '' : 'tw-ml-auto'} />\n );\n\n const handleSelect = (event: Event) => {\n if (!closeOnSelect) event.preventDefault();\n onSelect?.(event);\n };\n\n return (\n <DropdownMenuPrimitive.CheckboxItem\n className={cn(itemVariants, className)}\n checked={checked}\n onSelect={handleSelect}\n {...props}\n >\n {isAtStart && indicatorEle}\n {children}\n {!isAtStart && indicatorEle}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n};\n","import type { ComponentProps } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nimport { Icon } from '../Icon';\n\nconst variants = cva(\n [\n 'tailwindcss-preflight',\n 'tw-pointer-events-none',\n\n // sizing\n 'tw-size-4',\n 'tw-aspect-square',\n 'tw-shrink-0',\n\n // layout\n 'tw-flex',\n 'tw-items-center',\n 'tw-justify-center',\n ],\n {\n variants: {\n variant: {\n none: [],\n radio: [\n 'tw-border',\n 'tw-border-solid',\n 'tw-border-border',\n 'tw-rounded-full',\n 'tw-bg-white',\n\n '[&_svg]:tw-size-2',\n '[&_svg]:data-[state=unchecked]:tw-hidden',\n 'group-data-[variant=argo]/dropdown-menu-content:[&_svg]:tw-text-primary',\n 'group-data-[variant=default]/dropdown-menu-content:[&_svg]:tw-text-secondary-500',\n ],\n check: ['[&_svg]:tw-size-3.5', '[&_svg]:tw-text-primary'],\n checkbox: [\n '[&_svg]:tw-text-white',\n 'tw-border',\n 'tw-border-solid',\n 'tw-border-neutral-200',\n 'tw-rounded',\n\n '[&_svg]:tw-size-3',\n '[&_svg]:data-[state=unchecked]:tw-hidden',\n 'group-data-[variant=argo]/dropdown-menu-content:data-[state=checked]:tw-border-primary',\n 'group-data-[variant=argo]/dropdown-menu-content:data-[state=checked]:tw-bg-primary',\n 'group-data-[variant=default]/dropdown-menu-content:data-[state=checked]:tw-border-secondary-500',\n 'group-data-[variant=default]/dropdown-menu-content:data-[state=checked]:tw-bg-secondary-500',\n ],\n switch: [\n 'tw-size-5',\n 'tw-text-neutral-400',\n 'data-[state=unchecked]:tw-rotate-180',\n 'group-data-[variant=default]/dropdown-menu-content:data-[state=checked]:tw-text-secondary-500',\n 'group-data-[variant=argo]/dropdown-menu-content:data-[state=checked]:tw-text-primary',\n ],\n },\n },\n },\n);\n\ntype Props = ComponentProps<typeof DropdownMenuPrimitive.ItemIndicator> &\n VariantProps<typeof variants>;\n\nexport const DropdownMenuItemIndicator = ({\n variant,\n className,\n forceMount: forceMountProp,\n ...rest\n}: Props) => {\n const icon: ComponentProps<typeof Icon>['icon'] = (() => {\n if (variant === 'switch') return 'toggle-large-on';\n if (variant === 'radio') return 'circle';\n return 'check';\n })();\n\n const forceMount = (() => {\n if (forceMountProp) return true;\n // All variants, except for check, require rendering at all times.\n return variant === 'check' ? undefined : true;\n })();\n\n if (variant === 'none') return null;\n\n return (\n <DropdownMenuPrimitive.ItemIndicator\n {...rest}\n forceMount={forceMount}\n className={variants({ variant, className })}\n >\n <Icon icon={icon} />\n </DropdownMenuPrimitive.ItemIndicator>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\nimport { Icon } from '../Icon';\n\ntype Props = ComponentProps<typeof Icon>;\n\nexport const ItemIcon = ({ className, ...props }: Props) => (\n <Icon\n {...props}\n className={cn(\n 'tw-aspect-square',\n 'tw-p-0.5',\n 'tw-size-4',\n 'group-data-[variant=default]/dropdown-menu-content:tw-text-neutral-400',\n 'group-data-[variant=argo]/dropdown-menu-content:tw-text-primary',\n 'group-data-[variant=argo]/dropdown-menu-content:group-aria-disabled:tw-text-muted-foreground',\n 'group-data-[variant=default]/dropdown-menu-content:group-hover:tw-text-secondary-500',\n className,\n )}\n />\n);\n","import { cn } from '../../utils';\n\nexport const itemVariants = cn(\n // reset\n 'tailwindcss-preflight',\n 'tw-outline-none',\n 'tw-group',\n 'tw-peer',\n 'tw-relative',\n\n // positioning\n 'tw-flex',\n 'tw-flex-1',\n 'tw-items-center',\n 'tw-gap-2',\n\n 'tw-cursor-pointer',\n 'tw-select-none',\n 'tw-transition-colors',\n\n // spacing\n 'tw-p-2',\n\n // typography\n 'tw-font-sans',\n 'tw-text-sm',\n\n 'aria-disabled:tw-pointer-events-none',\n 'aria-disabled:tw-opacity-50',\n\n 'focus-visible:tw-outline-none',\n\n 'group-data-[variant=default]/dropdown-menu-content:tw-rounded',\n 'group-data-[variant=default]/dropdown-menu-content:focus:tw-bg-neutral-100',\n 'group-data-[variant=default]/dropdown-menu-content:focus:tw-text-neutral-900',\n 'group-data-[variant=default]/dropdown-menu-content:hover:tw-bg-neutral-100',\n 'group-data-[variant=default]/dropdown-menu-content:hover:tw-text-neutral-900',\n\n 'group-data-[variant=argo]/dropdown-menu-content:tw-rounded-md',\n 'group-data-[variant=argo]/dropdown-menu-content:tw-text-slate-800',\n 'group-data-[variant=argo]/dropdown-menu-content:focus:tw-text-slate-800',\n 'group-data-[variant=argo]/dropdown-menu-content:focus:tw-bg-sky-100',\n 'group-data-[variant=argo]/dropdown-menu-content:hover:tw-text-slate-800',\n 'group-data-[variant=argo]/dropdown-menu-content:hover:tw-bg-sky-100',\n);\n\nexport const contentVariants = cn(\n 'tailwindcss-preflight',\n 'tw-group/dropdown-menu-content',\n 'tw-z-[1040]',\n 'tw-bg-white',\n\n // positioning\n 'tw-flex',\n 'tw-flex-col',\n 'tw-origin-[--radix-dropdown-menu-content-transform-origin]',\n\n // sizing\n 'tw-max-h-[var(--radix-dropdown-menu-content-available-height)]',\n 'tw-min-w-32',\n\n // border\n 'tw-border',\n 'tw-shadow-md',\n\n 'data-[variant=default]:tw-rounded-md',\n 'data-[variant=argo]:tw-rounded-2xl',\n\n // animations\n 'data-[state=open]:tw-animate-in',\n 'data-[state=open]:tw-fade-in-0',\n 'data-[state=open]:tw-zoom-in-95',\n\n 'data-[state=closed]:tw-animate-out',\n 'data-[state=closed]:tw-fade-out-0',\n 'data-[state=closed]:tw-zoom-out-95',\n\n 'data-[side=bottom]:tw-slide-in-from-top-2',\n 'data-[side=left]:tw-slide-in-from-right-2',\n 'data-[side=right]:tw-slide-in-from-left-2',\n 'data-[side=top]:tw-slide-in-from-bottom-2',\n);\n","import type { ComponentProps } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '../../utils';\nimport { ScrollArea } from '../ScrollArea';\n\nimport { useDropdownMenuContext } from './DropdownMenuContext';\nimport { contentVariants } from './styles';\n\ntype Props = Omit<\n ComponentProps<typeof DropdownMenuPrimitive.Content>,\n 'forceMount' | 'asChild'\n> & {\n forceMount?: boolean;\n viewPortClassName?: string;\n container?: HTMLElement | null;\n};\n\nexport const DropdownMenuContent = ({\n className,\n sideOffset = 4,\n forceMount,\n children,\n viewPortClassName,\n container,\n ...props\n}: Props) => {\n const { variant } = useDropdownMenuContext();\n\n return (\n <DropdownMenuPrimitive.Portal forceMount={forceMount || undefined} container={container}>\n <DropdownMenuPrimitive.Content\n {...props}\n data-variant={variant}\n sideOffset={sideOffset}\n className={contentVariants}\n >\n <ScrollArea\n className={className}\n viewPortClassName={cn(\n 'tw-p-2',\n 'tw-max-h-[var(--radix-dropdown-menu-content-available-height)]',\n viewPortClassName,\n )}\n scrollBarClassName=\"tw-w-1.5\"\n >\n {children}\n </ScrollArea>\n </DropdownMenuPrimitive.Content>\n </DropdownMenuPrimitive.Portal>\n );\n};\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\n\nimport { cn } from '../../utils';\n\nimport { ScrollBar } from './ScrollBar';\n\ntype Props = ComponentProps<typeof ScrollAreaPrimitive.Root> & {\n viewPortClassName?: string;\n scrollBarClassName?: string;\n orientation?: ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>['orientation'];\n};\n\nexport const ScrollArea = ({\n ref,\n className,\n children,\n viewPortClassName,\n orientation,\n scrollBarClassName,\n ...props\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => (\n <ScrollAreaPrimitive.Root\n data-slot=\"scroll-area\"\n className={cn(\n 'tw-peer/scroll-area tw-relative tw-overflow-hidden focus-visible:tw-outline-none',\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport\n ref={ref}\n className={cn(\n 'tw-h-full tw-w-full tw-rounded-[inherit] focus-visible:tw-outline-none',\n viewPortClassName,\n )}\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n {orientation ? (\n <ScrollBar className={scrollBarClassName} orientation={orientation} />\n ) : (\n <>\n <ScrollBar className={scrollBarClassName} orientation=\"vertical\" />\n <ScrollBar className={scrollBarClassName} orientation=\"horizontal\" />\n </>\n )}\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n);\n","import type { ComponentProps } from 'react';\nimport * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>;\n\nexport const ScrollBar = ({ className, orientation = 'vertical', ...props }: Props) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n orientation={orientation}\n className={cn(\n 'tw-flex tw-touch-none tw-select-none tw-transition-color',\n '[data-state=\"hidden\"]:tw-bg-pink-500',\n {\n 'tw-h-full tw-w-2.5 tw-p-px': orientation === 'vertical',\n 'tw-h-2.5 tw-flex-col tw-p-px': orientation === 'horizontal',\n },\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb\n className={cn(\n 'tw-relative',\n 'tw-flex-1',\n 'tw-rounded-full',\n 'tw-bg-neutral-200',\n 'hover:tw-bg-neutral-400',\n )}\n />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n);\n","import { createContext, use } from 'react';\n\nexport type DropdownMenuVariant = 'default' | 'argo';\n\ntype DropdownMenuContextType = {\n variant: DropdownMenuVariant;\n};\n\nexport const DropdownMenuContext = createContext<DropdownMenuContextType>({\n variant: 'default',\n});\n\nexport const useDropdownMenuContext = () => use(DropdownMenuContext);\n","import type { ComponentProps, ElementRef, PointerEventHandler, Ref } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport { Root, Slottable } from '@radix-ui/react-slot';\n\nimport { cn } from '../../utils';\nimport type { Icon } from '../Icon';\n\nimport { ItemIcon } from './ItemIcon';\nimport { itemVariants } from './styles';\n\ntype Props = ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n /**\n * Fix for `autoFocus` on inputs not working correctly in modals.\n * While the DropdownMenuItem was animating out and the modal was animating in, the dying DropdownMenuItem was constantly trying to steal focus while the Dialog was trying to correctly set the new focus.\n * https://github.com/radix-ui/primitives/issues/2193#issuecomment-2758461323\n */\n asModalTrigger?: boolean;\n icon?: ComponentProps<typeof Icon>['icon'];\n isLoading?: boolean;\n iconClassName?: string;\n};\n\nexport const DropdownMenuItem = ({\n ref,\n className,\n asModalTrigger = false,\n onSelect,\n onPointerLeave,\n onPointerMove,\n children,\n asChild,\n icon: iconProp,\n iconClassName,\n isLoading = false,\n ...props\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => {\n const Comp = asChild ? Root : 'div';\n const icon = isLoading ? 'spinner' : iconProp;\n\n const handleOnSelect = (event: Event) => {\n // prevents dropdown menu from closing to prevent modal unmounting from dom\n if (asModalTrigger) event.preventDefault();\n onSelect?.(event);\n };\n\n const handlePointerLeave: PointerEventHandler<HTMLDivElement> = (event) => {\n // prevents focus stealing from modal\n if (asModalTrigger) event.preventDefault();\n onPointerLeave?.(event);\n };\n\n const handlePointerMove: PointerEventHandler<HTMLDivElement> = (event) => {\n // prevents focus stealing from modal\n if (asModalTrigger) event.preventDefault();\n onPointerMove?.(event);\n };\n\n return (\n <DropdownMenuPrimitive.Item\n {...props}\n ref={ref}\n onSelect={handleOnSelect}\n onPointerLeave={handlePointerLeave}\n onPointerMove={handlePointerMove}\n className={cn(itemVariants, className)}\n asChild\n >\n <Comp>\n {icon && <ItemIcon spin={isLoading} icon={icon} className={iconClassName} />}\n <Slottable>{children}</Slottable>\n </Comp>\n </DropdownMenuPrimitive.Item>\n );\n};\n","import type { ComponentProps } from 'react';\nimport { cva } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nconst descriptionVariants = cva(\n [\n 'tw-box-border',\n 'tw-ml-auto',\n 'tw-font-sans',\n 'tw-tracking-normal',\n 'tw-font-normal',\n 'tw-text-xs',\n 'tw-text-muted-foreground',\n ],\n {\n variants: {\n hideOnHover: {\n true: ['group-focus-within:tw-hidden', 'group-hover:tw-hidden'],\n false: [],\n },\n },\n defaultVariants: {},\n },\n);\n\ntype Props = ComponentProps<'span'> & {\n hideOnHover?: boolean;\n};\n\nexport const DropdownMenuItemDescription = ({\n className,\n children,\n hideOnHover = false,\n ...props\n}: Props) => {\n return (\n <span {...props} className={cn(descriptionVariants({ hideOnHover }), className)}>\n {children}\n </span>\n );\n};\n","import type { ComponentProps } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof DropdownMenuPrimitive.Label>;\n\nexport const DropdownMenuLabel = ({ className, ...props }: Props) => {\n return (\n <DropdownMenuPrimitive.Label\n className={cn(\n 'tw-p-2',\n 'tw-font-medium',\n 'tw-text-xs',\n 'tw-text-muted-foreground',\n className,\n )}\n {...props}\n />\n );\n};\n","import type { ComponentProps } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\ntype Props<Value> = Omit<\n ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>,\n 'value' | 'onValueChange' | 'defaultValue'\n> & {\n value?: Value;\n defaultValue?: Value;\n onValueChange?: (value: Value) => void;\n};\n\nexport const DropdownMenuRadioGroup = <Value extends string = string>({\n value,\n defaultValue,\n onValueChange,\n ...props\n}: Props<Value>) => {\n const handleChange = (value: string) => {\n onValueChange?.(value as Value);\n };\n\n return (\n <DropdownMenuPrimitive.RadioGroup\n {...props}\n value={value}\n defaultValue={defaultValue}\n onValueChange={handleChange}\n />\n );\n};\n","import type { ComponentProps } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '../../../utils';\nimport type { Icon } from '../../Icon';\nimport { DropdownMenuItemIndicator } from '../DropdownMenuItemIndicator';\nimport { ItemIcon } from '../ItemIcon';\nimport { itemVariants } from '../styles';\n\ntype Props = ComponentProps<typeof DropdownMenuPrimitive.RadioItem> & {\n closeOnSelect?: boolean;\n indicatorAlign?: 'start' | 'end';\n indicator?: 'radio' | 'check' | 'none';\n icon?: ComponentProps<typeof Icon>['icon'];\n iconClassName?: string;\n isLoading?: boolean;\n};\n\nexport const DropdownMenuRadioItem = ({\n className,\n children,\n closeOnSelect,\n onSelect,\n indicatorAlign = 'start',\n indicator = 'radio',\n icon,\n iconClassName,\n isLoading = false,\n ...props\n}: Props) => {\n const isAtStart = indicatorAlign === 'start';\n const indicatorEle = isLoading ? (\n <ItemIcon spin icon=\"spinner\" className={iconClassName} />\n ) : (\n <DropdownMenuItemIndicator variant={indicator} />\n );\n\n const handleSelect = (event: Event) => {\n if (!closeOnSelect) event.preventDefault();\n onSelect?.(event);\n };\n\n return (\n <DropdownMenuPrimitive.RadioItem\n className={cn(\n itemVariants,\n 'data-[state=checked]:tw-cursor-default',\n {\n 'data-[state=checked]:tw-bg-neutral-100': indicator === 'none',\n 'group-data-[variant=argo]/dropdown-menu-content:data-[state=checked]:tw-bg-sky-100':\n indicator === 'check',\n },\n className,\n )}\n onSelect={handleSelect}\n {...props}\n >\n {isAtStart && indicatorEle}\n {icon && <ItemIcon icon={icon} className={iconClassName} />}\n <span className=\"tw-flex tw-min-w-0 tw-flex-1 tw-items-center tw-gap-2\">{children}</span>\n {!isAtStart && indicatorEle}\n </DropdownMenuPrimitive.RadioItem>\n );\n};\n","import type { ComponentProps } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof DropdownMenuPrimitive.Separator>;\n\nexport const DropdownMenuSeparator = ({ className, ...props }: Props) => (\n <DropdownMenuPrimitive.Separator\n className={cn(\n 'tw-relative',\n 'tw-z-10',\n\n // layout\n 'tw-flex',\n 'tw-items-center',\n 'tw-justify-center',\n 'tw-w-full',\n\n // separator line\n 'before:tw-content-[\"\"]',\n 'before:tw-w-full',\n 'before:tw-h-px',\n\n 'group-data-[variant=default]/dropdown-menu-content:tw-py-2',\n 'group-data-[variant=default]/dropdown-menu-content:before:tw-bg-neutral-150',\n\n 'group-data-[variant=argo]/dropdown-menu-content:tw-py-1',\n 'group-data-[variant=argo]/dropdown-menu-content:before:tw-bg-border',\n\n className,\n )}\n {...props}\n />\n);\n","import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nexport const DropdownMenuSub = DropdownMenuPrimitive.Sub;\n","import type { ComponentProps } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '../../../utils';\nimport { useDropdownMenuContext } from '../DropdownMenuContext';\nimport { contentVariants } from '../styles';\n\ntype Props = ComponentProps<typeof DropdownMenuPrimitive.SubContent>;\n\nexport const DropdownMenuSubContent = ({ className, ...props }: Props) => {\n const { variant } = useDropdownMenuContext();\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.SubContent\n data-variant={variant}\n className={cn(contentVariants, 'tw-z-[1041]', 'tw-p-2', className)}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n};\n","import type { ComponentProps } from 'react';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '../../../utils';\nimport { Icon } from '../../Icon';\nimport { itemVariants } from '../styles';\n\ntype Props = ComponentProps<typeof DropdownMenuPrimitive.SubTrigger>;\n\nexport const DropdownMenuSubTrigger = ({ className, children, ...props }: Props) => {\n return (\n <DropdownMenuPrimitive.SubTrigger className={cn(itemVariants, className)} {...props}>\n {children}\n <Icon icon=\"chevron-right\" className=\"tw-ml-auto\" />\n </DropdownMenuPrimitive.SubTrigger>\n );\n};\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { Trigger } from '@radix-ui/react-dropdown-menu';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<typeof Trigger>;\n\nexport const DropdownMenuTrigger = ({\n ref,\n className,\n ...props\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => (\n <Trigger\n {...props}\n ref={ref}\n data-slot=\"dropdown-menu-trigger\"\n className={cn('tw-group/dropdown-menu-trigger', className)}\n />\n);\n","import { useMemo } from 'react';\nimport type { ComponentProps } from 'react';\nimport { Group, Root } from '@radix-ui/react-dropdown-menu';\n\nimport { DropdownMenuCheckboxItem } from './DropdownMenuCheckboxItem';\nimport { DropdownMenuContent } from './DropdownMenuContent';\nimport type { DropdownMenuVariant } from './DropdownMenuContext';\nimport { DropdownMenuContext } from './DropdownMenuContext';\nimport { DropdownMenuItem } from './DropdownMenuItem';\nimport { DropdownMenuItemDescription } from './DropdownMenuItemDescription';\nimport { DropdownMenuLabel } from './DropdownMenuLabel';\nimport { DropdownMenuRadioGroup, DropdownMenuRadioItem } from './DropdownMenuRadioGroup';\nimport { DropdownMenuSeparator } from './DropdownMenuSeparator';\nimport { DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger } from './DropdownMenuSub';\nimport { DropdownMenuTrigger } from './DropdownMenuTrigger';\n\ntype Props = ComponentProps<typeof Root> & {\n variant?: DropdownMenuVariant;\n};\n\nexport const DropdownMenu = ({\n // change a default value to false, for modal property, as it is not used in most cases\n modal = false,\n variant = 'default',\n ...props\n}: Props) => {\n const contextValue = useMemo(() => ({ variant }), [variant]);\n\n return (\n <DropdownMenuContext value={contextValue}>\n <Root {...props} modal={modal} />\n </DropdownMenuContext>\n );\n};\n\n/**\n * Main Layout\n */\nDropdownMenu.Trigger = DropdownMenuTrigger;\nDropdownMenu.Content = DropdownMenuContent;\nDropdownMenu.Group = Group;\n\n/**\n * Sub Layout\n */\nDropdownMenu.Sub = DropdownMenuSub;\nDropdownMenu.SubContent = DropdownMenuSubContent;\nDropdownMenu.SubTrigger = DropdownMenuSubTrigger;\n\n/**\n * Items can be used either Sub ar Main Layout\n */\nDropdownMenu.Separator = DropdownMenuSeparator;\nDropdownMenu.Label = DropdownMenuLabel;\nDropdownMenu.Item = DropdownMenuItem;\nDropdownMenu.CheckboxItem = DropdownMenuCheckboxItem;\nDropdownMenu.RadioGroup = DropdownMenuRadioGroup;\nDropdownMenu.RadioItem = DropdownMenuRadioItem;\n\n// item content\nDropdownMenu.ItemDescription = DropdownMenuItemDescription;\n","import { useRef } from 'react';\nimport type { ComponentProps } from 'react';\nimport { $createCodeNode } from '@lexical/code';\nimport { INSERT_ORDERED_LIST_COMMAND, INSERT_UNORDERED_LIST_COMMAND } from '@lexical/list';\nimport { $createHeadingNode, $createQuoteNode } from '@lexical/rich-text';\nimport { $getNearestBlockElementAncestorOrThrow } from '@lexical/utils';\nimport {\n $createParagraphNode,\n $getSelection,\n $isRangeSelection,\n $setSelection,\n type BaseSelection,\n type LexicalEditor,\n} from 'lexical';\n\nimport { cn } from '../../../../utils';\nimport { DropdownMenu } from '../../../DropdownMenu';\nimport { Icon } from '../../../Icon';\nimport { Tooltip } from '../../../Tooltip';\n\ntype IconProp = ComponentProps<typeof Icon>['icon'];\n\nconst BLOCK_TYPE_META = {\n paragraph: { label: 'Normal', icon: ['far', 'font'] as IconProp, selectable: true },\n h1: { label: 'Heading 1', icon: ['far', 'h1'] as IconProp, selectable: true },\n h2: { label: 'Heading 2', icon: ['far', 'h2'] as IconProp, selectable: true },\n h3: { label: 'Heading 3', icon: ['far', 'h3'] as IconProp, selectable: true },\n bullet: { label: 'Bullet List', icon: ['far', 'list-ul'] as IconProp, selectable: false },\n number: { label: 'Numbered List', icon: ['far', 'list-ol'] as IconProp, selectable: false },\n quote: { label: 'Quote', icon: ['far', 'block-quote'] as IconProp, selectable: false },\n code: { label: 'Code Block', icon: 'square-code' as IconProp, selectable: false },\n} as const;\n\ntype BlockType = keyof typeof BLOCK_TYPE_META;\n\nconst BLOCK_TYPE_OPTIONS = (\n Object.entries(BLOCK_TYPE_META) as [BlockType, (typeof BLOCK_TYPE_META)[BlockType]][]\n)\n .filter(([, meta]) => meta.selectable)\n .map(([value, { label, icon }]) => ({ value, label, icon }));\n\nconst isBlockType = (value: string): value is BlockType =>\n Object.prototype.hasOwnProperty.call(BLOCK_TYPE_META, value);\n\nexport const BlockTypeDropdown = ({\n editor,\n blockType,\n}: {\n editor: LexicalEditor;\n blockType: string;\n}) => {\n const savedSelectionRef = useRef<BaseSelection | null>(null);\n const currentMeta = isBlockType(blockType) ? BLOCK_TYPE_META[blockType] : null;\n\n const handleOpenChange = (open: boolean) => {\n if (open) {\n editor.getEditorState().read(() => {\n const selection = $getSelection();\n savedSelectionRef.current = selection ? selection.clone() : null;\n });\n }\n };\n\n const handleSelect = (type: BlockType) => {\n editor.update(() => {\n if (savedSelectionRef.current) {\n $setSelection(savedSelectionRef.current);\n }\n\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) return;\n\n if (type === 'bullet') {\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined);\n return;\n }\n if (type === 'number') {\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined);\n return;\n }\n\n const anchorNode = selection.anchor.getNode();\n const element = $getNearestBlockElementAncestorOrThrow(anchorNode);\n\n const newNode =\n type === 'h1' || type === 'h2' || type === 'h3'\n ? $createHeadingNode(type)\n : type === 'quote'\n ? $createQuoteNode()\n : type === 'code'\n ? $createCodeNode()\n : $createParagraphNode();\n\n element.getChildren().forEach((child) => newNode.append(child));\n element.replace(newNode);\n });\n };\n\n return (\n <DropdownMenu onOpenChange={handleOpenChange}>\n <Tooltip tooltip=\"Change block type\" placement=\"top\" triggerAsChild>\n <DropdownMenu.Trigger asChild>\n <button\n type=\"button\"\n className={cn(\n 'tw-flex tw-h-7 tw-cursor-pointer tw-items-center tw-gap-1.5 tw-rounded tw-border-0 tw-bg-transparent tw-px-1.5 tw-text-xs tw-text-neutral-600',\n 'hover:tw-bg-neutral-100',\n )}\n >\n <Icon icon={currentMeta?.icon ?? ['far', 'font']} fixedWidth />\n {currentMeta?.label ?? 'Normal'}\n <Icon icon={['fas', 'caret-down']} className=\"tw-text-[8px]\" />\n </button>\n </DropdownMenu.Trigger>\n </Tooltip>\n <DropdownMenu.Content align=\"start\" className=\"tw-min-w-40\">\n {BLOCK_TYPE_OPTIONS.map(({ value, label, icon }) => (\n <DropdownMenu.Item\n key={value}\n onSelect={() => handleSelect(value)}\n className={cn(\n 'tw-flex tw-items-center tw-gap-2',\n blockType === value && 'tw-bg-secondary-50 tw-text-secondary-500',\n )}\n >\n <Icon icon={icon} fixedWidth />\n {label}\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n );\n};\n","import { useRef, useState } from 'react';\nimport type { KeyboardEvent as ReactKeyboardEvent } from 'react';\nimport { $createLinkNode, TOGGLE_LINK_COMMAND } from '@lexical/link';\nimport {\n $createTextNode,\n $getSelection,\n $isRangeSelection,\n $setSelection,\n type BaseSelection,\n type LexicalEditor,\n} from 'lexical';\n\nimport { Button } from '../../../Button';\nimport { ButtonGroup } from '../../../ButtonGroup';\nimport { FormGroup } from '../../../FormGroup';\nimport { Icon } from '../../../Icon';\nimport { TextInput } from '../../../Input';\nimport { Label } from '../../../Label';\n\nimport { ToolbarButton } from './ToolbarButton';\n\nconst insertLink = (\n editor: LexicalEditor,\n url: string,\n label: string,\n savedSelection: BaseSelection | null,\n) => {\n editor.update(() => {\n $setSelection(savedSelection);\n const selection = $getSelection();\n\n if ($isRangeSelection(selection)) {\n const selectedText = selection.getTextContent();\n if (selectedText && label === selectedText) {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, url);\n return;\n }\n }\n\n const linkNode = $createLinkNode(url);\n const textNode = $createTextNode(label || url);\n linkNode.append(textNode);\n\n if ($isRangeSelection(selection)) {\n selection.insertNodes([linkNode]);\n }\n });\n};\n\nexport const LinkPanel = ({ editor, isLink }: { editor: LexicalEditor; isLink: boolean }) => {\n const [open, setOpen] = useState(false);\n const [url, setUrl] = useState('');\n const [label, setLabel] = useState('');\n const savedSelectionRef = useRef<BaseSelection | null>(null);\n const panelRef = useRef<HTMLDivElement>(null);\n\n const handleOpen = () => {\n editor.getEditorState().read(() => {\n const selection = $getSelection();\n savedSelectionRef.current = selection ? selection.clone() : null;\n\n if ($isRangeSelection(selection)) {\n const text = selection.getTextContent();\n if (text) setLabel(text);\n }\n });\n setOpen(true);\n };\n\n const handleClose = () => {\n setOpen(false);\n setUrl('');\n setLabel('');\n savedSelectionRef.current = null;\n editor.focus();\n };\n\n const handleSubmit = () => {\n const trimmedUrl = url.trim();\n if (!trimmedUrl) return;\n\n insertLink(editor, trimmedUrl, label.trim(), savedSelectionRef.current);\n handleClose();\n };\n\n const handleKeyDown = (e: ReactKeyboardEvent) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n handleSubmit();\n }\n if (e.key === 'Escape') {\n e.preventDefault();\n handleClose();\n }\n };\n\n if (isLink) {\n return (\n <ToolbarButton\n active\n onClick={() => editor.dispatchCommand(TOGGLE_LINK_COMMAND, null)}\n tooltip=\"Remove Link\"\n >\n <Icon icon={['far', 'link']} />\n </ToolbarButton>\n );\n }\n\n return (\n <div className=\"tw-relative\">\n <ToolbarButton active={open} onClick={handleOpen} tooltip=\"Insert Link\">\n <Icon icon={['far', 'link']} />\n </ToolbarButton>\n {open && (\n <div\n ref={panelRef}\n className=\"tw-absolute tw-left-0 tw-top-full tw-z-50 tw-mt-1 tw-w-80 tw-rounded-md tw-border tw-border-neutral-200 tw-bg-white tw-p-3 tw-shadow-lg\"\n >\n <div className=\"tw-flex tw-flex-col tw-gap-2\">\n <FormGroup>\n <Label htmlFor=\"link-label\" className=\"tw-mb-1 tw-text-xs\">\n Label\n </Label>\n <TextInput\n id=\"link-label\"\n autoFocus\n placeholder=\"Link text\"\n value={label}\n onValueChange={setLabel}\n onKeyDown={handleKeyDown}\n variant=\"secondary\"\n />\n </FormGroup>\n <FormGroup>\n <Label htmlFor=\"link-url\" className=\"tw-mb-1 tw-text-xs\">\n URL\n </Label>\n <TextInput\n id=\"link-url\"\n placeholder=\"https://…\"\n value={url}\n onValueChange={setUrl}\n onKeyDown={handleKeyDown}\n variant=\"secondary\"\n />\n </FormGroup>\n <ButtonGroup>\n <Button size=\"small\" variant=\"outline\" onClick={handleClose}>\n Cancel\n </Button>\n <Button size=\"small\" onClick={handleSubmit} disabled={!url.trim()}>\n Add link\n </Button>\n </ButtonGroup>\n </div>\n </div>\n )}\n </div>\n );\n};\n","import type { ComponentProps, ElementRef, ReactNode, Ref } from 'react';\nimport type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\n\nconst buttonGroupVariant = cva(\n ['tailwindcss-preflight', 'tw-inline-flex', 'tw-items-center', 'tw-group/button-group'],\n {\n defaultVariants: {\n variant: 'inline',\n space: 'small',\n },\n variants: {\n variant: {\n inline: [],\n block: [\n 'tw-w-full',\n 'tw-flex-col',\n 'sm:tw-flex-row',\n '[&_a]:tw-flex-1',\n '[&>button:not([data-icon-only=true])]:tw-flex-1',\n ],\n },\n space: {\n 'extra-small': 'tw-gap-1',\n 'little-small': 'tw-gap-2',\n small: 'tw-gap-3',\n medium: 'tw-gap-4',\n large: 'tw-gap-6',\n compact: [\n 'tw-border-collapse',\n '!tw-gap-0',\n\n // ensure that focus visible outline is at the top\n '[&>*:focus-visible]:!tw-z-10',\n\n '[&>*:not(:first-child)]:tw-rounded-l-none',\n '[&>*:not(:last-child)]:tw-rounded-r-none',\n '[&>*:not(:last-child)]:tw-border-r-0',\n '[&>*:not(:first-child)]:tw-border-l-0',\n\n // separator\n '[&>*:not(:first-child)]:before:tw-content',\n '[&>*:not(:first-child)]:before:tw-absolute',\n '[&>*:not(:first-child)]:before:tw-left-0',\n '[&>*:not(:first-child)]:before:tw-h-full',\n '[&>*:not(:first-child)]:before:tw-w-px',\n '[&>*:not(:first-child)]:before:tw-bg-black/10',\n ],\n },\n },\n },\n);\n\ntype Props = {\n children: ReactNode;\n className?: string;\n} & VariantProps<typeof buttonGroupVariant> &\n ComponentProps<'div'>;\n\nexport const ButtonGroup = ({\n ref,\n children,\n space = 'small',\n className,\n variant,\n ...rest\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => {\n return (\n <div\n ref={ref}\n {...rest}\n role=\"group\"\n data-variant={variant}\n className={buttonGroupVariant({ variant, className, space })}\n >\n {children}\n </div>\n );\n};\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { FormGroupProvider } from './context';\nimport { FormGroupColorInput } from './FormGroupColorInput';\nimport { FormGroupHelp } from './FormGroupHelp';\nimport { FormGroupNumberInput } from './FormGroupNumberInput';\nimport { FormGroupTextarea } from './FormGroupTextarea';\nimport { FormGroupTextInput } from './FormGroupTextInput';\nimport type { FormGroupContext } from './types';\n\ntype FormGroupProps = {\n children: ReactNode;\n className?: string;\n testId?: string;\n} & FormGroupContext;\n\nexport const FormGroup = ({ className, children, state, testId }: FormGroupProps) => {\n return (\n <FormGroupProvider value={{ state }}>\n <div data-testid={testId} className={cn('tw-flex tw-flex-col tw-gap-1', className)}>\n {children}\n </div>\n </FormGroupProvider>\n );\n};\n\nFormGroup.Help = FormGroupHelp;\nFormGroup.TextInput = FormGroupTextInput;\nFormGroup.NumberInput = FormGroupNumberInput;\nFormGroup.ColorInput = FormGroupColorInput;\nFormGroup.Textarea = FormGroupTextarea;\n","import { createContext, use } from 'react';\n\nimport type { FormGroupContext } from './types';\n\nconst FormGroupContext = createContext<FormGroupContext>({\n state: 'default',\n});\n\nexport const FormGroupProvider = FormGroupContext;\n\nexport const useFormGroupContext = () => use(FormGroupContext);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nimport { InputGroupAddon } from './InputGroupAddon';\nimport { InputGroupButton } from './InputGroupButton';\nimport { InputGroupInput } from './InputGroupInput';\nimport { InputGroupText } from './InputGroupText';\nimport { InputGroupTextArea } from './InputGroupTextArea';\n\nconst inputGroupVariants = cva(\n [\n 'tailwindcss-preflight',\n 'tw-group',\n\n 'tw-overflow-hidden',\n 'tw-box-border',\n\n // positioning\n 'tw-flex',\n 'tw-items-center',\n\n // base\n 'tw-rounded',\n 'tw-border',\n 'tw-border-solid',\n 'tw-border-neutral-200',\n 'tw-text-neutral-800',\n 'tw-transition',\n\n // focus\n 'has-[:is(input,textarea):focus]:tw-ring-4',\n\n // readonly\n 'has-[:is(input,textarea)[readonly]]:tw-bg-neutral-150',\n 'has-[:is(input,textarea)[readonly]]:focus-within:tw-ring-0',\n 'has-[:is(input,textarea)[readonly]]:tw-border-neutral-150',\n\n // disabled cursor (opacity owned by variant)\n 'has-[:is(input,textarea):disabled]:tw-cursor-not-allowed',\n\n // textarea: top-align addons, allow vertical expansion, own its y-padding\n 'has-[textarea]:tw-items-start',\n\n 'has-[[data-align=block-start]:not(:empty)]:tw-flex-wrap',\n 'has-[[data-align=block-end]:not(:empty)]:tw-flex-wrap',\n '[&>input]:has-[[data-align=block-start]:not(:empty)]:tw-w-auto',\n '[&>input]:has-[[data-align=block-start]:not(:empty)]:tw-flex-1',\n '[&>input]:has-[[data-align=block-end]:not(:empty)]:tw-w-auto',\n '[&>input]:has-[[data-align=block-end]:not(:empty)]:tw-flex-1',\n\n '[&>input]:tw-px-4',\n '[&>input]:has-[[data-align=inline-start]:not(:empty)]:tw-pl-2',\n '[&>input]:has-[[data-align=inline-end]:not(:empty)]:tw-pr-2',\n ],\n {\n defaultVariants: {\n variant: 'primary',\n state: 'default',\n sizing: 'default',\n focusVariant: 'default',\n },\n compoundVariants: [\n {\n variant: 'secondary',\n state: 'error',\n className: ['tw-bg-error-100'],\n },\n {\n variant: 'secondary',\n state: 'warning',\n className: ['tw-bg-warning-100'],\n },\n {\n variant: 'primary',\n state: 'default',\n focusVariant: 'off',\n className: ['has-[:is(input,textarea):focus]:tw-border-neutral-200'],\n },\n {\n variant: 'secondary',\n state: 'default',\n focusVariant: 'off',\n className: ['has-[:is(input,textarea):focus]:tw-border-neutral-100'],\n },\n {\n variant: ['primary', 'secondary'],\n state: 'error',\n focusVariant: 'on',\n className: ['!tw-border-error-500', '!tw-ring-error-200'],\n },\n {\n variant: ['primary', 'secondary'],\n state: 'warning',\n focusVariant: 'on',\n className: ['!tw-border-warning-500', '!tw-ring-warning-200'],\n },\n // --- argo ---\n {\n variant: 'argo',\n state: 'default',\n className: [\n 'has-[:is(input,textarea):focus]:tw-border-primary',\n 'has-[:is(input,textarea):focus]:tw-ring-primary/50',\n ],\n },\n {\n variant: 'argo',\n state: 'error',\n className: [\n 'tw-border-destructive',\n 'has-[:is(input,textarea):focus]:tw-border-destructive',\n 'has-[:is(input,textarea):focus]:tw-ring-destructive/20',\n ],\n },\n {\n variant: 'argo',\n focusVariant: 'on',\n className: ['!tw-border-primary', '!tw-ring-primary/50'],\n },\n {\n variant: 'argo',\n state: 'error',\n focusVariant: 'on',\n className: ['!tw-border-destructive', '!tw-ring-destructive/20'],\n },\n {\n variant: 'argo',\n state: 'default',\n focusVariant: 'off',\n className: ['has-[:is(input,textarea):focus]:tw-border-input'],\n },\n ],\n variants: {\n focusVariant: {\n default: [],\n on: ['!tw-border-secondary-500', '!tw-ring-secondary-200', '!tw-ring-4'],\n off: ['has-[:is(input,textarea):focus]:!tw-ring-0'],\n },\n variant: {\n primary: ['tw-bg-white', 'has-[:is(input,textarea):disabled]:tw-opacity-40'],\n secondary: [\n 'tw-bg-neutral-100',\n 'tw-border-neutral-100',\n 'has-[:is(input,textarea):disabled]:tw-opacity-40',\n ],\n argo: [\n 'tw-bg-background',\n 'tw-border-input',\n 'tw-rounded-lg',\n 'tw-text-foreground',\n 'has-[:is(input,textarea):disabled]:tw-opacity-50',\n // higher specificity than has-[:is(input,textarea):focus] — prevents focus border on readonly\n 'has-[:is(input,textarea)[readonly]:focus]:tw-border-neutral-150',\n ],\n },\n sizing: {\n default: [\n '[&>:is(input,textarea)]:tw-py-2.5',\n '[&>:is(input,textarea)]:tw-leading-[18px]',\n '[&>textarea]:!tw-min-h-[calc(2.5rem-2px)]',\n ],\n small: [\n '[&>:is(input,textarea)]:tw-py-2',\n '[&>:is(input,textarea)]:tw-leading-[16px]',\n '[&>textarea]:!tw-min-h-[calc(2rem-2px)]',\n ],\n medium: [\n '[&>:is(input,textarea)]:tw-py-2',\n '[&>:is(input,textarea)]:tw-leading-[18px]',\n '[&>textarea]:!tw-min-h-[calc(2.25rem-2px)]',\n ],\n },\n state: {\n default: [\n 'has-[:is(input,textarea):focus]:tw-border-secondary-500',\n 'has-[:is(input,textarea):focus]:tw-ring-secondary-200',\n ],\n error: [\n 'tw-border-error-500',\n 'has-[:is(input,textarea):focus]:tw-border-error-500',\n 'has-[:is(input,textarea):focus]:tw-ring-error-200',\n ],\n warning: [\n 'tw-border-warning-500',\n 'has-[:is(input,textarea):focus]:tw-border-warning-500',\n 'has-[:is(input,textarea):focus]:tw-ring-warning-200',\n ],\n },\n },\n },\n);\n\ntype Props = ComponentProps<'div'> & VariantProps<typeof inputGroupVariants>;\n\nconst InputGroupRoot = ({\n ref,\n children,\n state,\n variant,\n sizing,\n focusVariant,\n className,\n ...props\n}: Props & { ref?: Ref<ElementRef<'div'>> }) => (\n <div\n {...props}\n ref={ref}\n className={cn(inputGroupVariants({ state, variant, sizing, focusVariant, className }))}\n >\n {children}\n </div>\n);\n\nexport const InputGroup = InputGroupRoot as typeof InputGroupRoot & {\n Input: typeof InputGroupInput;\n Addon: typeof InputGroupAddon;\n Button: typeof InputGroupButton;\n TextArea: typeof InputGroupTextArea;\n Text: typeof InputGroupText;\n};\n\nInputGroup.Input = InputGroupInput;\nInputGroup.Addon = InputGroupAddon;\nInputGroup.Button = InputGroupButton;\nInputGroup.TextArea = InputGroupTextArea;\nInputGroup.Text = InputGroupText;\n","import type { ComponentProps } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\n// Padding only fires when the addon actually has content — keeps an empty\n// `<Addon>{maybeNull}</Addon>` from carving 16px out of the input row.\nconst addonVariants = cva(['tw-flex', 'tw-items-center', 'tw-gap-1'], {\n defaultVariants: {\n align: 'inline-start',\n },\n variants: {\n align: {\n 'inline-start': ['tw-order-first', '[&:not(:empty)]:tw-pl-4'],\n 'inline-end': ['tw-order-last', '[&:not(:empty)]:tw-pr-4'],\n 'block-start': [\n 'tw-order-first',\n // `tw-w-full` needs to be empty-conditional too — when the addon\n // has no content the root stays in flex-row, and a 100%-wide\n // empty addon would claim half of the input row beside the input.\n '[&:not(:empty)]:tw-w-full',\n '[&:not(:empty)]:tw-px-4',\n '[&:not(:empty)]:tw-py-1.5',\n ],\n 'block-end': [\n 'tw-order-last',\n '[&:not(:empty)]:tw-w-full',\n '[&:not(:empty)]:tw-px-4',\n '[&:not(:empty)]:tw-py-1.5',\n ],\n },\n },\n});\n\ntype Props = ComponentProps<'div'> & VariantProps<typeof addonVariants>;\n\nexport const InputGroupAddon = ({\n children,\n align = 'inline-start',\n className,\n ...props\n}: Props) => (\n <div {...props} data-align={align} className={cn(addonVariants({ align, className }))}>\n {children}\n </div>\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\n\ntype ButtonProps = ComponentProps<typeof Button>;\n\ntype Props = Omit<ButtonProps, 'size' | 'block' | 'variant'>;\n\nexport const InputGroupButton = ({\n ref,\n className,\n tabIndex = -1,\n ...props\n}: Props & { ref?: Ref<ElementRef<'button'>> }) => (\n <Button\n argo\n {...props}\n tabIndex={tabIndex}\n ref={ref}\n variant=\"invisible\"\n size=\"icon-sm\"\n className={cn('tw-size-5', '[&_svg]:tw-text-muted-foreground', className)}\n />\n);\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'input'>;\n\nexport const InputGroupInput = ({\n ref,\n className,\n ...inputProps\n}: Props & { ref?: Ref<ElementRef<'input'>> }) => (\n <input\n {...inputProps}\n ref={ref}\n className={cn(\n 'tw-w-full',\n 'tw-bg-transparent',\n 'tw-outline-none',\n\n // font\n 'tw-font-sans',\n 'tw-text-sm',\n\n // placeholder\n 'placeholder:tw-text-neutral-400',\n 'placeholder:tw-font-normal',\n\n // disabled\n 'disabled:tw-cursor-not-allowed',\n\n className,\n )}\n />\n);\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'span'>;\n\nexport const InputGroupText = ({ className, ...props }: Props) => (\n <span\n className={cn(\n 'tw-flex',\n 'tw-items-center',\n 'tw-gap-2',\n 'tw-text-sm',\n 'tw-text-muted-foreground',\n '[&_svg]:tw-pointer-events-none',\n '[&_svg:not([class*=\"tw-size-\"])]:tw-size-4',\n className,\n )}\n {...props}\n />\n);\n","import type { ChangeEventHandler, ComponentProps, ElementRef, FocusEventHandler, Ref } from 'react';\nimport TextareaAutosize from 'react-textarea-autosize';\n\nimport { cn } from '../../utils';\n\ntype TextareaNativeProps = Omit<\n ComponentProps<typeof TextareaAutosize>,\n 'value' | 'defaultValue' | 'rows' | 'maxRows'\n>;\n\ntype Props = TextareaNativeProps & {\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string) => void;\n onValueBlur?: (value: string) => void;\n maxRows?: number | 'unlimited';\n disableResize?: boolean;\n};\n\nexport const InputGroupTextArea = ({\n ref,\n className,\n onChange,\n onValueChange,\n value,\n defaultValue,\n onBlur,\n onValueBlur,\n disableResize = false,\n minRows = 1,\n maxRows = 4,\n ...props\n}: Props & { ref?: Ref<ElementRef<'textarea'>> }) => {\n const handleChange: ChangeEventHandler<HTMLTextAreaElement> = (event) => {\n onValueChange?.(event.target.value);\n onChange?.(event);\n };\n\n const handleBlur: FocusEventHandler<HTMLTextAreaElement> = (event) => {\n onValueBlur?.(event.target.value);\n onBlur?.(event);\n };\n\n return (\n <TextareaAutosize\n {...props}\n ref={ref}\n value={value ?? undefined}\n defaultValue={defaultValue ?? undefined}\n onChange={handleChange}\n onBlur={handleBlur}\n minRows={minRows}\n maxRows={maxRows === 'unlimited' ? undefined : maxRows}\n className={cn(\n 'tw-w-full',\n 'tw-bg-transparent',\n 'tw-outline-none',\n 'tw-px-4',\n\n // font\n 'tw-font-sans',\n 'tw-text-sm',\n\n // placeholder\n 'placeholder:tw-text-neutral-400',\n 'placeholder:tw-font-normal',\n\n // disabled\n 'disabled:tw-cursor-not-allowed',\n {\n 'tw-resize-none': disableResize,\n },\n\n className,\n )}\n />\n );\n};\n","import { useRef, useState } from 'react';\nimport type {\n ChangeEventHandler,\n ComponentProps,\n ElementRef,\n FocusEventHandler,\n MouseEventHandler,\n Ref,\n} from 'react';\n\nimport { InputGroup } from '../../components/InputGroup';\nimport { cn, createChangeInputEvent, mergeRefs } from '../../utils';\n\nimport { ColorPicker } from './ColorPicker';\nimport { coerceHexInputValue, isCompleteHexColor } from './utils';\n\ntype InputGroupProps = Pick<\n ComponentProps<typeof InputGroup>,\n 'variant' | 'focusVariant' | 'state' | 'sizing'\n>;\n\ntype InputGroupInputProps = Omit<ComponentProps<typeof InputGroup.Input>, 'value' | 'defaultValue'>;\n\ntype Props = InputGroupProps &\n InputGroupInputProps & {\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string) => void;\n onValueBlur?: (value: string) => void;\n allowClear?: boolean;\n };\n\nexport const ColorInput = ({\n ref,\n\n // group props\n state,\n variant,\n focusVariant,\n sizing,\n className,\n\n // own props\n value: valueProp,\n onValueChange,\n onValueBlur,\n onChange,\n onBlur,\n defaultValue,\n allowClear = false,\n\n // input props\n disabled,\n readOnly,\n ...restInputProps\n}: Props & { ref?: Ref<ElementRef<'input'>> }) => {\n const inputRef = useRef<ElementRef<'input'>>(null);\n\n const [internalValue, setInternalValue] = useState(defaultValue ?? '');\n const isControlled = valueProp !== undefined;\n\n const value = isControlled ? (valueProp ?? '') : internalValue;\n const setValue = (nextValue: string) => {\n if (!isControlled) setInternalValue(nextValue);\n onValueChange?.(nextValue);\n };\n\n const canClear = allowClear && !!value && !disabled && !readOnly;\n const swatchColor = coerceHexInputValue(value);\n const isValidSwatch = isCompleteHexColor(swatchColor);\n\n // Preserve raw text while the user is typing — sanitise on blur.\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n setValue(event.target.value);\n onChange?.(event);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n const newValue = event.target.value;\n const sanitizedNewValue = coerceHexInputValue(newValue);\n\n if (sanitizedNewValue !== newValue) {\n // In controlled mode, let the parent decide whether to apply the\n // sanitised value via `onValueChange` — don't fight its `value` prop.\n if (!isControlled) event.target.value = sanitizedNewValue;\n setValue(sanitizedNewValue);\n }\n\n onValueBlur?.(sanitizedNewValue);\n onBlur?.(event);\n };\n\n const handlePickerChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n setValue(coerceHexInputValue(event.target.value));\n onChange?.(event);\n };\n\n const handleClear: MouseEventHandler<HTMLButtonElement> = () => {\n if (!inputRef.current) return;\n inputRef.current.value = '';\n setValue('');\n onChange?.(createChangeInputEvent(inputRef.current));\n };\n\n return (\n <InputGroup\n state={state}\n variant={variant}\n sizing={sizing}\n focusVariant={focusVariant}\n className={className}\n >\n <InputGroup.Addon\n align=\"inline-start\"\n className={cn(\n { '-tw-ml-7 tw-opacity-0': !value },\n 'tw-transition-[opacity,margin]',\n 'tw-ease-linear',\n 'tw-duration-200',\n )}\n >\n <div\n style={isValidSwatch ? { background: swatchColor } : undefined}\n className={cn(\n 'tw-size-5',\n 'tw-shrink-0',\n 'tw-rounded-sm',\n 'tw-border',\n 'tw-border-solid',\n 'tw-border-neutral-300',\n {\n 'tw-bg-[linear-gradient(to_top_right,transparent_calc(50%_-_1px),theme(colors.red.300)_calc(50%_-_1px),theme(colors.red.300)_calc(50%_+_1px),transparent_calc(50%_+_1px))]':\n !isValidSwatch,\n },\n )}\n />\n </InputGroup.Addon>\n\n <InputGroup.Input\n {...restInputProps}\n type=\"text\"\n ref={mergeRefs(ref ?? null, inputRef)}\n value={value}\n onChange={handleChange}\n onBlur={handleBlur}\n disabled={disabled}\n readOnly={readOnly}\n />\n\n <InputGroup.Addon align=\"inline-end\">\n {canClear && (\n <InputGroup.Button\n icon=\"xmark\"\n // prevents input focus stealing\n onMouseDown={(event) => event.preventDefault()}\n onClick={handleClear}\n aria-label=\"Clear color\"\n />\n )}\n <ColorPicker\n disabled={disabled}\n readOnly={readOnly}\n value={value}\n onChange={handlePickerChange}\n />\n </InputGroup.Addon>\n </InputGroup>\n );\n};\n","import type { ComponentProps } from 'react';\n\nconst HEX_CHARSET = /^[0-9a-fA-F]+$/;\n// `#` + 3, 4, 6, or 8 hex digits — every length CSS accepts as a hex color.\nconst COMPLETE_HEX_PATTERN = /^#(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$/;\n// Longest hex body CSS accepts (`#rrggbbaa` without the hash).\nconst MAX_HEX_BODY_LENGTH = 8;\n// Native <input type=\"color\"> default when fed anything unparseable.\nconst PICKER_FALLBACK = '#000000';\n\nconst extractHexBody = (value: unknown): string | null => {\n if (typeof value !== 'string') return null;\n const trimmed = value.trim();\n if (trimmed === '') return null;\n return trimmed.startsWith('#') ? trimmed.slice(1) : trimmed;\n};\n\nexport const isCompleteHexColor = (value: string): boolean => COMPLETE_HEX_PATTERN.test(value);\n\n// @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/showPicker\nexport const showPicker = (input: HTMLInputElement) => {\n const isShowPickerSupported = 'showPicker' in HTMLInputElement.prototype;\n isShowPickerSupported ? input.showPicker() : input.click();\n};\n\n/**\n * Coerces free-form text into a partial hex color for the visible text\n * input. Allows up to 8 hex digits to support `#rrggbbaa` (RGBA / alpha).\n *\n * Behaviour:\n * - empty / null / undefined / non-string → `''`\n * - trims surrounding whitespace\n * - prepends `#` when the user types raw hex without it\n * - keeps only the leading run of valid hex digits, dropping the rest\n * - caps total length at `# + 8` hex digits\n * - returns `''` when no valid hex digits remain (e.g. bare `#`, `zz`) so\n * the input doesn't sit on a lonely `#`\n *\n * Note: the result may be a *prefix* (e.g. `#a`, `#ab`) that is not yet a\n * valid CSS color — gate any rendering on `isCompleteHexColor`.\n */\nexport const coerceHexInputValue = (value?: string | null): string => {\n const body = extractHexBody(value);\n if (body === null) return '';\n const [validBody] = body.match(/^[0-9a-fA-F]+/) ?? [];\n if (!validBody) return '';\n return `#${validBody.slice(0, MAX_HEX_BODY_LENGTH)}`;\n};\n\n/**\n * Coerces any value into the strict lowercase `#rrggbb` form required by the\n * native `<input type=\"color\">`. Anything the picker can't render is\n * collapsed to `#000000`.\n *\n * - 3-digit shorthand (`#abc`) → expanded to 6 digits (`#aabbcc`)\n * - 4/8-digit RGBA → alpha channel is dropped\n * - invalid characters, wrong length, or non-string types → `#000000`\n *\n * The native picker silently lowercases its value; we lowercase here too so\n * controlled consumers see the same string round-trip.\n */\nexport const coerceColorPickerValue = (value: ComponentProps<'input'>['value'] | null) => {\n const body = extractHexBody(value);\n if (body === null || !HEX_CHARSET.test(body)) return PICKER_FALLBACK;\n\n if (body.length === 3 || body.length === 4) {\n const [r, g, b] = body;\n return `#${r}${r}${g}${g}${b}${b}`.toLowerCase();\n }\n if (body.length === 6 || body.length === 8) {\n return `#${body.slice(0, 6).toLowerCase()}`;\n }\n return PICKER_FALLBACK;\n};\n","import { type ComponentProps, type ElementRef, useRef } from 'react';\n\nimport { InputGroup } from '../../components/InputGroup';\n\nimport { coerceColorPickerValue, showPicker } from './utils';\n\ntype Props = Omit<ComponentProps<'input'>, 'type'>;\n\nexport const ColorPicker = ({ value, disabled, readOnly, ...props }: Props) => {\n const pickerRef = useRef<ElementRef<'input'>>(null);\n\n const handleOpenPicker = () => {\n if (!pickerRef.current) return;\n showPicker(pickerRef.current);\n };\n\n return (\n <div className=\"tw-relative\">\n <input\n {...props}\n ref={pickerRef}\n type=\"color\"\n value={coerceColorPickerValue(value)}\n tabIndex={-1}\n aria-hidden\n className=\"tw-pointer-events-none tw-absolute tw-left-0 tw-top-full tw-size-0 tw-opacity-0\"\n disabled={disabled}\n readOnly={readOnly}\n />\n <InputGroup.Button\n onMouseDown={(event) => event.preventDefault()}\n disabled={disabled || readOnly}\n icon=\"eye-dropper\"\n onClick={handleOpenPicker}\n aria-label=\"Pick color\"\n />\n </div>\n );\n};\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { ColorInput } from '../../blocks/ColorInput';\n\nimport { useFormGroupContext } from './context';\n\ntype Props = Omit<ComponentProps<typeof ColorInput>, 'state'>;\n\nexport const FormGroupColorInput = ({\n ref,\n ...props\n}: Props & { ref?: Ref<ElementRef<'input'>> }) => {\n const { state } = useFormGroupContext();\n return <ColorInput state={state} {...props} ref={ref} />;\n};\n","import type { ReactNode } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nconst helpVariants = cva(['tw-m-0', 'tw-text-xs'], {\n defaultVariants: {\n state: 'default',\n },\n variants: {\n state: {\n default: ['tw-text-neutral-500'],\n error: ['tw-text-error-500'],\n warning: ['tw-text-warning-500'],\n },\n },\n});\n\ntype Props = {\n className?: string;\n children?: ReactNode;\n testId?: string;\n} & VariantProps<typeof helpVariants>;\n\nexport const HelpBlock = ({ children, className, state = 'default', testId }: Props) => {\n if (!children) return null;\n\n return (\n <p data-testid={testId} className={helpVariants({ state, className })}>\n {children}\n </p>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { HelpBlock } from '../HelpBlock';\n\nimport { useFormGroupContext } from './context';\n\ntype Props = Omit<ComponentProps<typeof HelpBlock>, 'testId' | 'state'>;\n\nexport const FormGroupHelp = ({ children, ...rest }: Props) => {\n const formGroupContext = useFormGroupContext();\n\n return (\n <HelpBlock state={formGroupContext.state} {...rest}>\n {children}\n </HelpBlock>\n );\n};\n","import type {\n ChangeEvent,\n ChangeEventHandler,\n ComponentProps,\n ElementRef,\n FocusEventHandler,\n ReactNode,\n Ref,\n} from 'react';\n\nimport { InputGroup } from '../../components/InputGroup';\n\ntype InputGroupProps = Pick<\n ComponentProps<typeof InputGroup>,\n 'variant' | 'focusVariant' | 'state' | 'sizing'\n>;\n\ntype InputGroupInputProps = Omit<\n ComponentProps<typeof InputGroup.Input>,\n 'value' | 'defaultValue' | 'type' | 'prefix'\n>;\n\ntype Props = InputGroupProps &\n InputGroupInputProps & {\n value?: number | null;\n defaultValue?: number | null;\n onValueChange?: (value: number | null) => void;\n onValueBlur?: (value: number | null) => void;\n prefix?: ReactNode;\n suffix?: ReactNode;\n };\n\nconst toNumberOrNull = (event: ChangeEvent<HTMLInputElement>) =>\n Number.isNaN(event.target.valueAsNumber) ? null : event.target.valueAsNumber;\n\nexport const NumberInput = ({\n ref,\n state,\n variant,\n focusVariant,\n sizing,\n className,\n\n value,\n defaultValue,\n onValueChange,\n onValueBlur,\n onChange,\n onBlur,\n\n prefix,\n suffix,\n\n ...inputProps\n}: Props & { ref?: Ref<ElementRef<'input'>> }) => {\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n onValueChange?.(toNumberOrNull(event));\n onChange?.(event);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n onValueBlur?.(toNumberOrNull(event));\n onBlur?.(event);\n };\n\n const isControlled = value !== undefined;\n const valueProp = isControlled ? { value: value ?? '' } : { defaultValue: defaultValue ?? '' };\n\n return (\n <InputGroup\n state={state}\n variant={variant}\n sizing={sizing}\n focusVariant={focusVariant}\n className={className}\n >\n {prefix && <InputGroup.Addon align=\"inline-start\">{prefix}</InputGroup.Addon>}\n <InputGroup.Input\n {...inputProps}\n {...valueProp}\n ref={ref}\n type=\"number\"\n onChange={handleChange}\n onBlur={handleBlur}\n />\n {suffix && <InputGroup.Addon align=\"inline-end\">{suffix}</InputGroup.Addon>}\n </InputGroup>\n );\n};\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { NumberInput } from '../../blocks/NumberInput';\n\nimport { useFormGroupContext } from './context';\n\ntype Props = Omit<ComponentProps<typeof NumberInput>, 'state'>;\n\nexport const FormGroupNumberInput = ({\n ref,\n ...props\n}: Props & { ref?: Ref<ElementRef<'input'>> }) => {\n const { state } = useFormGroupContext();\n return <NumberInput {...props} ref={ref} state={state} />;\n};\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { InputGroup } from '../../components/InputGroup';\n\ntype InputGroupProps = Pick<\n ComponentProps<typeof InputGroup>,\n 'variant' | 'sizing' | 'focusVariant' | 'state'\n>;\n\ntype TextareaNativeProps = Omit<\n ComponentProps<typeof InputGroup.TextArea>,\n 'value' | 'defaultValue' | 'rows' | 'maxRows'\n>;\n\ntype TextareaOwnProps = {\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string) => void;\n onValueBlur?: (value: string) => void;\n maxRows?: number | 'unlimited';\n disableResize?: boolean;\n containerClassName?: string;\n};\n\ntype Props = InputGroupProps & TextareaNativeProps & TextareaOwnProps;\n\nexport const Textarea = ({\n ref,\n containerClassName,\n\n // group props\n state = 'default',\n variant = 'primary',\n sizing,\n focusVariant,\n\n ...rest\n}: Props & { ref?: Ref<ElementRef<'textarea'>> }) => {\n return (\n <InputGroup\n state={state}\n sizing={sizing}\n focusVariant={focusVariant}\n variant={variant}\n className={containerClassName}\n >\n <InputGroup.TextArea {...rest} ref={ref} />\n </InputGroup>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { Textarea } from '../../blocks/Textarea';\n\nimport { useFormGroupContext } from './context';\n\ntype Props = Omit<ComponentProps<typeof Textarea>, 'state'>;\n\nexport const FormGroupTextarea = (props: Props) => {\n const { state } = useFormGroupContext();\n return <Textarea state={state} {...props} />;\n};\n","import { useRef, useState } from 'react';\nimport type {\n ChangeEventHandler,\n ComponentProps,\n ElementRef,\n FocusEventHandler,\n MouseEventHandler,\n ReactNode,\n Ref,\n} from 'react';\n\nimport { cn, createChangeInputEvent, mergeRefs } from '../../utils';\nimport { InputGroup } from '../InputGroup/InputGroup';\n\nimport { genInputTestId } from './utils';\n\ntype InputGroupProps = Pick<\n ComponentProps<typeof InputGroup>,\n 'variant' | 'focusVariant' | 'sizing' | 'state'\n>;\n\ntype OwnProps = {\n prefix?: ReactNode;\n rightSuffix?: ReactNode;\n rightSuffixVariant?: 'addon' | 'default';\n leftSuffix?: ReactNode;\n allowClear?: boolean;\n onClear?: () => void;\n testId?: string;\n value?: ComponentProps<'input'>['value'] | null;\n defaultValue?: ComponentProps<'input'>['defaultValue'] | null;\n};\n\ntype Props = InputGroupProps &\n OwnProps &\n Omit<ComponentProps<'input'>, 'prefix' | 'value' | 'defaultValue'>;\n\nexport const Input = ({\n ref: forwardedRef,\n state = 'default',\n sizing = 'default',\n className,\n prefix = null,\n rightSuffix = null,\n rightSuffixVariant = 'default',\n leftSuffix = null,\n allowClear = false,\n onClear,\n disabled = false,\n testId: prefixTestId = '',\n autoFocus = false,\n id,\n name,\n variant,\n readOnly,\n type = 'text',\n focusVariant = 'default',\n onChange,\n onBlur,\n value,\n defaultValue,\n ...inputProps\n}: Props & { ref?: Ref<ElementRef<'input'>> }) => {\n const [hasUncontrolledValue, setHasUncontrolledValue] = useState(() => !!defaultValue);\n const hasValue = !!value || hasUncontrolledValue;\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n const testId = genInputTestId(prefixTestId);\n const isClearButtonVisible = (hasValue && !disabled && !readOnly) || !!onClear;\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n const val = event.target.value;\n setHasUncontrolledValue(val !== '');\n onChange?.(event);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n const val = event.target.value;\n setHasUncontrolledValue(val !== '');\n onBlur?.(event);\n };\n\n const handleClear: MouseEventHandler<HTMLButtonElement> = () => {\n if (inputRef.current === null) return;\n inputRef.current.value = ''; // necessary for uncontrolled state\n inputRef.current.focus();\n onClear?.();\n setHasUncontrolledValue(false);\n onChange?.(createChangeInputEvent(inputRef.current));\n };\n\n const isControlled = value !== undefined;\n const valueProp = isControlled ? { value: value ?? '' } : { defaultValue: defaultValue ?? '' };\n\n return (\n <InputGroup\n state={state}\n variant={variant}\n sizing={sizing}\n focusVariant={focusVariant}\n className={className}\n data-testid={testId.inputWrapper}\n >\n {prefix && <InputGroup.Addon align=\"inline-start\">{prefix}</InputGroup.Addon>}\n\n <InputGroup.Input\n {...inputProps}\n {...valueProp}\n autoFocus={autoFocus}\n type={type}\n onChange={handleChange}\n onBlur={handleBlur}\n ref={mergeRefs(forwardedRef ?? null, inputRef)}\n disabled={disabled}\n id={id}\n name={name}\n readOnly={readOnly}\n data-testid={testId.input}\n />\n\n {(leftSuffix || allowClear || rightSuffix) && (\n <InputGroup.Addon align=\"inline-end\">\n {leftSuffix}\n {allowClear && isClearButtonVisible && (\n <InputGroup.Button\n icon=\"xmark\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={handleClear}\n data-testid={testId.clearButton}\n />\n )}\n {rightSuffix && (\n <div\n className={cn({\n 'tw-whitespace-nowrap tw-bg-neutral-200 tw-px-4 -tw-mr-4 tw-py-2.5':\n rightSuffixVariant === 'addon',\n })}\n >\n {rightSuffix}\n </div>\n )}\n </InputGroup.Addon>\n )}\n </InputGroup>\n );\n};\n","import { createPrefixedString } from '../../utils';\n\nexport const genInputTestId = (prefix: string = '') => {\n const ps = createPrefixedString(prefix);\n return {\n toString: () => prefix,\n inputWrapper: ps`input-wrapper`,\n input: ps`input`,\n clearButton: ps`clear-button`,\n };\n};\n","import type { ChangeEventHandler, ComponentProps, ElementRef, FocusEventHandler, Ref } from 'react';\n\nimport { Input } from '../Input';\n\ntype NativeProps = Omit<\n ComponentProps<typeof Input>,\n 'type' | 'value' | 'defaultValue' | 'accept' | 'step'\n>;\n\ntype OwnProps = {\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string) => void;\n onValueBlur?: (value: string) => void;\n type?: 'text' | 'email' | 'password' | 'datetime-local' | 'date';\n};\n\nexport type Props = OwnProps & NativeProps;\n\nconst sanitizeTextInputValue = (value: string | null | undefined) => {\n if (typeof value === 'string' && value.trim() === '') return '';\n return value;\n};\n\nexport const TextInput = ({\n ref,\n value,\n defaultValue,\n type = 'text',\n onValueChange,\n onChange,\n onValueBlur,\n onBlur,\n ...props\n}: Props & { ref?: Ref<ElementRef<'input'>> }) => {\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n onValueChange?.(event.target.value);\n onChange?.(event);\n };\n\n const handleBlur: FocusEventHandler<HTMLInputElement> = (event) => {\n onValueBlur?.(event.target.value);\n onBlur?.(event);\n };\n\n return (\n <Input\n {...props}\n ref={ref}\n onChange={handleChange}\n onBlur={handleBlur}\n type={type}\n value={sanitizeTextInputValue(value)}\n defaultValue={sanitizeTextInputValue(defaultValue)}\n />\n );\n};\n","import type { ComponentProps, ElementRef, Ref } from 'react';\n\nimport { TextInput } from '../Input';\n\nimport { useFormGroupContext } from './context';\n\ntype Props = Omit<ComponentProps<typeof TextInput>, 'state'>;\n\nexport const FormGroupTextInput = ({\n ref,\n ...props\n}: Props & { ref?: Ref<ElementRef<'input'>> }) => {\n const { state } = useFormGroupContext();\n return <TextInput state={state} {...props} ref={ref} />;\n};\n","import type { LabelProps as RLabelProps } from '@radix-ui/react-label';\nimport * as RLabel from '@radix-ui/react-label';\n\nimport { cn } from '../../utils';\n\ntype LabelProps = { id?: string | number; htmlFor?: string | number } & Omit<\n RLabelProps,\n 'id' | 'htmlFor'\n>;\n\nconst Optional = ({ className }: { className?: string }) => (\n <span className={cn('tw-text-neutral-400', className)}>(optional)</span>\n);\n\nexport const Label = ({ className, children, id, htmlFor, ...rest }: LabelProps) => {\n return (\n <RLabel.Root\n {...rest}\n id={id?.toString()}\n htmlFor={htmlFor?.toString()}\n className={cn(\n 'tw-m-0 tw-text-neutral-800 tw-font-normal peer-disabled:tw-opacity-50',\n className,\n )}\n >\n {children}\n </RLabel.Root>\n );\n};\n\nLabel.Optional = Optional;\n","import type { ReactNode } from 'react';\n\nimport { cn } from '../../../../utils';\nimport { Tooltip } from '../../../Tooltip';\n\nexport const ToolbarButton = ({\n active,\n disabled,\n onClick,\n tooltip,\n children,\n className: extraClassName,\n}: {\n active?: boolean;\n disabled?: boolean;\n onClick: () => void;\n tooltip: ReactNode;\n children: ReactNode;\n className?: string;\n}) => (\n <Tooltip tooltip={tooltip} placement=\"top\" triggerAsChild>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={onClick}\n className={cn(\n 'tw-flex tw-h-7 tw-min-w-7 tw-cursor-pointer tw-items-center tw-justify-center tw-rounded tw-border-0 tw-bg-transparent tw-px-1 tw-text-xs tw-text-neutral-600',\n 'hover:tw-bg-neutral-100 disabled:tw-cursor-not-allowed disabled:tw-opacity-30',\n active && 'tw-bg-secondary-100 tw-text-secondary-500',\n extraClassName,\n )}\n >\n {children}\n </button>\n </Tooltip>\n);\n","export const ToolbarDivider = () => <div className=\"tw-mx-0.5 tw-h-5 tw-w-px tw-bg-neutral-200\" />;\n","import type { EditorThemeClasses } from 'lexical';\n\n/**\n * Lexical editor theme — maps node types to CSS classes.\n * The editor container uses `tw-prose` so semantic elements (headings, lists, blockquotes, etc.)\n * are styled by Tailwind Typography. We only need explicit classes for text formatting\n * (bold, italic, etc.) because Lexical renders those as `<span>` elements.\n */\nexport const editorTheme: EditorThemeClasses = {\n link: 'tw-cursor-pointer !tw-text-secondary-500 tw-underline',\n text: {\n bold: 'tw-font-bold',\n italic: 'tw-italic',\n strikethrough: 'tw-line-through',\n underline: 'tw-underline',\n code: 'tw-rounded tw-bg-neutral-100 tw-px-1 tw-py-0.5 tw-font-mono tw-text-[0.85em]',\n },\n list: {\n ol: '!tw-list-decimal',\n ul: '!tw-list-disc',\n checklist: '!tw-list-none !tw-pl-0',\n listitemChecked: [\n 'tw-relative !tw-pl-6 tw-list-none tw-outline-none tw-line-through tw-text-neutral-400',\n 'before:tw-content-[\"\"] before:tw-absolute before:tw-left-0 before:tw-top-[3px]',\n 'before:tw-size-4 before:tw-rounded before:tw-border before:tw-border-solid',\n 'before:tw-bg-secondary-500 before:tw-border-secondary-500 before:tw-cursor-pointer',\n 'after:tw-content-[\"\"] after:tw-absolute after:tw-left-[5.5px] after:tw-top-[5.5px]',\n 'after:tw-w-1 after:tw-h-2 after:tw-border-white after:tw-border-solid',\n 'after:tw-border-r-[1.5px] after:tw-border-b-[1.5px] after:tw-border-t-0 after:tw-border-l-0',\n 'after:tw-rotate-45',\n ].join(' '),\n listitemUnchecked: [\n 'tw-relative !tw-pl-6 tw-list-none tw-outline-none',\n 'before:tw-content-[\"\"] before:tw-absolute before:tw-left-0 before:tw-top-[3px]',\n 'before:tw-size-4 before:tw-rounded before:tw-border before:tw-border-solid',\n 'before:tw-border-neutral-200 before:tw-bg-white before:tw-cursor-pointer',\n ].join(' '),\n },\n};\n"]}
|