@helpwave/hightide 0.1.8 → 0.1.10

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 (193) hide show
  1. package/dist/components/date/DatePicker.d.mts +3 -4
  2. package/dist/components/date/DatePicker.d.ts +3 -4
  3. package/dist/components/date/DatePicker.js +125 -13
  4. package/dist/components/date/DatePicker.js.map +1 -1
  5. package/dist/components/date/DatePicker.mjs +125 -13
  6. package/dist/components/date/DatePicker.mjs.map +1 -1
  7. package/dist/components/date/TimeDisplay.d.mts +5 -19
  8. package/dist/components/date/TimeDisplay.d.ts +5 -19
  9. package/dist/components/date/TimeDisplay.js +129 -37
  10. package/dist/components/date/TimeDisplay.js.map +1 -1
  11. package/dist/components/date/TimeDisplay.mjs +129 -37
  12. package/dist/components/date/TimeDisplay.mjs.map +1 -1
  13. package/dist/components/dialogs/ConfirmDialog.d.mts +2 -5
  14. package/dist/components/dialogs/ConfirmDialog.d.ts +2 -5
  15. package/dist/components/dialogs/ConfirmDialog.js +163 -23
  16. package/dist/components/dialogs/ConfirmDialog.js.map +1 -1
  17. package/dist/components/dialogs/ConfirmDialog.mjs +163 -23
  18. package/dist/components/dialogs/ConfirmDialog.mjs.map +1 -1
  19. package/dist/components/layout-and-navigation/Overlay.d.mts +2 -3
  20. package/dist/components/layout-and-navigation/Overlay.d.ts +2 -3
  21. package/dist/components/layout-and-navigation/Overlay.js +158 -10
  22. package/dist/components/layout-and-navigation/Overlay.js.map +1 -1
  23. package/dist/components/layout-and-navigation/Overlay.mjs +158 -10
  24. package/dist/components/layout-and-navigation/Overlay.mjs.map +1 -1
  25. package/dist/components/layout-and-navigation/Pagination.d.mts +2 -3
  26. package/dist/components/layout-and-navigation/Pagination.d.ts +2 -3
  27. package/dist/components/layout-and-navigation/Pagination.js +153 -13
  28. package/dist/components/layout-and-navigation/Pagination.js.map +1 -1
  29. package/dist/components/layout-and-navigation/Pagination.mjs +153 -13
  30. package/dist/components/layout-and-navigation/Pagination.mjs.map +1 -1
  31. package/dist/components/layout-and-navigation/SearchableList.d.mts +3 -2
  32. package/dist/components/layout-and-navigation/SearchableList.d.ts +3 -2
  33. package/dist/components/layout-and-navigation/SearchableList.js +157 -11
  34. package/dist/components/layout-and-navigation/SearchableList.js.map +1 -1
  35. package/dist/components/layout-and-navigation/SearchableList.mjs +157 -11
  36. package/dist/components/layout-and-navigation/SearchableList.mjs.map +1 -1
  37. package/dist/components/layout-and-navigation/StepperBar.d.mts +2 -5
  38. package/dist/components/layout-and-navigation/StepperBar.d.ts +2 -5
  39. package/dist/components/layout-and-navigation/StepperBar.js +153 -15
  40. package/dist/components/layout-and-navigation/StepperBar.js.map +1 -1
  41. package/dist/components/layout-and-navigation/StepperBar.mjs +153 -15
  42. package/dist/components/layout-and-navigation/StepperBar.mjs.map +1 -1
  43. package/dist/components/layout-and-navigation/Table.js +153 -13
  44. package/dist/components/layout-and-navigation/Table.js.map +1 -1
  45. package/dist/components/layout-and-navigation/Table.mjs +153 -13
  46. package/dist/components/layout-and-navigation/Table.mjs.map +1 -1
  47. package/dist/components/layout-and-navigation/TextImage.d.mts +3 -4
  48. package/dist/components/layout-and-navigation/TextImage.d.ts +3 -4
  49. package/dist/components/layout-and-navigation/TextImage.js +161 -19
  50. package/dist/components/layout-and-navigation/TextImage.js.map +1 -1
  51. package/dist/components/layout-and-navigation/TextImage.mjs +161 -19
  52. package/dist/components/layout-and-navigation/TextImage.mjs.map +1 -1
  53. package/dist/components/loading-states/ErrorComponent.js +56 -8
  54. package/dist/components/loading-states/ErrorComponent.js.map +1 -1
  55. package/dist/components/loading-states/ErrorComponent.mjs +56 -8
  56. package/dist/components/loading-states/ErrorComponent.mjs.map +1 -1
  57. package/dist/components/loading-states/LoadingAndErrorComponent.d.mts +1 -0
  58. package/dist/components/loading-states/LoadingAndErrorComponent.d.ts +1 -0
  59. package/dist/components/loading-states/LoadingAndErrorComponent.js +155 -15
  60. package/dist/components/loading-states/LoadingAndErrorComponent.js.map +1 -1
  61. package/dist/components/loading-states/LoadingAndErrorComponent.mjs +155 -15
  62. package/dist/components/loading-states/LoadingAndErrorComponent.mjs.map +1 -1
  63. package/dist/components/loading-states/LoadingAnimation.d.mts +2 -3
  64. package/dist/components/loading-states/LoadingAnimation.d.ts +2 -3
  65. package/dist/components/loading-states/LoadingAnimation.js +153 -13
  66. package/dist/components/loading-states/LoadingAnimation.js.map +1 -1
  67. package/dist/components/loading-states/LoadingAnimation.mjs +153 -13
  68. package/dist/components/loading-states/LoadingAnimation.mjs.map +1 -1
  69. package/dist/components/modals/ConfirmModal.d.mts +2 -5
  70. package/dist/components/modals/ConfirmModal.d.ts +2 -5
  71. package/dist/components/modals/ConfirmModal.js +164 -26
  72. package/dist/components/modals/ConfirmModal.js.map +1 -1
  73. package/dist/components/modals/ConfirmModal.mjs +164 -26
  74. package/dist/components/modals/ConfirmModal.mjs.map +1 -1
  75. package/dist/components/modals/DiscardChangesModal.d.mts +2 -7
  76. package/dist/components/modals/DiscardChangesModal.d.ts +2 -7
  77. package/dist/components/modals/DiscardChangesModal.js +168 -46
  78. package/dist/components/modals/DiscardChangesModal.js.map +1 -1
  79. package/dist/components/modals/DiscardChangesModal.mjs +168 -46
  80. package/dist/components/modals/DiscardChangesModal.mjs.map +1 -1
  81. package/dist/components/modals/InputModal.d.mts +1 -0
  82. package/dist/components/modals/InputModal.d.ts +1 -0
  83. package/dist/components/modals/InputModal.js +164 -26
  84. package/dist/components/modals/InputModal.js.map +1 -1
  85. package/dist/components/modals/InputModal.mjs +164 -26
  86. package/dist/components/modals/InputModal.mjs.map +1 -1
  87. package/dist/components/modals/LanguageModal.d.mts +3 -2
  88. package/dist/components/modals/LanguageModal.d.ts +3 -2
  89. package/dist/components/modals/LanguageModal.js +170 -24
  90. package/dist/components/modals/LanguageModal.js.map +1 -1
  91. package/dist/components/modals/LanguageModal.mjs +170 -24
  92. package/dist/components/modals/LanguageModal.mjs.map +1 -1
  93. package/dist/components/modals/ThemeModal.d.mts +5 -5
  94. package/dist/components/modals/ThemeModal.d.ts +5 -5
  95. package/dist/components/modals/ThemeModal.js +178 -30
  96. package/dist/components/modals/ThemeModal.js.map +1 -1
  97. package/dist/components/modals/ThemeModal.mjs +178 -30
  98. package/dist/components/modals/ThemeModal.mjs.map +1 -1
  99. package/dist/components/properties/CheckboxProperty.d.mts +3 -5
  100. package/dist/components/properties/CheckboxProperty.d.ts +3 -5
  101. package/dist/components/properties/CheckboxProperty.js +155 -25
  102. package/dist/components/properties/CheckboxProperty.js.map +1 -1
  103. package/dist/components/properties/CheckboxProperty.mjs +155 -25
  104. package/dist/components/properties/CheckboxProperty.mjs.map +1 -1
  105. package/dist/components/properties/DateProperty.d.mts +1 -0
  106. package/dist/components/properties/DateProperty.d.ts +1 -0
  107. package/dist/components/properties/DateProperty.js +153 -13
  108. package/dist/components/properties/DateProperty.js.map +1 -1
  109. package/dist/components/properties/DateProperty.mjs +153 -13
  110. package/dist/components/properties/DateProperty.mjs.map +1 -1
  111. package/dist/components/properties/MultiSelectProperty.d.mts +4 -5
  112. package/dist/components/properties/MultiSelectProperty.d.ts +4 -5
  113. package/dist/components/properties/MultiSelectProperty.js +169 -43
  114. package/dist/components/properties/MultiSelectProperty.js.map +1 -1
  115. package/dist/components/properties/MultiSelectProperty.mjs +169 -43
  116. package/dist/components/properties/MultiSelectProperty.mjs.map +1 -1
  117. package/dist/components/properties/NumberProperty.d.mts +1 -0
  118. package/dist/components/properties/NumberProperty.d.ts +1 -0
  119. package/dist/components/properties/NumberProperty.js +155 -15
  120. package/dist/components/properties/NumberProperty.js.map +1 -1
  121. package/dist/components/properties/NumberProperty.mjs +155 -15
  122. package/dist/components/properties/NumberProperty.mjs.map +1 -1
  123. package/dist/components/properties/PropertyBase.d.mts +2 -3
  124. package/dist/components/properties/PropertyBase.d.ts +2 -3
  125. package/dist/components/properties/PropertyBase.js +153 -13
  126. package/dist/components/properties/PropertyBase.js.map +1 -1
  127. package/dist/components/properties/PropertyBase.mjs +153 -13
  128. package/dist/components/properties/PropertyBase.mjs.map +1 -1
  129. package/dist/components/properties/SelectProperty.d.mts +2 -3
  130. package/dist/components/properties/SelectProperty.d.ts +2 -3
  131. package/dist/components/properties/SelectProperty.js +159 -29
  132. package/dist/components/properties/SelectProperty.js.map +1 -1
  133. package/dist/components/properties/SelectProperty.mjs +159 -29
  134. package/dist/components/properties/SelectProperty.mjs.map +1 -1
  135. package/dist/components/properties/TextProperty.d.mts +2 -1
  136. package/dist/components/properties/TextProperty.d.ts +2 -1
  137. package/dist/components/properties/TextProperty.js +157 -17
  138. package/dist/components/properties/TextProperty.js.map +1 -1
  139. package/dist/components/properties/TextProperty.mjs +157 -17
  140. package/dist/components/properties/TextProperty.mjs.map +1 -1
  141. package/dist/components/user-action/DateAndTimePicker.d.mts +4 -20
  142. package/dist/components/user-action/DateAndTimePicker.d.ts +4 -20
  143. package/dist/components/user-action/DateAndTimePicker.js +223 -51
  144. package/dist/components/user-action/DateAndTimePicker.js.map +1 -1
  145. package/dist/components/user-action/DateAndTimePicker.mjs +223 -51
  146. package/dist/components/user-action/DateAndTimePicker.mjs.map +1 -1
  147. package/dist/components/user-action/Menu.js +1 -1
  148. package/dist/components/user-action/Menu.js.map +1 -1
  149. package/dist/components/user-action/Menu.mjs +1 -1
  150. package/dist/components/user-action/Menu.mjs.map +1 -1
  151. package/dist/components/user-action/MultiSelect.d.mts +5 -9
  152. package/dist/components/user-action/MultiSelect.d.ts +5 -9
  153. package/dist/components/user-action/MultiSelect.js +165 -23
  154. package/dist/components/user-action/MultiSelect.js.map +1 -1
  155. package/dist/components/user-action/MultiSelect.mjs +165 -23
  156. package/dist/components/user-action/MultiSelect.mjs.map +1 -1
  157. package/dist/components/user-action/Select.js +158 -12
  158. package/dist/components/user-action/Select.js.map +1 -1
  159. package/dist/components/user-action/Select.mjs +158 -12
  160. package/dist/components/user-action/Select.mjs.map +1 -1
  161. package/dist/css/globals.css +13 -4
  162. package/dist/css/uncompiled/globals.css +4 -4
  163. package/dist/index.d.mts +4 -2
  164. package/dist/index.d.ts +4 -2
  165. package/dist/index.js +345 -303
  166. package/dist/index.js.map +1 -1
  167. package/dist/index.mjs +341 -303
  168. package/dist/index.mjs.map +1 -1
  169. package/dist/localization/defaults/form.d.mts +54 -0
  170. package/dist/localization/defaults/form.d.ts +54 -0
  171. package/dist/localization/defaults/form.js +127 -0
  172. package/dist/localization/defaults/form.js.map +1 -0
  173. package/dist/localization/defaults/form.mjs +103 -0
  174. package/dist/localization/defaults/form.mjs.map +1 -0
  175. package/dist/localization/defaults/time.d.mts +39 -0
  176. package/dist/localization/defaults/time.d.ts +39 -0
  177. package/dist/localization/defaults/time.js +101 -0
  178. package/dist/localization/defaults/time.js.map +1 -0
  179. package/dist/localization/defaults/time.mjs +76 -0
  180. package/dist/localization/defaults/time.mjs.map +1 -0
  181. package/dist/localization/useTranslation.d.mts +38 -6
  182. package/dist/localization/useTranslation.d.ts +38 -6
  183. package/dist/localization/useTranslation.js +56 -6
  184. package/dist/localization/useTranslation.js.map +1 -1
  185. package/dist/localization/useTranslation.mjs +55 -6
  186. package/dist/localization/useTranslation.mjs.map +1 -1
  187. package/dist/theming/useTheme.d.mts +4 -2
  188. package/dist/theming/useTheme.d.ts +4 -2
  189. package/dist/theming/useTheme.js +10 -2
  190. package/dist/theming/useTheme.js.map +1 -1
  191. package/dist/theming/useTheme.mjs +10 -2
  192. package/dist/theming/useTheme.mjs.map +1 -1
  193. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -2938,6 +2938,7 @@ __export(index_exports, {
2938
2938
  ToggleableInput: () => ToggleableInput,
2939
2939
  ToggleableInputUncontrolled: () => ToggleableInputUncontrolled,
2940
2940
  Tooltip: () => Tooltip,
2941
+ TranslationPluralCount: () => TranslationPluralCount,
2941
2942
  VerticalDivider: () => VerticalDivider,
2942
2943
  YearMonthPicker: () => YearMonthPicker,
2943
2944
  YearMonthPickerUncontrolled: () => YearMonthPickerUncontrolled,
@@ -2957,6 +2958,7 @@ __export(index_exports, {
2957
2958
  equalDate: () => equalDate,
2958
2959
  equalSizeGroups: () => equalSizeGroups,
2959
2960
  filterNews: () => filterNews,
2961
+ formTranslation: () => formTranslation,
2960
2962
  formatDate: () => formatDate,
2961
2963
  formatDateTime: () => formatDateTime,
2962
2964
  generateShadingColors: () => generateShadingColors,
@@ -2967,6 +2969,7 @@ __export(index_exports, {
2967
2969
  isDataObjectSelected: () => isDataObjectSelected,
2968
2970
  isInTimeSpan: () => isInTimeSpan,
2969
2971
  localizedNewsSchema: () => localizedNewsSchema,
2972
+ monthTranslation: () => monthTranslation,
2970
2973
  monthsList: () => monthsList,
2971
2974
  newsListSchema: () => newsListSchema,
2972
2975
  newsSchema: () => newsSchema,
@@ -2976,6 +2979,7 @@ __export(index_exports, {
2976
2979
  removeFromTableSelection: () => removeFromTableSelection,
2977
2980
  shadingColorValues: () => shadingColorValues,
2978
2981
  subtractDuration: () => subtractDuration,
2982
+ timeTranslation: () => timeTranslation,
2979
2983
  updatePagination: () => updatePagination,
2980
2984
  useHoverState: () => useHoverState,
2981
2985
  useLanguage: () => useLanguage,
@@ -3301,15 +3305,63 @@ var LanguageProvider = ({ initialLanguage, children }) => {
3301
3305
  };
3302
3306
 
3303
3307
  // src/localization/useTranslation.ts
3304
- var useTranslation = (defaults, translationOverwrite = {}) => {
3305
- const { language: languageProp, translation: overwrite } = translationOverwrite;
3308
+ var TranslationPluralCount = {
3309
+ zero: 0,
3310
+ one: 1,
3311
+ two: 2,
3312
+ few: 3,
3313
+ many: 11,
3314
+ other: -1
3315
+ };
3316
+ var useTranslation = (translations, overwriteTranslation = {}) => {
3317
+ const { language: languageProp, translation: overwrite } = overwriteTranslation;
3306
3318
  const { language: inferredLanguage } = useLanguage();
3307
3319
  const usedLanguage = languageProp ?? inferredLanguage;
3308
- let defaultValues = defaults[usedLanguage];
3309
- if (overwrite && overwrite[usedLanguage]) {
3310
- defaultValues = { ...defaultValues, ...overwrite[usedLanguage] };
3311
- }
3312
- return defaultValues;
3320
+ const usedTranslations = [...translations];
3321
+ if (overwrite) {
3322
+ usedTranslations.push(overwrite);
3323
+ }
3324
+ return (key, options) => {
3325
+ const { count, replacements } = { ...{ count: 0, replacements: {} }, ...options };
3326
+ try {
3327
+ for (let i = translations.length - 1; i >= 0; i--) {
3328
+ const translation = translations[i];
3329
+ const localizedTranslation = translation[usedLanguage];
3330
+ if (!localizedTranslation) {
3331
+ continue;
3332
+ }
3333
+ const value = localizedTranslation[key];
3334
+ if (!value) {
3335
+ continue;
3336
+ }
3337
+ let forProcessing;
3338
+ if (typeof value !== "string") {
3339
+ if (count === TranslationPluralCount.zero && value?.zero) {
3340
+ forProcessing = value.zero;
3341
+ } else if (count === TranslationPluralCount.one && value?.one) {
3342
+ forProcessing = value.one;
3343
+ } else if (count === TranslationPluralCount.two && value?.two) {
3344
+ forProcessing = value.two;
3345
+ } else if (TranslationPluralCount.few <= count && count < TranslationPluralCount.many && value?.few) {
3346
+ forProcessing = value.few;
3347
+ } else if (count > TranslationPluralCount.many && value?.many) {
3348
+ forProcessing = value.many;
3349
+ } else {
3350
+ forProcessing = value.other;
3351
+ }
3352
+ } else {
3353
+ forProcessing = value;
3354
+ }
3355
+ forProcessing = forProcessing.replace(/\{\{(\w+)}}/g, (_, placeholder) => {
3356
+ return replacements[placeholder] ?? `{{key:${placeholder}}}`;
3357
+ });
3358
+ return forProcessing;
3359
+ }
3360
+ } catch (e) {
3361
+ console.error(e);
3362
+ }
3363
+ return `{{${usedLanguage}:${key}}}`;
3364
+ };
3313
3365
  };
3314
3366
 
3315
3367
  // src/util/noop.ts
@@ -4023,16 +4075,80 @@ var DayPickerUncontrolled = ({
4023
4075
  );
4024
4076
  };
4025
4077
 
4026
- // src/components/date/DatePicker.tsx
4027
- var import_jsx_runtime9 = require("react/jsx-runtime");
4028
- var defaultDatePickerTranslation = {
4078
+ // src/localization/defaults/time.ts
4079
+ var monthTranslation = {
4029
4080
  en: {
4030
- today: "Today"
4081
+ january: "January",
4082
+ february: "Febuary",
4083
+ march: "March",
4084
+ april: "April",
4085
+ may: "May",
4086
+ june: "June",
4087
+ july: "July",
4088
+ august: "August",
4089
+ september: "September",
4090
+ october: "October",
4091
+ november: "November",
4092
+ december: "December"
4031
4093
  },
4032
4094
  de: {
4033
- today: "Heute"
4095
+ january: "Januar",
4096
+ february: "Febuar",
4097
+ march: "M\xE4rz",
4098
+ april: "April",
4099
+ may: "Mai",
4100
+ june: "Juni",
4101
+ july: "Juli",
4102
+ august: "August",
4103
+ september: "September",
4104
+ october: "October",
4105
+ november: "November",
4106
+ december: "December"
4034
4107
  }
4035
4108
  };
4109
+ var timeTranslation = {
4110
+ en: {
4111
+ ...monthTranslation.en,
4112
+ century: { one: "Century", other: "Centuries" },
4113
+ decade: { one: "Decade", other: "Decades" },
4114
+ year: { one: "Year", other: "Years" },
4115
+ month: { one: "Month", other: "Months" },
4116
+ day: { one: "Day", other: "Days" },
4117
+ hour: { one: "Hour", other: "Hours" },
4118
+ minute: { one: "Minute", other: "Minutes" },
4119
+ second: { one: "Second", other: "Seconds" },
4120
+ millisecond: { one: "Millisecond", other: "Milliseconds" },
4121
+ microsecond: { one: "Microsecond", other: "Microseconds" },
4122
+ nanosecond: { one: "Nanosecond", other: "Nanoseconds" },
4123
+ yesterday: "Yesterday",
4124
+ today: "Today",
4125
+ tomorrow: "Tomorrow",
4126
+ in: "in",
4127
+ ago: "ago"
4128
+ },
4129
+ de: {
4130
+ ...monthTranslation.de,
4131
+ century: { one: "Jahrhundert", other: "Jahrhunderte" },
4132
+ decade: { one: "Jahrzehnt", other: "Jahrzehnte" },
4133
+ year: { one: "Jahr", other: "Jahre" },
4134
+ month: { one: "Monat", other: "Monate" },
4135
+ day: { one: "Tag", other: "Tage" },
4136
+ hour: { one: "Stunde", other: "Stunden" },
4137
+ minute: { one: "Minute", other: "Minuten" },
4138
+ second: { one: "Sekunde", other: "Sekunden" },
4139
+ millisecond: { one: "Millisekunde", other: "Millisekunden" },
4140
+ microsecond: { one: "Mikrosekunde", other: "Mikrosekunden" },
4141
+ nanosecond: { one: "Nanosekunde", other: "Nanosekunden" },
4142
+ yesterday: "Gestern",
4143
+ today: "Heute",
4144
+ tomorrow: "Morgen",
4145
+ in: "in",
4146
+ ago: "vor"
4147
+ }
4148
+ };
4149
+
4150
+ // src/components/date/DatePicker.tsx
4151
+ var import_jsx_runtime9 = require("react/jsx-runtime");
4036
4152
  var DatePicker = ({
4037
4153
  overwriteTranslation,
4038
4154
  value = /* @__PURE__ */ new Date(),
@@ -4045,7 +4161,7 @@ var DatePicker = ({
4045
4161
  className = ""
4046
4162
  }) => {
4047
4163
  const locale = useLocale();
4048
- const translation = useTranslation(defaultDatePickerTranslation, overwriteTranslation);
4164
+ const translation = useTranslation([timeTranslation], overwriteTranslation);
4049
4165
  const [displayedMonth, setDisplayedMonth] = (0, import_react6.useState)(value);
4050
4166
  const [displayMode, setDisplayMode] = (0, import_react6.useState)(initialDisplay);
4051
4167
  (0, import_react6.useEffect)(() => {
@@ -4128,7 +4244,7 @@ var DatePicker = ({
4128
4244
  newDate.setHours(value.getHours(), value.getMinutes());
4129
4245
  onChange(newDate);
4130
4246
  },
4131
- children: translation.today
4247
+ children: translation("today")
4132
4248
  }
4133
4249
  ) })
4134
4250
  ] })
@@ -4158,42 +4274,14 @@ var DatePickerUncontrolled = ({
4158
4274
  var import_jsx_runtime10 = require("react/jsx-runtime");
4159
4275
  var defaultTimeDisplayTranslations = {
4160
4276
  en: {
4161
- today: "today",
4162
- yesterday: "yesterday",
4163
- tomorrow: "tomorrow",
4164
- inDays: (days) => `in ${days} days`,
4165
- agoDays: (days) => `${days} days ago`,
4166
- january: "January",
4167
- february: "February",
4168
- march: "March",
4169
- april: "April",
4170
- may: "May",
4171
- june: "June",
4172
- july: "July",
4173
- august: "August",
4174
- september: "September",
4175
- october: "October",
4176
- november: "November",
4177
- december: "December"
4277
+ ...timeTranslation.en,
4278
+ inDays: `in {{days}} days`,
4279
+ agoDays: `{{days}} days ago`
4178
4280
  },
4179
4281
  de: {
4180
- today: "heute",
4181
- yesterday: "gestern",
4182
- tomorrow: "morgen",
4183
- inDays: (days) => `in ${days} Tagen`,
4184
- agoDays: (days) => `vor ${days} Tagen`,
4185
- january: "Januar",
4186
- february: "Februar",
4187
- march: "M\xE4rz",
4188
- april: "April",
4189
- may: "Mai",
4190
- june: "Juni",
4191
- july: "Juli",
4192
- august: "August",
4193
- september: "September",
4194
- october: "October",
4195
- november: "November",
4196
- december: "December"
4282
+ ...timeTranslation.de,
4283
+ inDays: `in {{days}} Tagen`,
4284
+ agoDays: `vor {{days}} Tagen`
4197
4285
  }
4198
4286
  };
4199
4287
  var TimeDisplay = ({
@@ -4201,31 +4289,31 @@ var TimeDisplay = ({
4201
4289
  date,
4202
4290
  mode = "daysFromToday"
4203
4291
  }) => {
4204
- const translation = useTranslation(defaultTimeDisplayTranslations, overwriteTranslation);
4292
+ const translation = useTranslation([defaultTimeDisplayTranslations], overwriteTranslation);
4205
4293
  const difference = (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0).valueOf() - new Date(date).setHours(0, 0, 0, 0).valueOf();
4206
4294
  const isBefore = difference > 0;
4207
4295
  const differenceInDays = Math.floor(Math.abs(difference) / (1e3 * 3600 * 24));
4208
4296
  let displayString;
4209
4297
  if (differenceInDays === 0) {
4210
- displayString = translation.today;
4298
+ displayString = translation("today");
4211
4299
  } else if (differenceInDays === 1) {
4212
- displayString = isBefore ? translation.yesterday : translation.tomorrow;
4300
+ displayString = isBefore ? translation("yesterday") : translation("tomorrow");
4213
4301
  } else {
4214
- displayString = isBefore ? translation.agoDays(differenceInDays) : translation.inDays(differenceInDays);
4302
+ displayString = isBefore ? translation("agoDays", { replacements: { days: differenceInDays.toString() } }) : translation("inDays", { replacements: { days: differenceInDays.toString() } });
4215
4303
  }
4216
4304
  const monthToTranslation = {
4217
- 0: translation.january,
4218
- 1: translation.february,
4219
- 2: translation.march,
4220
- 3: translation.april,
4221
- 4: translation.may,
4222
- 5: translation.june,
4223
- 6: translation.july,
4224
- 7: translation.august,
4225
- 8: translation.september,
4226
- 9: translation.october,
4227
- 10: translation.november,
4228
- 11: translation.december
4305
+ 0: translation("january"),
4306
+ 1: translation("february"),
4307
+ 2: translation("march"),
4308
+ 3: translation("april"),
4309
+ 4: translation("may"),
4310
+ 5: translation("june"),
4311
+ 6: translation("july"),
4312
+ 7: translation("august"),
4313
+ 8: translation("september"),
4314
+ 9: translation("october"),
4315
+ 10: translation("november"),
4316
+ 11: translation("december")
4229
4317
  };
4230
4318
  let fullString;
4231
4319
  if (mode === "daysFromToday") {
@@ -4495,6 +4583,108 @@ var Tooltip = ({
4495
4583
 
4496
4584
  // src/components/layout-and-navigation/Overlay.tsx
4497
4585
  var import_lucide_react4 = require("lucide-react");
4586
+
4587
+ // src/localization/defaults/form.ts
4588
+ var formTranslation = {
4589
+ en: {
4590
+ all: "All",
4591
+ back: "Back",
4592
+ cancel: "Cancel",
4593
+ change: "Change",
4594
+ clear: "Clear",
4595
+ close: "Close",
4596
+ confirm: "Confirm",
4597
+ decline: "Decline",
4598
+ delete: "Delete",
4599
+ discard: "Discard",
4600
+ discardChanges: "Discard Changes",
4601
+ done: "Done",
4602
+ edit: "Edit",
4603
+ enterText: "Enter text here",
4604
+ error: "Error",
4605
+ exit: "Exit",
4606
+ fieldRequiredError: "This field is required.",
4607
+ invalidEmailError: "Please enter a valid email address.",
4608
+ less: "Less",
4609
+ loading: "Loading",
4610
+ maxLengthError: "Maximum length exceeded.",
4611
+ minLengthError: "Minimum length not met.",
4612
+ more: "More",
4613
+ next: "Next",
4614
+ no: "No",
4615
+ none: "None",
4616
+ of: "of",
4617
+ optional: "Optional",
4618
+ pleaseWait: "Please wait...",
4619
+ previous: "Previous",
4620
+ remove: "Remove",
4621
+ required: "Required",
4622
+ reset: "Reset",
4623
+ save: "Save",
4624
+ search: "Search",
4625
+ select: "Select",
4626
+ selectOption: "Select an option",
4627
+ show: "Show",
4628
+ showMore: "Show more",
4629
+ showLess: "Show less",
4630
+ submit: "Submit",
4631
+ success: "Success",
4632
+ update: "Update",
4633
+ unsavedChanges: "Unsaved Changes",
4634
+ unsavedChangesSaveQuestion: "Do you want to save your changes?",
4635
+ yes: "Yes"
4636
+ },
4637
+ de: {
4638
+ all: "Alle",
4639
+ back: "Zur\xFCck",
4640
+ cancel: "Abbrechen",
4641
+ change: "\xC4ndern",
4642
+ clear: "L\xF6schen",
4643
+ close: "Schlie\xDFen",
4644
+ confirm: "Best\xE4tigen",
4645
+ decline: "Ablehnen",
4646
+ delete: "L\xF6schen",
4647
+ discard: "Verwerfen",
4648
+ discardChanges: "\xC4nderungen Verwerfen",
4649
+ done: "Fertig",
4650
+ edit: "Bearbeiten",
4651
+ enterText: "Text hier eingeben",
4652
+ error: "Fehler",
4653
+ exit: "Beenden",
4654
+ fieldRequiredError: "Dieses Feld ist erforderlich.",
4655
+ invalidEmailError: "Bitte geben Sie eine g\xFCltige E-Mail-Adresse ein.",
4656
+ less: "Weniger",
4657
+ loading: "L\xE4dt",
4658
+ maxLengthError: "Maximale L\xE4nge \xFCberschritten.",
4659
+ minLengthError: "Mindestl\xE4nge nicht erreicht.",
4660
+ more: "Mehr",
4661
+ next: "Weiter",
4662
+ no: "Nein",
4663
+ none: "Nichts",
4664
+ of: "von",
4665
+ optional: "Optional",
4666
+ pleaseWait: "Bitte warten...",
4667
+ previous: "Vorherige",
4668
+ remove: "Entfernen",
4669
+ required: "Erforderlich",
4670
+ reset: "Zur\xFCcksetzen",
4671
+ save: "Speichern",
4672
+ search: "Suche",
4673
+ select: "Select",
4674
+ selectOption: "Option ausw\xE4hlen",
4675
+ show: "Anzeigen",
4676
+ showMore: "Mehr anzeigen",
4677
+ showLess: "Weniger anzeigen",
4678
+ submit: "Abschicken",
4679
+ success: "Erfolg",
4680
+ update: "Update",
4681
+ unsavedChanges: "Ungespeicherte \xC4nderungen",
4682
+ unsavedChangesSaveQuestion: "M\xF6chtest du die \xC4nderungen speichern?",
4683
+ yes: "Ja"
4684
+ }
4685
+ };
4686
+
4687
+ // src/components/layout-and-navigation/Overlay.tsx
4498
4688
  var import_jsx_runtime13 = require("react/jsx-runtime");
4499
4689
  var Overlay = ({
4500
4690
  children,
@@ -4524,10 +4714,10 @@ var Overlay = ({
4524
4714
  var overlayStack = [];
4525
4715
  var defaultModalHeaderTranslation = {
4526
4716
  en: {
4527
- close: "Close"
4717
+ ...formTranslation.en
4528
4718
  },
4529
4719
  de: {
4530
- close: "Schlie\xDFen"
4720
+ ...formTranslation.de
4531
4721
  }
4532
4722
  };
4533
4723
  var OverlayHeader = ({
@@ -4538,7 +4728,7 @@ var OverlayHeader = ({
4538
4728
  description,
4539
4729
  descriptionText = ""
4540
4730
  }) => {
4541
- const translation = useTranslation(defaultModalHeaderTranslation, overwriteTranslation);
4731
+ const translation = useTranslation([defaultModalHeaderTranslation], overwriteTranslation);
4542
4732
  const hasTitleRow = !!title || !!titleText || !!onClose;
4543
4733
  const titleRow = /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "row justify-between items-start gap-x-8", children: [
4544
4734
  title ?? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
@@ -4550,7 +4740,7 @@ var OverlayHeader = ({
4550
4740
  children: titleText
4551
4741
  }
4552
4742
  ),
4553
- !!onClose && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Tooltip, { tooltip: translation.close, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(IconButton, { color: "neutral", size: "small", onClick: onClose, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react4.X, { className: "w-full h-full" }) }) })
4743
+ !!onClose && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Tooltip, { tooltip: translation("close"), children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(IconButton, { color: "neutral", size: "small", onClick: onClose, children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_lucide_react4.X, { className: "w-full h-full" }) }) })
4554
4744
  ] });
4555
4745
  return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "col", children: [
4556
4746
  hasTitleRow && titleRow,
@@ -4701,16 +4891,6 @@ var Dialog = ({
4701
4891
 
4702
4892
  // src/components/dialogs/ConfirmDialog.tsx
4703
4893
  var import_jsx_runtime14 = require("react/jsx-runtime");
4704
- var defaultConfirmDialogTranslation = {
4705
- en: {
4706
- confirm: "Confirm",
4707
- decline: "Decline"
4708
- },
4709
- de: {
4710
- confirm: "Best\xE4tigen",
4711
- decline: "Ablehnen"
4712
- }
4713
- };
4714
4894
  var ConfirmDialog = ({
4715
4895
  overwriteTranslation,
4716
4896
  children,
@@ -4721,7 +4901,7 @@ var ConfirmDialog = ({
4721
4901
  className,
4722
4902
  ...restProps
4723
4903
  }) => {
4724
- const translation = useTranslation(defaultConfirmDialogTranslation, overwriteTranslation);
4904
+ const translation = useTranslation([formTranslation], overwriteTranslation);
4725
4905
  const mapping = {
4726
4906
  neutral: "primary",
4727
4907
  negative: "negative",
@@ -4737,7 +4917,7 @@ var ConfirmDialog = ({
4737
4917
  color: buttonOverwrites?.[0].color ?? "negative",
4738
4918
  onClick: onDecline,
4739
4919
  disabled: buttonOverwrites?.[0].disabled ?? false,
4740
- children: buttonOverwrites?.[0].text ?? translation.decline
4920
+ children: buttonOverwrites?.[0].text ?? translation("decline")
4741
4921
  }
4742
4922
  ),
4743
4923
  /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
@@ -4747,7 +4927,7 @@ var ConfirmDialog = ({
4747
4927
  color: buttonOverwrites?.[1].color ?? mapping[confirmType],
4748
4928
  onClick: onConfirm,
4749
4929
  disabled: buttonOverwrites?.[1].disabled ?? false,
4750
- children: buttonOverwrites?.[1].text ?? translation.confirm
4930
+ children: buttonOverwrites?.[1].text ?? translation("confirm")
4751
4931
  }
4752
4932
  )
4753
4933
  ] })
@@ -5923,21 +6103,13 @@ var FAQSection = ({
5923
6103
  var import_lucide_react7 = require("lucide-react");
5924
6104
  var import_clsx21 = __toESM(require("clsx"));
5925
6105
  var import_jsx_runtime25 = require("react/jsx-runtime");
5926
- var defaultPaginationTranslations = {
5927
- en: {
5928
- of: "of"
5929
- },
5930
- de: {
5931
- of: "von"
5932
- }
5933
- };
5934
6106
  var Pagination = ({
5935
6107
  overwriteTranslation,
5936
6108
  page,
5937
6109
  numberOfPages,
5938
6110
  onPageChanged
5939
6111
  }) => {
5940
- const translation = useTranslation(defaultPaginationTranslations, overwriteTranslation);
6112
+ const translation = useTranslation([formTranslation], overwriteTranslation);
5941
6113
  const changePage = (page2) => {
5942
6114
  onPageChanged(page2);
5943
6115
  };
@@ -5949,7 +6121,7 @@ var Pagination = ({
5949
6121
  /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("button", { onClick: () => changePage(page - 1), disabled: onFirstPage, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react7.ChevronLeft, { className: (0, import_clsx21.default)({ "opacity-30": onFirstPage }) }) }),
5950
6122
  /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)("div", { className: "min-w-[80px] justify-center mx-2", children: [
5951
6123
  /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "select-none text-right flex-1", children: noPages ? 0 : page + 1 }),
5952
- /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "select-none mx-2", children: translation.of }),
6124
+ /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "select-none mx-2", children: translation("of") }),
5953
6125
  /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("span", { className: "select-none text-left flex-1", children: numberOfPages })
5954
6126
  ] }),
5955
6127
  /* @__PURE__ */ (0, import_jsx_runtime25.jsx)("button", { onClick: () => changePage(page + 1), disabled: onLastPage || noPages, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(import_lucide_react7.ChevronRight, { className: (0, import_clsx21.default)({ "opacity-30": onLastPage }) }) }),
@@ -6194,11 +6366,9 @@ var useSearch = ({
6194
6366
  var import_jsx_runtime28 = require("react/jsx-runtime");
6195
6367
  var defaultSearchableListTranslation = {
6196
6368
  en: {
6197
- search: "Search",
6198
6369
  nothingFound: "Nothing found"
6199
6370
  },
6200
6371
  de: {
6201
- search: "Suche",
6202
6372
  nothingFound: "Nichts gefunden"
6203
6373
  }
6204
6374
  };
@@ -6213,7 +6383,7 @@ var SearchableList = ({
6213
6383
  className,
6214
6384
  resultListClassName
6215
6385
  }) => {
6216
- const translation = useTranslation(defaultSearchableListTranslation, overwriteTranslation);
6386
+ const translation = useTranslation([defaultSearchableListTranslation, formTranslation], overwriteTranslation);
6217
6387
  const { result, hasResult, search, setSearch } = useSearch({ list, initialSearch, searchMapping });
6218
6388
  return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: (0, import_clsx24.default)("col gap-y-2", className), children: [
6219
6389
  list.length > minimumItemsForSearch && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "row justify-between gap-x-4 items-center", children: [
@@ -6222,14 +6392,14 @@ var SearchableList = ({
6222
6392
  {
6223
6393
  value: search,
6224
6394
  onChangeText: setSearch,
6225
- placeholder: translation.search,
6395
+ placeholder: translation("search"),
6226
6396
  autoFocus,
6227
6397
  className: "w-full"
6228
6398
  }
6229
6399
  ),
6230
6400
  /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(IconButton, { color: "neutral", disabled: search.length === 0, children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(import_lucide_react8.Search, { className: "w-full h-full" }) })
6231
6401
  ] }),
6232
- hasResult ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: (0, import_clsx24.default)("col gap-y-1", resultListClassName), children: result.map(itemMapper) }) : /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "row text-description py-2 px-2", children: translation.nothingFound })
6402
+ hasResult ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: (0, import_clsx24.default)("col gap-y-1", resultListClassName), children: result.map(itemMapper) }) : /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "row text-description py-2 px-2", children: translation("nothingFound") })
6233
6403
  ] });
6234
6404
  };
6235
6405
 
@@ -6238,18 +6408,6 @@ var import_lucide_react9 = require("lucide-react");
6238
6408
  var import_clsx25 = __toESM(require("clsx"));
6239
6409
  var import_react15 = require("react");
6240
6410
  var import_jsx_runtime29 = require("react/jsx-runtime");
6241
- var defaultStepperBarTranslation = {
6242
- en: {
6243
- back: "Back",
6244
- next: "Next",
6245
- confirm: "Create"
6246
- },
6247
- de: {
6248
- back: "Zur\xFCck",
6249
- next: "N\xE4chster",
6250
- confirm: "Fertig"
6251
- }
6252
- };
6253
6411
  var defaultState = {
6254
6412
  currentStep: 0,
6255
6413
  seenSteps: /* @__PURE__ */ new Set([0])
@@ -6265,7 +6423,7 @@ var StepperBar = ({
6265
6423
  showDots = true,
6266
6424
  className = ""
6267
6425
  }) => {
6268
- const translation = useTranslation(defaultStepperBarTranslation, overwriteTranslation);
6426
+ const translation = useTranslation([formTranslation], overwriteTranslation);
6269
6427
  const dots = range(0, numberOfSteps);
6270
6428
  const { currentStep, seenSteps } = state ?? defaultState;
6271
6429
  const update = (newStep) => {
@@ -6287,7 +6445,7 @@ var StepperBar = ({
6287
6445
  className: "row gap-x-1 items-center justify-center",
6288
6446
  children: [
6289
6447
  /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react9.ChevronLeft, { size: 14 }),
6290
- translation.back
6448
+ translation("back")
6291
6449
  ]
6292
6450
  }
6293
6451
  ) }),
@@ -6320,7 +6478,7 @@ var StepperBar = ({
6320
6478
  className: "row gap-x-1 items-center justify-center",
6321
6479
  disabled: disabledSteps.has(currentStep),
6322
6480
  children: [
6323
- translation.next,
6481
+ translation("next"),
6324
6482
  /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react9.ChevronRight, { size: 14 })
6325
6483
  ]
6326
6484
  }
@@ -6333,7 +6491,7 @@ var StepperBar = ({
6333
6491
  className: "row gap-x-1 items-center justify-center",
6334
6492
  children: [
6335
6493
  /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_lucide_react9.Check, { size: 14 }),
6336
- finishText ?? translation.confirm
6494
+ finishText ?? translation("confirm")
6337
6495
  ]
6338
6496
  }
6339
6497
  ) })
@@ -6697,14 +6855,6 @@ var SortButton = ({
6697
6855
  // src/components/layout-and-navigation/TextImage.tsx
6698
6856
  var import_clsx28 = __toESM(require("clsx"));
6699
6857
  var import_jsx_runtime32 = require("react/jsx-runtime");
6700
- var defaultTextImageTranslation = {
6701
- de: {
6702
- showMore: "Mehr anzeigen"
6703
- },
6704
- en: {
6705
- showMore: "Show more"
6706
- }
6707
- };
6708
6858
  var TextImage = ({
6709
6859
  overwriteTranslation,
6710
6860
  title,
@@ -6716,11 +6866,11 @@ var TextImage = ({
6716
6866
  contentClassName = "",
6717
6867
  className = ""
6718
6868
  }) => {
6719
- const translation = useTranslation(defaultTextImageTranslation, overwriteTranslation);
6869
+ const translation = useTranslation([formTranslation], overwriteTranslation);
6720
6870
  const chipColorMapping = {
6721
- primary: "text-text-image-primary-background bg-text-text-image-primary-text",
6722
- secondary: "text-text-image-secondary-background bg-text-text-image-secondary-text",
6723
- dark: "text-text-image-dark-background bg-text-text-image-dark-text"
6871
+ primary: "text-text-image-primary-background bg-text-image-primary-text",
6872
+ secondary: "text-text-image-secondary-background bg-text-image-secondary-text",
6873
+ dark: "text-text-image-dark-background bg-text-image-dark-text"
6724
6874
  };
6725
6875
  const colorMapping = {
6726
6876
  primary: "text-text-image-primary-text bg-linear-to-r from-30% from-text-image-primary-background to-text-image-primary-background/55",
@@ -6740,12 +6890,12 @@ var TextImage = ({
6740
6890
  {
6741
6891
  className: (0, import_clsx28.default)(`col px-6 py-12 rounded-2xl h-full`, colorMapping[color], contentClassName),
6742
6892
  children: [
6743
- badge && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: (0, import_clsx28.default)(`chip-full bg-white mb-2 py-2 px-4 w-fit`, chipColorMapping[color]), children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-lg font-bold", children: badge }) }),
6744
- /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "col gap-y-1 text-white overflow-hidden", children: [
6893
+ badge && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: (0, import_clsx28.default)(`chip-full mb-2 py-2 px-4 w-fit`, chipColorMapping[color]), children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-lg font-bold", children: badge }) }),
6894
+ /* @__PURE__ */ (0, import_jsx_runtime32.jsxs)("div", { className: "col gap-y-1 overflow-hidden", children: [
6745
6895
  /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "textstyle-title-xl", children: title }),
6746
6896
  /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("span", { className: "text-ellipsis overflow-hidden", children: description })
6747
6897
  ] }),
6748
- onShowMoreClicked && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "row mt-2 text-white underline", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("button", { onClick: onShowMoreClicked, children: translation.showMore }) })
6898
+ onShowMoreClicked && /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("div", { className: "row mt-2 underline", children: /* @__PURE__ */ (0, import_jsx_runtime32.jsx)("button", { onClick: onShowMoreClicked, children: translation("showMore") }) })
6749
6899
  ]
6750
6900
  }
6751
6901
  )
@@ -6823,10 +6973,10 @@ var ErrorComponent = ({
6823
6973
  errorText,
6824
6974
  classname
6825
6975
  }) => {
6826
- const translation = useTranslation(defaultErrorComponentTranslation, overwriteTranslation);
6976
+ const translation = useTranslation([defaultErrorComponentTranslation], overwriteTranslation);
6827
6977
  return /* @__PURE__ */ (0, import_jsx_runtime34.jsxs)("div", { className: (0, import_clsx29.default)("col items-center justify-center gap-y-4 w-full h-24", classname), children: [
6828
6978
  /* @__PURE__ */ (0, import_jsx_runtime34.jsx)(import_lucide_react12.AlertOctagon, { size: 64, className: "text-warning" }),
6829
- errorText ?? `${translation.errorOccurred} :(`
6979
+ errorText ?? `${translation("errorOccurred")} :(`
6830
6980
  ] });
6831
6981
  };
6832
6982
 
@@ -6836,23 +6986,15 @@ var import_react18 = require("react");
6836
6986
  // src/components/loading-states/LoadingAnimation.tsx
6837
6987
  var import_clsx30 = __toESM(require("clsx"));
6838
6988
  var import_jsx_runtime35 = require("react/jsx-runtime");
6839
- var defaultLoadingAnimationTranslation = {
6840
- en: {
6841
- loading: "Loading data"
6842
- },
6843
- de: {
6844
- loading: "Lade Daten"
6845
- }
6846
- };
6847
6989
  var LoadingAnimation = ({
6848
6990
  overwriteTranslation,
6849
6991
  loadingText,
6850
6992
  classname
6851
6993
  }) => {
6852
- const translation = useTranslation(defaultLoadingAnimationTranslation, overwriteTranslation);
6994
+ const translation = useTranslation([formTranslation], overwriteTranslation);
6853
6995
  return /* @__PURE__ */ (0, import_jsx_runtime35.jsxs)("div", { className: (0, import_clsx30.default)("col items-center justify-center w-full h-24", classname), children: [
6854
6996
  /* @__PURE__ */ (0, import_jsx_runtime35.jsx)(Helpwave, { animate: "loading" }),
6855
- loadingText ?? `${translation.loading}...`
6997
+ loadingText ?? `${translation("loading")}...`
6856
6998
  ] });
6857
6999
  };
6858
7000
 
@@ -6954,18 +7096,6 @@ var ProgressIndicator = ({
6954
7096
  // src/components/modals/ConfirmModal.tsx
6955
7097
  var import_clsx32 = __toESM(require("clsx"));
6956
7098
  var import_jsx_runtime39 = require("react/jsx-runtime");
6957
- var defaultConfirmDialogTranslation2 = {
6958
- en: {
6959
- confirm: "Confirm",
6960
- cancel: "Cancel",
6961
- decline: "Decline"
6962
- },
6963
- de: {
6964
- confirm: "Best\xE4tigen",
6965
- cancel: "Abbrechen",
6966
- decline: "Ablehnen"
6967
- }
6968
- };
6969
7099
  var ConfirmModal = ({
6970
7100
  overwriteTranslation,
6971
7101
  children,
@@ -6977,7 +7107,7 @@ var ConfirmModal = ({
6977
7107
  className,
6978
7108
  ...restProps
6979
7109
  }) => {
6980
- const translation = useTranslation(defaultConfirmDialogTranslation2, overwriteTranslation);
7110
+ const translation = useTranslation([formTranslation], overwriteTranslation);
6981
7111
  const mapping = {
6982
7112
  neutral: "neutral",
6983
7113
  negative: "negative",
@@ -6993,7 +7123,7 @@ var ConfirmModal = ({
6993
7123
  color: buttonOverwrites?.[0].color ?? "neutral",
6994
7124
  onClick: onCancel,
6995
7125
  disabled: buttonOverwrites?.[0].disabled ?? false,
6996
- children: buttonOverwrites?.[0].text ?? translation.cancel
7126
+ children: buttonOverwrites?.[0].text ?? translation("cancel")
6997
7127
  }
6998
7128
  ),
6999
7129
  onDecline && /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
@@ -7002,7 +7132,7 @@ var ConfirmModal = ({
7002
7132
  color: buttonOverwrites?.[1].color ?? "negative",
7003
7133
  onClick: onDecline,
7004
7134
  disabled: buttonOverwrites?.[1].disabled ?? false,
7005
- children: buttonOverwrites?.[1].text ?? translation.decline
7135
+ children: buttonOverwrites?.[1].text ?? translation("decline")
7006
7136
  }
7007
7137
  ),
7008
7138
  /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
@@ -7012,7 +7142,7 @@ var ConfirmModal = ({
7012
7142
  color: buttonOverwrites?.[2].color ?? mapping[confirmType],
7013
7143
  onClick: onConfirm,
7014
7144
  disabled: buttonOverwrites?.[2].disabled ?? false,
7015
- children: buttonOverwrites?.[2].text ?? translation.confirm
7145
+ children: buttonOverwrites?.[2].text ?? translation("confirm")
7016
7146
  }
7017
7147
  )
7018
7148
  ] })
@@ -7021,22 +7151,6 @@ var ConfirmModal = ({
7021
7151
 
7022
7152
  // src/components/modals/DiscardChangesModal.tsx
7023
7153
  var import_jsx_runtime40 = require("react/jsx-runtime");
7024
- var defaultDiscardChangesModalTranslation = {
7025
- en: {
7026
- save: "Save",
7027
- cancel: "Cancel",
7028
- dontSave: "Don't save",
7029
- title: "Unsaved Changes",
7030
- description: "Do you want to save your changes?"
7031
- },
7032
- de: {
7033
- save: "Speichern",
7034
- cancel: "Abbrechen",
7035
- dontSave: "Nicht Speichern",
7036
- title: "Ungespeicherte \xC4nderungen",
7037
- description: "M\xF6chtest du die \xC4nderungen speichern?"
7038
- }
7039
- };
7040
7154
  var DiscardChangesModal = ({
7041
7155
  overwriteTranslation,
7042
7156
  children,
@@ -7046,19 +7160,19 @@ var DiscardChangesModal = ({
7046
7160
  headerProps,
7047
7161
  ...modalProps
7048
7162
  }) => {
7049
- const translation = useTranslation(defaultDiscardChangesModalTranslation, overwriteTranslation);
7163
+ const translation = useTranslation([formTranslation], overwriteTranslation);
7050
7164
  return /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(
7051
7165
  ConfirmModal,
7052
7166
  {
7053
7167
  headerProps: {
7054
7168
  ...headerProps,
7055
- titleText: headerProps?.titleText ?? translation.title,
7056
- descriptionText: headerProps?.descriptionText ?? translation.description
7169
+ titleText: headerProps?.titleText ?? translation("unsavedChanges"),
7170
+ descriptionText: headerProps?.descriptionText ?? translation("unsavedChangesSaveQuestion")
7057
7171
  },
7058
7172
  onConfirm: onSave,
7059
7173
  onCancel,
7060
7174
  onDecline: onDontSave,
7061
- buttonOverwrites: [{ text: translation.cancel }, { text: translation.dontSave }, { text: translation.save }],
7175
+ buttonOverwrites: [{ text: translation("cancel") }, { text: translation("discardChanges") }, { text: translation("save") }],
7062
7176
  ...modalProps,
7063
7177
  children
7064
7178
  }
@@ -7157,7 +7271,7 @@ var Select = ({
7157
7271
  "div",
7158
7272
  {
7159
7273
  ref: menuRef,
7160
- className: "absolute w-full z-10 rounded-lg mt-0.5 bg-menu-background text-menu-text shadow-around-md max-h-[500px] overflow-y-auto p-2",
7274
+ className: "absolute w-full z-10 rounded-lg mt-0.5 bg-menu-background text-menu-text shadow-around-lg max-h-[500px] overflow-y-auto p-2",
7161
7275
  children: /* @__PURE__ */ (0, import_jsx_runtime42.jsx)(
7162
7276
  SearchableList,
7163
7277
  {
@@ -7218,14 +7332,14 @@ var SelectUncontrolled = ({
7218
7332
  var import_jsx_runtime43 = require("react/jsx-runtime");
7219
7333
  var defaultLanguageModalTranslation = {
7220
7334
  en: {
7221
- title: "Language",
7222
- message: "Choose your language",
7335
+ language: "Language",
7336
+ chooseLanguage: "Choose your language",
7223
7337
  done: "Done",
7224
7338
  ...LanguageUtil.languagesLocalNames
7225
7339
  },
7226
7340
  de: {
7227
- title: "Sprache",
7228
- message: "W\xE4hle deine bevorzugte Sprache",
7341
+ language: "Sprache",
7342
+ chooseLanguage: "W\xE4hle deine bevorzugte Sprache",
7229
7343
  done: "Fertig",
7230
7344
  ...LanguageUtil.languagesLocalNames
7231
7345
  }
@@ -7237,14 +7351,14 @@ var LanguageModal = ({
7237
7351
  ...modalProps
7238
7352
  }) => {
7239
7353
  const { language, setLanguage } = useLanguage();
7240
- const translation = useTranslation(defaultLanguageModalTranslation, overwriteTranslation);
7354
+ const translation = useTranslation([defaultLanguageModalTranslation], overwriteTranslation);
7241
7355
  return /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(
7242
7356
  Modal,
7243
7357
  {
7244
7358
  headerProps: {
7245
7359
  ...headerProps,
7246
- titleText: headerProps?.titleText ?? translation.title,
7247
- descriptionText: headerProps?.descriptionText ?? translation.message
7360
+ titleText: headerProps?.titleText ?? translation("language"),
7361
+ descriptionText: headerProps?.descriptionText ?? translation("chooseLanguage")
7248
7362
  },
7249
7363
  onClose,
7250
7364
  ...modalProps,
@@ -7258,7 +7372,7 @@ var LanguageModal = ({
7258
7372
  onChange: (language2) => setLanguage(language2)
7259
7373
  }
7260
7374
  ),
7261
- /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: "row mt-3 gap-x-4 justify-end", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(SolidButton, { autoFocus: true, color: "positive", onClick: onClose, children: translation.done }) })
7375
+ /* @__PURE__ */ (0, import_jsx_runtime43.jsx)("div", { className: "row mt-3 gap-x-4 justify-end", children: /* @__PURE__ */ (0, import_jsx_runtime43.jsx)(SolidButton, { autoFocus: true, color: "positive", onClick: onClose, children: translation("done") }) })
7262
7376
  ] })
7263
7377
  }
7264
7378
  );
@@ -7271,11 +7385,19 @@ var themes = ["light", "dark"];
7271
7385
  var defaultThemeTypeTranslation = {
7272
7386
  en: {
7273
7387
  dark: "Dark",
7274
- light: "Light"
7388
+ light: "Light",
7389
+ theme: {
7390
+ one: "Theme",
7391
+ other: "Themes"
7392
+ }
7275
7393
  },
7276
7394
  de: {
7277
7395
  dark: "Dunkel",
7278
- light: "Hell"
7396
+ light: "Hell",
7397
+ theme: {
7398
+ one: "Farbschema",
7399
+ other: "Farbschemas"
7400
+ }
7279
7401
  }
7280
7402
  };
7281
7403
  var ThemeUtil = {
@@ -7303,18 +7425,12 @@ var useTheme = () => (0, import_react21.useContext)(ThemeContext);
7303
7425
 
7304
7426
  // src/components/modals/ThemeModal.tsx
7305
7427
  var import_jsx_runtime45 = require("react/jsx-runtime");
7306
- var defaultConfirmDialogTranslation3 = {
7428
+ var defaultConfirmDialogTranslation = {
7307
7429
  en: {
7308
- title: "Theme",
7309
- message: "Choose your preferred theme",
7310
- done: "Done",
7311
- ...ThemeUtil.translation.en
7430
+ chooseTheme: "Choose your preferred theme"
7312
7431
  },
7313
7432
  de: {
7314
- title: "Farbschema",
7315
- message: "W\xE4hle dein bevorzugtes Farbschema",
7316
- done: "Fertig",
7317
- ...ThemeUtil.translation.en
7433
+ chooseTheme: "W\xE4hle dein bevorzugtes Farbschema"
7318
7434
  }
7319
7435
  };
7320
7436
  var ThemeModal = ({
@@ -7324,14 +7440,14 @@ var ThemeModal = ({
7324
7440
  ...modalProps
7325
7441
  }) => {
7326
7442
  const { theme, setTheme } = useTheme();
7327
- const translation = useTranslation(defaultConfirmDialogTranslation3, overwriteTranslation);
7443
+ const translation = useTranslation([defaultConfirmDialogTranslation, formTranslation, ThemeUtil.translation], overwriteTranslation);
7328
7444
  return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
7329
7445
  Modal,
7330
7446
  {
7331
7447
  headerProps: {
7332
7448
  ...headerProps,
7333
- titleText: headerProps?.titleText ?? translation.title,
7334
- descriptionText: headerProps?.descriptionText ?? translation.message
7449
+ titleText: headerProps?.titleText ?? translation("theme"),
7450
+ descriptionText: headerProps?.descriptionText ?? translation("chooseTheme")
7335
7451
  },
7336
7452
  onClose,
7337
7453
  ...modalProps,
@@ -7345,7 +7461,7 @@ var ThemeModal = ({
7345
7461
  onChange: (theme2) => setTheme(theme2)
7346
7462
  }
7347
7463
  ),
7348
- /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: "row mt-3 gap-x-4 justify-end", children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(SolidButton, { autoFocus: true, color: "positive", onClick: onClose, children: translation.done }) })
7464
+ /* @__PURE__ */ (0, import_jsx_runtime45.jsx)("div", { className: "row mt-3 gap-x-4 justify-end", children: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(SolidButton, { autoFocus: true, color: "positive", onClick: onClose, children: translation("done") }) })
7349
7465
  ] })
7350
7466
  }
7351
7467
  );
@@ -7358,14 +7474,6 @@ var import_lucide_react15 = require("lucide-react");
7358
7474
  var import_lucide_react14 = require("lucide-react");
7359
7475
  var import_clsx34 = __toESM(require("clsx"));
7360
7476
  var import_jsx_runtime46 = require("react/jsx-runtime");
7361
- var defaultPropertyBaseTranslation = {
7362
- en: {
7363
- remove: "Remove"
7364
- },
7365
- de: {
7366
- remove: "Entfernen"
7367
- }
7368
- };
7369
7477
  var PropertyBase = ({
7370
7478
  overwriteTranslation,
7371
7479
  name,
@@ -7377,7 +7485,7 @@ var PropertyBase = ({
7377
7485
  onRemove,
7378
7486
  className = ""
7379
7487
  }) => {
7380
- const translation = useTranslation(defaultPropertyBaseTranslation, overwriteTranslation);
7488
+ const translation = useTranslation([formTranslation], overwriteTranslation);
7381
7489
  const requiredAndNoValue = softRequired && !hasValue;
7382
7490
  return /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)("div", { className: (0, import_clsx34.default)("row gap-x-0 group", className), children: [
7383
7491
  /* @__PURE__ */ (0, import_jsx_runtime46.jsxs)(
@@ -7410,7 +7518,7 @@ var PropertyBase = ({
7410
7518
  color: "negative",
7411
7519
  className: (0, import_clsx34.default)("pr-4 items-center", { "!text-transparent": !hasValue || readOnly }),
7412
7520
  disabled: !hasValue || readOnly,
7413
- children: translation.remove
7521
+ children: translation("remove")
7414
7522
  }
7415
7523
  )
7416
7524
  ]
@@ -7421,16 +7529,6 @@ var PropertyBase = ({
7421
7529
 
7422
7530
  // src/components/properties/CheckboxProperty.tsx
7423
7531
  var import_jsx_runtime47 = require("react/jsx-runtime");
7424
- var defaultCheckboxPropertyTranslation = {
7425
- en: {
7426
- yes: "Yes",
7427
- no: "No"
7428
- },
7429
- de: {
7430
- yes: "Ja",
7431
- no: "Nein"
7432
- }
7433
- };
7434
7532
  var CheckboxProperty = ({
7435
7533
  overwriteTranslation,
7436
7534
  value,
@@ -7438,7 +7536,7 @@ var CheckboxProperty = ({
7438
7536
  readOnly,
7439
7537
  ...baseProps
7440
7538
  }) => {
7441
- const translation = useTranslation(defaultCheckboxPropertyTranslation, overwriteTranslation);
7539
+ const translation = useTranslation([formTranslation], overwriteTranslation);
7442
7540
  return /* @__PURE__ */ (0, import_jsx_runtime47.jsx)(
7443
7541
  PropertyBase,
7444
7542
  {
@@ -7452,7 +7550,7 @@ var CheckboxProperty = ({
7452
7550
  checked: value ?? true,
7453
7551
  disabled: readOnly,
7454
7552
  onChange,
7455
- label: { name: `${translation.yes}/${translation.no}`, labelType: "labelMedium" }
7553
+ label: { name: `${translation("yes")}/${translation("no")}`, labelType: "labelMedium" }
7456
7554
  }
7457
7555
  ) })
7458
7556
  }
@@ -7519,14 +7617,10 @@ var import_clsx36 = __toESM(require("clsx"));
7519
7617
  var import_jsx_runtime49 = require("react/jsx-runtime");
7520
7618
  var defaultMultiSelectTranslation = {
7521
7619
  en: {
7522
- select: "Select",
7523
- search: "Search",
7524
- selected: "selected"
7620
+ selected: `{{amount}} selected`
7525
7621
  },
7526
7622
  de: {
7527
- select: "Ausw\xE4hlen",
7528
- search: "Suche",
7529
- selected: "ausgew\xE4hlt"
7623
+ selected: `{{amount}} ausgew\xE4hlt`
7530
7624
  }
7531
7625
  };
7532
7626
  var MultiSelect = ({
@@ -7541,7 +7635,7 @@ var MultiSelect = ({
7541
7635
  useChipDisplay = false,
7542
7636
  className = ""
7543
7637
  }) => {
7544
- const translation = useTranslation(defaultMultiSelectTranslation, overwriteTranslation);
7638
+ const translation = useTranslation([formTranslation, defaultMultiSelectTranslation], overwriteTranslation);
7545
7639
  const triggerRef = (0, import_react22.useRef)(null);
7546
7640
  const menuRef = (0, import_react22.useRef)(null);
7547
7641
  const [isOpen, setIsOpen] = (0, import_react22.useState)(false);
@@ -7574,8 +7668,8 @@ var MultiSelect = ({
7574
7668
  onClick: () => setIsOpen(!isOpen),
7575
7669
  disabled: isDisabled,
7576
7670
  children: [
7577
- !isShowingHint && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "font-semibold text-menu-text", children: selectedDisplayOverwrite ?? (useChipDisplay && selectedItems ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(ChipList, { list: selectedItems.map((value) => ({ children: value.label })) }) : `${selectedItems.length} ${translation.selected}`) }),
7578
- isShowingHint && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "textstyle-description", children: hintText ?? translation.select }),
7671
+ !isShowingHint && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "font-semibold text-menu-text", children: selectedDisplayOverwrite ?? (useChipDisplay && selectedItems ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(ChipList, { list: selectedItems.map((value) => ({ children: value.label })) }) : translation("selected", { replacements: { amount: selectedItems.length.toString() } })) }),
7672
+ isShowingHint && /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("span", { className: "textstyle-description", children: hintText ?? translation("select") }),
7579
7673
  isOpen ? /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react17.ChevronUp, { size: 24, className: "min-w-6" }) : /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react17.ChevronDown, { className: "min-w-6" })
7580
7674
  ]
7581
7675
  }
@@ -7584,7 +7678,7 @@ var MultiSelect = ({
7584
7678
  "div",
7585
7679
  {
7586
7680
  ref: menuRef,
7587
- className: "absolute w-full z-10 rounded-lg mt-0.5 bg-menu-background text-menu-text shadow-around-md max-h-[500px] overflow-y-auto p-2",
7681
+ className: "absolute w-full z-10 rounded-lg mt-0.5 bg-menu-background text-menu-text shadow-around-lg max-h-[500px] overflow-y-auto p-2",
7588
7682
  children: [
7589
7683
  /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
7590
7684
  SearchableList,
@@ -7625,7 +7719,7 @@ var MultiSelect = ({
7625
7719
  })));
7626
7720
  },
7627
7721
  disabled: options.every((value) => value.selected || value.disabled),
7628
- children: "All"
7722
+ children: translation("all")
7629
7723
  }
7630
7724
  ),
7631
7725
  /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
@@ -7639,7 +7733,7 @@ var MultiSelect = ({
7639
7733
  selected: false
7640
7734
  })));
7641
7735
  },
7642
- children: "None"
7736
+ children: translation("none")
7643
7737
  }
7644
7738
  )
7645
7739
  ] }),
@@ -7675,14 +7769,6 @@ var MultiSelectUncontrolled = ({
7675
7769
 
7676
7770
  // src/components/properties/MultiSelectProperty.tsx
7677
7771
  var import_jsx_runtime50 = require("react/jsx-runtime");
7678
- var defaultMultiSelectPropertyTranslation = {
7679
- en: {
7680
- select: "Select"
7681
- },
7682
- de: {
7683
- select: "Ausw\xE4hlen"
7684
- }
7685
- };
7686
7772
  var MultiSelectProperty = ({
7687
7773
  overwriteTranslation,
7688
7774
  options,
@@ -7692,7 +7778,7 @@ var MultiSelectProperty = ({
7692
7778
  onRemove,
7693
7779
  ...multiSelectProps
7694
7780
  }) => {
7695
- const translation = useTranslation(defaultMultiSelectPropertyTranslation, overwriteTranslation);
7781
+ const translation = useTranslation([formTranslation], overwriteTranslation);
7696
7782
  const hasValue = options.some((value) => value.selected);
7697
7783
  return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
7698
7784
  PropertyBase,
@@ -7715,7 +7801,7 @@ var MultiSelectProperty = ({
7715
7801
  options,
7716
7802
  isDisabled: readOnly,
7717
7803
  useChipDisplay: true,
7718
- hintText: `${translation.select}...`
7804
+ hintText: `${translation("select")}...`
7719
7805
  }
7720
7806
  )
7721
7807
  }
@@ -7746,7 +7832,7 @@ var NumberProperty = ({
7746
7832
  suffix,
7747
7833
  ...baseProps
7748
7834
  }) => {
7749
- const translation = useTranslation(defaultNumberPropertyTranslation, overwriteTranslation);
7835
+ const translation = useTranslation([defaultNumberPropertyTranslation], overwriteTranslation);
7750
7836
  const hasValue = value !== void 0;
7751
7837
  return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
7752
7838
  PropertyBase,
@@ -7768,7 +7854,7 @@ var NumberProperty = ({
7768
7854
  value: value?.toString() ?? "",
7769
7855
  type: "number",
7770
7856
  readOnly,
7771
- placeholder: `${translation.value}...`,
7857
+ placeholder: `${translation("value")}...`,
7772
7858
  onChangeText: (value2) => {
7773
7859
  const numberValue = parseFloat(value2);
7774
7860
  if (isNaN(numberValue)) {
@@ -7799,14 +7885,6 @@ var NumberProperty = ({
7799
7885
  var import_lucide_react20 = require("lucide-react");
7800
7886
  var import_clsx39 = __toESM(require("clsx"));
7801
7887
  var import_jsx_runtime52 = require("react/jsx-runtime");
7802
- var defaultSingleSelectPropertyTranslation = {
7803
- en: {
7804
- select: "Select"
7805
- },
7806
- de: {
7807
- select: "Ausw\xE4hlen"
7808
- }
7809
- };
7810
7888
  var SingleSelectProperty = ({
7811
7889
  overwriteTranslation,
7812
7890
  value,
@@ -7817,7 +7895,7 @@ var SingleSelectProperty = ({
7817
7895
  onRemove,
7818
7896
  ...selectProps
7819
7897
  }) => {
7820
- const translation = useTranslation(defaultSingleSelectPropertyTranslation, overwriteTranslation);
7898
+ const translation = useTranslation([formTranslation], overwriteTranslation);
7821
7899
  const hasValue = value !== void 0;
7822
7900
  return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
7823
7901
  PropertyBase,
@@ -7840,7 +7918,7 @@ var SingleSelectProperty = ({
7840
7918
  options,
7841
7919
  isDisabled: readOnly,
7842
7920
  className: (0, import_clsx39.default)("w-full", { "bg-surface-warning": softRequired2 && !hasValue }),
7843
- hintText: `${translation.select}...`
7921
+ hintText: `${translation("select")}...`
7844
7922
  }
7845
7923
  )
7846
7924
  }
@@ -7953,10 +8031,10 @@ var TextareaUncontrolled = ({
7953
8031
  var import_jsx_runtime54 = require("react/jsx-runtime");
7954
8032
  var defaultTextPropertyTranslation = {
7955
8033
  en: {
7956
- value: "Text"
8034
+ text: "Text"
7957
8035
  },
7958
8036
  de: {
7959
- value: "Text"
8037
+ text: "Text"
7960
8038
  }
7961
8039
  };
7962
8040
  var TextProperty = ({
@@ -7968,7 +8046,7 @@ var TextProperty = ({
7968
8046
  onEditComplete = noop,
7969
8047
  ...baseProps
7970
8048
  }) => {
7971
- const translation = useTranslation(defaultTextPropertyTranslation, overwriteTranslation);
8049
+ const translation = useTranslation([defaultTextPropertyTranslation], overwriteTranslation);
7972
8050
  const hasValue = value !== void 0;
7973
8051
  return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
7974
8052
  PropertyBase,
@@ -7989,7 +8067,7 @@ var TextProperty = ({
7989
8067
  defaultStyle: false,
7990
8068
  value: value ?? "",
7991
8069
  readOnly,
7992
- placeholder: `${translation.value}...`,
8070
+ placeholder: `${translation("text")}...`,
7993
8071
  onChangeText: (value2) => {
7994
8072
  if (!value2) {
7995
8073
  onRemove();
@@ -8015,46 +8093,6 @@ var TextProperty = ({
8015
8093
  // src/components/user-action/DateAndTimePicker.tsx
8016
8094
  var import_clsx42 = __toESM(require("clsx"));
8017
8095
  var import_jsx_runtime55 = require("react/jsx-runtime");
8018
- var defaultTimeTranslation = {
8019
- en: {
8020
- clear: "Clear",
8021
- change: "Change",
8022
- year: "Year",
8023
- month: "Month",
8024
- day: "Day",
8025
- january: "January",
8026
- february: "Febuary",
8027
- march: "March",
8028
- april: "April",
8029
- may: "May",
8030
- june: "June",
8031
- july: "July",
8032
- august: "August",
8033
- september: "September",
8034
- october: "October",
8035
- november: "November",
8036
- december: "December"
8037
- },
8038
- de: {
8039
- clear: "Entfernen",
8040
- change: "\xC4ndern",
8041
- year: "Jahr",
8042
- month: "Monat",
8043
- day: "Tag",
8044
- january: "Januar",
8045
- february: "Febuar",
8046
- march: "M\xE4rz",
8047
- april: "April",
8048
- may: "Mai",
8049
- june: "Juni",
8050
- july: "Juli",
8051
- august: "August",
8052
- september: "September",
8053
- october: "October",
8054
- november: "November",
8055
- december: "December"
8056
- }
8057
- };
8058
8096
  var DateTimePicker = ({
8059
8097
  overwriteTranslation,
8060
8098
  value = /* @__PURE__ */ new Date(),
@@ -8067,7 +8105,7 @@ var DateTimePicker = ({
8067
8105
  timePickerProps,
8068
8106
  datePickerProps
8069
8107
  }) => {
8070
- const translation = useTranslation(defaultTimeTranslation, overwriteTranslation);
8108
+ const translation = useTranslation([formTranslation, timeTranslation], overwriteTranslation);
8071
8109
  const useDate = mode === "dateTime" || mode === "date";
8072
8110
  const useTime = mode === "dateTime" || mode === "time";
8073
8111
  let dateDisplay;
@@ -8104,13 +8142,13 @@ var DateTimePicker = ({
8104
8142
  timeDisplay
8105
8143
  ] }),
8106
8144
  /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "row justify-end", children: /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "row gap-x-2 mt-1", children: [
8107
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(SolidButton, { size: "medium", color: "negative", onClick: onRemove, children: translation.clear }),
8145
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(SolidButton, { size: "medium", color: "negative", onClick: onRemove, children: translation("clear") }),
8108
8146
  /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
8109
8147
  SolidButton,
8110
8148
  {
8111
8149
  size: "medium",
8112
8150
  onClick: () => onFinish(value),
8113
- children: translation.change
8151
+ children: translation("change")
8114
8152
  }
8115
8153
  )
8116
8154
  ] }) })
@@ -8179,7 +8217,7 @@ var Menu = ({
8179
8217
  ref: menuRef,
8180
8218
  onClick: (e) => e.stopPropagation(),
8181
8219
  className: (0, import_clsx43.default)(
8182
- "absolute top-full mt-1 min-w-40 rounded-lg bg-menu-background text-menu-text shadow-around-md z-10",
8220
+ "absolute top-full mt-1 min-w-40 rounded-lg bg-menu-background text-menu-text shadow-around-lg z-10",
8183
8221
  {
8184
8222
  "top-0": alignment[0] === "t",
8185
8223
  "bottom-0": alignment[0] === "b",
@@ -8639,6 +8677,7 @@ var filterNews = (localizedNews, requiredKeys) => {
8639
8677
  ToggleableInput,
8640
8678
  ToggleableInputUncontrolled,
8641
8679
  Tooltip,
8680
+ TranslationPluralCount,
8642
8681
  VerticalDivider,
8643
8682
  YearMonthPicker,
8644
8683
  YearMonthPickerUncontrolled,
@@ -8658,6 +8697,7 @@ var filterNews = (localizedNews, requiredKeys) => {
8658
8697
  equalDate,
8659
8698
  equalSizeGroups,
8660
8699
  filterNews,
8700
+ formTranslation,
8661
8701
  formatDate,
8662
8702
  formatDateTime,
8663
8703
  generateShadingColors,
@@ -8668,6 +8708,7 @@ var filterNews = (localizedNews, requiredKeys) => {
8668
8708
  isDataObjectSelected,
8669
8709
  isInTimeSpan,
8670
8710
  localizedNewsSchema,
8711
+ monthTranslation,
8671
8712
  monthsList,
8672
8713
  newsListSchema,
8673
8714
  newsSchema,
@@ -8677,6 +8718,7 @@ var filterNews = (localizedNews, requiredKeys) => {
8677
8718
  removeFromTableSelection,
8678
8719
  shadingColorValues,
8679
8720
  subtractDuration,
8721
+ timeTranslation,
8680
8722
  updatePagination,
8681
8723
  useHoverState,
8682
8724
  useLanguage,