@helpwave/hightide 0.1.23 → 0.1.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/dist/components/date/DatePicker.js +48 -53
  2. package/dist/components/date/DatePicker.js.map +1 -1
  3. package/dist/components/date/DatePicker.mjs +58 -63
  4. package/dist/components/date/DatePicker.mjs.map +1 -1
  5. package/dist/components/date/DayPicker.js.map +1 -1
  6. package/dist/components/date/DayPicker.mjs +4 -4
  7. package/dist/components/date/DayPicker.mjs.map +1 -1
  8. package/dist/components/date/TimeDisplay.js.map +1 -1
  9. package/dist/components/date/TimeDisplay.mjs +2 -2
  10. package/dist/components/date/TimeDisplay.mjs.map +1 -1
  11. package/dist/components/date/YearMonthPicker.js +26 -29
  12. package/dist/components/date/YearMonthPicker.js.map +1 -1
  13. package/dist/components/date/YearMonthPicker.mjs +31 -34
  14. package/dist/components/date/YearMonthPicker.mjs.map +1 -1
  15. package/dist/components/dialogs/ConfirmDialog.js +40 -43
  16. package/dist/components/dialogs/ConfirmDialog.js.map +1 -1
  17. package/dist/components/dialogs/ConfirmDialog.mjs +48 -51
  18. package/dist/components/dialogs/ConfirmDialog.mjs.map +1 -1
  19. package/dist/components/layout-and-navigation/Carousel.js +40 -43
  20. package/dist/components/layout-and-navigation/Carousel.js.map +1 -1
  21. package/dist/components/layout-and-navigation/Carousel.mjs +40 -43
  22. package/dist/components/layout-and-navigation/Carousel.mjs.map +1 -1
  23. package/dist/components/layout-and-navigation/Overlay.js +40 -43
  24. package/dist/components/layout-and-navigation/Overlay.js.map +1 -1
  25. package/dist/components/layout-and-navigation/Overlay.mjs +46 -49
  26. package/dist/components/layout-and-navigation/Overlay.mjs.map +1 -1
  27. package/dist/components/layout-and-navigation/Pagination.js +40 -43
  28. package/dist/components/layout-and-navigation/Pagination.js.map +1 -1
  29. package/dist/components/layout-and-navigation/Pagination.mjs +50 -53
  30. package/dist/components/layout-and-navigation/Pagination.mjs.map +1 -1
  31. package/dist/components/layout-and-navigation/SearchableList.js +40 -43
  32. package/dist/components/layout-and-navigation/SearchableList.js.map +1 -1
  33. package/dist/components/layout-and-navigation/SearchableList.mjs +50 -53
  34. package/dist/components/layout-and-navigation/SearchableList.mjs.map +1 -1
  35. package/dist/components/layout-and-navigation/StepperBar.js +26 -29
  36. package/dist/components/layout-and-navigation/StepperBar.js.map +1 -1
  37. package/dist/components/layout-and-navigation/StepperBar.mjs +30 -33
  38. package/dist/components/layout-and-navigation/StepperBar.mjs.map +1 -1
  39. package/dist/components/layout-and-navigation/TextImage.js.map +1 -1
  40. package/dist/components/layout-and-navigation/TextImage.mjs +2 -2
  41. package/dist/components/layout-and-navigation/TextImage.mjs.map +1 -1
  42. package/dist/components/loading-states/ErrorComponent.js.map +1 -1
  43. package/dist/components/loading-states/ErrorComponent.mjs +2 -2
  44. package/dist/components/loading-states/ErrorComponent.mjs.map +1 -1
  45. package/dist/components/loading-states/LoadingAnimation.js.map +1 -1
  46. package/dist/components/loading-states/LoadingAnimation.mjs +2 -2
  47. package/dist/components/loading-states/LoadingAnimation.mjs.map +1 -1
  48. package/dist/components/loading-states/LoadingButton.js +26 -29
  49. package/dist/components/loading-states/LoadingButton.js.map +1 -1
  50. package/dist/components/loading-states/LoadingButton.mjs +26 -29
  51. package/dist/components/loading-states/LoadingButton.mjs.map +1 -1
  52. package/dist/components/modals/ConfirmModal.js +40 -43
  53. package/dist/components/modals/ConfirmModal.js.map +1 -1
  54. package/dist/components/modals/ConfirmModal.mjs +48 -51
  55. package/dist/components/modals/ConfirmModal.mjs.map +1 -1
  56. package/dist/components/modals/DiscardChangesModal.js +40 -43
  57. package/dist/components/modals/DiscardChangesModal.js.map +1 -1
  58. package/dist/components/modals/DiscardChangesModal.mjs +48 -51
  59. package/dist/components/modals/DiscardChangesModal.mjs.map +1 -1
  60. package/dist/components/modals/InputModal.js +40 -43
  61. package/dist/components/modals/InputModal.js.map +1 -1
  62. package/dist/components/modals/InputModal.mjs +48 -51
  63. package/dist/components/modals/InputModal.mjs.map +1 -1
  64. package/dist/components/modals/LanguageModal.js +43 -49
  65. package/dist/components/modals/LanguageModal.js.map +1 -1
  66. package/dist/components/modals/LanguageModal.mjs +67 -73
  67. package/dist/components/modals/LanguageModal.mjs.map +1 -1
  68. package/dist/components/modals/ThemeModal.js +43 -49
  69. package/dist/components/modals/ThemeModal.js.map +1 -1
  70. package/dist/components/modals/ThemeModal.mjs +68 -74
  71. package/dist/components/modals/ThemeModal.mjs.map +1 -1
  72. package/dist/components/properties/CheckboxProperty.js +96 -75
  73. package/dist/components/properties/CheckboxProperty.js.map +1 -1
  74. package/dist/components/properties/CheckboxProperty.mjs +98 -77
  75. package/dist/components/properties/CheckboxProperty.mjs.map +1 -1
  76. package/dist/components/properties/DateProperty.js +48 -53
  77. package/dist/components/properties/DateProperty.js.map +1 -1
  78. package/dist/components/properties/DateProperty.mjs +50 -55
  79. package/dist/components/properties/DateProperty.mjs.map +1 -1
  80. package/dist/components/properties/MultiSelectProperty.js +114 -93
  81. package/dist/components/properties/MultiSelectProperty.js.map +1 -1
  82. package/dist/components/properties/MultiSelectProperty.mjs +135 -114
  83. package/dist/components/properties/MultiSelectProperty.mjs.map +1 -1
  84. package/dist/components/properties/NumberProperty.js +48 -53
  85. package/dist/components/properties/NumberProperty.js.map +1 -1
  86. package/dist/components/properties/NumberProperty.mjs +50 -55
  87. package/dist/components/properties/NumberProperty.mjs.map +1 -1
  88. package/dist/components/properties/PropertyBase.js +48 -53
  89. package/dist/components/properties/PropertyBase.js.map +1 -1
  90. package/dist/components/properties/PropertyBase.mjs +50 -55
  91. package/dist/components/properties/PropertyBase.mjs.map +1 -1
  92. package/dist/components/properties/SelectProperty.js +65 -73
  93. package/dist/components/properties/SelectProperty.js.map +1 -1
  94. package/dist/components/properties/SelectProperty.mjs +86 -94
  95. package/dist/components/properties/SelectProperty.mjs.map +1 -1
  96. package/dist/components/properties/TextProperty.js +51 -56
  97. package/dist/components/properties/TextProperty.js.map +1 -1
  98. package/dist/components/properties/TextProperty.mjs +57 -62
  99. package/dist/components/properties/TextProperty.mjs.map +1 -1
  100. package/dist/components/table/Table.js +88 -65
  101. package/dist/components/table/Table.js.map +1 -1
  102. package/dist/components/table/Table.mjs +114 -91
  103. package/dist/components/table/Table.mjs.map +1 -1
  104. package/dist/components/table/TableFilterButton.js +40 -43
  105. package/dist/components/table/TableFilterButton.js.map +1 -1
  106. package/dist/components/table/TableFilterButton.mjs +44 -47
  107. package/dist/components/table/TableFilterButton.mjs.map +1 -1
  108. package/dist/components/table/TableSortButton.js +40 -43
  109. package/dist/components/table/TableSortButton.js.map +1 -1
  110. package/dist/components/table/TableSortButton.mjs +40 -43
  111. package/dist/components/table/TableSortButton.mjs.map +1 -1
  112. package/dist/components/user-action/Button.d.mts +3 -3
  113. package/dist/components/user-action/Button.d.ts +3 -3
  114. package/dist/components/user-action/Button.js +76 -84
  115. package/dist/components/user-action/Button.js.map +1 -1
  116. package/dist/components/user-action/Button.mjs +76 -84
  117. package/dist/components/user-action/Button.mjs.map +1 -1
  118. package/dist/components/user-action/Checkbox.js +48 -22
  119. package/dist/components/user-action/Checkbox.js.map +1 -1
  120. package/dist/components/user-action/Checkbox.mjs +48 -22
  121. package/dist/components/user-action/Checkbox.mjs.map +1 -1
  122. package/dist/components/user-action/CopyToClipboardWrapper.js.map +1 -1
  123. package/dist/components/user-action/CopyToClipboardWrapper.mjs +2 -2
  124. package/dist/components/user-action/CopyToClipboardWrapper.mjs.map +1 -1
  125. package/dist/components/user-action/DateAndTimePicker.js +48 -53
  126. package/dist/components/user-action/DateAndTimePicker.js.map +1 -1
  127. package/dist/components/user-action/DateAndTimePicker.mjs +60 -65
  128. package/dist/components/user-action/DateAndTimePicker.mjs.map +1 -1
  129. package/dist/components/user-action/MultiSelect.js +92 -69
  130. package/dist/components/user-action/MultiSelect.js.map +1 -1
  131. package/dist/components/user-action/MultiSelect.mjs +114 -91
  132. package/dist/components/user-action/MultiSelect.mjs.map +1 -1
  133. package/dist/components/user-action/SearchBar.js +40 -43
  134. package/dist/components/user-action/SearchBar.js.map +1 -1
  135. package/dist/components/user-action/SearchBar.mjs +42 -45
  136. package/dist/components/user-action/SearchBar.mjs.map +1 -1
  137. package/dist/components/user-action/Select.js +43 -49
  138. package/dist/components/user-action/Select.js.map +1 -1
  139. package/dist/components/user-action/Select.mjs +49 -55
  140. package/dist/components/user-action/Select.mjs.map +1 -1
  141. package/dist/components/user-action/Textarea.js +3 -3
  142. package/dist/components/user-action/Textarea.js.map +1 -1
  143. package/dist/components/user-action/Textarea.mjs +3 -3
  144. package/dist/components/user-action/Textarea.mjs.map +1 -1
  145. package/dist/css/globals.css +269 -136
  146. package/dist/css/uncompiled/theme/index.css +1 -2
  147. package/dist/hooks/useLocalStorage.js +1 -3
  148. package/dist/hooks/useLocalStorage.js.map +1 -1
  149. package/dist/hooks/useLocalStorage.mjs +3 -4
  150. package/dist/hooks/useLocalStorage.mjs.map +1 -1
  151. package/dist/index.js +141 -129
  152. package/dist/index.js.map +1 -1
  153. package/dist/index.mjs +216 -204
  154. package/dist/index.mjs.map +1 -1
  155. package/dist/localization/LanguageProvider.js +0 -3
  156. package/dist/localization/LanguageProvider.js.map +1 -1
  157. package/dist/localization/LanguageProvider.mjs +5 -8
  158. package/dist/localization/LanguageProvider.mjs.map +1 -1
  159. package/dist/localization/useTranslation.js.map +1 -1
  160. package/dist/localization/useTranslation.mjs +2 -2
  161. package/dist/localization/useTranslation.mjs.map +1 -1
  162. package/dist/theming/useTheme.js +3 -6
  163. package/dist/theming/useTheme.js.map +1 -1
  164. package/dist/theming/useTheme.mjs +8 -11
  165. package/dist/theming/useTheme.mjs.map +1 -1
  166. package/package.json +1 -1
  167. package/dist/css/uncompiled/theme/theme.css +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/layout-and-navigation/Pagination.tsx","../../../src/localization/LanguageProvider.tsx","../../../src/hooks/useLocalStorage.ts","../../../src/localization/util.ts","../../../src/localization/useTranslation.ts","../../../src/localization/defaults/form.ts","../../../src/components/user-action/Input.tsx","../../../src/hooks/useDelay.ts","../../../src/util/noop.ts","../../../src/components/user-action/Label.tsx","../../../src/hooks/useFocusManagement.ts","../../../src/hooks/useFocusOnceVisible.ts","../../../src/util/math.ts","../../../src/components/user-action/Button.tsx"],"sourcesContent":["import { ChevronFirst, ChevronLast, ChevronLeft, ChevronRight } from 'lucide-react'\nimport clsx from 'clsx'\nimport type { PropsForTranslation } from '../../localization/useTranslation'\nimport { useTranslation } from '../../localization/useTranslation'\nimport type { FormTranslationType } from '../../localization/defaults/form'\nimport { formTranslation } from '../../localization/defaults/form'\nimport { Input } from '../user-action/Input'\nimport { clamp } from '../../util/math'\nimport type { CSSProperties } from 'react'\nimport { useEffect, useState } from 'react'\nimport { IconButton } from '../user-action/Button'\n\ntype PaginationTranslation = FormTranslationType\n\nexport type PaginationProps = {\n pageIndex: number, // starts with 0\n pageCount: number,\n onPageChanged: (page: number) => void,\n className?: string,\n style?: CSSProperties,\n}\n\n/**\n * A Component showing the pagination allowing first, before, next and last page navigation\n */\nexport const Pagination = ({\n overwriteTranslation,\n pageIndex,\n pageCount,\n onPageChanged,\n className,\n style,\n }: PropsForTranslation<PaginationTranslation, PaginationProps>) => {\n const translation = useTranslation([formTranslation], overwriteTranslation)\n const [value, setValue] = useState<string>((pageIndex + 1).toString())\n\n const noPages = pageCount === 0\n const onFirstPage = pageIndex === 0 && !noPages\n const onLastPage = pageIndex === pageCount - 1\n\n useEffect(() => {\n if (noPages) {\n setValue('0')\n } else {\n setValue((pageIndex + 1).toString())\n }\n }, [pageIndex, noPages])\n\n const changePage = (page: number) => {\n onPageChanged(page)\n }\n\n return (\n <div className={clsx('flex-row-1', className)} style={style}>\n <IconButton color=\"transparent\" onClick={() => changePage(0)} disabled={onFirstPage || noPages}>\n <ChevronFirst/>\n </IconButton>\n <IconButton color=\"transparent\" onClick={() => changePage(pageIndex - 1)} disabled={onFirstPage || noPages}>\n <ChevronLeft/>\n </IconButton>\n <div className=\"flex-row-2 min-w-56 items-center justify-center mx-2 text-center\">\n <Input\n value={value}\n containerClassName=\"flex flex-1 h-10\"\n className={clsx(\n 'w-full text-center font-bold input-indicator-hidden'\n )}\n type=\"number\"\n min={1}\n max={pageCount}\n disabled={noPages}\n onChangeText={value => {\n if (value) {\n setValue(clamp(Number(value), 1, pageCount).toString())\n } else {\n setValue(value)\n }\n }}\n onEditCompleted={value => {\n changePage(clamp(Number(value) - 1, 0, pageCount - 1))\n }}\n editCompleteOptions={{ delay: 800 }}\n />\n <span className=\"select-none w-10\">{translation('of')}</span>\n <span\n className=\"flex-row-2 flex-1 items-center justify-center select-none h-10 bg-input-background text-input-text rounded-md font-bold\"\n >\n {pageCount}\n </span>\n </div>\n <IconButton color=\"transparent\" onClick={() => changePage(pageIndex + 1)} disabled={onLastPage || noPages}>\n <ChevronRight/>\n </IconButton>\n <IconButton color=\"transparent\" onClick={() => changePage(pageCount - 1)} disabled={onLastPage || noPages}>\n <ChevronLast/>\n </IconButton>\n </div>\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}","import type { Dispatch, SetStateAction } from 'react'\nimport { useCallback, useEffect, 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 useEffect(() => {\n setStoredValue(get())\n }, []) // eslint-disable-line react-hooks/exhaustive-deps\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 { 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 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}","export const noop = () => undefined\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 { 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}","export const clamp = (value: number, min: number = 0, max: number = 1): number => {\n return Math.min(Math.max(value, min), max)\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 disabled = false,\n color = 'primary',\n size = 'medium',\n startIcon,\n endIcon,\n onClick,\n className,\n ...restProps\n }, ref) {\n const colorClasses = {\n primary: 'bg-button-solid-primary-background text-button-solid-primary-text',\n secondary: 'bg-button-solid-secondary-background text-button-solid-secondary-text',\n tertiary: 'bg-button-solid-tertiary-background text-button-solid-tertiary-text',\n positive: 'bg-button-solid-positive-background text-button-solid-positive-text',\n warning: 'bg-button-solid-warning-background text-button-solid-warning-text',\n negative: 'bg-button-solid-negative-background text-button-solid-negative-text',\n neutral: 'bg-button-solid-neutral-background text-button-solid-neutral-text',\n }[color]\n\n const iconColorClasses = {\n primary: 'text-button-solid-primary-icon',\n secondary: 'text-button-solid-secondary-icon',\n tertiary: 'text-button-solid-tertiary-icon',\n positive: 'text-button-solid-positive-icon',\n warning: 'text-button-solid-warning-icon',\n negative: 'text-button-solid-negative-icon',\n neutral: 'text-button-solid-neutral-icon',\n }[color]\n\n return (\n <button\n ref={ref}\n onClick={onClick}\n disabled={disabled}\n className={clsx(\n 'font-semibold',\n {\n 'text-disabled-text bg-disabled-background cursor-not-allowed': disabled,\n [clsx(colorClasses, 'hover:brightness-90')]: !disabled\n },\n ButtonUtil.paddingMapping[size],\n className\n )}\n {...restProps}\n >\n {startIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {startIcon}\n </span>\n )}\n {children}\n {endIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\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 disabled = false,\n color = 'primary',\n size = 'medium',\n startIcon,\n endIcon,\n onClick,\n className,\n ...restProps\n }: OutlineButtonProps) => {\n const colorClasses = {\n primary: 'bg-transparent border-2 border-button-outline-primary-text text-button-outline-primary-text',\n }[color]\n\n const iconColorClasses = {\n primary: 'text-button-outline-primary-icon',\n }[color]\n return (\n <button\n onClick={onClick}\n disabled={disabled}\n className={clsx(\n 'font-semibold',\n {\n 'text-disabled-text border-disabled-outline cursor-not-allowed': disabled,\n [clsx(colorClasses, 'hover:brightness-80')]: !disabled,\n },\n ButtonUtil.paddingMapping[size],\n className\n )}\n {...restProps}\n >\n {startIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {startIcon}\n </span>\n )}\n {children}\n {endIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\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 disabled = false,\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: 'bg-transparent text-button-text-primary-text',\n negative: 'bg-transparent text-button-text-negative-text',\n neutral: 'bg-transparent text-button-text-neutral-text',\n }[color]\n\n const backgroundColor = {\n primary: 'hover:bg-button-text-primary-text/20',\n negative: 'hover:bg-button-text-negative-text/20',\n neutral: 'hover:bg-button-text-neutral-text/20',\n }[color]\n\n const iconColorClasses = {\n primary: 'text-button-text-primary-icon',\n negative: 'text-button-text-negative-icon',\n neutral: 'text-button-text-neutral-icon',\n }[color]\n\n return (\n <button\n onClick={onClick}\n disabled={disabled}\n className={clsx(\n 'font-semibold',\n {\n 'text-disabled-text cursor-not-allowed': disabled,\n [colorClasses]: !disabled,\n [backgroundColor]: !disabled && coloredHoverBackground,\n 'hover:bg-button-text-hover-background': !disabled && !coloredHoverBackground,\n },\n ButtonUtil.paddingMapping[size],\n className\n )}\n {...restProps}\n >\n {startIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\n })}\n >\n {startIcon}\n </span>\n )}\n {children}\n {endIcon && (\n <span\n className={clsx({\n [iconColorClasses]: !disabled,\n [`text-disabled-icon`]: disabled\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 disabled = false,\n color = 'primary',\n size = 'medium',\n className,\n ...restProps\n }: IconButtonProps) => {\n const colorClasses = {\n primary: 'bg-button-solid-primary-background text-button-solid-primary-text',\n secondary: 'bg-button-solid-secondary-background text-button-solid-secondary-text',\n tertiary: 'bg-button-solid-tertiary-background text-button-solid-tertiary-text',\n positive: 'bg-button-solid-positive-background text-button-solid-positive-text',\n warning: 'bg-button-solid-warning-background text-button-solid-warning-text',\n negative: 'bg-button-solid-negative-background text-button-solid-negative-text',\n neutral: 'bg-button-solid-neutral-background text-button-solid-neutral-text',\n transparent: 'bg-transparent',\n }[color]\n\n return (\n <button\n disabled={disabled}\n className={clsx(\n {\n 'text-disabled-text bg-disabled-background cursor-not-allowed': disabled && color !== 'transparent',\n 'text-disabled-text cursor-not-allowed opacity-70': disabled && color === 'transparent',\n 'hover:bg-button-text-hover-background': !disabled && color === 'transparent',\n [clsx(colorClasses, 'hover:brightness-90')]: !disabled,\n },\n ButtonUtil.iconPaddingMapping[size],\n className\n )}\n {...restProps}\n >\n {children}\n </button>\n )\n}\n\nexport { SolidButton, OutlineButton, TextButton, IconButton }\n"],"mappings":"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","names":["import_clsx","import_react","import_react","import_clsx","import_react","import_jsx_runtime","clsx","import_react","import_react","React","import_jsx_runtime","clsx","Input","value","FormInput","clsx","import_react","import_react","import_clsx","import_jsx_runtime","SolidButton","clsx","clsx","import_jsx_runtime","clsx","value"]}
1
+ {"version":3,"sources":["../../../src/components/layout-and-navigation/Pagination.tsx","../../../src/localization/LanguageProvider.tsx","../../../src/hooks/useLocalStorage.ts","../../../src/localization/util.ts","../../../src/localization/useTranslation.ts","../../../src/localization/defaults/form.ts","../../../src/components/user-action/Input.tsx","../../../src/hooks/useDelay.ts","../../../src/util/noop.ts","../../../src/components/user-action/Label.tsx","../../../src/hooks/useFocusManagement.ts","../../../src/hooks/useFocusOnceVisible.ts","../../../src/util/math.ts","../../../src/components/user-action/Button.tsx"],"sourcesContent":["import { ChevronFirst, ChevronLast, ChevronLeft, ChevronRight } from 'lucide-react'\nimport clsx from 'clsx'\nimport type { PropsForTranslation } from '../../localization/useTranslation'\nimport { useTranslation } from '../../localization/useTranslation'\nimport type { FormTranslationType } from '../../localization/defaults/form'\nimport { formTranslation } from '../../localization/defaults/form'\nimport { Input } from '../user-action/Input'\nimport { clamp } from '../../util/math'\nimport type { CSSProperties } from 'react'\nimport { useEffect, useState } from 'react'\nimport { IconButton } from '../user-action/Button'\n\ntype PaginationTranslation = FormTranslationType\n\nexport type PaginationProps = {\n pageIndex: number, // starts with 0\n pageCount: number,\n onPageChanged: (page: number) => void,\n className?: string,\n style?: CSSProperties,\n}\n\n/**\n * A Component showing the pagination allowing first, before, next and last page navigation\n */\nexport const Pagination = ({\n overwriteTranslation,\n pageIndex,\n pageCount,\n onPageChanged,\n className,\n style,\n }: PropsForTranslation<PaginationTranslation, PaginationProps>) => {\n const translation = useTranslation([formTranslation], overwriteTranslation)\n const [value, setValue] = useState<string>((pageIndex + 1).toString())\n\n const noPages = pageCount === 0\n const onFirstPage = pageIndex === 0 && !noPages\n const onLastPage = pageIndex === pageCount - 1\n\n useEffect(() => {\n if (noPages) {\n setValue('0')\n } else {\n setValue((pageIndex + 1).toString())\n }\n }, [pageIndex, noPages])\n\n const changePage = (page: number) => {\n onPageChanged(page)\n }\n\n return (\n <div className={clsx('flex-row-1', className)} style={style}>\n <IconButton color=\"transparent\" onClick={() => changePage(0)} disabled={onFirstPage || noPages}>\n <ChevronFirst/>\n </IconButton>\n <IconButton color=\"transparent\" onClick={() => changePage(pageIndex - 1)} disabled={onFirstPage || noPages}>\n <ChevronLeft/>\n </IconButton>\n <div className=\"flex-row-2 min-w-56 items-center justify-center mx-2 text-center\">\n <Input\n value={value}\n containerClassName=\"flex flex-1 h-10\"\n className={clsx(\n 'w-full text-center font-bold input-indicator-hidden'\n )}\n type=\"number\"\n min={1}\n max={pageCount}\n disabled={noPages}\n onChangeText={value => {\n if (value) {\n setValue(clamp(Number(value), 1, pageCount).toString())\n } else {\n setValue(value)\n }\n }}\n onEditCompleted={value => {\n changePage(clamp(Number(value) - 1, 0, pageCount - 1))\n }}\n editCompleteOptions={{ delay: 800 }}\n />\n <span className=\"select-none w-10\">{translation('of')}</span>\n <span\n className=\"flex-row-2 flex-1 items-center justify-center select-none h-10 bg-input-background text-input-text rounded-md font-bold\"\n >\n {pageCount}\n </span>\n </div>\n <IconButton color=\"transparent\" onClick={() => changePage(pageIndex + 1)} disabled={onLastPage || noPages}>\n <ChevronRight/>\n </IconButton>\n <IconButton color=\"transparent\" onClick={() => changePage(pageCount - 1)} disabled={onLastPage || noPages}>\n <ChevronLast/>\n </IconButton>\n </div>\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 { 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 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}","export const noop = () => undefined\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 { 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}","export const clamp = (value: number, min: number = 0, max: number = 1): number => {\n return Math.min(Math.max(value, min), max)\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"],"mappings":"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","names":["import_clsx","import_react","import_react","import_clsx","import_react","import_jsx_runtime","clsx","import_react","import_react","React","import_jsx_runtime","clsx","Input","value","FormInput","clsx","import_react","import_react","import_clsx","import_jsx_runtime","SolidButton","clsx","clsx","import_jsx_runtime","clsx","value"]}
@@ -3,10 +3,10 @@ import { ChevronFirst, ChevronLast, ChevronLeft, ChevronRight } from "lucide-rea
3
3
  import clsx4 from "clsx";
4
4
 
5
5
  // src/localization/LanguageProvider.tsx
6
- import { createContext, useContext, useEffect as useEffect2, useState as useState2 } from "react";
6
+ import { createContext, useContext, useEffect, useState as useState2 } from "react";
7
7
 
8
8
  // src/hooks/useLocalStorage.ts
9
- import { useCallback, useEffect, useState } from "react";
9
+ import { useCallback, useState } from "react";
10
10
 
11
11
  // src/localization/util.ts
12
12
  var languages = ["en", "de"];
@@ -206,11 +206,11 @@ var formTranslation = {
206
206
  };
207
207
 
208
208
  // src/components/user-action/Input.tsx
209
- import { forwardRef, useEffect as useEffect5, useImperativeHandle, useRef, useState as useState4 } from "react";
209
+ import { forwardRef, useEffect as useEffect4, useImperativeHandle, useRef, useState as useState4 } from "react";
210
210
  import clsx2 from "clsx";
211
211
 
212
212
  // src/hooks/useDelay.ts
213
- import { useEffect as useEffect3, useState as useState3 } from "react";
213
+ import { useEffect as useEffect2, useState as useState3 } from "react";
214
214
  var defaultOptions = {
215
215
  delay: 3e3,
216
216
  disabled: false
@@ -235,12 +235,12 @@ function useDelay(options) {
235
235
  setTimer(void 0);
236
236
  }, delay));
