impact-nova 2.5.8 → 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 (73) 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 +197 -164
  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-fiscal-labels.js +6 -6
  14. package/dist/components/data-display/calendar/calendar-fiscal-period-nav.d.ts +16 -0
  15. package/dist/components/data-display/calendar/calendar-fiscal-period-nav.js +41 -0
  16. package/dist/components/data-display/calendar/calendar-padding-week.utils.d.ts +5 -1
  17. package/dist/components/data-display/calendar/calendar-padding-week.utils.js +20 -16
  18. package/dist/components/data-display/calendar/calendar-week-number-cell.d.ts +2 -1
  19. package/dist/components/data-display/calendar/calendar-week-number-cell.js +43 -42
  20. package/dist/components/data-display/calendar/calendar-week-utils.d.ts +6 -0
  21. package/dist/components/data-display/calendar/calendar-week-utils.js +51 -47
  22. package/dist/components/data-display/calendar/calendar.js +102 -100
  23. package/dist/components/data-display/calendar/calendar.types.d.ts +2 -0
  24. package/dist/components/data-display/calendar/use-calendar-day-picker-config.d.ts +4 -2
  25. package/dist/components/data-display/calendar/use-calendar-day-picker-config.js +77 -72
  26. package/dist/components/data-display/calendar/use-fiscal-calendar.js +16 -15
  27. package/dist/components/feedback/dialog/dialog.js +12 -12
  28. package/dist/components/feedback/sheet/sheet.js +22 -22
  29. package/dist/components/feedback/tooltip/tab-tooltip-render.js +2 -3
  30. package/dist/components/flows/command-palette/shortcut-settings.js +10 -10
  31. package/dist/components/flows/filter-panel/filter-panel.js +4 -4
  32. package/dist/components/forms/date-picker/calendar-selection-adapters.d.ts +2 -0
  33. package/dist/components/forms/date-picker/calendar-selection-adapters.js +36 -31
  34. package/dist/components/forms/date-picker/date-input-behavior.d.ts +10 -0
  35. package/dist/components/forms/date-picker/date-input-behavior.js +111 -90
  36. package/dist/components/forms/date-picker/date-picker.js +71 -69
  37. package/dist/components/forms/date-picker/date-picker.types.d.ts +2 -0
  38. package/dist/components/forms/date-picker/date-range-picker.js +146 -144
  39. package/dist/components/forms/date-picker/fiscal-pass-through.d.ts +1 -0
  40. package/dist/components/forms/date-picker/fiscal-pass-through.js +1 -0
  41. package/dist/components/forms/date-picker/month-picker.js +82 -80
  42. package/dist/components/forms/date-picker/month-range-picker.js +145 -143
  43. package/dist/components/forms/date-picker/multi-date-picker.js +51 -49
  44. package/dist/components/forms/date-picker/multi-month-picker.js +49 -47
  45. package/dist/components/forms/date-picker/multi-quarter-picker.js +46 -44
  46. package/dist/components/forms/date-picker/multi-week-picker.js +53 -51
  47. package/dist/components/forms/date-picker/multi-year-picker.js +48 -46
  48. package/dist/components/forms/date-picker/picker-story-layout.d.ts +2 -0
  49. package/dist/components/forms/date-picker/quarter-picker.js +46 -44
  50. package/dist/components/forms/date-picker/quarter-range-picker.js +45 -43
  51. package/dist/components/forms/date-picker/week-picker.js +82 -80
  52. package/dist/components/forms/date-picker/week-range-picker.js +169 -164
  53. package/dist/components/forms/date-picker/year-picker.js +47 -45
  54. package/dist/components/forms/date-picker/year-range-picker.js +47 -45
  55. package/dist/components/forms/select/components/SelectMenuPanel.js +3 -2
  56. package/dist/components/forms/select/components/SelectTriggerValue.js +2 -3
  57. package/dist/components/forms/select/components/Submenu.js +2 -3
  58. package/dist/components/forms/select/select.js +1 -0
  59. package/dist/components/forms/smart-input/smart-input.js +106 -85
  60. package/dist/components/forms/smart-input/smart-input.types.d.ts +5 -0
  61. package/dist/components/forms/textarea/textarea.js +29 -28
  62. package/dist/components/forms/textarea/textarea.types.d.ts +1 -0
  63. package/dist/form-react/Fields/TextField.js +25 -24
  64. package/dist/form-react/Fields/WeekRangePicker.js +47 -48
  65. package/dist/form-react/types/fields.types.d.ts +8 -0
  66. package/dist/impact-nova.css +1 -1
  67. package/dist/lib/fiscal-calendar/civil-date.js +18 -18
  68. package/dist/lib/overlay/overlay-portal-context.js +16 -16
  69. package/dist/llms/rules/best-practices.js +1 -1
  70. package/dist/llms/rules/installation.js +1 -1
  71. package/dist/llms/rules/real-world-patterns.js +1 -1
  72. package/dist/llms/rules/requirements.js +1 -1
  73. package/package.json +1 -1
