@hortiview/shared-components 2.0.0 → 2.1.0

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/CHANGELOG.md CHANGED
@@ -1,3 +1,14 @@
1
+ ## [2.1.0](https://dev.azure.com/sdundc/HV%20Platform/_git/HortiView-Frontend-Shared/compare/v2.0.0...v2.1.0) (2025-06-11)
2
+
3
+ ### Features
4
+
5
+ * create OnboardingBanner component ([8cfeadf](https://dev.azure.com/sdundc/HV%20Platform/_git/HortiView-Frontend-Shared/commit/8cfeadf8dde24b6d888de22533e506805b81c83c))
6
+ * improve component API, update tests and docs ([12e6da4](https://dev.azure.com/sdundc/HV%20Platform/_git/HortiView-Frontend-Shared/commit/12e6da4a40b66885dc2ccf56c8319e4baab5df4c))
7
+
8
+ ### Code Refactoring
9
+
10
+ * change index to buttonProps.id ([0c9e4b6](https://dev.azure.com/sdundc/HV%20Platform/_git/HortiView-Frontend-Shared/commit/0c9e4b661ef71bde4b82540a15d73a2d2e79552c))
11
+
1
12
  ## [2.0.0](https://dev.azure.com/sdundc/HV%20Platform/_git/HortiView-Frontend-Shared/compare/v1.12.0...v2.0.0) (2025-06-06)
2
13
 
3
14
  ### ⚠ BREAKING CHANGES
package/README.md CHANGED
@@ -51,6 +51,7 @@ Additionally the library provides form components using [react-hook-form](https:
51
51
  1. [LoadingSpinner](#loadingspinner)
52
52
  1. [Modal](#modal)
53
53
  1. [ModulePadding](#modulepadding)
54
+ 1. [OnboardingBanner](#onboardingbanner)
54
55
  1. [OverflowTooltip](#overflowtooltip)
55
56
  1. [ScrollBar](#scrollbar)
56
57
  1. [SearchBar](#searchbar)
@@ -887,6 +888,20 @@ import { ModulePadding } from '@hortiview/shared-components';
887
888
  </ModulePadding>;
888
889
  ```
889
890
 
891
+ ### OnboardingBanner
892
+
893
+ A responsive onboarding banner that adapts its layout for desktop and mobile.
894
+
895
+ - **Desktop:** Media content is displayed to the _right_ of the description
896
+ - **Mobile:** Media content appears _above_ the description
897
+
898
+ ```jsx
899
+ import {OnboardingBanner} from '@hortiview/shared-components';
900
+
901
+ <OnboardingBanner headline='Hello' />
902
+
903
+ ```
904
+
890
905
  ### OverflowTooltip
891
906
 
892
907
  Provides a tooltip and overflow behavior of a given text value.
@@ -0,0 +1,89 @@
1
+ import { jsx as r, jsxs as d, Fragment as C } from "react/jsx-runtime";
2
+ import { C as h, a as m, b as T, c as g, d as v } from "./index.es-6TJ1S8Jr.js";
3
+ import { G as b, a as x, b as c } from "./index.es-Dvj_qpAp.js";
4
+ import { d as f } from "./index.es-D54RuMc_.js";
5
+ import { useMemo as w } from "react";
6
+ import { OverflowTooltip as l } from "./components/OverflowTooltip/OverflowTooltip.js";
7
+ import './assets/GenericCard.css';const u = "_cardTitle_ny9m0_1", B = "_cardBody_ny9m0_5", N = "_cardContent_ny9m0_10", $ = "_row_ny9m0_14", G = "_font_ny9m0_18", k = "_fontHeader_ny9m0_23", H = "_title_ny9m0_27", S = "_emptyContainer_ny9m0_33", A = "_empty_ny9m0_33", n = {
8
+ cardTitle: u,
9
+ cardBody: B,
10
+ cardContent: N,
11
+ row: $,
12
+ font: G,
13
+ fontHeader: k,
14
+ title: H,
15
+ emptyContainer: S,
16
+ empty: A
17
+ }, _ = {
18
+ desktopCol: 6,
19
+ phoneCol: 2,
20
+ tabletCol: 4,
21
+ verticalAlign: "bottom"
22
+ }, W = ({ item: e, columns: t, hiddenColumns: o }) => {
23
+ const i = t.find((a) => a.asCardTitle), y = t.find((a) => a.asCardSubtitle), p = w(
24
+ () => t.filter(
25
+ (a) => !a.asCardTitle && !a.asCardSubtitle && a.id !== "actions"
26
+ ),
27
+ [t]
28
+ );
29
+ return /* @__PURE__ */ r(
30
+ h,
31
+ {
32
+ variant: "raised",
33
+ "data-testid": `card${i ? "-" + e[i.accessor] : ""}`,
34
+ children: /* @__PURE__ */ d(m, { className: n.cardContent, "data-testid": "card-content", children: [
35
+ /* @__PURE__ */ r(j, { item: e, titleColumn: i, subTitleColumn: y }),
36
+ /* @__PURE__ */ r(T, { className: n.cardBody, "data-testid": "card-body", children: /* @__PURE__ */ r(b, { fullHeight: !0, fullWidth: !0, variant: "none", children: p.map((a) => o?.includes(a.id) ? null : /* @__PURE__ */ d(x, { className: n.row, "data-testid": "row", children: [
37
+ /* @__PURE__ */ r(c, { horizontalAlign: "right", ..._, children: /* @__PURE__ */ d(
38
+ f,
39
+ {
40
+ level: 2,
41
+ themeColor: "text-secondary-on-background",
42
+ className: `${n.font} ${n.fontHeader}`,
43
+ tag: "div",
44
+ children: [
45
+ a.header,
46
+ ":"
47
+ ]
48
+ }
49
+ ) }),
50
+ /* @__PURE__ */ r(c, { horizontalAlign: "left", ..._, children: /* @__PURE__ */ r(s, { column: a, item: e }) })
51
+ ] }, a.id)) }) })
52
+ ] })
53
+ }
54
+ );
55
+ }, j = ({ item: e, titleColumn: t, subTitleColumn: o }) => {
56
+ const i = e.actions;
57
+ return !t && !o && !i ? null : /* @__PURE__ */ d(C, { children: [
58
+ /* @__PURE__ */ r(
59
+ g,
60
+ {
61
+ "data-testid": "card-title",
62
+ className: n.cardTitle,
63
+ primaryText: t !== void 0 && /* @__PURE__ */ r(s, { column: t, item: e, isTitle: !0 }),
64
+ secondaryText: o !== void 0 && /* @__PURE__ */ r(s, { column: o, item: e, isTitle: !0 }),
65
+ trailingBlock: i,
66
+ trailingBlockType: i ? "title-actions" : void 0
67
+ }
68
+ ),
69
+ /* @__PURE__ */ r(v, {})
70
+ ] });
71
+ }, s = ({ item: e, column: t, isTitle: o = !1 }) => t.cellTemplate ? t.cellTemplate({ row: { original: e } }) : o ? /* @__PURE__ */ r(
72
+ l,
73
+ {
74
+ id: `tip_${t.id}_${e[t.accessor]}`,
75
+ text: e[t.accessor],
76
+ children: /* @__PURE__ */ r("span", { className: n.title, children: e[t.accessor] })
77
+ }
78
+ ) : /* @__PURE__ */ r(
79
+ l,
80
+ {
81
+ id: `tip_${t.id}_${e[t.accessor]}`,
82
+ text: e[t.accessor],
83
+ children: /* @__PURE__ */ r(f, { level: 2, themeColor: "text-primary-on-background", className: n.font, children: e[t.accessor] })
84
+ }
85
+ );
86
+ export {
87
+ W as G,
88
+ n as s
89
+ };
@@ -0,0 +1 @@
1
+ ._elevation_5dfyt_1{background-color:var(--lmnt-theme-primary-50)}
@@ -1,9 +1,10 @@
1
1
  import "react/jsx-runtime";
2
2
  import "../../../index.es-6TJ1S8Jr.js";
3
- import { G as a } from "../../../GenericCard-DuNnB9Ve.js";
3
+ import "../../../index.es-Dvj_qpAp.js";
4
4
  import "../../../index.es-D54RuMc_.js";
5
5
  import "react";
6
6
  import "../../OverflowTooltip/OverflowTooltip.js";
7
+ import { G } from "../../../GenericCard-BFYKwkzI.js";
7
8
  export {
8
- a as GenericCard
9
+ G as GenericCard
9
10
  };
@@ -1,6 +1,6 @@
1
1
  import { jsx as n } from "react/jsx-runtime";
2
2
  import { a as c, s as o } from "../../../react.esm-CX1WJ2Pp.js";
3
- import { G as i } from "../../../GenericCard-DuNnB9Ve.js";
3
+ import { G as i } from "../../../GenericCard-BFYKwkzI.js";
4
4
  import { d as m, t as s, g as e } from "../../../vi.CjhMlMwf-CKxPQtd6.js";
5
5
  m("GenericCard", () => {
6
6
  const d = {
@@ -2,7 +2,7 @@ import { jsx as r } from "react/jsx-runtime";
2
2
  import { G as c } from "../../../index.es-DntoATwO.js";
3
3
  import { P as l } from "../../../index.es-D-CKRzIB.js";
4
4
  import { a as o } from "../../../index.es-D54RuMc_.js";
5
- import { s as i, G as m } from "../../../GenericCard-DuNnB9Ve.js";
5
+ import { s as i, G as m } from "../../../GenericCard-BFYKwkzI.js";
6
6
  const u = ({
7
7
  columns: n,
8
8
  data: e,
@@ -0,0 +1,30 @@
1
+ import { ButtonProps } from '@element-public/react-button';
2
+
3
+ type OnboardingBannerProps = {
4
+ headline: string;
5
+ description: string;
6
+ mediaContent?: React.ReactNode;
7
+ isVisible: boolean;
8
+ onClose: () => void;
9
+ buttons?: (ButtonProps & {
10
+ id: string;
11
+ })[];
12
+ };
13
+ /**
14
+ * A responsive onboarding banner that displays a headline, description, optional media content,
15
+ * and, if provided, one or more action buttons.
16
+ *
17
+ * @remarks
18
+ * On desktop, the mediaContent is shown to the right of the description;
19
+ * on mobile, it appears above the description.
20
+ *
21
+ * @param headline - The headline of the Onboarding Banner
22
+ * @param description - The description of the Onboarding Banner
23
+ * @param mediaContent - Optional React node (e.g. video or image) shown on the side
24
+ * @param isVisible - Whether the banner should be rendered
25
+ * @param onClose - Fired when the close icon is clicked
26
+ * @param buttons - An array of ButtonProps to render as action buttons below the description.
27
+ * @returns
28
+ */
29
+ export declare const OnboardingBanner: ({ headline, description, mediaContent, isVisible, onClose, buttons, }: OnboardingBannerProps) => import("react/jsx-runtime").JSX.Element | null;
30
+ export {};
@@ -0,0 +1,89 @@
1
+ import { jsx as o, jsxs as r } from "react/jsx-runtime";
2
+ import { G as a } from "../../index.es-DntoATwO.js";
3
+ import { I as m } from "../../index.es-0lQcz8m1.js";
4
+ import { B as b } from "../../index.es-CiqbARoC.js";
5
+ import { b as h, T as u } from "../../index.es-D54RuMc_.js";
6
+ import { E as g } from "../../index.es-h2lMdt7G.js";
7
+ import { G as f, a as v, b as i } from "../../index.es-Dvj_qpAp.js";
8
+ import { I as y } from "../../index.es-3043KTnb.js";
9
+ import { u as C } from "../../useBreakpoints-MzTZ0tCT.js";
10
+ import '../../assets/OnboardingBanner.css';const G = "_elevation_5dfyt_1", k = {
11
+ elevation: G
12
+ }, D = ({
13
+ headline: l,
14
+ description: s,
15
+ mediaContent: n,
16
+ isVisible: c,
17
+ onClose: p,
18
+ buttons: e
19
+ }) => {
20
+ const { isDesktop: d } = C();
21
+ return c ? /* @__PURE__ */ o(
22
+ g,
23
+ {
24
+ "data-testid": "onboarding-banner",
25
+ elevation: 3,
26
+ customPadding: "1rem 1.5rem",
27
+ rounded: !0,
28
+ className: k.elevation,
29
+ children: /* @__PURE__ */ o(f, { variant: "none", rowGap: "8px", columnGap: "8px", children: /* @__PURE__ */ r(v, { "data-testid": "onboarding-banner-content", children: [
30
+ /* @__PURE__ */ o(i, { desktopCol: 12, phoneCol: 4, tabletCol: 8, children: /* @__PURE__ */ r(
31
+ a,
32
+ {
33
+ "data-testid": "onboarding-banner-header-content",
34
+ primaryAlign: "space-between",
35
+ secondaryAlign: "center",
36
+ fullWidth: !0,
37
+ children: [
38
+ /* @__PURE__ */ o(h, { level: 6, children: l }),
39
+ /* @__PURE__ */ o(
40
+ m,
41
+ {
42
+ "data-testid": "onboarding-banner-close-button",
43
+ type: "button",
44
+ onClick: p,
45
+ icon: /* @__PURE__ */ o(y, { icon: "clear" })
46
+ }
47
+ )
48
+ ]
49
+ }
50
+ ) }),
51
+ /* @__PURE__ */ o(
52
+ i,
53
+ {
54
+ desktopCol: n ? 10 : 12,
55
+ phoneCol: 4,
56
+ tabletCol: 8,
57
+ order: d ? 2 : 3,
58
+ children: /* @__PURE__ */ r(a, { direction: "vertical", gap: "dense", children: [
59
+ /* @__PURE__ */ o(u, { bold: !0, level: 2, children: s }),
60
+ e && e.length > 0 && /* @__PURE__ */ o(a, { "data-testid": "onboarding-banner-buttons", direction: "horizontal", children: e?.map((t) => /* @__PURE__ */ o(
61
+ b,
62
+ {
63
+ "data-testid": `onboarding-banner-button-${t.id}`,
64
+ ...t
65
+ },
66
+ t.id
67
+ )) })
68
+ ] })
69
+ }
70
+ ),
71
+ n && /* @__PURE__ */ o(
72
+ i,
73
+ {
74
+ horizontalAlign: "center",
75
+ "data-testid": "onboarding-banner-media-content",
76
+ desktopCol: 2,
77
+ phoneCol: 4,
78
+ tabletCol: 8,
79
+ order: d ? 3 : 2,
80
+ children: n
81
+ }
82
+ )
83
+ ] }) })
84
+ }
85
+ ) : null;
86
+ };
87
+ export {
88
+ D as OnboardingBanner
89
+ };
@@ -0,0 +1,72 @@
1
+ import { jsx as n, Fragment as a } from "react/jsx-runtime";
2
+ import { a as o, s as e } from "../../react.esm-CX1WJ2Pp.js";
3
+ import { OnboardingBanner as s } from "./OnboardingBanner.js";
4
+ import { d, t as i, a as r, g as t } from "../../vi.CjhMlMwf-CKxPQtd6.js";
5
+ d("Onboarding Banner Test", () => {
6
+ i("render OnboardingBanner with headline & description text", () => {
7
+ o(
8
+ /* @__PURE__ */ n(
9
+ s,
10
+ {
11
+ headline: "test",
12
+ description: "test description",
13
+ isVisible: !0,
14
+ onClose: r.fn()
15
+ }
16
+ )
17
+ ), t(e.getByText("test")).toBeInTheDocument(), t(e.getByText("test description")).toBeInTheDocument();
18
+ }), i("render OnboardingBanner with media content", () => {
19
+ o(
20
+ /* @__PURE__ */ n(
21
+ s,
22
+ {
23
+ headline: "test",
24
+ description: "test description",
25
+ mediaContent: /* @__PURE__ */ n(a, { children: "Element" }),
26
+ isVisible: !0,
27
+ onClose: r.fn()
28
+ }
29
+ )
30
+ ), t(e.getByText("Element")).toBeInTheDocument();
31
+ }), i("render OnboardingBanner with buttons", () => {
32
+ o(
33
+ /* @__PURE__ */ n(
34
+ s,
35
+ {
36
+ headline: "test",
37
+ description: "test description",
38
+ isVisible: !0,
39
+ onClose: r.fn(),
40
+ buttons: [{ label: "button-1" }, { label: "button-2" }]
41
+ }
42
+ )
43
+ ), t(e.getByText("button-1")).toBeInTheDocument(), t(e.getByText("button-2")).toBeInTheDocument(), t(e.queryByText("button-3")).not.toBeInTheDocument();
44
+ }), i("calls onClose when close button is clicked", () => {
45
+ const l = r.fn();
46
+ o(
47
+ /* @__PURE__ */ n(
48
+ s,
49
+ {
50
+ headline: "test",
51
+ description: "test description",
52
+ isVisible: !0,
53
+ onClose: l,
54
+ buttons: [{ label: "button-1" }, { label: "button2" }]
55
+ }
56
+ )
57
+ ), e.getByTestId("onboarding-banner-close-button").click(), t(l).toHaveBeenCalledTimes(1);
58
+ }), i("renders nothing when isVisibility is false", () => {
59
+ o(
60
+ /* @__PURE__ */ n(
61
+ s,
62
+ {
63
+ headline: "test",
64
+ description: "test description",
65
+ isVisible: !1,
66
+ onClose: r.fn(),
67
+ buttons: [{ label: "button-1" }, { label: "button-2" }]
68
+ }
69
+ )
70
+ ), t(e.queryByText("test")).not.toBeInTheDocument();
71
+ });
72
+ });
@@ -0,0 +1,268 @@
1
+ import { c as G, _ as b, P as e } from "./identity-DLWZln-X.js";
2
+ import y, { forwardRef as C, useMemo as f, useRef as T, useImperativeHandle as R, createContext as $, useContext as O } from "react";
3
+ import { d as k } from "./index.es-da0cf7oE.js";
4
+ const x = /* @__PURE__ */ $({}), W = {
5
+ /**
6
+ * @deprecated _Use `variant`='airy' instead._
7
+ *
8
+ * Applies extra padding to each column.
9
+ *
10
+ * Defaults to **undefined**.
11
+ */
12
+ airy: k(e.bool, "Grid", 'Use `variant`="airy" instead.'),
13
+ /**
14
+ * Accepts GridCol or GridRow.
15
+ *
16
+ * Defaults to **null**.
17
+ */
18
+ children: e.node.isRequired,
19
+ /**
20
+ * The css class name to be passed through to the component markup.
21
+ *
22
+ * Defaults to **undefined**.
23
+ */
24
+ className: e.string,
25
+ /**
26
+ * Sets the column gap for the grid.
27
+ *
28
+ * Defaults to **'16px'**.
29
+ */
30
+ columnGap: e.oneOfType([e.string, e.number]),
31
+ /**
32
+ * Applies 100% height to the grid and direct children rows. Useful when creating a page layout. Be aware all direct children rows will have a 100% height.
33
+ *
34
+ * Defaults to **null**.
35
+ */
36
+ fullHeight: e.bool,
37
+ /**
38
+ * Applies 100% width to the grid and direct children rows. Useful to maintain full width in a flex container.
39
+ *
40
+ * Defaults to **null**.
41
+ */
42
+ fullWidth: e.bool,
43
+ /**
44
+ * Alignment of entire grid: left and right.
45
+ *
46
+ * Defaults to **'center'**.
47
+ */
48
+ gridAlign: e.oneOf(["center", "left", "right"]),
49
+ /**
50
+ * Sets the row gap for the grid.
51
+ *
52
+ * Defaults to **'16px'**.
53
+ */
54
+ rowGap: e.oneOfType([e.string, e.number]),
55
+ /**
56
+ * Styles for the grid.
57
+ *
58
+ * Defaults to **undefined**.
59
+ */
60
+ style: e.object,
61
+ /**
62
+ * If true the grid will have a max width according to your theme's breakpoints.
63
+ *
64
+ * Defaults to **false**.
65
+ */
66
+ useMaxWidth: e.bool,
67
+ /**
68
+ * Select `airy` or `standard` padding.
69
+ *
70
+ * Defaults to **'standard'**.
71
+ */
72
+ variant: e.oneOf(["standard", "airy", "none"])
73
+ }, H = {
74
+ airy: void 0,
75
+ children: null,
76
+ className: void 0,
77
+ columnGap: "16px",
78
+ fullHeight: null,
79
+ fullWidth: null,
80
+ gridAlign: "center",
81
+ rowGap: "16px",
82
+ style: void 0,
83
+ useMaxWidth: !1,
84
+ variant: "standard"
85
+ }, z = {
86
+ /**
87
+ * Alignment of cell within the row: top, middle, bottom. If omitted the col will stretch to the height of the row.
88
+ *
89
+ * Defaults to **undefined**.
90
+ */
91
+ align: e.oneOf(["", "top", "middle", "bottom"]),
92
+ /**
93
+ * Content to be rendered inside the GridCol. Accepts any valid markup.
94
+ *
95
+ * Defaults to **null**.
96
+ */
97
+ children: e.node,
98
+ /**
99
+ * The css class name to be passed through to the component markup.
100
+ *
101
+ * Defaults to **undefined**.
102
+ */
103
+ className: e.string,
104
+ /**
105
+ * Specifies the number of columns the cell spans.
106
+ *
107
+ * Defaults to **null**.
108
+ */
109
+ desktopCol: e.number,
110
+ /**
111
+ * Specifies a grid item's start position within the grid column by contributing a line, a span, or nothing (automatic) to its grid placement. Set to any valid `grid-column-start`.
112
+ *
113
+ * Defaults to **null**.
114
+ */
115
+ gridColStart: e.oneOfType([e.string, e.number]),
116
+ /**
117
+ * Horizontal alignment of the cell contents of cell content: top, middle, bottom.
118
+ *
119
+ * Defaults to **'left'**.
120
+ */
121
+ horizontalAlign: e.oneOf(["left", "center", "right"]),
122
+ /**
123
+ * Specifies the order of the cell.
124
+ *
125
+ * Defaults to **null**.
126
+ */
127
+ order: e.number,
128
+ /**
129
+ * Specifies the number of columns the cell spans on a phone.
130
+ *
131
+ * Defaults to **null**.
132
+ */
133
+ phoneCol: e.number,
134
+ /**
135
+ * Specifies the number of columns the cell spans on a tablet.
136
+ *
137
+ * Defaults to **null**.
138
+ */
139
+ tabletCol: e.number,
140
+ /**
141
+ * Vertical alignment of cell content: top, middle, bottom.
142
+ *
143
+ * Defaults to **'top'**.
144
+ */
145
+ verticalAlign: e.oneOf(["top", "middle", "bottom"])
146
+ }, E = {
147
+ align: void 0,
148
+ children: null,
149
+ className: void 0,
150
+ desktopCol: null,
151
+ gridColStart: null,
152
+ horizontalAlign: "left",
153
+ order: null,
154
+ phoneCol: null,
155
+ tabletCol: null,
156
+ verticalAlign: "top"
157
+ }, M = {
158
+ /**
159
+ * Content to be rendered inside the GridRow. Accepts any valid markup.
160
+ *
161
+ * Defaults to **null**.
162
+ */
163
+ children: e.node.isRequired,
164
+ /**
165
+ * The css class name to be passed through to the component markup.
166
+ *
167
+ * Defaults to **undefined**.
168
+ */
169
+ className: e.string
170
+ }, S = {
171
+ children: null,
172
+ className: void 0
173
+ }, w = /* @__PURE__ */ C((c, u) => {
174
+ const {
175
+ airy: t,
176
+ children: p,
177
+ className: a,
178
+ columnGap: r,
179
+ fullHeight: l,
180
+ fullWidth: n,
181
+ gridAlign: i,
182
+ rowGap: d,
183
+ style: o,
184
+ useMaxWidth: m,
185
+ variant: s,
186
+ ...h
187
+ } = c, g = t ? "airy" : s, _ = f(() => ({
188
+ fullHeight: l,
189
+ rowGap: d,
190
+ columnGap: r
191
+ }), [r, l, d]), N = T();
192
+ R(u, () => N.current, []);
193
+ const A = f(() => G("lmnt", "mdc-layout-grid", "lmnt-layout-grid", `mdc-layout-grid mdc-layout-grid--align-${i}`, (g === "airy" || t) && "mdc-grid-cell-wrapper-airy-tablet mdc-grid-cell-wrapper-airy-desktop", s === "none" && "mdc-grid-cell-wrapper-none-tablet mdc-grid-cell-wrapper-none-desktop mdc-grid-cell-wrapper-none-phone ", n && "lmnt-layout-grid--full-width", l && "lmnt-layout-grid--full-height", m && "lmnt-layout-grid--with-max-width", a), [t, a, g, l, n, i, m, s]);
194
+ return /* @__PURE__ */ y.createElement(x.Provider, {
195
+ value: _
196
+ }, /* @__PURE__ */ y.createElement("div", b({
197
+ ref: N,
198
+ className: A
199
+ }, h), p));
200
+ });
201
+ w.displayName = "Grid";
202
+ w.propTypes = W;
203
+ w.defaultProps = H;
204
+ const P = /* @__PURE__ */ C((c, u) => {
205
+ const {
206
+ align: t,
207
+ children: p,
208
+ className: a,
209
+ columns: r,
210
+ desktopCol: l,
211
+ gridColStart: n,
212
+ horizontalAlign: i,
213
+ order: d,
214
+ phoneCol: o,
215
+ style: m,
216
+ tabletCol: s,
217
+ verticalAlign: h,
218
+ ...g
219
+ } = c, _ = f(() => ({
220
+ ...m,
221
+ gridColumnStart: n
222
+ }), [n, m]);
223
+ return /* @__PURE__ */ y.createElement("div", b({
224
+ ref: u,
225
+ style: _,
226
+ className: G("lmnt", `lmnt-layout-grid__cell--vertical-align-${h}`, `lmnt-layout-grid__cell--horizontal-align-${i}`, "mdc-layout-grid__cell", !r && !o && !s && !l && ["mdc-layout-grid__cell"], d && `mdc-layout-grid__cell--order-${d}`, t && `mdc-layout-grid__cell--align-${t}`, r && [`mdc-layout-grid__cell--span-${r}`], o && [`mdc-layout-grid__cell--span-${o}-phone`], s && [`mdc-layout-grid__cell--span-${s}-tablet`], l && [`mdc-layout-grid__cell--span-${l}-desktop`], "lmnt-layout-grid__cell", a)
227
+ }, g), p);
228
+ });
229
+ P.displayName = "GridCol";
230
+ P.propTypes = z;
231
+ P.defaultProps = E;
232
+ const v = /* @__PURE__ */ C((c, u) => {
233
+ const {
234
+ children: t,
235
+ className: p,
236
+ style: a,
237
+ ...r
238
+ } = c, {
239
+ fullHeight: l,
240
+ rowGap: n,
241
+ columnGap: i
242
+ } = O(x), d = f(() => {
243
+ let o = {
244
+ rowGap: n,
245
+ columnGap: i
246
+ };
247
+ return l && (o = {
248
+ ...o,
249
+ height: "100%"
250
+ }), {
251
+ ...a,
252
+ ...o
253
+ };
254
+ }, [a, l, n, i]);
255
+ return /* @__PURE__ */ y.createElement("div", b({
256
+ ref: u,
257
+ className: G("lmnt", "mdc-layout-grid__inner", "lmnt-layout-grid__inner", p),
258
+ style: d
259
+ }, r), t);
260
+ });
261
+ v.displayName = "GridRow";
262
+ v.propTypes = M;
263
+ v.defaultProps = S;
264
+ export {
265
+ w as G,
266
+ v as a,
267
+ P as b
268
+ };
package/dist/main.d.ts CHANGED
@@ -28,6 +28,7 @@ export { StepperHeader } from './components/Stepper/components/StepperHeader';
28
28
  export { StepperIndicator } from './components/Stepper/components/StepperIndicator';
29
29
  export { Stepper } from './components/Stepper/Stepper';
30
30
  export { VerticalDivider } from './components/VerticalDivider/VerticalDivider';
31
+ export { OnboardingBanner } from './components/OnboardingBanner/OnboardingBanner';
31
32
  export { FormCheckBox } from './components/FormComponents/FormCheckBox/FormCheckBox';
32
33
  export { FormDatePicker } from './components/FormComponents/FormDatePicker/FormDatePicker';
33
34
  export { FormNumber } from './components/FormComponents/FormNumber/FormNumber';
package/dist/main.js CHANGED
@@ -4,15 +4,15 @@ import { BasicHeading as f } from "./components/BasicHeading/BasicHeading.js";
4
4
  import { BlockView as a } from "./components/BlockView/BlockView.js";
5
5
  import { ChipCard as l } from "./components/ChipCard/ChipCard.js";
6
6
  import { ContextMenu as n } from "./components/ContextMenu/ContextMenu.js";
7
- import { DeleteModal as S } from "./components/DeleteModal/DeleteModal.js";
7
+ import { DeleteModal as d } from "./components/DeleteModal/DeleteModal.js";
8
8
  import { DetailContentWrapper as L } from "./components/DetailContentWrapper/DetailContentWrapper.js";
9
9
  import { Disclaimer as G } from "./components/Disclaimer/Disclaimer.js";
10
10
  import { EmptyView as _ } from "./components/EmptyView/EmptyView.js";
11
11
  import { Filter as F } from "./components/Filter/Filter.js";
12
12
  import { FormattedNumberDisplay as D } from "./components/FormattedNumberDisplay/FormattedNumberDisplay.js";
13
13
  import { GenericTable as g } from "./components/GenericTable/GenericTable.js";
14
- import { HashTabView as B } from "./components/HashTabView/HashTabView.js";
15
- import { HeaderFilter as b } from "./components/HeaderFilter/HeaderFilter.js";
14
+ import { HashTabView as b } from "./components/HashTabView/HashTabView.js";
15
+ import { HeaderFilter as T } from "./components/HeaderFilter/HeaderFilter.js";
16
16
  import { HealthCheckFailed as U } from "./components/HealthCheckFailed/HealthCheckFailed.js";
17
17
  import { Iconify as M } from "./components/Iconify/Iconify.js";
18
18
  import { InfoGroup as V } from "./components/InfoGroup/InfoGroup.js";
@@ -28,59 +28,61 @@ import { StepperHeader as or } from "./components/Stepper/components/StepperHead
28
28
  import { StepperIndicator as tr } from "./components/Stepper/components/StepperIndicator.js";
29
29
  import { Stepper as pr } from "./components/Stepper/Stepper.js";
30
30
  import { VerticalDivider as xr } from "./components/VerticalDivider/VerticalDivider.js";
31
- import { FormCheckBox as ir } from "./components/FormComponents/FormCheckBox/FormCheckBox.js";
32
- import { FormDatePicker as Ar } from "./components/FormComponents/FormDatePicker/FormDatePicker.js";
33
- import { FormNumber as cr } from "./components/FormComponents/FormNumber/FormNumber.js";
34
- import { FormRadio as dr } from "./components/FormComponents/FormRadio/FormRadio.js";
35
- import { FormSelect as Er } from "./components/FormComponents/FormSelect/FormSelect.js";
36
- import { FormSlider as sr } from "./components/FormComponents/FormSlider/FormSlider.js";
37
- import { FormText as Ir } from "./components/FormComponents/FormText/FormText.js";
38
- import { FormToggle as Nr } from "./components/FormComponents/FormToggle/FormToggle.js";
39
- import { AvailableCustomIcons as Cr } from "./enums/AvailableCustomIcons.js";
31
+ import { OnboardingBanner as ir } from "./components/OnboardingBanner/OnboardingBanner.js";
32
+ import { FormCheckBox as Ar } from "./components/FormComponents/FormCheckBox/FormCheckBox.js";
33
+ import { FormDatePicker as cr } from "./components/FormComponents/FormDatePicker/FormDatePicker.js";
34
+ import { FormNumber as Sr } from "./components/FormComponents/FormNumber/FormNumber.js";
35
+ import { FormRadio as Er } from "./components/FormComponents/FormRadio/FormRadio.js";
36
+ import { FormSelect as sr } from "./components/FormComponents/FormSelect/FormSelect.js";
37
+ import { FormSlider as Ir } from "./components/FormComponents/FormSlider/FormSlider.js";
38
+ import { FormText as Nr } from "./components/FormComponents/FormText/FormText.js";
39
+ import { FormToggle as Cr } from "./components/FormComponents/FormToggle/FormToggle.js";
40
+ import { AvailableCustomIcons as Br } from "./enums/AvailableCustomIcons.js";
40
41
  import { ThemeColor as ur } from "./enums/ThemeColor.js";
41
- import { u as Tr } from "./useBreakpoints-MzTZ0tCT.js";
42
- import { capitalizeFirstLetters as Hr, getNumberAsLocaleString as Ur, trimLeadingAndTrailingSpaces as hr } from "./services/UtilService.js";
43
- import { AVAILABLE_COUNTRY_KEYS as Pr, AVAILABLE_LOCALES as Vr, ENGLISH_LANGUAGE_ID as Rr, GERMAN_LANGUAGE_ID as kr, LANGUAGE_CODES_MAPPER as wr, LANGUAGE_ID_MAPPER as Or, SPANISH_LANGUAGE_ID as vr, TURKISH_LANGUAGE_ID as yr } from "./types/Languages.js";
42
+ import { u as Hr } from "./useBreakpoints-MzTZ0tCT.js";
43
+ import { capitalizeFirstLetters as hr, getNumberAsLocaleString as Mr, trimLeadingAndTrailingSpaces as Pr } from "./services/UtilService.js";
44
+ import { AVAILABLE_COUNTRY_KEYS as Rr, AVAILABLE_LOCALES as kr, ENGLISH_LANGUAGE_ID as wr, GERMAN_LANGUAGE_ID as Or, LANGUAGE_CODES_MAPPER as vr, LANGUAGE_ID_MAPPER as yr, SPANISH_LANGUAGE_ID as Yr, TURKISH_LANGUAGE_ID as Kr } from "./types/Languages.js";
44
45
  export {
45
- Pr as AVAILABLE_COUNTRY_KEYS,
46
- Vr as AVAILABLE_LOCALES,
46
+ Rr as AVAILABLE_COUNTRY_KEYS,
47
+ kr as AVAILABLE_LOCALES,
47
48
  e as AlertBanner,
48
- Cr as AvailableCustomIcons,
49
+ Br as AvailableCustomIcons,
49
50
  m as BaseView,
50
51
  f as BasicHeading,
51
52
  a as BlockView,
52
53
  l as ChipCard,
53
54
  n as ContextMenu,
54
- S as DeleteModal,
55
+ d as DeleteModal,
55
56
  L as DetailContentWrapper,
56
57
  G as Disclaimer,
57
- Rr as ENGLISH_LANGUAGE_ID,
58
+ wr as ENGLISH_LANGUAGE_ID,
58
59
  _ as EmptyView,
59
60
  F as Filter,
60
- ir as FormCheckBox,
61
- Ar as FormDatePicker,
62
- cr as FormNumber,
63
- dr as FormRadio,
64
- Er as FormSelect,
65
- sr as FormSlider,
66
- Ir as FormText,
67
- Nr as FormToggle,
61
+ Ar as FormCheckBox,
62
+ cr as FormDatePicker,
63
+ Sr as FormNumber,
64
+ Er as FormRadio,
65
+ sr as FormSelect,
66
+ Ir as FormSlider,
67
+ Nr as FormText,
68
+ Cr as FormToggle,
68
69
  D as FormattedNumberDisplay,
69
- kr as GERMAN_LANGUAGE_ID,
70
+ Or as GERMAN_LANGUAGE_ID,
70
71
  g as GenericTable,
71
- B as HashTabView,
72
- b as HeaderFilter,
72
+ b as HashTabView,
73
+ T as HeaderFilter,
73
74
  U as HealthCheckFailed,
74
75
  M as Iconify,
75
76
  V as InfoGroup,
76
- wr as LANGUAGE_CODES_MAPPER,
77
- Or as LANGUAGE_ID_MAPPER,
77
+ vr as LANGUAGE_CODES_MAPPER,
78
+ yr as LANGUAGE_ID_MAPPER,
78
79
  k as ListArea,
79
80
  O as LoadingSpinner,
80
81
  y as Modal,
81
82
  K as ModulePadding,
83
+ ir as OnboardingBanner,
82
84
  W as OverflowTooltip,
83
- vr as SPANISH_LANGUAGE_ID,
85
+ Yr as SPANISH_LANGUAGE_ID,
84
86
  j as ScrollbarX,
85
87
  q as ScrollbarY,
86
88
  Q as SearchBar,
@@ -88,11 +90,11 @@ export {
88
90
  pr as Stepper,
89
91
  or as StepperHeader,
90
92
  tr as StepperIndicator,
91
- yr as TURKISH_LANGUAGE_ID,
93
+ Kr as TURKISH_LANGUAGE_ID,
92
94
  ur as ThemeColor,
93
95
  xr as VerticalDivider,
94
- Hr as capitalizeFirstLetters,
95
- Ur as getNumberAsLocaleString,
96
- hr as trimLeadingAndTrailingSpaces,
97
- Tr as useBreakpoints
96
+ hr as capitalizeFirstLetters,
97
+ Mr as getNumberAsLocaleString,
98
+ Pr as trimLeadingAndTrailingSpaces,
99
+ Hr as useBreakpoints
98
100
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@hortiview/shared-components",
3
3
  "description": "This is a shared component library. It should used in the HortiView platform and its modules.",
4
- "version": "2.0.0",
4
+ "version": "2.1.0",
5
5
  "type": "module",
6
6
  "repository": "https://dev.azure.com/sdundc/HV%20Platform/_git/HortiView-Frontend-Shared",
7
7
  "author": "Falk Menge <falk.menge.ext@bayer.com>",
@@ -1,350 +0,0 @@
1
- import { jsx as n, jsxs as C, Fragment as B } from "react/jsx-runtime";
2
- import { C as W, a as z, b as D, c as E, d as M } from "./index.es-6TJ1S8Jr.js";
3
- import { c as x, _ as P, P as e } from "./identity-DLWZln-X.js";
4
- import b, { forwardRef as $, useMemo as f, useRef as j, useImperativeHandle as q, createContext as F, useContext as I } from "react";
5
- import { d as U } from "./index.es-da0cf7oE.js";
6
- import { d as O } from "./index.es-D54RuMc_.js";
7
- import { OverflowTooltip as k } from "./components/OverflowTooltip/OverflowTooltip.js";
8
- import './assets/GenericCard.css';const R = /* @__PURE__ */ F({}), V = {
9
- /**
10
- * @deprecated _Use `variant`='airy' instead._
11
- *
12
- * Applies extra padding to each column.
13
- *
14
- * Defaults to **undefined**.
15
- */
16
- airy: U(e.bool, "Grid", 'Use `variant`="airy" instead.'),
17
- /**
18
- * Accepts GridCol or GridRow.
19
- *
20
- * Defaults to **null**.
21
- */
22
- children: e.node.isRequired,
23
- /**
24
- * The css class name to be passed through to the component markup.
25
- *
26
- * Defaults to **undefined**.
27
- */
28
- className: e.string,
29
- /**
30
- * Sets the column gap for the grid.
31
- *
32
- * Defaults to **'16px'**.
33
- */
34
- columnGap: e.oneOfType([e.string, e.number]),
35
- /**
36
- * Applies 100% height to the grid and direct children rows. Useful when creating a page layout. Be aware all direct children rows will have a 100% height.
37
- *
38
- * Defaults to **null**.
39
- */
40
- fullHeight: e.bool,
41
- /**
42
- * Applies 100% width to the grid and direct children rows. Useful to maintain full width in a flex container.
43
- *
44
- * Defaults to **null**.
45
- */
46
- fullWidth: e.bool,
47
- /**
48
- * Alignment of entire grid: left and right.
49
- *
50
- * Defaults to **'center'**.
51
- */
52
- gridAlign: e.oneOf(["center", "left", "right"]),
53
- /**
54
- * Sets the row gap for the grid.
55
- *
56
- * Defaults to **'16px'**.
57
- */
58
- rowGap: e.oneOfType([e.string, e.number]),
59
- /**
60
- * Styles for the grid.
61
- *
62
- * Defaults to **undefined**.
63
- */
64
- style: e.object,
65
- /**
66
- * If true the grid will have a max width according to your theme's breakpoints.
67
- *
68
- * Defaults to **false**.
69
- */
70
- useMaxWidth: e.bool,
71
- /**
72
- * Select `airy` or `standard` padding.
73
- *
74
- * Defaults to **'standard'**.
75
- */
76
- variant: e.oneOf(["standard", "airy", "none"])
77
- }, J = {
78
- airy: void 0,
79
- children: null,
80
- className: void 0,
81
- columnGap: "16px",
82
- fullHeight: null,
83
- fullWidth: null,
84
- gridAlign: "center",
85
- rowGap: "16px",
86
- style: void 0,
87
- useMaxWidth: !1,
88
- variant: "standard"
89
- }, K = {
90
- /**
91
- * Alignment of cell within the row: top, middle, bottom. If omitted the col will stretch to the height of the row.
92
- *
93
- * Defaults to **undefined**.
94
- */
95
- align: e.oneOf(["", "top", "middle", "bottom"]),
96
- /**
97
- * Content to be rendered inside the GridCol. Accepts any valid markup.
98
- *
99
- * Defaults to **null**.
100
- */
101
- children: e.node,
102
- /**
103
- * The css class name to be passed through to the component markup.
104
- *
105
- * Defaults to **undefined**.
106
- */
107
- className: e.string,
108
- /**
109
- * Specifies the number of columns the cell spans.
110
- *
111
- * Defaults to **null**.
112
- */
113
- desktopCol: e.number,
114
- /**
115
- * Specifies a grid item's start position within the grid column by contributing a line, a span, or nothing (automatic) to its grid placement. Set to any valid `grid-column-start`.
116
- *
117
- * Defaults to **null**.
118
- */
119
- gridColStart: e.oneOfType([e.string, e.number]),
120
- /**
121
- * Horizontal alignment of the cell contents of cell content: top, middle, bottom.
122
- *
123
- * Defaults to **'left'**.
124
- */
125
- horizontalAlign: e.oneOf(["left", "center", "right"]),
126
- /**
127
- * Specifies the order of the cell.
128
- *
129
- * Defaults to **null**.
130
- */
131
- order: e.number,
132
- /**
133
- * Specifies the number of columns the cell spans on a phone.
134
- *
135
- * Defaults to **null**.
136
- */
137
- phoneCol: e.number,
138
- /**
139
- * Specifies the number of columns the cell spans on a tablet.
140
- *
141
- * Defaults to **null**.
142
- */
143
- tabletCol: e.number,
144
- /**
145
- * Vertical alignment of cell content: top, middle, bottom.
146
- *
147
- * Defaults to **'top'**.
148
- */
149
- verticalAlign: e.oneOf(["top", "middle", "bottom"])
150
- }, L = {
151
- align: void 0,
152
- children: null,
153
- className: void 0,
154
- desktopCol: null,
155
- gridColStart: null,
156
- horizontalAlign: "left",
157
- order: null,
158
- phoneCol: null,
159
- tabletCol: null,
160
- verticalAlign: "top"
161
- }, Q = {
162
- /**
163
- * Content to be rendered inside the GridRow. Accepts any valid markup.
164
- *
165
- * Defaults to **null**.
166
- */
167
- children: e.node.isRequired,
168
- /**
169
- * The css class name to be passed through to the component markup.
170
- *
171
- * Defaults to **undefined**.
172
- */
173
- className: e.string
174
- }, X = {
175
- children: null,
176
- className: void 0
177
- }, v = /* @__PURE__ */ $((l, t) => {
178
- const {
179
- airy: a,
180
- children: o,
181
- className: d,
182
- columnGap: i,
183
- fullHeight: r,
184
- fullWidth: s,
185
- gridAlign: u,
186
- rowGap: m,
187
- style: c,
188
- useMaxWidth: g,
189
- variant: y,
190
- ...w
191
- } = l, h = a ? "airy" : y, G = f(() => ({
192
- fullHeight: r,
193
- rowGap: m,
194
- columnGap: i
195
- }), [i, r, m]), A = j();
196
- q(t, () => A.current, []);
197
- const S = f(() => x("lmnt", "mdc-layout-grid", "lmnt-layout-grid", `mdc-layout-grid mdc-layout-grid--align-${u}`, (h === "airy" || a) && "mdc-grid-cell-wrapper-airy-tablet mdc-grid-cell-wrapper-airy-desktop", y === "none" && "mdc-grid-cell-wrapper-none-tablet mdc-grid-cell-wrapper-none-desktop mdc-grid-cell-wrapper-none-phone ", s && "lmnt-layout-grid--full-width", r && "lmnt-layout-grid--full-height", g && "lmnt-layout-grid--with-max-width", d), [a, d, h, r, s, u, g, y]);
198
- return /* @__PURE__ */ b.createElement(R.Provider, {
199
- value: G
200
- }, /* @__PURE__ */ b.createElement("div", P({
201
- ref: A,
202
- className: S
203
- }, w), o));
204
- });
205
- v.displayName = "Grid";
206
- v.propTypes = V;
207
- v.defaultProps = J;
208
- const _ = /* @__PURE__ */ $((l, t) => {
209
- const {
210
- align: a,
211
- children: o,
212
- className: d,
213
- columns: i,
214
- desktopCol: r,
215
- gridColStart: s,
216
- horizontalAlign: u,
217
- order: m,
218
- phoneCol: c,
219
- style: g,
220
- tabletCol: y,
221
- verticalAlign: w,
222
- ...h
223
- } = l, G = f(() => ({
224
- ...g,
225
- gridColumnStart: s
226
- }), [s, g]);
227
- return /* @__PURE__ */ b.createElement("div", P({
228
- ref: t,
229
- style: G,
230
- className: x("lmnt", `lmnt-layout-grid__cell--vertical-align-${w}`, `lmnt-layout-grid__cell--horizontal-align-${u}`, "mdc-layout-grid__cell", !i && !c && !y && !r && ["mdc-layout-grid__cell"], m && `mdc-layout-grid__cell--order-${m}`, a && `mdc-layout-grid__cell--align-${a}`, i && [`mdc-layout-grid__cell--span-${i}`], c && [`mdc-layout-grid__cell--span-${c}-phone`], y && [`mdc-layout-grid__cell--span-${y}-tablet`], r && [`mdc-layout-grid__cell--span-${r}-desktop`], "lmnt-layout-grid__cell", d)
231
- }, h), o);
232
- });
233
- _.displayName = "GridCol";
234
- _.propTypes = K;
235
- _.defaultProps = L;
236
- const T = /* @__PURE__ */ $((l, t) => {
237
- const {
238
- children: a,
239
- className: o,
240
- style: d,
241
- ...i
242
- } = l, {
243
- fullHeight: r,
244
- rowGap: s,
245
- columnGap: u
246
- } = I(R), m = f(() => {
247
- let c = {
248
- rowGap: s,
249
- columnGap: u
250
- };
251
- return r && (c = {
252
- ...c,
253
- height: "100%"
254
- }), {
255
- ...d,
256
- ...c
257
- };
258
- }, [d, r, s, u]);
259
- return /* @__PURE__ */ b.createElement("div", P({
260
- ref: t,
261
- className: x("lmnt", "mdc-layout-grid__inner", "lmnt-layout-grid__inner", o),
262
- style: m
263
- }, i), a);
264
- });
265
- T.displayName = "GridRow";
266
- T.propTypes = Q;
267
- T.defaultProps = X;
268
- const Y = "_cardTitle_ny9m0_1", Z = "_cardBody_ny9m0_5", ee = "_cardContent_ny9m0_10", te = "_row_ny9m0_14", re = "_font_ny9m0_18", le = "_fontHeader_ny9m0_23", ae = "_title_ny9m0_27", ne = "_emptyContainer_ny9m0_33", oe = "_empty_ny9m0_33", p = {
269
- cardTitle: Y,
270
- cardBody: Z,
271
- cardContent: ee,
272
- row: te,
273
- font: re,
274
- fontHeader: le,
275
- title: ae,
276
- emptyContainer: ne,
277
- empty: oe
278
- }, H = {
279
- desktopCol: 6,
280
- phoneCol: 2,
281
- tabletCol: 4,
282
- verticalAlign: "bottom"
283
- }, ge = ({ item: l, columns: t, hiddenColumns: a }) => {
284
- const o = t.find((r) => r.asCardTitle), d = t.find((r) => r.asCardSubtitle), i = f(
285
- () => t.filter(
286
- (r) => !r.asCardTitle && !r.asCardSubtitle && r.id !== "actions"
287
- ),
288
- [t]
289
- );
290
- return /* @__PURE__ */ n(
291
- W,
292
- {
293
- variant: "raised",
294
- "data-testid": `card${o ? "-" + l[o.accessor] : ""}`,
295
- children: /* @__PURE__ */ C(z, { className: p.cardContent, "data-testid": "card-content", children: [
296
- /* @__PURE__ */ n(ie, { item: l, titleColumn: o, subTitleColumn: d }),
297
- /* @__PURE__ */ n(D, { className: p.cardBody, "data-testid": "card-body", children: /* @__PURE__ */ n(v, { fullHeight: !0, fullWidth: !0, variant: "none", children: i.map((r) => a?.includes(r.id) ? null : /* @__PURE__ */ C(T, { className: p.row, "data-testid": "row", children: [
298
- /* @__PURE__ */ n(_, { horizontalAlign: "right", ...H, children: /* @__PURE__ */ C(
299
- O,
300
- {
301
- level: 2,
302
- themeColor: "text-secondary-on-background",
303
- className: `${p.font} ${p.fontHeader}`,
304
- tag: "div",
305
- children: [
306
- r.header,
307
- ":"
308
- ]
309
- }
310
- ) }),
311
- /* @__PURE__ */ n(_, { horizontalAlign: "left", ...H, children: /* @__PURE__ */ n(N, { column: r, item: l }) })
312
- ] }, r.id)) }) })
313
- ] })
314
- }
315
- );
316
- }, ie = ({ item: l, titleColumn: t, subTitleColumn: a }) => {
317
- const o = l.actions;
318
- return !t && !a && !o ? null : /* @__PURE__ */ C(B, { children: [
319
- /* @__PURE__ */ n(
320
- E,
321
- {
322
- "data-testid": "card-title",
323
- className: p.cardTitle,
324
- primaryText: t !== void 0 && /* @__PURE__ */ n(N, { column: t, item: l, isTitle: !0 }),
325
- secondaryText: a !== void 0 && /* @__PURE__ */ n(N, { column: a, item: l, isTitle: !0 }),
326
- trailingBlock: o,
327
- trailingBlockType: o ? "title-actions" : void 0
328
- }
329
- ),
330
- /* @__PURE__ */ n(M, {})
331
- ] });
332
- }, N = ({ item: l, column: t, isTitle: a = !1 }) => t.cellTemplate ? t.cellTemplate({ row: { original: l } }) : a ? /* @__PURE__ */ n(
333
- k,
334
- {
335
- id: `tip_${t.id}_${l[t.accessor]}`,
336
- text: l[t.accessor],
337
- children: /* @__PURE__ */ n("span", { className: p.title, children: l[t.accessor] })
338
- }
339
- ) : /* @__PURE__ */ n(
340
- k,
341
- {
342
- id: `tip_${t.id}_${l[t.accessor]}`,
343
- text: l[t.accessor],
344
- children: /* @__PURE__ */ n(O, { level: 2, themeColor: "text-primary-on-background", className: p.font, children: l[t.accessor] })
345
- }
346
- );
347
- export {
348
- ge as G,
349
- p as s
350
- };