237
237
  };
238
- useEffect3(() => {
238
+ useEffect2(() => {
239
239
  return () => {
240
240
  clearTimeout(timer);
241
241
  };
242
242
  }, [timer]);
243
- useEffect3(() => {
243
+ useEffect2(() => {
244
244
  if (disabled) {
245
245
  clearTimeout(timer);
246
246
  setTimer(void 0);
@@ -328,10 +328,10 @@ function useFocusManagement() {
328
328
  }
329
329
 
330
330
  // src/hooks/useFocusOnceVisible.ts
331
- import React, { useEffect as useEffect4 } from "react";
331
+ import React, { useEffect as useEffect3 } from "react";
332
332
  var useFocusOnceVisible = (ref, disable = false) => {
333
333
  const [hasUsedFocus, setHasUsedFocus] = React.useState(false);
334
- useEffect4(() => {
334
+ useEffect3(() => {
335
335
  if (disable || hasUsedFocus) {
336
336
  return;
337
337
  }
@@ -483,7 +483,7 @@ var clamp = (value, min = 0, max = 1) => {
483
483
  };
484
484
 
485
485
  // src/components/layout-and-navigation/Pagination.tsx
486
- import { useEffect as useEffect6, useState as useState5 } from "react";
486
+ import { useEffect as useEffect5, useState as useState5 } from "react";
487
487
 
488
488
  // src/components/user-action/Button.tsx
489
489
  import { forwardRef as forwardRef2 } from "react";
@@ -514,7 +514,6 @@ var ButtonUtil = {
514
514
  };
515
515
  var SolidButton = forwardRef2(function SolidButton2({
516
516
  children,
517
- disabled = false,
518
517
  color = "primary",
519
518
  size = "medium",
520
519
  startIcon,
@@ -524,35 +523,33 @@ var SolidButton = forwardRef2(function SolidButton2({
524
523
  ...restProps
525
524
  }, ref) {
526
525
  const colorClasses = {
527
- primary: "bg-button-solid-primary-background text-button-solid-primary-text",
528
- secondary: "bg-button-solid-secondary-background text-button-solid-secondary-text",
529
- tertiary: "bg-button-solid-tertiary-background text-button-solid-tertiary-text",
530
- positive: "bg-button-solid-positive-background text-button-solid-positive-text",
531
- warning: "bg-button-solid-warning-background text-button-solid-warning-text",
532
- negative: "bg-button-solid-negative-background text-button-solid-negative-text",
533
- neutral: "bg-button-solid-neutral-background text-button-solid-neutral-text"
526
+ primary: "not-disabled:bg-button-solid-primary-background not-disabled:text-button-solid-primary-text",
527
+ secondary: "not-disabled:bg-button-solid-secondary-background not-disabled:text-button-solid-secondary-text",
528
+ tertiary: "not-disabled:bg-button-solid-tertiary-background not-disabled:text-button-solid-tertiary-text",
529
+ positive: "not-disabled:bg-button-solid-positive-background not-disabled:text-button-solid-positive-text",
530
+ warning: "not-disabled:bg-button-solid-warning-background not-disabled:text-button-solid-warning-text",
531
+ negative: "not-disabled:bg-button-solid-negative-background not-disabled:text-button-solid-negative-text",
532
+ neutral: "not-disabled:bg-button-solid-neutral-background not-disabled:text-button-solid-neutral-text"
534
533
  }[color];
535
534
  const iconColorClasses = {
536
- primary: "text-button-solid-primary-icon",
537
- secondary: "text-button-solid-secondary-icon",
538
- tertiary: "text-button-solid-tertiary-icon",
539
- positive: "text-button-solid-positive-icon",
540
- warning: "text-button-solid-warning-icon",
541
- negative: "text-button-solid-negative-icon",
542
- neutral: "text-button-solid-neutral-icon"
535
+ primary: "not-group-disabled:text-button-solid-primary-icon",
536
+ secondary: "not-group-disabled:text-button-solid-secondary-icon",
537
+ tertiary: "not-group-disabled:text-button-solid-tertiary-icon",
538
+ positive: "not-group-disabled:text-button-solid-positive-icon",
539
+ warning: "not-group-disabled:text-button-solid-warning-icon",
540
+ negative: "not-group-disabled:text-button-solid-negative-icon",
541
+ neutral: "not-group-disabled:text-button-solid-neutral-icon"
543
542
  }[color];
544
543
  return /* @__PURE__ */ jsxs2(
545
544
  "button",
546
545
  {
547
546
  ref,
548
547
  onClick,
549
- disabled,
550
548
  className: clsx3(
551
- "font-semibold",
552
- {
553
- "text-disabled-text bg-disabled-background cursor-not-allowed": disabled,
554
- [clsx3(colorClasses, "hover:brightness-90")]: !disabled
555
- },
549
+ "group font-semibold",
550
+ colorClasses,
551
+ "not-disabled:hover:brightness-90",
552
+ "disabled:text-disabled-text disabled:bg-disabled-background",
556
553
  ButtonUtil.paddingMapping[size],
557
554
  className
558
555
  ),
@@ -561,10 +558,10 @@ var SolidButton = forwardRef2(function SolidButton2({
561
558
  startIcon && /* @__PURE__ */ jsx4(
562
559
  "span",
563
560
  {
564
- className: clsx3({
565
- [iconColorClasses]: !disabled,
566
- [`text-disabled-icon`]: disabled
567
- }),
561
+ className: clsx3(
562
+ iconColorClasses,
563
+ "group-disabled:text-disabled-icon"
564
+ ),
568
565
  children: startIcon
569
566
  }
570
567
  ),
@@ -572,10 +569,10 @@ var SolidButton = forwardRef2(function SolidButton2({
572
569
  endIcon && /* @__PURE__ */ jsx4(
573
570
  "span",
574
571
  {
575
- className: clsx3({
576
- [iconColorClasses]: !disabled,
577
- [`text-disabled-icon`]: disabled
578
- }),
572
+ className: clsx3(
573
+ iconColorClasses,
574
+ "group-disabled:text-disabled-icon"
575
+ ),
579
576
  children: endIcon
580
577
  }
581
578
  )
@@ -585,32 +582,32 @@ var SolidButton = forwardRef2(function SolidButton2({
585
582
  });
586
583
  var IconButton = ({
587
584
  children,
588
- disabled = false,
589
585
  color = "primary",
590
586
  size = "medium",
591
587
  className,
592
588
  ...restProps
593
589
  }) => {
594
590
  const colorClasses = {
595
- primary: "bg-button-solid-primary-background text-button-solid-primary-text",
596
- secondary: "bg-button-solid-secondary-background text-button-solid-secondary-text",
597
- tertiary: "bg-button-solid-tertiary-background text-button-solid-tertiary-text",
598
- positive: "bg-button-solid-positive-background text-button-solid-positive-text",
599
- warning: "bg-button-solid-warning-background text-button-solid-warning-text",
600
- negative: "bg-button-solid-negative-background text-button-solid-negative-text",
601
- neutral: "bg-button-solid-neutral-background text-button-solid-neutral-text",
602
- transparent: "bg-transparent"
591
+ primary: "not-disabled:bg-button-solid-primary-background not-disabled:text-button-solid-primary-text",
592
+ secondary: "not-disabled:bg-button-solid-secondary-background not-disabled:text-button-solid-secondary-text",
593
+ tertiary: "not-disabled:bg-button-solid-tertiary-background not-disabled:text-button-solid-tertiary-text",
594
+ positive: "not-disabled:bg-button-solid-positive-background not-disabled:text-button-solid-positive-text",
595
+ warning: "not-disabled:bg-button-solid-warning-background not-disabled:text-button-solid-warning-text",
596
+ negative: "not-disabled:bg-button-solid-negative-background not-disabled:text-button-solid-negative-text",
597
+ neutral: "not-disabled:bg-button-solid-neutral-background not-disabled:text-button-solid-neutral-text",
598
+ transparent: "not-disabled:bg-transparent"
603
599
  }[color];
604
600
  return /* @__PURE__ */ jsx4(
605
601
  "button",
606
602
  {
607
- disabled,
608
603
  className: clsx3(
604
+ colorClasses,
605
+ "not-disabled:hover:brightness-90",
606
+ "disabled:text-disabled-text",
609
607
  {
610
- "text-disabled-text bg-disabled-background cursor-not-allowed": disabled && color !== "transparent",
611
- "text-disabled-text cursor-not-allowed opacity-70": disabled && color === "transparent",
612
- "hover:bg-button-text-hover-background": !disabled && color === "transparent",
613
- [clsx3(colorClasses, "hover:brightness-90")]: !disabled
608
+ "disabled:bg-disabled-background": color !== "transparent",
609
+ "disabled:opacity-70": color === "transparent",
610
+ "not-disabled:hover:bg-button-text-hover-background": color === "transparent"
614
611
  },
615
612
  ButtonUtil.iconPaddingMapping[size],
616
613
  className
@@ -636,7 +633,7 @@ var Pagination = ({
636
633
  const noPages = pageCount === 0;
637
634
  const onFirstPage = pageIndex === 0 && !noPages;
638
635
  const onLastPage = pageIndex === pageCount - 1;
639
- useEffect6(() => {
636
+ useEffect5(() => {
640
637
  if (noPages) {
641
638
  setValue("0");
642
639
  } else {