impact-nova 2.5.9 → 2.5.10

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 (61) hide show
  1. package/dist/components/data/data-table/column-runtime-state-guard.js +42 -42
  2. package/dist/components/data/data-table/data-table-column-tree-cache.d.ts +15 -0
  3. package/dist/components/data/data-table/data-table-column-tree-cache.js +109 -80
  4. package/dist/components/data/data-table/use-data-table-column-list-sync.js +65 -62
  5. package/dist/components/data/expandable-list-item/expandable-list-item-attributes.js +2 -3
  6. package/dist/components/data/expandable-list-item/expandable-list-item-metrics.js +2 -3
  7. package/dist/components/data-display/calendar/calendar-day-picker-classnames.d.ts +6 -1
  8. package/dist/components/data-display/calendar/calendar-day-picker-classnames.js +31 -23
  9. package/dist/components/data-display/calendar/calendar-day-picker-components.d.ts +2 -1
  10. package/dist/components/data-display/calendar/calendar-day-picker-components.js +194 -162
  11. package/dist/components/data-display/calendar/calendar-day-picker-view.d.ts +3 -2
  12. package/dist/components/data-display/calendar/calendar-day-picker-view.js +130 -129
  13. package/dist/components/data-display/calendar/calendar-padding-week.utils.d.ts +5 -1
  14. package/dist/components/data-display/calendar/calendar-padding-week.utils.js +20 -16
  15. package/dist/components/data-display/calendar/calendar-week-number-cell.d.ts +2 -1
  16. package/dist/components/data-display/calendar/calendar-week-number-cell.js +43 -42
  17. package/dist/components/data-display/calendar/calendar-week-utils.d.ts +6 -0
  18. package/dist/components/data-display/calendar/calendar-week-utils.js +51 -47
  19. package/dist/components/data-display/calendar/calendar.js +102 -100
  20. package/dist/components/data-display/calendar/calendar.types.d.ts +2 -0
  21. package/dist/components/data-display/calendar/use-calendar-day-picker-config.d.ts +4 -2
  22. package/dist/components/data-display/calendar/use-calendar-day-picker-config.js +77 -72
  23. package/dist/components/feedback/dialog/dialog.js +12 -12
  24. package/dist/components/feedback/sheet/sheet.js +22 -22
  25. package/dist/components/feedback/tooltip/tab-tooltip-render.js +2 -3
  26. package/dist/components/flows/command-palette/shortcut-settings.js +10 -10
  27. package/dist/components/flows/filter-panel/filter-panel.js +4 -4
  28. package/dist/components/forms/date-picker/calendar-selection-adapters.d.ts +2 -0
  29. package/dist/components/forms/date-picker/calendar-selection-adapters.js +36 -31
  30. package/dist/components/forms/date-picker/date-input-behavior.d.ts +10 -0
  31. package/dist/components/forms/date-picker/date-input-behavior.js +111 -90
  32. package/dist/components/forms/date-picker/date-picker.js +71 -69
  33. package/dist/components/forms/date-picker/date-picker.types.d.ts +2 -0
  34. package/dist/components/forms/date-picker/date-range-picker.js +146 -144
  35. package/dist/components/forms/date-picker/fiscal-pass-through.d.ts +1 -0
  36. package/dist/components/forms/date-picker/fiscal-pass-through.js +1 -0
  37. package/dist/components/forms/date-picker/month-picker.js +82 -80
  38. package/dist/components/forms/date-picker/month-range-picker.js +145 -143
  39. package/dist/components/forms/date-picker/multi-date-picker.js +51 -49
  40. package/dist/components/forms/date-picker/multi-month-picker.js +49 -47
  41. package/dist/components/forms/date-picker/multi-quarter-picker.js +46 -44
  42. package/dist/components/forms/date-picker/multi-week-picker.js +53 -51
  43. package/dist/components/forms/date-picker/multi-year-picker.js +48 -46
  44. package/dist/components/forms/date-picker/picker-story-layout.d.ts +2 -0
  45. package/dist/components/forms/date-picker/quarter-picker.js +46 -44
  46. package/dist/components/forms/date-picker/quarter-range-picker.js +45 -43
  47. package/dist/components/forms/date-picker/week-picker.js +82 -80
  48. package/dist/components/forms/date-picker/week-range-picker.js +169 -164
  49. package/dist/components/forms/date-picker/year-picker.js +47 -45
  50. package/dist/components/forms/date-picker/year-range-picker.js +47 -45
  51. package/dist/components/forms/select/components/SelectMenuPanel.js +3 -2
  52. package/dist/components/forms/select/components/SelectTriggerValue.js +2 -3
  53. package/dist/components/forms/select/components/Submenu.js +2 -3
  54. package/dist/components/forms/select/select.js +1 -0
  55. package/dist/form-react/Fields/WeekRangePicker.js +47 -48
  56. package/dist/form-react/types/fields.types.d.ts +2 -0
  57. package/dist/impact-nova.css +1 -1
  58. package/dist/lib/overlay/overlay-portal-context.js +16 -16
  59. package/dist/llms/rules/installation.js +1 -1
  60. package/dist/llms/rules/requirements.js +1 -1
  61. package/package.json +1 -1
