{"version":3,"sources":["../../../src/components/properties/SelectProperty.tsx","../../../src/localization/LanguageProvider.tsx","../../../src/hooks/useLocalStorage.ts","../../../src/localization/util.ts","../../../src/localization/useTranslation.ts","../../../src/components/properties/PropertyBase.tsx","../../../src/components/user-action/Button.tsx","../../../src/localization/defaults/form.ts","../../../src/components/user-action/Select.tsx","../../../src/components/user-action/Label.tsx","../../../src/components/layout-and-navigation/Tile.tsx","../../../src/components/layout-and-navigation/Expandable.tsx","../../../src/util/noop.ts","../../../src/components/user-action/Menu.tsx","../../../src/hooks/useOutsideClick.ts","../../../src/hooks/useHoverState.ts","../../../src/util/PropsWithFunctionChildren.ts","../../../src/hooks/usePopoverPosition.ts","../../../src/components/user-action/Input.tsx","../../../src/hooks/useDelay.ts","../../../src/hooks/useFocusManagement.ts","../../../src/hooks/useFocusOnceVisible.ts","../../../src/components/user-action/SearchBar.tsx","../../../src/hooks/useSearch.ts","../../../src/util/simpleSearch.ts"],"sourcesContent":["import { List, Plus } from 'lucide-react'\nimport clsx from 'clsx'\nimport type { PropsForTranslation } from '../../localization/useTranslation'\nimport { useTranslation } from '../../localization/useTranslation'\nimport type { PropertyBaseProps } from './PropertyBase'\nimport { PropertyBase } from './PropertyBase'\nimport type { SelectProps } from '../user-action/Select'\nimport { Select } from '../user-action/Select'\nimport type { FormTranslationType } from '../../localization/defaults/form'\nimport { formTranslation } from '../../localization/defaults/form'\nimport { ListTile } from '../layout-and-navigation/Tile'\n\ntype SingleSelectPropertyTranslation = FormTranslationType\n\nexport type SingleSelectPropertyProps = Omit<PropertyBaseProps, 'icon' | 'input' | 'hasValue' | 'className'> &\n  Omit<SelectProps<string>, 'className' | 'disabled' | 'label'> & {\n  onAddNew?: (value: string) => void,\n}\n\n/**\n * An Input for SingleSelect properties\n */\nexport const SingleSelectProperty = ({\n                                       overwriteTranslation,\n                                       value,\n                                       options,\n                                       name,\n                                       readOnly = false,\n                                       softRequired,\n                                       onRemove,\n                                       onAddNew,\n                                       ...selectProps\n                                     }: PropsForTranslation<SingleSelectPropertyTranslation, SingleSelectPropertyProps>) => {\n  const translation = useTranslation([formTranslation], overwriteTranslation)\n  const hasValue = value !== undefined\n\n  return (\n    <PropertyBase\n      name={name}\n      onRemove={onRemove}\n      readOnly={readOnly}\n      softRequired={softRequired}\n      hasValue={hasValue}\n      icon={<List size={24}/>}\n      input={({ softRequired }) => (\n        <Select\n          {...selectProps}\n          value={value}\n          options={options}\n          disabled={readOnly}\n          className={clsx('w-full')}\n          hintText={`${translation('select')}...`}\n          searchOptions={{\n            sortingFunction: (a, b) => a.value.localeCompare(b.value),\n            ...selectProps?.searchOptions\n          }}\n          additionalItems={({ close, search }) => {\n            if (!onAddNew && !search.trim()) {\n              return undefined\n            }\n            return (\n              <ListTile\n                prefix={(<Plus/>)}\n                title={`${translation('add')} ${search.trim()}`}\n                onClick={() => {\n                  onAddNew(search)\n                  close()\n                }}\n                disabled={options.some(value => value.value === search.trim())}\n              />\n            )\n          }}\n          triggerClassName={clsx(\n            '!border-none',\n            {\n              '!bg-warning !text-surface-warning': softRequired && !hasValue,\n              '!bg-property-title-background': !softRequired || hasValue,\n            }\n          )}\n          hintTextClassName={(softRequired && !hasValue) ? 'text-surface-warning' : undefined}\n        />\n      )}\n    />\n  )\n}\n","import type { Dispatch, PropsWithChildren, SetStateAction } from 'react'\nimport { createContext, useContext, useEffect, useState } from 'react'\nimport { useLocalStorage } from '../hooks/useLocalStorage'\nimport type { Language } from './util'\nimport { LanguageUtil } from './util'\n\nexport type LanguageContextValue = {\n  language: Language,\n  setLanguage: Dispatch<SetStateAction<Language>>,\n}\n\nexport const LanguageContext = createContext<LanguageContextValue>({\n  language: LanguageUtil.DEFAULT_LANGUAGE,\n  setLanguage: (v) => v\n})\n\nexport const useLanguage = () => useContext(LanguageContext)\n\nexport const useLocale = (overWriteLanguage?: Language) => {\n  const { language } = useLanguage()\n  const mapping: Record<Language, string> = {\n    en: 'en-US',\n    de: 'de-DE'\n  }\n  return mapping[overWriteLanguage ?? language]\n}\n\ntype LanguageProviderProps = {\n  initialLanguage?: Language,\n}\n\nexport const LanguageProvider = ({ initialLanguage, children }: PropsWithChildren<LanguageProviderProps>) => {\n  const [language, setLanguage] = useState<Language>(initialLanguage ?? LanguageUtil.DEFAULT_LANGUAGE)\n  const [storedLanguage, setStoredLanguage] = useLocalStorage<Language>('language', initialLanguage ?? LanguageUtil.DEFAULT_LANGUAGE)\n\n  useEffect(() => {\n    if (language !== initialLanguage && initialLanguage) {\n      console.warn('LanguageProvider initial state changed: Prefer using languageProvider\\'s setLanguage instead')\n      setLanguage(initialLanguage)\n    }\n  }, [initialLanguage]) // eslint-disable-line react-hooks/exhaustive-deps\n\n  useEffect(() => {\n    document.documentElement.setAttribute('lang', language)\n    setStoredLanguage(language)\n  }, [language])  // eslint-disable-line react-hooks/exhaustive-deps\n\n  useEffect(() => {\n    if (storedLanguage !== null) {\n      setLanguage(storedLanguage)\n      return\n    }\n\n    const LanguageToTestAgainst = Object.values(LanguageUtil.languages)\n\n    const matchingBrowserLanguage = window.navigator.languages\n      .map(language => LanguageToTestAgainst.find((test) => language === test || language.split('-')[0] === test))\n      .filter(entry => entry !== undefined)\n\n    if (matchingBrowserLanguage.length === 0) return\n\n    const firstMatch = matchingBrowserLanguage[0] as Language\n    setLanguage(firstMatch)\n  }, []) // eslint-disable-line react-hooks/exhaustive-deps\n\n  return (\n    <LanguageContext.Provider value={{\n      language,\n      setLanguage\n    }}>\n      {children}\n    </LanguageContext.Provider>\n  )\n}","'use client'\n\nimport type { Dispatch, SetStateAction } from 'react'\nimport { useCallback, useState } from 'react'\nimport { LocalStorageService } from '../util/storage'\nimport { resolveSetState } from '../util/resolveSetState'\n\ntype SetValue<T> = Dispatch<SetStateAction<T>>\nexport const useLocalStorage = <T>(key: string, initValue: T): [T, SetValue<T>] => {\n  const get = useCallback((): T => {\n    if (typeof window === 'undefined') {\n      return initValue\n    }\n    const storageService = new LocalStorageService()\n    const value = storageService.get<T>(key)\n    return value || initValue\n  }, [initValue, key])\n\n  const [storedValue, setStoredValue] = useState<T>(get)\n\n  const setValue: SetValue<T> = useCallback(action => {\n    const newValue = resolveSetState(action, storedValue)\n    const storageService = new LocalStorageService()\n    storageService.set(key, newValue)\n\n    setStoredValue(newValue)\n  }, [storedValue, setStoredValue, key])\n\n  return [storedValue, setValue]\n}","/**\n * The supported languages\n */\nconst languages = ['en', 'de'] as const\n\n/**\n * The supported languages\n */\nexport type Language = typeof languages[number]\n\n/**\n * The supported languages' names in their respective language\n */\nconst languagesLocalNames: Record<Language, string> = {\n  en: 'English',\n  de: 'Deutsch',\n}\n\n/**\n * The default language\n */\nconst DEFAULT_LANGUAGE: Language = 'en'\n\n/**\n * A constant definition for holding data regarding languages\n */\nexport const LanguageUtil = {\n  languages,\n  DEFAULT_LANGUAGE,\n  languagesLocalNames,\n}","import { useLanguage } from './LanguageProvider'\nimport type { Language } from './util'\n\n/**\n * A type describing the pluralization of a word\n */\nexport type TranslationPlural = {\n  zero?: string,\n  one?: string,\n  two?: string,\n  few?: string,\n  many?: string,\n  other: string,\n}\n\n/**\n * The type describing all values of a translation\n */\nexport type TranslationType = Record<string, string | TranslationPlural>\n\n/**\n * The type of translations\n */\nexport type Translation<T extends TranslationType> = Record<Language, T>\n\ntype OverwriteTranslationType<T extends TranslationType> = {\n  language?: Language,\n  translation?: Translation<Partial<T>>,\n}\n\n/**\n * Adds the `language` prop to the component props.\n *\n * @param Translation the type of the translation object\n *\n * @param Props the type of the component props, defaults to `Record<string, never>`,\n *              if you don't expect any other props other than `language` and get an\n *              error when using your component (because it uses `forwardRef` etc.)\n *              you can try out `Record<string, unknown>`, this might resolve your\n *              problem as `SomeType & never` is still `never` but `SomeType & unknown`\n *              is `SomeType` which means that adding back props (like `ref` etc.)\n *              works properly\n */\nexport type PropsForTranslation<\n  Translation extends TranslationType,\n  Props = unknown\n> = Props & {\n  overwriteTranslation?: OverwriteTranslationType<Translation>,\n}\n\ntype StringKeys<T> = Extract<keyof T, string>;\n\ntype TranslationFunctionOptions = {\n  replacements?: Record<string, string>,\n  count?: number,\n}\ntype TranslationFunction<T extends TranslationType> = (key: StringKeys<T>, options?: TranslationFunctionOptions) => string\n\nexport const TranslationPluralCount = {\n  zero: 0,\n  one: 1,\n  two: 2,\n  few: 3,\n  many: 11,\n  other: -1,\n}\n\n\nexport const useTranslation = <T extends TranslationType>(\n  translations: Translation<Partial<TranslationType>>[],\n  overwriteTranslation: OverwriteTranslationType<T> = {}\n): TranslationFunction<T> => {\n  const { language: languageProp, translation: overwrite } = overwriteTranslation\n  const { language: inferredLanguage } = useLanguage()\n  const usedLanguage = languageProp ?? inferredLanguage\n  const usedTranslations = [...translations]\n  if (overwrite) {\n    usedTranslations.push(overwrite)\n  }\n\n  return (key: StringKeys<T>, options?: TranslationFunctionOptions): string => {\n    const { count, replacements } = { ...{ count: 0, replacements: {} }, ...options }\n\n    try {\n      for (let i = translations.length - 1; i >= 0; i--) {\n        const translation = translations[i]\n        const localizedTranslation = translation[usedLanguage]\n        if (!localizedTranslation) {\n          continue\n        }\n        const value = localizedTranslation[key]\n        if(!value) {\n          continue\n        }\n\n        let forProcessing: string\n        if (typeof value !== 'string') {\n          if (count === TranslationPluralCount.zero && value?.zero) {\n            forProcessing = value.zero\n          } else if (count === TranslationPluralCount.one && value?.one) {\n            forProcessing = value.one\n          } else if (count === TranslationPluralCount.two && value?.two) {\n            forProcessing = value.two\n          } else if (TranslationPluralCount.few <= count && count < TranslationPluralCount.many && value?.few) {\n            forProcessing = value.few\n          } else if (count > TranslationPluralCount.many && value?.many) {\n            forProcessing = value.many\n          } else {\n            forProcessing = value.other\n          }\n        } else {\n          forProcessing = value\n        }\n        forProcessing = forProcessing.replace(/\\{\\{(\\w+)}}/g, (_, placeholder) => {\n          return replacements[placeholder] ?? `{{key:${placeholder}}}` // fallback if key is missing\n        })\n        return forProcessing\n      }\n    } catch (e) {\n      console.error(e)\n    }\n    return `{{${usedLanguage}:${key}}}`\n  }\n}","import type { ReactNode } from 'react'\nimport { AlertTriangle } from 'lucide-react'\nimport clsx from 'clsx'\nimport { TextButton } from '../user-action/Button'\nimport type { PropsForTranslation } from '../../localization/useTranslation'\nimport { useTranslation } from '../../localization/useTranslation'\nimport type { FormTranslationType } from '../../localization/defaults/form'\nimport { formTranslation } from '../../localization/defaults/form'\n\ntype PropertyBaseTranslation = FormTranslationType\n\nexport type PropertyBaseProps = {\n  name: string,\n  input: (props: { softRequired: boolean, hasValue: boolean }) => ReactNode,\n  onRemove?: () => void,\n  hasValue: boolean,\n  softRequired?: boolean,\n  readOnly?: boolean,\n  icon?: ReactNode,\n  className?: string,\n}\n\n/**\n * A component for showing a properties with uniform styling\n */\nexport const PropertyBase = ({\n                               overwriteTranslation,\n                               name,\n                               input,\n                               softRequired = false,\n                               hasValue,\n                               icon,\n                               readOnly,\n                               onRemove,\n                               className = '',\n                             }: PropsForTranslation<PropertyBaseTranslation, PropertyBaseProps>) => {\n  const translation = useTranslation([formTranslation], overwriteTranslation)\n  const requiredAndNoValue = softRequired && !hasValue\n  return (\n    <div className={clsx('flex-row-0 group', className)}>\n      <div\n        className={clsx(\n          'flex-row-2 max-w-48 min-w-48 px-3 py-2 items-center rounded-l-xl border-2 border-r-0', {\n            'bg-property-title-background text-property-title-text group-hover:border-primary': !requiredAndNoValue,\n            'bg-warning text-surface-warning group-hover:border-warning border-warning/90': requiredAndNoValue,\n          }, className\n        )}\n      >\n        <div className=\"max-w-6 min-w-6 text-text-primary\">{icon}</div>\n        <span className=\"font-semibold\">{name}</span>\n      </div>\n      <div\n        className={clsx(\n          'flex-row-2 grow px-3 py-2 justify-between items-center rounded-r-xl border-2 border-l-0 min-h-15', {\n            'bg-input-background text-input-text group-hover:border-primary': !requiredAndNoValue,\n            'bg-surface-warning group-hover:border-warning border-warning/90': requiredAndNoValue,\n          }, className\n        )}\n      >\n        {input({ softRequired, hasValue })}\n        {requiredAndNoValue && (\n          <div className=\"text-warning\"><AlertTriangle size={24}/></div>\n        )}\n        {onRemove && hasValue && (\n          <TextButton\n            onClick={onRemove}\n            color=\"negative\"\n            className={clsx('items-center', { '!text-transparent': !hasValue || readOnly })}\n            disabled={!hasValue || readOnly}\n          >\n            {translation('remove')}\n          </TextButton>\n        )}\n      </div>\n    </div>\n  )\n}\n","import type { ButtonHTMLAttributes, PropsWithChildren, ReactNode } from 'react'\nimport { forwardRef } from 'react'\nimport clsx from 'clsx'\n\n\nexport const ButtonColorUtil = {\n  solid: ['primary', 'secondary', 'tertiary', 'positive', 'warning', 'negative', 'neutral'] as const,\n  text: ['primary', 'negative', 'neutral'] as const,\n  outline: ['primary'] as const,\n}\n\nexport const IconButtonUtil = {\n  icon: [...ButtonColorUtil.solid, 'transparent'] as const,\n}\n\n\n/**\n * The allowed colors for the SolidButton and IconButton\n */\nexport type SolidButtonColor = typeof ButtonColorUtil.solid[number]\n/**\n * The allowed colors for the OutlineButton\n */\nexport type OutlineButtonColor = typeof ButtonColorUtil.outline[number]\n/**\n * The allowed colors for the TextButton\n */\nexport type TextButtonColor = typeof ButtonColorUtil.text[number]\n/**\n * The allowed colors for the IconButton\n */\nexport type IconButtonColor = typeof IconButtonUtil.icon[number]\n\n\n/**\n * The different sizes for a button\n */\ntype ButtonSizes = 'small' | 'medium' | 'large'\n\ntype IconButtonSize = 'tiny' | 'small' | 'medium' | 'large'\n\n/**\n * The shard properties between all button types\n */\nexport type ButtonProps = PropsWithChildren<{\n  /**\n   * @default 'medium'\n   */\n  size?: ButtonSizes,\n}> & ButtonHTMLAttributes<Element>\n\nconst paddingMapping: Record<ButtonSizes, string> = {\n  small: 'btn-sm',\n  medium: 'btn-md',\n  large: 'btn-lg'\n}\n\nconst iconPaddingMapping: Record<IconButtonSize, string> = {\n  tiny: 'icon-btn-xs',\n  small: 'icon-btn-sm',\n  medium: 'icon-btn-md',\n  large: 'icon-btn-lg'\n}\n\nexport const ButtonUtil = {\n  paddingMapping,\n  iconPaddingMapping\n}\n\ntype ButtonWithIconsProps = ButtonProps & {\n  startIcon?: ReactNode,\n  endIcon?: ReactNode,\n}\n\nexport type SolidButtonProps = ButtonWithIconsProps & {\n  color?: SolidButtonColor,\n}\n\nexport type OutlineButtonProps = ButtonWithIconsProps & {\n  color?: OutlineButtonColor,\n}\n\nexport type TextButtonProps = ButtonWithIconsProps & {\n  color?: TextButtonColor,\n  coloredHoverBackground?: boolean,\n}\n\n/**\n * The shard properties between all button types\n */\nexport type IconButtonProps = PropsWithChildren<{\n  /**\n   * @default 'medium'\n   */\n  size?: IconButtonSize,\n  color?: IconButtonColor,\n}> & ButtonHTMLAttributes<Element>\n\n/**\n * A button with a solid background and different sizes\n */\nconst SolidButton = forwardRef<HTMLButtonElement, SolidButtonProps>(function SolidButton({\n                                                                                           children,\n                                                                                           color = 'primary',\n                                                                                           size = 'medium',\n                                                                                           startIcon,\n                                                                                           endIcon,\n                                                                                           onClick,\n                                                                                           className,\n                                                                                           ...restProps\n                                                                                         }, ref) {\n  const colorClasses = {\n    primary: 'not-disabled:bg-button-solid-primary-background not-disabled:text-button-solid-primary-text',\n    secondary: 'not-disabled:bg-button-solid-secondary-background not-disabled:text-button-solid-secondary-text',\n    tertiary: 'not-disabled:bg-button-solid-tertiary-background not-disabled:text-button-solid-tertiary-text',\n    positive: 'not-disabled:bg-button-solid-positive-background not-disabled:text-button-solid-positive-text',\n    warning: 'not-disabled:bg-button-solid-warning-background not-disabled:text-button-solid-warning-text',\n    negative: 'not-disabled:bg-button-solid-negative-background not-disabled:text-button-solid-negative-text',\n    neutral: 'not-disabled:bg-button-solid-neutral-background not-disabled:text-button-solid-neutral-text',\n  }[color]\n\n  const iconColorClasses = {\n    primary: 'not-group-disabled:text-button-solid-primary-icon',\n    secondary: 'not-group-disabled:text-button-solid-secondary-icon',\n    tertiary: 'not-group-disabled:text-button-solid-tertiary-icon',\n    positive: 'not-group-disabled:text-button-solid-positive-icon',\n    warning: 'not-group-disabled:text-button-solid-warning-icon',\n    negative: 'not-group-disabled:text-button-solid-negative-icon',\n    neutral: 'not-group-disabled:text-button-solid-neutral-icon',\n  }[color]\n\n  return (\n    <button\n      ref={ref}\n      onClick={onClick}\n      className={clsx(\n        'group font-semibold',\n        colorClasses,\n        'not-disabled:hover:brightness-90',\n        'disabled:text-disabled-text disabled:bg-disabled-background',\n        ButtonUtil.paddingMapping[size],\n        className\n      )}\n      {...restProps}\n    >\n      {startIcon && (\n        <span\n          className={clsx(\n            iconColorClasses,\n            'group-disabled:text-disabled-icon'\n          )}\n        >\n          {startIcon}\n        </span>\n      )}\n      {children}\n      {endIcon && (\n        <span\n          className={clsx(\n            iconColorClasses,\n            'group-disabled:text-disabled-icon'\n          )}\n        >\n          {endIcon}\n        </span>\n      )}\n    </button>\n  )\n})\n\n/**\n * A button with an outline border and different sizes\n */\nconst OutlineButton = ({\n                         children,\n                         color = 'primary',\n                         size = 'medium',\n                         startIcon,\n                         endIcon,\n                         onClick,\n                         className,\n                         ...restProps\n                       }: OutlineButtonProps) => {\n  const colorClasses = {\n    primary: 'not-disabled:border-button-outline-primary-text not-disabled:text-button-outline-primary-text',\n  }[color]\n\n  const iconColorClasses = {\n    primary: 'not-group-disabled:text-button-outline-primary-icon',\n  }[color]\n  return (\n    <button\n      onClick={onClick}\n      className={clsx(\n        'group font-semibold bg-transparent border-2 ',\n        'not-disabled:hover:brightness-80',\n        colorClasses,\n        'disabled:text-disabled-text disabled:border-disabled-outline',\n        ButtonUtil.paddingMapping[size],\n        className\n      )}\n      {...restProps}\n    >\n      {startIcon && (\n        <span\n          className={clsx(\n            iconColorClasses,\n            'group-disabled:text-disabled-icon'\n          )}\n        >\n          {startIcon}\n        </span>\n      )}\n      {children}\n      {endIcon && (\n        <span\n          className={clsx(\n            iconColorClasses,\n            'group-disabled:text-disabled-icon'\n          )}\n        >\n          {endIcon}\n        </span>\n      )}\n    </button>\n  )\n}\n\n/**\n * A text that is a button that can have different sizes\n */\nconst TextButton = ({\n                      children,\n                      color = 'neutral',\n                      size = 'medium',\n                      startIcon,\n                      endIcon,\n                      onClick,\n                      coloredHoverBackground = true,\n                      className,\n                      ...restProps\n                    }: TextButtonProps) => {\n  const colorClasses = {\n    primary: 'not-disabled:bg-transparent not-disabled:text-button-text-primary-text',\n    negative: 'not-disabled:bg-transparent not-disabled:text-button-text-negative-text',\n    neutral: 'not-disabled:bg-transparent not-disabled:text-button-text-neutral-text',\n  }[color]\n\n  const backgroundColor = {\n    primary: 'not-disabled:hover:bg-button-text-primary-text/20',\n    negative: 'not-disabled:hover:bg-button-text-negative-text/20',\n    neutral: 'not-disabled:hover:bg-button-text-neutral-text/20',\n  }[color]\n\n  const iconColorClasses = {\n    primary: 'not-group-disabled:text-button-text-primary-icon',\n    negative: 'not-group-disabled:text-button-text-negative-icon',\n    neutral: 'not-group-disabled:text-button-text-neutral-icon',\n  }[color]\n\n  return (\n    <button\n      onClick={onClick}\n      className={clsx(\n        'group font-semibold',\n        'disabled:text-disabled-text',\n        colorClasses,\n        {\n          [backgroundColor]: coloredHoverBackground,\n          'not-disabled:hover:bg-button-text-hover-background': !coloredHoverBackground,\n        },\n        ButtonUtil.paddingMapping[size],\n        className\n      )}\n      {...restProps}\n    >\n      {startIcon && (\n        <span\n          className={clsx(\n            iconColorClasses,\n            'group-disabled:text-disabled-icon'\n          )}\n        >\n          {startIcon}\n        </span>\n      )}\n      {children}\n      {endIcon && (\n        <span\n          className={clsx(\n            iconColorClasses,\n            'group-disabled:text-disabled-icon'\n          )}\n        >\n          {endIcon}\n        </span>\n      )}\n    </button>\n  )\n}\n\n\n/**\n * A button for icons with a solid background and different sizes\n */\nconst IconButton = ({\n                      children,\n                      color = 'primary',\n                      size = 'medium',\n                      className,\n                      ...restProps\n                    }: IconButtonProps) => {\n  const colorClasses = {\n    primary: 'not-disabled:bg-button-solid-primary-background not-disabled:text-button-solid-primary-text',\n    secondary: 'not-disabled:bg-button-solid-secondary-background not-disabled:text-button-solid-secondary-text',\n    tertiary: 'not-disabled:bg-button-solid-tertiary-background not-disabled:text-button-solid-tertiary-text',\n    positive: 'not-disabled:bg-button-solid-positive-background not-disabled:text-button-solid-positive-text',\n    warning: 'not-disabled:bg-button-solid-warning-background not-disabled:text-button-solid-warning-text',\n    negative: 'not-disabled:bg-button-solid-negative-background not-disabled:text-button-solid-negative-text',\n    neutral: 'not-disabled:bg-button-solid-neutral-background not-disabled:text-button-solid-neutral-text',\n    transparent: 'not-disabled:bg-transparent',\n  }[color]\n\n  return (\n    <button\n      className={clsx(\n        colorClasses,\n        'not-disabled:hover:brightness-90',\n        'disabled:text-disabled-text',\n        {\n          'disabled:bg-disabled-background': color !== 'transparent',\n          'disabled:opacity-70': color === 'transparent',\n          'not-disabled:hover:bg-button-text-hover-background': color === 'transparent',\n        },\n        ButtonUtil.iconPaddingMapping[size],\n        className\n      )}\n      {...restProps}\n    >\n      {children}\n    </button>\n  )\n}\n\nexport { SolidButton, OutlineButton, TextButton, IconButton }\n","import type { Translation } from '../useTranslation'\n\nexport type FormTranslationType = {\n  add: string,\n  all: string,\n  apply: string,\n  back: string,\n  cancel: string,\n  change: string,\n  clear: string,\n  click: string,\n  clickToCopy: string,\n  close: string,\n  confirm: string,\n  copy: string,\n  copied: string,\n  create: string,\n  decline: string,\n  delete: string,\n  discard: string,\n  discardChanges: string,\n  done: string,\n  edit: string,\n  enterText: string,\n  error: string,\n  exit: string,\n  fieldRequiredError: string,\n  invalidEmailError: string,\n  less: string,\n  loading: string,\n  maxLengthError: string,\n  minLengthError: string,\n  more: string,\n  next: string,\n  no: string,\n  none: string,\n  of: string,\n  optional: string,\n  pleaseWait: string,\n  previous: string,\n  remove: string,\n  required: string,\n  reset: string,\n  save: string,\n  saved: string,\n  search: string,\n  select: string,\n  selectOption: string,\n  show: string,\n  showMore: string,\n  showLess: string,\n  submit: string,\n  success: string,\n  unsavedChanges: string,\n  unsavedChangesSaveQuestion: string,\n  update: string,\n  yes: string,\n}\n\nexport const formTranslation: Translation<FormTranslationType> = {\n  en: {\n    add: 'Add',\n    all: 'All',\n    apply: 'Apply',\n    back: 'Back',\n    cancel: 'Cancel',\n    change: 'Change',\n    clear: 'Clear',\n    click: 'Click',\n    clickToCopy: 'Click to Copy',\n    close: 'Close',\n    confirm: 'Confirm',\n    copy: 'Copy',\n    copied: 'Copied',\n    create: 'Create',\n    decline: 'Decline',\n    delete: 'Delete',\n    discard: 'Discard',\n    discardChanges: 'Discard Changes',\n    done: 'Done',\n    edit: 'Edit',\n    enterText: 'Enter text here',\n    error: 'Error',\n    exit: 'Exit',\n    fieldRequiredError: 'This field is required.',\n    invalidEmailError: 'Please enter a valid email address.',\n    less: 'Less',\n    loading: 'Loading',\n    maxLengthError: 'Maximum length exceeded.',\n    minLengthError: 'Minimum length not met.',\n    more: 'More',\n    next: 'Next',\n    no: 'No',\n    none: 'None',\n    of: 'of',\n    optional: 'Optional',\n    pleaseWait: 'Please wait...',\n    previous: 'Previous',\n    remove: 'Remove',\n    required: 'Required',\n    reset: 'Reset',\n    save: 'Save',\n    saved: 'Saved',\n    search: 'Search',\n    select: 'Select',\n    selectOption: 'Select an option',\n    show: 'Show',\n    showMore: 'Show more',\n    showLess: 'Show less',\n    submit: 'Submit',\n    success: 'Success',\n    update: 'Update',\n    unsavedChanges: 'Unsaved Changes',\n    unsavedChangesSaveQuestion: 'Do you want to save your changes?',\n    yes: 'Yes',\n  },\n  de: {\n    add: 'Hinzufügen',\n    all: 'Alle',\n    apply: 'Anwenden',\n    back: 'Zurück',\n    cancel: 'Abbrechen',\n    change: 'Ändern',\n    clear: 'Löschen',\n    click: 'Klicken',\n    clickToCopy: 'Zum kopieren klicken',\n    close: 'Schließen',\n    confirm: 'Bestätigen',\n    copy: 'Kopieren',\n    copied: 'Kopiert',\n    create: 'Erstellen',\n    decline: 'Ablehnen',\n    delete: 'Löschen',\n    discard: 'Verwerfen',\n    discardChanges: 'Änderungen Verwerfen',\n    done: 'Fertig',\n    edit: 'Bearbeiten',\n    enterText: 'Text hier eingeben',\n    error: 'Fehler',\n    exit: 'Beenden',\n    fieldRequiredError: 'Dieses Feld ist erforderlich.',\n    invalidEmailError: 'Bitte geben Sie eine gültige E-Mail-Adresse ein.',\n    less: 'Weniger',\n    loading: 'Lädt',\n    maxLengthError: 'Maximale Länge überschritten.',\n    minLengthError: 'Mindestlänge nicht erreicht.',\n    more: 'Mehr',\n    next: 'Weiter',\n    no: 'Nein',\n    none: 'Nichts',\n    of: 'von',\n    optional: 'Optional',\n    pleaseWait: 'Bitte warten...',\n    previous: 'Vorherige',\n    remove: 'Entfernen',\n    required: 'Erforderlich',\n    reset: 'Zurücksetzen',\n    save: 'Speichern',\n    saved: 'Gespeichert',\n    search: 'Suche',\n    select: 'Select',\n    selectOption: 'Option auswählen',\n    show: 'Anzeigen',\n    showMore: 'Mehr anzeigen',\n    showLess: 'Weniger anzeigen',\n    submit: 'Abschicken',\n    success: 'Erfolg',\n    update: 'Update',\n    unsavedChanges: 'Ungespeicherte Änderungen',\n    unsavedChangesSaveQuestion: 'Möchtest du die Änderungen speichern?',\n    yes: 'Ja',\n  }\n}\n","import type { ReactNode } from 'react'\nimport { useCallback } from 'react'\nimport { useEffect, useState } from 'react'\nimport clsx from 'clsx'\nimport type { LabelProps } from './Label'\nimport { Label } from './Label'\nimport { ListTile } from '../layout-and-navigation/Tile'\nimport { ExpansionIcon } from '../layout-and-navigation/Expandable'\nimport type { MenuBag, MenuProps } from './Menu'\nimport { Menu } from './Menu'\nimport { SearchBar } from './SearchBar'\nimport type { UseSearchProps } from '../../hooks/useSearch'\nimport { useSearch } from '../../hooks/useSearch'\n\nexport type SelectOption<T> = {\n  label: ReactNode,\n  value: T,\n  searchTags?: string[],\n  disabled?: boolean,\n  className?: string,\n}\n\nexport type SelectBag<T> = MenuBag & {\n  selected?: T,\n  search: string,\n}\n\nexport type SelectProps<T> = Omit<MenuProps<HTMLButtonElement>, 'trigger' | 'children'> & {\n  value?: T,\n  label?: LabelProps,\n  options: SelectOption<T>[],\n  onChange: (value: T) => void,\n  hintText?: string,\n  selectedDisplayOverwrite?: ReactNode,\n  searchOptions?: Omit<UseSearchProps<SelectOption<T>>, 'list' | 'searchMapping'>,\n  additionalItems?: (bag: SelectBag<T>) => ReactNode,\n  className?: string,\n  triggerClassName?: string,\n  hintTextClassName?: string,\n};\n\n/**\n * A Select Component for selecting form a list of options\n *\n * The State is managed by the parent\n */\nexport const Select = <T, >({\n                              value,\n                              label,\n                              options,\n                              onChange,\n                              hintText = '',\n                              selectedDisplayOverwrite,\n                              searchOptions,\n                              additionalItems,\n                              className,\n                              triggerClassName,\n                              hintTextClassName,\n                              ...menuProps\n                            }: SelectProps<T>) => {\n  const selectedOption = options.find(option => option.value === value)\n  if (value !== undefined && selectedOption === undefined && selectedDisplayOverwrite === undefined) {\n    console.warn('The selected value is not found in the options list. This might be an error on your part or' +\n      ' default behavior if it is complex data type on which === does not work. In case of the latter' +\n      ' use selectedDisplayOverwrite to set your selected text or component')\n  }\n\n  const isShowingHint = !selectedDisplayOverwrite && !selectedOption?.label\n\n  const { result, search, setSearch } = useSearch<SelectOption<T>>({\n    list: options,\n    searchMapping: useCallback((item: SelectOption<T>) => item.searchTags, []),\n    ...searchOptions\n  })\n\n  return (\n    <div className={clsx(className)}>\n      {label && (\n        <Label {...label} labelType={label.labelType ?? 'labelSmall'} className={clsx('mb-1', label.className)}/>\n      )}\n      <Menu<HTMLButtonElement>\n        {...menuProps}\n        trigger={({ toggleOpen, isOpen, disabled }, ref) => (\n          <button\n            ref={ref}\n            className={clsx(\n              'btn-md justify-between w-full border-2',\n              'not-disabled:bg-input-background not-disabled:text-input-text not-disabled:hover:border-primary',\n              'disabled:bg-disabled-background disabled:text-disabled-text disabled:border-disabled-border',\n              triggerClassName\n            )}\n            onClick={toggleOpen}\n            disabled={disabled}\n          >\n            {!isShowingHint &&\n              <span className=\"font-semibold\">{selectedDisplayOverwrite ?? selectedOption?.label}</span>}\n            {isShowingHint && (\n              <span className={clsx('textstyle-description', hintTextClassName)}>\n                {hintText}\n              </span>\n            )}\n            <ExpansionIcon isExpanded={isOpen}/>\n          </button>\n        )}\n        menuClassName={clsx('flex-col-2 p-2 max-h-96 overflow-hidden', menuProps.menuClassName)}\n      >\n        {(bag) => {\n          const { close } = bag\n          return (\n            <>\n              {!searchOptions?.disabled && (\n                <SearchBar\n                  value={search}\n                  onChangeText={setSearch}\n                  autoFocus={true}\n                />\n              )}\n              <div className=\"flex-col-2 overflow-y-auto\">\n                {result.map((option, index) => (\n                  <ListTile\n                    key={index}\n                    isSelected={option === selectedOption}\n                    title={option.label}\n                    onClick={() => {\n                      onChange(option.value)\n                      close()\n                    }}\n                    disabled={option.disabled}\n                  />\n                ))}\n                {additionalItems && additionalItems({ ...bag, search, selected: value })}\n              </div>\n            </>\n          )\n        }}\n      </Menu>\n    </div>\n  )\n}\n\nexport const SelectUncontrolled = <T, >({\n                                          options, onChange, value, hintText, ...props\n                                        }: SelectProps<T>) => {\n  const [selected, setSelected] = useState(value)\n\n  useEffect(() => {\n    if (options.find(options => options.value === value)) {\n      setSelected(value)\n    }\n  }, [options, value])\n\n  return (\n    <Select\n      value={selected}\n      options={options}\n      onChange={value => {\n        setSelected(value)\n        onChange(value)\n      }}\n      hintText={hintText}\n      {...props}\n    />\n  )\n}","import type { LabelHTMLAttributes } from 'react'\nimport clsx from 'clsx'\n\nexport type LabelType = 'labelSmall' | 'labelMedium' | 'labelBig'\n\nconst styleMapping: Record<LabelType, string> = {\n  labelSmall: 'textstyle-label-sm',\n  labelMedium: 'textstyle-label-md',\n  labelBig: 'textstyle-label-lg',\n}\n\nexport type LabelProps = {\n  /** The text for the label */\n  name?: string,\n  /** The styling for the label */\n  labelType?: LabelType,\n} & LabelHTMLAttributes<HTMLLabelElement>\n\n/**\n * A Label component\n */\nexport const Label = ({\n                        children,\n                        name,\n                        labelType = 'labelSmall',\n                        className,\n                        ...props\n                      }: LabelProps) => {\n  return (\n    <label {...props} className={clsx(styleMapping[labelType], className)}>\n      {children ? children : name}\n    </label>\n  )\n}\n","import type { ReactNode } from 'react'\nimport clsx from 'clsx'\nimport { Check } from 'lucide-react'\n\nexport type TileProps = {\n  title: ReactNode,\n  titleClassName?: string,\n  description?: ReactNode,\n  descriptionClassName?: string,\n  onClick?: () => void,\n  disabled?: boolean,\n  isSelected?: boolean,\n  isListItem?: boolean,\n  prefix?: ReactNode,\n  suffix?: ReactNode,\n  className?: string,\n  normalClassName?: string,\n  selectedClassName?: string,\n  disabledClassName?: string,\n}\n\n/**\n * A component for creating a tile similar to the flutter ListTile\n */\nexport const Tile = ({\n                       title,\n                       titleClassName,\n                       description,\n                       descriptionClassName,\n                       onClick,\n                       isSelected = false,\n                       disabled = false,\n                       prefix,\n                       suffix,\n                       normalClassName = 'hover:bg-primary/40 cursor-pointer',\n                       selectedClassName = 'bg-primary/20',\n                       disabledClassName = 'text-disabled-text bg-disabled-background cursor-not-allowed',\n                       className\n                     }: TileProps) => {\n  return (\n    <div\n      className={clsx(\n        'flex-row-2 w-full items-center',\n        {\n          [normalClassName]: onClick && !disabled,\n          [selectedClassName]: isSelected && !disabled,\n          [disabledClassName]: disabled,\n        },\n        className\n      )}\n      onClick={disabled ? undefined : onClick}\n    >\n      {prefix}\n      <div className=\"flex-col-0 w-full\">\n        <span className={clsx(titleClassName ?? ('textstyle-title-normal'))}>{title}</span>\n        {!!description &&\n          <span className={clsx(descriptionClassName ?? 'textstyle-description')}>{description}</span>}\n      </div>\n      {suffix ?? (isSelected ? (<Check size={24}/>) : undefined)}\n    </div>\n  )\n}\n\nexport type ListTileProps = TileProps\n\nexport const ListTile = ({\n  ...props\n}: ListTileProps) => {\n  return (\n    <Tile\n      {...props}\n      titleClassName={props.titleClassName ?? 'font-semibold'}\n      className={clsx('px-2 py-1 rounded-md', props.className)}\n      disabledClassName={props.disabledClassName ?? 'text-disabled-text cursor-not-allowed'}\n    />\n  )\n}\n","import type { PropsWithChildren, ReactNode } from 'react'\nimport { forwardRef, useCallback, useEffect, useState } from 'react'\nimport { ChevronDown } from 'lucide-react'\nimport clsx from 'clsx'\nimport { noop } from '../../util/noop'\n\ntype IconBuilder = (expanded: boolean) => ReactNode\n\nexport type ExpandableProps = PropsWithChildren<{\n  label: ReactNode,\n  icon?: IconBuilder,\n  isExpanded?: boolean,\n  onChange?: (isExpanded: boolean) => void,\n  /**\n   * Whether the expansion should only happen when the header is clicked or on the entire component\n   */\n  clickOnlyOnHeader?: boolean,\n  disabled?: boolean,\n  className?: string,\n  headerClassName?: string,\n  contentClassName?: string,\n  contentExpandedClassName?: string,\n}>\n\n\nexport type ExpansionIconProps = {\n  isExpanded: boolean,\n  className?: string,\n}\n\nexport const ExpansionIcon = ({ isExpanded, className }: ExpansionIconProps) => {\n  return (\n    <ChevronDown\n      className={clsx(\n        'min-w-6 w-6 min-h-6 h-6 transition-transform duration-200 ease-in-out',\n        { 'rotate-180': isExpanded },\n        className\n      )}\n    />\n  )\n}\n\n\n/**\n * A Component for showing and hiding content\n */\nexport const Expandable = forwardRef<HTMLDivElement, ExpandableProps>(function Expandable({\n                                                                                            children,\n                                                                                            label,\n                                                                                            icon,\n                                                                                            isExpanded = false,\n                                                                                            onChange = noop,\n                                                                                            clickOnlyOnHeader = true,\n                                                                                            disabled = false,\n                                                                                            className,\n                                                                                            headerClassName,\n                                                                                            contentClassName,\n                                                                                            contentExpandedClassName,\n                                                                                          }, ref) {\n  const defaultIcon = useCallback((expanded: boolean) => <ExpansionIcon isExpanded={expanded}/>, [])\n  icon ??= defaultIcon\n\n  return (\n    <div\n      ref={ref}\n      className={clsx('flex-col-0 bg-surface text-on-surface group rounded-lg shadow-sm', { 'cursor-pointer': !clickOnlyOnHeader && !disabled }, className)}\n      onClick={() => !clickOnlyOnHeader && !disabled && onChange(!isExpanded)}\n    >\n      <div\n        className={clsx(\n          'flex-row-2 py-2 px-4 rounded-lg justify-between items-center bg-surface text-on-surface select-none',\n          {\n            'group-hover:brightness-97': !isExpanded,\n            'hover:brightness-97': isExpanded && !disabled,\n            'cursor-pointer': clickOnlyOnHeader && !disabled,\n          },\n          headerClassName\n        )}\n        onClick={() => clickOnlyOnHeader && !disabled && onChange(!isExpanded)}\n      >\n        {label}\n        {icon(isExpanded)}\n      </div>\n      <div\n        className={clsx(\n          'flex-col-2 px-4 transition-all duration-300 ease-in-out',\n          {\n            [clsx('max-h-96 opacity-100 pb-2 overflow-y-auto', contentExpandedClassName)]: isExpanded,\n            'max-h-0 opacity-0 overflow-hidden': !isExpanded,\n          },\n          contentClassName\n        )}\n      >\n        {children}\n      </div>\n    </div>\n  )\n})\n\nexport const ExpandableUncontrolled = forwardRef<HTMLDivElement, ExpandableProps>(function ExpandableUncontrolled({\n                                                                                                                    isExpanded,\n                                                                                                                    onChange = noop,\n                                                                                                                    ...props\n                                                                                                                  },\n                                                                                                                  ref) {\n  const [usedIsExpanded, setUsedIsExpanded] = useState(isExpanded)\n\n  useEffect(() => {\n    setUsedIsExpanded(isExpanded)\n  }, [isExpanded])\n\n  return (\n    <Expandable\n      {...props}\n      ref={ref}\n      isExpanded={usedIsExpanded}\n      onChange={value => {\n        onChange(value)\n        setUsedIsExpanded(value)\n      }}\n    />\n  )\n})\n","export const noop = () => undefined\n","import { type PropsWithChildren, type ReactNode, type RefObject, useEffect, useRef, useState } from 'react'\nimport clsx from 'clsx'\nimport { useOutsideClick } from '../../hooks/useOutsideClick'\nimport { useHoverState } from '../../hooks/useHoverState'\nimport type { PropsWithBagFunctionOrChildren } from '../../util/PropsWithFunctionChildren'\nimport { BagFunctionUtil } from '../../util/PropsWithFunctionChildren'\nimport type { PopoverHorizontalAlignment, PopoverVerticalAlignment } from '../../hooks/usePopoverPosition'\nimport { usePopoverPosition } from '../../hooks/usePopoverPosition'\nimport { createPortal } from 'react-dom'\n\nexport type MenuItemProps = {\n  onClick?: () => void,\n  alignment?: 'left' | 'right',\n  isDisabled?: boolean,\n  className?: string,\n}\nexport const MenuItem = ({\n                           children,\n                           onClick,\n                           alignment = 'left',\n                           isDisabled = false,\n                           className\n                         }: PropsWithChildren<MenuItemProps>) => (\n  <div\n    className={clsx('block px-3 py-1.5 first:rounded-t-md last:rounded-b-md text-sm font-semibold text-nowrap', {\n      'text-right': alignment === 'right',\n      'text-left': alignment === 'left',\n      'text-disabled-text cursor-not-allowed': isDisabled,\n      'text-menu-text hover:bg-primary/20': !isDisabled,\n      'cursor-pointer': !!onClick,\n    }, className)}\n    onClick={onClick}\n  >\n    {children}\n  </div>\n)\n\nfunction getScrollableParents(element) {\n  const scrollables = []\n  let parent = element.parentElement\n  while (parent) {\n    scrollables.push(parent)\n    parent = parent.parentElement\n  }\n  return scrollables\n}\n\nexport type MenuBag = {\n  isOpen: boolean,\n  disabled: boolean,\n  toggleOpen: () => void,\n  close: () => void,\n}\n\nexport type MenuProps<T> = PropsWithBagFunctionOrChildren<MenuBag> & {\n  trigger: (bag: MenuBag, ref: RefObject<T>) => ReactNode,\n  /**\n   * @default 'l'\n   */\n  alignmentHorizontal?: PopoverHorizontalAlignment,\n  alignmentVertical?: PopoverVerticalAlignment,\n  showOnHover?: boolean,\n  menuClassName?: string,\n  disabled?: boolean,\n}\n\n/**\n * A Menu Component to allow the user to see different functions\n */\nexport const Menu = <T extends HTMLElement>({\n                                              trigger,\n                                              children,\n                                              alignmentHorizontal = 'leftInside',\n                                              alignmentVertical = 'bottomOutside',\n                                              showOnHover = false,\n                                              disabled = false,\n                                              menuClassName = '',\n                                            }: MenuProps<T>) => {\n  const { isHovered: isOpen, setIsHovered: setIsOpen } = useHoverState({ isDisabled: !showOnHover || disabled })\n  const triggerRef = useRef<T>(null)\n  const menuRef = useRef<HTMLDivElement>(null)\n  useOutsideClick([triggerRef, menuRef], () => setIsOpen(false))\n\n  const [isHidden, setIsHidden] = useState<boolean>(true)\n  const bag: MenuBag = {\n    isOpen,\n    close: () => setIsOpen(false),\n    toggleOpen: () => setIsOpen(prevState => !prevState),\n    disabled,\n  }\n\n  const menuPosition = usePopoverPosition(\n    triggerRef.current?.getBoundingClientRect(),\n    { verticalAlignment: alignmentVertical, horizontalAlignment: alignmentHorizontal, disabled }\n  )\n\n  useEffect(() => {\n    if (!isOpen) return\n\n    const triggerEl = triggerRef.current\n    if (!triggerEl) return\n\n    const scrollableParents = getScrollableParents(triggerEl)\n\n    const close = () => setIsOpen(false)\n    scrollableParents.forEach((parent) => {\n      parent.addEventListener('scroll', close)\n    })\n    window.addEventListener('resize', close)\n\n    return () => {\n      scrollableParents.forEach((parent) => {\n        parent.removeEventListener('scroll', close)\n      })\n      window.removeEventListener('resize', close)\n    }\n  }, [isOpen, setIsOpen])\n\n  useEffect(() => {\n    if (isOpen) {\n      setIsHidden(false)\n    }\n  }, [isOpen])\n\n  return (\n    <>\n      {trigger(bag, triggerRef)}\n      {createPortal((\n        <div\n          ref={menuRef}\n          onClick={e => e.stopPropagation()}\n          className={clsx(\n            'absolute rounded-md bg-menu-background text-menu-text shadow-around-lg shadow-strong z-[300]',\n            {\n              'animate-pop-in': isOpen,\n              'animate-pop-out': !isOpen,\n              'hidden': isHidden,\n            },\n            menuClassName\n          )}\n          onAnimationEnd={() => {\n            if (!isOpen) {\n              setIsHidden(true)\n            }\n          }}\n          style={{\n            ...menuPosition\n          }}\n        >\n          {BagFunctionUtil.resolve<MenuBag>(children, bag)}\n        </div>\n      ), document.body)}\n    </>\n  )\n}\n\n","import type { RefObject } from 'react'\nimport { useEffect } from 'react'\n\nexport const useOutsideClick = <Ts extends RefObject<HTMLElement>[]>(refs: Ts, handler: () => void) => {\n  useEffect(() => {\n    const listener = (event: MouseEvent | TouchEvent) => {\n      // returning means not \"not clicking outside\"\n\n      // if no target exists, return\n      if (event.target === null) return\n      // if the target is a ref's element or descendent thereof, return\n      if (refs.some((ref) => !ref.current || ref.current.contains(event.target as Node))) {\n        return\n      }\n\n      handler()\n    }\n    document.addEventListener('mousedown', listener)\n    document.addEventListener('touchstart', listener)\n    return () => {\n      document.removeEventListener('mousedown', listener)\n      document.removeEventListener('touchstart', listener)\n    }\n  }, [refs, handler])\n}\n","import type { Dispatch, SetStateAction } from 'react'\nimport { useEffect, useState } from 'react'\n\ntype UseHoverStateProps = {\n  /**\n   * The delay after which the menu is closed in milliseconds\n   *\n   * default: 200ms\n   */\n  closingDelay: number,\n  /**\n   * Whether the hover state management should be disabled\n   *\n   * default: false\n   */\n  isDisabled: boolean,\n}\n\ntype UseHoverStateReturnType = {\n  /**\n   * Whether the element is hovered\n   */\n  isHovered: boolean,\n  /**\n   * Function to change the current hover status\n   */\n  setIsHovered: Dispatch<SetStateAction<boolean>>,\n  /**\n   * Handlers to pass on to the component that should be hovered\n   */\n  handlers: {\n    onMouseEnter: () => void,\n    onMouseLeave: () => void,\n  },\n}\n\nconst defaultUseHoverStateProps: UseHoverStateProps = {\n  closingDelay: 200,\n  isDisabled: false,\n}\n\n/**\n * @param props See UseHoverStateProps\n *\n * A react hook for managing the hover state of a component. The handlers provided should be\n * forwarded to the component which should be hovered over\n */\nexport const useHoverState = (props: Partial<UseHoverStateProps> | undefined = undefined): UseHoverStateReturnType => {\n  const { closingDelay, isDisabled } = { ...defaultUseHoverStateProps, ...props }\n\n  const [isHovered, setIsHovered] = useState(false)\n  const [timer, setTimer] = useState<NodeJS.Timeout>()\n\n  const onMouseEnter = () => {\n    if (isDisabled) {\n      return\n    }\n    clearTimeout(timer)\n    setIsHovered(true)\n  }\n\n  const onMouseLeave = () => {\n    if (isDisabled) {\n      return\n    }\n    setTimer(setTimeout(() => {\n      setIsHovered(false)\n    }, closingDelay))\n  }\n\n  useEffect(() => {\n    if (timer) {\n      return () => {\n        clearTimeout(timer)\n      }\n    }\n  })\n\n  useEffect(() => {\n    if (timer) {\n      clearTimeout(timer)\n    }\n  }, [isDisabled]) // eslint-disable-line react-hooks/exhaustive-deps\n\n  return {\n    isHovered, setIsHovered, handlers: { onMouseEnter, onMouseLeave }\n  }\n}\n","import type { ReactNode } from 'react'\n\nexport type BagFunction<T> = (bag: T) => ReactNode\n\nexport type PropsWithBagFunction<T, P = unknown> =  P & { children?: BagFunction<T> }\n\nexport type PropsWithBagFunctionOrChildren<T, P = unknown> =  P & { children?: BagFunction<T> | ReactNode }\n\nconst resolve = <T>(children: BagFunction<T> | ReactNode, bag: T): ReactNode => {\n  if (typeof children === 'function') {\n    return (children as BagFunction<T>)(bag)\n  }\n\n  return children ?? undefined\n}\n\nexport const BagFunctionUtil = {\n  resolve\n}","import type { CSSProperties } from 'react'\n\nexport type PopoverHorizontalAlignment = 'leftOutside' | 'leftInside' | 'rightOutside' | 'rightInside' | 'center'\nexport type PopoverVerticalAlignment = 'topOutside' | 'topInside' | 'bottomOutside' | 'bottomInside' | 'center'\n\ntype PopoverPositionOptionsResolved = {\n  edgePadding: number,\n  outerGap: number,\n  verticalAlignment: PopoverVerticalAlignment,\n  horizontalAlignment: PopoverHorizontalAlignment,\n  disabled: boolean,\n}\n\ntype PopoverPositionOptions = Partial<PopoverPositionOptionsResolved>\n\nconst defaultPopoverPositionOptions: PopoverPositionOptionsResolved = {\n  edgePadding: 16,\n  outerGap: 4,\n  horizontalAlignment: 'leftInside',\n  verticalAlignment: 'bottomOutside',\n  disabled: false,\n}\n\nexport const usePopoverPosition = (trigger?: DOMRect, options?: PopoverPositionOptions): CSSProperties => {\n  const {\n    edgePadding,\n    outerGap,\n    verticalAlignment,\n    horizontalAlignment,\n    disabled\n  }: PopoverPositionOptionsResolved = { ...defaultPopoverPositionOptions, ...options }\n\n  if (disabled || !trigger) {\n    return {}\n  }\n\n  const left: number = {\n    leftOutside: trigger.left - outerGap,\n    leftInside: trigger.left,\n    rightOutside: trigger.right + outerGap,\n    rightInside: trigger.right,\n    center: trigger.left + trigger.width / 2,\n  }[horizontalAlignment]\n\n  const top: number = {\n    topOutside: trigger.top - outerGap,\n    topInside: trigger.top,\n    bottomOutside: trigger.bottom + outerGap,\n    bottomInside: trigger.bottom,\n    center: trigger.top + trigger.height / 2,\n  }[verticalAlignment]\n\n  const translateX: string | undefined = {\n    leftOutside: '-100%',\n    leftInside: undefined,\n    rightOutside: undefined,\n    rightInside: '-100%',\n    center: '-50%',\n  }[horizontalAlignment]\n\n  const translateY: string | undefined = {\n    topOutside: '-100%',\n    topInside: undefined,\n    bottomOutside: undefined,\n    bottomInside: '-100%',\n    center: '-50%',\n  }[verticalAlignment]\n\n  return {\n    left: Math.max(left, edgePadding),\n    top: Math.max(top, edgePadding),\n    translate: [translateX ?? '0', translateY ?? '0'].join(' ')\n  }\n}","import React, { forwardRef, type InputHTMLAttributes, useEffect, useImperativeHandle, useRef, useState } from 'react'\nimport clsx from 'clsx'\nimport type { UseDelayOptionsResolved } from '../../hooks/useDelay'\nimport { useDelay } from '../../hooks/useDelay'\nimport { noop } from '../../util/noop'\nimport type { LabelProps } from './Label'\nimport { Label } from './Label'\nimport { useFocusManagement } from '../../hooks/useFocusManagement'\nimport { useFocusOnceVisible } from '../../hooks/useFocusOnceVisible'\n\ntype GetInputClassNameProps = {\n  disabled?: boolean,\n  hasError?: boolean,\n}\nconst getInputClassName = ({ disabled = false, hasError = false }: GetInputClassNameProps) => {\n  return clsx(\n    'px-2 py-1.5 rounded-md border-2',\n    {\n      'bg-input-background text-input-text hover:border-primary focus:border-primary': !disabled && !hasError,\n      'bg-on-negative text-negative border-negative-border hover:border-negative-border-hover': !disabled && hasError,\n      'bg-disabled-background text-disabled-text border-disabled-border': disabled,\n    }\n  )\n}\n\nexport type EditCompleteOptionsResolved = {\n  onBlur: boolean,\n  afterDelay: boolean,\n} & Omit<UseDelayOptionsResolved, 'disabled'>\n\nexport type EditCompleteOptions = Partial<EditCompleteOptionsResolved>\n\nconst defaultEditCompleteOptions: EditCompleteOptionsResolved = {\n  onBlur: true,\n  afterDelay: true,\n  delay: 2500\n}\n\nexport type InputProps = {\n  /**\n   * used for the label's `for` attribute\n   */\n  label?: Omit<LabelProps, 'id'>,\n  /**\n   * Callback for when the input's value changes\n   * This is pretty much required but made optional for the rare cases where it actually isn't need such as when used with disabled\n   * That could be enforced through a union type but that seems a bit overkill\n   * @default noop\n   */\n  onChangeText?: (text: string) => void,\n  className?: string,\n  onEditCompleted?: (text: string) => void,\n  allowEnterComplete?: boolean,\n  expanded?: boolean,\n  containerClassName?: string,\n  editCompleteOptions?: EditCompleteOptions,\n} & Omit<InputHTMLAttributes<HTMLInputElement>, 'label'>\n\n/**\n * A Component for inputting text or other information\n *\n * Its state is managed must be managed by the parent\n */\nconst Input = forwardRef<HTMLInputElement, InputProps>(function Input({\n                                                          id,\n                                                          type = 'text',\n                                                          value,\n                                                          label,\n                                                          onChange = noop,\n                                                          onChangeText = noop,\n                                                          onEditCompleted,\n                                                          className = '',\n                                                          allowEnterComplete = true,\n                                                          expanded = true,\n                                                          autoFocus = false,\n                                                          onBlur,\n                                                          editCompleteOptions,\n                                                          containerClassName,\n                                                          disabled,\n                                                          ...restProps\n                                                        }, forwardedRef) {\n  const { onBlur: allowEditCompleteOnBlur, afterDelay, delay } = { ...defaultEditCompleteOptions, ...editCompleteOptions }\n\n  const {\n    restartTimer,\n    clearTimer\n  } = useDelay({ delay, disabled: !afterDelay })\n\n  const innerRef = useRef<HTMLInputElement>(null)\n  const { focusNext } = useFocusManagement()\n\n  useFocusOnceVisible(innerRef, !autoFocus)\n  useImperativeHandle(forwardedRef, () => innerRef.current)\n\n  const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n    if (e.key === 'Enter' && !e.shiftKey) {\n      e.preventDefault()\n      innerRef.current?.blur()\n      focusNext()\n    }\n  }\n\n  return (\n    <div className={clsx({ 'w-full': expanded }, containerClassName)}>\n      {label && <Label {...label} htmlFor={id} className={clsx('mb-1', label.className)} />}\n      <input\n        {...restProps}\n        ref={innerRef}\n        value={value}\n        id={id}\n        type={type}\n        disabled={disabled}\n        className={clsx(getInputClassName({ disabled }), className)}\n        onKeyDown={allowEnterComplete ? handleKeyDown : undefined}\n        onBlur={event => {\n          onBlur?.(event)\n          if (onEditCompleted && allowEditCompleteOnBlur) {\n            onEditCompleted(event.target.value)\n            clearTimer()\n          }\n        }}\n        onChange={e => {\n          const value = e.target.value\n          if (onEditCompleted) {\n            restartTimer(() => {\n              if(innerRef.current){\n                innerRef.current.blur()\n                if(!allowEditCompleteOnBlur) {\n                  onEditCompleted(value)\n                }\n              } else {\n                onEditCompleted(value)\n              }\n            })\n          }\n          onChange(e)\n          onChangeText(value)\n        }}\n      />\n    </div>\n  )\n})\n\n\n/**\n * A Component for inputting text or other information\n *\n * Its state is managed by the component itself\n */\nconst InputUncontrolled = ({\n                             value = '',\n                             onChangeText = noop,\n                             ...props\n                           }: InputProps) => {\n  const [usedValue, setUsedValue] = useState(value)\n\n  useEffect(() => {\n    setUsedValue(value)\n  }, [value])\n\n  return (\n    <Input\n      {...props}\n      value={usedValue}\n      onChangeText={text => {\n        setUsedValue(text)\n        onChangeText(text)\n      }}\n    />\n  )\n}\n\nexport type FormInputProps = InputHTMLAttributes<HTMLInputElement> & {\n  id: string,\n  labelText?: string,\n  errorText?: string,\n  labelClassName?: string,\n  errorClassName?: string,\n  containerClassName?: string,\n}\n\nconst FormInput = forwardRef<HTMLInputElement, FormInputProps>(function FormInput({\n                                                                                    id,\n                                                                                    labelText,\n                                                                                    errorText,\n                                                                                    className,\n                                                                                    labelClassName,\n                                                                                    errorClassName,\n                                                                                    containerClassName,\n                                                                                    required,\n                                                                                    disabled,\n                                                                                    ...restProps\n                                                                                  }, ref) {\n  const input = (\n    <input\n      {...restProps}\n      ref={ref}\n      id={id}\n      disabled={disabled}\n      className={clsx(\n        getInputClassName({ disabled, hasError: !!errorText }),\n        className\n      )}\n    />\n  )\n\n  return (\n    <div className={clsx('flex flex-col gap-y-1', containerClassName)}>\n      {labelText && (\n        <label htmlFor={id} className={clsx('textstyle-label-md', labelClassName)}>\n          {labelText}\n          {required && <span className=\"text-primary font-bold\">*</span>}\n        </label>\n      )}\n      {input}\n      {errorText && <label htmlFor={id} className={clsx('text-negative', errorClassName)}>{errorText}</label>}\n    </div>\n  )\n})\n\nexport {\n  InputUncontrolled,\n  Input,\n  FormInput\n}\n","import { useEffect, useState } from 'react'\n\nexport type UseDelayOptionsResolved = {\n  delay: number,\n  disabled: boolean,\n}\n\nexport type UseDelayOptions = Partial<UseDelayOptionsResolved>\n\nconst defaultOptions: UseDelayOptionsResolved = {\n  delay: 3000,\n  disabled: false,\n}\n\nexport function useDelay(options?: UseDelayOptions) {\n  const [timer, setTimer] = useState<NodeJS.Timeout | undefined>(undefined)\n  const { delay, disabled }: UseDelayOptionsResolved = {\n    ...defaultOptions,\n    ...options\n  }\n\n  const clearTimer = () => {\n    clearTimeout(timer)\n    setTimer(undefined)\n  }\n\n  const restartTimer = (onDelayFinish: () => void) => {\n    if(disabled) {\n      return\n    }\n    clearTimeout(timer)\n    setTimer(setTimeout(() => {\n      onDelayFinish()\n      setTimer(undefined)\n    }, delay))\n  }\n\n  useEffect(() => {\n    return () => {\n      clearTimeout(timer)\n    }\n  }, [timer])\n\n  useEffect(() => {\n    if(disabled){\n      clearTimeout(timer)\n      setTimer(undefined)\n    }\n  }, [disabled, timer])\n\n  return { restartTimer, clearTimer, hasActiveTimer: !!timer }\n}","import { useCallback } from 'react'\n\nexport function useFocusManagement() {\n  const getFocusableElements = useCallback((): HTMLElement[] => {\n    return Array.from(\n      document.querySelectorAll(\n        'input, button, select, textarea, a[href], [tabindex]:not([tabindex=\"-1\"])'\n      )\n    ).filter(\n      (el): el is HTMLElement =>\n        el instanceof HTMLElement &&\n        !el.hasAttribute('disabled') &&\n        !el.hasAttribute('hidden') &&\n        el.tabIndex !== -1\n    )\n  }, [])\n\n  const getNextFocusElement = useCallback((): HTMLElement | undefined => {\n    const elements = getFocusableElements()\n    if(elements.length === 0) {\n      return undefined\n    }\n    let nextElement = elements[0]\n    if(document.activeElement instanceof HTMLElement) {\n      const currentIndex = elements.indexOf(document.activeElement)\n      nextElement = elements[(currentIndex + 1) % elements.length]\n    }\n    return nextElement\n  }, [getFocusableElements])\n\n  const focusNext = useCallback(() => {\n    const nextElement = getNextFocusElement()\n    nextElement?.focus()\n  }, [getNextFocusElement])\n\n  const getPreviousFocusElement = useCallback((): HTMLElement | undefined => {\n    const elements = getFocusableElements()\n    if(elements.length === 0) {\n      return undefined\n    }\n    let previousElement = elements[0]\n    if(document.activeElement instanceof HTMLElement) {\n      const currentIndex = elements.indexOf(document.activeElement)\n      if(currentIndex === 0) {\n        previousElement = elements[elements.length - 1]\n      } else {\n        previousElement = elements[currentIndex - 1]\n      }\n    }\n    return previousElement\n  }, [getFocusableElements])\n\n  const focusPrevious = useCallback(() => {\n    const previousElement = getPreviousFocusElement()\n    if (previousElement) previousElement.focus()\n  }, [getPreviousFocusElement])\n\n  return {\n    getFocusableElements,\n    getNextFocusElement,\n    getPreviousFocusElement,\n    focusNext,\n    focusPrevious,\n  }\n}","import type { MutableRefObject } from 'react'\nimport React, { useEffect } from 'react'\n\nexport const useFocusOnceVisible = (\n  ref: MutableRefObject<HTMLElement>,\n  disable: boolean = false\n) => {\n  const [hasUsedFocus, setHasUsedFocus] = React.useState(false)\n\n  useEffect(() => {\n    if (disable || hasUsedFocus) {\n      return\n    }\n    const observer = new IntersectionObserver(([entry]) => {\n      if (entry.isIntersecting && !hasUsedFocus) {\n        ref.current?.focus()\n        setHasUsedFocus(hasUsedFocus)\n      }\n    }, {\n      threshold: 0.1,\n    })\n\n    if (ref.current) {\n      observer.observe(ref.current)\n    }\n\n    return () => observer.disconnect()\n  }, [disable, hasUsedFocus, ref])\n}","import type { InputProps } from './Input'\nimport { Input } from './Input'\nimport { useTranslation } from '../../localization/useTranslation'\nimport type { FormTranslationType } from '../../localization/defaults/form'\nimport { formTranslation } from '../../localization/defaults/form'\nimport { IconButton } from './Button'\nimport { Search } from 'lucide-react'\nimport { clsx } from 'clsx'\n\ntype TranslationType = FormTranslationType\n\nexport type SearchBarProps = InputProps & {\n  onSearch?: () => void,\n  disableOnSearch?: boolean,\n  containerClassName?: string,\n}\n\nexport const SearchBar = ({\n                            placeholder,\n                            onSearch,\n                            disableOnSearch,\n                            containerClassName,\n                            ...inputProps\n                          }: SearchBarProps) => {\n  const translation = useTranslation<TranslationType>([formTranslation])\n\n  return (\n    <div className={clsx('flex-row-2 justify-between items-center', containerClassName)}>\n      <Input\n        {...inputProps}\n        placeholder={placeholder ?? translation('search')}\n      />\n      {onSearch && (\n        <IconButton color=\"neutral\" disabled={disableOnSearch} onClick={onSearch}>\n          <Search className=\"w-full h-full\"/>\n        </IconButton>\n      )}\n    </div>\n  )\n}","import { useCallback, useEffect, useMemo, useState } from 'react'\nimport { MultiSubjectSearchWithMapping } from '../util/simpleSearch'\n\nexport type UseSearchProps<T> = {\n  list: T[],\n  searchMapping: (item: T) => string[],\n  initialSearch?: string,\n  additionalSearchTags?: string[],\n  isSearchInstant?: boolean,\n  sortingFunction?: (a: T, b: T) => number,\n  filter?: (item: T) => boolean,\n  disabled?: boolean,\n}\n\nexport const useSearch = <T>({\n                               list,\n                               initialSearch,\n                               searchMapping,\n                               additionalSearchTags,\n                               isSearchInstant = true,\n                               sortingFunction,\n                               filter,\n                               disabled = false,\n                             }: UseSearchProps<T>) => {\n  const [search, setSearch] = useState<string>(initialSearch ?? '')\n  const [result, setResult] = useState<T[]>(list)\n  const searchTags = useMemo(() => additionalSearchTags ?? [], [additionalSearchTags])\n\n  const updateSearch = useCallback((newSearch?: string) => {\n    const usedSearch = newSearch ?? search\n    if (newSearch) {\n      setSearch(search)\n    }\n    setResult(MultiSubjectSearchWithMapping([usedSearch, ...searchTags], list, searchMapping))\n  }, [searchTags, list, search, searchMapping])\n\n  useEffect(() => {\n    if (isSearchInstant) {\n      setResult(MultiSubjectSearchWithMapping([search, ...searchTags], list, searchMapping))\n    }\n  }, [searchTags, isSearchInstant, list, search, searchMapping, additionalSearchTags])\n\n  const filteredResult: T[] = useMemo(() => {\n    if (!filter) {\n      return result\n    }\n    return result.filter(filter)\n  }, [result, filter])\n\n  const sortedAndFilteredResult: T[] = useMemo(() => {\n    if (!sortingFunction) {\n      return filteredResult\n    }\n    return filteredResult.sort(sortingFunction)\n  }, [filteredResult, sortingFunction])\n\n  const usedResult = useMemo(() => {\n    if (!disabled) {\n      return sortedAndFilteredResult\n    }\n    return list\n  }, [disabled, list, sortedAndFilteredResult])\n\n  return {\n    result: usedResult,\n    hasResult: usedResult.length > 0,\n    allItems: list,\n    updateSearch,\n    search,\n    setSearch,\n  }\n}","/**\n *  Finds all values matching the search values by first mapping the values to a string array and then checking each entry for matches.\n *  Returns the list of all matches.\n *\n *  @param search The list of search strings e.g. `[name, type]`\n *\n *  @param objects The list of objects to be searched in\n *\n *  @param mapping The mapping of objects to the string properties they fulfil\n *\n *  @return The list of objects that match all search strings\n */\nexport const MultiSubjectSearchWithMapping = <T>(search: string[], objects: T[], mapping: (value: T) => (string[] | undefined)) => {\n  return objects.filter(object => {\n    const mappedSearchKeywords = mapping(object)?.map(value => value.toLowerCase().trim())\n    if(!mappedSearchKeywords) {\n      return true\n    }\n    return search.every(searchValue => !!mappedSearchKeywords.find(value => !!value && value.includes(searchValue.toLowerCase().trim())))\n  })\n}\n\n/**\n *  Finds all values matching the search value by first mapping the values to a string array and then checking each entry for matches.\n *  Returns the list of all matches.\n *\n *  @param search The search string e.g `name`\n *\n *  @param objects The list of objects to be searched in\n *\n *  @param mapping The mapping of objects to the string properties they fulfil, if undefined it is always fulfilled\n *\n *  @return The list of objects that match the search string\n */\nexport const MultiSearchWithMapping = <T>(search: string, objects: T[], mapping: (value: T) => (string[] | undefined)) => {\n  return objects.filter(object => {\n    const mappedSearchKeywords = mapping(object)?.map(value => value.toLowerCase().trim())\n    if(!mappedSearchKeywords) {\n      return true\n    }\n    return !!mappedSearchKeywords.find(value => value.includes(search.toLowerCase().trim()))\n  })\n}\n\n/**\n *  Finds all values matching the search value by first mapping the values to a string and returns the list of all matches.\n *\n *  @param search The search string e.g `name`\n *\n *  @param objects The list of objects to be searched in\n *\n *  @param mapping The mapping of objects to a string that is compared to the search\n *\n *  @return The list of objects that match the search string\n */\nexport const SimpleSearchWithMapping = <T>(search: string, objects: T[], mapping: (value: T) => string) => {\n  return MultiSearchWithMapping(search, objects, value => [mapping(value)])\n}\n\n/**\n *  Finds all values matching the search value and returns the list of all matches.\n *\n *  @param search The search string e.g `name`\n *\n *  @param objects The list of objects to be searched in\n *\n *  @return The list of objects that match the search string\n */\nexport const SimpleSearch = (search: string, objects: string[]) => {\n  return SimpleSearchWithMapping(search, objects, value => value)\n}\n"],"mappings":"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","names":["clsx","useState","clsx","jsx","SolidButton","jsx","jsx","jsxs","clsx","useCallback","useEffect","useState","clsx","clsx","jsx","clsx","jsx","jsxs","forwardRef","useCallback","useEffect","useState","clsx","jsx","jsxs","clsx","forwardRef","Expandable","useCallback","ExpandableUncontrolled","useState","useEffect","useEffect","useState","clsx","useEffect","useEffect","useState","jsx","jsxs","useState","useEffect","jsxs","jsx","clsx","forwardRef","useEffect","useRef","useState","clsx","useEffect","useState","useCallback","useEffect","jsx","jsxs","clsx","forwardRef","Input","useRef","value","forwardRef","FormInput","jsx","clsx","jsxs","clsx","jsx","jsxs","useCallback","useEffect","useState","useState","useCallback","useEffect","Fragment","jsx","jsxs","useCallback","clsx","jsx","softRequired","clsx","value"]}