@krosoft/react 0.0.306 → 0.0.308

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.
@@ -0,0 +1,28 @@
1
+ import { t as e } from "./tailwind.helper-CJaRYBmL.js";
2
+ import { t } from "./i18n-Iyf3fyzr.js";
3
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
+ //#region src/components/core/layouts/AppTitle.tsx
5
+ function i({ titleKey: i, descriptionKey: a, isSubTitle: o, inline: s }) {
6
+ let { t: c } = t(), l = o ? "text-xl md:text-2xl font-semibold" : "text-xl md:text-3xl font-bold";
7
+ return s ? /* @__PURE__ */ r("div", {
8
+ className: "flex min-w-0 flex-wrap items-baseline gap-x-2",
9
+ children: [/* @__PURE__ */ n("h1", {
10
+ className: e("shrink-0", l),
11
+ children: c(i) ?? ""
12
+ }), a ? /* @__PURE__ */ n("p", {
13
+ className: "min-w-0 truncate text-sm font-normal text-muted-foreground md:text-base",
14
+ children: c(a)
15
+ }) : null]
16
+ }) : /* @__PURE__ */ r("div", {
17
+ className: "flex min-w-0 flex-col gap-1",
18
+ children: [/* @__PURE__ */ n("h1", {
19
+ className: l,
20
+ children: c(i) ?? ""
21
+ }), a ? /* @__PURE__ */ n("p", {
22
+ className: e("hidden md:block text-muted-foreground", o && "text-sm"),
23
+ children: c(a)
24
+ }) : null]
25
+ });
26
+ }
27
+ //#endregion
28
+ export { i as t };
@@ -8,7 +8,7 @@ import { i as h, l as g, n as ee, t as _, u as v } from "./select-KWMg2_7Z.js";
8
8
  import { n as y } from "./useToast-UeDRLovh.js";
9
9
  import { t as b } from "./ImageInput-B6NH8JDS.js";
10
10
  import { t as x } from "./AppSubTitle-DJQjeSdC.js";
11
- import { t as S } from "./MultiSelect-0iYNlt_e.js";
11
+ import { t as S } from "./MultiSelect-kct3FndJ.js";
12
12
  import { useEffect as C, useRef as w, useState as T } from "react";
13
13
  import { jsx as E, jsxs as D } from "react/jsx-runtime";
14
14
  import { useForm as O } from "react-hook-form";
