@helpwave/hightide 0.1.26 → 0.1.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/coloring/index.d.mts +2 -0
- package/dist/coloring/index.d.ts +2 -0
- package/dist/coloring/index.js +85 -0
- package/dist/coloring/index.js.map +1 -0
- package/dist/coloring/index.mjs +48 -0
- package/dist/coloring/index.mjs.map +1 -0
- package/dist/components/branding/index.d.mts +3 -0
- package/dist/components/branding/index.d.ts +3 -0
- package/dist/components/branding/index.js +140 -0
- package/dist/components/branding/index.js.map +1 -0
- package/dist/components/branding/index.mjs +104 -0
- package/dist/components/branding/index.mjs.map +1 -0
- package/dist/components/date/DatePicker.js +1 -1
- package/dist/components/date/DatePicker.js.map +1 -1
- package/dist/components/date/DatePicker.mjs +1 -1
- package/dist/components/date/DatePicker.mjs.map +1 -1
- package/dist/components/date/YearMonthPicker.js +1 -1
- package/dist/components/date/YearMonthPicker.js.map +1 -1
- package/dist/components/date/YearMonthPicker.mjs +1 -1
- package/dist/components/date/YearMonthPicker.mjs.map +1 -1
- package/dist/components/date/index.d.mts +10 -0
- package/dist/components/date/index.d.ts +10 -0
- package/dist/components/date/index.js +1168 -0
- package/dist/components/date/index.js.map +1 -0
- package/dist/components/date/index.mjs +1124 -0
- package/dist/components/date/index.mjs.map +1 -0
- package/dist/components/dialog/ConfirmDialog.d.mts +1 -1
- package/dist/components/dialog/ConfirmDialog.d.ts +1 -1
- package/dist/components/dialog/ConfirmDialog.js +2 -2
- package/dist/components/dialog/ConfirmDialog.js.map +1 -1
- package/dist/components/dialog/ConfirmDialog.mjs +2 -2
- package/dist/components/dialog/ConfirmDialog.mjs.map +1 -1
- package/dist/components/dialog/Dialog.d.mts +1 -1
- package/dist/components/dialog/Dialog.d.ts +1 -1
- package/dist/components/dialog/Dialog.js +2 -2
- package/dist/components/dialog/Dialog.js.map +1 -1
- package/dist/components/dialog/Dialog.mjs +2 -2
- package/dist/components/dialog/Dialog.mjs.map +1 -1
- package/dist/components/dialog/DiscardChangesDialog.d.mts +1 -1
- package/dist/components/dialog/DiscardChangesDialog.d.ts +1 -1
- package/dist/components/dialog/DiscardChangesDialog.js +2 -2
- package/dist/components/dialog/DiscardChangesDialog.js.map +1 -1
- package/dist/components/dialog/DiscardChangesDialog.mjs +2 -2
- package/dist/components/dialog/DiscardChangesDialog.mjs.map +1 -1
- package/dist/components/dialog/InputDialog.d.mts +1 -1
- package/dist/components/dialog/InputDialog.d.ts +1 -1
- package/dist/components/dialog/InputDialog.js +2 -2
- package/dist/components/dialog/InputDialog.js.map +1 -1
- package/dist/components/dialog/InputDialog.mjs +2 -2
- package/dist/components/dialog/InputDialog.mjs.map +1 -1
- package/dist/components/dialog/LanguageDialog.d.mts +1 -1
- package/dist/components/dialog/LanguageDialog.d.ts +1 -1
- package/dist/components/dialog/LanguageDialog.js +28 -15
- package/dist/components/dialog/LanguageDialog.js.map +1 -1
- package/dist/components/dialog/LanguageDialog.mjs +28 -15
- package/dist/components/dialog/LanguageDialog.mjs.map +1 -1
- package/dist/components/dialog/ThemeDialog.d.mts +1 -1
- package/dist/components/dialog/ThemeDialog.d.ts +1 -1
- package/dist/components/dialog/ThemeDialog.js +69 -33
- package/dist/components/dialog/ThemeDialog.js.map +1 -1
- package/dist/components/dialog/ThemeDialog.mjs +60 -24
- package/dist/components/dialog/ThemeDialog.mjs.map +1 -1
- package/dist/components/dialog/index.d.mts +1 -1
- package/dist/components/dialog/index.d.ts +1 -1
- package/dist/components/dialog/index.js +61 -25
- package/dist/components/dialog/index.js.map +1 -1
- package/dist/components/dialog/index.mjs +61 -25
- package/dist/components/dialog/index.mjs.map +1 -1
- package/dist/components/form/index.d.mts +5 -0
- package/dist/components/form/index.d.ts +5 -0
- package/dist/components/form/index.js +100 -0
- package/dist/components/form/index.js.map +1 -0
- package/dist/components/form/index.mjs +64 -0
- package/dist/components/form/index.mjs.map +1 -0
- package/dist/components/icons-and-geometry/index.d.mts +7 -0
- package/dist/components/icons-and-geometry/index.d.ts +7 -0
- package/dist/components/icons-and-geometry/index.js +3955 -0
- package/dist/components/icons-and-geometry/index.js.map +1 -0
- package/dist/components/icons-and-geometry/index.mjs +3939 -0
- package/dist/components/icons-and-geometry/index.mjs.map +1 -0
- package/dist/components/index.d.mts +83 -0
- package/dist/components/index.d.ts +83 -0
- package/dist/components/index.js +15471 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/index.mjs +15377 -0
- package/dist/components/index.mjs.map +1 -0
- package/dist/components/layout/Carousel.d.mts +33 -0
- package/dist/components/layout/Carousel.d.ts +33 -0
- package/dist/components/layout/Carousel.js +684 -0
- package/dist/components/layout/Carousel.js.map +1 -0
- package/dist/components/layout/Carousel.mjs +659 -0
- package/dist/components/layout/Carousel.mjs.map +1 -0
- package/dist/components/{layout-and-navigation → layout}/Chip.js +1 -1
- package/dist/components/layout/Chip.js.map +1 -0
- package/dist/components/{layout-and-navigation → layout}/Chip.mjs +1 -1
- package/dist/components/layout/Chip.mjs.map +1 -0
- package/dist/components/{layout-and-navigation → layout}/DividerInserter.js +1 -1
- package/dist/components/layout/DividerInserter.js.map +1 -0
- package/dist/components/{layout-and-navigation → layout}/DividerInserter.mjs +1 -1
- package/dist/components/layout/DividerInserter.mjs.map +1 -0
- package/dist/components/{layout-and-navigation → layout}/Expandable.js +2 -2
- package/dist/components/layout/Expandable.js.map +1 -0
- package/dist/components/{layout-and-navigation → layout}/Expandable.mjs +2 -2
- package/dist/components/layout/Expandable.mjs.map +1 -0
- package/dist/components/{layout-and-navigation → layout}/FAQSection.js +5 -5
- package/dist/components/layout/FAQSection.js.map +1 -0
- package/dist/components/{layout-and-navigation → layout}/FAQSection.mjs +5 -5
- package/dist/components/layout/FAQSection.mjs.map +1 -0
- package/dist/components/{layout-and-navigation → layout}/FloatingContainer.js +2 -2
- package/dist/components/layout/FloatingContainer.js.map +1 -0
- package/dist/components/{layout-and-navigation → layout}/FloatingContainer.mjs +2 -2
- package/dist/components/layout/FloatingContainer.mjs.map +1 -0
- package/dist/components/{layout-and-navigation → layout}/ListBox.js +2 -2
- package/dist/components/layout/ListBox.js.map +1 -0
- package/dist/components/{layout-and-navigation → layout}/ListBox.mjs +2 -2
- package/dist/components/layout/ListBox.mjs.map +1 -0
- package/dist/components/{layout-and-navigation → layout}/MarkdownInterpreter.js +1 -1
- package/dist/components/layout/MarkdownInterpreter.js.map +1 -0
- package/dist/components/{layout-and-navigation → layout}/MarkdownInterpreter.mjs +1 -1
- package/dist/components/layout/MarkdownInterpreter.mjs.map +1 -0
- package/dist/components/{layout-and-navigation → layout}/ScrollArea.js +2 -2
- package/dist/components/layout/ScrollArea.js.map +1 -0
- package/dist/components/{layout-and-navigation → layout}/ScrollArea.mjs +1 -1
- package/dist/components/layout/ScrollArea.mjs.map +1 -0
- package/dist/components/{layout-and-navigation → layout}/TextImage.js +3 -3
- package/dist/components/layout/TextImage.js.map +1 -0
- package/dist/components/{layout-and-navigation → layout}/TextImage.mjs +2 -2
- package/dist/components/layout/TextImage.mjs.map +1 -0
- package/dist/components/{layout-and-navigation → layout}/VerticalDivider.js +1 -1
- package/dist/components/layout/VerticalDivider.js.map +1 -0
- package/dist/components/{layout-and-navigation → layout}/VerticalDivider.mjs +1 -1
- package/dist/components/layout/VerticalDivider.mjs.map +1 -0
- package/dist/components/layout/index.d.mts +18 -0
- package/dist/components/layout/index.d.ts +18 -0
- package/dist/components/layout/index.js +3111 -0
- package/dist/components/layout/index.js.map +1 -0
- package/dist/components/layout/index.mjs +3064 -0
- package/dist/components/layout/index.mjs.map +1 -0
- package/dist/components/loading-states/index.d.mts +12 -0
- package/dist/components/loading-states/index.d.ts +12 -0
- package/dist/components/loading-states/index.js +614 -0
- package/dist/components/loading-states/index.js.map +1 -0
- package/dist/components/loading-states/index.mjs +573 -0
- package/dist/components/loading-states/index.mjs.map +1 -0
- package/dist/components/{layout-and-navigation → navigation}/BreadCrumb.js +1 -1
- package/dist/components/navigation/BreadCrumb.js.map +1 -0
- package/dist/components/{layout-and-navigation → navigation}/BreadCrumb.mjs +1 -1
- package/dist/components/navigation/BreadCrumb.mjs.map +1 -0
- package/dist/components/navigation/Navigation.d.mts +21 -0
- package/dist/components/navigation/Navigation.d.ts +21 -0
- package/dist/components/navigation/Navigation.js +4018 -0
- package/dist/components/navigation/Navigation.js.map +1 -0
- package/dist/components/navigation/Navigation.mjs +4012 -0
- package/dist/components/navigation/Navigation.mjs.map +1 -0
- package/dist/components/{layout-and-navigation → navigation}/Pagination.js +3 -3
- package/dist/components/navigation/Pagination.js.map +1 -0
- package/dist/components/{layout-and-navigation → navigation}/Pagination.mjs +3 -3
- package/dist/components/navigation/Pagination.mjs.map +1 -0
- package/dist/components/{layout-and-navigation → navigation}/StepperBar.js +3 -3
- package/dist/components/navigation/StepperBar.js.map +1 -0
- package/dist/components/{layout-and-navigation → navigation}/StepperBar.mjs +3 -3
- package/dist/components/navigation/StepperBar.mjs.map +1 -0
- package/dist/components/navigation/index.d.mts +9 -0
- package/dist/components/navigation/index.d.ts +9 -0
- package/dist/components/navigation/index.js +4660 -0
- package/dist/components/navigation/index.js.map +1 -0
- package/dist/components/navigation/index.mjs +4648 -0
- package/dist/components/navigation/index.mjs.map +1 -0
- package/dist/components/properties/MultiSelectProperty.js +27 -14
- package/dist/components/properties/MultiSelectProperty.js.map +1 -1
- package/dist/components/properties/MultiSelectProperty.mjs +27 -14
- package/dist/components/properties/MultiSelectProperty.mjs.map +1 -1
- package/dist/components/properties/SelectProperty.js +27 -14
- package/dist/components/properties/SelectProperty.js.map +1 -1
- package/dist/components/properties/SelectProperty.mjs +27 -14
- package/dist/components/properties/SelectProperty.mjs.map +1 -1
- package/dist/components/properties/index.d.mts +12 -0
- package/dist/components/properties/index.d.ts +12 -0
- package/dist/components/properties/index.js +2983 -0
- package/dist/components/properties/index.js.map +1 -0
- package/dist/components/properties/index.mjs +2951 -0
- package/dist/components/properties/index.mjs.map +1 -0
- package/dist/components/table/Table.js +1 -1
- package/dist/components/table/Table.js.map +1 -1
- package/dist/components/table/Table.mjs +1 -1
- package/dist/components/table/Table.mjs.map +1 -1
- package/dist/components/table/index.d.mts +10 -0
- package/dist/components/table/index.d.ts +10 -0
- package/dist/components/table/index.js +2329 -0
- package/dist/components/table/index.js.map +1 -0
- package/dist/components/table/index.mjs +2293 -0
- package/dist/components/table/index.mjs.map +1 -0
- package/dist/components/user-action/DateAndTimePicker.js +1 -1
- package/dist/components/user-action/DateAndTimePicker.js.map +1 -1
- package/dist/components/user-action/DateAndTimePicker.mjs +1 -1
- package/dist/components/user-action/DateAndTimePicker.mjs.map +1 -1
- package/dist/components/user-action/index.d.mts +30 -0
- package/dist/components/user-action/index.d.ts +30 -0
- package/dist/components/user-action/index.js +4257 -0
- package/dist/components/user-action/index.js.map +1 -0
- package/dist/components/user-action/index.mjs +4195 -0
- package/dist/components/user-action/index.mjs.map +1 -0
- package/dist/components/user-action/input/index.d.mts +6 -0
- package/dist/components/user-action/input/index.d.ts +6 -0
- package/dist/components/user-action/input/index.js +398 -0
- package/dist/components/user-action/input/index.js.map +1 -0
- package/dist/components/user-action/input/index.mjs +357 -0
- package/dist/components/user-action/input/index.mjs.map +1 -0
- package/dist/components/user-action/select/Select.d.mts +5 -1
- package/dist/components/user-action/select/Select.d.ts +5 -1
- package/dist/components/user-action/select/Select.js +27 -14
- package/dist/components/user-action/select/Select.js.map +1 -1
- package/dist/components/user-action/select/Select.mjs +27 -14
- package/dist/components/user-action/select/Select.mjs.map +1 -1
- package/dist/components/user-action/select/index.d.mts +4 -0
- package/dist/components/user-action/select/index.d.ts +4 -0
- package/dist/components/user-action/select/index.js +1369 -0
- package/dist/components/user-action/select/index.js.map +1 -0
- package/dist/components/user-action/select/index.mjs +1333 -0
- package/dist/components/user-action/select/index.mjs.map +1 -0
- package/dist/components/utils/index.d.mts +4 -0
- package/dist/components/utils/index.d.ts +4 -0
- package/dist/components/utils/index.js +302 -0
- package/dist/components/utils/index.js.map +1 -0
- package/dist/components/utils/index.mjs +275 -0
- package/dist/components/utils/index.mjs.map +1 -0
- package/dist/hooks/focus/index.d.mts +6 -0
- package/dist/hooks/focus/index.d.ts +6 -0
- package/dist/hooks/focus/index.js +379 -0
- package/dist/hooks/focus/index.js.map +1 -0
- package/dist/hooks/focus/index.mjs +339 -0
- package/dist/hooks/focus/index.mjs.map +1 -0
- package/dist/hooks/index.d.mts +16 -0
- package/dist/hooks/index.d.ts +16 -0
- package/dist/hooks/index.js +844 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/index.mjs +794 -0
- package/dist/hooks/index.mjs.map +1 -0
- package/dist/index.d.mts +110 -0
- package/dist/index.d.ts +110 -0
- package/dist/index.js +16101 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +15941 -0
- package/dist/index.mjs.map +1 -0
- package/dist/localization/defaults/index.d.mts +4 -0
- package/dist/localization/defaults/index.d.ts +4 -0
- package/dist/localization/defaults/index.js +223 -0
- package/dist/localization/defaults/index.js.map +1 -0
- package/dist/localization/defaults/index.mjs +195 -0
- package/dist/localization/defaults/index.mjs.map +1 -0
- package/dist/localization/index.d.mts +7 -0
- package/dist/localization/index.d.ts +7 -0
- package/dist/localization/index.js +415 -0
- package/dist/localization/index.js.map +1 -0
- package/dist/localization/index.mjs +380 -0
- package/dist/localization/index.mjs.map +1 -0
- package/dist/style/globals.css +63 -10
- package/dist/style/uncompiled/globals.css +5 -4
- package/dist/style/uncompiled/utitlity/shadow.css +4 -0
- package/dist/theming/index.d.mts +5 -0
- package/dist/theming/index.d.ts +5 -0
- package/dist/theming/index.js +174 -0
- package/dist/theming/index.js.map +1 -0
- package/dist/theming/index.mjs +145 -0
- package/dist/theming/index.mjs.map +1 -0
- package/dist/theming/useTheme.d.mts +3 -1
- package/dist/theming/useTheme.d.ts +3 -1
- package/dist/theming/useTheme.js +40 -17
- package/dist/theming/useTheme.js.map +1 -1
- package/dist/theming/useTheme.mjs +38 -15
- package/dist/theming/useTheme.mjs.map +1 -1
- package/dist/utils/index.d.mts +15 -0
- package/dist/utils/index.d.ts +15 -0
- package/dist/utils/index.js +553 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/index.mjs +493 -0
- package/dist/utils/index.mjs.map +1 -0
- package/package.json +25 -24
- package/dist/components/layout-and-navigation/BreadCrumb.js.map +0 -1
- package/dist/components/layout-and-navigation/BreadCrumb.mjs.map +0 -1
- package/dist/components/layout-and-navigation/Carousel.d.mts +0 -25
- package/dist/components/layout-and-navigation/Carousel.d.ts +0 -25
- package/dist/components/layout-and-navigation/Carousel.js +0 -643
- package/dist/components/layout-and-navigation/Carousel.js.map +0 -1
- package/dist/components/layout-and-navigation/Carousel.mjs +0 -609
- package/dist/components/layout-and-navigation/Carousel.mjs.map +0 -1
- package/dist/components/layout-and-navigation/Chip.js.map +0 -1
- package/dist/components/layout-and-navigation/Chip.mjs.map +0 -1
- package/dist/components/layout-and-navigation/DividerInserter.js.map +0 -1
- package/dist/components/layout-and-navigation/DividerInserter.mjs.map +0 -1
- package/dist/components/layout-and-navigation/Expandable.js.map +0 -1
- package/dist/components/layout-and-navigation/Expandable.mjs.map +0 -1
- package/dist/components/layout-and-navigation/FAQSection.js.map +0 -1
- package/dist/components/layout-and-navigation/FAQSection.mjs.map +0 -1
- package/dist/components/layout-and-navigation/FloatingContainer.js.map +0 -1
- package/dist/components/layout-and-navigation/FloatingContainer.mjs.map +0 -1
- package/dist/components/layout-and-navigation/ListBox.js.map +0 -1
- package/dist/components/layout-and-navigation/ListBox.mjs.map +0 -1
- package/dist/components/layout-and-navigation/MarkdownInterpreter.js.map +0 -1
- package/dist/components/layout-and-navigation/MarkdownInterpreter.mjs.map +0 -1
- package/dist/components/layout-and-navigation/Pagination.js.map +0 -1
- package/dist/components/layout-and-navigation/Pagination.mjs.map +0 -1
- package/dist/components/layout-and-navigation/ScrollArea.js.map +0 -1
- package/dist/components/layout-and-navigation/ScrollArea.mjs.map +0 -1
- package/dist/components/layout-and-navigation/StepperBar.js.map +0 -1
- package/dist/components/layout-and-navigation/StepperBar.mjs.map +0 -1
- package/dist/components/layout-and-navigation/TextImage.js.map +0 -1
- package/dist/components/layout-and-navigation/TextImage.mjs.map +0 -1
- package/dist/components/layout-and-navigation/VerticalDivider.js.map +0 -1
- package/dist/components/layout-and-navigation/VerticalDivider.mjs.map +0 -1
- /package/dist/components/{layout-and-navigation → layout}/Chip.d.mts +0 -0
- /package/dist/components/{layout-and-navigation → layout}/Chip.d.ts +0 -0
- /package/dist/components/{layout-and-navigation → layout}/DividerInserter.d.mts +0 -0
- /package/dist/components/{layout-and-navigation → layout}/DividerInserter.d.ts +0 -0
- /package/dist/components/{layout-and-navigation → layout}/Expandable.d.mts +0 -0
- /package/dist/components/{layout-and-navigation → layout}/Expandable.d.ts +0 -0
- /package/dist/components/{layout-and-navigation → layout}/FAQSection.d.mts +0 -0
- /package/dist/components/{layout-and-navigation → layout}/FAQSection.d.ts +0 -0
- /package/dist/components/{layout-and-navigation → layout}/FloatingContainer.d.mts +0 -0
- /package/dist/components/{layout-and-navigation → layout}/FloatingContainer.d.ts +0 -0
- /package/dist/components/{layout-and-navigation → layout}/ListBox.d.mts +0 -0
- /package/dist/components/{layout-and-navigation → layout}/ListBox.d.ts +0 -0
- /package/dist/components/{layout-and-navigation → layout}/MarkdownInterpreter.d.mts +0 -0
- /package/dist/components/{layout-and-navigation → layout}/MarkdownInterpreter.d.ts +0 -0
- /package/dist/components/{layout-and-navigation → layout}/ScrollArea.d.mts +0 -0
- /package/dist/components/{layout-and-navigation → layout}/ScrollArea.d.ts +0 -0
- /package/dist/components/{layout-and-navigation → layout}/TextImage.d.mts +0 -0
- /package/dist/components/{layout-and-navigation → layout}/TextImage.d.ts +0 -0
- /package/dist/components/{layout-and-navigation → layout}/VerticalDivider.d.mts +0 -0
- /package/dist/components/{layout-and-navigation → layout}/VerticalDivider.d.ts +0 -0
- /package/dist/components/{layout-and-navigation → navigation}/BreadCrumb.d.mts +0 -0
- /package/dist/components/{layout-and-navigation → navigation}/BreadCrumb.d.ts +0 -0
- /package/dist/components/{layout-and-navigation → navigation}/Pagination.d.mts +0 -0
- /package/dist/components/{layout-and-navigation → navigation}/Pagination.d.ts +0 -0
- /package/dist/components/{layout-and-navigation → navigation}/StepperBar.d.mts +0 -0
- /package/dist/components/{layout-and-navigation → navigation}/StepperBar.d.ts +0 -0
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
// src/localization/LanguageProvider.tsx
|
|
2
|
+
import { createContext, useContext, useEffect, useState as useState2 } from "react";
|
|
3
|
+
|
|
4
|
+
// src/hooks/useLocalStorage.ts
|
|
5
|
+
import { useCallback, useState } from "react";
|
|
6
|
+
|
|
7
|
+
// src/utils/storage.ts
|
|
8
|
+
var StorageService = class {
|
|
9
|
+
// this seems to be a bug in eslint as 'paramter-properties' is a special syntax of typescript
|
|
10
|
+
constructor(storage) {
|
|
11
|
+
this.storage = storage;
|
|
12
|
+
}
|
|
13
|
+
get(key) {
|
|
14
|
+
const value = this.storage.getItem(key);
|
|
15
|
+
if (value === null) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
return JSON.parse(value);
|
|
19
|
+
}
|
|
20
|
+
set(key, value) {
|
|
21
|
+
this.storage.setItem(key, JSON.stringify(value));
|
|
22
|
+
}
|
|
23
|
+
delete(key) {
|
|
24
|
+
this.storage.removeItem(key);
|
|
25
|
+
}
|
|
26
|
+
deleteAll() {
|
|
27
|
+
this.storage.clear();
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
var LocalStorageService = class extends StorageService {
|
|
31
|
+
constructor() {
|
|
32
|
+
super(window.localStorage);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
// src/utils/resolveSetState.ts
|
|
37
|
+
function resolveSetState(action, prev) {
|
|
38
|
+
return typeof action === "function" ? action(prev) : action;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// src/hooks/useLocalStorage.ts
|
|
42
|
+
var useLocalStorage = (key, initValue) => {
|
|
43
|
+
const get = useCallback(() => {
|
|
44
|
+
if (typeof window === "undefined") {
|
|
45
|
+
return initValue;
|
|
46
|
+
}
|
|
47
|
+
const storageService = new LocalStorageService();
|
|
48
|
+
const value = storageService.get(key);
|
|
49
|
+
return value || initValue;
|
|
50
|
+
}, [initValue, key]);
|
|
51
|
+
const [storedValue, setStoredValue] = useState(get);
|
|
52
|
+
const setValue = useCallback((action) => {
|
|
53
|
+
const newValue = resolveSetState(action, storedValue);
|
|
54
|
+
const storageService = new LocalStorageService();
|
|
55
|
+
storageService.set(key, newValue);
|
|
56
|
+
setStoredValue(newValue);
|
|
57
|
+
}, [storedValue, setStoredValue, key]);
|
|
58
|
+
return [storedValue, setValue];
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
// src/localization/util.ts
|
|
62
|
+
var languages = ["en", "de"];
|
|
63
|
+
var languagesLocalNames = {
|
|
64
|
+
en: "English",
|
|
65
|
+
de: "Deutsch"
|
|
66
|
+
};
|
|
67
|
+
var DEFAULT_LANGUAGE = "en";
|
|
68
|
+
var LanguageUtil = {
|
|
69
|
+
languages,
|
|
70
|
+
DEFAULT_LANGUAGE,
|
|
71
|
+
languagesLocalNames
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
// src/localization/LanguageProvider.tsx
|
|
75
|
+
import { jsx } from "react/jsx-runtime";
|
|
76
|
+
var LanguageContext = createContext({
|
|
77
|
+
language: LanguageUtil.DEFAULT_LANGUAGE,
|
|
78
|
+
setLanguage: (v) => v
|
|
79
|
+
});
|
|
80
|
+
var useLanguage = () => useContext(LanguageContext);
|
|
81
|
+
var useLocale = (overWriteLanguage) => {
|
|
82
|
+
const { language } = useLanguage();
|
|
83
|
+
const mapping = {
|
|
84
|
+
en: "en-US",
|
|
85
|
+
de: "de-DE"
|
|
86
|
+
};
|
|
87
|
+
return mapping[overWriteLanguage ?? language];
|
|
88
|
+
};
|
|
89
|
+
var LanguageProvider = ({ initialLanguage, children }) => {
|
|
90
|
+
const [language, setLanguage] = useState2(initialLanguage ?? LanguageUtil.DEFAULT_LANGUAGE);
|
|
91
|
+
const [storedLanguage, setStoredLanguage] = useLocalStorage("language", initialLanguage ?? LanguageUtil.DEFAULT_LANGUAGE);
|
|
92
|
+
useEffect(() => {
|
|
93
|
+
if (language !== initialLanguage && initialLanguage) {
|
|
94
|
+
console.warn("LanguageProvider initial state changed: Prefer using languageProvider's setLanguage instead");
|
|
95
|
+
setLanguage(initialLanguage);
|
|
96
|
+
}
|
|
97
|
+
}, [initialLanguage]);
|
|
98
|
+
useEffect(() => {
|
|
99
|
+
document.documentElement.setAttribute("lang", language);
|
|
100
|
+
setStoredLanguage(language);
|
|
101
|
+
}, [language]);
|
|
102
|
+
useEffect(() => {
|
|
103
|
+
if (storedLanguage !== null) {
|
|
104
|
+
setLanguage(storedLanguage);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
const LanguageToTestAgainst = Object.values(LanguageUtil.languages);
|
|
108
|
+
const matchingBrowserLanguage = window.navigator.languages.map((language2) => LanguageToTestAgainst.find((test) => language2 === test || language2.split("-")[0] === test)).filter((entry) => entry !== void 0);
|
|
109
|
+
if (matchingBrowserLanguage.length === 0) return;
|
|
110
|
+
const firstMatch = matchingBrowserLanguage[0];
|
|
111
|
+
setLanguage(firstMatch);
|
|
112
|
+
}, []);
|
|
113
|
+
return /* @__PURE__ */ jsx(LanguageContext.Provider, { value: {
|
|
114
|
+
language,
|
|
115
|
+
setLanguage
|
|
116
|
+
}, children });
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
// src/localization/defaults/form.ts
|
|
120
|
+
var formTranslation = {
|
|
121
|
+
en: {
|
|
122
|
+
add: "Add",
|
|
123
|
+
all: "All",
|
|
124
|
+
apply: "Apply",
|
|
125
|
+
back: "Back",
|
|
126
|
+
cancel: "Cancel",
|
|
127
|
+
change: "Change",
|
|
128
|
+
clear: "Clear",
|
|
129
|
+
click: "Click",
|
|
130
|
+
clickToCopy: "Click to Copy",
|
|
131
|
+
close: "Close",
|
|
132
|
+
confirm: "Confirm",
|
|
133
|
+
copy: "Copy",
|
|
134
|
+
copied: "Copied",
|
|
135
|
+
create: "Create",
|
|
136
|
+
decline: "Decline",
|
|
137
|
+
delete: "Delete",
|
|
138
|
+
discard: "Discard",
|
|
139
|
+
discardChanges: "Discard Changes",
|
|
140
|
+
done: "Done",
|
|
141
|
+
edit: "Edit",
|
|
142
|
+
enterText: "Enter text here",
|
|
143
|
+
error: "Error",
|
|
144
|
+
exit: "Exit",
|
|
145
|
+
fieldRequiredError: "This field is required.",
|
|
146
|
+
invalidEmailError: "Please enter a valid email address.",
|
|
147
|
+
less: "Less",
|
|
148
|
+
loading: "Loading",
|
|
149
|
+
maxLengthError: "Maximum length exceeded.",
|
|
150
|
+
minLengthError: "Minimum length not met.",
|
|
151
|
+
more: "More",
|
|
152
|
+
next: "Next",
|
|
153
|
+
no: "No",
|
|
154
|
+
none: "None",
|
|
155
|
+
nothingFound: "Nothing found",
|
|
156
|
+
of: "of",
|
|
157
|
+
optional: "Optional",
|
|
158
|
+
pleaseWait: "Please wait...",
|
|
159
|
+
previous: "Previous",
|
|
160
|
+
remove: "Remove",
|
|
161
|
+
required: "Required",
|
|
162
|
+
reset: "Reset",
|
|
163
|
+
save: "Save",
|
|
164
|
+
saved: "Saved",
|
|
165
|
+
search: "Search",
|
|
166
|
+
select: "Select",
|
|
167
|
+
selectOption: "Select an option",
|
|
168
|
+
show: "Show",
|
|
169
|
+
showMore: "Show more",
|
|
170
|
+
showLess: "Show less",
|
|
171
|
+
submit: "Submit",
|
|
172
|
+
success: "Success",
|
|
173
|
+
update: "Update",
|
|
174
|
+
unsavedChanges: "Unsaved Changes",
|
|
175
|
+
unsavedChangesSaveQuestion: "Do you want to save your changes?",
|
|
176
|
+
yes: "Yes"
|
|
177
|
+
},
|
|
178
|
+
de: {
|
|
179
|
+
add: "Hinzuf\xFCgen",
|
|
180
|
+
all: "Alle",
|
|
181
|
+
apply: "Anwenden",
|
|
182
|
+
back: "Zur\xFCck",
|
|
183
|
+
cancel: "Abbrechen",
|
|
184
|
+
change: "\xC4ndern",
|
|
185
|
+
clear: "L\xF6schen",
|
|
186
|
+
click: "Klicken",
|
|
187
|
+
clickToCopy: "Zum kopieren klicken",
|
|
188
|
+
close: "Schlie\xDFen",
|
|
189
|
+
confirm: "Best\xE4tigen",
|
|
190
|
+
copy: "Kopieren",
|
|
191
|
+
copied: "Kopiert",
|
|
192
|
+
create: "Erstellen",
|
|
193
|
+
decline: "Ablehnen",
|
|
194
|
+
delete: "L\xF6schen",
|
|
195
|
+
discard: "Verwerfen",
|
|
196
|
+
discardChanges: "\xC4nderungen Verwerfen",
|
|
197
|
+
done: "Fertig",
|
|
198
|
+
edit: "Bearbeiten",
|
|
199
|
+
enterText: "Text hier eingeben",
|
|
200
|
+
error: "Fehler",
|
|
201
|
+
exit: "Beenden",
|
|
202
|
+
fieldRequiredError: "Dieses Feld ist erforderlich.",
|
|
203
|
+
invalidEmailError: "Bitte geben Sie eine g\xFCltige E-Mail-Adresse ein.",
|
|
204
|
+
less: "Weniger",
|
|
205
|
+
loading: "L\xE4dt",
|
|
206
|
+
maxLengthError: "Maximale L\xE4nge \xFCberschritten.",
|
|
207
|
+
minLengthError: "Mindestl\xE4nge nicht erreicht.",
|
|
208
|
+
more: "Mehr",
|
|
209
|
+
next: "Weiter",
|
|
210
|
+
no: "Nein",
|
|
211
|
+
none: "Nichts",
|
|
212
|
+
nothingFound: "Nichts gefunden",
|
|
213
|
+
of: "von",
|
|
214
|
+
optional: "Optional",
|
|
215
|
+
pleaseWait: "Bitte warten...",
|
|
216
|
+
previous: "Vorherige",
|
|
217
|
+
remove: "Entfernen",
|
|
218
|
+
required: "Erforderlich",
|
|
219
|
+
reset: "Zur\xFCcksetzen",
|
|
220
|
+
save: "Speichern",
|
|
221
|
+
saved: "Gespeichert",
|
|
222
|
+
search: "Suche",
|
|
223
|
+
select: "Select",
|
|
224
|
+
selectOption: "Option ausw\xE4hlen",
|
|
225
|
+
show: "Anzeigen",
|
|
226
|
+
showMore: "Mehr anzeigen",
|
|
227
|
+
showLess: "Weniger anzeigen",
|
|
228
|
+
submit: "Abschicken",
|
|
229
|
+
success: "Erfolg",
|
|
230
|
+
update: "Update",
|
|
231
|
+
unsavedChanges: "Ungespeicherte \xC4nderungen",
|
|
232
|
+
unsavedChangesSaveQuestion: "M\xF6chtest du die \xC4nderungen speichern?",
|
|
233
|
+
yes: "Ja"
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
// src/localization/defaults/time.ts
|
|
238
|
+
var monthTranslation = {
|
|
239
|
+
en: {
|
|
240
|
+
january: "January",
|
|
241
|
+
february: "Febuary",
|
|
242
|
+
march: "March",
|
|
243
|
+
april: "April",
|
|
244
|
+
may: "May",
|
|
245
|
+
june: "June",
|
|
246
|
+
july: "July",
|
|
247
|
+
august: "August",
|
|
248
|
+
september: "September",
|
|
249
|
+
october: "October",
|
|
250
|
+
november: "November",
|
|
251
|
+
december: "December"
|
|
252
|
+
},
|
|
253
|
+
de: {
|
|
254
|
+
january: "Januar",
|
|
255
|
+
february: "Febuar",
|
|
256
|
+
march: "M\xE4rz",
|
|
257
|
+
april: "April",
|
|
258
|
+
may: "Mai",
|
|
259
|
+
june: "Juni",
|
|
260
|
+
july: "Juli",
|
|
261
|
+
august: "August",
|
|
262
|
+
september: "September",
|
|
263
|
+
october: "October",
|
|
264
|
+
november: "November",
|
|
265
|
+
december: "December"
|
|
266
|
+
}
|
|
267
|
+
};
|
|
268
|
+
var timeTranslation = {
|
|
269
|
+
en: {
|
|
270
|
+
...monthTranslation.en,
|
|
271
|
+
century: { one: "Century", other: "Centuries" },
|
|
272
|
+
decade: { one: "Decade", other: "Decades" },
|
|
273
|
+
year: { one: "Year", other: "Years" },
|
|
274
|
+
month: { one: "Month", other: "Months" },
|
|
275
|
+
day: { one: "Day", other: "Days" },
|
|
276
|
+
hour: { one: "Hour", other: "Hours" },
|
|
277
|
+
minute: { one: "Minute", other: "Minutes" },
|
|
278
|
+
second: { one: "Second", other: "Seconds" },
|
|
279
|
+
millisecond: { one: "Millisecond", other: "Milliseconds" },
|
|
280
|
+
microsecond: { one: "Microsecond", other: "Microseconds" },
|
|
281
|
+
nanosecond: { one: "Nanosecond", other: "Nanoseconds" },
|
|
282
|
+
yesterday: "Yesterday",
|
|
283
|
+
today: "Today",
|
|
284
|
+
tomorrow: "Tomorrow",
|
|
285
|
+
in: "in",
|
|
286
|
+
ago: "ago"
|
|
287
|
+
},
|
|
288
|
+
de: {
|
|
289
|
+
...monthTranslation.de,
|
|
290
|
+
century: { one: "Jahrhundert", other: "Jahrhunderte" },
|
|
291
|
+
decade: { one: "Jahrzehnt", other: "Jahrzehnte" },
|
|
292
|
+
year: { one: "Jahr", other: "Jahre" },
|
|
293
|
+
month: { one: "Monat", other: "Monate" },
|
|
294
|
+
day: { one: "Tag", other: "Tage" },
|
|
295
|
+
hour: { one: "Stunde", other: "Stunden" },
|
|
296
|
+
minute: { one: "Minute", other: "Minuten" },
|
|
297
|
+
second: { one: "Sekunde", other: "Sekunden" },
|
|
298
|
+
millisecond: { one: "Millisekunde", other: "Millisekunden" },
|
|
299
|
+
microsecond: { one: "Mikrosekunde", other: "Mikrosekunden" },
|
|
300
|
+
nanosecond: { one: "Nanosekunde", other: "Nanosekunden" },
|
|
301
|
+
yesterday: "Gestern",
|
|
302
|
+
today: "Heute",
|
|
303
|
+
tomorrow: "Morgen",
|
|
304
|
+
in: "in",
|
|
305
|
+
ago: "vor"
|
|
306
|
+
}
|
|
307
|
+
};
|
|
308
|
+
|
|
309
|
+
// src/localization/useTranslation.ts
|
|
310
|
+
var TranslationPluralCount = {
|
|
311
|
+
zero: 0,
|
|
312
|
+
one: 1,
|
|
313
|
+
two: 2,
|
|
314
|
+
few: 3,
|
|
315
|
+
many: 11,
|
|
316
|
+
other: -1
|
|
317
|
+
};
|
|
318
|
+
var useTranslation = (translations, overwriteTranslation = {}) => {
|
|
319
|
+
const { language: languageProp, translation: overwrite } = overwriteTranslation;
|
|
320
|
+
const { language: inferredLanguage } = useLanguage();
|
|
321
|
+
const usedLanguage = languageProp ?? inferredLanguage;
|
|
322
|
+
const usedTranslations = [...translations];
|
|
323
|
+
if (overwrite) {
|
|
324
|
+
usedTranslations.push(overwrite);
|
|
325
|
+
}
|
|
326
|
+
return (key, options) => {
|
|
327
|
+
const { count, replacements } = { ...{ count: 0, replacements: {} }, ...options };
|
|
328
|
+
try {
|
|
329
|
+
for (let i = translations.length - 1; i >= 0; i--) {
|
|
330
|
+
const translation = translations[i];
|
|
331
|
+
const localizedTranslation = translation[usedLanguage];
|
|
332
|
+
if (!localizedTranslation) {
|
|
333
|
+
continue;
|
|
334
|
+
}
|
|
335
|
+
const value = localizedTranslation[key];
|
|
336
|
+
if (!value) {
|
|
337
|
+
continue;
|
|
338
|
+
}
|
|
339
|
+
let forProcessing;
|
|
340
|
+
if (typeof value !== "string") {
|
|
341
|
+
if (count === TranslationPluralCount.zero && value?.zero) {
|
|
342
|
+
forProcessing = value.zero;
|
|
343
|
+
} else if (count === TranslationPluralCount.one && value?.one) {
|
|
344
|
+
forProcessing = value.one;
|
|
345
|
+
} else if (count === TranslationPluralCount.two && value?.two) {
|
|
346
|
+
forProcessing = value.two;
|
|
347
|
+
} else if (TranslationPluralCount.few <= count && count < TranslationPluralCount.many && value?.few) {
|
|
348
|
+
forProcessing = value.few;
|
|
349
|
+
} else if (count > TranslationPluralCount.many && value?.many) {
|
|
350
|
+
forProcessing = value.many;
|
|
351
|
+
} else {
|
|
352
|
+
forProcessing = value.other;
|
|
353
|
+
}
|
|
354
|
+
} else {
|
|
355
|
+
forProcessing = value;
|
|
356
|
+
}
|
|
357
|
+
forProcessing = forProcessing.replace(/\{\{(\w+)}}/g, (_, placeholder) => {
|
|
358
|
+
return replacements[placeholder] ?? `{{key:${placeholder}}}`;
|
|
359
|
+
});
|
|
360
|
+
return forProcessing;
|
|
361
|
+
}
|
|
362
|
+
} catch (e) {
|
|
363
|
+
console.error(e);
|
|
364
|
+
}
|
|
365
|
+
return `{{${usedLanguage}:${key}}}`;
|
|
366
|
+
};
|
|
367
|
+
};
|
|
368
|
+
export {
|
|
369
|
+
LanguageContext,
|
|
370
|
+
LanguageProvider,
|
|
371
|
+
LanguageUtil,
|
|
372
|
+
TranslationPluralCount,
|
|
373
|
+
formTranslation,
|
|
374
|
+
monthTranslation,
|
|
375
|
+
timeTranslation,
|
|
376
|
+
useLanguage,
|
|
377
|
+
useLocale,
|
|
378
|
+
useTranslation
|
|
379
|
+
};
|
|
380
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/localization/LanguageProvider.tsx","../../src/hooks/useLocalStorage.ts","../../src/utils/storage.ts","../../src/utils/resolveSetState.ts","../../src/localization/util.ts","../../src/localization/defaults/form.ts","../../src/localization/defaults/time.ts","../../src/localization/useTranslation.ts"],"sourcesContent":["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 '@/src/utils/storage'\nimport { resolveSetState } from '@/src/utils/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}","class StorageService {\n // this seems to be a bug in eslint as 'paramter-properties' is a special syntax of typescript\n\n constructor(private storage: Storage) {\n }\n\n public get<T>(key: string): T | null {\n const value = this.storage.getItem(key)\n if (value === null) {\n return null\n }\n return JSON.parse(value)\n }\n\n public set<T>(key: string, value: T) {\n this.storage.setItem(key, JSON.stringify(value))\n }\n\n public delete(key: string) {\n this.storage.removeItem(key)\n }\n\n public deleteAll() {\n this.storage.clear()\n }\n}\n\nexport class LocalStorageService extends StorageService {\n constructor() {\n super(window.localStorage)\n }\n}\n\nexport class SessionStorageService extends StorageService {\n constructor() {\n super(window.sessionStorage)\n }\n}\n","import type { SetStateAction } from 'react'\n\nexport function resolveSetState<T>(action: SetStateAction<T>, prev: T): T {\n return typeof action === 'function' ? (action as (prev: T) => T)(prev) : action\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 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 nothingFound: 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 nothingFound: 'Nothing found',\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 nothingFound: 'Nichts gefunden',\n of: 'von',\n optional: 'Optional',\n pleaseWait: 'Bitte warten...',\n previous: 'Vorherige',\n remove: 'Entfernen',\n required: 'Erforderlich',\n reset: 'Zurücksetzen',\n save: 'Speichern',\n saved: 'Gespeichert',\n search: 'Suche',\n select: 'Select',\n selectOption: 'Option auswählen',\n show: 'Anzeigen',\n showMore: 'Mehr anzeigen',\n showLess: 'Weniger anzeigen',\n submit: 'Abschicken',\n success: 'Erfolg',\n update: 'Update',\n unsavedChanges: 'Ungespeicherte Änderungen',\n unsavedChangesSaveQuestion: 'Möchtest du die Änderungen speichern?',\n yes: 'Ja',\n }\n}\n","import type { TranslationPlural, Translation } from '../useTranslation'\n\nexport type MonthTranslationType = {\n january: string,\n february: string,\n march: string,\n april: string,\n may: string,\n june: string,\n july: string,\n august: string,\n september: string,\n october: string,\n november: string,\n december: string,\n}\n\nexport const monthTranslation: Translation<MonthTranslationType> = {\n en: {\n january: 'January',\n february: 'Febuary',\n march: 'March',\n april: 'April',\n may: 'May',\n june: 'June',\n july: 'July',\n august: 'August',\n september: 'September',\n october: 'October',\n november: 'November',\n december: 'December',\n },\n de: {\n january: 'Januar',\n february: 'Febuar',\n march: 'März',\n april: 'April',\n may: 'Mai',\n june: 'Juni',\n july: 'Juli',\n august: 'August',\n september: 'September',\n october: 'October',\n november: 'November',\n december: 'December',\n }\n}\n\nexport type TimeTranslationType = {\n century: TranslationPlural,\n decade: TranslationPlural,\n year: TranslationPlural,\n month: TranslationPlural,\n day: TranslationPlural,\n hour: TranslationPlural,\n minute: TranslationPlural,\n second: TranslationPlural,\n millisecond: TranslationPlural,\n microsecond: TranslationPlural,\n nanosecond: TranslationPlural,\n yesterday: string,\n today: string,\n tomorrow: string,\n in: string,\n ago: string,\n} & MonthTranslationType\n\nexport const timeTranslation: Translation<TimeTranslationType> = {\n en: {\n ...monthTranslation.en,\n century: { one: 'Century', other: 'Centuries' },\n decade: { one: 'Decade', other: 'Decades' },\n year: { one: 'Year', other: 'Years' },\n month: { one: 'Month', other: 'Months' },\n day: { one: 'Day', other: 'Days' },\n hour: { one: 'Hour', other: 'Hours' },\n minute: { one: 'Minute', other: 'Minutes' },\n second: { one: 'Second', other: 'Seconds' },\n millisecond: { one: 'Millisecond', other: 'Milliseconds' },\n microsecond: { one: 'Microsecond', other: 'Microseconds' },\n nanosecond: { one: 'Nanosecond', other: 'Nanoseconds' },\n yesterday: 'Yesterday',\n today: 'Today',\n tomorrow: 'Tomorrow',\n in: 'in',\n ago: 'ago',\n },\n de: {\n ...monthTranslation.de,\n century: { one: 'Jahrhundert', other: 'Jahrhunderte' },\n decade: { one: 'Jahrzehnt', other: 'Jahrzehnte' },\n year: { one: 'Jahr', other: 'Jahre' },\n month: { one: 'Monat', other: 'Monate' },\n day: { one: 'Tag', other: 'Tage' },\n hour: { one: 'Stunde', other: 'Stunden' },\n minute: { one: 'Minute', other: 'Minuten' },\n second: { one: 'Sekunde', other: 'Sekunden' },\n millisecond: { one: 'Millisekunde', other: 'Millisekunden' },\n microsecond: { one: 'Mikrosekunde', other: 'Mikrosekunden' },\n nanosecond: { one: 'Nanosekunde', other: 'Nanosekunden' },\n yesterday: 'Gestern',\n today: 'Heute',\n tomorrow: 'Morgen',\n in: 'in',\n ago: 'vor',\n }\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}"],"mappings":"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","names":["useState","useState","language"]}
|
package/dist/style/globals.css
CHANGED
|
@@ -421,6 +421,12 @@
|
|
|
421
421
|
.z-100 {
|
|
422
422
|
z-index: 100;
|
|
423
423
|
}
|
|
424
|
+
.z-2000 {
|
|
425
|
+
z-index: 2000;
|
|
426
|
+
}
|
|
427
|
+
.z-2001 {
|
|
428
|
+
z-index: 2001;
|
|
429
|
+
}
|
|
424
430
|
.z-\[1\] {
|
|
425
431
|
z-index: 1;
|
|
426
432
|
}
|
|
@@ -539,6 +545,11 @@
|
|
|
539
545
|
flex-direction: row;
|
|
540
546
|
column-gap: calc(var(--spacing) * 4);
|
|
541
547
|
}
|
|
548
|
+
.flex-row-6 {
|
|
549
|
+
display: flex;
|
|
550
|
+
flex-direction: row;
|
|
551
|
+
column-gap: calc(var(--spacing) * 6);
|
|
552
|
+
}
|
|
542
553
|
.row {
|
|
543
554
|
display: flex;
|
|
544
555
|
flex-direction: row;
|
|
@@ -574,8 +585,10 @@
|
|
|
574
585
|
flex-direction: column;
|
|
575
586
|
row-gap: calc(var(--spacing) * 6);
|
|
576
587
|
}
|
|
577
|
-
|
|
578
|
-
display:
|
|
588
|
+
.flex-col-8 {
|
|
589
|
+
display: flex;
|
|
590
|
+
flex-direction: column;
|
|
591
|
+
row-gap: calc(var(--spacing) * 8);
|
|
579
592
|
}
|
|
580
593
|
.block {
|
|
581
594
|
display: block;
|
|
@@ -824,6 +837,9 @@
|
|
|
824
837
|
.min-w-20 {
|
|
825
838
|
min-width: calc(var(--spacing) * 20);
|
|
826
839
|
}
|
|
840
|
+
.min-w-32 {
|
|
841
|
+
min-width: calc(var(--spacing) * 32);
|
|
842
|
+
}
|
|
827
843
|
.min-w-40 {
|
|
828
844
|
min-width: calc(var(--spacing) * 40);
|
|
829
845
|
}
|
|
@@ -906,9 +922,6 @@
|
|
|
906
922
|
.animate-pulse {
|
|
907
923
|
animation: var(--animate-pulse);
|
|
908
924
|
}
|
|
909
|
-
.\!cursor-grabbing {
|
|
910
|
-
cursor: grabbing !important;
|
|
911
|
-
}
|
|
912
925
|
.cursor-col-resize {
|
|
913
926
|
cursor: col-resize;
|
|
914
927
|
}
|
|
@@ -979,6 +992,9 @@
|
|
|
979
992
|
.gap-x-2 {
|
|
980
993
|
column-gap: calc(var(--spacing) * 2);
|
|
981
994
|
}
|
|
995
|
+
.gap-x-6 {
|
|
996
|
+
column-gap: calc(var(--spacing) * 6);
|
|
997
|
+
}
|
|
982
998
|
.gap-y-1 {
|
|
983
999
|
row-gap: calc(var(--spacing) * 1);
|
|
984
1000
|
}
|
|
@@ -1382,6 +1398,9 @@
|
|
|
1382
1398
|
.p-4 {
|
|
1383
1399
|
padding: calc(var(--spacing) * 4);
|
|
1384
1400
|
}
|
|
1401
|
+
.p-8 {
|
|
1402
|
+
padding: calc(var(--spacing) * 8);
|
|
1403
|
+
}
|
|
1385
1404
|
.px-1 {
|
|
1386
1405
|
padding-inline: calc(var(--spacing) * 1);
|
|
1387
1406
|
}
|
|
@@ -1975,11 +1994,14 @@
|
|
|
1975
1994
|
-webkit-user-select: none;
|
|
1976
1995
|
user-select: none;
|
|
1977
1996
|
}
|
|
1978
|
-
.animation-delay-3000 {
|
|
1979
|
-
animation-delay: calc(3000 * 1ms);
|
|
1980
|
-
}
|
|
1981
1997
|
.shadow-hw-bottom {
|
|
1982
1998
|
--shadow-bottom: 0 calc(1rem/16) calc(20rem/16) 0 var(--tw-shadow-color, rgb(0 0 0 / 10%));
|
|
1999
|
+
&:where([data-theme=dark], [data-theme=dark] *) {
|
|
2000
|
+
--shadow-bottom: 0 calc(1rem/16) calc(20rem/16) 0 var(--tw-shadow-color, rgb(0 0 0 / 20%));
|
|
2001
|
+
}
|
|
2002
|
+
}
|
|
2003
|
+
.animation-delay-3000 {
|
|
2004
|
+
animation-delay: calc(3000 * 1ms);
|
|
1983
2005
|
}
|
|
1984
2006
|
.shadow-r-4 {
|
|
1985
2007
|
--shadow-right: calc(4 * 1px) 0 calc(4 * 1px) 0 var(--tw-shadow-color, rgb(0 0 0 / 2%));
|
|
@@ -2144,6 +2166,11 @@
|
|
|
2144
2166
|
cursor: pointer;
|
|
2145
2167
|
}
|
|
2146
2168
|
}
|
|
2169
|
+
.group-focus-within\/slide\:border-primary {
|
|
2170
|
+
&:is(:where(.group\/slide):focus-within *) {
|
|
2171
|
+
border-color: var(--color-primary);
|
|
2172
|
+
}
|
|
2173
|
+
}
|
|
2147
2174
|
.group-hover\:border-primary {
|
|
2148
2175
|
&:is(:where(.group):hover *) {
|
|
2149
2176
|
@media (hover: hover) {
|
|
@@ -2664,6 +2691,16 @@
|
|
|
2664
2691
|
display: block;
|
|
2665
2692
|
}
|
|
2666
2693
|
}
|
|
2694
|
+
.desktop\:flex {
|
|
2695
|
+
@media (width >= 64rem) {
|
|
2696
|
+
display: flex;
|
|
2697
|
+
}
|
|
2698
|
+
}
|
|
2699
|
+
.desktop\:hidden {
|
|
2700
|
+
@media (width >= 64rem) {
|
|
2701
|
+
display: none;
|
|
2702
|
+
}
|
|
2703
|
+
}
|
|
2667
2704
|
.desktop\:w-1\/2 {
|
|
2668
2705
|
@media (width >= 64rem) {
|
|
2669
2706
|
width: calc(1/2 * 100%);
|
|
@@ -3193,9 +3230,25 @@
|
|
|
3193
3230
|
padding-inline: calc(var(--spacing) * 24);
|
|
3194
3231
|
}
|
|
3195
3232
|
}
|
|
3196
|
-
|
|
3197
|
-
|
|
3233
|
+
.link {
|
|
3234
|
+
border-radius: 0.25rem;
|
|
3235
|
+
padding: calc(var(--spacing) * 2);
|
|
3236
|
+
font-size: var(--text-lg);
|
|
3237
|
+
line-height: var(--tw-leading, var(--text-lg--line-height));
|
|
3238
|
+
--tw-font-weight: var(--font-weight-bold);
|
|
3239
|
+
font-weight: var(--font-weight-bold);
|
|
3240
|
+
text-decoration-thickness: 3px;
|
|
3241
|
+
&:hover {
|
|
3242
|
+
@media (hover: hover) {
|
|
3243
|
+
text-decoration-line: underline;
|
|
3244
|
+
}
|
|
3245
|
+
}
|
|
3246
|
+
&:focus {
|
|
3247
|
+
text-decoration-line: underline;
|
|
3248
|
+
}
|
|
3249
|
+
}
|
|
3198
3250
|
* {
|
|
3251
|
+
list-style-type: none;
|
|
3199
3252
|
border-color: var(--color-border);
|
|
3200
3253
|
}
|
|
3201
3254
|
html {
|
|
@@ -18,7 +18,6 @@
|
|
|
18
18
|
--breakpoint-desktop: 64rem; /* 1024px for 16px font-size*/
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
/* Styles that can be overwritten by utils */
|
|
22
21
|
@layer components {
|
|
23
22
|
.btn-sm {
|
|
24
23
|
@apply flex-row-1 items-center justify-center px-1.5 py-1 rounded-1.5 h-8 min-h-8;
|
|
@@ -79,11 +78,13 @@
|
|
|
79
78
|
.section-padding {
|
|
80
79
|
@apply px-6 tablet:px-12 desktop:px-24 py-16;
|
|
81
80
|
}
|
|
82
|
-
}
|
|
83
81
|
|
|
84
|
-
|
|
82
|
+
.link {
|
|
83
|
+
@apply decoration-3 p-2 hover:underline focus:underline font-bold text-lg rounded;
|
|
84
|
+
}
|
|
85
|
+
|
|
85
86
|
* {
|
|
86
|
-
@apply border-border;
|
|
87
|
+
@apply border-border list-none;
|
|
87
88
|
}
|
|
88
89
|
|
|
89
90
|
html {
|
|
@@ -41,6 +41,10 @@
|
|
|
41
41
|
|
|
42
42
|
@utility shadow-hw-bottom {
|
|
43
43
|
--shadow-bottom: 0 calc(1rem/16) calc(20rem/16) 0 var(--tw-shadow-color, rgb(0 0 0 / 10%));
|
|
44
|
+
|
|
45
|
+
@variant dark {
|
|
46
|
+
--shadow-bottom: 0 calc(1rem/16) calc(20rem/16) 0 var(--tw-shadow-color, rgb(0 0 0 / 20%));
|
|
47
|
+
}
|
|
44
48
|
}
|
|
45
49
|
|
|
46
50
|
@layer utilities {
|