@scm-manager/ui-core 4.0.0-REACT18-20250701-125025 → 4.0.0-REACT19

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 (56) hide show
  1. package/{src/base/buttons/a11y.test.ts → .storybook/i18n.ts} +27 -9
  2. package/.storybook/main.ts +54 -0
  3. package/.storybook/preview-head.html +6 -1
  4. package/.storybook/preview.tsx +125 -0
  5. package/.turbo/turbo-test.log +164 -0
  6. package/.turbo/turbo-typecheck.log +3 -2
  7. package/package.json +37 -42
  8. package/src/base/buttons/Button.stories.tsx +179 -70
  9. package/src/base/buttons/Button.tsx +9 -9
  10. package/src/base/forms/AddListEntryForm.tsx +8 -8
  11. package/src/base/forms/ConfigurationForm.tsx +14 -5
  12. package/src/base/forms/Form.stories.tsx +599 -289
  13. package/src/base/forms/Form.tsx +8 -8
  14. package/src/base/forms/FormPathContext.tsx +3 -3
  15. package/src/base/forms/ScmFormContext.tsx +7 -4
  16. package/src/base/forms/ScmFormListContext.tsx +2 -1
  17. package/src/base/forms/base/Field.tsx +1 -1
  18. package/src/base/forms/base/label/Label.tsx +1 -1
  19. package/src/base/forms/chip-input/ChipInputField.stories.tsx +109 -28
  20. package/src/base/forms/chip-input/ChipInputField.tsx +20 -8
  21. package/src/base/forms/chip-input/ControlledChipInputField.tsx +3 -1
  22. package/src/base/forms/combobox/Combobox.stories.tsx +216 -89
  23. package/src/base/forms/combobox/Combobox.tsx +4 -2
  24. package/src/base/forms/combobox/ComboboxField.tsx +2 -1
  25. package/src/base/forms/headless-chip-input/ChipInput.tsx +9 -9
  26. package/src/base/forms/helpers.ts +12 -9
  27. package/src/base/forms/input/ControlledSecretConfirmationField.tsx +4 -2
  28. package/src/base/forms/radio-button/RadioButton.stories.tsx +317 -124
  29. package/src/base/forms/radio-button/RadioButton.tsx +8 -4
  30. package/src/base/forms/radio-button/RadioButtonContext.tsx +2 -1
  31. package/src/base/forms/table/ControlledColumn.tsx +1 -1
  32. package/src/base/forms/table/ControlledTable.tsx +12 -4
  33. package/src/base/helpers/useDocumentTitle.test.ts +15 -7
  34. package/src/base/layout/card/Card.stories.tsx +171 -72
  35. package/src/base/layout/card/Card.tsx +4 -4
  36. package/src/base/layout/card/CardDetail.tsx +2 -3
  37. package/src/base/layout/card-list/CardList.stories.tsx +283 -169
  38. package/src/base/layout/collapsible/Collapsible.stories.tsx +54 -16
  39. package/src/base/layout/index.ts +2 -5
  40. package/src/base/layout/tabs/Tabs.stories.tsx +58 -16
  41. package/src/base/layout/templates/data-page/DataPage.stories.tsx +289 -156
  42. package/src/base/layout/templates/data-page/DataPageHeader.tsx +1 -1
  43. package/src/base/overlays/dialog/Dialog.stories.tsx +94 -34
  44. package/src/base/overlays/menu/Menu.stories.tsx +116 -48
  45. package/src/base/overlays/menu/Menu.tsx +1 -0
  46. package/src/base/overlays/popover/Popover.stories.tsx +50 -37
  47. package/src/base/shortcuts/iterator/keyboardIterator.test.tsx +16 -7
  48. package/src/base/shortcuts/iterator/keyboardIterator.tsx +13 -5
  49. package/src/base/status/StatusIcon.stories.tsx +76 -27
  50. package/src/base/status/index.ts +1 -1
  51. package/src/base/text/SplitAndReplace.stories.tsx +128 -50
  52. package/src/base/text/index.ts +1 -1
  53. package/.storybook/RemoveThemesPlugin.js +0 -49
  54. package/.storybook/main.js +0 -86
  55. package/.storybook/preview.js +0 -87
  56. package/src/base/buttons/image-snapshot.test.ts +0 -26
