@payfit/unity-components 2.29.8 → 2.29.9

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.
@@ -1,5 +1,5 @@
1
- import { jsx as a, jsxs as n } from "react/jsx-runtime";
2
- import { useState as y } from "react";
1
+ import { jsx as a, jsxs as d } from "react/jsx-runtime";
2
+ import { useState as u } from "react";
3
3
  import { today as O, getLocalTimeZone as h, isToday as T } from "@internationalized/date";
4
4
  import { uyTv as j } from "@payfit/unity-themes";
5
5
  import { Calendar as k, Heading as F, CalendarGrid as R, CalendarGridHeader as P, CalendarHeaderCell as W, CalendarGridBody as Z, CalendarCell as $ } from "react-aria-components/Calendar";
@@ -8,16 +8,21 @@ import { IconButton as g } from "../icon-button/IconButton.js";
8
8
  import { calendarBase as w } from "./DateCalendar.variants.js";
9
9
  import { useMonthsList as z } from "./hooks/useMonthsList.js";
10
10
  import { useYearsList as A } from "./hooks/useYearsList.js";
11
- import { DateSegmentSelect as C } from "./parts/DateSegmentSelect.js";
11
+ import { DateSegmentSelect as f } from "./parts/DateSegmentSelect.js";
12
12
  const E = j({
13
13
  extend: w,
14
14
  slots: {
15
15
  calendarGrid: "uy:border-spacing-25",
16
16
  calendarCell: [
17
17
  // selected cells
18
- "uy:data-[selected]:bg-surface-form-active uy:data-[selected]:text-content-inverted",
19
- // today dot turns white when selected
20
- "uy:data-[today]:data-[selected]:after:bg-content-inverted"
18
+ //theme: common
19
+ "uy:data-[selected]:bg-surface-form-active",
20
+ //theme: legacy
21
+ "uy:theme-legacy:data-[selected]:text-content-inverted",
22
+ "uy:theme-legacy:data-[today]:data-[selected]:after:bg-content-inverted",
23
+ //theme:rebrand
24
+ "uy:theme-rebrand:data-[selected]:text-content-form-active",
25
+ "uy:theme-rebrand:data-[today]:data-[selected]:after:bg-border-form-active"
21
26
  ]
22
27
  },
23
28
  variants: {
@@ -30,32 +35,32 @@ const E = j({
30
35
  });
31
36
  function J({
32
37
  value: c,
33
- defaultValue: d,
34
- minValue: s,
35
- maxValue: r,
36
- onChange: f,
37
- onFocusChange: b,
38
+ defaultValue: n,
39
+ minValue: r,
40
+ maxValue: s,
41
+ onChange: b,
42
+ onFocusChange: C,
38
43
  ...t
39
44
  }) {
40
45
  const m = q(), v = O(h()), p = z(), D = A({
41
- startYear: s?.year,
42
- endYear: r?.year
43
- }), [N, G] = y(c ?? d ?? null), [i, o] = y(() => {
44
- const e = c ?? d ?? v;
45
- return s && e.compare(s) < 0 ? s : r && e.compare(r) > 0 ? r : e;
46
- }), H = (e) => {
46
+ startYear: r?.year,
47
+ endYear: s?.year
48
+ }), [N, x] = u(c ?? n ?? null), [i, o] = u(() => {
49
+ const e = c ?? n ?? v;
50
+ return r && e.compare(r) < 0 ? r : s && e.compare(s) > 0 ? s : e;
51
+ }), G = (e) => {
47
52
  o(
48
53
  (l) => l.set({ month: parseInt(e, 10) })
49
54
  );
50
- }, L = (e) => {
55
+ }, H = (e) => {
51
56
  o(
52
57
  (l) => l.set({ year: parseInt(e, 10) })
53
58
  );
54
59
  }, {
55
- base: M,
56
- calendarWrapper: S,
57
- dialogHeader: x,
58
- dialogHeaderGroup: u,
60
+ base: L,
61
+ calendarWrapper: M,
62
+ dialogHeader: S,
63
+ dialogHeaderGroup: y,
59
64
  calendarGrid: I,
60
65
  calendarHeaderCell: Y,
61
66
  calendarCell: B
@@ -63,58 +68,58 @@ function J({
63
68
  isDisabled: t.isDisabled,
64
69
  isInteractive: !t.isDisabled && !t.isReadOnly
65
70
  });
66
- return /* @__PURE__ */ a("div", { className: M(), "data-dd-privacy": "mask", children: /* @__PURE__ */ a(
71
+ return /* @__PURE__ */ a("div", { className: L(), "data-dd-privacy": "mask", children: /* @__PURE__ */ a(
67
72
  k,
68
73
  {
69
74
  ...t,
70
- minValue: s,
71
- maxValue: r,
75
+ minValue: r,
76
+ maxValue: s,
72
77
  value: N,
73
- defaultValue: d,
78
+ defaultValue: n,
74
79
  onChange: (e) => {
75
- G(e), f?.(e);
80
+ x(e), b?.(e);
76
81
  },
77
82
  focusedValue: i,
78
83
  onFocusChange: (e) => {
79
- o(e), b?.(e);
84
+ o(e), C?.(e);
80
85
  },
81
- children: /* @__PURE__ */ n("div", { className: S(), children: [
82
- /* @__PURE__ */ n("header", { className: x(), children: [
86
+ children: /* @__PURE__ */ d("div", { className: M(), children: [
87
+ /* @__PURE__ */ d("header", { className: S(), children: [
83
88
  /* @__PURE__ */ a(F, { className: "uy:sr-only" }),
84
- /* @__PURE__ */ n(
89
+ /* @__PURE__ */ d(
85
90
  "div",
86
91
  {
87
- className: u({
92
+ className: y({
88
93
  className: "uy:pl-100 uy:gap-200"
89
94
  }),
90
95
  children: [
91
96
  /* @__PURE__ */ a(
92
- C,
97
+ f,
93
98
  {
94
99
  type: "month",
95
100
  items: p,
96
101
  value: i.month.toString(),
97
- onChange: H,
102
+ onChange: G,
98
103
  isDisabled: t.isDisabled
99
104
  }
100
105
  ),
101
106
  /* @__PURE__ */ a(
102
- C,
107
+ f,
103
108
  {
104
109
  type: "year",
105
110
  items: D,
106
111
  value: i.year.toString(),
107
- onChange: L,
112
+ onChange: H,
108
113
  isDisabled: t.isDisabled
109
114
  }
110
115
  )
111
116
  ]
112
117
  }
113
118
  ),
114
- /* @__PURE__ */ n(
119
+ /* @__PURE__ */ d(
115
120
  "div",
116
121
  {
117
- className: u({
122
+ className: y({
118
123
  className: "uy:ml-auto uy:gap-100"
119
124
  }),
120
125
  children: [
@@ -123,12 +128,12 @@ function J({
123
128
  {
124
129
  slot: "previous",
125
130
  icon: "CaretLeftOutlined",
126
- color: "neutral",
131
+ color: "primary",
127
132
  label: m.formatMessage({
128
133
  id: "unity:component:common:previous",
129
134
  defaultMessage: "Previous"
130
135
  }),
131
- variant: "ghost",
136
+ variant: "secondary",
132
137
  isDisabled: t.isDisabled
133
138
  }
134
139
  ),
@@ -137,12 +142,12 @@ function J({
137
142
  {
138
143
  slot: "next",
139
144
  icon: "CaretRightOutlined",
140
- color: "neutral",
145
+ color: "primary",
141
146
  label: m.formatMessage({
142
147
  id: "unity:component:common:next",
143
148
  defaultMessage: "Next"
144
149
  }),
145
- variant: "ghost",
150
+ variant: "secondary",
146
151
  isDisabled: t.isDisabled
147
152
  }
148
153
  )
@@ -150,7 +155,7 @@ function J({
150
155
  }
151
156
  )
152
157
  ] }),
153
- /* @__PURE__ */ n(R, { className: I(), weekdayStyle: "short", children: [
158
+ /* @__PURE__ */ d(R, { className: I(), weekdayStyle: "short", children: [
154
159
  /* @__PURE__ */ a(P, { children: (e) => /* @__PURE__ */ a(W, { className: Y(), children: e }) }),
155
160
  /* @__PURE__ */ a(Z, { children: (e) => /* @__PURE__ */ a(
156
161
  $,
@@ -1,19 +1,24 @@
1
- import { uyTv as a } from "@payfit/unity-themes";
2
- const t = a({
1
+ import { uyTv as e } from "@payfit/unity-themes";
2
+ const t = e({
3
3
  slots: {
4
4
  base: "",
5
5
  calendarWrapper: "uy:flex uy:flex-col uy:gap-100",
6
6
  dialogHeader: "uy:flex uy:items-center uy:h-500 uy:w-full",
7
7
  dialogHeaderGroup: "uy:flex uy:items-center",
8
8
  calendarGrid: "uy:border-separate uy:w-full",
9
- calendarHeaderCell: "uy:typography-body-small-strong uy:sm:typography-body-strong uy:text-content-neutral-low uy:w-[44px] uy:h-[44px] uy:p-[1px] uy:uppercase",
9
+ calendarHeaderCell: "uy:typography-body-small-strong uy:text-content-neutral-low uy:w-[44px] uy:h-[44px] uy:p-[1px] uy:uppercase",
10
10
  calendarCell: [
11
+ //theme: common
11
12
  // base styles
12
13
  "uy:typography-body uy:relative uy:text-content-form-enabled uy:w-[44px] uy:h-[44px] uy:p-[1px] uy:outline-hidden uy:cursor-pointer uy:rounded-circle uy:flex uy:items-center uy:justify-center",
13
14
  // cells outside of current month
14
15
  "uy:data-[outside-month]:text-content-neutral-disabled uy:data-[outside-month]:cursor-not-allowed uy:data-[disabled]:text-content-neutral-disabled uy:data-[disabled]:cursor-not-allowed uy:data-[unavailable]:text-content-neutral-disabled uy:data-[unavailable]:cursor-not-allowed",
15
16
  // "current day" (today) indicator — dot
16
- "uy:data-[today]:after:content-[''] uy:data-[today]:after:absolute uy:data-[today]:after:bottom-[6px] uy:data-[today]:after:w-[6px] uy:data-[today]:after:h-[6px] uy:data-[today]:after:rounded-circle uy:data-[today]:after:bg-surface-primary-active"
17
+ "uy:data-[today]:after:content-[''] uy:data-[today]:after:absolute uy:data-[today]:after:bottom-[6px] uy:data-[today]:after:w-[6px] uy:data-[today]:after:h-[6px] uy:data-[today]:after:rounded-circle",
18
+ //theme: legacy
19
+ "uy:theme-legacy:data-[today]:after:bg-surface-primary-active",
20
+ //theme: rebrand
21
+ "uy:theme-rebrand:data-[today]:after:bg-border-form-active"
17
22
  ]
18
23
  },
19
24
  variants: {
@@ -25,7 +30,11 @@ const t = a({
25
30
  isInteractive: {
26
31
  true: {
27
32
  calendarCell: [
28
- "uy:hover:bg-surface-neutral-hover uy:active:bg-surface-form-active uy:data-[pressed]:bg-surface-neutral-pressed uy:data-[focus-visible]:outline-2 uy:data-[focus-visible]:outline-solid uy:data-[focus-visible]:outline-utility-focus-ring uy:data-[focus-visible]:outline-offset-2",
33
+ //theme: common
34
+ "uy:hover:bg-surface-neutral-hover uy:active:bg-surface-form-active",
35
+ "uy:data-[pressed]:bg-surface-neutral-pressed uy:data-[focus-visible]:outline-2 uy:data-[focus-visible]:outline-solid uy:data-[focus-visible]:outline-utility-focus-ring uy:data-[focus-visible]:outline-offset-2",
36
+ //theme: rebrand
37
+ "uy:theme-rebrand:active:text-content-form-active",
29
38
  // Disable hover on non-selectable cells
30
39
  "uy:data-[disabled]:hover:bg-transparent uy:data-[unavailable]:hover:bg-transparent uy:data-[outside-month]:hover:bg-transparent"
31
40
  ]
@@ -11,7 +11,7 @@ const z = b({
11
11
  slots: {
12
12
  base: [
13
13
  "uy:group uy:flex uy:h-5.5 uy:sm:h-500 uy:border uy:border-solid uy:rounded-100 uy:sm:rounded-75",
14
- "uy:active:border-border-form-active uy:data-[focus-visible=true]:border-border-form-active"
14
+ "uy:active:border-border-form-active uy:data-[focus-visible=true]:border-border-form-active uy:data-[open=true]:border-border-form-active"
15
15
  ],
16
16
  inputWrapper: [
17
17
  "uy:flex uy:grow uy:rounded-100 uy:sm:rounded-75 uy:outline-none",
@@ -22,7 +22,7 @@ const z = b({
22
22
  ],
23
23
  suffix: [
24
24
  "uy:flex-grow-0 uy:content-center uy:p-125 uy:border-l uy:border-solid uy:rounded-r-100 uy:sm:rounded-r-75 uy:text-content-neutral-low",
25
- "uy:hover:bg-surface-neutral-hover uy:active:bg-surface-neutral-pressed uy:active:border-border-form-active uy:data-[pressed=true]:bg-surface-neutral-pressed uy:data-[pressed=true]:not-group-data-[open=true]:border-border-form-active",
25
+ "uy:hover:bg-surface-neutral-hover uy:active:bg-surface-neutral-pressed uy:active:border-border-form-active uy:data-[pressed=true]:not-group-data-[open=true]:bg-surface-neutral-pressed uy:data-[pressed=true]:not-group-data-[open=true]:border-border-form-active uy:group-data-[open=true]:border-border-form-active",
26
26
  "uy:focus-visible:outline-2 uy:focus-visible:outline-utility-focus-ring uy:focus-visible:outline-offset-3"
27
27
  ]
28
28
  },
@@ -60,7 +60,7 @@ const z = b({
60
60
  }
61
61
  ]
62
62
  }), A = b({
63
- base: "uy:overflow-auto uy:shadow-300 uy:border uy:border-solid uy:border-border-neutral uy:bg-surface-neutral uy:rounded-md uy:sm:rounded-75",
63
+ base: "uy:w-[356px] uy:overflow-auto uy:shadow-300 uy:border uy:border-solid uy:border-border-neutral uy:bg-surface-neutral uy:rounded-md uy:sm:rounded-75",
64
64
  variants: {
65
65
  isEntering: {
66
66
  true: "uy:animate-in uy:fade-in uy:data-[placement-bottom]:slide-in-from-top-1 uy:data-[placement-top]:slide-in-from-bottom-1 uy:duration-200 uy:ease-out"
@@ -78,8 +78,8 @@ const z = b({
78
78
  isDisabled: o,
79
79
  isReadOnly: u,
80
80
  onClearButtonPress: c,
81
- onBlur: s,
82
- onFocus: n,
81
+ onBlur: n,
82
+ onFocus: s,
83
83
  onChange: m,
84
84
  onOpenChange: p,
85
85
  id: g,
@@ -96,7 +96,7 @@ const z = b({
96
96
  }), l = (r) => {
97
97
  m?.(r);
98
98
  }, N = (r) => {
99
- p?.(r), r ? n?.() : s?.();
99
+ p?.(r), r ? s?.() : n?.();
100
100
  }, O = (r) => e.isDateUnavailable ? e.isDateUnavailable(r) : !1, W = () => {
101
101
  c?.();
102
102
  };
@@ -114,8 +114,8 @@ const z = b({
114
114
  isReadOnly: !!u,
115
115
  isDisabled: !!o,
116
116
  onChange: l,
117
- onFocus: n,
118
- onBlur: s,
117
+ onFocus: s,
118
+ onBlur: n,
119
119
  onOpenChange: N,
120
120
  isDateUnavailable: O,
121
121
  "aria-label": h,
@@ -3,16 +3,16 @@ import { ReactElement } from 'react';
3
3
  import { DateFieldProps } from 'react-aria-components/DateField';
4
4
  export declare const dateSegment: import('tailwind-variants').TVReturnType<{
5
5
  isPlaceholder: {
6
- true: string;
6
+ true: string[];
7
7
  false: string;
8
8
  };
9
9
  isLiteral: {
10
10
  true: string;
11
11
  false: string;
12
12
  };
13
- }, undefined, "uy:group uy:box-content uy:rounded-25 uy:px-25 uy:text-end uy:tabular-nums! uy:outline-none uy:typography-body uy:focus:bg-surface-form-active uy:focus:rounded-25 uy:focus:text-content-inverted uy:data-[disabled]:text-content-form-disabled", {
13
+ }, undefined, string[], {
14
14
  isPlaceholder: {
15
- true: string;
15
+ true: string[];
16
16
  false: string;
17
17
  };
18
18
  isLiteral: {
@@ -21,14 +21,14 @@ export declare const dateSegment: import('tailwind-variants').TVReturnType<{
21
21
  };
22
22
  }, undefined, import('tailwind-variants').TVReturnType<{
23
23
  isPlaceholder: {
24
- true: string;
24
+ true: string[];
25
25
  false: string;
26
26
  };
27
27
  isLiteral: {
28
28
  true: string;
29
29
  false: string;
30
30
  };
31
- }, undefined, "uy:group uy:box-content uy:rounded-25 uy:px-25 uy:text-end uy:tabular-nums! uy:outline-none uy:typography-body uy:focus:bg-surface-form-active uy:focus:rounded-25 uy:focus:text-content-inverted uy:data-[disabled]:text-content-form-disabled", unknown, unknown, undefined>>;
31
+ }, undefined, string[], unknown, unknown, undefined>>;
32
32
  export declare const dateInput: import('tailwind-variants').TVReturnType<{
33
33
  isInvalid: {
34
34
  true: {
@@ -1,16 +1,29 @@
1
1
  import { jsxs as l, jsx as e } from "react/jsx-runtime";
2
- import { useContext as b } from "react";
2
+ import { useContext as p } from "react";
3
3
  import { uyTv as i } from "@payfit/unity-themes";
4
- import { DatePickerStateContext as x, DateInput as g, DateSegment as v } from "react-aria-components/DatePicker";
5
- import { useIntl as I } from "react-intl";
6
- import { CircularIconButton as h } from "../../icon-button/CircularIconButton.js";
4
+ import { DatePickerStateContext as x, DateInput as g, DateSegment as h } from "react-aria-components/DatePicker";
5
+ import { useIntl as v } from "react-intl";
6
+ import { CircularIconButton as I } from "../../icon-button/CircularIconButton.js";
7
7
  import { Icon as D } from "../../icon/Icon.js";
8
8
  import { Spinner as C } from "../../spinner/Spinner.js";
9
- const M = i({
10
- base: "uy:group uy:box-content uy:rounded-25 uy:px-25 uy:text-end uy:tabular-nums! uy:outline-none uy:typography-body uy:focus:bg-surface-form-active uy:focus:rounded-25 uy:focus:text-content-inverted uy:data-[disabled]:text-content-form-disabled",
9
+ const w = i({
10
+ base: [
11
+ //theme: common
12
+ "uy:group uy:box-content uy:rounded-25 uy:px-25 uy:text-end uy:tabular-nums! uy:outline-none uy:typography-body uy:focus:bg-surface-form-active uy:focus:rounded-25",
13
+ "uy:data-[disabled]:text-content-form-disabled",
14
+ //theme: legacy
15
+ "uy:theme-legacy:focus:text-content-inverted",
16
+ //theme: rebrand
17
+ "uy:theme-rebrand:focus:text-content-form-active"
18
+ ],
11
19
  variants: {
12
20
  isPlaceholder: {
13
- true: "uy:text-content-neutral-lowest",
21
+ true: [
22
+ //theme: legacy
23
+ "uy:theme-legacy:text-content-neutral-lowest",
24
+ // theme: rebrand
25
+ "uy:theme-rebrand:text-content-neutral-lowest-enabled"
26
+ ],
14
27
  false: "uy:text-content-form-enabled"
15
28
  },
16
29
  isLiteral: {
@@ -18,7 +31,7 @@ const M = i({
18
31
  false: ""
19
32
  }
20
33
  }
21
- }), N = i({
34
+ }), M = i({
22
35
  slots: {
23
36
  base: "uy:flex uy:gap-50 uy:flex-grow uy:py-125 uy:sm:py-100 uy:px-150 uy:rounded-100 uy:sm:rounded-75",
24
37
  input: "uy:flex uy:gap-25 uy:w-fit uy:grow",
@@ -54,24 +67,24 @@ const M = i({
54
67
  }
55
68
  ]
56
69
  });
57
- function P({
70
+ function N({
58
71
  isLoading: r,
59
72
  isInvalid: o,
60
73
  isReadOnly: n,
61
74
  isDisabled: s,
62
75
  onClearButtonPress: d
63
76
  }) {
64
- const t = I(), u = b(x), { dateValue: c } = u, { base: y, input: m, state: f } = N({
77
+ const t = v(), u = p(x), { dateValue: c } = u, { base: m, input: y, state: f } = M({
65
78
  isInvalid: !!o,
66
79
  isReadOnly: !!n,
67
80
  isDisabled: !!s
68
- }), p = c && !r && !n && !s;
69
- return /* @__PURE__ */ l("div", { className: y(), children: [
70
- /* @__PURE__ */ e(g, { className: m(), children: (a) => /* @__PURE__ */ e(
71
- v,
81
+ }), b = c && !r && !n && !s;
82
+ return /* @__PURE__ */ l("div", { className: m(), children: [
83
+ /* @__PURE__ */ e(g, { className: y(), children: (a) => /* @__PURE__ */ e(
84
+ h,
72
85
  {
73
86
  segment: a,
74
- className: M({
87
+ className: w({
75
88
  isPlaceholder: a.isPlaceholder,
76
89
  isLiteral: a.type === "literal"
77
90
  })
@@ -100,8 +113,8 @@ function P({
100
113
  })
101
114
  }
102
115
  ),
103
- p && /* @__PURE__ */ e(
104
- h,
116
+ b && /* @__PURE__ */ e(
117
+ I,
105
118
  {
106
119
  slot: null,
107
120
  title: t.formatMessage({
@@ -117,9 +130,9 @@ function P({
117
130
  ] })
118
131
  ] });
119
132
  }
120
- P.displayName = "DateInput";
133
+ N.displayName = "DateInput";
121
134
  export {
122
- P as DateInput,
123
- N as dateInput,
124
- M as dateSegment
135
+ N as DateInput,
136
+ M as dateInput,
137
+ w as dateSegment
125
138
  };
@@ -1,6 +1,6 @@
1
- import { jsx as t, jsxs as d } from "react/jsx-runtime";
1
+ import { jsx as t, jsxs as r } from "react/jsx-runtime";
2
2
  import { useState as L } from "react";
3
- import { today as M, getLocalTimeZone as h, isToday as R } from "@internationalized/date";
3
+ import { today as M, getLocalTimeZone as m, isToday as R } from "@internationalized/date";
4
4
  import { uyTv as S } from "@payfit/unity-themes";
5
5
  import { Heading as Y } from "react-aria-components/Heading";
6
6
  import { RangeCalendar as B, CalendarGrid as O, CalendarGridHeader as T, CalendarHeaderCell as j, CalendarGridBody as k, CalendarCell as F } from "react-aria-components/RangeCalendar";
@@ -8,36 +8,47 @@ import { useIntl as P } from "react-intl";
8
8
  import { calendarBase as W } from "../date-calendar/DateCalendar.variants.js";
9
9
  import { useMonthsList as Z } from "../date-calendar/hooks/useMonthsList.js";
10
10
  import { useYearsList as $ } from "../date-calendar/hooks/useYearsList.js";
11
- import { DateSegmentSelect as m } from "../date-calendar/parts/DateSegmentSelect.js";
11
+ import { DateSegmentSelect as h } from "../date-calendar/parts/DateSegmentSelect.js";
12
12
  import { IconButton as b } from "../icon-button/IconButton.js";
13
13
  const q = S({
14
14
  extend: W,
15
15
  slots: {
16
16
  calendarGrid: [
17
+ //theme: common
17
18
  "uy:border-spacing-y-25 uy:border-spacing-x-0",
18
19
  // All <td> with selected cells need relative positioning for pseudo-elements
19
20
  "uy:[&_td:has(>[data-selected])]:relative",
20
21
  // Middle cells: full background on the <td>
21
- "uy:[&_td:has(>[data-selected])]:bg-surface-primary-lowest",
22
- // Start td: no bg, use :before for right-half band
23
- "uy:[&_td:has(>[data-selection-start])]:bg-transparent",
24
- "uy:[&_td:has(>[data-selection-start]:not([data-selection-end]))]:before:content-[''] uy:[&_td:has(>[data-selection-start]:not([data-selection-end]))]:before:absolute uy:[&_td:has(>[data-selection-start]:not([data-selection-end]))]:before:top-0 uy:[&_td:has(>[data-selection-start]:not([data-selection-end]))]:before:right-0 uy:[&_td:has(>[data-selection-start]:not([data-selection-end]))]:before:w-1/2 uy:[&_td:has(>[data-selection-start]:not([data-selection-end]))]:before:h-full uy:[&_td:has(>[data-selection-start]:not([data-selection-end]))]:before:bg-surface-primary-lowest",
25
- // End td: no bg, use :before for left-half band
22
+ "uy:[&_td:has(>[data-selection-start])]:bg-transparent uy:[&_td:has(>[data-selection-start]:not([data-selection-end]))]:before:content-[''] uy:[&_td:has(>[data-selection-start]:not([data-selection-end]))]:before:absolute uy:[&_td:has(>[data-selection-start]:not([data-selection-end]))]:before:top-0 uy:[&_td:has(>[data-selection-start]:not([data-selection-end]))]:before:right-0 uy:[&_td:has(>[data-selection-start]:not([data-selection-end]))]:before:w-1/2 uy:[&_td:has(>[data-selection-start]:not([data-selection-end]))]:before:h-full uy:theme-legacy:[&_td:has(>[data-selection-start]:not([data-selection-end]))]:before:bg-surface-primary-lowest",
26
23
  "uy:[&_td:has(>[data-selection-end])]:bg-transparent",
27
- "uy:[&_td:has(>[data-selection-end]:not([data-selection-start]))]:before:content-[''] uy:[&_td:has(>[data-selection-end]:not([data-selection-start]))]:before:absolute uy:[&_td:has(>[data-selection-end]:not([data-selection-start]))]:before:top-0 uy:[&_td:has(>[data-selection-end]:not([data-selection-start]))]:before:left-0 uy:[&_td:has(>[data-selection-end]:not([data-selection-start]))]:before:w-1/2 uy:[&_td:has(>[data-selection-end]:not([data-selection-start]))]:before:h-full uy:[&_td:has(>[data-selection-end]:not([data-selection-start]))]:before:bg-surface-primary-lowest",
28
24
  // Single day range — no band at all
29
- "uy:[&_td:has(>[data-selection-start][data-selection-end])]:bg-transparent"
25
+ "uy:[&_td:has(>[data-selection-start][data-selection-end])]:bg-transparent",
26
+ //theme: legacy
27
+ "uy:theme-legacy:[&_td:has(>[data-selected])]:bg-surface-primary-lowest",
28
+ //theme: rebrand
29
+ // Start td: no bg, use :before for right-half band
30
+ "uy:theme-rebrand:[&_td:has(>[data-selected])]:bg-surface-form-selected",
31
+ "uy:theme-rebrand:[&_td:has(>[data-selection-start]:not([data-selection-end]))]:before:bg-surface-form-selected",
32
+ // End td: no bg, use :before for left-half band
33
+ "uy:[&_td:has(>[data-selection-end]:not([data-selection-start]))]:before:content-[''] uy:[&_td:has(>[data-selection-end]:not([data-selection-start]))]:before:absolute uy:[&_td:has(>[data-selection-end]:not([data-selection-start]))]:before:top-0 uy:[&_td:has(>[data-selection-end]:not([data-selection-start]))]:before:left-0 uy:[&_td:has(>[data-selection-end]:not([data-selection-start]))]:before:w-1/2 uy:[&_td:has(>[data-selection-end]:not([data-selection-start]))]:before:h-full uy:theme-legacy:[&_td:has(>[data-selection-end]:not([data-selection-start]))]:before:bg-surface-primary-lowest uy:theme-rebrand:[&_td:has(>[data-selection-end]:not([data-selection-start]))]:before:bg-surface-form-selected"
30
34
  ],
31
35
  calendarHeaderCell: "uy:text-center",
32
36
  calendarCell: [
33
- // selected cells (range middle) — bg is handled by the <td>, text stays default
37
+ //theme: common
34
38
  "uy:data-[selected]:rounded-none",
35
- // selection start — blue circle
36
- "uy:data-[selection-start]:bg-surface-form-active uy:data-[selection-start]:text-content-inverted uy:data-[selection-start]:rounded-circle",
37
- // selection end — blue circle
38
- "uy:data-[selection-end]:bg-surface-form-active uy:data-[selection-end]:text-content-inverted uy:data-[selection-end]:rounded-circle",
39
- // today dot turns white when on start/end cells
40
- "uy:data-[today]:data-[selection-start]:after:bg-content-inverted uy:data-[today]:data-[selection-end]:after:bg-content-inverted"
39
+ "uy:data-[selection-start]:bg-surface-form-active uy:data-[selection-start]:rounded-circle",
40
+ "uy:data-[selection-end]:bg-surface-form-active",
41
+ "uy:data-[selection-end]:rounded-circle",
42
+ //theme: legacy
43
+ "uy:theme-legacy:data-[selection-start]:text-content-inverted",
44
+ "uy:theme-legacy:data-[selection-end]:text-content-inverted",
45
+ "uy:theme-legacy:data-[today]:data-[selection-start]:after:bg-content-inverted",
46
+ "uy:theme-legacy:data-[today]:data-[selection-end]:after:bg-content-inverted",
47
+ //theme: rebrand
48
+ "uy:theme-rebrand:data-[selection-start]:text-content-form-active",
49
+ "uy:theme-rebrand:data-[selection-end]:text-content-form-active",
50
+ "uy:theme-rebrand:data-[today]:data-[selection-start]:after:bg-border-form-active",
51
+ "uy:theme-rebrand:data-[today]:data-[selection-end]:after:bg-border-form-active"
41
52
  ]
42
53
  },
43
54
  variants: {
@@ -50,28 +61,32 @@ const q = S({
50
61
  isInteractive: {
51
62
  true: {
52
63
  calendarCell: [
53
- // selected middle cells (not start/end): hover shows a circle with primary-lowest-hover
54
- "uy:data-[selected]:not-data-[selection-start]:not-data-[selection-end]:hover:bg-surface-primary-lowest-hover uy:data-[selected]:not-data-[selection-start]:not-data-[selection-end]:hover:rounded-circle"
64
+ //theme: common
65
+ "uy:data-[selected]:not-data-[selection-start]:not-data-[selection-end]:hover:rounded-circle",
66
+ //theme: legacy
67
+ "uy:theme-legacy:data-[selected]:not-data-[selection-start]:not-data-[selection-end]:hover:bg-surface-primary-lowest-hover",
68
+ //theme: rebrand
69
+ "uy:theme-rebrand:data-[selected]:not-data-[selection-start]:not-data-[selection-end]:hover:bg-surface-neutral-hover"
55
70
  ]
56
71
  }
57
72
  }
58
73
  }
59
74
  });
60
75
  function z({
61
- value: i,
62
- defaultValue: c,
76
+ value: c,
77
+ defaultValue: i,
63
78
  minValue: n,
64
- maxValue: s,
79
+ maxValue: d,
65
80
  onChange: f,
66
81
  onFocusChange: g,
67
82
  ...a
68
83
  }) {
69
- const u = P(), p = M(h()), v = Z(), C = $({
84
+ const u = P(), p = M(m()), v = Z(), C = $({
70
85
  startYear: n?.year,
71
- endYear: s?.year
72
- }), [r, o] = L(() => {
73
- const e = i?.start ?? c?.start ?? p;
74
- return n && e.compare(n) < 0 ? n : s && e.compare(s) > 0 ? s : e;
86
+ endYear: d?.year
87
+ }), [s, o] = L(() => {
88
+ const e = c?.start ?? i?.start ?? p;
89
+ return n && e.compare(n) < 0 ? n : d && e.compare(d) > 0 ? d : e;
75
90
  }), _ = (e) => {
76
91
  o(
77
92
  (l) => l.set({ month: parseInt(e, 10) })
@@ -97,18 +112,18 @@ function z({
97
112
  {
98
113
  ...a,
99
114
  minValue: n,
100
- maxValue: s,
101
- value: i,
102
- defaultValue: c,
115
+ maxValue: d,
116
+ value: c,
117
+ defaultValue: i,
103
118
  onChange: f,
104
- focusedValue: r,
119
+ focusedValue: s,
105
120
  onFocusChange: (e) => {
106
121
  o(e), g?.(e);
107
122
  },
108
- children: /* @__PURE__ */ d("div", { className: x(), children: [
109
- /* @__PURE__ */ d("header", { className: w(), children: [
123
+ children: /* @__PURE__ */ r("div", { className: x(), children: [
124
+ /* @__PURE__ */ r("header", { className: w(), children: [
110
125
  /* @__PURE__ */ t(Y, { className: "uy:sr-only" }),
111
- /* @__PURE__ */ d(
126
+ /* @__PURE__ */ r(
112
127
  "div",
113
128
  {
114
129
  className: y({
@@ -116,21 +131,21 @@ function z({
116
131
  }),
117
132
  children: [
118
133
  /* @__PURE__ */ t(
119
- m,
134
+ h,
120
135
  {
121
136
  type: "month",
122
137
  items: v,
123
- value: r.month.toString(),
138
+ value: s.month.toString(),
124
139
  onChange: _,
125
140
  isDisabled: a.isDisabled
126
141
  }
127
142
  ),
128
143
  /* @__PURE__ */ t(
129
- m,
144
+ h,
130
145
  {
131
146
  type: "year",
132
147
  items: C,
133
- value: r.year.toString(),
148
+ value: s.year.toString(),
134
149
  onChange: D,
135
150
  isDisabled: a.isDisabled
136
151
  }
@@ -138,7 +153,7 @@ function z({
138
153
  ]
139
154
  }
140
155
  ),
141
- /* @__PURE__ */ d(
156
+ /* @__PURE__ */ r(
142
157
  "div",
143
158
  {
144
159
  className: y({
@@ -150,12 +165,12 @@ function z({
150
165
  {
151
166
  slot: "previous",
152
167
  icon: "CaretLeftOutlined",
153
- color: "neutral",
168
+ color: "primary",
154
169
  label: u.formatMessage({
155
170
  id: "unity:component:common:previous",
156
171
  defaultMessage: "Previous"
157
172
  }),
158
- variant: "ghost",
173
+ variant: "secondary",
159
174
  isDisabled: a.isDisabled
160
175
  }
161
176
  ),
@@ -164,12 +179,12 @@ function z({
164
179
  {
165
180
  slot: "next",
166
181
  icon: "CaretRightOutlined",
167
- color: "neutral",
182
+ color: "primary",
168
183
  label: u.formatMessage({
169
184
  id: "unity:component:common:next",
170
185
  defaultMessage: "Next"
171
186
  }),
172
- variant: "ghost",
187
+ variant: "secondary",
173
188
  isDisabled: a.isDisabled
174
189
  }
175
190
  )
@@ -177,13 +192,13 @@ function z({
177
192
  }
178
193
  )
179
194
  ] }),
180
- /* @__PURE__ */ d(O, { className: G(), weekdayStyle: "short", children: [
195
+ /* @__PURE__ */ r(O, { className: G(), weekdayStyle: "short", children: [
181
196
  /* @__PURE__ */ t(T, { children: (e) => /* @__PURE__ */ t(j, { className: H(), children: e }) }),
182
197
  /* @__PURE__ */ t(k, { children: (e) => /* @__PURE__ */ t(
183
198
  F,
184
199
  {
185
200
  date: e,
186
- "data-today": R(e, h()) ? !0 : void 0,
201
+ "data-today": R(e, m()) ? !0 : void 0,
187
202
  className: I()
188
203
  }
189
204
  ) })
@@ -11,7 +11,7 @@ const z = b({
11
11
  slots: {
12
12
  base: [
13
13
  "uy:group uy:flex uy:h-5.5 uy:sm:h-500 uy:border uy:border-solid uy:rounded-100 uy:sm:rounded-75",
14
- "uy:active:border-border-form-active uy:data-[focus-visible=true]:border-border-form-active"
14
+ "uy:active:border-border-form-active uy:data-[focus-visible=true]:border-border-form-active uy:data-[open=true]:border-border-form-active"
15
15
  ],
16
16
  inputWrapper: [
17
17
  "uy:flex uy:grow uy:rounded-100 uy:sm:rounded-75 uy:outline-none",
@@ -22,7 +22,7 @@ const z = b({
22
22
  ],
23
23
  suffix: [
24
24
  "uy:flex-grow-0 uy:content-center uy:p-125 uy:border-l uy:border-solid uy:rounded-r-100 uy:sm:rounded-r-75 uy:text-content-neutral-low",
25
- "uy:hover:bg-surface-neutral-hover uy:active:bg-surface-neutral-pressed uy:active:border-border-form-active uy:data-[pressed=true]:bg-surface-neutral-pressed uy:data-[pressed=true]:not-group-data-[open=true]:border-border-form-active",
25
+ "uy:hover:bg-surface-neutral-hover uy:active:bg-surface-neutral-pressed uy:active:border-border-form-active uy:data-[pressed=true]:not-group-data-[open=true]:bg-surface-neutral-pressed uy:data-[pressed=true]:not-group-data-[open=true]:border-border-form-active uy:group-data-[open=true]:border-border-form-active",
26
26
  "uy:focus-visible:outline-2 uy:focus-visible:outline-utility-focus-ring uy:focus-visible:outline-offset-3"
27
27
  ]
28
28
  },
@@ -60,7 +60,7 @@ const z = b({
60
60
  }
61
61
  ]
62
62
  }), A = b({
63
- base: "uy:overflow-auto uy:shadow-300 uy:border uy:border-solid uy:border-border-neutral uy:bg-surface-neutral uy:rounded-md uy:sm:rounded-75",
63
+ base: "uy:w-[356px] uy:overflow-auto uy:shadow-300 uy:border uy:border-solid uy:border-border-neutral uy:bg-surface-neutral uy:rounded-md uy:sm:rounded-75",
64
64
  variants: {
65
65
  isEntering: {
66
66
  true: "uy:animate-in uy:fade-in uy:data-[placement-bottom]:slide-in-from-top-1 uy:data-[placement-top]:slide-out-to-bottom-1 uy:duration-200 uy:ease-out"
@@ -81,8 +81,8 @@ const z = b({
81
81
  onBlur: d,
82
82
  onFocus: s,
83
83
  onChange: m,
84
- onOpenChange: g,
85
- id: p,
84
+ onOpenChange: p,
85
+ id: g,
86
86
  "aria-label": h,
87
87
  "aria-labelledby": v,
88
88
  "aria-describedby": x,
@@ -96,7 +96,7 @@ const z = b({
96
96
  }), l = (r) => {
97
97
  m?.(r);
98
98
  }, V = (r) => {
99
- g?.(r), r ? s?.() : d?.();
99
+ p?.(r), r ? s?.() : d?.();
100
100
  }, N = (r) => e.isDateUnavailable ? e.isDateUnavailable(r) : !1, O = () => {
101
101
  c?.();
102
102
  };
@@ -124,7 +124,7 @@ const z = b({
124
124
  "aria-describedby": x,
125
125
  "aria-details": D,
126
126
  children: [
127
- /* @__PURE__ */ f(B, { className: R(), id: p, children: [
127
+ /* @__PURE__ */ f(B, { className: R(), id: g, children: [
128
128
  /* @__PURE__ */ a(
129
129
  q,
130
130
  {
@@ -1,8 +1,8 @@
1
- import { jsxs as o, jsx as e } from "react/jsx-runtime";
1
+ import { jsxs as n, jsx as e } from "react/jsx-runtime";
2
2
  import { useContext as x } from "react";
3
3
  import { uyTv as N } from "@payfit/unity-themes";
4
- import { DateRangePickerStateContext as I, DateInput as m, DateSegment as u } from "react-aria-components/DateRangePicker";
5
- import { useIntl as b } from "react-intl";
4
+ import { DateRangePickerStateContext as b, DateInput as m, DateSegment as u } from "react-aria-components/DateRangePicker";
5
+ import { useIntl as I } from "react-intl";
6
6
  import { dateInput as v, dateSegment as d } from "../../date-picker/parts/DateInput.js";
7
7
  import { CircularIconButton as C } from "../../icon-button/CircularIconButton.js";
8
8
  import { Icon as P } from "../../icon/Icon.js";
@@ -12,24 +12,29 @@ const M = N({
12
12
  variants: {
13
13
  isDisabled: {
14
14
  true: "uy:text-content-form-disabled",
15
- false: "uy:text-content-neutral-lowest-enabled"
15
+ false: [
16
+ //theme: legacy
17
+ "uy:theme-legacy:text-content-neutral-lowest-enabled",
18
+ //theme: rebrand
19
+ "uy:theme-rebrand:text-content-neutral-lowest"
20
+ ]
16
21
  }
17
22
  }
18
23
  });
19
24
  function S({
20
- isLoading: n,
25
+ isLoading: o,
21
26
  isInvalid: r,
22
27
  isReadOnly: s,
23
28
  isDisabled: a,
24
29
  onClearButtonPress: p
25
30
  }) {
26
- const l = b(), i = x(I), { value: c } = i, { base: f, input: y, state: g } = v({
31
+ const l = I(), i = x(b), { value: c } = i, { base: f, input: y, state: h } = v({
27
32
  isInvalid: !!r,
28
33
  isReadOnly: !!s,
29
34
  isDisabled: !!a
30
- }), h = c?.start && c?.end && !n && !s && !a;
31
- return /* @__PURE__ */ o("div", { className: f(), children: [
32
- /* @__PURE__ */ o("div", { className: y(), children: [
35
+ }), g = c?.start && c?.end && !o && !s && !a;
36
+ return /* @__PURE__ */ n("div", { className: f(), children: [
37
+ /* @__PURE__ */ n("div", { className: y(), children: [
33
38
  /* @__PURE__ */ e(m, { slot: "start", className: "uy:flex uy:gap-25", children: (t) => /* @__PURE__ */ e(
34
39
  u,
35
40
  {
@@ -52,8 +57,8 @@ function S({
52
57
  }
53
58
  ) })
54
59
  ] }),
55
- /* @__PURE__ */ o("div", { className: g(), children: [
56
- n && /* @__PURE__ */ e(
60
+ /* @__PURE__ */ n("div", { className: h(), children: [
61
+ o && /* @__PURE__ */ e(
57
62
  D,
58
63
  {
59
64
  color: "inherit",
@@ -75,7 +80,7 @@ function S({
75
80
  })
76
81
  }
77
82
  ),
78
- h && /* @__PURE__ */ e(
83
+ g && /* @__PURE__ */ e(
79
84
  C,
80
85
  {
81
86
  slot: null,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payfit/unity-components",
3
- "version": "2.29.8",
3
+ "version": "2.29.9",
4
4
  "module": "./dist/esm/index.js",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -42,7 +42,7 @@
42
42
  "@hookform/devtools": "4.4.0",
43
43
  "@hookform/resolvers": "5.2.1",
44
44
  "@internationalized/date": "3.12.1",
45
- "@payfit/unity-illustrations": "2.29.8",
45
+ "@payfit/unity-illustrations": "2.29.9",
46
46
  "@radix-ui/react-avatar": "1.1.11",
47
47
  "@radix-ui/react-slot": "1.2.4",
48
48
  "@react-aria/interactions": "3.28.0",
@@ -74,8 +74,8 @@
74
74
  },
75
75
  "peerDependencies": {
76
76
  "@hookform/devtools": "^4",
77
- "@payfit/unity-icons": "2.29.8",
78
- "@payfit/unity-themes": "2.29.8",
77
+ "@payfit/unity-icons": "2.29.9",
78
+ "@payfit/unity-themes": "2.29.9",
79
79
  "@storybook/react-vite": "^10.3.2",
80
80
  "@tanstack/react-query": "^5",
81
81
  "@tanstack/react-router": "^1.131",
@@ -89,9 +89,9 @@
89
89
  "@figma/code-connect": "1.4.3",
90
90
  "@hookform/devtools": "4.4.0",
91
91
  "@internationalized/date": "3.12.1",
92
- "@payfit/unity-icons": "2.29.8",
93
- "@payfit/unity-illustrations": "2.29.8",
94
- "@payfit/unity-themes": "2.29.8",
92
+ "@payfit/unity-icons": "2.29.9",
93
+ "@payfit/unity-illustrations": "2.29.9",
94
+ "@payfit/unity-themes": "2.29.9",
95
95
  "@storybook/addon-a11y": "10.3.5",
96
96
  "@storybook/addon-designs": "11.1.3",
97
97
  "@storybook/addon-docs": "10.3.5",