@viasat/beam-react 2.27.0 → 2.28.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.
Files changed (92) hide show
  1. package/assets/panel.css +1 -1
  2. package/chunks/{FloatingUI.context.D3kSM-y1.js → FloatingUI.context.Dl4Y1y1z.js} +2 -2
  3. package/chunks/{panel.module.FuwYDPMC.js → panel.module.BblnuBjO.js} +10 -2
  4. package/chunks/panel.module.CVyUzyCZ.js +1 -0
  5. package/lib/Autocomplete/Autocomplete.figma.d.ts +1 -0
  6. package/lib/Avatar/Avatar.figma.d.ts +1 -0
  7. package/lib/Avatar/AvatarGroup.figma.d.ts +1 -0
  8. package/lib/BadgeDot/BadgeDot.figma.d.ts +1 -0
  9. package/lib/Chips/Chips.figma.d.ts +1 -0
  10. package/lib/Dialog/Dialog.Header.es.js +1 -1
  11. package/lib/Dialog/Dialog.Trigger.es.js +1 -1
  12. package/lib/Divider/Divider.figma.d.ts +1 -0
  13. package/lib/FloatingUI/FloatingUI.content.es.js +1 -1
  14. package/lib/FloatingUI/FloatingUI.context.es.js +1 -1
  15. package/lib/FloatingUI/FloatingUI.root.es.js +1 -1
  16. package/lib/FloatingUI/FloatingUI.trigger.close.es.js +7 -7
  17. package/lib/FloatingUI/FloatingUI.trigger.es.js +4 -4
  18. package/lib/InputChoiceGroup/RadioButtonGroup/RadioButtonGroup.figma.d.ts +1 -0
  19. package/lib/InputChoiceGroup/SwitchGroup/SwitchGroup.figma.d.ts +1 -0
  20. package/lib/Link/Link.figma.d.ts +1 -0
  21. package/lib/Menu/ActionListContextWrapper.es.js +1 -1
  22. package/lib/NativeSelect/NativeSelect.figma.d.ts +1 -0
  23. package/lib/Popover/Popover.content.es.js +1 -1
  24. package/lib/Popover/Popover.trigger.es.js +1 -1
  25. package/lib/RadioButton/RadioButton.figma.d.ts +1 -0
  26. package/lib/Select/Select.figma.d.ts +1 -0
  27. package/lib/Slider/Slider.figma.d.ts +1 -0
  28. package/lib/TextArea/TextArea.figma.d.ts +1 -0
  29. package/lib/Tooltip/Tooltip.es.js +1 -1
  30. package/lib/wip/Panel/Footer/Panel.Footer.Actions.cjs.js +1 -0
  31. package/lib/wip/Panel/{Panel.Footer.Actions.es.js → Footer/Panel.Footer.Actions.es.js} +3 -3
  32. package/lib/wip/Panel/Footer/Panel.Footer.cjs.js +1 -0
  33. package/lib/wip/Panel/{Panel.Footer.d.ts → Footer/Panel.Footer.d.ts} +1 -1
  34. package/lib/wip/Panel/{Panel.Footer.es.js → Footer/Panel.Footer.es.js} +6 -6
  35. package/lib/wip/Panel/Header/Panel.Header.ContentAfter.cjs.js +1 -0
  36. package/lib/wip/Panel/{Panel.Header.ContentAfter.es.js → Header/Panel.Header.ContentAfter.es.js} +3 -3
  37. package/lib/wip/Panel/Header/Panel.Header.ContentBefore.cjs.js +1 -0
  38. package/lib/wip/Panel/{Panel.Header.ContentBefore.es.js → Header/Panel.Header.ContentBefore.es.js} +3 -3
  39. package/lib/wip/Panel/Header/Panel.Header.Description.cjs.js +1 -0
  40. package/lib/wip/Panel/{Panel.Header.Description.es.js → Header/Panel.Header.Description.es.js} +3 -3
  41. package/lib/wip/Panel/Header/Panel.Header.Heading.cjs.js +1 -0
  42. package/lib/wip/Panel/{Panel.Header.Heading.es.js → Header/Panel.Header.Heading.es.js} +6 -6
  43. package/lib/wip/Panel/Header/Panel.Header.Row.cjs.js +1 -0
  44. package/lib/wip/Panel/{Panel.Header.Row.es.js → Header/Panel.Header.Row.es.js} +6 -6
  45. package/lib/wip/Panel/Header/Panel.Header.Subheader.cjs.js +1 -0
  46. package/lib/wip/Panel/{Panel.Header.Subheader.es.js → Header/Panel.Header.Subheader.es.js} +3 -3
  47. package/lib/wip/Panel/Header/Panel.Header.cjs.js +1 -0
  48. package/lib/wip/Panel/{Panel.Header.d.ts → Header/Panel.Header.d.ts} +1 -1
  49. package/lib/wip/Panel/{Panel.Header.es.js → Header/Panel.Header.es.js} +6 -6
  50. package/lib/wip/Panel/Panel.Body.cjs.js +1 -1
  51. package/lib/wip/Panel/Panel.Body.es.js +1 -1
  52. package/lib/wip/Panel/Panel.Inline.cjs.js +1 -1
  53. package/lib/wip/Panel/Panel.Inline.d.ts +3 -2
  54. package/lib/wip/Panel/Panel.Inline.es.js +67 -55
  55. package/lib/wip/Panel/Panel.Overlay.cjs.js +1 -1
  56. package/lib/wip/Panel/Panel.Overlay.d.ts +3 -2
  57. package/lib/wip/Panel/Panel.Overlay.es.js +90 -51
  58. package/lib/wip/Panel/Panel.ResizeHandle.cjs.js +1 -0
  59. package/lib/wip/Panel/Panel.ResizeHandle.d.ts +1 -0
  60. package/lib/wip/Panel/Panel.ResizeHandle.es.js +18 -0
  61. package/lib/wip/Panel/Panel.cjs.js +1 -1
  62. package/lib/wip/Panel/Panel.d.ts +10 -10
  63. package/lib/wip/Panel/Panel.es.js +101 -89
  64. package/lib/wip/Panel/Panel.helpers.cjs.js +1 -1
  65. package/lib/wip/Panel/Panel.helpers.d.ts +1 -1
  66. package/lib/wip/Panel/Panel.helpers.es.js +3 -3
  67. package/lib/wip/Panel/Panel.types.d.ts +40 -4
  68. package/lib/wip/Panel/Panel.useResize.cjs.js +1 -0
  69. package/lib/wip/Panel/Panel.useResize.d.ts +17 -0
  70. package/lib/wip/Panel/Panel.useResize.es.js +43 -0
  71. package/lib/wip/Panel/index.d.ts +9 -9
  72. package/package.json +6 -6
  73. package/utils/hooks/useElementResize.cjs.js +1 -1
  74. package/utils/hooks/useElementResize.d.ts +1 -1
  75. package/utils/hooks/useElementResize.es.js +40 -34
  76. package/chunks/panel.module.Cb7pqpht.js +0 -1
  77. package/lib/wip/Panel/Panel.Footer.Actions.cjs.js +0 -1
  78. package/lib/wip/Panel/Panel.Footer.cjs.js +0 -1
  79. package/lib/wip/Panel/Panel.Header.ContentAfter.cjs.js +0 -1
  80. package/lib/wip/Panel/Panel.Header.ContentBefore.cjs.js +0 -1
  81. package/lib/wip/Panel/Panel.Header.Description.cjs.js +0 -1
  82. package/lib/wip/Panel/Panel.Header.Heading.cjs.js +0 -1
  83. package/lib/wip/Panel/Panel.Header.Row.cjs.js +0 -1
  84. package/lib/wip/Panel/Panel.Header.Subheader.cjs.js +0 -1
  85. package/lib/wip/Panel/Panel.Header.cjs.js +0 -1
  86. /package/lib/wip/Panel/{Panel.Footer.Actions.d.ts → Footer/Panel.Footer.Actions.d.ts} +0 -0
  87. /package/lib/wip/Panel/{Panel.Header.ContentAfter.d.ts → Header/Panel.Header.ContentAfter.d.ts} +0 -0
  88. /package/lib/wip/Panel/{Panel.Header.ContentBefore.d.ts → Header/Panel.Header.ContentBefore.d.ts} +0 -0
  89. /package/lib/wip/Panel/{Panel.Header.Description.d.ts → Header/Panel.Header.Description.d.ts} +0 -0
  90. /package/lib/wip/Panel/{Panel.Header.Heading.d.ts → Header/Panel.Header.Heading.d.ts} +0 -0
  91. /package/lib/wip/Panel/{Panel.Header.Row.d.ts → Header/Panel.Header.Row.d.ts} +0 -0
  92. /package/lib/wip/Panel/{Panel.Header.Subheader.d.ts → Header/Panel.Header.Subheader.d.ts} +0 -0
