impact-nova 2.5.18 → 2.5.19

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 (26) hide show
  1. package/dist/components/data/expandable-list-item/expandable-list-item-attributes.js +3 -2
  2. package/dist/components/data/expandable-list-item/expandable-list-item-metrics.js +3 -2
  3. package/dist/components/data-display/calendar/calendar-quarter-utils.js +12 -12
  4. package/dist/components/data-display/calendar/calendar-year-utils.js +9 -9
  5. package/dist/components/feedback/tooltip/tab-tooltip-render.js +3 -2
  6. package/dist/components/flows/command-palette/shortcut-settings.js +10 -10
  7. package/dist/components/flows/filter-panel/filter-panel.js +4 -4
  8. package/dist/components/forms/date-picker/multi-quarter-picker.js +87 -87
  9. package/dist/components/forms/date-picker/multi-year-picker.js +81 -81
  10. package/dist/components/forms/date-picker/quarter-range-picker.js +84 -84
  11. package/dist/components/forms/date-picker/year-range-picker.js +79 -79
  12. package/dist/components/forms/select/components/SelectTriggerValue.js +3 -2
  13. package/dist/components/forms/select/components/Submenu.js +3 -2
  14. package/dist/form-react/Fields/DateRangeField.js +25 -25
  15. package/dist/form-react/Fields/MonthRangeField.js +57 -57
  16. package/dist/form-react/Fields/MultiMonthPickerField.js +28 -26
  17. package/dist/form-react/Fields/MultiWeekPickerField.js +43 -41
  18. package/dist/form-react/Fields/MultiYearPickerField.js +45 -45
  19. package/dist/form-react/Fields/YearPickerField.js +27 -27
  20. package/dist/form-react/Fields/YearRangePickerField.js +29 -29
  21. package/dist/form-react/types/fields.types.d.ts +30 -0
  22. package/dist/form-react/utils/date.utils.d.ts +51 -2
  23. package/dist/form-react/utils/date.utils.js +195 -63
  24. package/dist/llms/rules/installation.js +1 -1
  25. package/dist/llms/rules/requirements.js +1 -1
  26. package/package.json +1 -1
@@ -1,55 +1,57 @@
1
1
  import { jsx as a } from "react/jsx-runtime";