@@ -1,19 +1,19 @@
1
1
  import { jsxs as f, jsx as r } from "react/jsx-runtime";
2
2
  import * as a from "react";
3
- import { Cross as Y, CalendarMonth as Z } from "impact-nova-icons";
4
- import { format as _ } from "date-fns";
5
- import { cn as ee } from "../../../lib/utils.js";
6
- import { Input as te } from "../input/input.js";
7
- import { Popover as re, PopoverAnchor as oe, PopoverContent as ne } from "../../feedback/popover/popover.js";
8
- import { Calendar as ae } from "../../data-display/calendar/calendar.js";
3
+ import { Cross as Z, CalendarMonth as _ } from "impact-nova-icons";
4
+ import { format as ee } from "date-fns";
5
+ import { cn as te } from "../../../lib/utils.js";
6
+ import { Input as re } from "../input/input.js";
7
+ import { Popover as oe, PopoverAnchor as ne, PopoverContent as ae } from "../../feedback/popover/popover.js";
8
+ import { Calendar as se } from "../../data-display/calendar/calendar.js";
9
9
  import { Tooltip as P, TooltipTrigger as C, TooltipContent as k } from "../../feedback/tooltip/tooltip.js";
10
- import { useImpactNovaI18n as se } from "../../../i18n/use-impact-nova-i18n.js";
11
- import { getDateFnsLocale as ie } from "../../../i18n/getDateFnsLocale.js";
12
- import { coerceDateArrayApply as ce, coerceDateArray as le } from "./calendar-selection-adapters.js";
13
- import { usePickerDismissActionsRef as pe, usePickerFooterDismissNudge as de, handlePickerSurfacePointerDown as fe } from "./date-input-behavior.js";
14
- import { buildDateBoundsMatcher as me } from "../../../lib/date-bounds-matcher.js";
15
- import { fiscalCalendarPassThrough as ue } from "./fiscal-pass-through.js";
16
- const he = a.forwardRef(
10
+ import { useImpactNovaI18n as ie } from "../../../i18n/use-impact-nova-i18n.js";
11
+ import { getDateFnsLocale as ce } from "../../../i18n/getDateFnsLocale.js";
12
+ import { coerceDateArrayApply as le, coerceDateArray as pe } from "./calendar-selection-adapters.js";
13
+ import { usePickerDismissActionsRef as de, usePickerFooterDismissNudge as fe, handlePickerSurfacePointerDown as me } from "./date-input-behavior.js";
14
+ import { buildDateBoundsMatcher as ue } from "../../../lib/date-bounds-matcher.js";
15
+ import { fiscalCalendarPassThrough as he } from "./fiscal-pass-through.js";
16
+ const ye = a.forwardRef(
17
17
  ({
18
18
  value: t,
19
19
  onChange: m,
@@ -33,60 +33,61 @@ const he = a.forwardRef(
33
33
  fiscalYearStartMonth: j,
34
34
  fiscalConfig: O,
35
35
  showPresets: w,
36
- comparison: E,
37
- onComparisonChange: v,
38
- ...z
39
- }, K) => {
40
- const { locale: h, t: s } = se(), q = a.useMemo(() => ie(h), [h]), B = M ?? s("datePicker.selectMultipleDates"), [i, n] = a.useState(!1), u = a.useRef(null), y = pe(), { footerFlashKey: H, footerFlashTarget: V, popoverHandlers: $ } = de(l, i, y, u), [p, d] = a.useState(t);
36
+ showPeriodBoundaries: E,
37
+ comparison: v,
38
+ onComparisonChange: z,
39
+ ...K
40
+ }, q) => {
41
+ const { locale: h, t: s } = ie(), B = a.useMemo(() => ce(h), [h]), H = M ?? s("datePicker.selectMultipleDates"), [i, n] = a.useState(!1), u = a.useRef(null), y = de(), { footerFlashKey: V, footerFlashTarget: $, popoverHandlers: G } = fe(l, i, y, u), [p, d] = a.useState(t);
41
42
  a.useEffect(() => {
42
43
  d(t);
43
44
  }, [i, t]);
44
- const G = (e) => {
45
- const c = le(e);
45
+ const J = (e) => {
46
+ const c = pe(e);
46
47
  d(c), l || m?.(c);
47
- }, J = (e) => {
48
- const c = ce(e, p);
48
+ }, Q = (e) => {
49
+ const c = le(e, p);
49
50
  m?.(c), n(!1);
50
51
  }, g = () => {
51
52
  d(t), n(!1);
52
53
  }, D = () => {
53
54
  d(void 0), m?.(void 0), l || n(!1);
54
- }, Q = t && t.length > 0 ? t.length === 1 ? _(t[0], x, { locale: q }) : `${t.length} dates selected` : "", U = a.useCallback(() => {
55
+ }, U = t && t.length > 0 ? t.length === 1 ? ee(t[0], x, { locale: B }) : `${t.length} dates selected` : "", W = a.useCallback(() => {
55
56
  const e = p?.length ?? 0, c = t?.length ?? 0;
56
57
  return e === c && (p ?? []).every(
57
- (W, X) => W.getTime() === t?.[X]?.getTime()
58
+ (X, Y) => X.getTime() === t?.[Y]?.getTime()
58
59
  ) ? "dismiss" : e > 0 ? "apply" : "cancel";
59
60
  }, [p, t]);
60
61
  return a.useLayoutEffect(() => {
61
62
  y.current = {
62
63
  onDismiss: g,
63
- resolveFlash: U
64
+ resolveFlash: W
64
65
  };
65
- }), /* @__PURE__ */ f(re, { open: o ? !1 : i, onOpenChange: (e) => {
66
+ }), /* @__PURE__ */ f(oe, { open: o ? !1 : i, onOpenChange: (e) => {
66
67
  o || !e && l || n(e);
67
68
  }, children: [
68
- /* @__PURE__ */ r(oe, { asChild: !0, children: /* @__PURE__ */ r(
69
+ /* @__PURE__ */ r(ne, { asChild: !0, children: /* @__PURE__ */ r(
69
70
  "div",
70
71
  {
71
72
  ref: u,
72
- onPointerDown: (e) => fe({
73
+ onPointerDown: (e) => me({
73
74
  disabled: o,
74
75
  event: e,
75
76
  onOpen: () => n(!0),
76
77
  focusField: () => u.current?.querySelector("input")?.focus()
77
78
  }),
78
79
  children: /* @__PURE__ */ r(
79
- te,
80
+ re,
80
81
  {
81
- ref: K,
82
- value: Q,
83
- placeholder: B,
82
+ ref: q,
83
+ value: U,
84
+ placeholder: H,
84
85
  readOnly: !0,
85
86
  disabled: o,
86
87
  onClick: () => {
87
88
  !o && !i && n(!0);
88
89
  },
89
- className: ee("cursor-pointer", R),
90
+ className: te("cursor-pointer", R),
90
91
  suffix: /* @__PURE__ */ f("div", { className: "flex items-center gap-1", children: [
91
92
  t && t.length > 0 && !o && /* @__PURE__ */ f(P, { children: [
92
93
  /* @__PURE__ */ r(C, { asChild: !0, children: /* @__PURE__ */ r(
@@ -99,7 +100,7 @@ const he = a.forwardRef(
99
100
  e.stopPropagation(), D();
100
101
  },
101
102
  className: "inline-flex size-4 items-center justify-center bg-transparent border-none p-0 cursor-pointer",
102
- children: /* @__PURE__ */ r(Y, { className: "size-3 hover:text-content" })
103
+ children: /* @__PURE__ */ r(Z, { className: "size-3 hover:text-content" })
103
104
  }
104
105
  ) }),
105
106
  /* @__PURE__ */ r(k, { variant: "tertiary", side: "top", children: s("calendar.clear") })
@@ -119,42 +120,42 @@ const he = a.forwardRef(
119
120
  (e.key === "Enter" || e.key === " ") && (e.preventDefault(), e.stopPropagation(), o || n(!i));
120
121
  },
121
122
  className: "inline-flex items-center justify-center bg-transparent border-none p-0 cursor-pointer",
122
- children: /* @__PURE__ */ r(Z, { className: "h-4 w-4 text-secondary-foreground" })
123
+ children: /* @__PURE__ */ r(_, { className: "h-4 w-4 text-secondary-foreground" })
123
124
  }
124
125
  ) }),
125
126
  /* @__PURE__ */ r(k, { variant: "tertiary", side: "top", children: s("datePicker.selectMultipleDates") })
126
127
  ] })
127
128
  ] }),
128
- ...z
129
+ ...K
129
130
  }
130
131
  )
131
132
  }
132
133
  ) }),
133
134
  /* @__PURE__ */ r(
134
- ne,
135
+ ae,
135
136
  {
136
137
  className: "w-auto p-0",
137
138
  align: "start",
138
139
  "aria-label": s("datePicker.selectMultipleDates"),
139
140
  onOpenAutoFocus: (e) => e.preventDefault(),
140
- ...$,
141
+ ...G,
141
142
  children: /* @__PURE__ */ r(
142
- ae,
143
+ se,
143
144
  {
144
145
  mode: "multiple",
145
146
  selected: p,
146
- footerFlashKey: H,
147
- footerFlashTarget: V,
148
- onSelect: G,
149
- disabled: me(A, N),
147
+ footerFlashKey: V,
148
+ footerFlashTarget: $,
149
+ onSelect: J,
150
+ disabled: ue(A, N),
150
151
  startMonth: b,
151
152
  endMonth: T,
152
153
  showFooter: l,
153
- onApply: J,
154
+ onApply: Q,
154
155
  onCancel: g,
155
156
  onClear: D,
156
157
  captionLayout: "dropdown",
157
- ...ue({
158
+ ...he({
158
159
  calendarKind: S,
159
160
  fiscalMode: F,
160
161
  granularity: I,
@@ -162,8 +163,9 @@ const he = a.forwardRef(
162
163
  fiscalYearStartMonth: j,
163
164
  fiscalConfig: O,
164
165
  showPresets: w,
165
- comparison: E,
166
- onComparisonChange: v
166
+ showPeriodBoundaries: E,
167
+ comparison: v,
168
+ onComparisonChange: z
167
169
  })
168
170
  }
169
171
  )
@@ -172,7 +174,7 @@ const he = a.forwardRef(
172
174
  ] });
173
175
  }
174
176
  );
175
- he.displayName = "MultiDatePicker";
177
+ ye.displayName = "MultiDatePicker";
176
178
  export {
177
- he as MultiDatePicker
179
+ ye as MultiDatePicker
178
180
  };
@@ -1,17 +1,17 @@
1
1
  import { jsxs as d, jsx as n } from "react/jsx-runtime";
2
2
  import * as s from "react";
3
- import { Cross as X, CalendarMonth as Y } from "impact-nova-icons";
4
- import { cn as Z } from "../../../lib/utils.js";
5
- import { Input as _ } from "../input/input.js";
6
- import { Popover as ee, PopoverAnchor as te, PopoverContent as ne } from "../../feedback/popover/popover.js";
7
- import { Calendar as re } from "../../data-display/calendar/calendar.js";
3
+ import { Cross as Y, CalendarMonth as Z } from "impact-nova-icons";
4
+ import { cn as _ } from "../../../lib/utils.js";
5
+ import { Input as ee } from "../input/input.js";
6
+ import { Popover as te, PopoverAnchor as ne, PopoverContent as re } from "../../feedback/popover/popover.js";
7
+ import { Calendar as oe } from "../../data-display/calendar/calendar.js";
8
8
  import { Tooltip as D, TooltipTrigger as b, TooltipContent as x } from "../../feedback/tooltip/tooltip.js";
9
- import { useImpactNovaI18n as oe } from "../../../i18n/use-impact-nova-i18n.js";
10
- import { coerceMonthArrayApply as se, coerceMonthArray as ie } from "./calendar-selection-adapters.js";
11
- import { usePickerDismissActionsRef as ce, usePickerFooterDismissNudge as ae, handlePickerSurfacePointerDown as le } from "./date-input-behavior.js";
12
- import { buildDateBoundsMatcher as pe } from "../../../lib/date-bounds-matcher.js";
13
- import { fiscalCalendarPassThrough as fe } from "./fiscal-pass-through.js";
14
- const de = s.forwardRef(
9
+ import { useImpactNovaI18n as se } from "../../../i18n/use-impact-nova-i18n.js";
10
+ import { coerceMonthArrayApply as ie, coerceMonthArray as ce } from "./calendar-selection-adapters.js";
11
+ import { usePickerDismissActionsRef as ae, usePickerFooterDismissNudge as le, handlePickerSurfacePointerDown as pe } from "./date-input-behavior.js";
12
+ import { buildDateBoundsMatcher as fe } from "../../../lib/date-bounds-matcher.js";
13
+ import { fiscalCalendarPassThrough as de } from "./fiscal-pass-through.js";
14
+ const he = s.forwardRef(
15
15
  ({
16
16
  value: t,
17
17
  onChange: h,
@@ -30,27 +30,28 @@ const de = s.forwardRef(
30
30
  fiscalYearStartMonth: w,
31
31
  fiscalConfig: E,
32
32
  showPresets: F,
33
- comparison: K,
34
- onComparisonChange: z,
35
- ...L
36
- }, V) => {
37
- const { t: i } = oe(), $ = A ?? i("datePicker.selectMultipleMonths"), [c, o] = s.useState(!1), u = s.useRef(!1), m = s.useRef(null), g = ce(), { footerFlashKey: q, footerFlashTarget: B, popoverHandlers: H } = ae(l, c, g, m), [p, f] = s.useState(t);
33
+ showPeriodBoundaries: K,
34
+ comparison: z,
35
+ onComparisonChange: L,
36
+ ...V
37
+ }, $) => {
38
+ const { t: i } = se(), q = A ?? i("datePicker.selectMultipleMonths"), [c, o] = s.useState(!1), u = s.useRef(!1), m = s.useRef(null), g = ae(), { footerFlashKey: B, footerFlashTarget: H, popoverHandlers: G } = le(l, c, g, m), [p, f] = s.useState(t);
38
39
  s.useEffect(() => {
39
40
  f(t);
40
41
  }, [c, t]);
41
- const G = (e) => {
42
- const a = ie(e);
42
+ const J = (e) => {
43
+ const a = ce(e);
43
44
  f(a), l || h?.(a);
44
- }, J = (e) => {
45
- const a = se(e, p);
45
+ }, Q = (e) => {
46
+ const a = ie(e, p);
46
47
  h?.(a), o(!1);
47
48
  }, M = () => {
48
49
  f(t), o(!1);
49
50
  }, P = () => {
50
51
  f(void 0), h?.(void 0), l || o(!1);
51
- }, Q = t && t.length > 0 ? t.length === 1 ? `${t[0].month + 1}/${t[0].year}` : i("datePicker.monthsSelected", { count: t.length }) : "", U = (e) => {
52
+ }, U = t && t.length > 0 ? t.length === 1 ? `${t[0].month + 1}/${t[0].year}` : i("datePicker.monthsSelected", { count: t.length }) : "", W = (e) => {
52
53
  r || !e && l || o(e);
53
- }, W = s.useCallback(() => {
54
+ }, X = s.useCallback(() => {
54
55
  const e = p?.length ?? 0, a = t?.length ?? 0;
55
56
  return e === a && (p ?? []).every(
56
57
  (C, k) => C.month === t?.[k]?.month && C.year === t?.[k]?.year
@@ -59,31 +60,31 @@ const de = s.forwardRef(
59
60
  return s.useLayoutEffect(() => {
60
61
  g.current = {
61
62
  onDismiss: M,
62
- resolveFlash: W
63
+ resolveFlash: X
63
64
  };
64
- }), /* @__PURE__ */ d(ee, { open: r ? !1 : c, onOpenChange: U, children: [
65
- /* @__PURE__ */ n(te, { asChild: !0, children: /* @__PURE__ */ n(
65
+ }), /* @__PURE__ */ d(te, { open: r ? !1 : c, onOpenChange: W, children: [
66
+ /* @__PURE__ */ n(ne, { asChild: !0, children: /* @__PURE__ */ n(
66
67
  "div",
67
68
  {
68
69
  ref: m,
69
- onPointerDown: (e) => le({
70
+ onPointerDown: (e) => pe({
70
71
  disabled: r,
71
72
  event: e,
72
73
  onOpen: () => o(!0),
73
74
  focusField: () => m.current?.querySelector("input")?.focus()
74
75
  }),
75
76
  children: /* @__PURE__ */ n(
76
- _,
77
+ ee,
77
78
  {
78
- ref: V,
79
- value: Q,
80
- placeholder: $,
79
+ ref: $,
80
+ value: U,
81
+ placeholder: q,
81
82
  readOnly: !0,
82
83
  disabled: r,
83
84
  onClick: () => {
84
85
  !r && !c && o(!0);
85
86
  },
86
- className: Z("cursor-pointer", S),
87
+ className: _("cursor-pointer", S),
87
88
  suffix: /* @__PURE__ */ d("div", { className: "flex items-center gap-1", children: [
88
89
  t && t.length > 0 && !r && /* @__PURE__ */ d(D, { children: [
89
90
  /* @__PURE__ */ n(b, { asChild: !0, children: /* @__PURE__ */ n(
@@ -96,7 +97,7 @@ const de = s.forwardRef(
96
97
  e.stopPropagation(), P();
97
98
  },
98
99
  className: "inline-flex size-4 items-center justify-center bg-transparent border-none p-0 cursor-pointer",
99
- children: /* @__PURE__ */ n(X, { className: "size-3 hover:text-content" })
100
+ children: /* @__PURE__ */ n(Y, { className: "size-3 hover:text-content" })
100
101
  }
101
102
  ) }),
102
103
  /* @__PURE__ */ n(x, { variant: "tertiary", side: "top", children: i("calendar.clear") })
@@ -116,19 +117,19 @@ const de = s.forwardRef(
116
117
  (e.key === "Enter" || e.key === " ") && (e.preventDefault(), e.stopPropagation(), r || (u.current = !0, o(!c)));
117
118
  },
118
119
  className: "inline-flex items-center justify-center bg-transparent border-none p-0 cursor-pointer",
119
- children: /* @__PURE__ */ n(Y, { className: "h-4 w-4 text-secondary-foreground" })
120
+ children: /* @__PURE__ */ n(Z, { className: "h-4 w-4 text-secondary-foreground" })
120
121
  }
121
122
  ) }),
122
123
  /* @__PURE__ */ n(x, { variant: "tertiary", side: "top", children: i("datePicker.selectMultipleMonths") })
123
124
  ] })
124
125
  ] }),
125
- ...L
126
+ ...V
126
127
  }
127
128
  )
128
129
  }
129
130
  ) }),
130
131
  /* @__PURE__ */ n(
131
- ne,
132
+ re,
132
133
  {
133
134
  className: "w-auto p-0",
134
135
  align: "start",
@@ -136,26 +137,26 @@ const de = s.forwardRef(
136
137
  onOpenAutoFocus: (e) => {
137
138
  u.current || e.preventDefault(), u.current = !1;
138
139
  },
139
- ...H,
140
+ ...G,
140
141
  children: /* @__PURE__ */ n(
141
- re,
142
+ oe,
142
143
  {
143
144
  pickerType: "month",
144
145
  monthMode: "multiple",
145
146
  selectedMonths: p,
146
- footerFlashKey: q,
147
- footerFlashTarget: B,
148
- onMonthSelect: G,
149
- disabled: pe(y, N),
147
+ footerFlashKey: B,
148
+ footerFlashTarget: H,
149
+ onMonthSelect: J,
150
+ disabled: fe(y, N),
150
151
  startMonth: R,
151
152
  endMonth: T,
152
153
  defaultMonth: y,
153
154
  showFooter: l,
154
- onApply: J,
155
+ onApply: Q,
155
156
  onCancel: M,
156
157
  onClear: P,
157
158
  captionLayout: "dropdown",
158
- ...fe({
159
+ ...de({
159
160
  calendarKind: I,
160
161
  fiscalMode: O,
161
162
  granularity: j,
@@ -163,8 +164,9 @@ const de = s.forwardRef(
163
164
  fiscalYearStartMonth: w,
164
165
  fiscalConfig: E,
165
166
  showPresets: F,
166
- comparison: K,
167
- onComparisonChange: z
167
+ showPeriodBoundaries: K,
168
+ comparison: z,
169
+ onComparisonChange: L
168
170
  })
169
171
  }
170
172
  )
@@ -173,7 +175,7 @@ const de = s.forwardRef(
173
175
  ] });
174
176
  }
175
177
  );
176
- de.displayName = "MultiMonthPicker";
178
+ he.displayName = "MultiMonthPicker";
177
179
  export {
178
- de as MultiMonthPicker
180
+ he as MultiMonthPicker
179
181
  };
@@ -1,18 +1,18 @@
1
1
  import { jsx as r, jsxs as g } from "react/jsx-runtime";
2
2
  import * as n from "react";
3
- import { Cross as X, CalendarMonth as Y } from "impact-nova-icons";
4
- import { cn as Z } from "../../../lib/utils.js";
5
- import { Input as _ } from "../input/input.js";
6
- import { Calendar as $ } from "../../data-display/calendar/calendar.js";
3
+ import { Cross as Y, CalendarMonth as Z } from "impact-nova-icons";
4
+ import { cn as _ } from "../../../lib/utils.js";
5
+ import { Input as $ } from "../input/input.js";
6
+ import { Calendar as ee } from "../../data-display/calendar/calendar.js";
7
7
  import { Tooltip as M, TooltipTrigger as x, TooltipContent as b } from "../../feedback/tooltip/tooltip.js";
8
- import { useImpactNovaI18n as ee } from "../../../i18n/use-impact-nova-i18n.js";
9
- import { buildDateBoundsMatcher as te } from "../../../lib/date-bounds-matcher.js";
10
- import { fiscalCalendarPassThrough as re } from "./fiscal-pass-through.js";
11
- import { DatePickerShell as ne } from "./date-picker-shell.js";
12
- import { usePickerDismissActionsRef as oe, usePickerFooterDismissNudge as ae, handleReadonlyPickerKeyDown as ie, handlePickerSurfacePointerDown as ce } from "./date-input-behavior.js";
13
- import { formatQuarterInput as se } from "../../data-display/calendar/calendar-fiscal-labels.js";
14
- import { viewMonthFromQuarter as le } from "../../data-display/calendar/calendar-quarter-utils.js";
15
- const pe = n.forwardRef(
8
+ import { useImpactNovaI18n as te } from "../../../i18n/use-impact-nova-i18n.js";
9
+ import { buildDateBoundsMatcher as re } from "../../../lib/date-bounds-matcher.js";
10
+ import { fiscalCalendarPassThrough as ne } from "./fiscal-pass-through.js";
11
+ import { DatePickerShell as oe } from "./date-picker-shell.js";
12
+ import { usePickerDismissActionsRef as ae, usePickerFooterDismissNudge as ie, handleReadonlyPickerKeyDown as ce, handlePickerSurfacePointerDown as se } from "./date-input-behavior.js";
13
+ import { formatQuarterInput as le } from "../../data-display/calendar/calendar-fiscal-labels.js";
14
+ import { viewMonthFromQuarter as pe } from "../../data-display/calendar/calendar-quarter-utils.js";
15
+ const ue = n.forwardRef(
16
16
  ({
17
17
  value: t,
18
18
  onChange: u,
@@ -31,26 +31,28 @@ const pe = n.forwardRef(
31
31
  fiscalYearStartMonth: v,
32
32
  fiscalConfig: K,
33
33
  showPresets: j,
34
- ...F
35
- }, z) => {
36
- const { t: a } = ee(), E = R ?? a("datePicker.selectMultipleQuarters"), f = n.useRef(null), y = n.useRef(null);
37
- n.useImperativeHandle(z, () => f.current);
38
- const [i, c] = n.useState(!1), d = n.useRef(!1), k = oe(), { footerFlashKey: H, footerFlashTarget: L, popoverHandlers: V } = ae(s, i, k, y), [P, l] = n.useState(t), [q, B] = n.useState(le(t?.[0]));
34
+ showPeriodBoundaries: F,
35
+ ...z
36
+ }, E) => {
37
+ const { t: a } = te(), H = R ?? a("datePicker.selectMultipleQuarters"), f = n.useRef(null), y = n.useRef(null);
38
+ n.useImperativeHandle(E, () => f.current);
39
+ const [i, c] = n.useState(!1), d = n.useRef(!1), k = ae(), { footerFlashKey: L, footerFlashTarget: V, popoverHandlers: q } = ie(s, i, k, y), [P, l] = n.useState(t), [B, G] = n.useState(pe(t?.[0]));
39
40
  n.useEffect(() => {
40
41
  i || l(t);
41
42
  }, [i, t]);
42
- const m = n.useCallback(() => c(!1), []), G = re({
43
+ const m = n.useCallback(() => c(!1), []), J = ne({
43
44
  calendarKind: I,
44
45
  fiscalMode: O,
45
46
  granularity: T,
46
47
  fiscalMonthPattern: w,
47
48
  fiscalYearStartMonth: v,
48
49
  fiscalConfig: K,
49
- showPresets: j
50
- }), J = (e) => {
50
+ showPresets: j,
51
+ showPeriodBoundaries: F
52
+ }), U = (e) => {
51
53
  const p = Array.isArray(e) && e.length > 0 ? e : void 0;
52
54
  l(p), s || u?.(p);
53
- }, U = () => {
55
+ }, W = () => {
54
56
  u?.(P), m();
55
57
  }, h = () => {
56
58
  l(t), m();
@@ -60,9 +62,9 @@ const pe = n.forwardRef(
60
62
  n.useLayoutEffect(() => {
61
63
  k.current = { onDismiss: h, resolveFlash: () => "cancel" };
62
64
  });
63
- const W = t && t.length > 0 ? t.length === 1 ? se(t[0]) : a("datePicker.quartersSelected", { count: t.length }) : "";
65
+ const X = t && t.length > 0 ? t.length === 1 ? le(t[0]) : a("datePicker.quartersSelected", { count: t.length }) : "";
64
66
  return /* @__PURE__ */ r(
65
- ne,
67
+ oe,
66
68
  {
67
69
  open: i,
68
70
  disabled: o,
@@ -73,26 +75,26 @@ const pe = n.forwardRef(
73
75
  onOpenAutoFocus: (e) => {
74
76
  d.current || e.preventDefault(), d.current = !1;
75
77
  },
76
- popoverHandlers: V,
78
+ popoverHandlers: q,
77
79
  trigger: /* @__PURE__ */ r(
78
80
  "div",
79
81
  {
80
82
  ref: y,
81
83
  "data-component": "multi-quarter-picker",
82
84
  "data-state": i ? "open" : "closed",
83
- onPointerDown: (e) => ce({
85
+ onPointerDown: (e) => se({
84
86
  disabled: o,
85
87
  event: e,
86
88
  onOpen: () => c(!0),
87
89
  focusField: () => f.current?.focus()
88
90
  }),
89
91
  children: /* @__PURE__ */ r(
90
- _,
92
+ $,
91
93
  {
92
94
  ref: f,
93
- value: W,
95
+ value: X,
94
96
  readOnly: !0,
95
- onKeyDown: (e) => ie(e, {
97
+ onKeyDown: (e) => ce(e, {
96
98
  disabled: o,
97
99
  open: i,
98
100
  onOpen: () => c(!0),
@@ -102,10 +104,10 @@ const pe = n.forwardRef(
102
104
  }
103
105
  }),
104
106
  onClick: () => !o && c(!0),
105
- placeholder: E,
107
+ placeholder: H,
106
108
  disabled: o,
107
109
  "data-form-control": "input",
108
- className: Z("cursor-pointer", A),
110
+ className: _("cursor-pointer", A),
109
111
  suffix: /* @__PURE__ */ g("div", { className: "flex items-center gap-1", children: [
110
112
  t && t.length > 0 && !o ? /* @__PURE__ */ g(M, { children: [
111
113
  /* @__PURE__ */ r(x, { asChild: !0, children: /* @__PURE__ */ r(
@@ -118,7 +120,7 @@ const pe = n.forwardRef(
118
120
  e.stopPropagation(), C();
119
121
  },
120
122
  className: "inline-flex size-4 items-center justify-center border-none bg-transparent p-0",
121
- children: /* @__PURE__ */ r(X, { className: "size-3 hover:text-content" })
123
+ children: /* @__PURE__ */ r(Y, { className: "size-3 hover:text-content" })
122
124
  }
123
125
  ) }),
124
126
  /* @__PURE__ */ r(b, { variant: "tertiary", side: "top", children: a("calendar.clear") })
@@ -135,43 +137,43 @@ const pe = n.forwardRef(
135
137
  e.stopPropagation(), o || c((p) => !p);
136
138
  },
137
139
  className: "inline-flex items-center justify-center border-none bg-transparent p-0",
138
- children: /* @__PURE__ */ r(Y, { className: "h-4 w-4 text-secondary-foreground" })
140
+ children: /* @__PURE__ */ r(Z, { className: "h-4 w-4 text-secondary-foreground" })
139
141
  }
140
142
  ) }),
141
143
  /* @__PURE__ */ r(b, { variant: "tertiary", side: "top", children: a("datePicker.selectMultipleQuarters") })
142
144
  ] })
143
145
  ] }),
144
- ...F
146
+ ...z
145
147
  }
146
148
  )
147
149
  }
148
150
  ),
149
151
  children: /* @__PURE__ */ r(
150
- $,
152
+ ee,
151
153
  {
152
154
  pickerType: "quarter",
153
155
  monthMode: "multiple",
154
156
  selectedQuarters: P,
155
- footerFlashKey: H,
156
- footerFlashTarget: L,
157
- onQuarterSelect: J,
158
- month: q,
159
- onMonthChange: B,
160
- disabled: te(D, Q),
157
+ footerFlashKey: L,
158
+ footerFlashTarget: V,
159
+ onQuarterSelect: U,
160
+ month: B,
161
+ onMonthChange: G,
162
+ disabled: re(D, Q),
161
163
  startMonth: N,
162
164
  endMonth: S,
163
165
  showFooter: s,
164
- onApply: U,
166
+ onApply: W,
165
167
  onCancel: h,
166
168
  onClear: C,
167
- ...G
169
+ ...J
168
170
  }
169
171
  )
170
172
  }
171
173
  );
172
174
  }
173
175
  );
174
- pe.displayName = "MultiQuarterPicker";
176
+ ue.displayName = "MultiQuarterPicker";
175
177
  export {
176
- pe as MultiQuarterPicker
178
+ ue as MultiQuarterPicker
177
179
  };