@@ -1,104 +1,116 @@
1
- import { jsx as _ } from "react/jsx-runtime";
2
- import w from "clsx";
3
- import { useMemo as y } from "react";
4
- import { g as H } from "../../../chunks/classNames.BTJmrO_L.js";
1
+ import { jsx as E } from "react/jsx-runtime";
2
+ import S from "clsx";
3
+ import { useMemo as z } from "react";
4
+ import { g as V } from "../../../chunks/classNames.BTJmrO_L.js";
5
5
  import "../../../chunks/constants.CKKGf1-i.js";
6
- import { Header as T } from "./Panel.Header.es.js";
7
- import { Body as j } from "./Panel.Body.es.js";
8
- import { Footer as q } from "./Panel.Footer.es.js";
9
- import { resolveOffset as U, usePanelClose as W, getPanelDividerState as G, PANEL_TRANSITION_DURATION_MS as J, getResolvedPanelPosition as K } from "./Panel.helpers.es.js";
10
- import { InlinePanel as L } from "./Panel.Inline.es.js";
11
- import { OverlayPanel as Q } from "./Panel.Overlay.es.js";
12
- import { s as e } from "../../../chunks/panel.module.FuwYDPMC.js";
13
- const { baseClassNamePrefix: o } = H("panel"), l = ({
14
- children: m,
15
- className: D,
16
- padding: E = "md",
17
- onOpenChange: x,
18
- open: f,
19
- size: t,
20
- dismissible: c = !0,
21
- closeButtonAriaLabel: d = "Close panel",
22
- kind: s = "inline",
23
- position: a,
24
- divider: I = !0,
25
- dividerColor: p,
26
- isAnimated: u = !0,
27
- onBeforeClose: M,
28
- modalType: n,
29
- offset: v,
30
- ...i
6
+ import { Header as W } from "./Header/Panel.Header.es.js";
7
+ import { Body as q } from "./Panel.Body.es.js";
8
+ import { Footer as G } from "./Footer/Panel.Footer.es.js";
9
+ import { resolveOffset as U, usePanelClose as J, getPanelDividerState as Q, PANEL_TRANSITION_DURATION_MS as X, getResolvedPanelPosition as Y } from "./Panel.helpers.es.js";
10
+ import { InlinePanel as Z } from "./Panel.Inline.es.js";
11
+ import { OverlayPanel as k } from "./Panel.Overlay.es.js";
12
+ import { s as e } from "../../../chunks/panel.module.BblnuBjO.js";
13
+ const ee = 165, oe = 100, se = (s, m) => {
14
+ if (!s || m === "full") return;
15
+ const p = m === "bottom", r = typeof s == "object" ? s : {}, c = r.minSize ?? (p ? oe : ee), n = r.maxSize ?? 1 / 0, f = r.storageKey ?? "";
16
+ return { minSize: c, maxSize: n, storageKey: f };
17
+ }, { baseClassNamePrefix: o } = V("panel"), d = ({
18
+ children: s,
19
+ className: m,
20
+ padding: p = "md",
21
+ onOpenChange: r,
22
+ open: c,
23
+ size: n = "md",
24
+ dismissible: f = !0,
25
+ closeButtonAriaLabel: N = "Close panel",
26
+ kind: i = "inline",
27
+ position: g,
28
+ divider: M = !0,
29
+ dividerColor: v,
30
+ isAnimated: P = !0,
31
+ onBeforeClose: x,
32
+ modalType: a,
33
+ offset: O,
34
+ resizable: D,
35
+ id: _,
36
+ ...u
31
37
  }) => {
32
- process.env.NODE_ENV !== "production" && n === "alert" && c && console.warn(
33
- 'Panel: `dismissible` is ignored when `modalType="alert"`. The close button is always hidden.'
34
- ), process.env.NODE_ENV !== "production" && i.closeOnOutsidePress && n !== "nonModal" && n !== void 0 && console.warn(
35
- 'Panel: `closeOnOutsidePress` has no effect when `modalType` is not `"nonModal"`.'
36
- );
37
- const N = n === "alert" ? !1 : c, r = K(a), b = t && (r !== "bottom" || t === "full"), O = s === "overlay" && v ? U(v) : void 0, P = !!O, g = w(
38
+ const t = Y(g), l = se(D, t), B = !!l;
39
+ if (process.env.NODE_ENV !== "production") {
40
+ l && !l.storageKey && console.warn("Panel: provide a `storageKey` in the `resizable` config to persist panel size across sessions."), a === "alert" && f && console.warn('Panel: `dismissible` is ignored when `modalType="alert"`. The close button is always hidden.');
41
+ const { closeOnOutsidePress: L } = u;
42
+ L && a !== "nonModal" && a !== void 0 && console.warn('Panel: `closeOnOutsidePress` has no effect when `modalType` is not `"nonModal"`.');
43
+ }
44
+ const y = a === "alert" ? !1 : f, T = n && (t !== "bottom" || n === "full"), $ = i === "overlay" && O ? U(O) : void 0, C = !!$, I = S(
38
45
  e[o],
39
- e[`${o}--${s}`],
40
- b && e[`${o}--size-${t}`],
41
- e[`${o}--padding-${E}`],
42
- e[`${o}--position-${r}`],
43
- P && e[`${o}--floating`],
44
- D
45
- ), B = w(
46
+ e[`${o}--${i}`],
47
+ T && e[`${o}--size-${n}`],
48
+ e[`${o}--padding-${p}`],
49
+ e[`${o}--position-${t}`],
50
+ C && e[`${o}--floating`],
51
+ B && e[`${o}--resizable`],
52
+ m
53
+ ), A = S(
46
54
  e[`${o}__inline-wrapper`],
47
- t === "full" && e[`${o}__inline-wrapper--full`]
48
- ), { requestClose: C, handleOverlayOpenChange: S } = W(
49
- M,
50
- x
51
- ), $ = y(
55
+ e[`${o}__inline-wrapper--size-${n}`]
56
+ ), { requestClose: h, handleOverlayOpenChange: H } = J(
57
+ x,
58
+ r
59
+ ), b = z(
52
60
  () => ({
53
- kind: s,
54
- dismissible: N,
55
- closeButtonAriaLabel: d,
56
- position: a,
57
- requestClose: C
61
+ kind: i,
62
+ dismissible: y,
63
+ closeButtonAriaLabel: N,
64
+ position: g,
65
+ requestClose: h
58
66
  }),
59
- [s, N, d, a, C]
60
- ), { showDivider: A, dividerBefore: F, dividerInner: R, dividerAfter: V } = G(I && !P, r), h = y(
61
- () => ({ duration: u ? J : 0 }),
62
- [u]
67
+ [i, y, N, g, h]
68
+ ), { showDivider: K, dividerBefore: R, dividerInner: F, dividerAfter: j } = Q(M && !C, t), w = z(
69
+ () => ({ duration: P ? X : 0 }),
70
+ [P]
63
71
  );
64
- return s === "inline" ? /* @__PURE__ */ _(
65
- L,
72
+ return i === "inline" ? /* @__PURE__ */ E(
73
+ Z,
66
74
  {
67
- contextValue: $,
68
- panelClassName: g,
69
- inlineWrapperClassName: B,
70
- resolvedPosition: r,
71
- dividerBefore: F,
72
- dividerInner: R,
73
- dividerAfter: V,
74
- dividerColor: p,
75
- open: f,
76
- transitionConfig: h,
77
- ...i,
78
- children: m
75
+ contextValue: b,
76
+ panelClassName: I,
77
+ inlineWrapperClassName: A,
78
+ resolvedPosition: t,
79
+ dividerBefore: R,
80
+ dividerInner: F,
81
+ dividerAfter: j,
82
+ dividerColor: v,
83
+ open: c,
84
+ transitionConfig: w,
85
+ resizeConfig: l,
86
+ id: _,
87
+ ...u,
88
+ children: s
79
89
  }
80
- ) : /* @__PURE__ */ _(
81
- Q,
90
+ ) : /* @__PURE__ */ E(
91
+ k,
82
92
  {
83
- contextValue: $,
84
- panelClassName: g,
85
- resolvedPosition: r,
86
- showDivider: A,
87
- dividerColor: p,
88
- modalType: n,
89
- floatingOffset: O,
90
- open: f,
91
- onOpenChange: S,
92
- transitionConfig: h,
93
- ...i,
94
- children: m
93
+ contextValue: b,
94
+ panelClassName: I,
95
+ resolvedPosition: t,
96
+ showDivider: K,
97
+ dividerColor: v,
98
+ modalType: a,
99
+ floatingOffset: $,
100
+ open: c,
101
+ onOpenChange: H,
102
+ transitionConfig: w,
103
+ resizeConfig: l,
104
+ id: _,
105
+ ...u,
106
+ children: s
95
107
  }
96
108
  );
97
109
  };
98
- l.displayName = "Panel";
99
- l.Header = T;
100
- l.Body = j;
101
- l.Footer = q;
110
+ d.displayName = "Panel";
111
+ d.Header = W;
112
+ d.Body = q;
113
+ d.Footer = G;
102
114
  export {
103
- l as Panel
115
+ d as Panel
104
116
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("react"),d=400;function P(t){return t===!0?{x:"1rem",y:"1rem"}:typeof t=="string"?{x:t,y:t}:{x:t.x,y:t.y}}const f="01",a=t=>t||"end",v=(t,e)=>{const s=t&&e!=="full";return{showDivider:s,dividerBefore:s&&e!=="start"&&e!=="bottom",dividerInner:s&&e==="bottom",dividerAfter:s&&e==="start"}},D=(t,e)=>{if(t!=="isModal")return t==="alert"?{escapeKey:!1,outsidePress:!1}:{escapeKey:!1,outsidePress:e??!1}},_=t=>t==="escape-key"?"escapeKey":t==="outside-press"?"outsidePress":"programmatic",y=(t,e)=>{const s=u.useCallback(i=>{if(!t){e==null||e(!1);return}const r=t(i);r instanceof Promise?r.then(l=>{l&&(e==null||e(!1))}).catch(()=>{}):r&&(e==null||e(!1))},[t,e]),c=u.useCallback((i,r,l)=>{i?e==null||e(!0):s(_(l))},[e,s]);return{requestClose:s,handleOverlayOpenChange:c}};exports.DEFAULT_PANEL_DIVIDER_COLOR=f;exports.PANEL_TRANSITION_DURATION_MS=d;exports.getPanelDismissConfig=D;exports.getPanelDividerState=v;exports.getResolvedPanelPosition=a;exports.resolveOffset=P;exports.usePanelClose=y;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("react"),d=400;function P(e){return e===!0?{x:"1rem",y:"1rem"}:typeof e=="string"?{x:e,y:e}:{x:e.x,y:e.y}}const f="01",a=e=>e||"end",v=(e,t)=>{const r=e&&t!=="full";return{showDivider:r,dividerBefore:r&&t!=="start"&&t!=="bottom",dividerInner:r&&t==="bottom",dividerAfter:r&&t==="start"}},D=(e,t)=>{if(e!=="isModal")return e==="alert"?{escapeKey:!1,outsidePress:!1}:{escapeKey:!0,outsidePress:t??!1}},_=e=>e==="escape-key"?"escapeKey":e==="outside-press"?"outsidePress":"programmatic",y=(e,t)=>{const r=u.useCallback(i=>{if(!e){t==null||t(!1);return}const s=e(i);s instanceof Promise?s.then(l=>{l&&(t==null||t(!1))}).catch(()=>{}):s&&(t==null||t(!1))},[e,t]),c=u.useCallback((i,s,l)=>{i?t==null||t(!0):r(_(l))},[t,r]);return{requestClose:r,handleOverlayOpenChange:c}};exports.DEFAULT_PANEL_DIVIDER_COLOR=f;exports.PANEL_TRANSITION_DURATION_MS=d;exports.getPanelDismissConfig=D;exports.getPanelDividerState=v;exports.getResolvedPanelPosition=a;exports.resolveOffset=P;exports.usePanelClose=y;
@@ -14,7 +14,7 @@ export declare const getPanelDividerState: (divider: boolean, position?: PanelPo
14
14
  * Returns the floating-ui `dismiss` config for an overlay panel.
15
15
  *
16
16
  * - `isModal` — `undefined` (floating-ui defaults: ESC + backdrop click both close)
17
- * - `nonModal` / omitted — ESC suppressed; outside-press controlled by `closeOnOutsidePress`
17
+ * - `nonModal` / omitted — ESC closes; outside-press controlled by `closeOnOutsidePress`
18
18
  * - `alert` — ESC and outside-press both suppressed
19
19
  */
20
20
  export declare const getPanelDismissConfig: (modalType: PanelModalType | undefined, closeOnOutsidePress?: boolean) => {
@@ -15,8 +15,8 @@ const m = "01", y = (t) => t || "end", D = (t, r) => {
15
15
  };
16
16
  }, _ = (t, r) => {
17
17
  if (t !== "isModal")
18
- return t === "alert" ? { escapeKey: !1, outsidePress: !1 } : { escapeKey: !1, outsidePress: r ?? !1 };
19
- }, d = (t) => t === "escape-key" ? "escapeKey" : t === "outside-press" ? "outsidePress" : "programmatic", a = (t, r) => {
18
+ return t === "alert" ? { escapeKey: !1, outsidePress: !1 } : { escapeKey: !0, outsidePress: r ?? !1 };
19
+ }, d = (t) => t === "escape-key" ? "escapeKey" : t === "outside-press" ? "outsidePress" : "programmatic", A = (t, r) => {
20
20
  const s = l(
21
21
  (i) => {
22
22
  if (!t) {
@@ -45,5 +45,5 @@ export {
45
45
  D as getPanelDividerState,
46
46
  y as getResolvedPanelPosition,
47
47
  v as resolveOffset,
48
- a as usePanelClose
48
+ A as usePanelClose
49
49
  };
@@ -9,8 +9,20 @@ export type ResolvedPanelOffset = {
9
9
  };
10
10
  export type PanelPosition = 'start' | 'end' | 'bottom' | 'full';
11
11
  export type PanelModalType = 'nonModal' | 'isModal' | 'alert';
12
- export type PanelSize = 'sm' | 'md' | 'lg' | 'full' | 'custom';
12
+ export type PanelSize = 'sm' | 'md' | 'lg' | 'full';
13
13
  export type PanelPadding = 'sm' | 'md';
14
+ /**
15
+ * Configuration for resizable panels.
16
+ * Pass `true` to use defaults, or an object for custom constraints.
17
+ */
18
+ export type PanelResizable = boolean | {
19
+ /** Minimum panel size in px. Default: 165 for start/end, 100 for bottom. */
20
+ minSize?: number;
21
+ /** Maximum panel size in px. Default: 50% viewport width for start/end, 90% viewport height for bottom. */
22
+ maxSize?: number;
23
+ /** localStorage key for persisting the panel's last-used size across sessions. */
24
+ storageKey?: string;
25
+ };
14
26
  /**
15
27
  * The reason a Panel close was requested via user interaction.
16
28
  *
@@ -91,6 +103,14 @@ interface BasePanelProps extends ComponentPropsWithoutRef<'aside'> {
91
103
  * @default 'end'
92
104
  */
93
105
  position?: PanelPosition;
106
+ /**
107
+ * Enables user-resizing via a drag handle at the panel edge.
108
+ * Pass `true` to use default min/max constraints, or an object to set custom
109
+ * values in pixels. Has no effect when `position="full"`.
110
+ * Provide a `storageKey` in the config object to persist the panel's last-used size across sessions.
111
+ * @default false
112
+ */
113
+ resizable?: PanelResizable;
94
114
  /**
95
115
  * Called before the Panel closes due to a user interaction. Return `false` (or
96
116
  * `Promise<false>`) to cancel the close — for example, when the panel contains
@@ -135,8 +155,12 @@ export interface OverlayPanelProps extends BasePanelProps {
135
155
  kind: 'overlay';
136
156
  /**
137
157
  * Specify the modal type (overlay only).
138
- * When set to `'alert'`, the close button is always hidden regardless of the
139
- * `dismissible` prop, and ESC / backdrop clicks are suppressed.
158
+ *
159
+ * - `'nonModal'` (default) — page stays interactive; ESC closes the panel;
160
+ * outside clicks only close when `closeOnOutsidePress` is set.
161
+ * - `'isModal'` — backdrop overlay, focus trapped; ESC and backdrop click close the panel.
162
+ * - `'alert'` — close button hidden, ESC and outside clicks are suppressed.
163
+ *
140
164
  * @default 'nonModal'
141
165
  */
142
166
  modalType?: PanelModalType;
@@ -164,4 +188,16 @@ export interface OverlayPanelProps extends BasePanelProps {
164
188
  };
165
189
  }
166
190
  export type PanelProps = InlinePanelProps | OverlayPanelProps;
167
- export type { PanelHeaderProps } from './Panel.Header';
191
+ /**
192
+ * Resolved resize configuration passed to internal Panel components.
193
+ * Presence signals resizing is enabled; absence signals it is disabled.
194
+ */
195
+ export type PanelResizeConfig = {
196
+ /** @default 165 for start/end, 100 for bottom */
197
+ minSize: number;
198
+ /** @default 50dvw for start/end, 90dvh for bottom */
199
+ maxSize: number;
200
+ /** localStorage key for size persistence */
201
+ storageKey: string;
202
+ };
203
+ export type { PanelHeaderProps } from './Header/Panel.Header';
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),k=require("../../../utils/hooks/useElementResize.cjs.js"),y=require("../../../utils/hooks/useLocalStorage.cjs.js"),R=({resizeConfig:u,position:l,floatingRef:c,requireMount:s=!1})=>{const n=!!u,{minSize:z=0,maxSize:b=0,storageKey:o=""}=u??{},i=t.useRef(null),[r,_]=t.useState(!1),m=t.useCallback(e=>{i.current=e,s&&_(!!e)},[s]),[S,d]=y.useLocalStorage(o||"__panel_no_key__","0",n&&!!o),a=n&&Number(S)>0?Number(S):0,f=t.useCallback(e=>{o&&d(e.toString())},[o,d]);return k.useElementResize(s?n&&r:n,c,i,z,b,a,l==="bottom"?"y":"x",l==="end",f),t.useEffect(()=>{if(!s||!r||!a||!c.current)return;const e=l==="bottom"?"blockSize":"inlineSize";c.current.style[e]=`${a}px`},[r]),{handleRef:m}};exports.usePanelResize=R;
@@ -0,0 +1,17 @@
1
+ import { PanelPosition, PanelResizeConfig } from './Panel.types';
2
+ type UsePanelResizeOptions = {
3
+ resizeConfig?: PanelResizeConfig;
4
+ position: PanelPosition;
5
+ floatingRef: React.RefObject<HTMLElement | null>;
6
+ /**
7
+ * Overlay panels start closed: the floating element and resize handle don't mount until open.
8
+ * useElementResize's listener-attach effect would otherwise run with a null handle ref and never
9
+ * re-run (ref object identity is stable). When true, this hook tracks handle mount via callback
10
+ * ref and re-applies the stored size each time the panel opens.
11
+ */
12
+ requireMount?: boolean;
13
+ };
14
+ export declare const usePanelResize: ({ resizeConfig, position, floatingRef, requireMount, }: UsePanelResizeOptions) => {
15
+ handleRef: (el: HTMLDivElement | null) => void;
16
+ };
17
+ export {};
@@ -0,0 +1,43 @@
1
+ import { useRef as _, useState as x, useCallback as u, useEffect as y } from "react";
2
+ import { useElementResize as k } from "../../../utils/hooks/useElementResize.es.js";
3
+ import { useLocalStorage as E } from "../../../utils/hooks/useLocalStorage.es.js";
4
+ const N = ({
5
+ resizeConfig: l,
6
+ position: o,
7
+ floatingRef: r,
8
+ requireMount: t = !1
9
+ }) => {
10
+ const n = !!l, { minSize: S = 0, maxSize: z = 0, storageKey: s = "" } = l ?? {}, m = _(null), [c, f] = x(!1), b = u(
11
+ (e) => {
12
+ m.current = e, t && f(!!e);
13
+ },
14
+ [t]
15
+ ), [i, d] = E(
16
+ s || "__panel_no_key__",
17
+ "0",
18
+ n && !!s
19
+ ), a = n && Number(i) > 0 ? Number(i) : 0, p = u(
20
+ (e) => {
21
+ s && d(e.toString());
22
+ },
23
+ [s, d]
24
+ );
25
+ return k(
26
+ t ? n && c : n,
27
+ r,
28
+ m,
29
+ S,
30
+ z,
31
+ a,
32
+ o === "bottom" ? "y" : "x",
33
+ o === "end",
34
+ p
35
+ ), y(() => {
36
+ if (!t || !c || !a || !r.current) return;
37
+ const e = o === "bottom" ? "blockSize" : "inlineSize";
38
+ r.current.style[e] = `${a}px`;
39
+ }, [c]), { handleRef: b };
40
+ };
41
+ export {
42
+ N as usePanelResize
43
+ };
@@ -1,12 +1,12 @@
1
1
  export { Panel } from './Panel';
2
2
  export type { PanelProps, InlinePanelProps, OverlayPanelProps, PanelKind, PanelPosition, PanelModalType, PanelSize, PanelPadding, PanelCloseReason, } from './Panel.types';
3
- export type { PanelHeaderProps } from './Panel.Header';
4
- export type { PanelHeaderRowProps } from './Panel.Header.Row';
5
- export type { PanelHeaderContentBeforeProps } from './Panel.Header.ContentBefore';
6
- export type { PanelHeaderHeadingProps } from './Panel.Header.Heading';
7
- export type { PanelHeaderDescriptionProps } from './Panel.Header.Description';
8
- export type { PanelHeaderContentAfterProps } from './Panel.Header.ContentAfter';
9
- export type { PanelHeaderSubheaderProps } from './Panel.Header.Subheader';
3
+ export type { PanelHeaderProps } from './Header/Panel.Header';
4
+ export type { PanelHeaderRowProps } from './Header/Panel.Header.Row';
5
+ export type { PanelHeaderContentBeforeProps } from './Header/Panel.Header.ContentBefore';
6
+ export type { PanelHeaderHeadingProps } from './Header/Panel.Header.Heading';
7
+ export type { PanelHeaderDescriptionProps } from './Header/Panel.Header.Description';
8
+ export type { PanelHeaderContentAfterProps } from './Header/Panel.Header.ContentAfter';
9
+ export type { PanelHeaderSubheaderProps } from './Header/Panel.Header.Subheader';
10
10
  export type { PanelBodyProps } from './Panel.Body';
11
- export type { PanelFooterProps } from './Panel.Footer';
12
- export type { PanelFooterActionsProps } from './Panel.Footer.Actions';
11
+ export type { PanelFooterProps } from './Footer/Panel.Footer';
12
+ export type { PanelFooterActionsProps } from './Footer/Panel.Footer.Actions';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@viasat/beam-react",
3
- "version": "2.27.0",
3
+ "version": "2.28.0",
4
4
  "description": "React component library for the Beam design system",
5
5
  "license": "MIT",
6
6
  "author": "Viasat",
@@ -59,11 +59,11 @@
59
59
  "access": "public"
60
60
  },
61
61
  "dependencies": {
62
- "@viasat/beam-fonts": "2.27.0",
63
- "@viasat/beam-shared": "2.27.0",
64
- "@viasat/beam-styles": "2.27.0",
65
- "@viasat/beam-tokens": "2.27.0",
66
- "@viasat/beam-icons": "2.27.0",
62
+ "@viasat/beam-fonts": "2.28.0",
63
+ "@viasat/beam-shared": "2.28.0",
64
+ "@viasat/beam-styles": "2.28.0",
65
+ "@viasat/beam-tokens": "2.28.0",
66
+ "@viasat/beam-icons": "2.28.0",
67
67
  "clsx": "^1.2.1",
68
68
  "@floating-ui/react": "^0.26.18",
69
69
  "@stepperize/react": "^5.1.5",
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react"),S=require("../../chunks/constants.hwjHOsvT.js"),X=require("../../chunks/helpers.COm6C5Gf.js"),q=(d,n,r,p=165,v=400,h=0)=>{const[C,y]=e.useState(h),i=e.useRef(0),a=e.useRef(!1),m=e.useCallback(t=>{if(!n.current)return;const L=t.clientX-i.current;i.current=t.clientX;const P=n.current.offsetWidth,c=a.current?P-L:P+L;c>=p&&c<=v&&(requestAnimationFrame(()=>{n.current&&(n.current.style.inlineSize=`${c}px`)}),y(c))},[n,p,v]),o=e.useMemo(()=>X.debounce(m,S.FPS_120),[m]),u=e.useCallback(t=>{r.current&&r.current.releasePointerCapture(t.pointerId),n.current&&(n.current.style.transition=""),document.removeEventListener("pointermove",o),document.removeEventListener("pointerup",u)},[o,n,r]),s=e.useCallback(t=>{t.preventDefault(),n.current&&(a.current=getComputedStyle(n.current).direction==="rtl",n.current.style.transition="none"),r.current&&r.current.setPointerCapture(t.pointerId),i.current=t.clientX,document.addEventListener("pointermove",o),document.addEventListener("pointerup",u)},[o,u,n,r]);return e.useEffect(()=>{if(!d||!r.current||!document)return;const t=r.current;return t&&t.addEventListener("pointerdown",s),()=>{t&&t.removeEventListener("pointerdown",s),document.removeEventListener("pointermove",o),document.removeEventListener("pointerup",u)}},[s,o,u,d,r]),C};exports.useElementResize=q;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react"),m=(g,n,o,P=165,k=400,i=0,e="x",W=!1,M)=>{const[$,Y]=r.useState(i),h=r.useRef(0),X=r.useRef(!1),L=r.useRef(i),s=r.useRef(null),p=r.useRef(null),w=r.useRef(M);w.current=M,r.useLayoutEffect(()=>{if(!i||!n.current||!g)return;const t=e==="y"?"blockSize":"inlineSize";n.current.style[t]=`${i}px`},[]);const C=r.useCallback(t=>{if(!n.current)return;const u=k===1/0?e==="y"?window.innerHeight*.9:window.innerWidth*.5:k;if(e==="y"){const c=t.clientY-h.current,f=n.current.offsetHeight-c;f>=P&&f<=u&&(h.current=t.clientY,L.current=f,Y(f),n.current.style.blockSize=`${f}px`)}else{const c=t.clientX-h.current,v=n.current.offsetWidth,y=X.current!==W?v-c:v+c;y>=P&&y<=u&&(h.current=t.clientX,L.current=y,Y(y),n.current.style.inlineSize=`${y}px`)}},[n,P,k,e,W]),d=r.useCallback(t=>{s.current=t,p.current===null&&(p.current=requestAnimationFrame(()=>{p.current=null,s.current&&(C(s.current),s.current=null)}))},[C]),l=r.useCallback(t=>{var u,c;(u=o.current)==null||u.releasePointerCapture(t.pointerId),document.removeEventListener("pointermove",d),document.removeEventListener("pointerup",l),p.current!==null&&(cancelAnimationFrame(p.current),p.current=null),s.current&&(C(s.current),s.current=null),n.current&&(n.current.style.transition=""),(c=w.current)==null||c.call(w,L.current)},[C,d,n,o]),I=r.useCallback(t=>{var u,c,v;t.preventDefault(),n.current&&(X.current=e==="x"?getComputedStyle(n.current).direction==="rtl":!1,n.current.style.transition="none"),(u=o.current)==null||u.setPointerCapture(t.pointerId),h.current=e==="y"?t.clientY:t.clientX,L.current=e==="y"?((c=n.current)==null?void 0:c.offsetHeight)??i:((v=n.current)==null?void 0:v.offsetWidth)??i,document.addEventListener("pointermove",d),document.addEventListener("pointerup",l)},[d,l,n,o,e,i]);return r.useEffect(()=>{if(!g||!o.current)return;const t=o.current;return t.addEventListener("pointerdown",I),()=>{t.removeEventListener("pointerdown",I),document.removeEventListener("pointermove",d),document.removeEventListener("pointerup",l)}},[I,d,l,g,o]),$};exports.useElementResize=m;
@@ -1 +1 @@
1
- export declare const useElementResize: (resizeEnabled: boolean, resizableElementRef: React.RefObject<HTMLElement>, resizeHandlerRef: React.RefObject<HTMLElement>, minWidth?: number, maxWidth?: number, defaultWidth?: number) => number;
1
+ export declare const useElementResize: (resizeEnabled: boolean, resizableElementRef: React.RefObject<HTMLElement>, resizeHandlerRef: React.RefObject<HTMLElement>, minSize?: number, maxSize?: number, defaultSize?: number, axis?: "x" | "y", invertX?: boolean, onDragEnd?: (size: number) => void) => number;
@@ -1,46 +1,52 @@
1
- import { useState as y, useRef as C, useCallback as s, useMemo as S, useEffect as f } from "react";
2
- import { a as M } from "../../chunks/constants.CKKGf1-i.js";
3
- import { d as W } from "../../chunks/helpers.CPNYYxrE.js";
4
- const g = (p, n, r, d = 165, v = 400, X = 0) => {
5
- const [a, w] = y(X), c = C(0), m = C(!1), L = s(
1
+ import { useState as A, useRef as v, useLayoutEffect as F, useCallback as C, useEffect as q } from "react";
2
+ const U = (I, n, o, P = 165, W = 400, e = 0, c = "x", k = !1, M) => {
3
+ const [m, X] = A(e), y = v(0), $ = v(!1), w = v(e), i = v(null), s = v(null), g = v(M);
4
+ g.current = M, F(() => {
5
+ if (!e || !n.current || !I) return;
6
+ const t = c === "y" ? "blockSize" : "inlineSize";
7
+ n.current.style[t] = `${e}px`;
8
+ }, []);
9
+ const l = C(
6
10
  (t) => {
7
11
  if (!n.current) return;
8
- const P = t.clientX - c.current;
9
- c.current = t.clientX;
10
- const h = n.current.offsetWidth, u = m.current ? h - P : h + P;
11
- u >= d && u <= v && (requestAnimationFrame(() => {
12
- n.current && (n.current.style.inlineSize = `${u}px`);
13
- }), w(u));
12
+ const u = W === 1 / 0 ? c === "y" ? window.innerHeight * 0.9 : window.innerWidth * 0.5 : W;
13
+ if (c === "y") {
14
+ const r = t.clientY - y.current, h = n.current.offsetHeight - r;
15
+ h >= P && h <= u && (y.current = t.clientY, w.current = h, X(h), n.current.style.blockSize = `${h}px`);
16
+ } else {
17
+ const r = t.clientX - y.current, d = n.current.offsetWidth, L = $.current !== k ? d - r : d + r;
18
+ L >= P && L <= u && (y.current = t.clientX, w.current = L, X(L), n.current.style.inlineSize = `${L}px`);
19
+ }
14
20
  },
15
- [n, d, v]
16
- ), o = S(
17
- () => W(L, M),
18
- [L]
19
- ), e = s(
21
+ [n, P, W, c, k]
22
+ ), p = C(
20
23
  (t) => {
21
- r.current && r.current.releasePointerCapture(t.pointerId), n.current && (n.current.style.transition = ""), document.removeEventListener("pointermove", o), document.removeEventListener("pointerup", e);
24
+ i.current = t, s.current === null && (s.current = requestAnimationFrame(() => {
25
+ s.current = null, i.current && (l(i.current), i.current = null);
26
+ }));
22
27
  },
23
- [o, n, r]
24
- ), i = s(
28
+ [l]
29
+ ), f = C(
25
30
  (t) => {
26
- t.preventDefault(), n.current && (m.current = getComputedStyle(n.current).direction === "rtl", n.current.style.transition = "none"), r.current && r.current.setPointerCapture(t.pointerId), c.current = t.clientX, document.addEventListener("pointermove", o), document.addEventListener("pointerup", e);
31
+ var u, r;
32
+ (u = o.current) == null || u.releasePointerCapture(t.pointerId), document.removeEventListener("pointermove", p), document.removeEventListener("pointerup", f), s.current !== null && (cancelAnimationFrame(s.current), s.current = null), i.current && (l(i.current), i.current = null), n.current && (n.current.style.transition = ""), (r = g.current) == null || r.call(g, w.current);
27
33
  },
28
- [o, e, n, r]
34
+ [l, p, n, o]
35
+ ), Y = C(
36
+ (t) => {
37
+ var u, r, d;
38
+ t.preventDefault(), n.current && ($.current = c === "x" ? getComputedStyle(n.current).direction === "rtl" : !1, n.current.style.transition = "none"), (u = o.current) == null || u.setPointerCapture(t.pointerId), y.current = c === "y" ? t.clientY : t.clientX, w.current = c === "y" ? ((r = n.current) == null ? void 0 : r.offsetHeight) ?? e : ((d = n.current) == null ? void 0 : d.offsetWidth) ?? e, document.addEventListener("pointermove", p), document.addEventListener("pointerup", f);
39
+ },
40
+ [p, f, n, o, c, e]
29
41
  );
30
- return f(() => {
31
- if (!p || !r.current || !document) return;
32
- const t = r.current;
33
- return t && t.addEventListener("pointerdown", i), () => {
34
- t && t.removeEventListener("pointerdown", i), document.removeEventListener("pointermove", o), document.removeEventListener("pointerup", e);
42
+ return q(() => {
43
+ if (!I || !o.current) return;
44
+ const t = o.current;
45
+ return t.addEventListener("pointerdown", Y), () => {
46
+ t.removeEventListener("pointerdown", Y), document.removeEventListener("pointermove", p), document.removeEventListener("pointerup", f);
35
47
  };
36
- }, [
37
- i,
38
- o,
39
- e,
40
- p,
41
- r
42
- ]), a;
48
+ }, [Y, p, f, I, o]), m;
43
49
  };
44
50
  export {
45
- g as useElementResize
51
+ U as useElementResize
46
52
  };
@@ -1 +0,0 @@
1
- var n=require("../assets/panel.css");const e={"bm-light":"bm-light","bm-dark":"bm-dark","bm-inverse":"bm-inverse","bm-enterprise":"bm-enterprise","bm-consumer":"bm-consumer","bm-panel":"bm-panel","bm-panel--inline":"bm-panel--inline","bm-panel--overlay":"bm-panel--overlay","bm-panel--position-start":"bm-panel--position-start","bm-panel--position-end":"bm-panel--position-end","bm-panel--position-bottom":"bm-panel--position-bottom","bm-panel--size-full":"bm-panel--size-full","bm-panel--position-full":"bm-panel--position-full","bm-panel--floating":"bm-panel--floating","bm-panel__body":"bm-panel__body","bm-panel--padding-sm":"bm-panel--padding-sm","bm-panel__header":"bm-panel__header","bm-panel__footer":"bm-panel__footer","bm-panel--padding-md":"bm-panel--padding-md","bm-panel__header__row":"bm-panel__header__row","bm-panel__header__content-before":"bm-panel__header__content-before","bm-panel__header__content-after":"bm-panel__header__content-after","bm-panel__header__heading":"bm-panel__header__heading","bm-panel__header__description":"bm-panel__header__description","bm-panel__header__close-button":"bm-panel__header__close-button","bm-panel__footer__actions":"bm-panel__footer__actions","bm-panel__footer__actions--start":"bm-panel__footer__actions--start","bm-panel__footer__actions--end":"bm-panel__footer__actions--end","bm-panel__footer__actions--spaceBetween":"bm-panel__footer__actions--spaceBetween","bm-panel__footer__actions--stacked":"bm-panel__footer__actions--stacked","bm-panel__overlay-divider":"bm-panel__overlay-divider","bm-panel__overlay-divider--start":"bm-panel__overlay-divider--start","bm-panel__overlay-divider--end":"bm-panel__overlay-divider--end","bm-panel__overlay-divider--bottom":"bm-panel__overlay-divider--bottom","bm-panel__inline-wrapper":"bm-panel__inline-wrapper","bm-panel__inline-wrapper-content":"bm-panel__inline-wrapper-content","bm-panel__inline-wrapper--full":"bm-panel__inline-wrapper--full"};exports.styles=e;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react/jsx-runtime"),i=require("clsx"),u=require("../../../chunks/classNames.DAeKwerT.js");require("../../../chunks/constants.hwjHOsvT.js");const e=require("../../../chunks/panel.module.Cb7pqpht.js"),{subElementClassPrefix:m}=u.getBEMClassNames("panel"),t=({layout:n="end",children:o,className:a,...c})=>{const s=`${m}footer__actions`,r=i(e.styles[s],e.styles[`${s}--${n}`],a);return l.jsx("div",{className:r,...c,children:o})};t.displayName="Panel.Footer.Actions";exports.Actions=t;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),c=require("clsx"),u=require("../../../chunks/classNames.DAeKwerT.js");require("../../../chunks/constants.hwjHOsvT.js");const _=require("../../Divider/Divider.cjs.js"),m=require("../../Box/Box.cjs.js"),b=require("./Panel.helpers.cjs.js"),d=require("./Panel.Footer.Actions.cjs.js"),q=require("../../../chunks/panel.module.Cb7pqpht.js"),{subElementClassPrefix:x}=u.getBEMClassNames("panel"),P=`${x}footer`,s=({children:r,className:o,divider:t=!0,dividerColor:i=b.DEFAULT_PANEL_DIVIDER_COLOR,backgroundColor:n,...l})=>{const a=c(q.styles[P],o);return e.jsxs(e.Fragment,{children:[t&&e.jsx(_.Divider,{borderColor:i}),e.jsx(m.Box,{as:"footer",className:a,backgroundColor:n,...l,children:r})]})};s.displayName="Panel.Footer";s.Actions=d.Actions;exports.Footer=s;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),l=require("clsx"),o=require("../../../chunks/classNames.DAeKwerT.js");require("../../../chunks/constants.hwjHOsvT.js");const c=require("../../../chunks/panel.module.Cb7pqpht.js"),{subElementClassPrefix:i}=o.getBEMClassNames("panel"),u=`${i}header`,e=({children:s,className:t,...n})=>{const r=l(c.styles[`${u}__content-after`],t);return a.jsx("div",{className:r,...n,children:s})};e.displayName="Panel.Header.ContentAfter";exports.ContentAfter=e;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),a=require("clsx"),l=require("../../../chunks/classNames.DAeKwerT.js");require("../../../chunks/constants.hwjHOsvT.js");const c=require("../../../chunks/panel.module.Cb7pqpht.js"),{subElementClassPrefix:i}=l.getBEMClassNames("panel"),u=`${i}header`,e=({children:s,className:t,...n})=>{const r=a(c.styles[`${u}__content-before`],t);return o.jsx("div",{className:r,...n,children:s})};e.displayName="Panel.Header.ContentBefore";exports.ContentBefore=e;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react/jsx-runtime"),n=require("clsx"),c=require("../../../chunks/classNames.DAeKwerT.js");require("../../../chunks/constants.hwjHOsvT.js");const l=require("../../../chunks/panel.module.Cb7pqpht.js"),{subElementClassPrefix:o}=c.getBEMClassNames("panel"),u=`${o}header`,e=({children:s,className:r,...t})=>{const a=n(l.styles[`${u}__description`],r);return i.jsx("div",{className:a,...t,children:s})};e.displayName="Panel.Header.Description";exports.Description=e;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const _=require("react/jsx-runtime"),o=require("react"),g=require("clsx"),m=require("../../../chunks/classNames.DAeKwerT.js");require("../../../chunks/constants.hwjHOsvT.js");const q=require("../../../chunks/FloatingUI.context.B15Tz_4h.js"),b=require("./Panel.context.cjs.js"),x=require("../../../utils/hooks/useId.cjs.js"),I=require("../../../chunks/panel.module.Cb7pqpht.js"),{subElementClassPrefix:y}=m.getBEMClassNames("panel"),P=`${y}header`,a=({children:r,className:i,id:c,...l})=>{const u=x.useId(),e=c??u,d=g(I.styles[`${P}__heading`],i),t=o.useContext(b.PanelContext),n=o.useContext(q.BmFloatingUIContext),s=(t==null?void 0:t.kind)==="overlay"?n==null?void 0:n.setLabelId:void 0;return o.useLayoutEffect(()=>{if(!(!s||!e))return s(e),()=>s(void 0)},[e,s]),_.jsx("div",{id:e,className:d,...l,children:r})};a.displayName="Panel.Header.Heading";exports.Heading=a;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),d=require("clsx"),b=require("../../../chunks/classNames.DAeKwerT.js");require("../../../chunks/constants.hwjHOsvT.js");const m=require("../../CloseButton/CloseButton.cjs.js"),_=require("../../Tooltip/Tooltip.cjs.js"),p=require("./Panel.context.cjs.js"),t=require("../../../chunks/panel.module.Cb7pqpht.js"),{subElementClassPrefix:x}=b.getBEMClassNames("panel"),l=`${x}header`,o=({children:n,className:r,...a})=>{const{dismissible:i,closeButtonAriaLabel:s,requestClose:c}=p.usePanelContext(),u=d(t.styles[`${l}__row`],r);return e.jsxs("div",{className:u,...a,children:[n,i&&e.jsx("div",{className:t.styles[`${l}__close-button`],children:e.jsx(_.Tooltip,{text:s,placement:"bottom",portalled:!0,role:{enabled:!1},children:e.jsx(m.CloseButton,{"aria-label":s,onClick:()=>c("closeButton"),size:"lg"})})})]})};o.displayName="Panel.Header.Row";exports.Row=o;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react/jsx-runtime"),n=require("clsx"),u=require("../../../chunks/classNames.DAeKwerT.js");require("../../../chunks/constants.hwjHOsvT.js");const c=require("../../../chunks/panel.module.Cb7pqpht.js"),{subElementClassPrefix:o}=u.getBEMClassNames("panel"),i=`${o}header`,e=({children:s,className:a,...r})=>{const t=n(c.styles[`${i}__subheader`],a);return l.jsx("div",{className:t,...r,children:s})};e.displayName="Panel.Header.Subheader";exports.Subheader=e;
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),_=require("clsx"),c=require("../../../chunks/classNames.DAeKwerT.js");require("../../../chunks/constants.hwjHOsvT.js");const d=require("../../Divider/Divider.cjs.js"),u=require("../../Box/Box.cjs.js"),P=require("./Panel.helpers.cjs.js"),b=require("./Panel.Header.Row.cjs.js"),p=require("./Panel.Header.ContentBefore.cjs.js"),q=require("./Panel.Header.Heading.cjs.js"),H=require("./Panel.Header.ContentAfter.cjs.js"),C=require("./Panel.Header.Description.cjs.js"),m=require("./Panel.Header.Subheader.cjs.js"),w=require("../../../chunks/panel.module.Cb7pqpht.js"),{subElementClassPrefix:x}=c.getBEMClassNames("panel"),D=`${x}header`,e=({children:n,className:i,divider:a=!0,dividerColor:s=P.DEFAULT_PANEL_DIVIDER_COLOR,backgroundColor:t,...l})=>{const o=_(w.styles[D],i);return r.jsxs(r.Fragment,{children:[r.jsx(u.Box,{as:"header",className:o,backgroundColor:t,...l,children:n}),a&&r.jsx(d.Divider,{borderColor:s})]})};e.displayName="Panel.Header";e.Row=b.Row;e.ContentBefore=p.ContentBefore;e.Heading=q.Heading;e.Description=C.Description;e.ContentAfter=H.ContentAfter;e.Subheader=m.Subheader;exports.Header=e;