@blocknote/mantine
Version:
A "Notion-style" block-based extensible text editor built on top of Prosemirror and Tiptap.
1 lines • 310 kB
Source Map (JSON)
{"version":3,"file":"blocknote-mantine.cjs","sources":["../src/BlockNoteTheme.ts","../src/toolbar/ToolbarButton.tsx","../src/badge/Badge.tsx","../src/comments/Card.tsx","../src/comments/Comment.tsx","../src/comments/Editor.tsx","../src/form/TextInput.tsx","../src/menu/Menu.tsx","../src/menu/Button.tsx","../src/panel/Panel.tsx","../src/panel/PanelButton.tsx","../src/panel/PanelFileInput.tsx","../src/panel/PanelTab.tsx","../src/panel/PanelTextInput.tsx","../src/popover/Popover.tsx","../src/sideMenu/SideMenu.tsx","../src/sideMenu/SideMenuButton.tsx","../src/suggestionMenu/SuggestionMenu.tsx","../src/suggestionMenu/SuggestionMenuEmptyItem.tsx","../src/suggestionMenu/SuggestionMenuItem.tsx","../src/suggestionMenu/SuggestionMenuLabel.tsx","../src/suggestionMenu/SuggestionMenuLoader.tsx","../src/suggestionMenu/gridSuggestionMenu/GridSuggestionMenu.tsx","../src/suggestionMenu/gridSuggestionMenu/GridSuggestionMenuEmptyItem.tsx","../src/suggestionMenu/gridSuggestionMenu/GridSuggestionMenuItem.tsx","../src/suggestionMenu/gridSuggestionMenu/GridSuggestionMenuLoader.tsx","../src/tableHandle/ExtendButton.tsx","../src/tableHandle/TableHandle.tsx","../src/toolbar/Toolbar.tsx","../../../node_modules/.pnpm/react-icons@5.5.0_react@19.2.1/node_modules/react-icons/lib/iconContext.mjs","../../../node_modules/.pnpm/react-icons@5.5.0_react@19.2.1/node_modules/react-icons/lib/iconBase.mjs","../../../node_modules/.pnpm/react-icons@5.5.0_react@19.2.1/node_modules/react-icons/hi/index.mjs","../src/toolbar/ToolbarSelect.tsx","../src/components.tsx","../src/BlockNoteView.tsx","../src/defaultThemes.ts"],"sourcesContent":["export type CombinedColor = Partial<{\n text: string;\n background: string;\n}>;\n\nexport type ColorScheme = Partial<{\n editor: CombinedColor;\n menu: CombinedColor;\n tooltip: CombinedColor;\n hovered: CombinedColor;\n selected: CombinedColor;\n disabled: CombinedColor;\n shadow: string;\n border: string;\n sideMenu: string;\n highlights: Partial<{\n gray: CombinedColor;\n brown: CombinedColor;\n red: CombinedColor;\n orange: CombinedColor;\n yellow: CombinedColor;\n green: CombinedColor;\n blue: CombinedColor;\n purple: CombinedColor;\n pink: CombinedColor;\n }>;\n}>;\n\nexport type Theme = Partial<{\n colors: ColorScheme;\n borderRadius: number;\n fontFamily: string;\n}>;\n\ntype NestedObject = { [key: string]: number | string | NestedObject };\n\nconst cssVariablesHelper = (\n theme: Theme,\n editorDOM: HTMLElement,\n unset = false,\n) => {\n const result: string[] = [];\n\n function traverse(current: NestedObject, currentKey = \"--bn\") {\n for (const key in current) {\n const kebabCaseKey = key\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .toLowerCase();\n const fullKey = `${currentKey}-${kebabCaseKey}`;\n\n if (typeof current[key] !== \"object\") {\n // Convert numbers to px\n if (typeof current[key] === \"number\") {\n current[key] = `${current[key]}px`;\n }\n\n if (unset) {\n editorDOM.style.removeProperty(fullKey);\n } else {\n editorDOM.style.setProperty(fullKey, current[key].toString());\n }\n } else {\n traverse(current[key] as NestedObject, fullKey);\n }\n }\n }\n\n traverse(theme);\n\n return result;\n};\n\nexport const applyBlockNoteCSSVariablesFromTheme = (\n theme: Theme,\n editorDOM: HTMLElement,\n) => cssVariablesHelper(theme, editorDOM);\n\n// We don't need a theme to remove the CSS variables, but having access to a\n// theme object allows us to use the same logic to set/unset them, so this\n// placeholder theme is used.\nconst placeholderTheme: Theme = {\n colors: {\n editor: {\n text: undefined as any,\n background: undefined as any,\n },\n menu: {\n text: undefined as any,\n background: undefined as any,\n },\n tooltip: {\n text: undefined as any,\n background: undefined as any,\n },\n hovered: {\n text: undefined as any,\n background: undefined as any,\n },\n selected: {\n text: undefined as any,\n background: undefined as any,\n },\n disabled: {\n text: undefined as any,\n background: undefined as any,\n },\n shadow: undefined as any,\n border: undefined as any,\n sideMenu: undefined as any,\n highlights: {\n gray: {\n text: undefined as any,\n background: undefined as any,\n },\n brown: {\n text: undefined as any,\n background: undefined as any,\n },\n red: {\n text: undefined as any,\n background: undefined as any,\n },\n orange: {\n text: undefined as any,\n background: undefined as any,\n },\n yellow: {\n text: undefined as any,\n background: undefined as any,\n },\n green: {\n text: undefined as any,\n background: undefined as any,\n },\n blue: {\n text: undefined as any,\n background: undefined as any,\n },\n purple: {\n text: undefined as any,\n background: undefined as any,\n },\n pink: {\n text: undefined as any,\n background: undefined as any,\n },\n },\n },\n borderRadius: undefined as any,\n fontFamily: undefined as any,\n};\nexport const removeBlockNoteCSSVariables = (editorDOM: HTMLElement) =>\n cssVariablesHelper(placeholderTheme, editorDOM, true);\n","import {\n ActionIcon as MantineActionIcon,\n Button as MantineButton,\n Stack as MantineStack,\n Text as MantineText,\n Tooltip as MantineTooltip,\n} from \"@mantine/core\";\n\nimport { assertEmpty, isSafari } from \"@blocknote/core\";\nimport { ComponentProps } from \"@blocknote/react\";\nimport { forwardRef, useState } from \"react\";\n\nexport const TooltipContent = (props: {\n mainTooltip: string;\n secondaryTooltip?: string;\n}) => (\n <MantineStack gap={0} className={\"bn-tooltip\"}>\n <MantineText size={\"sm\"} lineClamp={5}>\n {props.mainTooltip}\n </MantineText>\n {props.secondaryTooltip && (\n <MantineText size={\"xs\"} lineClamp={5}>\n {props.secondaryTooltip}\n </MantineText>\n )}\n </MantineStack>\n);\n\ntype ToolbarButtonProps = ComponentProps[\"Generic\"][\"Toolbar\"][\"Button\"];\n\n/**\n * Helper for basic buttons that show in the formatting toolbar.\n */\nexport const ToolbarButton = forwardRef<HTMLButtonElement, ToolbarButtonProps>(\n (props, ref) => {\n const {\n className,\n children,\n mainTooltip,\n secondaryTooltip,\n icon,\n isSelected,\n isDisabled,\n onClick,\n label,\n variant,\n ...rest\n } = props;\n\n // false, because rest props can be added by mantine when button is used as a trigger\n // assertEmpty in this case is only used at typescript level, not runtime level\n assertEmpty(rest, false);\n\n const [hideTooltip, setHideTooltip] = useState(false);\n\n const button = children ? (\n <MantineButton\n aria-label={label}\n className={className}\n // Needed as Safari doesn't focus button elements on mouse down\n // unlike other browsers.\n onMouseDown={(e) => {\n if (isSafari()) {\n (e.currentTarget as HTMLButtonElement).focus();\n }\n }}\n onClick={(event) => {\n setHideTooltip(true);\n onClick?.(event);\n }}\n // Mantine Menu.Target elements block mouseleave events for some reason,\n // but pointerleave events work fine.\n onPointerLeave={() => setHideTooltip(false)}\n aria-pressed={isSelected}\n data-selected={isSelected || undefined}\n data-test={\n mainTooltip\n ? mainTooltip.slice(0, 1).toLowerCase() +\n mainTooltip.replace(/\\s+/g, \"\").slice(1)\n : undefined\n }\n size={variant === \"compact\" ? \"compact-xs\" : \"xs\"}\n disabled={isDisabled || false}\n ref={ref}\n {...rest}\n >\n {children}\n </MantineButton>\n ) : (\n <MantineActionIcon\n className={className}\n aria-label={label}\n // Needed as Safari doesn't focus button elements on mouse down\n // unlike other browsers.\n onMouseDown={(e) => {\n if (isSafari()) {\n (e.currentTarget as HTMLButtonElement).focus();\n }\n }}\n onClick={(event) => {\n // We manually hide the tooltip onclick, because the click event\n // might open a popover which would then show both the tooltip and the popover\n // this is similar to default behavior of shadcn / radix\n setHideTooltip(true);\n onClick?.(event);\n }}\n // Mantine Menu.Target elements block mouseleave events for some reason,\n // but pointerleave events work fine.\n onPointerLeave={() => setHideTooltip(false)}\n aria-pressed={isSelected}\n data-selected={isSelected || undefined}\n data-test={\n mainTooltip\n ? mainTooltip.slice(0, 1).toLowerCase() +\n mainTooltip.replace(/\\s+/g, \"\").slice(1)\n : undefined\n }\n size={variant === \"compact\" ? 20 : 30}\n disabled={isDisabled || false}\n ref={ref}\n {...rest}\n >\n {icon}\n </MantineActionIcon>\n );\n\n if (!mainTooltip) {\n return button;\n }\n\n return (\n <MantineTooltip\n disabled={hideTooltip}\n withinPortal={false}\n label={\n <TooltipContent\n mainTooltip={mainTooltip}\n secondaryTooltip={secondaryTooltip}\n />\n }\n >\n {button}\n </MantineTooltip>\n );\n },\n);\n","import {\n Chip as MantineChip,\n Group as MantineGroup,\n Tooltip as MantineTooltip,\n} from \"@mantine/core\";\n\nimport { assertEmpty } from \"@blocknote/core\";\nimport { ComponentProps } from \"@blocknote/react\";\nimport { MouseEvent, forwardRef, useState } from \"react\";\n\nimport { TooltipContent } from \"../toolbar/ToolbarButton.js\";\n\nexport const Badge = forwardRef<\n HTMLInputElement,\n ComponentProps[\"Generic\"][\"Badge\"][\"Root\"]\n>((props, ref) => {\n const {\n className,\n text,\n icon,\n isSelected,\n mainTooltip,\n secondaryTooltip,\n onClick,\n onMouseEnter,\n ...rest\n } = props;\n\n // false, because rest props can be added by mantine when chip is used as a trigger\n // assertEmpty in this case is only used at typescript level, not runtime level\n assertEmpty(rest, false);\n\n const [hideTooltip, setHideTooltip] = useState(false);\n\n const badge = (\n <MantineChip\n className={className}\n checked={isSelected === true}\n wrapperProps={{\n onMouseEnter,\n onMouseLeave: () => setHideTooltip(false),\n onClick: (event: MouseEvent) => {\n setHideTooltip(true);\n onClick?.(event);\n },\n }}\n variant={\"light\"}\n icon={null}\n ref={ref}\n >\n <span>{icon}</span>\n <span>{text}</span>\n </MantineChip>\n );\n\n if (!mainTooltip || hideTooltip) {\n return badge;\n }\n\n return (\n <MantineTooltip\n refProp=\"rootRef\"\n withinPortal={false}\n label={\n <TooltipContent\n mainTooltip={mainTooltip}\n secondaryTooltip={secondaryTooltip}\n />\n }\n >\n {badge}\n </MantineTooltip>\n );\n});\n\nexport const BadgeGroup = forwardRef<\n HTMLDivElement,\n ComponentProps[\"Generic\"][\"Badge\"][\"Group\"]\n>((props, ref) => {\n const { className, children, ...rest } = props;\n\n assertEmpty(rest);\n\n return (\n <MantineGroup className={className} ref={ref}>\n {children}\n </MantineGroup>\n );\n});\n","import { assertEmpty, mergeCSSClasses } from \"@blocknote/core\";\nimport { ComponentProps } from \"@blocknote/react\";\nimport {\n Card as MantineCard,\n Divider as MantineDivider,\n Text as MantineText,\n} from \"@mantine/core\";\nimport { forwardRef } from \"react\";\n\nexport const Card = forwardRef<\n HTMLDivElement,\n ComponentProps[\"Comments\"][\"Card\"]\n>((props, ref) => {\n const {\n className,\n children,\n headerText,\n selected,\n onFocus,\n onBlur,\n tabIndex,\n ...rest\n } = props;\n\n assertEmpty(rest, false);\n\n return (\n <MantineCard\n className={mergeCSSClasses(className, selected ? \"selected\" : \"\")}\n onFocus={onFocus}\n onBlur={onBlur}\n tabIndex={tabIndex}\n ref={ref}\n >\n {headerText && (\n <MantineText className={\"bn-header-text\"}>{headerText}</MantineText>\n )}\n {children}\n </MantineCard>\n );\n});\n\nexport const CardSection = forwardRef<\n HTMLDivElement,\n ComponentProps[\"Comments\"][\"CardSection\"]\n>((props, ref) => {\n const { className, children, ...rest } = props;\n\n assertEmpty(rest, false);\n\n return (\n <MantineCard.Section className={className} ref={ref}>\n {children}\n </MantineCard.Section>\n );\n});\n\nexport const ExpandSectionsPrompt = forwardRef<\n HTMLDivElement,\n ComponentProps[\"Comments\"][\"ExpandSectionsPrompt\"]\n>((props, ref) => {\n const { className, children, ...rest } = props;\n\n assertEmpty(rest, false);\n\n return (\n <MantineDivider\n className={className}\n label={<MantineText>{children}</MantineText>}\n ref={ref}\n />\n );\n});\n","import { assertEmpty } from \"@blocknote/core\";\nimport { ComponentProps, mergeRefs, useDictionary } from \"@blocknote/react\";\nimport { Avatar, Group, Skeleton, Text } from \"@mantine/core\";\nimport { useHover } from \"@mantine/hooks\";\nimport { forwardRef } from \"react\";\n\nconst AuthorInfo = forwardRef<\n HTMLDivElement,\n Pick<\n ComponentProps[\"Comments\"][\"Comment\"],\n \"authorInfo\" | \"timeString\" | \"edited\"\n >\n>((props, _ref) => {\n const { authorInfo, timeString, edited, ...rest } = props;\n const dict = useDictionary();\n\n assertEmpty(rest, false);\n\n if (authorInfo === \"loading\") {\n return (\n <Group>\n <Skeleton height={24} width={24} />\n <div>\n <Skeleton height={12} width={100} />\n </div>\n </Group>\n );\n }\n\n return (\n <Group>\n <Avatar\n src={authorInfo.avatarUrl}\n alt={authorInfo.username}\n radius=\"xl\"\n size=\"sm\"\n // name={authorInfo.username} TODO: upgrade mantine?\n color=\"initials\"\n />\n\n <Text fz=\"sm\" fw={\"bold\"}>\n {authorInfo.username}\n <Text fz=\"xs\" c=\"dimmed\" span ml={\"xs\"}>\n {timeString} {edited && `(${dict.comments.edited})`}\n </Text>\n </Text>\n </Group>\n );\n});\n\nexport const Comment = forwardRef<\n HTMLDivElement,\n ComponentProps[\"Comments\"][\"Comment\"]\n>((props, ref) => {\n const {\n className,\n showActions,\n authorInfo,\n timeString,\n edited,\n actions,\n emojiPickerOpen,\n children,\n ...rest\n } = props;\n\n const { hovered, ref: hoverRef } = useHover();\n const mergedRef = mergeRefs([ref, hoverRef]);\n assertEmpty(rest, false);\n\n const doShowActions =\n actions &&\n (showActions === true ||\n showActions === undefined ||\n (showActions === \"hover\" && hovered) ||\n emojiPickerOpen);\n\n return (\n <Group pos=\"relative\" ref={mergedRef} className={className}>\n {doShowActions ? (\n <Group\n style={{\n position: \"absolute\",\n right: 0,\n top: 0,\n zIndex: 10,\n }}\n >\n {actions}\n </Group>\n ) : null}\n <AuthorInfo {...props} />\n {children}\n </Group>\n );\n});\n","import { assertEmpty } from \"@blocknote/core\";\nimport {\n ComponentProps,\n FormattingToolbar,\n FormattingToolbarController,\n getFormattingToolbarItems,\n useBlockNoteContext,\n} from \"@blocknote/react\";\nimport { forwardRef } from \"react\";\nimport { BlockNoteView } from \"../BlockNoteView.js\";\n\nexport const Editor = forwardRef<\n HTMLDivElement,\n ComponentProps[\"Comments\"][\"Editor\"]\n>((props, ref) => {\n const { className, autoFocus, onFocus, onBlur, editor, editable, ...rest } =\n props;\n\n assertEmpty(rest, false);\n\n const blockNoteContext = useBlockNoteContext();\n\n return (\n <BlockNoteView\n autoFocus={autoFocus}\n className={className}\n editor={props.editor}\n sideMenu={false}\n slashMenu={false}\n tableHandles={false}\n filePanel={false}\n formattingToolbar={false}\n editable={editable}\n theme={blockNoteContext?.colorSchemePreference}\n ref={ref}\n onFocus={onFocus}\n onBlur={onBlur}\n >\n <FormattingToolbarController\n formattingToolbar={CustomFormattingToolbar}\n />\n </BlockNoteView>\n );\n});\n\nconst CustomFormattingToolbar = () => {\n const items = getFormattingToolbarItems([]).filter(\n (el) => el.key !== \"nestBlockButton\" && el.key !== \"unnestBlockButton\",\n );\n return (\n <FormattingToolbar blockTypeSelectItems={[]}>{items}</FormattingToolbar>\n );\n};\n","import { TextInput as MantineTextInput } from \"@mantine/core\";\n\nimport { assertEmpty, mergeCSSClasses } from \"@blocknote/core\";\nimport { ComponentProps } from \"@blocknote/react\";\nimport { forwardRef } from \"react\";\n\nexport const TextInput = forwardRef<\n HTMLInputElement,\n ComponentProps[\"Generic\"][\"Form\"][\"TextInput\"]\n>((props, ref) => {\n const {\n className,\n name,\n label,\n variant,\n icon,\n value,\n autoFocus,\n placeholder,\n disabled,\n onKeyDown,\n onChange,\n onSubmit,\n autoComplete,\n rightSection,\n ...rest\n } = props;\n\n assertEmpty(rest);\n\n return (\n <MantineTextInput\n size={\"xs\"}\n className={mergeCSSClasses(\n className || \"\",\n variant === \"large\" ? \"bn-mt-input-large\" : \"\"\n )}\n ref={ref}\n name={name}\n label={label}\n leftSection={icon}\n value={value}\n autoFocus={autoFocus}\n data-autofocus={autoFocus ? \"true\" : undefined}\n rightSection={rightSection}\n placeholder={placeholder}\n disabled={disabled}\n onKeyDown={onKeyDown}\n onChange={onChange}\n onSubmit={onSubmit}\n autoComplete={autoComplete}\n />\n );\n});\n","import {\n CheckIcon as MantineCheckIcon,\n Menu as MantineMenu,\n} from \"@mantine/core\";\n\nimport { assertEmpty } from \"@blocknote/core\";\nimport { ComponentProps } from \"@blocknote/react\";\nimport { createContext, forwardRef, useContext } from \"react\";\n\nconst SubMenuContext = createContext<\n | {\n onMenuMouseOver: () => void;\n onMenuMouseLeave: () => void;\n }\n | undefined\n>(undefined);\n\nexport const Menu = (props: ComponentProps[\"Generic\"][\"Menu\"][\"Root\"]) => {\n const { children, onOpenChange, position, sub, ...rest } = props;\n\n assertEmpty(rest);\n\n if (sub) {\n return (\n <MantineMenu.Sub\n transitionProps={{ duration: 250, exitDelay: 250 }}\n withinPortal={false}\n middlewares={{ flip: true, shift: true, inline: false, size: true }}\n onChange={onOpenChange}\n position={position}\n >\n {children}\n </MantineMenu.Sub>\n );\n }\n\n return (\n <MantineMenu\n withinPortal={false}\n middlewares={{ flip: true, shift: true, inline: false, size: true }}\n onChange={onOpenChange}\n position={position}\n >\n {children}\n </MantineMenu>\n );\n};\n\nexport const MenuItem = forwardRef<\n HTMLButtonElement & HTMLDivElement,\n ComponentProps[\"Generic\"][\"Menu\"][\"Item\"]\n>((props, ref) => {\n const { className, children, icon, checked, subTrigger, onClick, ...rest } =\n props;\n\n // false, because rest props can be added by mantine when button is used as a trigger\n // assertEmpty in this case is only used at typescript level, not runtime level\n assertEmpty(rest, false);\n\n if (subTrigger) {\n return (\n <MantineMenu.Sub.Item\n className={className}\n ref={ref}\n leftSection={icon}\n rightSection={\n checked ? (\n <MantineCheckIcon size={10} />\n ) : checked === false ? (\n <div className={\"bn-tick-space\"} />\n ) : null\n }\n onClick={onClick}\n {...rest}\n >\n {children}\n </MantineMenu.Sub.Item>\n );\n }\n\n return (\n <MantineMenu.Item\n className={className}\n ref={ref}\n leftSection={icon}\n rightSection={\n checked ? (\n <MantineCheckIcon size={10} />\n ) : checked === false ? (\n <div className={\"bn-tick-space\"} />\n ) : null\n }\n onClick={onClick}\n {...rest}\n >\n {children}\n </MantineMenu.Item>\n );\n});\n\nexport const MenuTrigger = (\n props: ComponentProps[\"Generic\"][\"Menu\"][\"Trigger\"],\n) => {\n const {\n children,\n sub, // unused\n ...rest\n } = props;\n\n assertEmpty(rest);\n\n if (sub) {\n return <MantineMenu.Sub.Target>{children}</MantineMenu.Sub.Target>;\n }\n\n return <MantineMenu.Target>{children}</MantineMenu.Target>;\n};\n\nexport const MenuDropdown = forwardRef<\n HTMLDivElement,\n ComponentProps[\"Generic\"][\"Menu\"][\"Dropdown\"]\n>((props, ref) => {\n const {\n className,\n children,\n sub, //unused\n ...rest\n } = props;\n\n assertEmpty(rest);\n\n const ctx = useContext(SubMenuContext);\n\n if (sub) {\n return (\n <MantineMenu.Sub.Dropdown\n className={className}\n ref={ref}\n onMouseOver={ctx?.onMenuMouseOver}\n onMouseLeave={ctx?.onMenuMouseLeave}\n >\n {children}\n </MantineMenu.Sub.Dropdown>\n );\n }\n\n return (\n <MantineMenu.Dropdown\n className={className}\n ref={ref}\n onMouseOver={ctx?.onMenuMouseOver}\n onMouseLeave={ctx?.onMenuMouseLeave}\n >\n {children}\n </MantineMenu.Dropdown>\n );\n});\n\nexport const MenuDivider = forwardRef<\n HTMLDivElement,\n ComponentProps[\"Generic\"][\"Menu\"][\"Divider\"]\n>((props, ref) => {\n const { className, ...rest } = props;\n\n assertEmpty(rest);\n\n return <MantineMenu.Divider className={className} ref={ref} />;\n});\n\nexport const MenuLabel = forwardRef<\n HTMLDivElement,\n ComponentProps[\"Generic\"][\"Menu\"][\"Label\"]\n>((props, ref) => {\n const { className, children, ...rest } = props;\n\n assertEmpty(rest);\n\n return (\n <MantineMenu.Label className={className} ref={ref}>\n {children}\n </MantineMenu.Label>\n );\n});\n","import {\n ActionIcon as MantineActionIcon,\n Button as MantineButton,\n} from \"@mantine/core\";\n\nimport { assertEmpty } from \"@blocknote/core\";\nimport { ComponentProps } from \"@blocknote/react\";\nimport { forwardRef } from \"react\";\n\nexport const Button = forwardRef<\n HTMLButtonElement,\n ComponentProps[\"Generic\"][\"Menu\"][\"Button\"]\n>((props, ref) => {\n const {\n className,\n children,\n icon,\n onClick,\n onDragEnd,\n onDragStart,\n draggable,\n label,\n ...rest\n } = props;\n\n // false, because rest props can be added by mantine when button is used as a trigger\n // assertEmpty in this case is only used at typescript level, not runtime level\n assertEmpty(rest, false);\n\n if (icon) {\n return (\n <MantineActionIcon\n size={24}\n className={className}\n ref={ref}\n onClick={onClick}\n onDragEnd={onDragEnd}\n onDragStart={onDragStart}\n draggable={draggable}\n aria-label={label}\n {...rest}\n >\n {icon}\n </MantineActionIcon>\n );\n }\n\n return (\n <MantineButton\n className={className}\n ref={ref}\n onClick={onClick}\n onDragEnd={onDragEnd}\n onDragStart={onDragStart}\n draggable={draggable}\n aria-label={label}\n {...rest}\n >\n {children}\n </MantineButton>\n );\n});\n","import {\n Group as MantineGroup,\n LoadingOverlay as MantineLoadingOverlay,\n Tabs as MantineTabs,\n} from \"@mantine/core\";\n\nimport { assertEmpty } from \"@blocknote/core\";\nimport { ComponentProps } from \"@blocknote/react\";\nimport { forwardRef } from \"react\";\n\nexport const Panel = forwardRef<\n HTMLDivElement,\n ComponentProps[\"FilePanel\"][\"Root\"]\n>((props, ref) => {\n const {\n className,\n tabs,\n defaultOpenTab,\n openTab,\n setOpenTab,\n loading,\n ...rest\n } = props;\n\n assertEmpty(rest);\n\n return (\n <MantineGroup className={className} ref={ref}>\n <MantineTabs\n value={openTab}\n defaultValue={defaultOpenTab}\n onChange={setOpenTab as any}\n >\n {loading && <MantineLoadingOverlay visible={loading} />}\n\n <MantineTabs.List>\n {tabs.map((tab) => (\n <MantineTabs.Tab\n data-test={`${tab.name.toLowerCase()}-tab`}\n value={tab.name}\n key={tab.name}\n >\n {tab.name}\n </MantineTabs.Tab>\n ))}\n </MantineTabs.List>\n\n {tabs.map((tab) => (\n <MantineTabs.Panel value={tab.name} key={tab.name}>\n {tab.tabPanel}\n </MantineTabs.Panel>\n ))}\n </MantineTabs>\n </MantineGroup>\n );\n});\n","import { Button as MantineButton } from \"@mantine/core\";\n\nimport { assertEmpty } from \"@blocknote/core\";\nimport { ComponentProps } from \"@blocknote/react\";\nimport { forwardRef } from \"react\";\n\nexport const PanelButton = forwardRef<\n HTMLButtonElement,\n ComponentProps[\"FilePanel\"][\"Button\"]\n>((props, ref) => {\n const { className, children, onClick, label, ...rest } = props;\n\n assertEmpty(rest);\n\n return (\n <MantineButton\n size={\"xs\"}\n aria-label={label}\n className={className}\n ref={ref}\n onClick={onClick}\n {...rest}\n >\n {children}\n </MantineButton>\n );\n});\n","import { FileInput as MantineFileInput } from \"@mantine/core\";\n\nimport { assertEmpty } from \"@blocknote/core\";\nimport { ComponentProps } from \"@blocknote/react\";\nimport { forwardRef } from \"react\";\n\nexport const PanelFileInput = forwardRef<\n HTMLButtonElement,\n ComponentProps[\"FilePanel\"][\"FileInput\"]\n>((props, ref) => {\n const { className, accept, value, placeholder, onChange, ...rest } = props;\n\n assertEmpty(rest);\n\n return (\n <MantineFileInput\n size={\"xs\"}\n className={className}\n ref={ref}\n accept={accept}\n value={value}\n placeholder={placeholder}\n onChange={onChange}\n {...rest}\n />\n );\n});\n","import { assertEmpty } from \"@blocknote/core\";\nimport { ComponentProps } from \"@blocknote/react\";\nimport { forwardRef } from \"react\";\n\nexport const PanelTab = forwardRef<\n HTMLDivElement,\n ComponentProps[\"FilePanel\"][\"TabPanel\"]\n>((props, ref) => {\n const { className, children, ...rest } = props;\n\n assertEmpty(rest);\n\n return (\n <div className={className} ref={ref}>\n {children}\n </div>\n );\n});\n","import { TextInput as MantineTextInput } from \"@mantine/core\";\n\nimport { assertEmpty } from \"@blocknote/core\";\nimport { ComponentProps } from \"@blocknote/react\";\nimport { forwardRef } from \"react\";\n\nexport const PanelTextInput = forwardRef<\n HTMLInputElement,\n ComponentProps[\"FilePanel\"][\"TextInput\"]\n>((props, ref) => {\n const { className, value, placeholder, onKeyDown, onChange, ...rest } = props;\n\n assertEmpty(rest);\n\n return (\n <MantineTextInput\n size={\"xs\"}\n data-test={\"embed-input\"}\n className={className}\n ref={ref}\n value={value}\n placeholder={placeholder}\n onKeyDown={onKeyDown}\n onChange={onChange}\n />\n );\n});\n","import {\n Popover as MantinePopover,\n PopoverDropdown as MantinePopoverDropdown,\n PopoverTarget as MantinePopoverTarget,\n} from \"@mantine/core\";\n\nimport { assertEmpty } from \"@blocknote/core\";\nimport { ComponentProps } from \"@blocknote/react\";\nimport { forwardRef } from \"react\";\n\nexport const Popover = (\n props: ComponentProps[\"Generic\"][\"Popover\"][\"Root\"],\n) => {\n const { open, onOpenChange, position, children, ...rest } = props;\n\n assertEmpty(rest);\n\n return (\n <MantinePopover\n middlewares={{ size: { padding: 20 } }}\n withinPortal={false}\n opened={open}\n onChange={onOpenChange}\n position={position}\n zIndex={10000}\n >\n {children}\n </MantinePopover>\n );\n};\n\nexport const PopoverTrigger = (\n props: ComponentProps[\"Generic\"][\"Popover\"][\"Trigger\"],\n) => {\n const { children, ...rest } = props;\n\n assertEmpty(rest);\n\n return <MantinePopoverTarget>{children}</MantinePopoverTarget>;\n};\n\nexport const PopoverContent = forwardRef<\n HTMLDivElement,\n ComponentProps[\"Generic\"][\"Popover\"][\"Content\"]\n>((props, ref) => {\n const {\n className,\n children,\n variant, // unused\n ...rest\n } = props;\n\n assertEmpty(rest);\n\n return (\n <MantinePopoverDropdown className={className} ref={ref}>\n {children}\n </MantinePopoverDropdown>\n );\n});\n","import { Group as MantineGroup } from \"@mantine/core\";\n\nimport { assertEmpty } from \"@blocknote/core\";\nimport { ComponentProps } from \"@blocknote/react\";\nimport { forwardRef } from \"react\";\n\nexport const SideMenu = forwardRef<\n HTMLDivElement,\n ComponentProps[\"SideMenu\"][\"Root\"]\n>((props, ref) => {\n const { className, children, ...rest } = props;\n\n assertEmpty(rest, false);\n\n return (\n <MantineGroup\n align={\"center\"}\n gap={0}\n className={className}\n ref={ref}\n {...rest}\n >\n {children}\n </MantineGroup>\n );\n});\n","import {\n ActionIcon as MantineActionIcon,\n Button as MantineButton,\n} from \"@mantine/core\";\n\nimport { assertEmpty } from \"@blocknote/core\";\nimport { ComponentProps } from \"@blocknote/react\";\nimport { forwardRef } from \"react\";\n\nexport const SideMenuButton = forwardRef<\n HTMLButtonElement,\n ComponentProps[\"SideMenu\"][\"Button\"]\n>((props, ref) => {\n const {\n className,\n children,\n icon,\n onClick,\n onDragEnd,\n onDragStart,\n draggable,\n label,\n ...rest\n } = props;\n\n // false, because rest props can be added by mantine when button is used as a trigger\n // assertEmpty in this case is only used at typescript level, not runtime level\n assertEmpty(rest, false);\n\n if (icon) {\n return (\n <MantineActionIcon\n size={24}\n className={className}\n ref={ref}\n onClick={onClick}\n onDragEnd={onDragEnd}\n onDragStart={onDragStart}\n draggable={draggable}\n aria-label={label}\n {...rest}\n >\n {icon}\n </MantineActionIcon>\n );\n }\n\n return (\n <MantineButton\n className={className}\n ref={ref}\n onClick={onClick}\n onDragEnd={onDragEnd}\n onDragStart={onDragStart}\n draggable={draggable}\n aria-label={label}\n {...rest}\n >\n {children}\n </MantineButton>\n );\n});\n","import { Stack as MantineStack } from \"@mantine/core\";\n\nimport { assertEmpty } from \"@blocknote/core\";\nimport { ComponentProps } from \"@blocknote/react\";\nimport { forwardRef } from \"react\";\n\nexport const SuggestionMenu = forwardRef<\n HTMLDivElement,\n ComponentProps[\"SuggestionMenu\"][\"Root\"]\n>((props, ref) => {\n const { className, children, id, ...rest } = props;\n\n assertEmpty(rest);\n\n return (\n <MantineStack\n gap={0}\n className={className}\n ref={ref}\n id={id}\n role=\"listbox\"\n >\n {children}\n </MantineStack>\n );\n});\n","import { Group as MantineGroup } from \"@mantine/core\";\n\nimport { assertEmpty } from \"@blocknote/core\";\nimport { ComponentProps } from \"@blocknote/react\";\nimport { forwardRef } from \"react\";\n\nexport const SuggestionMenuEmptyItem = forwardRef<\n HTMLDivElement,\n ComponentProps[\"SuggestionMenu\"][\"EmptyItem\"]\n>((props, ref) => {\n const { className, children, ...rest } = props;\n\n assertEmpty(rest);\n\n return (\n <MantineGroup className={className} ref={ref}>\n <MantineGroup className=\"bn-mt-suggestion-menu-item-title\">\n {children}\n </MantineGroup>\n </MantineGroup>\n );\n});\n","import {\n Badge as MantineBadge,\n Group as MantineGroup,\n Stack as MantineStack,\n Text as MantineText,\n} from \"@mantine/core\";\nimport { mergeRefs } from \"@mantine/hooks\";\n\nimport { assertEmpty } from \"@blocknote/core\";\nimport { ComponentProps, elementOverflow } from \"@blocknote/react\";\nimport { forwardRef, useEffect, useRef } from \"react\";\n\nexport const SuggestionMenuItem = forwardRef<\n HTMLDivElement,\n ComponentProps[\"SuggestionMenu\"][\"Item\"]\n>((props, ref) => {\n const { className, isSelected, onClick, item, id, ...rest } = props;\n\n assertEmpty(rest);\n\n const itemRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!itemRef.current || !isSelected) {\n return;\n }\n\n const overflow = elementOverflow(itemRef.current, itemRef.current.closest(\n \".bn-suggestion-menu, #ai-suggestion-menu\"\n )!);\n\n if (overflow === \"top\") {\n itemRef.current.scrollIntoView(true);\n } else if (overflow === \"bottom\") {\n itemRef.current.scrollIntoView(false);\n }\n }, [isSelected]);\n\n return (\n <MantineGroup\n gap={0}\n className={className}\n ref={mergeRefs(ref, itemRef)}\n id={id}\n role=\"option\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={onClick}\n aria-selected={isSelected || undefined}\n >\n {item.icon && (\n <MantineGroup\n className=\"bn-mt-suggestion-menu-item-section\"\n data-position=\"left\"\n >\n {item.icon}\n </MantineGroup>\n )}\n <MantineStack gap={0} className=\"bn-mt-suggestion-menu-item-body\">\n <MantineText className=\"bn-mt-suggestion-menu-item-title\">\n {item.title}\n </MantineText>\n <MantineText className=\"bn-mt-suggestion-menu-item-subtitle\">\n {item.subtext}\n </MantineText>\n </MantineStack>\n {item.badge && (\n <MantineGroup\n data-position=\"right\"\n className=\"bn-mt-suggestion-menu-item-section\"\n >\n <MantineBadge size={\"xs\"}>{item.badge}</MantineBadge>\n </MantineGroup>\n )}\n </MantineGroup>\n );\n});\n","import { Group as MantineGroup } from \"@mantine/core\";\n\nimport { assertEmpty } from \"@blocknote/core\";\nimport { ComponentProps } from \"@blocknote/react\";\nimport { forwardRef } from \"react\";\n\nexport const SuggestionMenuLabel = forwardRef<\n HTMLDivElement,\n ComponentProps[\"SuggestionMenu\"][\"Label\"]\n>((props, ref) => {\n const { className, children, ...rest } = props;\n\n assertEmpty(rest);\n\n return (\n <MantineGroup className={className} ref={ref}>\n {children}\n </MantineGroup>\n );\n});\n","import { Loader as MantineLoader } from \"@mantine/core\";\n\nimport { assertEmpty } from \"@blocknote/core\";\nimport { ComponentProps } from \"@blocknote/react\";\nimport { forwardRef } from \"react\";\n\nexport const SuggestionMenuLoader = forwardRef<\n HTMLDivElement,\n ComponentProps[\"SuggestionMenu\"][\"Loader\"]\n>((props, ref) => {\n const { className, ...rest } = props;\n\n assertEmpty(rest);\n\n return (\n <MantineLoader className={className} type=\"dots\" size={16} ref={ref} />\n );\n});\n","import { assertEmpty } from \"@blocknote/core\";\nimport { ComponentProps } from \"@blocknote/react\";\nimport { forwardRef } from \"react\";\n\nexport const GridSuggestionMenu = forwardRef<\n HTMLDivElement,\n ComponentProps[\"GridSuggestionMenu\"][\"Root\"]\n>((props, ref) => {\n const { className, children, id, columns, ...rest } = props;\n\n assertEmpty(rest);\n\n return (\n <div\n className={className}\n style={{ gridTemplateColumns: `repeat(${columns}, 1fr)` } as any}\n ref={ref}\n id={id}\n role=\"grid\"\n >\n {children}\n </div>\n );\n});\n","import { Group as MantineGroup } from \"@mantine/core\";\n\nimport { assertEmpty } from \"@blocknote/core\";\nimport { ComponentProps } from \"@blocknote/react\";\nimport { forwardRef } from \"react\";\n\nexport const GridSuggestionMenuEmptyItem = forwardRef<\n HTMLDivElement,\n ComponentProps[\"GridSuggestionMenu\"][\"EmptyItem\"]\n>((props, ref) => {\n const { className, children, columns, ...rest } = props;\n\n assertEmpty(rest);\n\n return (\n <MantineGroup\n className={className}\n style={{ gridColumn: `1 / ${columns + 1}` }}\n ref={ref}\n >\n <MantineGroup className=\"bn-mt-suggestion-menu-item-title\">\n {children}\n </MantineGroup>\n </MantineGroup>\n );\n});\n","import { mergeRefs } from \"@mantine/hooks\";\n\nimport { assertEmpty } from \"@blocknote/core\";\nimport { ComponentProps, elementOverflow } from \"@blocknote/react\";\nimport { forwardRef, useEffect, useRef } from \"react\";\n\nexport const GridSuggestionMenuItem = forwardRef<\n HTMLDivElement,\n ComponentProps[\"GridSuggestionMenu\"][\"Item\"]\n>((props, ref) => {\n const { className, isSelected, onClick, item, id, ...rest } = props;\n\n assertEmpty(rest);\n\n const itemRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!itemRef.current || !isSelected) {\n return;\n }\n\n const overflow = elementOverflow(\n itemRef.current,\n itemRef.current.closest(\".bn-grid-suggestion-menu\")!,\n );\n\n if (overflow === \"top\") {\n itemRef.current.scrollIntoView(true);\n } else if (overflow === \"bottom\") {\n itemRef.current.scrollIntoView(false);\n }\n }, [isSelected]);\n\n return (\n <div\n className={className}\n ref={mergeRefs(ref, itemRef)}\n id={id}\n role=\"option\"\n onClick={onClick}\n aria-selected={isSelected || undefined}\n >\n {item.icon}\n </div>\n );\n});\n","import { Loader as MantineLoader } from \"@mantine/core\";\n\nimport { assertEmpty } from \"@blocknote/core\";\nimport { ComponentProps } from \"@blocknote/react\";\nimport { forwardRef } from \"react\";\n\nexport const GridSuggestionMenuLoader = forwardRef<\n HTMLDivElement,\n ComponentProps[\"GridSuggestionMenu\"][\"Loader\"]\n>((props, ref) => {\n const {\n className,\n children, // unused, using \"dots\" instead\n columns,\n ...rest\n } = props;\n\n assertEmpty(rest);\n\n return (\n <MantineLoader\n className={className}\n style={{ gridColumn: `1 / ${columns + 1}` }}\n type=\"dots\"\n ref={ref}\n />\n );\n});\n","import { Button as MantineButton } from \"@mantine/core\";\n\nimport { assertEmpty } from \"@blocknote/core\";\nimport { ComponentProps } from \"@blocknote/react\";\nimport { forwardRef } from \"react\";\n\nexport const ExtendButton = forwardRef<\n HTMLButtonElement,\n ComponentProps[\"TableHandle\"][\"ExtendButton\"]\n>((props, ref) => {\n const { children, className, onMouseDown, onClick, ...rest } = props;\n\n // false, because rest props can be added by mantine when button is used as a trigger\n // assertEmpty in this case is only used at typescript level, not runtime level\n assertEmpty(rest, false);\n\n return (\n <MantineButton\n className={className}\n ref={ref}\n onMouseDown={onMouseDown}\n onClick={onClick}\n {...rest}\n >\n {children}\n </MantineButton>\n );\n});\n","import { Button as MantineButton } from \"@mantine/core\";\n\nimport { assertEmpty } from \"@blocknote/core\";\nimport { ComponentProps } from \"@blocknote/react\";\nimport { forwardRef } from \"react\";\n\nexport const TableHandle = forwardRef<\n HTMLButtonElement,\n ComponentProps[\"TableHandle\"][\"Root\"]\n>((props, ref) => {\n const {\n className,\n children,\n draggable,\n onDragStart,\n onDragEnd,\n style,\n label,\n ...rest\n } = props;\n\n // false, because rest props can be added by mantine when button is used as a trigger\n // assertEmpty in this case is only used at typescript level, not runtime level\n assertEmpty(rest, false);\n\n return (\n <MantineButton\n className={className}\n ref={ref}\n aria-label={label}\n draggable={draggable}\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n style={style}\n {...rest}\n >\n {children}\n </MantineButton>\n );\n});\n","import { Flex } from \"@mantine/core\";\n\nimport { assertEmpty } from \"@blocknote/core\";\nimport { ComponentProps } from \"@blocknote/react\";\nimport { mergeRefs, useFocusTrap, useFocusWithin } from \"@mantine/hooks\";\nimport { forwardRef } from \"react\";\n\ntype ToolbarProps = ComponentProps[\"Generic\"][\"Toolbar\"][\"Root\"];\n\nexport const Toolbar = forwardRef<HTMLDivElement, ToolbarProps>(\n (props, ref) => {\n const {\n className,\n children,\n onMouseEnter,\n onMouseLeave,\n variant,\n ...rest\n } = props;\n\n assertEmpty(rest);\n\n // use a focus trap so that tab cycles through toolbar buttons, but only if focus is within the toolbar\n const { ref: focusRef, focused } = useFocusWithin();\n\n const trapRef = useFocusTrap(focused);\n\n const combinedRef = mergeRefs(ref, focusRef, trapRef);\n\n return (\n <Flex\n className={className}\n ref={combinedRef}\n role=\"toolbar\"\n // TODO: aria-label\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n gap={variant === \"action-toolbar\" ? 2 : undefined}\n >\n {children}\n </Flex>\n );\n },\n);\n","import React from \"react\";\nexport var DefaultContext = {\n color: undefined,\n size: undefined,\n className: undefined,\n style: undefined,\n attr: undefined\n};\nexport var IconContext = React.createContext && /*#__PURE__*/React.createContext(DefaultContext);","var _excluded = [\"attr\", \"size\", \"title\"];\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } } return target; }\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nimport React from \"react\";\nimport { IconContext, DefaultContext } from \"./iconContext.mjs\";\nfunction Tree2Element(tree) {\n return tree && tree.map((node, i) => /*#__PURE__*/React.createElement(node.tag, _objectSpread({\n key: i\n }, node.attr), Tree2Element(node.child)));\n}\nexport function GenIcon(data) {\n return props => /*#__PURE__*/React.createElement(IconBase, _extends({\n attr: _objectSpread({}, data.attr)\n }, props), Tree2Element(data.child));\n}\nexport function IconBase(props) {\n var elem = conf => {\n var {\n attr,\n size,\n title\n } = props,\n svgProps = _objectWithoutProperties(props, _excluded);\n var computedSize = size || conf.size || \"1em\";\n var className;\n if (conf.className) className = conf.className;\n if (props.className) className = (className ? className + \" \" : \"\") + props.className;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n stroke: \"currentColor\",\n fill: \"currentColor\",\n strokeWidth: \"0\"\n }, conf.attr, attr, svgProps, {\n className: className,\n style: _objectSpread(_objectSpread({\n color: props.color || conf.color\n }, conf.style), props.style),\n height: computedSize,\n width: computedSize,\n xmlns: \"http://www.w3.org/2000/svg\"\n }), title && /*#__PURE__*/React.createElement(\"title\", null, title), props.children);\n };\n return IconContext !== undefined ? /*#__PURE__*/React.createElement(IconContext.Consumer, null, conf => elem(conf)) : elem(DefaultContext);\n}","// THIS FILE IS AUTO GENERATED\nimport { GenIcon } from '../lib/index.mjs';\nexport function HiAcademicCap (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 20 20\",\"fill\":\"currentColor\",\"aria-hidden\":\"true\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M10.394 2.08a1 1 0 00-.788 0l-7 3a1 1 0 000 1.84L5.25 8.051a.999.999 0 01.356-.257l4-1.714a1 1 0 11.788 1.838L7.667 9.088l1.94.831a1 1 0 00.787 0l7-3a1 1 0 000-1.838l-7-3zM3.31 9.397L5 10.12v4.102a8.969 8.969 0 00-1.05-.174 1 1 0 01-.89-.89 11.115 11.115 0 01.25-3.762zM9.3 16.573A9.026 9.026 0 007 14.935v-3.957l1.818.78a3 3 0 002.364 0l5.508-2.361a11.026 11.026 0 01.25 3.762 1 1 0 01-.89.89 8.968 8.968 0 00-5.35 2.524 1 1 0 01-1.4 0zM6 18a1 1 0 001-1v-2.065a8.935 8.935 0 00-2-.712V17a1 1 0 001 1z\"},\"child\":[]}]})(props);\n};\nexport function HiAdjustments (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 20 20\",\"fill\":\"currentColor\",\"aria-hidden\":\"true\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M5 4a1 1 0 00-2 0v7.268a2 2 0 000 3.464V16a1 1 0 102 0v-1.268a2 2 0 000-3.464V4zM11 4a1 1 0 10-2 0v1.268a2 2 0 000 3.464V16a1 1 0 102 0V8.732a2 2 0 000-3.464V4zM16 3a1 1 0 011 1v7.268a2 2 0 010 3.464V16a1 1 0 11-2 0v-1.268a2 2 0 010-3.464V4a1 1 0 011-1z\"},\"child\":[]}]})(props);\n};\nexport function HiAnnotation (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 20 20\",\"fill\":\"currentColor\",\"aria-hidden\":\"true\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M18 13V5a2 2 0 00-2-2H4a2 2 0 00-2 2v8a2 2 0 002 2h3l3 3 3-3h3a2 2 0 002-2zM5 7a1 1 0 011-1h8a1 1 0 110 2H6a1 1 0 01-1-1zm1 3a1 1 0 100 2h3a1 1 0 100-2H6z\",\"clipRule\":\"evenodd\"},\"child\":[]}]})(props);\n};\nexport function HiArchive (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 20 20\",\"fill\":\"currentColor\",\"aria-hidden\":\"true\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"d\":\"M4 3a2 2 0 100 4h12a2 2 0 100-4H4z\"},\"child\":[]},{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M3 8h14v7a2 2 0 01-2 2H5a2 2 0 01-2-2V8zm5 3a1 1 0 011-1h2a1 1 0 110 2H9a1 1 0 01-1-1z\",\"clipRule\":\"evenodd\"},\"child\":[]}]})(props);\n};\nexport function HiArrowCircleDown (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 20 20\",\"fill\":\"currentColor\",\"aria-hidden\":\"true\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M10 18a8 8 0 100-16 8 8 0 000 16zm1-11a1 1 0 10-2 0v3.586L7.707 9.293a1 1 0 00-1.414 1.414l3 3a1 1 0 001.414 0l3-3a1 1 0 00-1.414-1.414L11 10.586V7z\",\"clipRule\":\"evenodd\"},\"child\":[]}]})(props);\n};\nexport function HiArrowCircleLeft (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\"0 0 20 20\",\"fill\":\"currentColor\",\"aria-hidden\":\"true\"},\"child\":[{\"tag\":\"path\",\"attr\":{\"fillRule\":\"evenodd\",\"d\":\"M10 18a8 8 0 100-16 8 8 0 000 16zm.707-10.293a1 1 0 00-1.414-1.414l-3 3a1 1 0 000 1.414l3 3a1 1 0 001.414-1.414L9.414 11H13a1 1 0 100-2H9.414l1.293-1.293z\",\"clipRule\":\"evenodd\"},\"child\":[]}]})(props);\n};\nexport function HiArrowCircleRight (props) {\n return GenIcon({\"tag\":\"svg\",\"attr\":{\"viewBox\":\