2
- import { Controller as h } from "react-hook-form";
3
- import { MultiWeekPicker as p } from "../../components/forms/date-picker/multi-week-picker.js";
4
- import { fiscalCalendarPassThrough as f } from "../../components/forms/date-picker/fiscal-pass-through.js";
5
- import { getFieldTestId as g } from "../utils/fieldTestIds.js";
6
- import { toLocalDate as n } from "../utils/calendar-boundary.js";
7
- const x = ({
8
- field: e,
9
- validationRules: s,
10
- isDisabled: u,
11
- formHelpers: c
2
+ import { Controller as p } from "react-hook-form";
3
+ import { MultiWeekPicker as g } from "../../components/forms/date-picker/multi-week-picker.js";
4
+ import { fiscalCalendarPassThrough as k } from "../../components/forms/date-picker/fiscal-pass-through.js";
5
+ import { getFieldTestId as M } from "../utils/fieldTestIds.js";
6
+ import { resolveWeekRangeMinMax as f } from "../utils/date.utils.js";
7
+ const y = ({
8
+ field: r,
9
+ validationRules: l,
10
+ isDisabled: s,
11
+ formHelpers: u
12
12
  }) => {
13
- const d = c.form.control, r = e.fieldType === "multi_week_picker" ? e : null;
14
- return r ? /* @__PURE__ */ a(
15
- h,
13
+ const c = u.form.control, e = r.fieldType === "multi_week_picker" ? r : null;
14
+ if (!e) return null;
15
+ const { minDate: d, maxDate: m } = f(e);
16
+ return /* @__PURE__ */ a(
17
+ p,
16
18
  {
17
- name: e.id,
18
- control: d,
19
- rules: s,
20
- render: ({ field: t, fieldState: o }) => {
21
- const i = !!o.error, l = t.value;
22
- return /* @__PURE__ */ a("div", { "data-testid": g(e.id), children: /* @__PURE__ */ a(
23
- p,
19
+ name: r.id,
20
+ control: c,
21
+ rules: l,
22
+ render: ({ field: o, fieldState: t }) => {
23
+ const i = !!t.error, n = o.value;
24
+ return /* @__PURE__ */ a("div", { "data-testid": M(r.id), children: /* @__PURE__ */ a(
25
+ g,
24
26
  {
25
- label: e.label,
26
- value: Array.isArray(l) ? l : void 0,
27
- onChange: (m) => {
28
- t.onChange(m ?? []);
27
+ label: r.label,
28
+ value: Array.isArray(n) ? n : void 0,
29
+ onChange: (h) => {
30
+ o.onChange(h ?? []);
29
31
  },
30
- placeholder: e.placeholder,
31
- required: e.isRequired,
32
- disabled: u,
32
+ placeholder: r.placeholder,
33
+ required: r.isRequired,
34
+ disabled: s,
33
35
  error: i,
34
- helperText: i ? o.error?.message : e.helpText,
35
- minDate: n(r.minDate),
36
- maxDate: n(r.maxDate),
37
- ...f({
38
- calendarKind: r.calendarKind,
39
- fiscalMode: r.fiscalMode,
40
- granularity: r.granularity,
41
- fiscalMonthPattern: r.fiscalMonthPattern,
42
- fiscalYearStartMonth: r.fiscalYearStartMonth,
43
- weekStartsOn: r.weekStartsOn,
44
- showPeriodBoundaries: r.showPeriodBoundaries,
45
- autoNavigateToAvailable: r.autoNavigateToAvailable
36
+ helperText: i ? t.error?.message : r.helpText,
37
+ minDate: d,
38
+ maxDate: m,
39
+ ...k({
40
+ calendarKind: e.calendarKind,
41
+ fiscalMode: e.fiscalMode,
42
+ granularity: e.granularity,
43
+ fiscalMonthPattern: e.fiscalMonthPattern,
44
+ fiscalYearStartMonth: e.fiscalYearStartMonth,
45
+ weekStartsOn: e.weekStartsOn,
46
+ showPeriodBoundaries: e.showPeriodBoundaries,
47
+ autoNavigateToAvailable: e.autoNavigateToAvailable
46
48
  })
47
49
  }
48
50
  ) });
49
51
  }
50
52
  }
51
- ) : null;
53
+ );
52
54
  };
53
55
  export {
54
- x as MultiWeekPickerField
56
+ y as MultiWeekPickerField
55
57
  };
@@ -1,52 +1,52 @@
1
- import { jsx as a } from "react/jsx-runtime";
2
- import { Controller as p } from "react-hook-form";
3
- import { MultiYearPicker as M } from "../../components/forms/date-picker/multi-year-picker.js";
4
- import { getFieldTestId as w } from "../utils/fieldTestIds.js";
5
- import { toLocalDate as o } from "../utils/calendar-boundary.js";
6
- const g = ({
7
- field: t,
8
- validationRules: h,
9
- isDisabled: u,
10
- formHelpers: n
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import { Controller as v } from "react-hook-form";
3
+ import { MultiYearPicker as P } from "../../components/forms/date-picker/multi-year-picker.js";
4
+ import { getFieldTestId as Y } from "../utils/fieldTestIds.js";
5
+ import { resolveYearRangeMinMax as g } from "../utils/date.utils.js";
6
+ const T = ({
7
+ field: e,
8
+ validationRules: u,
9
+ isDisabled: c,
10
+ formHelpers: a
11
11
  }) => {
12
- const e = t.fieldType === "multi_year_picker" ? t : null;
13
- if (!e) return null;
14
- const c = n.form.control, d = e.defaultValue?.map((r) => ({ year: r }));
15
- return /* @__PURE__ */ a(
16
- p,
12
+ const r = e.fieldType === "multi_year_picker" ? e : null;
13
+ if (!r) return null;
14
+ const { minDate: h, maxDate: d, startMonth: m, endMonth: p } = g(r), M = a.form.control, w = r.defaultValue?.map((t) => ({ year: t }));
15
+ return /* @__PURE__ */ o(
16
+ v,
17
17
  {
18
- name: t.id,
19
- control: c,
20
- defaultValue: d,
21
- rules: h,
22
- render: ({ field: r, fieldState: l }) => {
23
- const s = !!l.error, m = r.value;
24
- return /* @__PURE__ */ a("div", { "data-testid": w(t.id), children: /* @__PURE__ */ a(
25
- M,
18
+ name: e.id,
19
+ control: M,
20
+ defaultValue: w,
21
+ rules: u,
22
+ render: ({ field: t, fieldState: n }) => {
23
+ const l = !!n.error, s = t.value, f = Array.isArray(s) ? s : void 0;
24
+ return /* @__PURE__ */ o("div", { "data-testid": Y(e.id), children: /* @__PURE__ */ o(
25
+ P,
26
26
  {
27
- label: t.label,
28
- value: m ?? void 0,
27
+ label: e.label,
28
+ value: f,
29
29
  onChange: (i) => {
30
- r.onChange(i ?? null), n.setValue(t.id, i ?? null);
30
+ t.onChange(i ?? null), a.setValue(e.id, i ?? null);
31
31
  },
32
- placeholder: t.placeholder,
33
- minDate: o(e.minDate),
34
- maxDate: o(e.maxDate),
35
- startMonth: o(e.startMonth),
36
- endMonth: o(e.endMonth),
37
- required: t.isRequired,
38
- disabled: u,
39
- error: s,
40
- helperText: s ? l.error?.message : t.helpText,
41
- showFooter: e.showFooter,
42
- showIntervalCaption: e.showIntervalCaption,
43
- calendarKind: e.calendarKind,
44
- fiscalMode: e.fiscalMode,
45
- fiscalYearStartMonth: e.fiscalYearStartMonth,
46
- fiscalMonthPattern: e.fiscalMonthPattern,
47
- weekStartsOn: e.weekStartsOn,
48
- showPresets: e.showPresets,
49
- ...e.componentProps
32
+ placeholder: e.placeholder,
33
+ minDate: h,
34
+ maxDate: d,
35
+ startMonth: m,
36
+ endMonth: p,
37
+ required: e.isRequired,
38
+ disabled: c,
39
+ error: l,
40
+ helperText: l ? n.error?.message : e.helpText,
41
+ showFooter: r.showFooter,
42
+ showIntervalCaption: r.showIntervalCaption,
43
+ calendarKind: r.calendarKind,
44
+ fiscalMode: r.fiscalMode,
45
+ fiscalYearStartMonth: r.fiscalYearStartMonth,
46
+ fiscalMonthPattern: r.fiscalMonthPattern,
47
+ weekStartsOn: r.weekStartsOn,
48
+ showPresets: r.showPresets,
49
+ ...r.componentProps
50
50
  }
51
51
  ) });
52
52
  }
@@ -54,5 +54,5 @@ const g = ({
54
54
  );
55
55
  };
56
56
  export {
57
- g as MultiYearPickerField
57
+ T as MultiYearPickerField
58
58
  };
@@ -1,43 +1,43 @@
1
1
  import { jsx as o } from "react/jsx-runtime";
2
- import { Controller as m } from "react-hook-form";
3
- import { YearPicker as p } from "../../components/forms/date-picker/year-picker.js";
4
- import { getFieldTestId as M } from "../utils/fieldTestIds.js";
5
- import { toLocalDate as t } from "../utils/calendar-boundary.js";
6
- const x = ({
2
+ import { Controller as f } from "react-hook-form";
3
+ import { YearPicker as w } from "../../components/forms/date-picker/year-picker.js";
4
+ import { getFieldTestId as v } from "../utils/fieldTestIds.js";
5
+ import { resolveYearRangeMinMax as P } from "../utils/date.utils.js";
6
+ const Y = ({
7
7
  field: r,
8
- validationRules: d,
9
- isDisabled: h,
10
- formHelpers: a
8
+ validationRules: i,
9
+ isDisabled: c,
10
+ formHelpers: t
11
11
  }) => {
12
12
  const e = r.fieldType === "year_picker" ? r : null;
13
13
  if (!e) return null;
14
- const c = a.form.control;
14
+ const { minDate: d, maxDate: u, startMonth: h, endMonth: m } = P(e), p = t.form.control;
15
15
  return /* @__PURE__ */ o(
16
- m,
16
+ f,
17
17
  {
18
18
  name: r.id,
19
- control: c,
19
+ control: p,
20
20
  defaultValue: e.defaultValue != null ? { year: e.defaultValue } : void 0,
21
- rules: d,
22
- render: ({ field: n, fieldState: l }) => {
23
- const s = !!l.error, u = n.value;
24
- return /* @__PURE__ */ o("div", { "data-testid": M(r.id), children: /* @__PURE__ */ o(
25
- p,
21
+ rules: i,
22
+ render: ({ field: a, fieldState: n }) => {
23
+ const l = !!n.error, M = a.value;
24
+ return /* @__PURE__ */ o("div", { "data-testid": v(r.id), children: /* @__PURE__ */ o(
25
+ w,
26
26
  {
27
27
  label: r.label,
28
- value: u ?? void 0,
29
- onChange: (i) => {
30
- n.onChange(i ?? null), a.setValue(r.id, i ?? null);
28
+ value: M ?? void 0,
29
+ onChange: (s) => {
30
+ a.onChange(s ?? null), t.setValue(r.id, s ?? null);
31
31
  },
32
32
  placeholder: r.placeholder,
33
- minDate: t(e.minDate),
34
- maxDate: t(e.maxDate),
35
- startMonth: t(e.startMonth),
36
- endMonth: t(e.endMonth),
33
+ minDate: d,
34
+ maxDate: u,
35
+ startMonth: h,
36
+ endMonth: m,
37
37
  required: r.isRequired,
38
- disabled: h,
39
- error: s,
40
- helperText: s ? l.error?.message : r.helpText,
38
+ disabled: c,
39
+ error: l,
40
+ helperText: l ? n.error?.message : r.helpText,
41
41
  showFooter: e.showFooter,
42
42
  showIntervalCaption: e.showIntervalCaption,
43
43
  calendarKind: e.calendarKind,
@@ -54,5 +54,5 @@ const x = ({
54
54
  );
55
55
  };
56
56
  export {
57
- x as YearPickerField
57
+ Y as YearPickerField
58
58
  };
@@ -1,43 +1,43 @@
1
- import { jsx as a } from "react/jsx-runtime";
2
- import { Controller as p } from "react-hook-form";
3
- import { YearRangePicker as g } from "../../components/forms/date-picker/year-range-picker.js";
4
- import { getFieldTestId as f } from "../utils/fieldTestIds.js";
5
- import { toLocalDate as t } from "../utils/calendar-boundary.js";
6
- const C = ({
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import { Controller as w } from "react-hook-form";
3
+ import { YearRangePicker as v } from "../../components/forms/date-picker/year-range-picker.js";
4
+ import { getFieldTestId as y } from "../utils/fieldTestIds.js";
5
+ import { resolveYearRangeMinMax as R } from "../utils/date.utils.js";
6
+ const k = ({
7
7
  field: r,
8
- validationRules: d,
9
- isDisabled: h,
10
- formHelpers: o
8
+ validationRules: c,
9
+ isDisabled: d,
10
+ formHelpers: t
11
11
  }) => {
12
12
  const e = r.fieldType === "year_range" ? r : null;
13
13
  if (!e) return null;
14
- const c = o.form.control, u = e.defaultRange ? { from: { year: e.defaultRange.start }, to: { year: e.defaultRange.end } } : void 0;
15
- return /* @__PURE__ */ a(
16
- p,
14
+ const { minDate: h, maxDate: u, startMonth: m, endMonth: p } = R(e), g = t.form.control, f = e.defaultRange ? { from: { year: e.defaultRange.start }, to: { year: e.defaultRange.end } } : void 0;
15
+ return /* @__PURE__ */ o(
16
+ w,
17
17
  {
18
18
  name: r.id,
19
- control: c,
20
- defaultValue: u,
21
- rules: d,
22
- render: ({ field: n, fieldState: l }) => {
23
- const s = !!l.error, m = n.value;
24
- return /* @__PURE__ */ a("div", { "data-testid": f(r.id), children: /* @__PURE__ */ a(
25
- g,
19
+ control: g,
20
+ defaultValue: f,
21
+ rules: c,
22
+ render: ({ field: n, fieldState: s }) => {
23
+ const l = !!s.error, a = n.value, M = a && typeof a == "object" && !Array.isArray(a) && ("from" in a || "to" in a) ? a : void 0;
24
+ return /* @__PURE__ */ o("div", { "data-testid": y(r.id), children: /* @__PURE__ */ o(
25
+ v,
26
26
  {
27
27
  label: r.label,
28
- value: m ?? void 0,
28
+ value: M,
29
29
  onChange: (i) => {
30
- n.onChange(i ?? null), o.setValue(r.id, i ?? null);
30
+ n.onChange(i ?? null), t.setValue(r.id, i ?? null);
31
31
  },
32
32
  placeholder: r.placeholder,
33
- minDate: t(e.minDate),
34
- maxDate: t(e.maxDate),
35
- startMonth: t(e.startMonth),
36
- endMonth: t(e.endMonth),
33
+ minDate: h,
34
+ maxDate: u,
35
+ startMonth: m,
36
+ endMonth: p,
37
37
  required: r.isRequired,
38
- disabled: h,
39
- error: s,
40
- helperText: s ? l.error?.message : r.helpText,
38
+ disabled: d,
39
+ error: l,
40
+ helperText: l ? s.error?.message : r.helpText,
41
41
  showFooter: e.showFooter,
42
42
  showIntervalCaption: e.showIntervalCaption,
43
43
  calendarKind: e.calendarKind,
@@ -54,5 +54,5 @@ const C = ({
54
54
  );
55
55
  };
56
56
  export {
57
- C as YearRangePickerField
57
+ k as YearRangePickerField
58
58
  };
@@ -235,6 +235,18 @@ export type MultiWeekRangeField = BaseField & {
235
235
  fieldType: "multi_week_picker";
236
236
  minDate?: string;
237
237
  maxDate?: string;
238
+ /** Minimum selectable start date = today + N days (0 = today, blocks past dates). */
239
+ minStartOffsetDays?: number;
240
+ /** When true, blocks weeks before the current week (minDate = current week start). */
241
+ disablePastWeeks?: boolean;
242
+ /** First month shown in the picker navigation (ISO date string). */
243
+ startMonth?: string;
244
+ /** Last month shown in the picker navigation (ISO date string). */
245
+ endMonth?: string;
246
+ /** Earliest week: week start of the week N weeks before the current week (0 = current week). */
247
+ minWeeksOffset?: number;
248
+ /** Latest week: week end of the week N weeks after the current week. */
249
+ maxWeeksOffset?: number;
238
250
  calendarKind?: "gregorian" | "fiscal";
239
251
  fiscalMode?: "basic" | "advanced" | "custom";
240
252
  weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
@@ -281,6 +293,12 @@ export type MultiMonthPickerField = BaseField & {
281
293
  maxDate?: string;
282
294
  startMonth?: string;
283
295
  endMonth?: string;
296
+ /** Number of months before the current month to set as the minimum selectable month */
297
+ minMonthsOffset?: number;
298
+ /** Number of months after the current month to set as the maximum selectable month */
299
+ maxMonthsOffset?: number;
300
+ /** When true, blocks months before the current month. */
301
+ disablePastMonths?: boolean;
284
302
  /** When true, open on the first enabled month. Navigate only. */
285
303
  autoNavigateToAvailable?: boolean;
286
304
  };
@@ -289,6 +307,10 @@ export type YearPickerField = BaseField & {
289
307
  defaultValue?: number;
290
308
  minDate?: string;
291
309
  maxDate?: string;
310
+ /** Earliest year: year start of the year N years before today (0 = current year). Takes precedence over `minDate`. */
311
+ minYearsOffset?: number;
312
+ /** Latest year: year end of the year N years after today (0 = current year). Takes precedence over `maxDate`. */
313
+ maxYearsOffset?: number;
292
314
  startMonth?: string;
293
315
  endMonth?: string;
294
316
  showFooter?: boolean;
@@ -307,6 +329,10 @@ export type MultiYearPickerField = BaseField & {
307
329
  defaultValue?: number[];
308
330
  minDate?: string;
309
331
  maxDate?: string;
332
+ /** Earliest year: year start of the year N years before today (0 = current year). Takes precedence over `minDate`. */
333
+ minYearsOffset?: number;
334
+ /** Latest year: year end of the year N years after today (0 = current year). Takes precedence over `maxDate`. */
335
+ maxYearsOffset?: number;
310
336
  startMonth?: string;
311
337
  endMonth?: string;
312
338
  showFooter?: boolean;
@@ -328,6 +354,10 @@ export type YearRangePickerField = BaseField & {
328
354
  };
329
355
  minDate?: string;
330
356
  maxDate?: string;
357
+ /** Earliest year: year start of the year N years before today (0 = current year). Takes precedence over `minDate`. */
358
+ minYearsOffset?: number;
359
+ /** Latest year: year end of the year N years after today (0 = current year). Takes precedence over `maxDate`. */
360
+ maxYearsOffset?: number;
331
361
  startMonth?: string;
332
362
  endMonth?: string;
333
363
  showFooter?: boolean;
@@ -1,4 +1,4 @@
1
- import { DateRangeField, WeekRangeField } from '../types/fields.types';
1
+ import { DateRangeField, MonthRangeField, MultiMonthPickerField, WeekRangeField, YearRangePickerField } from '../types/fields.types';
2
2
  export declare const DEFAULT_PICKER_DATE_FORMAT = "yyyy-MM-dd";
3
3
  /**
4
4
  * Makes a remote-config date format safe for the date-fns based pickers.
@@ -19,15 +19,64 @@ export declare function handleDateFnsFormat(configFormat?: string): string;
19
19
  export declare function formatDateByConfigFormat(d: Date, df?: string): string;
20
20
  export declare function startOfDayDate(d: Date): Date;
21
21
  export declare function addDaysDate(d: Date, n: number): Date;
22
- type WeekRangeBoundsField = Pick<WeekRangeField, "minDate" | "maxDate" | "minStartOffsetDays" | "disablePastWeeks" | "minWeeksOffset" | "maxWeeksOffset" | "startMonth" | "endMonth" | "calendarKind" | "fiscalMode" | "granularity" | "fiscalMonthPattern" | "fiscalYearStartMonth" | "weekStartsOn">;
22
+ export declare function addYearsDate(d: Date, n: number): Date;
23
+ type DateRangeBoundsField = Pick<DateRangeField, "minDate" | "maxDate" | "minStartOffsetDays" | "startMonth" | "endMonth">;
24
+ type WeekRangeBoundsField = {
25
+ minDate?: string;
26
+ maxDate?: string;
27
+ minStartOffsetDays?: number;
28
+ disablePastWeeks?: boolean;
29
+ minWeeksOffset?: number;
30
+ maxWeeksOffset?: number;
31
+ startMonth?: string;
32
+ endMonth?: string;
33
+ calendarKind?: WeekRangeField["calendarKind"];
34
+ fiscalMode?: WeekRangeField["fiscalMode"];
35
+ granularity?: WeekRangeField["granularity"];
36
+ fiscalMonthPattern?: WeekRangeField["fiscalMonthPattern"];
37
+ fiscalYearStartMonth?: WeekRangeField["fiscalYearStartMonth"];
38
+ weekStartsOn?: WeekRangeField["weekStartsOn"];
39
+ };
23
40
  export declare const handleMinMaxProp: (dateRangeField: DateRangeField) => {
24
41
  minDate: Date | undefined;
25
42
  maxDate: Date | undefined;
26
43
  };
44
+ export declare const resolveDateRangeMinMax: (dateRangeField: DateRangeBoundsField) => {
45
+ minDate: Date | undefined;
46
+ maxDate: Date | undefined;
47
+ startMonth: Date | undefined;
48
+ endMonth: Date | undefined;
49
+ };
27
50
  export declare const resolveWeekRangeMinMax: (weekRangeField: WeekRangeBoundsField) => {
28
51
  minDate: Date | undefined;
29
52
  maxDate: Date | undefined;
30
53
  startMonth: Date | undefined;
31
54
  endMonth: Date | undefined;
32
55
  };
56
+ type MonthRangeBoundsField = Pick<MonthRangeField | MultiMonthPickerField, "minDate" | "maxDate" | "startMonth" | "endMonth" | "minMonthsOffset" | "maxMonthsOffset" | "disablePastMonths">;
57
+ export declare const resolveMonthRangeMinMax: (monthRangeField: MonthRangeBoundsField) => {
58
+ minDate: Date | undefined;
59
+ maxDate: Date | undefined;
60
+ startMonth: Date | undefined;
61
+ endMonth: Date | undefined;
62
+ };
63
+ type YearRangeBoundsField = Pick<YearRangePickerField, "minDate" | "maxDate" | "minYearsOffset" | "maxYearsOffset" | "startMonth" | "endMonth" | "calendarKind" | "fiscalMode" | "fiscalMonthPattern" | "fiscalYearStartMonth" | "weekStartsOn">;
64
+ /**
65
+ * Resolves selectable year bounds. `minYearsOffset` / `maxYearsOffset` win over
66
+ * static `minDate` / `maxDate` so existing hardcoded configs keep working when
67
+ * offsets are omitted.
68
+ */
69
+ export declare const resolveYearRangeMinMax: (yearRangeField: YearRangeBoundsField) => {
70
+ minDate: Date | undefined;
71
+ maxDate: Date | undefined;
72
+ startMonth: Date | undefined;
73
+ endMonth: Date | undefined;
74
+ };
75
+ /** Quarter pickers navigate by year — reuse year-bound resolution for min/max/month caps. */
76
+ export declare const resolveQuarterRangeMinMax: (yearRangeField: YearRangeBoundsField) => {
77
+ minDate: Date | undefined;
78
+ maxDate: Date | undefined;
79
+ startMonth: Date | undefined;
80
+ endMonth: Date | undefined;
81
+ };
33
82
  export {};