@@ -1,153 +1,154 @@
1
- import { jsx as C } from "react/jsx-runtime";
2
- import * as S from "react";
3
- import { DayPicker as lr } from "react-day-picker";
4
- import { cn as mr } from "../../../lib/utils.js";
5
- import { formatPeriodOption as pr } from "./calendar-fiscal-labels.js";
6
- import { CalendarDayHoverProvider as dr } from "./calendar-day-hover.js";
7
- import { previewModifierClassNames as ur } from "./calendar-day-picker-classnames.js";
8
- import { isPreviewCap as p, dayKey as m, isPreviewMiddle as br } from "./calendar-selection.js";
9
- import { useCalendarDayPickerConfig as gr } from "./use-calendar-day-picker-config.js";
10
- function Sr({
11
- className: j,
1
+ import { jsx as H } from "react/jsx-runtime";
2
+ import * as x from "react";
3
+ import { DayPicker as pr } from "react-day-picker";
4
+ import { cn as dr } from "../../../lib/utils.js";
5
+ import { formatPeriodOption as ur } from "./calendar-fiscal-labels.js";
6
+ import { CalendarDayHoverProvider as gr } from "./calendar-day-hover.js";
7
+ import { previewModifierClassNames as vr, fiscalPeriodBoundaryClassNames as Pr } from "./calendar-day-picker-classnames.js";
8
+ import { isPreviewCap as d, dayKey as l, isPreviewMiddle as _r } from "./calendar-selection.js";
9
+ import { useCalendarDayPickerConfig as yr } from "./use-calendar-day-picker-config.js";
10
+ function Br({
11
+ className: B,
12
12
  pickerType: s,
13
- mode: n,
14
- weekMode: c,
15
- calendarKind: l,
16
- granularity: k,
17
- showOutsideDays: d,
18
- fixedWeeks: u,
19
- captionLayout: B,
20
- buttonVariant: H,
21
- weekStartsOn: b,
22
- formatters: E,
23
- classNames: F,
24
- components: L,
25
- selected: g,
26
- showFooter: v,
27
- pendingSelection: _,
28
- selectedDaysFromWeeks: O,
29
- currentMonth: P,
30
- monthsFull: V,
31
- monthsShort: Y,
32
- weekNumberHeader: R,
33
- resolvedStartMonth: w,
34
- resolvedEndMonth: y,
35
- availableYears: W,
36
- fiscalPeriods: D,
37
- fiscalConfig: $,
38
- dateFnsLocale: q,
39
- intlLocale: z,
40
- weekRangeModifiers: A,
41
- onSelect: G,
42
- onMonthChange: h,
43
- onWeekSelect: I,
44
- previousMonthLabel: J,
45
- nextMonthLabel: M,
46
- monthPlaceholder: Q,
47
- yearPlaceholder: U,
48
- weekNumberLabel: x,
49
- weekLabel: X,
50
- fiscalWeekAriaLabel: Z,
51
- getCellMeta: i,
52
- formatWeekNumber: K,
53
- disabled: T,
54
- ...rr
13
+ mode: e,
14
+ weekMode: f,
15
+ calendarKind: m,
16
+ granularity: E,
17
+ showOutsideDays: u,
18
+ fixedWeeks: g,
19
+ captionLayout: F,
20
+ buttonVariant: L,
21
+ weekStartsOn: v,
22
+ formatters: O,
23
+ classNames: V,
24
+ components: Y,
25
+ selected: P,
26
+ showFooter: _,
27
+ showPeriodBoundaries: p,
28
+ pendingSelection: y,
29
+ selectedDaysFromWeeks: k,
30
+ currentMonth: D,
31
+ monthsFull: R,
32
+ monthsShort: $,
33
+ weekNumberHeader: q,
34
+ resolvedStartMonth: b,
35
+ resolvedEndMonth: w,
36
+ availableYears: z,
37
+ fiscalPeriods: C,
38
+ fiscalConfig: A,
39
+ dateFnsLocale: G,
40
+ intlLocale: I,
41
+ weekRangeModifiers: J,
42
+ onSelect: M,
43
+ onMonthChange: N,
44
+ onWeekSelect: Q,
45
+ previousMonthLabel: U,
46
+ nextMonthLabel: X,
47
+ monthPlaceholder: Z,
48
+ yearPlaceholder: W,
49
+ weekNumberLabel: S,
50
+ weekLabel: K,
51
+ fiscalWeekAriaLabel: T,
52
+ getCellMeta: n,
53
+ formatWeekNumber: rr,
54
+ disabled: or,
55
+ showWeekNumber: h = !0,
56
+ ...tr
55
57
  }) {
56
- const { dayPickerClassNames: er, dayPickerComponents: tr } = gr({
57
- buttonVariant: H,
58
+ const { dayPickerClassNames: ar, dayPickerComponents: ir } = yr({
59
+ buttonVariant: L,
58
60
  pickerType: s,
59
- calendarKind: l,
60
- granularity: k,
61
- showOutsideDays: d,
62
- classNames: F,
63
- currentMonth: P,
64
- monthsFull: V,
65
- monthsShort: Y,
66
- weekNumberHeader: R,
67
- resolvedStartMonth: w,
68
- resolvedEndMonth: y,
69
- availableYears: W,
70
- fiscalPeriods: D,
71
- fiscalConfig: $,
72
- weekStartsOn: b,
73
- previousMonthLabel: J,
74
- nextMonthLabel: M,
75
- monthPlaceholder: Q,
76
- yearPlaceholder: U,
77
- weekNumberLabel: x,
78
- weekLabel: X,
79
- fiscalWeekNumberLabel: x,
80
- fiscalWeekAriaLabel: Z,
81
- getCellMeta: i,
82
- onMonthChange: h,
83
- onWeekSelect: I,
84
- weekMode: c,
85
- components: L
86
- }), or = n === "range" || n === "multiple" || n === "multi-range" || c === "range" || c === "multiple" || c === "multi-range" ? 2 : 1, ar = s === "week" || n === "multi-range" ? "multiple" : n, nr = u || l === "fiscal" || d, N = i ? {
87
- fiscal_period_start: (r) => !!i(r)?.isPeriodStart,
88
- fiscal_period_end: (r) => !!i(r)?.isPeriodEnd
89
- } : void 0, [t, ir] = S.useState(), sr = S.useCallback((r) => {
90
- ir((e) => !e && !r || e && r && e.getFullYear() === r.getFullYear() && e.getMonth() === r.getMonth() && e.getDate() === r.getDate() ? e : r);
91
- }, []), o = v ? _ : g, a = n === "range" && o && typeof o == "object" && "from" in o ? o.from : void 0, fr = n === "range" && o && typeof o == "object" && "to" in o ? o.to : void 0;
92
- return /* @__PURE__ */ C(dr, { onDayHover: sr, children: /* @__PURE__ */ C(
93
- lr,
61
+ calendarKind: m,
62
+ granularity: E,
63
+ showOutsideDays: u,
64
+ classNames: V,
65
+ currentMonth: D,
66
+ monthsFull: R,
67
+ monthsShort: $,
68
+ weekNumberHeader: q,
69
+ resolvedStartMonth: b,
70
+ resolvedEndMonth: w,
71
+ availableYears: z,
72
+ fiscalPeriods: C,
73
+ fiscalConfig: A,
74
+ weekStartsOn: v,
75
+ previousMonthLabel: U,
76
+ nextMonthLabel: X,
77
+ monthPlaceholder: Z,
78
+ yearPlaceholder: W,
79
+ weekNumberLabel: S,
80
+ weekLabel: K,
81
+ fiscalWeekNumberLabel: S,
82
+ fiscalWeekAriaLabel: T,
83
+ getCellMeta: n,
84
+ onMonthChange: N,
85
+ onWeekSelect: Q,
86
+ weekMode: f,
87
+ showPeriodBoundaries: p,
88
+ showWeekNumber: h,
89
+ components: Y
90
+ }), er = e === "range" || e === "multiple" || e === "multi-range" || f === "range" || f === "multiple" || f === "multi-range" ? 2 : 1, nr = s === "week" || e === "multi-range" ? "multiple" : e, sr = g || m === "fiscal" || u, j = p && n ? {
91
+ fiscal_period_start: (r) => !!n(r)?.isPeriodStart,
92
+ fiscal_period_end: (r) => !!n(r)?.isPeriodEnd
93
+ } : void 0, [t, cr] = x.useState(), fr = x.useCallback((r) => {
94
+ cr((o) => !o && !r || o && r && o.getFullYear() === r.getFullYear() && o.getMonth() === r.getMonth() && o.getDate() === r.getDate() ? o : r);
95
+ }, []), a = _ ? y : P, i = e === "range" && a && typeof a == "object" && "from" in a ? a.from : void 0, mr = e === "range" && a && typeof a == "object" && "to" in a ? a.to : void 0;
96
+ return /* @__PURE__ */ H(gr, { onDayHover: fr, children: /* @__PURE__ */ H(
97
+ pr,
94
98
  {
95
- mode: ar,
96
- selected: s === "week" ? O : v ? _ : g,
99
+ mode: nr,
100
+ selected: s === "week" ? k : _ ? y : P,
97
101
  onSelect: (...r) => {
98
- const [e, f] = r;
99
- G(e, f instanceof Date ? f : void 0);
102
+ const [o, c] = r;
103
+ M(o, c instanceof Date ? c : void 0);
100
104
  },
101
- month: P,
102
- onMonthChange: h,
103
- fixedWeeks: u,
104
- showOutsideDays: nr,
105
- weekStartsOn: b,
106
- modifiers: s === "week" ? { ...A, ...N } : { ...N, ...s === "date" && !!(a && !fr && t) && a && t ? {
107
- preview: (r) => br(r, a, t),
108
- preview_cap: (r) => p(r, a, t),
109
- preview_cap_start: (r) => p(r, a, t) && m(t) < m(a),
110
- preview_cap_end: (r) => p(r, a, t) && m(t) > m(a)
105
+ month: D,
106
+ onMonthChange: N,
107
+ fixedWeeks: g,
108
+ showOutsideDays: sr,
109
+ weekStartsOn: v,
110
+ modifiers: s === "week" ? { ...J, ...j } : { ...j, ...s === "date" && !!(i && !mr && t) && i && t ? {
111
+ preview: (r) => _r(r, i, t),
112
+ preview_cap: (r) => d(r, i, t),
113
+ preview_cap_start: (r) => d(r, i, t) && l(t) < l(i),
114
+ preview_cap_end: (r) => d(r, i, t) && l(t) > l(i)
111
115
  } : void 0 },
112
116
  modifiersClassNames: {
113
- ...l === "fiscal" ? {
114
- fiscal_period_start: "before:pointer-events-none before:absolute before:left-0 before:top-1/2 before:-translate-y-1/2 before:content-['('] before:text-sm before:font-normal before:text-brand",
115
- fiscal_period_end: "after:pointer-events-none after:absolute after:right-0 after:top-1/2 after:-translate-y-1/2 after:content-[')'] after:text-sm after:font-normal after:text-brand"
116
- } : void 0,
117
- ...ur
117
+ ...p && m === "fiscal" ? Pr : void 0,
118
+ ...vr
118
119
  },
119
- locale: q,
120
- className: mr(
120
+ locale: G,
121
+ className: dr(
121
122
  "bg-canvas group/calendar p-2 [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent",
122
123
  String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`,
123
124
  String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`,
124
- j
125
+ B
125
126
  ),
126
- captionLayout: B,
127
+ captionLayout: F,
127
128
  navLayout: "around",
128
- startMonth: w,
129
- endMonth: y,
130
- disabled: T,
131
- numberOfMonths: or,
132
- showWeekNumber: !0,
129
+ startMonth: b,
130
+ endMonth: w,
131
+ disabled: or,
132
+ numberOfMonths: er,
133
133
  formatters: {
134
134
  formatMonthDropdown: (r) => {
135
- if (l === "fiscal" && i) {
136
- const e = i(r), f = D?.find((cr) => cr.period === e?.fiscalPeriod);
137
- if (f) return pr(f);
138
- if (e?.fiscalPeriod != null) return `P${e.fiscalPeriod}`;
135
+ if (m === "fiscal" && n) {
136
+ const o = n(r), c = C?.find((lr) => lr.period === o?.fiscalPeriod);
137
+ if (c) return ur(c);
138
+ if (o?.fiscalPeriod != null) return `P${o.fiscalPeriod}`;
139
139
  }
140
- return r.toLocaleString(z, { month: "short" });
140
+ return r.toLocaleString(I, { month: "short" });
141
141
  },
142
- formatWeekNumber: K,
143
- ...E
142
+ formatWeekNumber: rr,
143
+ ...O
144
144
  },
145
- classNames: er,
146
- components: tr,
147
- ...rr
145
+ classNames: ar,
146
+ components: ir,
147
+ ...tr,
148
+ showWeekNumber: h
148
149
  }
149
150
  ) });
150
151
  }
151
152
  export {
152
- Sr as CalendarDayPickerView
153
+ Br as CalendarDayPickerView
153
154
  };
@@ -17,7 +17,7 @@ const a = [
17
17
  function u(r, t = "fy-short") {
18
18
  return c(r, t);
19
19
  }
20
- function p(r, t) {
20
+ function d(r, t) {
21
21
  if (t)
22
22
  try {
23
23
  const n = f(t, r);
@@ -28,7 +28,7 @@ function p(r, t) {
28
28
  }
29
29
  function $(r, t) {
30
30
  const n = l(r), e = l(t);
31
- return n.y === e.y && n.m === e.m ? `${a[n.m - 1]} ${n.d} – ${e.d}` : n.y === e.y ? `${a[n.m - 1]} ${n.d} – ${a[e.m - 1]} ${e.d}` : `${a[n.m - 1]} ${n.d} ${n.y} – ${a[e.m - 1]} ${e.d} ${e.y}`;
31
+ return n.y === e.y ? `${a[n.m - 1]} ${n.d} – ${a[e.m - 1]} ${e.d}` : `${a[n.m - 1]} ${n.d} ${n.y} – ${a[e.m - 1]} ${e.d} ${e.y}`;
32
32
  }
33
33
  function Q(r) {
34
34
  return `Period ${r.period} (${$(r.start, r.end)})`;
@@ -52,11 +52,11 @@ function s(r) {
52
52
  function L(r, t) {
53
53
  return `P${r} ${u(t)}`;
54
54
  }
55
- function y(r, t) {
55
+ function b(r, t) {
56
56
  return `Q${r} ${u(t)}`;
57
57
  }
58
58
  function P(r) {
59
- return r.fy != null ? y(r.quarter, r.fy) : `Q${r.quarter} ${r.year}`;
59
+ return r.fy != null ? b(r.quarter, r.fy) : `Q${r.quarter} ${r.year}`;
60
60
  }
61
61
  function I(r, t = "fy-long") {
62
62
  return r.fy != null ? u(r.fy, t) : String(r.year);
@@ -77,7 +77,7 @@ function R(r, t) {
77
77
  }
78
78
  export {
79
79
  L as formatFiscalPeriodInput,
80
- y as formatFiscalQuarterInput,
80
+ b as formatFiscalQuarterInput,
81
81
  u as formatFiscalYearLabel,
82
82
  m as formatPeriodCell,
83
83
  F as formatPeriodOption,
@@ -86,5 +86,5 @@ export {
86
86
  P as formatQuarterInput,
87
87
  R as formatQuarterLabelsForYear,
88
88
  I as formatYearInput,
89
- p as formatYearIntervalCaption
89
+ d as formatYearIntervalCaption
90
90
  };
@@ -0,0 +1,16 @@
1
+ import { FiscalPeriod } from '../../../lib/fiscal-calendar';
2
+ /** Local midnight on the 15th. FY can change on the 1st of a civil month. */
3
+ export declare function midMonthDate(month: Date): Date;
4
+ export declare function civilMonthAtOffset(month: Date, offset: number): Date;
5
+ /** Civil month (0-indexed) where `period` has the most days. */
6
+ export declare function dominantCivilMonthForPeriod(period: FiscalPeriod): {
7
+ year: number;
8
+ monthIndex: number;
9
+ };
10
+ /**
11
+ * Month the week/date grid should show after picking a fiscal period.
12
+ * Dual-month range pickers pass `isRightPanel` so the period lands on the right pane.
13
+ */
14
+ export declare function visibleMonthForPeriod(period: FiscalPeriod, isRightPanel: boolean): Date;
15
+ /** Period that occupies the most days of a civil month (caption selected value). */
16
+ export declare function periodForCivilMonth(periods: readonly FiscalPeriod[], year: number, monthIndex: number): FiscalPeriod | undefined;
@@ -0,0 +1,41 @@
1
+ import { setDate as m, startOfMonth as s, addMonths as h } from "date-fns";
2
+ import { parseCivilDate as d, toCivilDate as l, lastDayOfMonth as y, compareCivil as u, diffDays as v, minCivil as M, maxCivil as p } from "../../../lib/fiscal-calendar/civil-date.js";
3
+ function x(t) {
4
+ return m(s(t), 15);
5
+ }
6
+ function b(t, n) {
7
+ return s(h(t, n));
8
+ }
9
+ function c(t, n, o, e) {
10
+ const r = l(o, e + 1, 1), a = y(o, e + 1), i = p(t, r), f = M(n, a);
11
+ return u(i, f) > 0 ? 0 : v(f, i) + 1;
12
+ }
13
+ function C(t) {
14
+ const n = d(t.start);
15
+ let o = { year: n.y, monthIndex: n.m - 1, days: 0 };
16
+ const e = t.gregorianMonthSpan.length > 0 ? t.gregorianMonthSpan : [{ year: n.y, month: n.m - 1 }];
17
+ for (const { year: r, month: a } of e) {
18
+ const i = c(t.start, t.end, r, a);
19
+ i > o.days && (o = { year: r, monthIndex: a, days: i });
20
+ }
21
+ return { year: o.year, monthIndex: o.monthIndex };
22
+ }
23
+ function I(t, n) {
24
+ const { year: o, monthIndex: e } = C(t), r = s(new Date(o, e, 1));
25
+ return n ? h(r, -1) : r;
26
+ }
27
+ function O(t, n, o) {
28
+ let e, r = 0;
29
+ for (const a of t) {
30
+ const i = c(a.start, a.end, n, o);
31
+ i > r && (e = a, r = i);
32
+ }
33
+ return e;
34
+ }
35
+ export {
36
+ b as civilMonthAtOffset,
37
+ C as dominantCivilMonthForPeriod,
38
+ x as midMonthDate,
39
+ O as periodForCivilMonth,
40
+ I as visibleMonthForPeriod
41
+ };
@@ -14,7 +14,11 @@ export declare function weekIntervalContinues(week: {
14
14
  date: Date;
15
15
  outside?: boolean;
16
16
  }>;
17
- }, isSelected?: (date: Date) => boolean): {
17
+ }, isSelected?: (date: Date) => boolean, options?: {
18
+ joinAdjacentWeek?: boolean;
19
+ panePeriod?: number;
20
+ periodForDate?: (date: Date) => number | undefined;
21
+ }): {
18
22
  prev: boolean;
19
23
  next: boolean;
20
24
  };
@@ -1,25 +1,29 @@
1
- function l(t) {
2
- return t.days.length > 0 && t.days.every((n) => n.outside);
1
+ function y(e) {
2
+ return e.days.length > 0 && e.days.every((t) => t.outside);
3
3
  }
4
- function d(t, n) {
5
- return n ? t.days.some((e) => !e.outside && n(e.date)) : !1;
4
+ function g(e, t) {
5
+ return t ? e.days.some((r) => !r.outside && t(r.date)) : !1;
6
6
  }
7
- function i(t, n) {
8
- return new Date(t.getFullYear(), t.getMonth(), t.getDate() + n);
7
+ function d(e, t) {
8
+ return new Date(e.getFullYear(), e.getMonth(), e.getDate() + t);
9
9
  }
10
- function u(t, n) {
11
- return t.getFullYear() !== n.getFullYear() || t.getMonth() !== n.getMonth();
10
+ function c(e, t) {
11
+ return e.getFullYear() !== t.getFullYear() || e.getMonth() !== t.getMonth();
12
12
  }
13
- function g(t, n) {
14
- if (!n) return { prev: !1, next: !1 };
15
- const e = t.days.filter((f) => !f.outside), o = e[0]?.date, r = e.at(-1)?.date, a = o ? i(o, -1) : void 0, s = r ? i(r, 1) : void 0;
13
+ function h(e, t, r) {
14
+ if (!t) return { prev: !1, next: !1 };
15
+ const a = e.days.find((n) => !n.outside)?.date, o = r?.joinAdjacentWeek ? e.days[0]?.date : e.days.find((n) => !n.outside)?.date, s = r?.joinAdjacentWeek ? e.days.at(-1)?.date : e.days.filter((n) => !n.outside).at(-1)?.date, f = o ? d(o, -1) : void 0, l = s ? d(s, 1) : void 0, i = (n) => {
16
+ if (!n || !t(n)) return !1;
17
+ const u = r?.periodForDate?.(n);
18
+ return r?.panePeriod != null && u != null ? u !== r.panePeriod : !!(a && c(n, a));
19
+ };
16
20
  return {
17
- prev: !!(a && o && u(a, o) && n(a)),
18
- next: !!(s && r && u(s, r) && n(s))
21
+ prev: i(f),
22
+ next: i(l)
19
23
  };
20
24
  }
21
25
  export {
22
- l as isCalendarPaddingWeek,
23
- d as weekHasInMonthSelection,
24
- g as weekIntervalContinues
26
+ y as isCalendarPaddingWeek,
27
+ g as weekHasInMonthSelection,
28
+ h as weekIntervalContinues
25
29
  };
@@ -17,6 +17,7 @@ export interface CalendarWeekNumberCellProps {
17
17
  fiscalWeekAriaLabel?: (meta: DateCellMeta) => string;
18
18
  getCellMeta?: (date: Date) => DateCellMeta | undefined;
19
19
  onWeekSelect: (input: WeekPickerInput) => void;
20
+ blank?: boolean;
20
21
  className?: string;
21
22
  }
22
- export declare function CalendarWeekNumberCell({ week, weekStartsOn, pickerType, calendarKind, weekNumberLabel, weekLabel, fiscalWeekNumberLabel, fiscalWeekAriaLabel, getCellMeta, onWeekSelect, className, ...weekProps }: CalendarWeekNumberCellProps & React.HTMLAttributes<HTMLElement>): import("react/jsx-runtime").JSX.Element;
23
+ export declare function CalendarWeekNumberCell({ week, weekStartsOn, pickerType, calendarKind, weekNumberLabel, weekLabel, fiscalWeekNumberLabel, fiscalWeekAriaLabel, getCellMeta, onWeekSelect, blank, className, ...weekProps }: CalendarWeekNumberCellProps & React.HTMLAttributes<HTMLElement>): import("react/jsx-runtime").JSX.Element;
@@ -1,60 +1,61 @@
1
- import { jsx as n } from "react/jsx-runtime";
1
+ import { jsx as r } from "react/jsx-runtime";
2
2
  import "react";
3
- import { cn as k } from "../../../lib/utils.js";
4
- import { weekNumberBaseClassName as h, weekNumberInteractiveClassName as C, weekNumberSelectedFillClassName as M, weekNumberFocusClassName as v } from "./calendar-selection-appearance.js";
5
- function F(e, s) {
6
- const o = e.getFullYear(), u = e.getMonth(), c = (new Date(o, u, 1).getDay() + 7 - s) % 7, i = new Date(o, u, 1 - c), l = new Date(e), r = (e.getDay() + 7 - s) % 7;
7
- return l.setDate(e.getDate() - r), Math.round(
8
- (l.getTime() - i.getTime()) / (10080 * 60 * 1e3)
3
+ import { cn as h } from "../../../lib/utils.js";
4
+ import { weekNumberBaseClassName as y, weekNumberInteractiveClassName as M, weekNumberSelectedFillClassName as v, weekNumberFocusClassName as F } from "./calendar-selection-appearance.js";
5
+ function j(e, n) {
6
+ const s = e.getFullYear(), u = e.getMonth(), o = (new Date(s, u, 1).getDay() + 7 - n) % 7, c = new Date(s, u, 1 - o), i = new Date(e), m = (e.getDay() + 7 - n) % 7;
7
+ return i.setDate(e.getDate() - m), Math.round(
8
+ (i.getTime() - c.getTime()) / (10080 * 60 * 1e3)
9
9
  ) + 1;
10
10
  }
11
- function O({
11
+ function P({
12
12
  week: e,
13
- weekStartsOn: s,
14
- pickerType: o,
13
+ weekStartsOn: n,
14
+ pickerType: s,
15
15
  calendarKind: u = "gregorian",
16
- weekNumberLabel: y,
17
- weekLabel: D,
18
- fiscalWeekNumberLabel: c,
19
- fiscalWeekAriaLabel: i,
20
- getCellMeta: l,
21
- onWeekSelect: g,
22
- className: r,
23
- ...N
16
+ weekNumberLabel: D,
17
+ weekLabel: g,
18
+ fiscalWeekNumberLabel: o,
19
+ fiscalWeekAriaLabel: c,
20
+ getCellMeta: i,
21
+ onWeekSelect: N,
22
+ blank: m = !1,
23
+ className: l,
24
+ ...C
24
25
  }) {
25
26
  const d = e.days.find((f) => !f.outside)?.date;
26
- if (!d)
27
- return /* @__PURE__ */ n(
27
+ if (m || !d)
28
+ return /* @__PURE__ */ r(
28
29
  "th",
29
30
  {
30
31
  scope: "row",
31
32
  "aria-hidden": "true",
32
- className: k(
33
- h,
34
- r
33
+ className: h(
34
+ y,
35
+ l
35
36
  )
36
37
  }
37
38
  );
38
- const m = l?.(d), a = m?.fiscalWeek, w = F(d, s), p = a ?? w, b = a && c ? c(a) : y(p), x = a && m && i ? i(m) : D(w);
39
- if (o === "week") {
40
- const f = () => g(d);
41
- return /* @__PURE__ */ n(
39
+ const w = i?.(d), a = w?.fiscalWeek, p = j(d, n), k = a ?? p, b = a && o ? o(a) : D(k), x = a && w && c ? c(w) : g(p);
40
+ if (s === "week") {
41
+ const f = () => N(d);
42
+ return /* @__PURE__ */ r(
42
43
  "td",
43
44
  {
44
45
  "aria-label": x,
45
- "data-week-index": w,
46
- "data-week-number": p,
46
+ "data-week-index": p,
47
+ "data-week-number": k,
47
48
  "data-fiscal-week": a,
48
49
  "data-selection": "period-row",
49
50
  tabIndex: 0,
50
51
  role: "button",
51
- className: k(
52
- h,
52
+ className: h(
53
+ y,
54
+ F,
53
55
  v,
54
56
  M,
55
- C,
56
57
  "cursor-pointer transition-colors",
57
- r
58
+ l
58
59
  ),
59
60
  onClick: (t) => {
60
61
  t.preventDefault(), t.stopPropagation(), f();
@@ -62,26 +63,26 @@ function O({
62
63
  onKeyDown: (t) => {
63
64
  (t.key === "Enter" || t.key === " ") && (t.preventDefault(), t.stopPropagation(), f());
64
65
  },
65
- children: /* @__PURE__ */ n("div", { className: "flex h-9 w-full items-center justify-center text-center", children: b })
66
+ children: /* @__PURE__ */ r("div", { className: "flex h-9 w-full items-center justify-center text-center", children: b })
66
67
  }
67
68
  );
68
69
  }
69
- return /* @__PURE__ */ n(
70
+ return /* @__PURE__ */ r(
70
71
  "th",
71
72
  {
72
- ...N,
73
+ ...C,
73
74
  "aria-label": x,
74
- "data-week-number": p,
75
+ "data-week-number": k,
75
76
  "data-fiscal-week": a,
76
- className: k(
77
- h,
78
- r
77
+ className: h(
78
+ y,
79
+ l
79
80
  ),
80
81
  scope: "row",
81
- children: /* @__PURE__ */ n("div", { className: "flex h-9 w-full items-center justify-center text-center whitespace-nowrap", children: b })
82
+ children: /* @__PURE__ */ r("div", { className: "flex h-9 w-full items-center justify-center text-center whitespace-nowrap", children: b })
82
83
  }
83
84
  );
84
85
  }
85
86
  export {
86
- O as CalendarWeekNumberCell
87
+ P as CalendarWeekNumberCell
87
88
  };
@@ -14,6 +14,12 @@ export declare function fiscalPeriodForWeek(week: {
14
14
  }, getCellMeta?: (date: Date) => {
15
15
  fiscalPeriod?: number;
16
16
  } | undefined): number | undefined;
17
+ /** A fiscal week belongs to one period pane. Other panes keep a blank reserved row. */
18
+ export declare function isForeignFiscalWeekRow(options: {
19
+ calendarKind: CalendarKind;
20
+ weekPeriod?: number;
21
+ panePeriod?: number;
22
+ }): boolean;
17
23
  export declare function isSameWeek(w1: WeekSelection, w2: WeekSelection): boolean;
18
24
  export declare function calculateWeekSelection(weekOrDate: WeekPickerInput, options: {
19
25
  calendarKind: CalendarKind;