@@ -16,56 +16,56 @@ var _ = (t, n) => t === void 0 ? null : t ? /* @__PURE__ */ d("img", {
16
16
  }) : /* @__PURE__ */ d("span", {
17
17
  className: e("flex h-9 w-12 shrink-0 items-center justify-center rounded bg-muted text-[9px] text-muted-foreground", n),
18
18
  children: "—"
19
- }), v = ({ options: v, selected: y, onToggle: b, onClear: x, onSelectAll: S, variant: C = "input", placeholder: w, labelKey: T, searchable: E = !1, searchPlaceholder: D, disabled: O = !1, maxCount: k, className: A, ...j }) => {
20
- let { t: M } = t(), [N, P] = u(""), [F, I] = u(!1), L = C === "pill", R = C === "input" ? void 0 : i, z = l(() => N === "" ? v : v.filter((e) => e.label.toLowerCase().includes(N.toLowerCase())), [v, N]), B = l(() => z.filter((e) => e.disabled !== !0).map((e) => e.value), [z]), V = l(() => y.filter((e) => v.find((t) => t.value === e)?.disabled === !0), [v, y]), H = l(() => B.length !== 0 && B.every((e) => y.includes(e)), [B, y]), U = l(() => y.map((e) => v.find((t) => t.value === e)?.label ?? e), [v, y]), W = k !== void 0 && k > 0 ? U.slice(0, k) : U, G = U.length - W.length, K = (e) => {
21
- I(e), e || P("");
22
- }, q = () => {
23
- V.length > 0 ? S === void 0 ? y.filter((e) => !V.includes(e)).forEach((e) => {
19
+ }), v = ({ options: v, selected: y, onToggle: b, onClear: x, onSelectAll: S, variant: C = "input", placeholder: w, labelKey: T, searchable: E = !1, searchPlaceholder: D, disabled: O = !1, modal: k = !0, maxCount: A, className: j, ...M }) => {
20
+ let { t: N } = t(), [P, F] = u(""), [I, L] = u(!1), R = C === "pill", z = C === "input" ? void 0 : i, B = l(() => P === "" ? v : v.filter((e) => e.label.toLowerCase().includes(P.toLowerCase())), [v, P]), V = l(() => B.filter((e) => e.disabled !== !0).map((e) => e.value), [B]), H = l(() => y.filter((e) => v.find((t) => t.value === e)?.disabled === !0), [v, y]), U = l(() => V.length !== 0 && V.every((e) => y.includes(e)), [V, y]), W = l(() => y.map((e) => v.find((t) => t.value === e)?.label ?? e), [v, y]), G = A !== void 0 && A > 0 ? W.slice(0, A) : W, K = W.length - G.length, q = (e) => {
21
+ L(e), e || F("");
22
+ }, J = () => {
23
+ H.length > 0 ? S === void 0 ? y.filter((e) => !H.includes(e)).forEach((e) => {
24
24
  b(e);
25
- }) : S(V) : x === void 0 ? S === void 0 ? y.forEach((e) => {
25
+ }) : S(H) : x === void 0 ? S === void 0 ? y.forEach((e) => {
26
26
  b(e);
27
27
  }) : S([]) : x();
28
- }, J = () => {
29
- if (H) S === void 0 ? x !== void 0 && y.every((e) => B.includes(e)) ? x() : B.forEach((e) => {
28
+ }, Y = () => {
29
+ if (U) S === void 0 ? x !== void 0 && y.every((e) => V.includes(e)) ? x() : V.forEach((e) => {
30
30
  b(e);
31
- }) : S(y.filter((e) => !B.includes(e)));
31
+ }) : S(y.filter((e) => !V.includes(e)));
32
32
  else if (S !== void 0) {
33
33
  let e = [...y];
34
- B.forEach((t) => {
34
+ V.forEach((t) => {
35
35
  e.includes(t) || e.push(t);
36
36
  }), S(e);
37
- } else B.forEach((e) => {
37
+ } else V.forEach((e) => {
38
38
  y.includes(e) || b(e);
39
39
  });
40
- }, Y = L ? /* @__PURE__ */ f("button", {
41
- ...j,
40
+ }, X = R ? /* @__PURE__ */ f("button", {
41
+ ...M,
42
42
  type: "button",
43
43
  disabled: O,
44
- className: e(r, "inline-flex items-center justify-between gap-1.5 whitespace-nowrap transition-colors", y.length > 0 ? "border-primary bg-primary/10 text-primary font-medium" : "hover:bg-muted", R, A),
44
+ className: e(r, "inline-flex items-center justify-between gap-1.5 whitespace-nowrap transition-colors", y.length > 0 ? "border-primary bg-primary/10 text-primary font-medium" : "hover:bg-muted", z, j),
45
45
  children: [/* @__PURE__ */ d("span", {
46
46
  className: "truncate",
47
- children: T === void 0 ? w ?? M("select.placeholder") : M(T)
47
+ children: T === void 0 ? w ?? N("select.placeholder") : N(T)
48
48
  }), /* @__PURE__ */ f("div", {
49
49
  className: "flex shrink-0 items-center gap-1.5",
50
50
  children: [y.length > 0 && /* @__PURE__ */ d("span", {
51
51
  className: "flex h-4 min-w-[16px] items-center justify-center rounded-full bg-primary px-1 text-[10px] font-bold text-primary-foreground",
52
52
  children: y.length
53
- }), /* @__PURE__ */ d(p, { className: e("size-3.5 opacity-60 transition-transform", F && "rotate-180") })]
53
+ }), /* @__PURE__ */ d(p, { className: e("size-3.5 opacity-60 transition-transform", I && "rotate-180") })]
54
54
  })]
55
55
  }) : /* @__PURE__ */ f("button", {
56
- ...j,
56
+ ...M,
57
57
  type: "button",
58
58
  disabled: O,
59
- className: e(a, "w-full", R, F && "ring-2 ring-ring ring-offset-2", y.length === 0 && "text-muted-foreground", A),
59
+ className: e(a, "w-full", z, I && "ring-2 ring-ring ring-offset-2", y.length === 0 && "text-muted-foreground", j),
60
60
  children: [/* @__PURE__ */ d("span", {
61
61
  className: "truncate",
62
- children: y.length === 0 ? w ?? M("select.placeholder") : W.join(", ")
62
+ children: y.length === 0 ? w ?? N("select.placeholder") : G.join(", ")
63
63
  }), /* @__PURE__ */ f("div", {
64
64
  className: "flex shrink-0 items-center gap-1",
65
65
  children: [
66
- G > 0 && /* @__PURE__ */ f("span", {
66
+ K > 0 && /* @__PURE__ */ f("span", {
67
67
  className: "rounded-control bg-muted px-1.5 py-0.5 text-xs font-medium text-foreground",
68
- children: ["+", G]
68
+ children: ["+", K]
69
69
  }),
70
70
  y.length > 0 && !O && /* @__PURE__ */ d("span", {
71
71
  role: "button",
@@ -74,23 +74,24 @@ var _ = (t, n) => t === void 0 ? null : t ? /* @__PURE__ */ d("img", {
74
74
  e.stopPropagation();
75
75
  },
76
76
  onPointerDown: (e) => {
77
- e.preventDefault(), e.stopPropagation(), q();
77
+ e.preventDefault(), e.stopPropagation(), J();
78
78
  },
79
79
  className: "text-muted-foreground hover:text-foreground",
80
80
  children: /* @__PURE__ */ d(h, { className: "size-4" })
81
81
  }),
82
- /* @__PURE__ */ d(p, { className: e("size-4 opacity-50 shrink-0 transition-transform", F && "rotate-180") })
82
+ /* @__PURE__ */ d(p, { className: e("size-4 opacity-50 shrink-0 transition-transform", I && "rotate-180") })
83
83
  ]
84
84
  })]
85
85
  });
86
86
  return /* @__PURE__ */ f(c, {
87
- open: F,
88
- onOpenChange: K,
87
+ open: I,
88
+ onOpenChange: q,
89
+ modal: k,
89
90
  children: [/* @__PURE__ */ d(o, {
90
91
  asChild: !0,
91
- children: Y
92
+ children: X
92
93
  }), /* @__PURE__ */ f(s, {
93
- className: e("p-0", L ? "w-72 max-w-[var(--radix-popover-content-available-width)]" : "w-[var(--radix-popover-trigger-width)]"),
94
+ className: e("p-0", R ? "w-72 max-w-[var(--radix-popover-content-available-width)]" : "w-[var(--radix-popover-trigger-width)]"),
94
95
  align: "start",
95
96
  children: [/* @__PURE__ */ f(g, {
96
97
  shouldFilter: !1,
@@ -100,9 +101,9 @@ var _ = (t, n) => t === void 0 ? null : t ? /* @__PURE__ */ d("img", {
100
101
  children: /* @__PURE__ */ f("div", {
101
102
  className: "relative",
102
103
  children: [/* @__PURE__ */ d(m, { className: "absolute left-2 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground" }), /* @__PURE__ */ d(g.Input, {
103
- value: N,
104
- onValueChange: P,
105
- placeholder: D ?? M("search.placeholder"),
104
+ value: P,
105
+ onValueChange: F,
106
+ placeholder: D ?? N("search.placeholder"),
106
107
  className: "w-full rounded-control bg-muted/50 py-1.5 pl-7 pr-2 text-sm text-foreground placeholder:text-muted-foreground outline-none focus:ring-1 focus:ring-ring",
107
108
  autoFocus: !0
108
109
  })]
@@ -113,10 +114,10 @@ var _ = (t, n) => t === void 0 ? null : t ? /* @__PURE__ */ d("img", {
113
114
  className: "sr-only"
114
115
  }), /* @__PURE__ */ f(g.List, {
115
116
  className: "flex flex-col gap-0.5 max-h-56 overflow-y-auto overflow-x-hidden p-1.5 scrollbar-thin scrollbar-thumb-rounded scrollbar-thumb-muted-foreground/20 scrollbar-track-transparent [&::-webkit-scrollbar]:w-1.5 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-muted-foreground/20 [&::-webkit-scrollbar-track]:bg-transparent",
116
- children: [z.length === 0 && /* @__PURE__ */ d("p", {
117
+ children: [B.length === 0 && /* @__PURE__ */ d("p", {
117
118
  className: "px-2 py-3 text-center text-xs text-muted-foreground",
118
- children: M("states.noResult")
119
- }), z.map((e) => /* @__PURE__ */ f(g.Item, {
119
+ children: N("states.noResult")
120
+ }), B.map((e) => /* @__PURE__ */ f(g.Item, {
120
121
  value: e.value,
121
122
  disabled: e.disabled,
122
123
  onSelect: () => {
@@ -141,13 +142,13 @@ var _ = (t, n) => t === void 0 ? null : t ? /* @__PURE__ */ d("img", {
141
142
  ]
142
143
  }, e.value))]
143
144
  })]
144
- }), B.length > 0 && /* @__PURE__ */ d("div", {
145
+ }), V.length > 0 && /* @__PURE__ */ d("div", {
145
146
  className: "border-t border-border p-1.5",
146
147
  children: /* @__PURE__ */ d("button", {
147
148
  type: "button",
148
- onClick: J,
149
+ onClick: Y,
149
150
  className: "w-full rounded-md px-2 py-1.5 text-xs text-muted-foreground hover:text-foreground hover:bg-muted transition-colors text-center",
150
- children: M(H ? "filters.deselectAll" : "filters.selectAll")
151
+ children: N(U ? "filters.deselectAll" : "filters.selectAll")
151
152
  })
152
153
  })]
153
154
  })]
@@ -4,7 +4,7 @@ import { En as r } from "./ui-BdLutnCT.js";
4
4
  import { c as i, o as a, s as o } from "./tooltip-_geGvbS7.js";
5
5
  import { g as s, h as c, m as l, p as u } from "./sheet-C2vx5V6Q.js";
6
6
  import { i as d, l as f, n as p, t as m, u as h } from "./select-KWMg2_7Z.js";
7
- import { n as g } from "./MultiSelect-0iYNlt_e.js";
7
+ import { n as g } from "./MultiSelect-kct3FndJ.js";
8
8
  import * as _ from "react";
9
9
  import { useEffect as v, useMemo as y, useRef as b, useState as x } from "react";
10
10
  import { jsx as S, jsxs as C } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
1
  import { I as e } from "../../../ui-BdLutnCT.js";
2
2
  import { A as t, D as n, E as r, F as i, M as a, N as o, O as s, P as c, j as l, k as u } from "../../../sheet-C2vx5V6Q.js";
3
- import { n as d, r as f, t as p } from "../../../dialogs-BwObbaoM.js";
3
+ import { n as d, r as f, t as p } from "../../../dialogs-CRbk2Lv3.js";
4
4
  export { f as AppDialog, p as ConfirmationDialog, r as Dialog, n as DialogClose, s as DialogContent, u as DialogDescription, t as DialogFooter, l as DialogHeader, a as DialogOverlay, o as DialogPortal, c as DialogTitle, i as DialogTrigger, d as FormDialog, e as Progress };
@@ -3,8 +3,8 @@ import { t } from "../../../i18n-Iyf3fyzr.js";
3
3
  import { At as n, Pn as r } from "../../../ui-BdLutnCT.js";
4
4
  import { c as i } from "../../../tooltip-_geGvbS7.js";
5
5
  import { a, g as o, l as s, o as c, r as l, t as u, u as d } from "../../../sheet-C2vx5V6Q.js";
6
- import { t as f } from "../../../MultiSelect-0iYNlt_e.js";
7
- import { i as p, n as m, r as h, t as g } from "../../../SearchInput-sg_-w8UW.js";
6
+ import { t as f } from "../../../MultiSelect-kct3FndJ.js";
7
+ import { i as p, n as m, r as h, t as g } from "../../../SearchInput-BooRrXK2.js";
8
8
  import { useEffect as _, useMemo as v, useState as y } from "react";
9
9
  import { jsx as b, jsxs as x } from "react/jsx-runtime";
10
10
  import { getLocale as S } from "@krosoft/core/helpers";
@@ -1,2 +1,2 @@
1
- import { t as e } from "../../../GenericForm-DBLeKiPm.js";
1
+ import { t as e } from "../../../GenericForm-D0VYEbKP.js";
2
2
  export { e as GenericForm };
@@ -3,19 +3,19 @@ import { I as o } from "../../ui-BdLutnCT.js";
3
3
  import { A as s, D as c, E as l, F as u, M as d, N as f, O as p, P as m, j as h, k as g } from "../../sheet-C2vx5V6Q.js";
4
4
  import { a as _, c as v, i as y, n as b, o as x, r as S, s as C, t as w } from "../../charts-BDlyl5wa.js";
5
5
  import { t as T } from "../../ErrorAlert-DrjpMJu6.js";
6
- import { n as E, r as D, t as O } from "../../dialogs-BwObbaoM.js";
6
+ import { n as E, r as D, t as O } from "../../dialogs-CRbk2Lv3.js";
7
7
  import { t as k } from "../../ImageInput-B6NH8JDS.js";
8
8
  import { t as A } from "../../AppActions-CvT8dDnQ.js";
9
9
  import { t as j } from "../../AppSubTitle-DJQjeSdC.js";
10
- import { t as M } from "../../MultiSelect-0iYNlt_e.js";
11
- import { t as N } from "../../GenericForm-DBLeKiPm.js";
12
- import { i as P, n as F, r as I, t as L } from "../../SearchInput-sg_-w8UW.js";
10
+ import { t as M } from "../../MultiSelect-kct3FndJ.js";
11
+ import { t as N } from "../../GenericForm-D0VYEbKP.js";
12
+ import { i as P, n as F, r as I, t as L } from "../../SearchInput-BooRrXK2.js";
13
13
  import { ActiveFilters as R, AdvancedFilters as z, FilterField as B, FilterPills as V, FilterPillsGroup as H, TableFilter as U } from "./filters/index.js";
14
14
  import "./forms/index.js";
15
15
  import { n as W, t as G } from "../../icons-n0m_1w7z.js";
16
- import { t as K } from "../../inputs-Cxz5kfwF.js";
16
+ import { t as K } from "../../inputs-Cn_Uipbo.js";
17
17
  import { t as q } from "../../language-DgO7XgOg.js";
18
- import { t as J } from "../../AppTitle-BShUHen9.js";
18
+ import { t as J } from "../../AppTitle-C8t_LSuG.js";
19
19
  import { n as Y, t as X } from "../../states-Bs9lIWQe.js";
20
20
  import { AppPageHeader as Z, KpiCardsLayout as Q } from "./layouts/index.js";
21
21
  import { a as $, i as ee, n as te, o as ne, r as re, t as ie } from "../../navbar-tmnNnH3O.js";
@@ -31,10 +31,15 @@ interface MultiSelectProps<T extends string = string> extends Omit<React.Compone
31
31
  searchable?: boolean;
32
32
  searchPlaceholder?: string;
33
33
  disabled?: boolean;
34
+ /**
35
+ * Panneau rendu en modal (défaut, comme le `Select`). À laisser tel quel dans une boîte de
36
+ * dialogue : sans ça, le `Dialog` neutralise les clics et le scroll sur le panneau porté dans le portail.
37
+ */
38
+ modal?: boolean;
34
39
  /** Nombre de libellés affichés dans le trigger (variant `"input"`), le reste est résumé par un compteur `+N`. */
35
40
  maxCount?: number;
36
41
  className?: string;
37
42
  }
38
- export declare const MultiSelect: <T extends string = string>({ options, selected, onToggle, onClear, onSelectAll, variant, placeholder, labelKey, searchable, searchPlaceholder, disabled, maxCount, className, ...triggerProps }: MultiSelectProps<T>) => React.ReactElement;
43
+ export declare const MultiSelect: <T extends string = string>({ options, selected, onToggle, onClear, onSelectAll, variant, placeholder, labelKey, searchable, searchPlaceholder, disabled, modal, maxCount, className, ...triggerProps }: MultiSelectProps<T>) => React.ReactElement;
39
44
  export {};
40
45
  //# sourceMappingURL=MultiSelect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MultiSelect.d.ts","sourceRoot":"","sources":["../../../../src/components/core/inputs/MultiSelect.tsx"],"names":[],"mappings":"AACA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAKjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD,MAAM,WAAW,iBAAkB,SAAQ,YAAY;IACrD,uHAAuH;IACvH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sJAAsJ;IACtJ,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED;;;;;GAKG;AACH,UAAU,gBAAgB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;IAC7J,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,QAAQ,EAAE,CAAC,EAAE,CAAC;IACd,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IACpC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iHAAiH;IACjH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,sKAepD,gBAAgB,CAAC,CAAC,CAAC,KAAG,KAAK,CAAC,YAoO9B,CAAC"}
1
+ {"version":3,"file":"MultiSelect.d.ts","sourceRoot":"","sources":["../../../../src/components/core/inputs/MultiSelect.tsx"],"names":[],"mappings":"AACA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAKjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGxD,MAAM,WAAW,iBAAkB,SAAQ,YAAY;IACrD,uHAAuH;IACvH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sJAAsJ;IACtJ,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED;;;;;GAKG;AACH,UAAU,gBAAgB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;IAC7J,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,QAAQ,EAAE,CAAC,EAAE,CAAC;IACd,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IACpC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iHAAiH;IACjH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,6KAgBpD,gBAAgB,CAAC,CAAC,CAAC,KAAG,KAAK,CAAC,YAoO9B,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { t as e } from "../../../ImageInput-B6NH8JDS.js";
2
- import { t } from "../../../MultiSelect-0iYNlt_e.js";
3
- import { i as n, n as r, r as i, t as a } from "../../../SearchInput-sg_-w8UW.js";
4
- import { t as o } from "../../../inputs-Cxz5kfwF.js";
2
+ import { t } from "../../../MultiSelect-kct3FndJ.js";
3
+ import { i as n, n as r, r as i, t as a } from "../../../SearchInput-BooRrXK2.js";
4
+ import { t as o } from "../../../inputs-Cn_Uipbo.js";
5
5
  export { n as DatePicker, i as DateRangePicker, e as ImageInput, t as MultiSelect, o as RatingInput, a as SearchInput, r as SingleSelect };
@@ -8,6 +8,8 @@ export interface AppPageHeaderProps {
8
8
  onBack?: (() => void) | null;
9
9
  renderPreActions?: () => React.JSX.Element;
10
10
  className?: string;
11
+ /** Affiche le sous-titre (descriptionKey) sur la même ligne que le titre. */
12
+ inline?: boolean;
11
13
  }
12
- export declare function AppPageHeader({ icon: Icon, titleKey, descriptionKey, actions, onBack, renderPreActions, className }: AppPageHeaderProps): React.JSX.Element;
14
+ export declare function AppPageHeader({ icon: Icon, titleKey, descriptionKey, actions, onBack, renderPreActions, className, inline }: AppPageHeaderProps): React.JSX.Element;
13
15
  //# sourceMappingURL=AppPageHeader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppPageHeader.d.ts","sourceRoot":"","sources":["../../../../src/components/core/layouts/AppPageHeader.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,EAAE,kBAAkB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA0B3J"}
1
+ {"version":3,"file":"AppPageHeader.d.ts","sourceRoot":"","sources":["../../../../src/components/core/layouts/AppPageHeader.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,MAAM,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,kBAAkB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA0BnK"}
@@ -2,6 +2,8 @@ export interface AppTitleProps {
2
2
  titleKey: string;
3
3
  descriptionKey?: string;
4
4
  isSubTitle?: boolean;
5
+ /** Rend le sous-titre sur la même ligne que le titre (au lieu d'en dessous), en gris plus léger. */
6
+ inline?: boolean;
5
7
  }
6
- export declare function AppTitle({ titleKey, descriptionKey, isSubTitle }: AppTitleProps): React.JSX.Element;
8
+ export declare function AppTitle({ titleKey, descriptionKey, isSubTitle, inline }: AppTitleProps): React.JSX.Element;
7
9
  //# sourceMappingURL=AppTitle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppTitle.d.ts","sourceRoot":"","sources":["../../../../src/components/core/layouts/AppTitle.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,EAAE,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CASnG"}
1
+ {"version":3,"file":"AppTitle.d.ts","sourceRoot":"","sources":["../../../../src/components/core/layouts/AppTitle.tsx"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oGAAoG;IACpG,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAoB3G"}
@@ -4,16 +4,16 @@ import "../../../ui-BdLutnCT.js";
4
4
  import { c as r } from "../../../tooltip-_geGvbS7.js";
5
5
  import { t as i } from "../../../AppActions-CvT8dDnQ.js";
6
6
  import { t as a } from "../../../AppSubTitle-DJQjeSdC.js";
7
- import { t as o } from "../../../AppTitle-BShUHen9.js";
7
+ import { t as o } from "../../../AppTitle-C8t_LSuG.js";
8
8
  import { t as s } from "../../../useDocumentTitle--JeBsMsb.js";
9
9
  import { n as c } from "../../../states-Bs9lIWQe.js";
10
10
  import "react";
11
11
  import { jsx as l, jsxs as u } from "react/jsx-runtime";
12
12
  import { ArrowLeftIcon as d } from "lucide-react";
13
13
  //#region src/components/core/layouts/AppPageHeader.tsx
14
- function f({ icon: t, titleKey: n, descriptionKey: a, actions: c, onBack: f, renderPreActions: p, className: m }) {
15
- let { t: h } = e();
16
- return s(h(n)), /* @__PURE__ */ u("div", {
14
+ function f({ icon: t, titleKey: n, descriptionKey: a, actions: c, onBack: f, renderPreActions: p, className: m, inline: h }) {
15
+ let { t: g } = e();
16
+ return s(g(n)), /* @__PURE__ */ u("div", {
17
17
  className: "flex flex-row items-center justify-between gap-3 md:gap-4",
18
18
  children: [/* @__PURE__ */ u("div", {
19
19
  className: "flex min-w-0 items-center gap-3 md:gap-4",
@@ -31,7 +31,8 @@ function f({ icon: t, titleKey: n, descriptionKey: a, actions: c, onBack: f, ren
31
31
  }),
32
32
  /* @__PURE__ */ l(o, {
33
33
  titleKey: n,
34
- descriptionKey: a
34
+ descriptionKey: a,
35
+ inline: h
35
36
  })
36
37
  ]
37
38
  }), /* @__PURE__ */ u("div", {
@@ -5,7 +5,7 @@ import { _ as a, g as o, h as s, m as c } from "../../../ui-BdLutnCT.js";
5
5
  import { d as l } from "../../../sheet-C2vx5V6Q.js";
6
6
  import { i as u, l as d, n as f, t as p, u as m } from "../../../select-KWMg2_7Z.js";
7
7
  import { t as h } from "../../../AppActions-CvT8dDnQ.js";
8
- import { t as g } from "../../../AppTitle-BShUHen9.js";
8
+ import { t as g } from "../../../AppTitle-C8t_LSuG.js";
9
9
  import { useEffect as _, useRef as v } from "react";
10
10
  import { jsx as y, jsxs as b } from "react/jsx-runtime";
11
11
  import { ConstructionIcon as x } from "lucide-react";
@@ -8,18 +8,18 @@ import { a as ur, c as dr, i as fr, l as pr, n as mr, o as hr, r as gr, s as _r,
8
8
  import { t as br } from "../skeleton-D6Ga4BLw.js";
9
9
  import { a as xr, c as Sr, i as Cr, n as wr, o as Tr, r as Er, s as Dr, t as Or } from "../charts-BDlyl5wa.js";
10
10
  import { t as kr } from "../ErrorAlert-DrjpMJu6.js";
11
- import { n as Ar, r as jr, t as Mr } from "../dialogs-BwObbaoM.js";
11
+ import { n as Ar, r as jr, t as Mr } from "../dialogs-CRbk2Lv3.js";
12
12
  import { t as Nr } from "../ImageInput-B6NH8JDS.js";
13
13
  import { t as Pr } from "../AppActions-CvT8dDnQ.js";
14
14
  import { t as Fr } from "../AppSubTitle-DJQjeSdC.js";
15
- import { t as Ir } from "../MultiSelect-0iYNlt_e.js";
16
- import { t as Lr } from "../GenericForm-DBLeKiPm.js";
17
- import { i as Rr, n as zr, r as Br, t as Vr } from "../SearchInput-sg_-w8UW.js";
15
+ import { t as Ir } from "../MultiSelect-kct3FndJ.js";
16
+ import { t as Lr } from "../GenericForm-D0VYEbKP.js";
17
+ import { i as Rr, n as zr, r as Br, t as Vr } from "../SearchInput-BooRrXK2.js";
18
18
  import { ActiveFilters as Hr, AdvancedFilters as Ur, FilterField as Wr, FilterPills as Gr, FilterPillsGroup as Kr, TableFilter as qr } from "./core/filters/index.js";
19
19
  import { n as Jr, t as Yr } from "../icons-n0m_1w7z.js";
20
- import { t as Xr } from "../inputs-Cxz5kfwF.js";
20
+ import { t as Xr } from "../inputs-Cn_Uipbo.js";
21
21
  import { t as Zr } from "../language-DgO7XgOg.js";
22
- import { t as Qr } from "../AppTitle-BShUHen9.js";
22
+ import { t as Qr } from "../AppTitle-C8t_LSuG.js";
23
23
  import { n as $r, t as ei } from "../states-Bs9lIWQe.js";
24
24
  import { AppPageHeader as ti, KpiCardsLayout as ni } from "./core/layouts/index.js";
25
25
  import { a as ri, i as ii, n as ai, o as oi, r as si, t as ci } from "../navbar-tmnNnH3O.js";
@@ -4,7 +4,7 @@ import { Bn as n, Gn as r, Hn as i, I as a, Kn as o, Un as s, Wn as c, qn as l }
4
4
  import { c as u } from "./tooltip-_geGvbS7.js";
5
5
  import { E as d, O as f, P as p, j as m, k as h } from "./sheet-C2vx5V6Q.js";
6
6
  import { t as g } from "./ErrorAlert-DrjpMJu6.js";
7
- import { t as _ } from "./GenericForm-DBLeKiPm.js";
7
+ import { t as _ } from "./GenericForm-D0VYEbKP.js";
8
8
  import { useEffect as v, useId as y, useState as b } from "react";
9
9
  import { Fragment as x, jsx as S, jsxs as C } from "react/jsx-runtime";
10
10
  import { Pen as w, Save as T, X as E } from "lucide-react";
@@ -1,7 +1,7 @@
1
1
  import { t as e } from "./tailwind.helper-CJaRYBmL.js";
2
2
  import "./ImageInput-B6NH8JDS.js";
3
- import "./MultiSelect-0iYNlt_e.js";
4
- import "./SearchInput-sg_-w8UW.js";
3
+ import "./MultiSelect-kct3FndJ.js";
4
+ import "./SearchInput-BooRrXK2.js";
5
5
  import { jsx as t } from "react/jsx-runtime";
6
6
  import { Heart as n, Star as r } from "lucide-react";
7
7
  //#region src/components/core/inputs/RatingInput.tsx
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@krosoft/react",
3
- "version": "0.0.306",
3
+ "version": "0.0.308",
4
4
  "description": "Krosoft shared React package",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -1,19 +0,0 @@
1
- import { t as e } from "./tailwind.helper-CJaRYBmL.js";
2
- import { t } from "./i18n-Iyf3fyzr.js";
3
- import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
- //#region src/components/core/layouts/AppTitle.tsx
5
- function i({ titleKey: i, descriptionKey: a, isSubTitle: o }) {
6
- let { t: s } = t();
7
- return /* @__PURE__ */ r("div", {
8
- className: "flex min-w-0 flex-col gap-1",
9
- children: [/* @__PURE__ */ n("h1", {
10
- className: o ? "text-xl md:text-2xl font-semibold" : "text-xl md:text-3xl font-bold",
11
- children: s(i) ?? ""
12
- }), a ? /* @__PURE__ */ n("p", {
13
- className: e("hidden md:block text-muted-foreground", o && "text-sm"),
14
- children: s(a)
15
- }) : null]
16
- });
17
- }
18
- //#endregion
19
- export { i as t };