@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.
- package/{src/base/buttons/a11y.test.ts → .storybook/i18n.ts} +27 -9
- package/.storybook/main.ts +54 -0
- package/.storybook/preview-head.html +6 -1
- package/.storybook/preview.tsx +125 -0
- package/.turbo/turbo-test.log +164 -0
- package/.turbo/turbo-typecheck.log +3 -2
- package/package.json +37 -42
- package/src/base/buttons/Button.stories.tsx +179 -70
- package/src/base/buttons/Button.tsx +9 -9
- package/src/base/forms/AddListEntryForm.tsx +8 -8
- package/src/base/forms/ConfigurationForm.tsx +14 -5
- package/src/base/forms/Form.stories.tsx +599 -289
- package/src/base/forms/Form.tsx +8 -8
- package/src/base/forms/FormPathContext.tsx +3 -3
- package/src/base/forms/ScmFormContext.tsx +7 -4
- package/src/base/forms/ScmFormListContext.tsx +2 -1
- package/src/base/forms/base/Field.tsx +1 -1
- package/src/base/forms/base/label/Label.tsx +1 -1
- package/src/base/forms/chip-input/ChipInputField.stories.tsx +109 -28
- package/src/base/forms/chip-input/ChipInputField.tsx +20 -8
- package/src/base/forms/chip-input/ControlledChipInputField.tsx +3 -1
- package/src/base/forms/combobox/Combobox.stories.tsx +216 -89
- package/src/base/forms/combobox/Combobox.tsx +4 -2
- package/src/base/forms/combobox/ComboboxField.tsx +2 -1
- package/src/base/forms/headless-chip-input/ChipInput.tsx +9 -9
- package/src/base/forms/helpers.ts +12 -9
- package/src/base/forms/input/ControlledSecretConfirmationField.tsx +4 -2
- package/src/base/forms/radio-button/RadioButton.stories.tsx +317 -124
- package/src/base/forms/radio-button/RadioButton.tsx +8 -4
- package/src/base/forms/radio-button/RadioButtonContext.tsx +2 -1
- package/src/base/forms/table/ControlledColumn.tsx +1 -1
- package/src/base/forms/table/ControlledTable.tsx +12 -4
- package/src/base/helpers/useDocumentTitle.test.ts +15 -7
- package/src/base/layout/card/Card.stories.tsx +171 -72
- package/src/base/layout/card/Card.tsx +4 -4
- package/src/base/layout/card/CardDetail.tsx +2 -3
- package/src/base/layout/card-list/CardList.stories.tsx +283 -169
- package/src/base/layout/collapsible/Collapsible.stories.tsx +54 -16
- package/src/base/layout/index.ts +2 -5
- package/src/base/layout/tabs/Tabs.stories.tsx +58 -16
- package/src/base/layout/templates/data-page/DataPage.stories.tsx +289 -156
- package/src/base/layout/templates/data-page/DataPageHeader.tsx +1 -1
- package/src/base/overlays/dialog/Dialog.stories.tsx +94 -34
- package/src/base/overlays/menu/Menu.stories.tsx +116 -48
- package/src/base/overlays/menu/Menu.tsx +1 -0
- package/src/base/overlays/popover/Popover.stories.tsx +50 -37
- package/src/base/shortcuts/iterator/keyboardIterator.test.tsx +16 -7
- package/src/base/shortcuts/iterator/keyboardIterator.tsx +13 -5
- package/src/base/status/StatusIcon.stories.tsx +76 -27
- package/src/base/status/index.ts +1 -1
- package/src/base/text/SplitAndReplace.stories.tsx +128 -50
- package/src/base/text/index.ts +1 -1
- package/.storybook/RemoveThemesPlugin.js +0 -49
- package/.storybook/main.js +0 -86
- package/.storybook/preview.js +0 -87
- 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
|
|
18
|
-
import {
|
|
19
|
-
import path from "path";
|
|
17
|
+
import i18n from "i18next";
|
|
18
|
+
import { initReactI18next } from "react-i18next";
|
|
20
19
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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
|
|
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
|
-
|
|
2
|
-
|
|
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-
|
|
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": "
|
|
9
|
-
"build-storybook": "build
|
|
8
|
+
"storybook": "storybook dev -p 6006",
|
|
9
|
+
"build-storybook": "storybook build",
|
|
10
|
+
"test": "jest"
|
|
10
11
|
},
|
|
11
12
|
"peerDependencies": {
|
|
12
|
-
"@headlessui/react": "^
|
|
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
|
-
"
|
|
20
|
+
"react-router-dom": "^7.9.1",
|
|
21
|
+
"styled-components": "6.1.19"
|
|
21
22
|
},
|
|
22
23
|
"dependencies": {
|
|
23
|
-
"@
|
|
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-
|
|
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-
|
|
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
|
-
"@
|
|
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/
|
|
40
|
-
"@
|
|
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
|
-
"@
|
|
43
|
-
"
|
|
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
|
-
"
|
|
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
|
+
}
|