impact-nova 2.5.13 → 2.5.14

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 (148) hide show
  1. package/dist/components/data/data-table/build-column-tree-from-grid.d.ts +0 -1
  2. package/dist/components/data/data-table/build-column-tree-from-grid.js +50 -55
  3. package/dist/components/data/data-table/data-table-column-apply.d.ts +0 -2
  4. package/dist/components/data/data-table/data-table-column-apply.js +73 -84
  5. package/dist/components/data/data-table/data-table-column-list.js +64 -94
  6. package/dist/components/data/data-table/data-table-column-tree-cache.d.ts +6 -12
  7. package/dist/components/data/data-table/data-table-column-tree-cache.js +131 -250
  8. package/dist/components/data/data-table/patch-column-tree-indicators-from-grid.d.ts +0 -5
  9. package/dist/components/data/data-table/patch-column-tree-indicators-from-grid.js +11 -28
  10. package/dist/components/data/data-table/use-data-table-column-list-sync.d.ts +0 -10
  11. package/dist/components/data/data-table/use-data-table-column-list-sync.js +196 -250
  12. package/dist/components/data/expandable-list-item/expandable-list-item-attributes.js +3 -2
  13. package/dist/components/data/expandable-list-item/expandable-list-item-metrics.js +3 -2
  14. package/dist/components/data/nested-list/components/NestedListContent.d.ts +2 -10
  15. package/dist/components/data/nested-list/components/NestedListContent.js +138 -253
  16. package/dist/components/data/nested-list/components/SortableItem.d.ts +1 -2
  17. package/dist/components/data/nested-list/components/SortableItem.js +60 -62
  18. package/dist/components/data/nested-list/hooks/useNestedListDragDrop.d.ts +20 -10
  19. package/dist/components/data/nested-list/hooks/useNestedListDragDrop.js +233 -44
  20. package/dist/components/data/nested-list/nested-list-constants.d.ts +1 -4
  21. package/dist/components/data/nested-list/nested-list-constants.js +4 -10
  22. package/dist/components/data/nested-list/nested-list.js +336 -322
  23. package/dist/components/data/nested-list/nested-list.types.d.ts +0 -17
  24. package/dist/components/data-display/calendar/calendar-apply-validation.d.ts +2 -0
  25. package/dist/components/data-display/calendar/calendar-apply-validation.js +64 -67
  26. package/dist/components/data-display/calendar/calendar-available-view.d.ts +27 -0
  27. package/dist/components/data-display/calendar/calendar-available-view.js +85 -0
  28. package/dist/components/data-display/calendar/calendar-config.js +1 -1
  29. package/dist/components/data-display/calendar/calendar-day-picker-components.d.ts +4 -2
  30. package/dist/components/data-display/calendar/calendar-day-picker-components.js +234 -164
  31. package/dist/components/data-display/calendar/calendar-day-picker-view.js +77 -76
  32. package/dist/components/data-display/calendar/calendar-fiscal-day-cell.d.ts +9 -0
  33. package/dist/components/data-display/calendar/calendar-fiscal-day-cell.js +45 -0
  34. package/dist/components/data-display/calendar/calendar-fiscal-period-nav.d.ts +6 -0
  35. package/dist/components/data-display/calendar/calendar-fiscal-period-nav.js +34 -18
  36. package/dist/components/data-display/calendar/calendar-footer.js +21 -21
  37. package/dist/components/data-display/calendar/calendar-injected-week-row.d.ts +5 -0
  38. package/dist/components/data-display/calendar/calendar-injected-week-row.js +92 -0
  39. package/dist/components/data-display/calendar/calendar-leading-week.utils.d.ts +16 -0
  40. package/dist/components/data-display/calendar/calendar-leading-week.utils.js +51 -0
  41. package/dist/components/data-display/calendar/calendar-month-picker-panel.js +50 -49
  42. package/dist/components/data-display/calendar/calendar-month-utils.d.ts +5 -0
  43. package/dist/components/data-display/calendar/calendar-month-utils.js +85 -64
  44. package/dist/components/data-display/calendar/calendar-orphan-week.d.ts +23 -0
  45. package/dist/components/data-display/calendar/calendar-padding-week.utils.d.ts +3 -1
  46. package/dist/components/data-display/calendar/calendar-padding-week.utils.js +7 -5
  47. package/dist/components/data-display/calendar/calendar-period-cell.js +45 -46
  48. package/dist/components/data-display/calendar/calendar-quarter-panes.js +33 -31
  49. package/dist/components/data-display/calendar/calendar-selection-appearance.d.ts +10 -0
  50. package/dist/components/data-display/calendar/calendar-selection-appearance.js +53 -39
  51. package/dist/components/data-display/calendar/calendar-selection.d.ts +25 -0
  52. package/dist/components/data-display/calendar/calendar-selection.js +52 -23
  53. package/dist/components/data-display/calendar/calendar-week-number-cell.d.ts +2 -1
  54. package/dist/components/data-display/calendar/calendar-week-number-cell.js +59 -45
  55. package/dist/components/data-display/calendar/calendar-week-utils.d.ts +15 -4
  56. package/dist/components/data-display/calendar/calendar-week-utils.js +59 -50
  57. package/dist/components/data-display/calendar/calendar-year-panes.d.ts +3 -0
  58. package/dist/components/data-display/calendar/calendar-year-panes.js +53 -49
  59. package/dist/components/data-display/calendar/calendar.js +146 -143
  60. package/dist/components/data-display/calendar/calendar.types.d.ts +5 -0
  61. package/dist/components/data-display/calendar/use-calendar-day-picker-config.d.ts +2 -1
  62. package/dist/components/data-display/calendar/use-calendar-day-picker-config.js +79 -74
  63. package/dist/components/data-display/calendar/use-calendar-state.d.ts +3 -1
  64. package/dist/components/data-display/calendar/use-calendar-state.js +394 -314
  65. package/dist/components/feedback/tooltip/tab-tooltip-render.js +3 -2
  66. package/dist/components/flows/command-palette/shortcut-settings.js +10 -10
  67. package/dist/components/flows/filter-panel/filter-panel.js +4 -4
  68. package/dist/components/forms/date-picker/date-picker.js +60 -58
  69. package/dist/components/forms/date-picker/date-picker.types.d.ts +5 -0
  70. package/dist/components/forms/date-picker/date-range-picker.js +66 -64
  71. package/dist/components/forms/date-picker/fiscal-pass-through.d.ts +1 -0
  72. package/dist/components/forms/date-picker/fiscal-pass-through.js +3 -2
  73. package/dist/components/forms/date-picker/fiscal-picker-fixtures.d.ts +17 -0
  74. package/dist/components/forms/date-picker/month-picker.js +61 -59
  75. package/dist/components/forms/date-picker/month-range-picker.js +63 -61
  76. package/dist/components/forms/date-picker/multi-date-picker.js +51 -49
  77. package/dist/components/forms/date-picker/multi-month-picker.js +49 -47
  78. package/dist/components/forms/date-picker/multi-quarter-picker.js +51 -47
  79. package/dist/components/forms/date-picker/multi-week-picker.js +53 -51
  80. package/dist/components/forms/date-picker/multi-year-picker.js +53 -49
  81. package/dist/components/forms/date-picker/quarter-picker.js +51 -47
  82. package/dist/components/forms/date-picker/quarter-range-picker.js +50 -46
  83. package/dist/components/forms/date-picker/week-picker.js +130 -126
  84. package/dist/components/forms/date-picker/week-range-picker.js +159 -155
  85. package/dist/components/forms/date-picker/year-picker.js +52 -48
  86. package/dist/components/forms/date-picker/year-range-picker.js +52 -48
  87. package/dist/components/forms/select/components/SelectTriggerValue.js +3 -2
  88. package/dist/components/forms/select/components/Submenu.js +3 -2
  89. package/dist/form-react/Fields/DateInputField.js +51 -50
  90. package/dist/form-react/Fields/DateRangeField.js +14 -13
  91. package/dist/form-react/Fields/MonthRangeField.js +29 -28
  92. package/dist/form-react/Fields/MultiMonthPickerField.js +13 -12
  93. package/dist/form-react/Fields/MultiWeekPickerField.js +35 -27
  94. package/dist/form-react/Fields/MultiYearPickerField.d.ts +8 -0
  95. package/dist/form-react/Fields/MultiYearPickerField.js +57 -0
  96. package/dist/form-react/Fields/WeekRangePicker.js +33 -32
  97. package/dist/form-react/Fields/YearPickerField.d.ts +8 -0
  98. package/dist/form-react/Fields/YearPickerField.js +57 -0
  99. package/dist/form-react/Fields/YearRangePickerField.d.ts +8 -0
  100. package/dist/form-react/Fields/YearRangePickerField.js +57 -0
  101. package/dist/form-react/registry/defaultFieldRegistrations.d.ts +1 -1
  102. package/dist/form-react/registry/defaultFieldRegistrations.js +16 -13
  103. package/dist/form-react/types/fields.types.d.ts +69 -1
  104. package/dist/form-react/types/fieldsOutput.types.d.ts +8 -2
  105. package/dist/form-react/utils/fieldDefaults.utils.js +1 -1
  106. package/dist/impact-nova-components.css +13 -6
  107. package/dist/impact-nova.css +1 -1
  108. package/dist/lib/fiscal-calendar/index.d.ts +2 -2
  109. package/dist/lib/fiscal-calendar/index.js +26 -28
  110. package/dist/lib/fiscal-calendar/types.d.ts +0 -7
  111. package/dist/lib/fiscal-calendar/week-selection.d.ts +3 -4
  112. package/dist/lib/fiscal-calendar/week-selection.js +52 -79
  113. package/dist/llms/rules/ag-grid.js +1 -1
  114. package/dist/llms/rules/installation.js +1 -1
  115. package/dist/llms/rules/requirements.js +1 -1
  116. package/package.json +1 -1
  117. package/dist/components/data/data-table/column-picker-authority.d.ts +0 -34
  118. package/dist/components/data/data-table/column-picker-authority.js +0 -116
  119. package/dist/components/data/data-table/column-picker-drop-validation.d.ts +0 -7
  120. package/dist/components/data/data-table/column-picker-drop-validation.js +0 -37
  121. package/dist/components/data/data-table/data-table-column-list-tree-apply.d.ts +0 -10
  122. package/dist/components/data/data-table/data-table-column-list-tree-apply.js +0 -79
  123. package/dist/components/data/data-table/data-table-flat-column-virtual-rows.d.ts +0 -26
  124. package/dist/components/data/data-table/data-table-flat-column-virtual-rows.js +0 -195
  125. package/dist/components/data/data-table/data-table-picker-column-eligibility.d.ts +0 -1
  126. package/dist/components/data/data-table/data-table-picker-column-eligibility.js +0 -7
  127. package/dist/components/data/data-table/reconcile-column-tree-from-grid.d.ts +0 -12
  128. package/dist/components/data/data-table/reconcile-column-tree-from-grid.js +0 -12
  129. package/dist/components/data/nested-list/hooks/useVirtualNestedListDrag.d.ts +0 -24
  130. package/dist/components/data/nested-list/hooks/useVirtualNestedListDrag.js +0 -128
  131. package/dist/components/data/nested-list/nested-list-display-utils.d.ts +0 -11
  132. package/dist/components/data/nested-list/nested-list-display-utils.js +0 -74
  133. package/dist/components/data/nested-list/nested-list-drop-engine.d.ts +0 -31
  134. package/dist/components/data/nested-list/nested-list-drop-engine.js +0 -209
  135. package/dist/components/data/nested-list/nested-list-flat-virtual-handlers.d.ts +0 -26
  136. package/dist/components/data/nested-list/nested-list-flat-virtual-handlers.js +0 -67
  137. package/dist/components/data/nested-list/nested-list-item-tree-mutations.d.ts +0 -4
  138. package/dist/components/data/nested-list/nested-list-item-tree-mutations.js +0 -43
  139. package/dist/components/data/nested-list/nested-list-lazy-flat-rows.d.ts +0 -3
  140. package/dist/components/data/nested-list/nested-list-lazy-flat-rows.js +0 -34
  141. package/dist/components/data/nested-list/nested-list-row-estimates.d.ts +0 -9
  142. package/dist/components/data/nested-list/nested-list-row-estimates.js +0 -14
  143. package/dist/components/data/nested-list/nested-list-scroll-anchor.d.ts +0 -36
  144. package/dist/components/data/nested-list/nested-list-scroll-anchor.js +0 -47
  145. package/dist/components/data/nested-list/nested-list-virtual-drop.d.ts +0 -59
  146. package/dist/components/data/nested-list/nested-list-virtual-drop.js +0 -341
  147. package/dist/lib/hash/fnv1a128.d.ts +0 -16
  148. package/dist/lib/hash/fnv1a128.js +0 -21