@@ -14,14 +14,32 @@
14
14
  * along with this program. If not, see https://www.gnu.org/licenses/.
15
15
  */
16
16
 
17
- import initStoryshots from "@storybook/addon-storyshots";
18
- import { axeTest } from "@storybook/addon-storyshots-puppeteer";
19
- import path from "path";
17
+ import i18n from "i18next";
18
+ import { initReactI18next } from "react-i18next";
20
19
 
21
- initStoryshots({
22
- suite: "A11y checks",
23
- test: axeTest({
24
- storybookUrl: `file://${path.resolve(__dirname, "../storybook-static")}`,
25
- }),
26
- storyNameRegex: /High-Contrast States/,
20
+ i18n.use(initReactI18next).init({
21
+ lng: "en",
22
+ fallbackLng: "en",
23
+ ns: ["common"],
24
+ defaultNS: "common",
25
+ debug: true,
26
+
27
+ interpolation: {
28
+ escapeValue: false,
29
+ },
30
+
31
+ resources: {
32
+ en: {
33
+ common: {
34
+ greeting: "Hello",
35
+ },
36
+ },
37
+ de: {
38
+ common: {
39
+ greeting: "Hallo",
40
+ },
41
+ },
42
+ },
27
43
  });
44
+
45
+ export default i18n;
@@ -0,0 +1,54 @@
1
+ /*
2
+ * Copyright (c) 2020 - present Cloudogu GmbH
3
+ *
4
+ * This program is free software: you can redistribute it and/or modify it under
5
+ * the terms of the GNU Affero General Public License as published by the Free
6
+ * Software Foundation, version 3.
7
+ *
8
+ * This program is distributed in the hope that it will be useful, but WITHOUT
9
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
10
+ * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
11
+ * details.
12
+ *
13
+ * You should have received a copy of the GNU Affero General Public License
14
+ * along with this program. If not, see https://www.gnu.org/licenses/.
15
+ */
16
+
17
+ import { mergeConfig } from "vite";
18
+ import path = require("path");
19
+
20
+ const config = {
21
+ stories: ["../src/**/*.stories.@(ts|tsx)"],
22
+ addons: [
23
+ {
24
+ name: "@storybook/addon-essentials",
25
+ options: {
26
+ actions: false,
27
+ },
28
+ },
29
+ "@storybook/addon-links",
30
+ "@storybook/addon-interactions",
31
+ "@storybook/addon-toolbars",
32
+ ],
33
+ framework: {
34
+ name: "@storybook/react-vite",
35
+ options: {},
36
+ },
37
+ typescript: {
38
+ reactDocgen: false,
39
+ },
40
+ async viteFinal(config: any) {
41
+ return mergeConfig(config, {
42
+ resolve: {
43
+ alias: {
44
+ "decode-named-character-reference": require.resolve("decode-named-character-reference"),
45
+ "react-query/devtools": require.resolve("@tanstack/react-query-devtools"),
46
+ "@ui-styles": path.resolve(__dirname, "../../ui-styles/src"),
47
+ },
48
+ },
49
+ plugins: [],
50
+ });
51
+ },
52
+ };
53
+
54
+ export default config;
@@ -14,4 +14,9 @@
14
14
  along with this program. If not, see https://www.gnu.org/licenses/.
15
15
  -->
16
16
 
17
- <link id="ui-theme" data-theme="light" rel="stylesheet" type="text/css" href="/ui-theme-light.css">
17
+ <link
18
+ id="theme"
19
+ data-theme="light"
20
+ rel="stylesheet"
21
+ type="text/css"
22
+ href="">
@@ -0,0 +1,125 @@
1
+ /*
2
+ * Copyright (c) 2020 - present Cloudogu GmbH
3
+ *
4
+ * This program is free software: you can redistribute it and/or modify it under
5
+ * the terms of the GNU Affero General Public License as published by the Free
6
+ * Software Foundation, version 3.
7
+ *
8
+ * This program is distributed in the hope that it will be useful, but WITHOUT
9
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
10
+ * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
11
+ * details.
12
+ *
13
+ * You should have received a copy of the GNU Affero General Public License
14
+ * along with this program. If not, see https://www.gnu.org/licenses/.
15
+ */
16
+
17
+ import type { Preview, Decorator } from "@storybook/react";
18
+ import * as React from "react";
19
+ import { Suspense, useEffect } from "react";
20
+ import { I18nextProvider } from "react-i18next";
21
+ import i18n from "./i18n";
22
+ import { MemoryRouter } from "react-router-dom";
23
+
24
+ // @ts-ignore
25
+ import lightStyle from "@ui-styles/light.scss?url";
26
+ // @ts-ignore
27
+ import darkStyle from "@ui-styles/dark.scss?url";
28
+ // @ts-ignore
29
+ import highContrastStyle from "@ui-styles/highcontrast.scss?url";
30
+
31
+ const THEMES: Record<string, string> = {
32
+ light: lightStyle,
33
+ dark: darkStyle,
34
+ highcontrast: highContrastStyle,
35
+ };
36
+
37
+ const withI18next: Decorator = (Story, context) => {
38
+ const { locale } = context.globals;
39
+
40
+ useEffect(() => {
41
+ if (locale) {
42
+ i18n.changeLanguage(locale);
43
+ }
44
+ }, [locale]);
45
+
46
+ return (
47
+ <Suspense fallback={<div>loading translations...</div>}>
48
+ <I18nextProvider i18n={i18n}>
49
+ <Story />
50
+ </I18nextProvider>
51
+ </Suspense>
52
+ );
53
+ };
54
+
55
+ function setTheme(theme: string) {
56
+ const id = "storybook-theme-stylesheet";
57
+ let linkEl = document.getElementById(id) as HTMLLinkElement | null;
58
+
59
+ if (!linkEl) {
60
+ linkEl = document.createElement("link");
61
+ linkEl.id = id;
62
+ linkEl.rel = "stylesheet";
63
+ document.head.appendChild(linkEl);
64
+ }
65
+
66
+ linkEl.href = THEMES[theme];
67
+ }
68
+
69
+ export const withTheme: Decorator = (Story, context) => {
70
+ const theme = context.globals.theme || "light";
71
+
72
+ const linkEl = document.getElementById("theme") as HTMLLinkElement | null;
73
+ if (linkEl) {
74
+ linkEl.setAttribute("href", THEMES[theme]);
75
+ linkEl.setAttribute("data-theme", theme);
76
+ }
77
+
78
+ return <Story />;
79
+ };
80
+
81
+ const withRouter: Decorator = (Story, context) => (
82
+ <MemoryRouter key={context.id} initialEntries={["/"]}>
83
+ <Story />
84
+ </MemoryRouter>
85
+ );
86
+
87
+ const preview: Preview = {
88
+ decorators: [withRouter, withI18next, withTheme],
89
+ globalTypes: {
90
+ locale: {
91
+ name: "Locale",
92
+ description: "Internationalization locale",
93
+ toolbar: {
94
+ icon: "globe",
95
+ items: [
96
+ { value: "en", title: "English" },
97
+ { value: "de", title: "Deutsch" },
98
+ ],
99
+ showName: true,
100
+ },
101
+ },
102
+ theme: {
103
+ name: "Theme",
104
+ description: "Global theme for components",
105
+ toolbar: {
106
+ icon: "paintbrush",
107
+ items: [
108
+ { value: "light", title: "Light" },
109
+ { value: "dark", title: "Dark" },
110
+ { value: "highcontrast", title: "High Contrast" },
111
+ ],
112
+ showName: true,
113
+ },
114
+ },
115
+ },
116
+ parameters: {
117
+ actions: { argTypesRegex: "^on[A-Z].*" },
118
+ storySort: {
119
+ method: "alphabetical",
120
+ order: [],
121
+ },
122
+ },
123
+ };
124
+
125
+ export default preview;
@@ -0,0 +1,164 @@
1
+ yarn run v1.22.22
2
+ $ jest
3
+ PASS src/base/shortcuts/iterator/keyboardIterator.test.tsx (10.676 s)
4
+ PASS src/base/helpers/useDocumentTitle.test.ts (11.697 s)
5
+ PASS src/base/text/textSplitAndReplace.test.ts (14.067 s)
6
+ ----------------------------------------|---------|----------|---------|---------|-------------------
7
+ File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
8
+ ----------------------------------------|---------|----------|---------|---------|-------------------
9
+ All files | 2.41 | 2.22 | 1.35 | 2.38 |
10
+ src | 0 | 0 | 0 | 0 |
11
+ index.ts | 0 | 0 | 0 | 0 |
12
+ src/base | 0 | 0 | 0 | 0 |
13
+ index.ts | 0 | 0 | 0 | 0 |
14
+ src/base/buttons | 0 | 0 | 0 | 0 |
15
+ Button.stories.tsx | 0 | 100 | 0 | 0 | 141-229
16
+ Button.tsx | 0 | 0 | 0 | 0 | 27-216
17
+ Icon.tsx | 0 | 0 | 0 | 0 | 37-38
18
+ index.ts | 0 | 0 | 0 | 0 |
19
+ src/base/forms | 0 | 0 | 0 | 0 |
20
+ AddListEntryForm.tsx | 0 | 0 | 0 | 0 | 27-97
21
+ ConfigurationForm.tsx | 0 | 0 | 0 | 0 | 40-47
22
+ Form.stories.tsx | 0 | 100 | 0 | 0 | 477-756
23
+ Form.tsx | 0 | 0 | 0 | 0 | 32-171
24
+ FormPathContext.tsx | 0 | 0 | 0 | 0 | 19-64
25
+ FormRow.tsx | 0 | 0 | 0 | 0 | 20-22
26
+ ScmFormContext.tsx | 0 | 100 | 0 | 0 | 27-37
27
+ ScmFormListContext.tsx | 0 | 0 | 0 | 0 | 24-57
28
+ helpers.ts | 0 | 0 | 0 | 0 | 21-65
29
+ index.ts | 0 | 100 | 100 | 0 | 53-64
30
+ resourceHooks.ts | 0 | 0 | 0 | 0 | 23-151
31
+ variants.ts | 0 | 0 | 0 | 0 | 17-19
32
+ src/base/forms/base | 0 | 0 | 0 | 0 |
33
+ Control.tsx | 0 | 100 | 0 | 0 | 20-21
34
+ ExpandableText.tsx | 0 | 100 | 0 | 0 | 39-41
35
+ Field.tsx | 0 | 0 | 0 | 0 | 20-25
36
+ src/base/forms/base/field-message | 0 | 100 | 0 | 0 |
37
+ FieldMessage.tsx | 0 | 100 | 0 | 0 | 23-24
38
+ src/base/forms/base/help | 0 | 100 | 0 | 0 |
39
+ Help.tsx | 0 | 100 | 0 | 0 | 21-22
40
+ src/base/forms/base/label | 0 | 0 | 0 | 0 |
41
+ Label.tsx | 0 | 0 | 0 | 0 | 20-25
42
+ src/base/forms/checkbox | 0 | 0 | 0 | 0 |
43
+ Checkbox.tsx | 0 | 0 | 0 | 0 | 23-64
44
+ CheckboxField.tsx | 0 | 100 | 0 | 0 | 24-25
45
+ ControlledCheckboxField.tsx | 0 | 0 | 0 | 0 | 46-61
46
+ src/base/forms/chip-input | 0 | 0 | 0 | 0 |
47
+ ChipInputField.stories.tsx | 0 | 0 | 0 | 0 | 77-147
48
+ ChipInputField.tsx | 0 | 0 | 0 | 0 | 32-155
49
+ ControlledChipInputField.tsx | 0 | 0 | 0 | 0 | 61-85
50
+ src/base/forms/combobox | 0 | 0 | 0 | 0 |
51
+ Combobox.stories.tsx | 0 | 100 | 0 | 0 | 128-144
52
+ Combobox.tsx | 0 | 0 | 0 | 0 | 34-215
53
+ ComboboxField.tsx | 0 | 0 | 0 | 0 | 31-44
54
+ ControlledComboboxField.tsx | 0 | 0 | 0 | 0 | 52-74
55
+ src/base/forms/headless-chip-input | 0 | 0 | 0 | 0 |
56
+ ChipInput.tsx | 0 | 0 | 0 | 0 | 46-218
57
+ src/base/forms/input | 0 | 0 | 0 | 0 |
58
+ ControlledInputField.tsx | 0 | 0 | 0 | 0 | 48-63
59
+ ControlledSecretConfirmationField.tsx | 0 | 0 | 0 | 0 | 55-113
60
+ Input.tsx | 0 | 100 | 0 | 0 | 27-28
61
+ InputField.tsx | 0 | 0 | 0 | 0 | 44-51
62
+ Textarea.tsx | 0 | 100 | 0 | 0 | 27-28
63
+ src/base/forms/list | 0 | 0 | 0 | 0 |
64
+ ControlledList.tsx | 0 | 0 | 0 | 0 | 47-68
65
+ src/base/forms/misc | 0 | 100 | 0 | 0 |
66
+ RequiredMarker.tsx | 0 | 100 | 0 | 0 | 19-20
67
+ src/base/forms/radio-button | 0 | 0 | 0 | 0 |
68
+ ControlledRadioGroupField.tsx | 0 | 0 | 0 | 0 | 51-65
69
+ RadioButton.stories.tsx | 0 | 100 | 0 | 0 | 236-379
70
+ RadioButton.tsx | 0 | 0 | 0 | 0 | 25-92
71
+ RadioButtonContext.tsx | 0 | 100 | 0 | 0 | 27-34
72
+ RadioGroup.tsx | 0 | 0 | 0 | 0 | 30-35
73
+ RadioGroupField.tsx | 0 | 0 | 0 | 0 | 34-36
74
+ src/base/forms/select | 0 | 0 | 0 | 0 |
75
+ ControlledSelectField.tsx | 0 | 0 | 0 | 0 | 45-58
76
+ Select.tsx | 0 | 0 | 0 | 0 | 32-38
77
+ SelectField.tsx | 0 | 0 | 0 | 0 | 37-41
78
+ src/base/forms/table | 0 | 0 | 0 | 0 |
79
+ ControlledColumn.tsx | 0 | 0 | 0 | 0 | 31-38
80
+ ControlledTable.tsx | 0 | 0 | 0 | 0 | 49-84
81
+ src/base/helpers | 0 | 0 | 0 | 0 |
82
+ devbuild.ts | 0 | 0 | 0 | 0 | 17-35
83
+ index.ts | 0 | 0 | 0 | 0 |
84
+ useAriaId.tsx | 0 | 0 | 0 | 0 | 19-22
85
+ useDocumentTitle.ts | 0 | 0 | 0 | 0 | 29-52
86
+ src/base/layout | 0 | 100 | 100 | 0 |
87
+ index.ts | 0 | 100 | 100 | 0 | 44-80
88
+ src/base/layout/_helpers | 0 | 0 | 0 | 0 |
89
+ with-classes.tsx | 0 | 0 | 0 | 0 | 21-35
90
+ src/base/layout/card | 0 | 0 | 0 | 0 |
91
+ Card.stories.tsx | 0 | 100 | 0 | 0 | 126-147
92
+ Card.tsx | 0 | 0 | 0 | 0 | 21-51
93
+ CardDetail.tsx | 0 | 0 | 0 | 0 | 30-185
94
+ CardRow.tsx | 0 | 100 | 0 | 0 | 24-36
95
+ CardTitle.tsx | 0 | 0 | 0 | 0 | 40-41
96
+ src/base/layout/card-list | 0 | 100 | 0 | 0 |
97
+ CardList.stories.tsx | 0 | 100 | 0 | 0 | 205-279
98
+ CardList.tsx | 0 | 100 | 0 | 0 | 27-63
99
+ src/base/layout/collapsible | 0 | 0 | 0 | 0 |
100
+ Collapsible.stories.tsx | 0 | 100 | 0 | 0 | 44-61
101
+ Collapsible.tsx | 0 | 0 | 0 | 0 | 24-60
102
+ src/base/layout/tabs | 0 | 0 | 0 | 0 |
103
+ TabTrigger.tsx | 0 | 100 | 0 | 0 | 27-28
104
+ Tabs.stories.tsx | 0 | 100 | 0 | 0 | 50-69
105
+ Tabs.tsx | 0 | 0 | 0 | 0 | 26-37
106
+ TabsContent.tsx | 0 | 100 | 100 | 0 | 23
107
+ TabsList.tsx | 0 | 100 | 0 | 0 | 25-26
108
+ src/base/layout/templates/data-page | 0 | 0 | 0 | 0 |
109
+ DataPage.stories.tsx | 0 | 100 | 0 | 0 | 215-322
110
+ DataPageHeader.tsx | 0 | 0 | 0 | 0 | 27-90
111
+ src/base/misc | 0 | 0 | 0 | 0 |
112
+ Image.tsx | 0 | 0 | 0 | 0 | 20-22
113
+ Level.tsx | 0 | 0 | 0 | 0 | 25-26
114
+ Loading.tsx | 0 | 100 | 0 | 0 | 23-35
115
+ SubSubtitle.tsx | 0 | 0 | 0 | 0 | 20-22
116
+ Subtitle.tsx | 0 | 0 | 0 | 0 | 20-22
117
+ Title.tsx | 0 | 0 | 0 | 0 | 25-35
118
+ index.ts | 0 | 0 | 0 | 0 |
119
+ src/base/notifications | 0 | 0 | 0 | 0 |
120
+ BackendErrorNotification.tsx | 0 | 0 | 0 | 0 | 26-136
121
+ ErrorNotification.tsx | 0 | 0 | 0 | 0 | 28-63
122
+ Notification.tsx | 0 | 0 | 0 | 0 | 28-32
123
+ index.tsx | 0 | 0 | 0 | 0 |
124
+ src/base/overlays | 0 | 100 | 100 | 0 |
125
+ index.ts | 0 | 100 | 100 | 0 | 23-32
126
+ src/base/overlays/dialog | 0 | 0 | 0 | 0 |
127
+ Dialog.stories.tsx | 0 | 100 | 0 | 0 | 69-86
128
+ Dialog.tsx | 0 | 0 | 0 | 0 | 23-49
129
+ src/base/overlays/menu | 0 | 0 | 0 | 0 |
130
+ Menu.stories.tsx | 0 | 100 | 0 | 0 | 79-103
131
+ Menu.tsx | 0 | 0 | 0 | 0 | 36-188
132
+ MenuTrigger.tsx | 0 | 100 | 0 | 0 | 29-43
133
+ src/base/overlays/popover | 0 | 100 | 0 | 0 |
134
+ Popover.stories.tsx | 0 | 100 | 0 | 0 | 21-46
135
+ Popover.tsx | 0 | 100 | 0 | 0 | 23-65
136
+ src/base/overlays/tooltip | 0 | 0 | 0 | 0 |
137
+ ExpandableHint.tsx | 0 | 0 | 0 | 0 | 28-60
138
+ Tooltip.examples.js | 0 | 100 | 100 | 0 | 18-25
139
+ Tooltip.tsx | 0 | 100 | 0 | 0 | 22-61
140
+ src/base/shortcuts | 0 | 0 | 0 | 0 |
141
+ index.ts | 0 | 0 | 0 | 0 |
142
+ usePauseShortcuts.ts | 0 | 0 | 0 | 0 | 27-33
143
+ useShortcut.ts | 0 | 0 | 0 | 0 | 76-99
144
+ useShortcutDocs.tsx | 0 | 100 | 0 | 0 | 25-44
145
+ src/base/shortcuts/iterator | 0 | 0 | 0 | 0 |
146
+ callbackIterator.ts | 0 | 0 | 0 | 0 | 19-252
147
+ keyboardIterator.tsx | 0 | 0 | 0 | 0 | 28-193
148
+ src/base/status | 0 | 0 | 0 | 0 |
149
+ StatusIcon.stories.tsx | 0 | 100 | 0 | 0 | 71-106
150
+ StatusIcon.tsx | 0 | 0 | 0 | 0 | 21-102
151
+ index.ts | 0 | 0 | 0 | 0 |
152
+ src/base/text | 56.52 | 66.66 | 45.45 | 55.55 |
153
+ SplitAndReplace.stories.tsx | 0 | 100 | 0 | 0 | 82-141
154
+ SplitAndReplace.tsx | 0 | 0 | 0 | 0 | 32-52
155
+ index.ts | 0 | 0 | 0 | 0 |
156
+ textSplitAndReplace.ts | 100 | 100 | 100 | 100 |
157
+ ----------------------------------------|---------|----------|---------|---------|-------------------
158
+
159
+ Test Suites: 3 passed, 3 total
160
+ Tests: 9 passed, 9 total
161
+ Snapshots: 0 total
162
+ Time: 39.645 s
163
+ Ran all test suites.
164
+ Done in 41.68s.
@@ -1,2 +1,3 @@
1
- @scm-manager/ui-core:typecheck: cache hit, replaying output 51c0ea35188e1cb8
2
- @scm-manager/ui-core:typecheck: $ tsc
1
+ yarn run v1.22.22
2
+ $ tsc
3
+ Done in 32.87s.
package/package.json CHANGED
@@ -1,72 +1,66 @@
1
1
  {
2
2
  "name": "@scm-manager/ui-core",
3
- "version": "4.0.0-REACT18-20250701-125025",
3
+ "version": "4.0.0-REACT19",
4
4
  "main": "./src/index.ts",
5
5
  "license": "AGPL-3.0-only",
6
6
  "scripts": {
7
7
  "typecheck": "tsc",
8
- "storybook": "start-storybook -p 6006",
9
- "build-storybook": "build-storybook"
8
+ "storybook": "storybook dev -p 6006",
9
+ "build-storybook": "storybook build",
10
+ "test": "jest"
10
11
  },
11
12
  "peerDependencies": {
12
- "@headlessui/react": "^1.7.17",
13
- "react": "^18.3.1",
14
- "react-dom": "^18.3.1",
15
- "react-router-dom": "^5.3.1",
13
+ "@headlessui/react": "^2.2.7",
16
14
  "classnames": "^2.3.1",
15
+ "react": "^19.1.1",
16
+ "react-dom": "^19.1.1",
17
17
  "react-hook-form": "^7.33.1",
18
18
  "react-i18next": "11",
19
19
  "react-query": "^3.39.2",
20
- "styled-components": "5"
20
+ "react-router-dom": "^7.9.1",
21
+ "styled-components": "6.1.19"
21
22
  },
22
23
  "dependencies": {
23
- "@scm-manager/ui-api": "4.0.0-REACT18-20250701-125025",
24
- "@radix-ui/react-radio-group": "^1.1.3",
25
- "@radix-ui/react-slot": "^1.0.1",
26
- "@radix-ui/react-visually-hidden": "^1.0.3",
24
+ "@radix-ui/react-collapsible": "^1.0.3",
27
25
  "@radix-ui/react-dialog": "1.0.4",
28
26
  "@radix-ui/react-dropdown-menu": "2.0.5",
29
27
  "@radix-ui/react-popover": "1.0.6",
30
- "@radix-ui/react-tooltip": "1.0.2",
28
+ "@radix-ui/react-radio-group": "^1.1.3",
29
+ "@radix-ui/react-slot": "^1.0.1",
31
30
  "@radix-ui/react-tabs": "^1.0.4",
32
- "@radix-ui/react-collapsible": "^1.0.3",
31
+ "@radix-ui/react-tooltip": "1.0.2",
32
+ "@radix-ui/react-visually-hidden": "^1.0.3",
33
+ "@scm-manager/ui-api": "4.0.0-REACT19",
33
34
  "mousetrap": "1.6.5"
34
35
  },
35
36
  "devDependencies": {
36
- "@scm-manager/prettier-config": "^2.12.0",
37
+ "@babel/core": "^7.19.0",
38
+ "@scm-manager/babel-preset": "^2.13.1",
37
39
  "@scm-manager/eslint-config": "^2.17.0",
40
+ "@scm-manager/prettier-config": "^2.12.0",
38
41
  "@scm-manager/tsconfig": "^2.12.0",
39
- "@scm-manager/babel-preset": "^2.13.1",
40
- "@scm-manager/ui-types": "4.0.0-REACT18-20250701-125025",
42
+ "@scm-manager/ui-types": "4.0.0-REACT19",
43
+ "@storybook/addon-actions": "^9.0.8",
44
+ "@storybook/addon-docs": "^9.1.5",
45
+ "@storybook/addon-essentials": "^9.0.0-alpha.12",
46
+ "@storybook/addon-interactions": "^9.0.0-alpha.10",
47
+ "@storybook/addon-links": "^9.1.5",
48
+ "@storybook/react": "^9.1.5",
49
+ "@storybook/react-vite": "^9.1.5",
50
+ "@tanstack/react-query": "4.40.1",
51
+ "@tanstack/react-query-devtools": "4.40.1",
41
52
  "@types/mousetrap": "1.6.5",
42
- "@testing-library/react-hooks": "8.0.1",
43
- "@testing-library/react": "12.1.5",
44
- "@storybook/addon-actions": "^6.5.10",
45
- "@storybook/addon-docs": "^6.5.14",
46
- "@storybook/addon-essentials": "^6.5.10",
47
- "@storybook/addon-interactions": "^6.5.10",
48
- "@storybook/addon-links": "^6.5.10",
49
- "@storybook/addon-a11y": "^6.5.10",
50
- "storybook-addon-i18next": "^1.3.0",
51
- "storybook-addon-pseudo-states": "^1.15.1",
52
- "@storybook/builder-webpack5": "^6.5.10",
53
- "@storybook/manager-webpack5": "^6.5.10",
54
- "@storybook/react": "^6.5.10",
55
- "@storybook/testing-library": "^0.0.13",
56
- "@storybook/addon-storyshots-puppeteer": "^6.5.10",
57
- "@storybook/addon-storyshots": "^6.5.10",
58
- "storybook-addon-mock": "^3.2.0",
59
- "storybook-addon-themes": "^6.1.0",
60
- "storybook-react-router": "^1.0.8",
61
- "@types/storybook-react-router": "^1.0.6",
62
- "mini-css-extract-plugin": "^2.4.3",
53
+ "@vitejs/plugin-react": "^5.0.2",
54
+ "babel-loader": "^8.2.5",
63
55
  "html-webpack-plugin": "^5.5.0",
64
- "webpack": "^5.72.0",
65
- "@babel/core": "^7.19.0",
66
56
  "i18next": "21",
67
57
  "i18next-fetch-backend": "4",
68
58
  "jest-extended": "3.1.0",
69
- "babel-loader": "^8.2.5"
59
+ "mini-css-extract-plugin": "^2.4.3",
60
+ "minimatch": "^10.0.3",
61
+ "storybook-addon-pseudo-states": "^9.1.5",
62
+ "vite": "^7.1.4",
63
+ "webpack": "^5.72.0"
70
64
  },
71
65
  "prettier": "@scm-manager/prettier-config",
72
66
  "eslintConfig": {
@@ -76,8 +70,9 @@
76
70
  "access": "public"
77
71
  },
78
72
  "jest": {
73
+ "preset": "@scm-manager/jest-preset",
79
74
  "setupFilesAfterEnv": [
80
75
  "jest-extended/all"
81
76
  ]
82
77
  }
83
- }
78
+ }