@@ -1,28 +1,30 @@
1
1
  import { jsxs as s, jsx as i } from "react/jsx-runtime";
2
2
  import { ChevronRight as p } from "impact-nova-icons";
3
+ import { cn as G } from "../../../lib/utils.js";
3
4
  import { Button as u } from "../../primitives/button/button.js";
4
- import { Select as W } from "../../forms/select/select.js";
5
- import { CalendarPeriodCell as Y } from "./calendar-period-cell.js";
6
- import { getQuarterRangeProps as y, isQuarterRangeSelection as A } from "./calendar-quarter-utils.js";
7
- function L({
5
+ import { Select as I } from "../../forms/select/select.js";
6
+ import { CalendarPeriodCell as T } from "./calendar-period-cell.js";
7
+ import { PERIOD_RANGE_GRID_CLASSNAME as q } from "./calendar-selection-appearance.js";
8
+ import { getQuarterRangeProps as L, isQuarterRangeSelection as W } from "./calendar-quarter-utils.js";
9
+ function X({
8
10
  quarterMode: n,
9
11
  pickerYear: g,
10
12
  showFooter: h,
11
13
  pendingQuarterSelection: v,
12
14
  selectedQuarters: x,
13
- resolvedStartYear: w,
14
- resolvedEndYear: N,
15
+ resolvedStartYear: N,
16
+ resolvedEndYear: f,
15
17
  yearOptions: d,
16
- previousYearLabel: b,
17
- nextYearLabel: f,
18
+ previousYearLabel: w,
19
+ nextYearLabel: b,
18
20
  currentMonth: t,
19
21
  quarterLabelsForYear: S,
20
- isQuarterSelected: k,
21
- isQuarterDisabled: C,
22
+ isQuarterSelected: C,
23
+ isQuarterDisabled: R,
22
24
  onMonthChange: o,
23
- onQuarterClick: z
25
+ onQuarterClick: k
24
26
  }) {
25
- const c = h ? v : x, R = n === "range" || n === "multiple" || n === "multi-range", m = (l = 0) => {
27
+ const c = h ? v : x, z = n === "range" || n === "multiple" || n === "multi-range", m = (l = 0) => {
26
28
  const e = g + l;
27
29
  return /* @__PURE__ */ s(
28
30
  "div",
@@ -37,14 +39,14 @@ function L({
37
39
  variant: "ghost",
38
40
  size: "icon",
39
41
  className: "h-7 w-7 shrink-0",
40
- "aria-label": b,
41
- disabled: e <= w,
42
+ "aria-label": w,
43
+ disabled: e <= N,
42
44
  onClick: () => o(new Date(e - 1, t.getMonth(), 1)),
43
45
  children: /* @__PURE__ */ i(p, { size: 16, className: "rotate-180" })
44
46
  }
45
47
  ) : /* @__PURE__ */ i("span", { className: "size-7 shrink-0", "aria-hidden": !0 }),
46
48
  /* @__PURE__ */ i(
47
- W,
49
+ I,
48
50
  {
49
51
  value: d.find((a) => a.value === String(e)) ?? {
50
52
  label: String(e),
@@ -66,32 +68,32 @@ function L({
66
68
  variant: "ghost",
67
69
  size: "icon",
68
70
  className: "h-7 w-7",
69
- "aria-label": f,
70
- disabled: e >= N,
71
+ "aria-label": b,
72
+ disabled: e >= f,
71
73
  onClick: () => o(new Date(e + 1, t.getMonth(), 1)),
72
74
  children: /* @__PURE__ */ i(p, { className: "h-4 w-4" })
73
75
  }
74
76
  )
75
77
  ] }),
76
- /* @__PURE__ */ i("div", { "data-period-grid": "", className: "grid min-w-0 grid-cols-2 gap-2", children: S(e).map((a, j) => {
77
- const r = j + 1, P = k(e, r), D = C(e, r), Q = n === "range", { isStart: B, isEnd: E, isMiddle: T } = y(
78
+ /* @__PURE__ */ i("div", { "data-period-grid": "", className: G(q, "grid-cols-2"), children: S(e).map((a, D) => {
79
+ const r = D + 1, E = C(e, r), P = R(e, r), j = n === "range", { isStart: A, isEnd: Q, isMiddle: _ } = L(
78
80
  e,
79
81
  r,
80
82
  c
81
- ), q = A(c) && !!c.to;
83
+ ), B = W(c) && !!c.to;
82
84
  return /* @__PURE__ */ i(
83
- Y,
85
+ T,
84
86
  {
85
- selected: P,
86
- disabled: D,
87
- isRange: Q,
88
- isStart: B,
89
- isEnd: E,
90
- isMiddle: T,
91
- hasRangeEnd: !!q,
87
+ selected: E,
88
+ disabled: P,
89
+ isRange: j,
90
+ isStart: A,
91
+ isEnd: Q,
92
+ isMiddle: _,
93
+ hasRangeEnd: !!B,
92
94
  size: "quarter",
93
95
  columns: 2,
94
- onClick: () => z(e, r),
96
+ onClick: () => k(e, r),
95
97
  caption: a.caption,
96
98
  children: a.label
97
99
  },
@@ -104,12 +106,12 @@ function L({
104
106
  };
105
107
  return /* @__PURE__ */ s("div", { "data-slot": "quarter-panes", children: [
106
108
  m(0),
107
- R ? /* @__PURE__ */ s("div", { "data-slot": "quarter-pane-divider-group", children: [
109
+ z ? /* @__PURE__ */ s("div", { "data-slot": "quarter-pane-divider-group", children: [
108
110
  /* @__PURE__ */ i("div", { className: "my-4 w-[1px] bg-stroke-hairline" }),
109
111
  m(1)
110
112
  ] }) : null
111
113
  ] });
112
114
  }
113
115
  export {
114
- L as CalendarQuarterPanes
116
+ X as CalendarQuarterPanes
115
117
  };
@@ -22,6 +22,7 @@ export declare const previewCapStartCellClassName = "calendar-interval-cap-start
22
22
  export declare const previewCapEndCellClassName = "calendar-interval-cap-end";
23
23
  export declare const weekNumberTypeClassName = "text-[11px] font-medium text-content-icon";
24
24
  export declare const weekNumberInteractiveClassName = "text-brand group-has-[.rdp-selected]/week:text-brand group-hover/week:text-brand";
25
+ export declare const weekNumberBlockedClassName = "cursor-not-allowed text-content-placeholder opacity-50 group-hover/week:text-content-placeholder group-has-[.rdp-selected]/week:text-content-placeholder";
25
26
  export declare const weekNumberBaseClassName: string;
26
27
  export declare const weekNumberSelectedFillClassName = "group-data-[week-selected]/week:bg-accent";
27
28
  export declare const weekNumberFocusClassName = "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-ring";
@@ -31,6 +32,15 @@ export declare const periodTileHoverClassName = "hover:border-brand hover:bg-acc
31
32
  export declare const periodTileMiddleClassName = "text-accent-foreground";
32
33
  export declare const periodTileDisabledClassName = "cursor-not-allowed text-content-placeholder opacity-50";
33
34
  export declare const periodRangeTrackClassName = "bg-accent";
35
+ /** Flush cells like the day grid. Pills inset inside the cell; range track lives on the cell. */
36
+ export declare const PERIOD_RANGE_GRID_CLASSNAME = "grid min-w-0 gap-x-0 gap-y-4";
37
+ /** Same job as a 36px day button in a wider cell — keeps adjacent brand fills from fusing. */
38
+ export declare const periodTileInsetClassName = "mx-1 flex-1";
39
+ export declare function periodRangeTrackPositionClassName(params: {
40
+ isStart: boolean;
41
+ isEnd: boolean;
42
+ squareTile: boolean;
43
+ }): string;
34
44
  export declare function dayButtonAppearanceClassName(kind: SelectionKind, pickerType: "date" | "week"): string;
35
45
  export declare function periodTileAppearanceClassName(params: {
36
46
  kind: SelectionKind;
@@ -1,72 +1,86 @@
1
1
  import { cn as e } from "../../../lib/utils.js";
2
- const l = "h-9 w-9 min-h-9 min-w-9", y = "min-w-[292px]", d = "w-9 flex-shrink-0", s = "bg-accent", i = "bg-brand text-brand-foreground", c = "hover:bg-brand-strong hover:text-brand-foreground hover:border-transparent", a = "rounded-lg", I = "rounded-l-lg", k = "rounded-r-lg", u = e(
2
+ const l = "h-9 w-9 min-h-9 min-w-9", k = "min-w-[292px]", d = "w-9 flex-shrink-0", a = "bg-accent", i = "bg-brand text-brand-foreground", c = "hover:bg-brand-strong hover:text-brand-foreground hover:border-transparent", s = "rounded-lg", u = "rounded-l-lg", p = "rounded-r-lg", m = e(
3
3
  "flex items-center justify-center p-0 font-normal text-sm transition-colors",
4
4
  "border border-transparent",
5
- a,
5
+ s,
6
6
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-ring",
7
7
  "disabled:pointer-events-none",
8
8
  l,
9
9
  "rdp-day rdp-day_button"
10
- ), p = "hover:bg-accent hover:text-accent-foreground hover:border-transparent", m = "hover:bg-transparent hover:text-inherit hover:border-transparent", v = e(
10
+ ), v = "hover:bg-accent hover:text-accent-foreground hover:border-transparent", b = "hover:bg-transparent hover:text-inherit hover:border-transparent", f = e(
11
11
  i,
12
12
  c,
13
- a,
13
+ s,
14
14
  "border-transparent"
15
- ), b = "text-accent-foreground rounded-none border-transparent", L = e(
15
+ ), N = "text-accent-foreground rounded-none border-transparent", R = e(
16
16
  "group/day relative select-none p-0 text-center flex-1 flex items-center justify-center",
17
17
  "h-9 [&:nth-child(2)]:pl-2 rdp-day"
18
- ), C = "calendar-interval-cap-start", S = e(s, "rounded-none"), N = "calendar-interval-cap-end", A = e(s, "rounded-none"), B = C, R = N, f = "text-[11px] font-medium text-content-icon", D = "text-brand group-has-[.rdp-selected]/week:text-brand group-hover/week:text-brand", O = e(
18
+ ), g = "calendar-interval-cap-start", S = e(a, "rounded-none"), C = "calendar-interval-cap-end", A = e(a, "rounded-none"), L = g, B = C, x = "text-[11px] font-medium text-content-icon", D = "text-brand group-has-[.rdp-selected]/week:text-brand group-hover/week:text-brand", O = "cursor-not-allowed text-content-placeholder opacity-50 group-hover/week:text-content-placeholder group-has-[.rdp-selected]/week:text-content-placeholder", P = e(
19
19
  "select-none flex items-center justify-center",
20
- f,
20
+ x,
21
21
  l,
22
22
  d,
23
23
  "rdp-week_number"
24
24
  ), H = "group-data-[week-selected]/week:bg-accent", M = "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-focus-ring", o = e(
25
25
  "relative z-10 border border-transparent p-0 text-sm font-normal transition-colors",
26
- a,
26
+ s,
27
27
  "focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-focus-ring focus-visible:ring-offset-0"
28
- ), g = e(i, c), h = "hover:border-brand hover:bg-accent hover:text-accent-foreground", x = "text-accent-foreground", T = "cursor-not-allowed text-content-placeholder opacity-50", P = s;
29
- function U(n, t) {
30
- const r = n === "point" || n === "interval-start" || n === "interval-end";
31
- return e(u, r ? v : n === "interval-middle" ? b : void 0, t === "week" ? r ? void 0 : m : n === "none" ? p : void 0);
28
+ ), h = e(i, c), w = "hover:border-brand hover:bg-accent hover:text-accent-foreground", T = "text-accent-foreground", E = "cursor-not-allowed text-content-placeholder opacity-50", U = a, F = "grid min-w-0 gap-x-0 gap-y-4", j = "mx-1 flex-1";
29
+ function G(t) {
30
+ const { isStart: n, isEnd: r } = t;
31
+ return n && r ? e("inset-x-2", s) : n ? e(
32
+ "left-1/2 right-0 -ml-5",
33
+ u
34
+ ) : r ? e(
35
+ "right-1/2 left-0 -mr-5",
36
+ p
37
+ ) : "inset-x-0";
32
38
  }
33
- function F(n) {
34
- const { kind: t, disabled: r } = n;
35
- return r ? e(o, T) : t === "point" || t === "interval-start" || t === "interval-end" ? e(o, g) : t === "interval-middle" ? e(o, x) : e(o, h);
39
+ function W(t, n) {
40
+ const r = t === "point" || t === "interval-start" || t === "interval-end";
41
+ return e(m, r ? f : t === "interval-middle" ? N : void 0, n === "week" ? r ? void 0 : b : t === "none" ? v : void 0);
42
+ }
43
+ function K(t) {
44
+ const { kind: n, disabled: r } = t;
45
+ return r ? e(o, E) : n === "point" || n === "interval-start" || n === "interval-end" ? e(o, h) : n === "interval-middle" ? e(o, T) : e(o, w);
36
46
  }
37
47
  export {
38
48
  l as DAY_CELL_SIZE,
39
- y as DAY_MONTH_MIN_WIDTH,
40
- s as INTERVAL_TRACK,
49
+ k as DAY_MONTH_MIN_WIDTH,
50
+ a as INTERVAL_TRACK,
51
+ F as PERIOD_RANGE_GRID_CLASSNAME,
41
52
  i as POINT_FILL,
42
53
  c as POINT_FILL_HOVER,
43
- a as SELECTION_RADIUS,
44
- k as SELECTION_RADIUS_END,
45
- I as SELECTION_RADIUS_START,
54
+ s as SELECTION_RADIUS,
55
+ p as SELECTION_RADIUS_END,
56
+ u as SELECTION_RADIUS_START,
46
57
  d as WEEK_GUTTER_RULE,
47
- U as dayButtonAppearanceClassName,
48
- u as dayButtonBaseClassName,
49
- p as dayButtonHoverClassName,
50
- b as dayButtonMiddleClassName,
51
- v as dayButtonPointClassName,
52
- m as dayButtonWeekHoverClassName,
53
- L as dayCellBaseClassName,
54
- P as periodRangeTrackClassName,
55
- F as periodTileAppearanceClassName,
58
+ W as dayButtonAppearanceClassName,
59
+ m as dayButtonBaseClassName,
60
+ v as dayButtonHoverClassName,
61
+ N as dayButtonMiddleClassName,
62
+ f as dayButtonPointClassName,
63
+ b as dayButtonWeekHoverClassName,
64
+ R as dayCellBaseClassName,
65
+ U as periodRangeTrackClassName,
66
+ G as periodRangeTrackPositionClassName,
67
+ K as periodTileAppearanceClassName,
56
68
  o as periodTileBaseClassName,
57
- T as periodTileDisabledClassName,
58
- h as periodTileHoverClassName,
59
- x as periodTileMiddleClassName,
60
- g as periodTilePointClassName,
61
- R as previewCapEndCellClassName,
62
- B as previewCapStartCellClassName,
69
+ E as periodTileDisabledClassName,
70
+ w as periodTileHoverClassName,
71
+ j as periodTileInsetClassName,
72
+ T as periodTileMiddleClassName,
73
+ h as periodTilePointClassName,
74
+ B as previewCapEndCellClassName,
75
+ L as previewCapStartCellClassName,
63
76
  A as previewCellClassName,
64
- N as rangeEndCellClassName,
77
+ C as rangeEndCellClassName,
65
78
  S as rangeMiddleCellClassName,
66
- C as rangeStartCellClassName,
67
- O as weekNumberBaseClassName,
79
+ g as rangeStartCellClassName,
80
+ P as weekNumberBaseClassName,
81
+ O as weekNumberBlockedClassName,
68
82
  M as weekNumberFocusClassName,
69
83
  D as weekNumberInteractiveClassName,
70
84
  H as weekNumberSelectedFillClassName,
71
- f as weekNumberTypeClassName
85
+ x as weekNumberTypeClassName
72
86
  };
@@ -1,3 +1,4 @@
1
+ import { Matcher } from 'react-day-picker';
1
2
  export type SelectionKind = "none" | "point" | "interval-start" | "interval-middle" | "interval-end";
2
3
  export interface SelectionModifiers {
3
4
  selected?: boolean;
@@ -9,6 +10,28 @@ export interface SelectionModifiers {
9
10
  }
10
11
  export declare function selectionKindFromModifiers(modifiers: SelectionModifiers): SelectionKind;
11
12
  export declare function dayKey(date: Date): number;
13
+ export declare function isSameCalendarDay(left: Date, right: Date): boolean;
14
+ /** DayPicker precomputes modifiers only for days it generated. Injected weeks match the Date[] matchers themselves. */
15
+ export declare function dateMatchesModifier(matcher: unknown, date: Date): boolean;
16
+ /** Injected CalendarDays are not in DayPicker's identity map. Re-run the same matchers DayPicker uses. */
17
+ export declare function injectedCalendarDayModifiers(params: {
18
+ date: Date;
19
+ disabled?: Matcher | Matcher[];
20
+ today?: Date;
21
+ isSelected?: (date: Date) => boolean;
22
+ customModifiers?: {
23
+ range_start?: unknown;
24
+ range_middle?: unknown;
25
+ range_end?: unknown;
26
+ };
27
+ }): {
28
+ selected: boolean;
29
+ disabled: boolean;
30
+ today: boolean;
31
+ range_start: boolean;
32
+ range_middle: boolean;
33
+ range_end: boolean;
34
+ };
12
35
  export declare function isPreviewMiddle(date: Date, from: Date, hovered: Date): boolean;
13
36
  export declare function isPreviewCap(date: Date, from: Date, hovered: Date): boolean;
14
37
  export declare function periodCellKind(params: {
@@ -18,3 +41,5 @@ export declare function periodCellKind(params: {
18
41
  isEnd: boolean;
19
42
  isMiddle: boolean;
20
43
  }): SelectionKind;
44
+ /** useDayPicker().select is `never` unless the hook is parameterized with `mode`. */
45
+ export declare function callDayPickerSelect(select: unknown, date: Date, modifiers: Record<string, boolean>, event: unknown): void;
@@ -1,31 +1,60 @@
1
- function c(n) {
2
- const e = !!n.range_start, t = !!n.range_end;
3
- return e && t ? "point" : e ? "interval-start" : t ? "interval-end" : n.range_middle ? "interval-middle" : n.preview_cap ? "interval-end" : n.preview ? "interval-middle" : n.selected ? "point" : "none";
1
+ import { dateMatchModifiers as a } from "react-day-picker";
2
+ function s(e) {
3
+ const n = !!e.range_start, t = !!e.range_end;
4
+ return n && t ? "point" : n ? "interval-start" : t ? "interval-end" : e.range_middle ? "interval-middle" : e.preview_cap ? "interval-end" : e.preview ? "interval-middle" : e.selected ? "point" : "none";
4
5
  }
5
- function o(n) {
6
- return n.getFullYear() * 1e4 + (n.getMonth() + 1) * 100 + n.getDate();
6
+ function i(e) {
7
+ return e.getFullYear() * 1e4 + (e.getMonth() + 1) * 100 + e.getDate();
7
8
  }
8
- function d(n, e, t) {
9
- const r = o(n), i = o(e), a = o(t), l = i < a ? i : a, u = i > a ? i : a;
10
- return r > l && r < u;
9
+ function c(e, n) {
10
+ return i(e) === i(n);
11
11
  }
12
- function s(n, e, t) {
13
- const r = o(n);
14
- return r === o(t) && r !== o(e);
12
+ function l(e, n) {
13
+ return e == null || e === !1 ? !1 : e === !0 ? !0 : e instanceof Date ? i(e) === i(n) : typeof e == "function" ? !!e(n) : Array.isArray(e) ? e.some((t) => l(t, n)) : !1;
15
14
  }
16
- function g(n) {
17
- const { selected: e, isRange: t, isStart: r, isEnd: i, isMiddle: a } = n;
18
- return t ? c({
19
- selected: e,
15
+ function _(e) {
16
+ const n = e.today ?? /* @__PURE__ */ new Date();
17
+ return {
18
+ selected: !!e.isSelected?.(e.date),
19
+ disabled: e.disabled == null ? !1 : a(e.date, e.disabled),
20
+ today: c(e.date, n),
21
+ range_start: l(e.customModifiers?.range_start, e.date),
22
+ range_middle: l(e.customModifiers?.range_middle, e.date),
23
+ range_end: l(e.customModifiers?.range_end, e.date)
24
+ };
25
+ }
26
+ function y(e, n, t) {
27
+ const r = i(e), o = i(n), d = i(t), u = o < d ? o : d, f = o > d ? o : d;
28
+ return r > u && r < f;
29
+ }
30
+ function M(e, n, t) {
31
+ const r = i(e);
32
+ return r === i(t) && r !== i(n);
33
+ }
34
+ function v(e) {
35
+ const { selected: n, isRange: t, isStart: r, isEnd: o, isMiddle: d } = e;
36
+ return t ? s({
37
+ selected: n,
20
38
  range_start: r,
21
- range_end: i,
22
- range_middle: a
23
- }) : e ? "point" : "none";
39
+ range_end: o,
40
+ range_middle: d
41
+ }) : n ? "point" : "none";
42
+ }
43
+ function D(e, n, t, r) {
44
+ typeof e == "function" && e(
45
+ n,
46
+ t,
47
+ r
48
+ );
24
49
  }
25
50
  export {
26
- o as dayKey,
27
- s as isPreviewCap,
28
- d as isPreviewMiddle,
29
- g as periodCellKind,
30
- c as selectionKindFromModifiers
51
+ D as callDayPickerSelect,
52
+ l as dateMatchesModifier,
53
+ i as dayKey,
54
+ _ as injectedCalendarDayModifiers,
55
+ M as isPreviewCap,
56
+ y as isPreviewMiddle,
57
+ c as isSameCalendarDay,
58
+ v as periodCellKind,
59
+ s as selectionKindFromModifiers
31
60
  };
@@ -18,6 +18,7 @@ export interface CalendarWeekNumberCellProps {
18
18
  getCellMeta?: (date: Date) => DateCellMeta | undefined;
19
19
  onWeekSelect: (input: WeekPickerInput) => void;
20
20
  blank?: boolean;
21
+ blocked?: boolean;
21
22
  className?: string;
22
23
  }
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;
24
+ export declare function CalendarWeekNumberCell({ week, weekStartsOn, pickerType, calendarKind, weekNumberLabel, weekLabel, fiscalWeekNumberLabel, fiscalWeekAriaLabel, getCellMeta, onWeekSelect, blank, blocked, className, ...weekProps }: CalendarWeekNumberCellProps & React.HTMLAttributes<HTMLElement>): import("react/jsx-runtime").JSX.Element;
@@ -1,88 +1,102 @@
1
1
  import { jsx as r } from "react/jsx-runtime";
2
2
  import "react";
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)
3
+ import { cn as k } from "../../../lib/utils.js";
4
+ import { weekNumberBaseClassName as h, weekNumberBlockedClassName as M, weekNumberInteractiveClassName as j, weekNumberSelectedFillClassName as F, weekNumberFocusClassName as W } from "./calendar-selection-appearance.js";
5
+ function B(e, n) {
6
+ const s = e.getFullYear(), o = e.getMonth(), i = (new Date(s, o, 1).getDay() + 7 - n) % 7, c = new Date(s, o, 1 - i), l = new Date(e), p = (e.getDay() + 7 - n) % 7;
7
+ return l.setDate(e.getDate() - p), Math.round(
8
+ (l.getTime() - c.getTime()) / (10080 * 60 * 1e3)
9
9
  ) + 1;
10
10
  }
11
- function P({
11
+ function T({
12
12
  week: e,
13
13
  weekStartsOn: n,
14
14
  pickerType: s,
15
- calendarKind: u = "gregorian",
16
- weekNumberLabel: D,
15
+ calendarKind: o = "gregorian",
16
+ weekNumberLabel: N,
17
17
  weekLabel: g,
18
- fiscalWeekNumberLabel: o,
18
+ fiscalWeekNumberLabel: i,
19
19
  fiscalWeekAriaLabel: c,
20
- getCellMeta: i,
21
- onWeekSelect: N,
22
- blank: m = !1,
23
- className: l,
24
- ...C
20
+ getCellMeta: l,
21
+ onWeekSelect: x,
22
+ blank: p = !1,
23
+ blocked: C = !1,
24
+ className: d,
25
+ ...v
25
26
  }) {
26
- const d = e.days.find((f) => !f.outside)?.date;
27
- if (m || !d)
27
+ const f = e.days.find((w) => !w.outside)?.date ?? (o === "fiscal" ? e.days[0]?.date : void 0);
28
+ if (p || !f)
28
29
  return /* @__PURE__ */ r(
29
30
  "th",
30
31
  {
31
32
  scope: "row",
32
33
  "aria-hidden": "true",
33
- className: h(
34
- y,
35
- l
34
+ className: k(
35
+ h,
36
+ d
36
37
  )
37
38
  }
38
39
  );
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
+ const y = l?.(f), t = y?.fiscalWeek, u = B(f, n), m = t ?? u, D = t && i ? i(t) : N(m), b = t && y && c ? c(y) : g(u);
40
41
  if (s === "week") {
41
- const f = () => N(d);
42
+ if (C)
43
+ return /* @__PURE__ */ r(
44
+ "td",
45
+ {
46
+ "aria-label": b,
47
+ "aria-disabled": "true",
48
+ "data-week-index": u,
49
+ "data-week-number": m,
50
+ "data-fiscal-week": t,
51
+ className: k(h, d, M),
52
+ children: /* @__PURE__ */ r("div", { className: "flex h-9 w-full items-center justify-center text-center", children: D })
53
+ }
54
+ );
55
+ const w = () => x(f);
42
56
  return /* @__PURE__ */ r(
43
57
  "td",
44
58
  {
45
- "aria-label": x,
46
- "data-week-index": p,
47
- "data-week-number": k,
48
- "data-fiscal-week": a,
59
+ "aria-label": b,
60
+ "data-week-index": u,
61
+ "data-week-number": m,
62
+ "data-fiscal-week": t,
49
63
  "data-selection": "period-row",
50
64
  tabIndex: 0,
51
65
  role: "button",
52
- className: h(
53
- y,
66
+ className: k(
67
+ h,
68
+ W,
54
69
  F,
55
- v,
56
- M,
70
+ j,
57
71
  "cursor-pointer transition-colors",
58
- l
72
+ d
59
73
  ),
60
- onClick: (t) => {
61
- t.preventDefault(), t.stopPropagation(), f();
74
+ onClick: (a) => {
75
+ a.preventDefault(), a.stopPropagation(), w();
62
76
  },
63
- onKeyDown: (t) => {
64
- (t.key === "Enter" || t.key === " ") && (t.preventDefault(), t.stopPropagation(), f());
77
+ onKeyDown: (a) => {
78
+ (a.key === "Enter" || a.key === " ") && (a.preventDefault(), a.stopPropagation(), w());
65
79
  },
66
- children: /* @__PURE__ */ r("div", { className: "flex h-9 w-full items-center justify-center text-center", children: b })
80
+ children: /* @__PURE__ */ r("div", { className: "flex h-9 w-full items-center justify-center text-center", children: D })
67
81
  }
68
82
  );
69
83
  }
70
84
  return /* @__PURE__ */ r(
71
85
  "th",
72
86
  {
73
- ...C,
74
- "aria-label": x,
75
- "data-week-number": k,
76
- "data-fiscal-week": a,
77
- className: h(
78
- y,
79
- l
87
+ ...v,
88
+ "aria-label": b,
89
+ "data-week-number": m,
90
+ "data-fiscal-week": t,
91
+ className: k(
92
+ h,
93
+ d
80
94
  ),
81
95
  scope: "row",
82
- children: /* @__PURE__ */ r("div", { className: "flex h-9 w-full items-center justify-center text-center whitespace-nowrap", children: b })
96
+ children: /* @__PURE__ */ r("div", { className: "flex h-9 w-full items-center justify-center text-center whitespace-nowrap", children: D })
83
97
  }
84
98
  );
85
99
  }
86
100
  export {
87
- P as CalendarWeekNumberCell
101
+ T as CalendarWeekNumberCell
88
102
  };
@@ -1,4 +1,4 @@
1
- import { CalendarKind, FiscalMode, FiscalMonthPattern, Granularity } from '../../../lib/fiscal-calendar';
1
+ import { CalendarKind, FiscalCalendarConfig, FiscalMode, FiscalMonthPattern, Granularity } from '../../../lib/fiscal-calendar';
2
2
  import { WeekRange, WeekSelection } from './calendar.types';
3
3
  export type WeekPickerInput = Date | {
4
4
  days: Array<{
@@ -14,12 +14,21 @@ 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: {
17
+ type FiscalWeekRowOptions = {
19
18
  calendarKind: CalendarKind;
20
19
  weekPeriod?: number;
21
20
  panePeriod?: number;
22
- }): boolean;
21
+ };
22
+ /** A fiscal week belongs to one period pane. Other panes keep a blank reserved row. */
23
+ export declare function isForeignFiscalWeekRow(options: FiscalWeekRowOptions): boolean;
24
+ export declare function isOwnedFiscalWeekRow(options: FiscalWeekRowOptions): boolean;
25
+ /** Owned fiscal weeks stay visible even when every civil day is outside the pane month.
26
+ * Foreign weeks hide in this pane — the owning pane injects leading weeks DayPicker omits. */
27
+ export declare function shouldHideCalendarWeekRow(week: {
28
+ days: Array<{
29
+ outside?: boolean;
30
+ }>;
31
+ }, options: FiscalWeekRowOptions): boolean;
23
32
  export declare function isSameWeek(w1: WeekSelection, w2: WeekSelection): boolean;
24
33
  export declare function calculateWeekSelection(weekOrDate: WeekPickerInput, options: {
25
34
  calendarKind: CalendarKind;
@@ -28,6 +37,7 @@ export declare function calculateWeekSelection(weekOrDate: WeekPickerInput, opti
28
37
  fiscalMonthPattern?: FiscalMonthPattern;
29
38
  fiscalYearStartMonth: number;
30
39
  weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6;
40
+ fiscalConfig?: FiscalCalendarConfig;
31
41
  }): WeekSelection;
32
42
  export declare function nextWeekSelection(week: WeekSelection, prev: WeekSelection | WeekSelection[] | WeekRange | undefined, weekMode: "single" | "multiple" | "range"): WeekSelection | WeekSelection[] | WeekRange | undefined;
33
43
  export declare function weekSelectionsToDates(selection: WeekSelection | WeekSelection[] | WeekRange | undefined): Date[] | undefined;
@@ -36,3 +46,4 @@ export declare function computeWeekRangeModifiers(selectedDays: Date[] | undefin
36
46
  range_middle: Date[];
37
47
  range_end: Date[];
38
48
  };
49
+ export {};