@bigbinary/neeto-atoms 1.0.138-beta1 → 1.0.139-beta1

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 (100) hide show
  1. package/dist/{DataTable-DKYkrFfk.js → DataTable-8hVysQPv.js} +8 -4
  2. package/dist/DataTable-8hVysQPv.js.map +1 -0
  3. package/dist/{DatePicker-BYic3Ykm.js → DatePicker-Bvuu3hlt.js} +7 -13
  4. package/dist/DatePicker-Bvuu3hlt.js.map +1 -0
  5. package/dist/{HelpIcon-CB6wsVSF.js → HelpIcon-TkvMVF4n.js} +2 -1
  6. package/dist/HelpIcon-TkvMVF4n.js.map +1 -0
  7. package/dist/{Label-BUf6CzV9.js → Label-DrjtHwMk.js} +2 -2
  8. package/dist/{Label-BUf6CzV9.js.map → Label-DrjtHwMk.js.map} +1 -1
  9. package/dist/{Select-XgpTYRqO.js → Select-B6Yn7BFi.js} +4 -2
  10. package/dist/Select-B6Yn7BFi.js.map +1 -0
  11. package/dist/cjs/{DataTable-BXNU34g-.js → DataTable-DAoZP73Q.js} +8 -4
  12. package/dist/cjs/DataTable-DAoZP73Q.js.map +1 -0
  13. package/dist/cjs/{DatePicker-DD0RIq4-.js → DatePicker-BPfM0Sbs.js} +7 -13
  14. package/dist/cjs/DatePicker-BPfM0Sbs.js.map +1 -0
  15. package/dist/cjs/{HelpIcon-fsWWgStQ.js → HelpIcon-CULBhXS7.js} +2 -1
  16. package/dist/cjs/HelpIcon-CULBhXS7.js.map +1 -0
  17. package/dist/cjs/{Label-Dfq_eZzp.js → Label-D_FsFUcl.js} +2 -2
  18. package/dist/cjs/{Label-Dfq_eZzp.js.map → Label-D_FsFUcl.js.map} +1 -1
  19. package/dist/cjs/{Select-CdugYSdp.js → Select-0JzGuzUW.js} +4 -2
  20. package/dist/cjs/Select-0JzGuzUW.js.map +1 -0
  21. package/dist/cjs/components/Checkbox.js +1 -1
  22. package/dist/cjs/components/DataTable.js +1 -1
  23. package/dist/cjs/components/DatePicker.js +2 -2
  24. package/dist/cjs/components/DropdownMenu.js +3 -3
  25. package/dist/cjs/components/DropdownMenu.js.map +1 -1
  26. package/dist/cjs/components/Input.js +1 -1
  27. package/dist/cjs/components/Label.js +2 -2
  28. package/dist/cjs/components/MultiEmailInput.js +1 -1
  29. package/dist/cjs/components/RadioGroup.js +1 -1
  30. package/dist/cjs/components/Select.js +2 -2
  31. package/dist/cjs/components/Slider.js +1 -1
  32. package/dist/cjs/components/Switch.js +1 -1
  33. package/dist/cjs/components/Textarea.js +1 -1
  34. package/dist/cjs/components/TimePicker.js +1 -1
  35. package/dist/cjs/components/TreeSelect.js +1 -1
  36. package/dist/cjs/components/index.js +5 -5
  37. package/dist/cjs/formik/BlockNavigation.js +40 -8
  38. package/dist/cjs/formik/BlockNavigation.js.map +1 -1
  39. package/dist/cjs/formik/Checkbox.js +1 -1
  40. package/dist/cjs/formik/Form.js +2 -2
  41. package/dist/cjs/formik/Form.js.map +1 -1
  42. package/dist/cjs/formik/Input.js +1 -1
  43. package/dist/cjs/formik/MultiEmailInput.js +1 -1
  44. package/dist/cjs/formik/RadioGroup.js +1 -1
  45. package/dist/cjs/formik/Select.js +2 -2
  46. package/dist/cjs/formik/Slider.js +1 -1
  47. package/dist/cjs/formik/Switch.js +1 -1
  48. package/dist/cjs/formik/Textarea.js +1 -1
  49. package/dist/cjs/formik/TreeSelect.js +1 -1
  50. package/dist/cjs/formik/index.js +2 -2
  51. package/dist/cjs/index.js +5 -5
  52. package/dist/cjs/primitives/Field.js +1 -1
  53. package/dist/cjs/primitives/index.js +1 -1
  54. package/dist/components/Checkbox.js +1 -1
  55. package/dist/components/DataTable/components/SelectionCheckbox.d.ts +2 -1
  56. package/dist/components/DataTable.js +1 -1
  57. package/dist/components/DatePicker/types.d.ts +2 -0
  58. package/dist/components/DatePicker.js +2 -2
  59. package/dist/components/DropdownMenu.js +3 -3
  60. package/dist/components/DropdownMenu.js.map +1 -1
  61. package/dist/components/Input.js +1 -1
  62. package/dist/components/Label.js +2 -2
  63. package/dist/components/MultiEmailInput.js +1 -1
  64. package/dist/components/RadioGroup.js +1 -1
  65. package/dist/components/Select.js +2 -2
  66. package/dist/components/Slider.js +1 -1
  67. package/dist/components/Switch.js +1 -1
  68. package/dist/components/Textarea.js +1 -1
  69. package/dist/components/TimePicker.js +1 -1
  70. package/dist/components/TreeSelect.js +1 -1
  71. package/dist/components/index.js +5 -5
  72. package/dist/formik/BlockNavigation/BlockNavigationAlert.d.ts +10 -3
  73. package/dist/formik/BlockNavigation/index.d.ts +2 -2
  74. package/dist/formik/BlockNavigation.js +40 -8
  75. package/dist/formik/BlockNavigation.js.map +1 -1
  76. package/dist/formik/Checkbox.js +1 -1
  77. package/dist/formik/Form.js +2 -2
  78. package/dist/formik/Form.js.map +1 -1
  79. package/dist/formik/Input.js +1 -1
  80. package/dist/formik/MultiEmailInput.js +1 -1
  81. package/dist/formik/RadioGroup.js +1 -1
  82. package/dist/formik/Select.js +2 -2
  83. package/dist/formik/Slider.js +1 -1
  84. package/dist/formik/Switch.js +1 -1
  85. package/dist/formik/Textarea.js +1 -1
  86. package/dist/formik/TreeSelect.js +1 -1
  87. package/dist/formik/index.js +2 -2
  88. package/dist/index.js +5 -5
  89. package/dist/primitives/Field.js +1 -1
  90. package/dist/primitives/index.js +1 -1
  91. package/dist/shared/HelpIcon.d.ts +2 -0
  92. package/package.json +1 -1
  93. package/dist/DataTable-DKYkrFfk.js.map +0 -1
  94. package/dist/DatePicker-BYic3Ykm.js.map +0 -1
  95. package/dist/HelpIcon-CB6wsVSF.js.map +0 -1
  96. package/dist/Select-XgpTYRqO.js.map +0 -1
  97. package/dist/cjs/DataTable-BXNU34g-.js.map +0 -1
  98. package/dist/cjs/DatePicker-DD0RIq4-.js.map +0 -1
  99. package/dist/cjs/HelpIcon-fsWWgStQ.js.map +0 -1
  100. package/dist/cjs/Select-CdugYSdp.js.map +0 -1
@@ -64,11 +64,6 @@ const SIZE_CONFIG = {
64
64
  };
65
65
 
66
66
  pureDayjs__default.default.extend(customParseFormat__default.default);
67
- const DATE_ONLY_FORMAT = "YYYY-MM-DD";
68
- const parseDateOnly = (value) => {
69
- const parsed = pureDayjs__default.default(value, DATE_ONLY_FORMAT, true);
70
- return parsed.isValid() ? parsed.toDate() : null;
71
- };
72
67
  const toBrowserLocalDate = (date) => {
73
68
  const d = utils.dayjs(date);
74
69
  return new Date(
@@ -87,8 +82,6 @@ const toNativeDate = (value) => {
87
82
  return toBrowserLocalDate(value.toDate());
88
83
  }
89
84
  if (typeof value === "string") {
90
- const dateOnly = parseDateOnly(value);
91
- if (dateOnly) return dateOnly;
92
85
  const parsed = new Date(value);
93
86
  if (!isNaN(parsed.getTime())) return toBrowserLocalDate(parsed);
94
87
  }
@@ -125,7 +118,7 @@ const parseDate = (str, formatStr) => {
125
118
  const fallbackFormats = [
126
119
  "DD/MM/YYYY",
127
120
  "MM/DD/YYYY",
128
- DATE_ONLY_FORMAT,
121
+ "YYYY-MM-DD",
129
122
  "DD-MM-YYYY",
130
123
  "DD/MM/YYYY HH:mm:ss",
131
124
  "DD/MM/YYYY HH:mm"
@@ -207,8 +200,8 @@ const parseGridcellDay = (target) => {
207
200
  const cell = el?.closest('[role="gridcell"][data-day]');
208
201
  const dayAttr = cell?.getAttribute("data-day");
209
202
  if (!dayAttr) return null;
210
- const dateOnly = parseDateOnly(dayAttr);
211
- if (dateOnly) return dateOnly;
203
+ const match = /^(\d{4})-(\d{2})-(\d{2})/.exec(dayAttr);
204
+ if (match) return new Date(+match[1], +match[2] - 1, +match[3]);
212
205
  const parsed = new Date(dayAttr);
213
206
  return Number.isNaN(parsed.getTime()) ? null : parsed;
214
207
  };
@@ -732,7 +725,8 @@ const DatePicker = React.forwardRef(
732
725
  align = "start",
733
726
  trigger,
734
727
  weekStartsOn = 0,
735
- dataTestId
728
+ dataTestId,
729
+ "data-testid": inputDataTestId
736
730
  }, ref) => {
737
731
  const generatedId = React.useId();
738
732
  const errorId = `error_${generatedId}`;
@@ -1174,7 +1168,7 @@ const DatePicker = React.forwardRef(
1174
1168
  iconSizeClass: sizeConfig.icon,
1175
1169
  label,
1176
1170
  ariaDescribedBy,
1177
- inputTestId: dataTestId || label ? `${testIdPrefix}-input` : "picker-input",
1171
+ inputTestId: inputDataTestId ?? (dataTestId || label ? `${testIdPrefix}-input` : "picker-input"),
1178
1172
  placeholder: placeholder ?? defaultPlaceholder,
1179
1173
  inputText,
1180
1174
  allowClear,
@@ -1337,4 +1331,4 @@ const DatePicker = React.forwardRef(
1337
1331
  DatePicker.displayName = "DatePicker";
1338
1332
 
1339
1333
  exports.DatePicker = DatePicker;
1340
- //# sourceMappingURL=DatePicker-DD0RIq4-.js.map
1334
+ //# sourceMappingURL=DatePicker-BPfM0Sbs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatePicker-BPfM0Sbs.js","sources":["../../node_modules/lucide-react/dist/esm/icons/calendar.js","../../src/components/DatePicker/constants.ts","../../src/components/DatePicker/utils.ts","../../src/components/DatePicker/TimezoneSelect.tsx","../../src/components/DatePicker/DatePickerFooter.tsx","../../src/components/DatePicker/DatePickerField.tsx","../../src/components/DatePicker/DatePickerTrigger.tsx","../../src/components/DatePicker/MonthPicker.tsx","../../src/components/DatePicker/RangeCalendar.tsx","../../src/components/DatePicker/useRangePicker.ts","../../src/components/DatePicker/YearPicker.tsx","../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.577.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M8 2v4\", key: \"1cmpym\" }],\n [\"path\", { d: \"M16 2v4\", key: \"4m81vk\" }],\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"4\", rx: \"2\", key: \"1hopcy\" }],\n [\"path\", { d: \"M3 10h18\", key: \"8toen8\" }]\n];\nconst Calendar = createLucideIcon(\"calendar\", __iconNode);\n\nexport { __iconNode, Calendar as default };\n//# sourceMappingURL=calendar.js.map\n","import type { TimeValue } from \"../TimePicker/types\";\n\nexport const DEFAULT_DATE_FORMAT = \"dd/MM/yyyy\";\nexport const DEFAULT_TIME_FORMAT = \"HH:mm:ss\";\n\nexport const INITIAL_TIME_VALUE: TimeValue = {\n hours: 0,\n minutes: 0,\n seconds: 0,\n};\n\nexport const SIZE_CONFIG = {\n small: {\n trigger: \"h-8 md:h-7\",\n input: \"text-base md:text-xs\",\n icon: \"size-3.5\",\n },\n medium: {\n trigger: \"h-8\",\n input: \"text-base md:text-sm\",\n icon: \"size-4\",\n },\n large: {\n trigger: \"h-10\",\n input: \"text-base md:text-sm\",\n icon: \"size-5\",\n },\n} as const;\n","import pureDayjs from \"dayjs\";\nimport type { Dayjs } from \"dayjs\";\nimport customParseFormat from \"dayjs/plugin/customParseFormat\";\nimport { dayjs } from \"@bigbinary/neeto-commons-frontend/utils\";\n\nimport type { TimeValue } from \"../TimePicker/types\";\n\npureDayjs.extend(customParseFormat);\n\n/**\n * Reverse timezone conversion: extract date/time values from a timezone-aware\n * dayjs and create a browser-local Date. This undoes applyTimezone so that\n * Calendar and input display the correct date after a controlled round-trip.\n */\nexport const toBrowserLocalDate = (date: Date): Date => {\n const d = dayjs(date);\n\n return new Date(\n d.year(),\n d.month(),\n d.date(),\n d.hour(),\n d.minute(),\n d.second()\n );\n};\n\nexport const toNativeDate = (value: unknown): Date | null => {\n if (value == null) return null;\n if (value instanceof Date) return value;\n\n if (typeof (value as { toDate?: () => Date }).toDate === \"function\") {\n return toBrowserLocalDate((value as { toDate: () => Date }).toDate());\n }\n\n if (typeof value === \"string\") {\n const parsed = new Date(value);\n if (!isNaN(parsed.getTime())) return toBrowserLocalDate(parsed);\n }\n\n return null;\n};\n\nexport const coerceDateValue = (\n value: unknown,\n type: \"date\" | \"range\"\n): Date | [Date | null, Date | null] | null => {\n if (value == null) return null;\n if (type === \"range\" && Array.isArray(value)) {\n return [toNativeDate(value[0]), toNativeDate(value[1])];\n }\n\n return toNativeDate(value);\n};\n\nexport const getInitialCalendarMonth = (\n value: unknown,\n defaultValue: unknown,\n type: \"date\" | \"range\"\n): Date => {\n const initial = coerceDateValue(value ?? defaultValue, type);\n if (initial instanceof Date) return initial;\n if (Array.isArray(initial) && initial[0] instanceof Date) return initial[0];\n\n return new Date();\n};\n\nconst normalizeToDayjsFormat = (fmt: string): string =>\n fmt\n .replace(/\\byyyy\\b/g, \"YYYY\")\n .replace(/\\byy\\b/g, \"YY\")\n .replace(/\\bdd\\b/g, \"DD\")\n .replace(/\\bd\\b/g, \"D\");\n\nconst normalizeToDateFnsFormat = (fmt: string): string =>\n fmt\n .replace(/YYYY/g, \"yyyy\")\n .replace(/YY/g, \"yy\")\n .replace(/DD/g, \"dd\")\n .replace(/\\bD\\b/g, \"d\");\n\n/**\n * Format a date for display using browser-local time.\n * Calendar and input always show browser-local dates.\n */\nexport const formatDate = (date: Date | null, formatStr: string): string => {\n if (!date) return \"\";\n\n try {\n return pureDayjs(date).format(normalizeToDayjsFormat(formatStr));\n } catch {\n return \"\";\n }\n};\n\n/**\n * Parse a date string using browser-local pureDayjs (not timezone-aware).\n * The user types in browser-local time; timezone conversion happens\n * later in commitValue via applyTimezone.\n */\nexport const parseDate = (str: string, formatStr: string): Date | null => {\n if (!str) return null;\n\n const dayjsFmt = normalizeToDayjsFormat(formatStr);\n const parsed = pureDayjs(str, dayjsFmt);\n if (parsed.isValid()) return parsed.toDate();\n\n const fallbackFormats = [\n \"DD/MM/YYYY\",\n \"MM/DD/YYYY\",\n \"YYYY-MM-DD\",\n \"DD-MM-YYYY\",\n \"DD/MM/YYYY HH:mm:ss\",\n \"DD/MM/YYYY HH:mm\",\n ];\n\n for (const fmt of fallbackFormats) {\n if (fmt === dayjsFmt) continue;\n\n const attempt = pureDayjs(str, fmt);\n if (attempt.isValid()) return attempt.toDate();\n }\n\n return null;\n};\n\nexport const applyTimeToDate = (date: Date, time: TimeValue): Date => {\n const result = new Date(date);\n result.setHours(time.hours, time.minutes, time.seconds ?? 0, 0);\n\n return result;\n};\n\n/**\n * Reinterpret a native Date's browser-local time values in the user's configured timezone.\n * Formats in browser-local time (pureDayjs), then reparses through timezone-aware dayjs.\n * Matches neetoUI's getTimezoneAppliedDateTime behavior.\n */\nexport const applyTimezone = (date: Date): Date => {\n const dateStr = pureDayjs(date).format(\"YYYY-MM-DD HH:mm:ss\");\n\n return dayjs(dateStr).toDate();\n};\n\nexport const toUserTzDayjs = (date: Date): Dayjs =>\n dayjs(pureDayjs(date).format(\"YYYY-MM-DD HH:mm:ss\"));\n\nexport const toDayjs = (date: Date): Dayjs => dayjs(date);\n\nexport const getDisplayFormat = (\n dateFormat: string,\n timeFormat: string,\n showTime: boolean\n): string => {\n const fmt = showTime ? `${dateFormat} ${timeFormat}` : dateFormat;\n\n return normalizeToDateFnsFormat(fmt);\n};\n\nexport const getDatePlaceholder = (\n dateFormat: string,\n timeFormat: string,\n showTime: boolean,\n type: \"date\" | \"range\"\n): string => {\n const single = showTime\n ? `${dateFormat.toUpperCase()} ${timeFormat}`\n : dateFormat.toUpperCase();\n\n return type === \"range\" ? `${single} - ${single}` : single;\n};\n\nexport const isDatePartComplete = (\n part: string,\n maskEnabled: boolean,\n singleDateLen: number\n): boolean => (maskEnabled ? part.length >= singleDateLen : part.length > 0);\n\nexport const parseRangeText = (\n text: string,\n displayFormat: string,\n maskEnabled: boolean,\n singleDateLen: number\n): [Date, Date] | null => {\n const parts = text.split(\" - \");\n if (parts.length !== 2) return null;\n\n if (\n !isDatePartComplete(parts[0], maskEnabled, singleDateLen) ||\n !isDatePartComplete(parts[1], maskEnabled, singleDateLen)\n )\n return null;\n\n const from = parseDate(parts[0], displayFormat);\n const to = parseDate(parts[1], displayFormat);\n\n return from && to ? [from, to] : null;\n};\n\nexport const startOfWeek = (date: Date, weekStartsOn = 0): Date => {\n const d = new Date(date);\n const diff = (d.getDay() - weekStartsOn + 7) % 7;\n d.setDate(d.getDate() - diff);\n d.setHours(0, 0, 0, 0);\n\n return d;\n};\n\nexport const weekDaysFrom = (start: Date): Date[] =>\n Array.from({ length: 7 }, (_, i) => {\n const d = new Date(start);\n d.setDate(start.getDate() + i);\n\n return d;\n });\n\nexport const isMonthDisabled = (\n monthDate: Date,\n minDate?: Date,\n maxDate?: Date\n): boolean => {\n const monthStart = new Date(monthDate.getFullYear(), monthDate.getMonth(), 1);\n const monthEnd = new Date(\n monthDate.getFullYear(),\n monthDate.getMonth() + 1,\n 0,\n 23,\n 59,\n 59,\n 999\n );\n if (maxDate && monthStart > maxDate) return true;\n if (minDate && monthEnd < minDate) return true;\n\n return false;\n};\n\nexport const isYearDisabled = (\n yearDate: Date,\n minDate?: Date,\n maxDate?: Date\n): boolean => {\n const yearStart = new Date(yearDate.getFullYear(), 0, 1);\n const yearEnd = new Date(yearDate.getFullYear(), 11, 31, 23, 59, 59, 999);\n if (maxDate && yearStart > maxDate) return true;\n if (minDate && yearEnd < minDate) return true;\n\n return false;\n};\n\nexport const buildMonth = (year: number, month: number): Date =>\n new Date(year, month, 1);\n\nexport const isSameMonth = (a: Date | null, b: Date): boolean =>\n !!a && a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth();\n\nexport const isSameDay = (a: Date | null, b: Date | null): boolean =>\n !!a &&\n !!b &&\n a.getFullYear() === b.getFullYear() &&\n a.getMonth() === b.getMonth() &&\n a.getDate() === b.getDate();\n\nexport const orderRange = (\n from: Date | null,\n to: Date | null\n): [Date | null, Date | null] => {\n if (from && to && from.getTime() > to.getTime()) return [to, from];\n\n return [from, to];\n};\n\nexport const parseGridcellDay = (target: EventTarget | null): Date | null => {\n const el = target as HTMLElement | null;\n const cell = el?.closest('[role=\"gridcell\"][data-day]');\n const dayAttr = cell?.getAttribute(\"data-day\");\n if (!dayAttr) return null;\n\n // react-day-picker emits \"YYYY-MM-DD\". `new Date(\"YYYY-MM-DD\")` parses as UTC\n // midnight, which shifts the date by the local TZ offset (e.g. shows as 05:30\n // AM in IST). Parse the parts directly to get local midnight.\n const match = /^(\\d{4})-(\\d{2})-(\\d{2})/.exec(dayAttr);\n if (match) return new Date(+match[1], +match[2] - 1, +match[3]);\n\n const parsed = new Date(dayAttr);\n\n return Number.isNaN(parsed.getTime()) ? null : parsed;\n};\n\nexport const computeRangePreview = ({\n pendingRange,\n committed,\n hoveredDate,\n rangeStep,\n}: {\n pendingRange: [Date | null, Date | null] | null;\n committed: [Date | null, Date | null] | null;\n hoveredDate: Date | null;\n rangeStep: \"from\" | \"to\";\n}): { from: Date | null; to: Date | null } => {\n let from = pendingRange ? pendingRange[0] : (committed?.[0] ?? null);\n let to = pendingRange ? pendingRange[1] : (committed?.[1] ?? null);\n\n if (hoveredDate) {\n if (rangeStep === \"from\" && !pendingRange?.[0]) {\n from = hoveredDate;\n if (to && hoveredDate.getTime() > to.getTime()) to = null;\n } else if (\n rangeStep === \"to\" &&\n !pendingRange?.[1] &&\n !isSameDay(from, hoveredDate)\n ) {\n to = hoveredDate;\n if (from && hoveredDate.getTime() < from.getTime()) from = null;\n }\n }\n\n [from, to] = orderRange(from, to);\n\n return { from, to };\n};\n\nexport const decadeStartFor = (year: number): number =>\n Math.floor(year / 10) * 10;\n","import React from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\n\ninterface TimezoneSelectProps {\n value?: string;\n onChange: (tz: string | undefined) => void;\n className?: string;\n}\n\nconst TIMEZONE_OPTIONS = [\n { label: \"Local\", value: \"\" },\n { label: \"UTC\", value: \"utc\" },\n] as const;\n\nconst TimezoneSelect: React.FC<TimezoneSelectProps> = ({\n value,\n onChange,\n className,\n}) => (\n <div className={cn(\"flex items-center gap-1.5 text-sm\", className)}>\n <span className=\"text-muted-foreground text-xs\">Timezone</span>\n <select\n data-testid=\"timezone-select\"\n value={value ?? \"\"}\n onChange={e => onChange(e.target.value || undefined)}\n className={cn(\n \"rounded-md border border-input bg-background px-2 py-0.5 text-xs\",\n \"focus:outline-none focus:ring-1 focus:ring-ring\"\n )}\n aria-label=\"Select timezone\"\n >\n {TIMEZONE_OPTIONS.map(opt => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n </div>\n);\n\nTimezoneSelect.displayName = \"TimezoneSelect\";\n\nexport { TimezoneSelect };\n","import React from \"react\";\n\nimport { Button } from \"src/primitives/Button\";\nimport { cn } from \"src/shadcn/lib/utils\";\n\nimport { TimezoneSelect } from \"./TimezoneSelect\";\n\ninterface DatePickerFooterProps {\n showTime?: boolean;\n needConfirm?: boolean;\n timezone?: string;\n onTimezoneChange?: (tz: string | undefined) => void;\n nowDisabled?: boolean;\n onNow: () => void;\n onOk: () => void;\n okLabel?: string;\n className?: string;\n}\n\nconst DatePickerFooter: React.FC<DatePickerFooterProps> = ({\n showTime,\n needConfirm,\n timezone,\n onTimezoneChange,\n nowDisabled,\n onNow,\n onOk,\n okLabel = \"OK\",\n className,\n}) => {\n const showOkButton = showTime || needConfirm;\n\n return (\n <div\n className={cn(\n \"flex items-center border-t border-border px-3 py-2\",\n className\n )}\n >\n <Button\n variant=\"ghost\"\n size=\"sm\"\n disabled={nowDisabled}\n onClick={onNow}\n className=\"text-xs\"\n >\n Now\n </Button>\n <div className=\"flex-1\" />\n {onTimezoneChange && (\n <TimezoneSelect\n value={timezone}\n onChange={onTimezoneChange}\n className=\"me-2\"\n />\n )}\n {showOkButton && (\n <Button size=\"sm\" onClick={onOk} className=\"text-xs\">\n {okLabel}\n </Button>\n )}\n </div>\n );\n};\n\nDatePickerFooter.displayName = \"DatePickerFooter\";\n\nexport { DatePickerFooter };\n","import React, { forwardRef } from \"react\";\n\nimport {\n Field,\n FieldLabel,\n FieldContent,\n FieldDescription,\n FieldError,\n} from \"src/primitives/Field\";\n\ninterface DatePickerFieldProps {\n disabled: boolean;\n error: React.ReactNode | undefined;\n className?: string;\n label?: React.ReactNode;\n required?: boolean;\n helpText?: React.ReactNode;\n labelProps?: Record<string, unknown>;\n errorId: string;\n helpTextId: string;\n errorTestId?: string;\n children: React.ReactNode;\n}\n\nexport const DatePickerField = forwardRef<HTMLDivElement, DatePickerFieldProps>(\n (\n {\n disabled,\n error,\n className,\n label,\n required,\n helpText,\n labelProps,\n errorId,\n helpTextId,\n errorTestId,\n children,\n },\n ref\n ) => (\n <Field\n ref={ref}\n data-disabled={disabled || undefined}\n data-invalid={!!error || undefined}\n className={className}\n >\n {label && (\n <FieldLabel\n {...(labelProps as React.ComponentProps<typeof FieldLabel>)}\n >\n {label}\n {required && (\n <span aria-hidden=\"true\" className=\"text-destructive\">\n *\n </span>\n )}\n </FieldLabel>\n )}\n <FieldContent>\n {children}\n {!!error && (\n <FieldError id={errorId} data-testid={errorTestId}>\n {error}\n </FieldError>\n )}\n {helpText && (\n <FieldDescription id={helpTextId}>{helpText}</FieldDescription>\n )}\n </FieldContent>\n </Field>\n )\n);\n\nDatePickerField.displayName = \"DatePickerField\";\n","import React, { forwardRef } from \"react\";\n\nimport { CalendarIcon, X } from \"lucide-react\";\n\nimport { PopoverAnchor } from \"src/primitives/Popover\";\nimport { cn } from \"src/shadcn/lib/utils\";\n\ninterface DatePickerTriggerProps {\n containerRef: React.RefObject<HTMLDivElement | null>;\n inputRef: React.RefObject<HTMLInputElement | null>;\n disabled: boolean;\n error: React.ReactNode | undefined;\n hasField: boolean;\n className?: string;\n triggerSizeClass: string;\n inputSizeClass: string;\n iconSizeClass: string;\n label?: React.ReactNode;\n ariaDescribedBy?: string;\n inputTestId?: string;\n placeholder: string;\n inputText: string;\n allowClear: boolean;\n timezone?: string;\n onInputChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n onInputKeyDown: (e: React.KeyboardEvent<HTMLInputElement>) => void;\n onInputFocus: () => void;\n onInputBlur: (e: React.FocusEvent<HTMLInputElement>) => void;\n onClear: (e: React.MouseEvent) => void;\n}\n\nexport const DatePickerTrigger = forwardRef<\n HTMLDivElement,\n DatePickerTriggerProps\n>(\n (\n {\n containerRef,\n inputRef,\n disabled,\n error,\n hasField,\n className,\n triggerSizeClass,\n inputSizeClass,\n iconSizeClass,\n label,\n ariaDescribedBy,\n inputTestId,\n placeholder,\n inputText,\n allowClear,\n timezone,\n onInputChange,\n onInputKeyDown,\n onInputFocus,\n onInputBlur,\n onClear,\n },\n _ref\n ) => (\n <PopoverAnchor asChild>\n <div\n ref={containerRef}\n className={cn(\n \"relative flex w-full cursor-text items-center gap-2 rounded-md border border-input bg-transparent pe-8 ps-3\",\n \"focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2\",\n disabled && \"cursor-not-allowed opacity-50\",\n !!error && \"border-destructive ring-destructive/20 ring-3\",\n triggerSizeClass,\n !hasField && className\n )}\n onClick={() => {\n if (disabled) return;\n\n inputRef.current?.focus();\n }}\n >\n <CalendarIcon\n className={cn(\"shrink-0 text-muted-foreground\", iconSizeClass)}\n />\n <input\n ref={inputRef}\n type=\"text\"\n disabled={disabled}\n aria-label={(label as string) || \"Pick a date\"}\n aria-describedby={ariaDescribedBy}\n aria-invalid={!!error || undefined}\n data-testid={inputTestId}\n placeholder={placeholder}\n value={inputText}\n onChange={onInputChange}\n onKeyDown={onInputKeyDown}\n onFocus={onInputFocus}\n onBlur={onInputBlur}\n className={cn(\n \"min-w-0 flex-1 bg-transparent outline-none placeholder:text-placeholder\",\n \"disabled:cursor-not-allowed\",\n inputSizeClass\n )}\n />\n {timezone && (\n <span className=\"shrink-0 rounded bg-muted px-1.5 py-0.5 text-xs text-muted-foreground\">\n {timezone.toUpperCase()}\n </span>\n )}\n {allowClear && (\n <button\n type=\"button\"\n onPointerDown={e => e.preventDefault()}\n onClick={onClear}\n className={cn(\n \"absolute inset-y-0 end-2 flex items-center text-muted-foreground hover:text-foreground focus:outline-none\",\n !(inputText && !disabled) && \"invisible\"\n )}\n aria-label=\"Clear date\"\n tabIndex={-1}\n >\n <X className={iconSizeClass} data-testid=\"date-time-clear-icon\" />\n </button>\n )}\n </div>\n </PopoverAnchor>\n )\n);\n\nDatePickerTrigger.displayName = \"DatePickerTrigger\";\n","import { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\";\n\nimport { Button } from \"src/primitives/Button\";\nimport { cn } from \"src/shadcn/lib/utils\";\n\nimport { buildMonth, isSameMonth } from \"./utils\";\n\ninterface MonthPickerProps {\n /** Currently selected date (used to highlight the active month). */\n value: Date | null;\n /** Year currently shown in the grid. */\n displayedYear: number;\n /** Callback when the user navigates to a different year. */\n onYearChange: (year: number) => void;\n /** Callback when a month is picked. */\n onSelect: (date: Date) => void;\n /** Predicate to disable an entire month (any day in it returning true disables the month). */\n isDisabled?: (date: Date) => boolean;\n /** Locale code for month-name formatting. */\n locale?: string;\n}\n\nconst MonthPicker = ({\n value,\n displayedYear,\n onYearChange,\n onSelect,\n isDisabled,\n locale,\n}: MonthPickerProps) => {\n const months = Array.from({ length: 12 }, (_, m) =>\n buildMonth(displayedYear, m)\n );\n const monthName = (date: Date) =>\n date.toLocaleString(locale, { month: \"short\" });\n\n return (\n <div className=\"bg-background flex w-[16rem] flex-col gap-3 p-2\">\n <div className=\"flex items-center justify-between\">\n <Button\n aria-label=\"Previous year\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={() => onYearChange(displayedYear - 1)}\n >\n <ChevronLeftIcon className=\"size-4 rtl:rotate-180\" />\n </Button>\n <span className=\"text-sm font-medium\">{displayedYear}</span>\n <Button\n aria-label=\"Next year\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={() => onYearChange(displayedYear + 1)}\n >\n <ChevronRightIcon className=\"size-4 rtl:rotate-180\" />\n </Button>\n </div>\n <div className=\"grid grid-cols-3 gap-2\">\n {months.map(monthDate => {\n const disabled = isDisabled?.(monthDate) ?? false;\n const selected = isSameMonth(value, monthDate);\n\n return (\n <button\n aria-pressed={selected}\n className={cn(\n \"rounded-md py-2 text-sm transition-colors\",\n \"hover:bg-muted disabled:cursor-not-allowed disabled:opacity-50\",\n selected &&\n \"bg-primary text-primary-foreground hover:bg-primary\"\n )}\n disabled={disabled}\n key={monthDate.getMonth()}\n type=\"button\"\n onClick={() => onSelect(monthDate)}\n >\n {monthName(monthDate)}\n </button>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport { MonthPicker };\n","import type React from \"react\";\nimport type { DateRange } from \"react-day-picker\";\n\nimport { Calendar } from \"src/primitives/Calendar\";\n\ninterface RangeCalendarProps {\n todayDate: Date;\n weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n month: Date;\n onMonthChange: (date: Date) => void;\n selected: DateRange | undefined;\n onSelect: (range: DateRange | undefined, triggerDate: Date) => void;\n disabled: (date: Date) => boolean;\n fromDate?: Date;\n toDate?: Date;\n onHoverIn: (e: React.MouseEvent<HTMLElement>) => void;\n onHoverOut: () => void;\n numberOfMonths?: number;\n}\n\nexport const RangeCalendar = ({\n todayDate,\n weekStartsOn,\n month,\n onMonthChange,\n selected,\n onSelect,\n disabled,\n fromDate,\n toDate,\n onHoverIn,\n onHoverOut,\n numberOfMonths = 2,\n}: RangeCalendarProps) => (\n <div onMouseOver={onHoverIn} onMouseLeave={onHoverOut}>\n <Calendar\n mode=\"range\"\n numberOfMonths={numberOfMonths}\n captionLayout=\"dropdown\"\n today={todayDate}\n weekStartsOn={weekStartsOn}\n className=\"[&_[data-outside][data-selected=true]]:!bg-transparent [&_[data-outside][data-selected=true]]:after:!bg-transparent [&_[data-outside]_button]:!bg-transparent [&_[data-outside]_button]:!text-muted-foreground\"\n month={month}\n onMonthChange={onMonthChange}\n selected={selected}\n onSelect={onSelect}\n disabled={disabled}\n {...(fromDate && { fromDate })}\n {...(toDate && { toDate })}\n />\n </div>\n);\n","import { useCallback, useMemo, useState } from \"react\";\nimport type { DateRange } from \"react-day-picker\";\n\nimport { computeRangePreview, orderRange, parseGridcellDay } from \"./utils\";\n\ntype RangeTuple = [Date | null, Date | null];\n\ninterface UseRangePickerOptions {\n currentValue: unknown;\n showTime: boolean;\n needConfirm: boolean;\n commitValue: (value: Date | [Date, Date] | null) => void;\n setOpen: (open: boolean) => void;\n}\n\nexport const useRangePicker = ({\n currentValue,\n showTime,\n needConfirm,\n commitValue,\n setOpen,\n}: UseRangePickerOptions) => {\n const [pendingRange, setPendingRange] = useState<RangeTuple | null>(null);\n const [rangeSelectionStep, setRangeSelectionStep] = useState<\"from\" | \"to\">(\n \"from\"\n );\n const [hoveredDate, setHoveredDate] = useState<Date | null>(null);\n\n const committed = (currentValue as RangeTuple | null) ?? null;\n\n const resetTransientState = useCallback(() => {\n setPendingRange(null);\n setRangeSelectionStep(\"from\");\n setHoveredDate(null);\n }, []);\n\n const handleRangeSelect = useCallback(\n (_range: { from?: Date; to?: Date } | undefined, triggerDate: Date) => {\n if (!triggerDate) return;\n\n if (showTime || needConfirm) {\n if (rangeSelectionStep === \"from\") {\n const existingTo = pendingRange?.[1] ?? committed?.[1] ?? null;\n const nextTo =\n existingTo && triggerDate <= existingTo ? existingTo : null;\n setPendingRange([triggerDate, nextTo]);\n } else {\n const existingFrom = pendingRange?.[0] ?? committed?.[0] ?? null;\n const nextFrom =\n existingFrom && triggerDate >= existingFrom ? existingFrom : null;\n setPendingRange([nextFrom, triggerDate]);\n }\n\n return;\n }\n\n if (rangeSelectionStep === \"from\" || !pendingRange?.[0]) {\n const existingTo = pendingRange?.[1] ?? committed?.[1] ?? null;\n const nextTo =\n existingTo && triggerDate <= existingTo ? existingTo : null;\n setPendingRange([triggerDate, nextTo]);\n setRangeSelectionStep(\"to\");\n\n return;\n }\n\n const [from, to] = orderRange(pendingRange[0], triggerDate) as [\n Date,\n Date,\n ];\n\n setRangeSelectionStep(\"from\");\n setPendingRange(null);\n\n commitValue([from, to]);\n setOpen(false);\n },\n [\n rangeSelectionStep,\n pendingRange,\n committed,\n showTime,\n needConfirm,\n commitValue,\n setOpen,\n ]\n );\n\n const handleHoverIn = useCallback(\n (e: React.MouseEvent<HTMLElement>) => {\n const parsed = parseGridcellDay(e.target);\n if (!parsed) return;\n\n if (hoveredDate && hoveredDate.getTime() === parsed.getTime()) return;\n\n setHoveredDate(parsed);\n },\n [hoveredDate]\n );\n\n const handleHoverOut = useCallback(() => setHoveredDate(null), []);\n\n const memoizedRangeSelected = useMemo<DateRange | undefined>(() => {\n const { from, to } = computeRangePreview({\n pendingRange,\n committed,\n hoveredDate,\n rangeStep: rangeSelectionStep,\n });\n\n if (!from && !to) return undefined;\n\n return { from: from ?? undefined, to: to ?? undefined };\n }, [pendingRange, committed, hoveredDate, rangeSelectionStep]);\n\n const getPreviewParts = useCallback(\n () =>\n computeRangePreview({\n pendingRange,\n committed,\n hoveredDate,\n rangeStep: rangeSelectionStep,\n }),\n [pendingRange, committed, hoveredDate, rangeSelectionStep]\n );\n\n return {\n pendingRange,\n rangeSelectionStep,\n setRangeSelectionStep,\n hoveredDate,\n handleRangeSelect,\n handleHoverIn,\n handleHoverOut,\n memoizedRangeSelected,\n getPreviewParts,\n resetTransientState,\n };\n};\n","import { ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\";\n\nimport { Button } from \"src/primitives/Button\";\nimport { cn } from \"src/shadcn/lib/utils\";\n\nimport { decadeStartFor } from \"./utils\";\n\ninterface YearPickerProps {\n /** Currently selected date (used to highlight the active year). */\n value: Date | null;\n /** A year inside the decade currently shown in the grid. */\n displayedYear: number;\n /** Callback when the user navigates to a different decade (receives any year inside it). */\n onYearChange: (year: number) => void;\n /** Callback when a year is picked. */\n onSelect: (date: Date) => void;\n /** Predicate to disable an entire year (e.g. when out of min/max range). */\n isDisabled?: (date: Date) => boolean;\n}\n\nconst YearPicker = ({\n value,\n displayedYear,\n onYearChange,\n onSelect,\n isDisabled,\n}: YearPickerProps) => {\n const decadeStart = decadeStartFor(displayedYear);\n const years = Array.from({ length: 12 }, (_, i) => decadeStart - 1 + i);\n const selectedYear = value?.getFullYear();\n\n return (\n <div className=\"bg-background flex w-[16rem] flex-col gap-3 p-2\">\n <div className=\"flex items-center justify-between\">\n <Button\n aria-label=\"Previous decade\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={() => onYearChange(decadeStart - 10)}\n >\n <ChevronLeftIcon className=\"size-4 rtl:rotate-180\" />\n </Button>\n <span className=\"text-sm font-medium\">\n {decadeStart}-{decadeStart + 9}\n </span>\n <Button\n aria-label=\"Next decade\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={() => onYearChange(decadeStart + 10)}\n >\n <ChevronRightIcon className=\"size-4 rtl:rotate-180\" />\n </Button>\n </div>\n <div className=\"grid grid-cols-3 gap-2\">\n {years.map(year => {\n const yearDate = new Date(year, 0, 1);\n const disabled = isDisabled?.(yearDate) ?? false;\n const selected = selectedYear === year;\n const outsideDecade = year < decadeStart || year > decadeStart + 9;\n\n return (\n <button\n aria-pressed={selected}\n className={cn(\n \"rounded-md py-2 text-sm transition-colors\",\n \"hover:bg-muted disabled:cursor-not-allowed disabled:opacity-50\",\n outsideDecade && \"text-muted-foreground\",\n selected &&\n \"bg-primary text-primary-foreground hover:bg-primary\"\n )}\n disabled={disabled}\n key={year}\n type=\"button\"\n onClick={() => onSelect(yearDate)}\n >\n {year}\n </button>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport { YearPicker };\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { Calendar } from \"src/primitives/Calendar\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"src/primitives/Popover\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { useControlledOpen } from \"src/hooks/useControlledOpen\";\nimport { useCursorRestore } from \"src/hooks/useCursorRestore\";\nimport { useOutsideClickClose } from \"src/hooks/useOutsideClickClose\";\n\nimport type { DatePickerProps } from \"./types\";\nimport {\n DEFAULT_DATE_FORMAT,\n DEFAULT_TIME_FORMAT,\n INITIAL_TIME_VALUE,\n SIZE_CONFIG,\n} from \"./constants\";\nimport {\n applyTimeToDate,\n toBrowserLocalDate,\n coerceDateValue,\n formatDate,\n getDatePlaceholder,\n getDisplayFormat,\n getInitialCalendarMonth,\n isDatePartComplete,\n isMonthDisabled,\n isYearDisabled,\n orderRange,\n parseDate,\n parseRangeText,\n startOfWeek,\n toNativeDate,\n toUserTzDayjs,\n weekDaysFrom,\n} from \"./utils\";\nimport {\n applyMask,\n buildMaskTemplate,\n buildRangeMaskTemplate,\n isFixedWidthFormat,\n} from \"src/utils/inputMask\";\nimport { buildTestIdPrefix } from \"src/utils/fieldIds\";\nimport { DatePickerFooter } from \"./DatePickerFooter\";\nimport { DatePickerField } from \"./DatePickerField\";\nimport { DatePickerTrigger } from \"./DatePickerTrigger\";\nimport { MonthPicker } from \"./MonthPicker\";\nimport { RangeCalendar } from \"./RangeCalendar\";\nimport { useRangePicker } from \"./useRangePicker\";\nimport { YearPicker } from \"./YearPicker\";\nimport { TimePickerPanel } from \"../TimePicker/TimePickerPanel\";\nimport { dateToTimeValue } from \"../TimePicker/utils\";\n\nconst DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(\n (\n {\n value,\n defaultValue,\n onChange,\n onBlur,\n type = \"date\",\n dateFormat = DEFAULT_DATE_FORMAT,\n timeFormat = DEFAULT_TIME_FORMAT,\n showTime = false,\n timePickerFormat,\n showSeconds = false,\n minDate,\n maxDate,\n disabledDate,\n placeholder,\n label,\n error,\n helpText,\n size = \"medium\",\n disabled = false,\n allowClear = true,\n required = false,\n timezone,\n onTimezoneChange,\n onOk,\n needConfirm = false,\n open: openProp,\n onOpenChange,\n className,\n labelProps,\n picker = \"date\",\n side = \"bottom\",\n align = \"start\",\n trigger,\n weekStartsOn = 0,\n dataTestId,\n \"data-testid\": inputDataTestId,\n },\n ref\n ) => {\n const generatedId = useId();\n const errorId = `error_${generatedId}`;\n const helpTextId = `helpText_${generatedId}`;\n const containerRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const cursorPosRef = useRef<number | null>(null);\n\n const popoverContentId = useRef(\n `datepicker-popover-${generatedId}`\n ).current;\n\n const { open, setOpen } = useControlledOpen(openProp, onOpenChange);\n\n const [internalValue, setInternalValue] = useState(\n coerceDateValue(defaultValue, type) ?? null\n );\n\n const [calendarMonth, setCalendarMonth] = useState(() =>\n getInitialCalendarMonth(value, defaultValue, type)\n );\n\n const [pendingDate, setPendingDate] = useState<Date | null>(null);\n const [pendingTime, setPendingTime] = useState(INITIAL_TIME_VALUE);\n const [pendingTimeTo, setPendingTimeTo] = useState(INITIAL_TIME_VALUE);\n\n const currentValue = useMemo(\n () =>\n value !== undefined ? coerceDateValue(value, type) : internalValue,\n [value, type, internalValue]\n );\n\n const normalizedMinDate = useMemo(\n () => toNativeDate(minDate) ?? undefined,\n [minDate]\n );\n const normalizedMaxDate = useMemo(\n () => toNativeDate(maxDate) ?? undefined,\n [maxDate]\n );\n\n const displayFormat = getDisplayFormat(dateFormat, timeFormat, showTime);\n const sizeConfig = SIZE_CONFIG[size];\n const maskEnabled = isFixedWidthFormat(displayFormat);\n const effectiveTimePickerFormat: \"12\" | \"24\" =\n timePickerFormat ?? (/\\ba\\b/i.test(timeFormat) ? \"12\" : \"24\");\n\n const defaultPlaceholder = getDatePlaceholder(\n dateFormat,\n timeFormat,\n showTime,\n type\n );\n\n const maskTemplate = useMemo(\n () =>\n maskEnabled\n ? type === \"range\"\n ? buildRangeMaskTemplate(displayFormat)\n : buildMaskTemplate(displayFormat)\n : null,\n [displayFormat, type, maskEnabled]\n );\n\n const singleDateLen = useMemo(\n () => buildMaskTemplate(displayFormat).pattern.length,\n [displayFormat]\n );\n\n const calendarDisabled = useCallback(\n (date: Date) => {\n if (disabledDate?.(date)) return true;\n if (\n normalizedMinDate &&\n date < new Date(new Date(normalizedMinDate).setHours(0, 0, 0, 0))\n )\n return true;\n if (\n normalizedMaxDate &&\n date > new Date(new Date(normalizedMaxDate).setHours(23, 59, 59, 999))\n )\n return true;\n\n return false;\n },\n [normalizedMinDate, normalizedMaxDate, disabledDate]\n );\n\n const getDisplayText = useCallback(() => {\n if (type !== \"range\") {\n return formatDate(currentValue as Date | null, displayFormat);\n }\n\n const rangeValue = currentValue as [Date | null, Date | null] | null;\n if (!rangeValue || (!rangeValue[0] && !rangeValue[1])) return \"\";\n\n const from = rangeValue[0]\n ? formatDate(rangeValue[0], displayFormat)\n : \"\";\n const to = rangeValue[1] ? formatDate(rangeValue[1], displayFormat) : \"\";\n\n return `${from} - ${to}`;\n }, [currentValue, displayFormat, type]);\n\n const [inputText, setInputText] = useState(() => getDisplayText());\n\n const commitValue = (date: Date | [Date, Date] | null) => {\n if (date === null) {\n setInternalValue(null);\n if (type === \"range\") {\n onChange?.([null, null], [\"\", \"\"]);\n } else {\n onChange?.(null, \"\");\n }\n setInputText(\"\");\n\n return;\n }\n\n const toSerializableDayjs = (d: Date) => {\n const userTzDayjs = toUserTzDayjs(d);\n if (showTime) return userTzDayjs;\n\n return userTzDayjs.hour(12).minute(0).second(0).millisecond(0);\n };\n\n if (Array.isArray(date)) {\n setInternalValue(date);\n const formatted: [string, string] = [\n formatDate(date[0], displayFormat),\n formatDate(date[1], displayFormat),\n ];\n onChange?.(\n [toSerializableDayjs(date[0]), toSerializableDayjs(date[1])],\n formatted\n );\n setInputText(`${formatted[0]} - ${formatted[1]}`);\n\n return;\n }\n\n setInternalValue(date);\n const formatted = formatDate(date, displayFormat);\n onChange?.(toSerializableDayjs(date), formatted);\n setInputText(formatted);\n };\n\n const {\n pendingRange,\n rangeSelectionStep,\n setRangeSelectionStep,\n handleRangeSelect,\n handleHoverIn,\n handleHoverOut,\n memoizedRangeSelected,\n getPreviewParts,\n resetTransientState,\n } = useRangePicker({\n currentValue,\n showTime,\n needConfirm,\n commitValue,\n setOpen,\n });\n\n useEffect(() => {\n if (type !== \"range\" || !open) return;\n\n const { from, to } = getPreviewParts();\n const fromWithTime =\n from && showTime ? applyTimeToDate(from, pendingTime) : from;\n const toWithTime =\n to && showTime ? applyTimeToDate(to, pendingTimeTo) : to;\n const fromText = fromWithTime\n ? formatDate(fromWithTime, displayFormat)\n : \"\";\n const toText = toWithTime ? formatDate(toWithTime, displayFormat) : \"\";\n\n setInputText(fromText || toText ? `${fromText} - ${toText}` : \"\");\n }, [\n type,\n open,\n getPreviewParts,\n displayFormat,\n showTime,\n pendingTime,\n pendingTimeTo,\n ]);\n\n const parseAndApplyRange = (text: string, cursorPos: number | null) => {\n const parts = text.split(\" - \");\n const separatorIdx = text.indexOf(\" - \");\n const editingTo =\n separatorIdx >= 0 && cursorPos !== null && cursorPos > separatorIdx + 2;\n\n if (editingTo) {\n const to = parseDate(parts[1] ?? \"\", displayFormat);\n if (to) setCalendarMonth(to);\n } else {\n if (!isDatePartComplete(parts[0] ?? \"\", maskEnabled, singleDateLen))\n return;\n\n const from = parseDate(parts[0] ?? \"\", displayFormat);\n if (from) setCalendarMonth(from);\n }\n\n const range = parseRangeText(\n text,\n displayFormat,\n maskEnabled,\n singleDateLen\n );\n\n if (range) commitValue(range);\n };\n\n const commitPendingOnClose = useCallback(() => {\n const hasOkButton = showTime || needConfirm;\n if (!hasOkButton || !pendingDate) {\n setInputText(getDisplayText());\n\n return;\n }\n\n const finalDate = showTime\n ? applyTimeToDate(pendingDate, pendingTime)\n : pendingDate;\n\n const currentSingle =\n type === \"date\" ? (currentValue as Date | null) : null;\n\n const isSame =\n currentSingle && finalDate.getTime() === currentSingle.getTime();\n\n if (isSame) {\n setInputText(getDisplayText());\n\n return;\n }\n\n commitValue(finalDate);\n }, [\n showTime,\n needConfirm,\n pendingDate,\n pendingTime,\n type,\n currentValue,\n getDisplayText,\n onChange,\n ]);\n\n const closePopover = useCallback(() => {\n if (type === \"range\" && pendingRange?.[0] && pendingRange?.[1]) {\n const [fromBase, toBase] = orderRange(\n pendingRange[0],\n pendingRange[1]\n ) as [Date, Date];\n const fromFinal = showTime\n ? applyTimeToDate(fromBase, pendingTime)\n : fromBase;\n const toFinal = showTime\n ? applyTimeToDate(toBase, pendingTimeTo)\n : toBase;\n commitValue([fromFinal, toFinal]);\n } else {\n commitPendingOnClose();\n }\n resetTransientState();\n setOpen(false);\n }, [\n commitPendingOnClose,\n setOpen,\n type,\n pendingRange,\n pendingTime,\n pendingTimeTo,\n showTime,\n resetTransientState,\n ]);\n\n useOutsideClickClose({\n enabled: open,\n containerRef,\n popoverElementId: popoverContentId,\n onClose: closePopover,\n });\n\n const openPopover = () => {\n setOpen(true);\n resetTransientState();\n\n if (type === \"range\") {\n const rangeVal = currentValue as [Date | null, Date | null] | null;\n const fromDate = rangeVal?.[0] ?? null;\n const toDate = rangeVal?.[1] ?? null;\n setPendingDate(null);\n setPendingTime(\n fromDate ? dateToTimeValue(fromDate) : INITIAL_TIME_VALUE\n );\n setPendingTimeTo(toDate ? dateToTimeValue(toDate) : INITIAL_TIME_VALUE);\n\n return;\n }\n\n const dateVal = currentValue as Date | null;\n if (!dateVal) {\n setPendingDate(null);\n setPendingTime(INITIAL_TIME_VALUE);\n\n return;\n }\n\n setCalendarMonth(dateVal);\n setPendingDate(dateVal);\n setPendingTime(dateToTimeValue(dateVal));\n };\n\n const handleDateSelect = (selected: Date | undefined) => {\n if (!selected) return;\n\n setCalendarMonth(selected);\n\n if (showTime || needConfirm) {\n setPendingDate(selected);\n\n return;\n }\n\n commitValue(selected);\n setOpen(false);\n };\n\n const handleNow = () => {\n const now = toBrowserLocalDate(new Date());\n\n if (calendarDisabled(now)) return;\n\n setCalendarMonth(now);\n\n if (type === \"range\") {\n handleRangeSelect(undefined, now);\n if (showTime) {\n const nowTime = dateToTimeValue(now);\n if (rangeSelectionStep === \"from\") setPendingTime(nowTime);\n else setPendingTimeTo(nowTime);\n }\n\n return;\n }\n\n if (showTime || needConfirm) {\n setPendingDate(now);\n setPendingTime(dateToTimeValue(now));\n\n return;\n }\n\n commitValue(now);\n setOpen(false);\n };\n\n const handleOk = () => {\n if (type === \"range\" && (showTime || needConfirm)) {\n const committedRange = currentValue as\n | [Date | null, Date | null]\n | null;\n const fromValue = pendingRange?.[0] ?? committedRange?.[0] ?? null;\n const toValue = pendingRange?.[1] ?? committedRange?.[1] ?? null;\n\n if (rangeSelectionStep === \"from\" && fromValue) {\n setRangeSelectionStep(\"to\");\n setCalendarMonth(\n new Date(fromValue.getFullYear(), fromValue.getMonth(), 1)\n );\n if (showTime && pendingRange?.[0]) {\n setPendingTimeTo(INITIAL_TIME_VALUE);\n }\n\n return;\n }\n\n if (rangeSelectionStep === \"to\" && fromValue && toValue) {\n const [fromBase, toBase] = orderRange(fromValue, toValue) as [\n Date,\n Date,\n ];\n const fromFinal = showTime\n ? applyTimeToDate(fromBase, pendingTime)\n : fromBase;\n const toFinal = showTime\n ? applyTimeToDate(toBase, pendingTimeTo)\n : toBase;\n commitValue([fromFinal, toFinal]);\n onOk?.([fromFinal, toFinal]);\n resetTransientState();\n setOpen(false);\n\n return;\n }\n\n return;\n }\n\n if (pendingDate) {\n const finalDate = showTime\n ? applyTimeToDate(pendingDate, pendingTime)\n : pendingDate;\n\n commitValue(finalDate);\n onOk?.(finalDate);\n }\n setOpen(false);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n commitValue(null);\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n let text = e.target.value;\n\n if (maskTemplate) {\n const masked = applyMask(\n text,\n maskTemplate,\n inputText,\n e.target.selectionStart\n );\n\n text = masked.text;\n cursorPosRef.current = masked.cursorPosition;\n }\n\n setInputText(text);\n\n if (type === \"range\") {\n parseAndApplyRange(text, e.target.selectionStart);\n\n return;\n }\n\n const isComplete = maskTemplate\n ? text.length >= maskTemplate.pattern.length\n : true;\n\n if (!isComplete) return;\n\n const parsed = parseDate(text, displayFormat);\n if (!parsed) return;\n\n setCalendarMonth(parsed);\n\n if (showTime || needConfirm) {\n setPendingDate(parsed);\n setPendingTime(dateToTimeValue(parsed));\n\n return;\n }\n\n commitValue(parsed);\n };\n\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Escape\") {\n setPendingDate(null);\n setPendingTime(INITIAL_TIME_VALUE);\n setInputText(getDisplayText());\n setOpen(false);\n\n return;\n }\n\n if (e.key !== \"Enter\") return;\n\n if (type === \"range\") {\n const range = parseRangeText(\n inputText,\n displayFormat,\n maskEnabled,\n singleDateLen\n );\n if (range) commitValue(range);\n } else {\n const parsed = parseDate(inputText, displayFormat);\n if (parsed) commitValue(parsed);\n }\n\n setOpen(false);\n };\n\n const handleInputBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n const next = e.relatedTarget as HTMLElement | null;\n if (next && containerRef.current?.contains(next)) return;\n\n const popoverEl = document.getElementById(popoverContentId);\n if (next && popoverEl?.contains(next)) return;\n\n onBlur?.(e);\n };\n\n useEffect(() => {\n if (!open) setInputText(getDisplayText());\n }, [getDisplayText, open]);\n\n useCursorRestore([{ inputRef, cursorRef: cursorPosRef }]);\n\n useEffect(() => {\n if (!open || type !== \"date\") return;\n\n const dateVal = currentValue as Date | null;\n if (dateVal instanceof Date) setCalendarMonth(dateVal);\n }, [open]);\n\n const hasField = !!(label || error || helpText);\n const testIdPrefix = buildTestIdPrefix(dataTestId, label);\n const showFooter = showTime || needConfirm || !!onTimezoneChange;\n const todayDate = toBrowserLocalDate(new Date());\n\n const handleGridPickerSelect = (date: Date) => {\n commitValue(date);\n setOpen(false);\n };\n\n const handleSingleDateSelectWithPicker = (selected: Date | undefined) => {\n if (!selected) return handleDateSelect(undefined);\n\n handleDateSelect(\n picker === \"week\" ? startOfWeek(selected, weekStartsOn) : selected\n );\n };\n\n const weekHighlightProps = (() => {\n if (picker !== \"week\" || type !== \"date\" || !currentValue) return {};\n\n const weekStart = startOfWeek(currentValue as Date, weekStartsOn);\n const weekDays = weekDaysFrom(weekStart);\n\n return {\n modifiers: {\n weekStart: [weekDays[0]],\n weekMiddle: weekDays.slice(1, 6),\n weekEnd: [weekDays[6]],\n },\n modifiersClassNames: {\n weekStart:\n \"!bg-primary !text-primary-foreground !rounded-e-none hover:!bg-primary\",\n weekMiddle:\n \"!bg-primary !text-primary-foreground !rounded-none hover:!bg-primary\",\n weekEnd:\n \"!bg-primary !text-primary-foreground !rounded-s-none hover:!bg-primary\",\n },\n };\n })();\n\n const weekRowHoverClassName =\n picker === \"week\"\n ? \"[&_button]:!transition-none [&:hover_button]:!bg-primary [&:hover_button]:!text-primary-foreground [&:hover_button]:!rounded-none [&:hover_button]:cursor-pointer\"\n : undefined;\n\n const ariaDescribedBy =\n [error ? errorId : null, helpText ? helpTextId : null]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n const calendarSelected = () => {\n if (showTime || needConfirm) {\n return pendingDate ?? (currentValue as Date | undefined) ?? undefined;\n }\n\n return (currentValue as Date | undefined) ?? undefined;\n };\n\n const handleTriggerOpenChange = (nextOpen: boolean) => {\n if (nextOpen === open) return;\n\n if (nextOpen) openPopover();\n else closePopover();\n };\n\n const triggerContent = (\n <Popover\n open={open}\n onOpenChange={trigger ? handleTriggerOpenChange : undefined}\n >\n {trigger ? (\n <PopoverTrigger asChild>{trigger}</PopoverTrigger>\n ) : (\n <DatePickerTrigger\n containerRef={containerRef}\n inputRef={inputRef}\n disabled={disabled}\n error={error}\n hasField={hasField}\n className={className}\n triggerSizeClass={sizeConfig.trigger}\n inputSizeClass={sizeConfig.input}\n iconSizeClass={sizeConfig.icon}\n label={label}\n ariaDescribedBy={ariaDescribedBy}\n inputTestId={\n inputDataTestId ??\n (dataTestId || label ? `${testIdPrefix}-input` : \"picker-input\")\n }\n placeholder={placeholder ?? defaultPlaceholder}\n inputText={inputText}\n allowClear={allowClear}\n timezone={timezone}\n onInputChange={handleInputChange}\n onInputKeyDown={handleInputKeyDown}\n onInputFocus={() => {\n if (!open) openPopover();\n }}\n onInputBlur={handleInputBlur}\n onClear={handleClear}\n />\n )}\n {open && (\n <PopoverContent\n id={popoverContentId}\n className=\"w-auto p-0\"\n align={align}\n side={side}\n onOpenAutoFocus={e => e.preventDefault()}\n onCloseAutoFocus={e => e.preventDefault()}\n onPointerDownOutside={e => e.preventDefault()}\n onInteractOutside={e => e.preventDefault()}\n >\n <div className={cn(\"flex\", showTime && \"flex-row\")}>\n {type === \"date\" && picker === \"month\" ? (\n <MonthPicker\n value={(currentValue as Date | null) ?? null}\n displayedYear={calendarMonth.getFullYear()}\n onYearChange={year =>\n setCalendarMonth(\n new Date(year, calendarMonth.getMonth(), 1)\n )\n }\n onSelect={handleGridPickerSelect}\n isDisabled={date =>\n isMonthDisabled(date, normalizedMinDate, normalizedMaxDate)\n }\n />\n ) : type === \"date\" && picker === \"year\" ? (\n <YearPicker\n value={(currentValue as Date | null) ?? null}\n displayedYear={calendarMonth.getFullYear()}\n onYearChange={year => setCalendarMonth(new Date(year, 0, 1))}\n onSelect={handleGridPickerSelect}\n isDisabled={date =>\n isYearDisabled(date, normalizedMinDate, normalizedMaxDate)\n }\n />\n ) : type === \"date\" ? (\n <Calendar\n mode=\"single\"\n captionLayout=\"dropdown\"\n today={todayDate}\n month={calendarMonth}\n onMonthChange={setCalendarMonth}\n selected={calendarSelected()}\n onSelect={handleSingleDateSelectWithPicker}\n disabled={calendarDisabled}\n weekStartsOn={weekStartsOn}\n classNames={\n weekRowHoverClassName\n ? { week: cn(\"mt-2 flex w-full\", weekRowHoverClassName) }\n : undefined\n }\n {...weekHighlightProps}\n {...(normalizedMinDate && { fromDate: normalizedMinDate })}\n {...(normalizedMaxDate && { toDate: normalizedMaxDate })}\n />\n ) : showTime ? (\n <>\n <RangeCalendar\n todayDate={todayDate}\n weekStartsOn={weekStartsOn}\n month={calendarMonth}\n onMonthChange={setCalendarMonth}\n selected={memoizedRangeSelected}\n onSelect={handleRangeSelect}\n disabled={calendarDisabled}\n fromDate={normalizedMinDate}\n toDate={normalizedMaxDate}\n onHoverIn={handleHoverIn}\n onHoverOut={handleHoverOut}\n numberOfMonths={1}\n />\n <div className=\"border-inline-start border-border pt-2\">\n <TimePickerPanel\n value={\n rangeSelectionStep === \"from\"\n ? pendingTime\n : pendingTimeTo\n }\n onChange={\n rangeSelectionStep === \"from\"\n ? setPendingTime\n : setPendingTimeTo\n }\n format={effectiveTimePickerFormat}\n showSeconds={showSeconds}\n disabled={disabled}\n />\n </div>\n </>\n ) : (\n <RangeCalendar\n todayDate={todayDate}\n weekStartsOn={weekStartsOn}\n month={calendarMonth}\n onMonthChange={setCalendarMonth}\n selected={memoizedRangeSelected}\n onSelect={handleRangeSelect}\n disabled={calendarDisabled}\n fromDate={normalizedMinDate}\n toDate={normalizedMaxDate}\n onHoverIn={handleHoverIn}\n onHoverOut={handleHoverOut}\n />\n )}\n {showTime && type !== \"range\" && (\n <div className=\"border-inline-start border-border\">\n <TimePickerPanel\n value={pendingTime}\n onChange={setPendingTime}\n format={effectiveTimePickerFormat}\n showSeconds={showSeconds}\n disabled={disabled}\n />\n </div>\n )}\n </div>\n {showFooter && (\n <DatePickerFooter\n showTime={showTime}\n needConfirm={needConfirm}\n timezone={timezone}\n onTimezoneChange={onTimezoneChange}\n nowDisabled={calendarDisabled(todayDate)}\n onNow={handleNow}\n onOk={handleOk}\n okLabel={\n type === \"range\" &&\n (showTime || needConfirm) &&\n rangeSelectionStep === \"from\"\n ? \"Next\"\n : \"OK\"\n }\n />\n )}\n </PopoverContent>\n )}\n </Popover>\n );\n\n if (!hasField) {\n return (\n <div ref={ref} className={className}>\n {triggerContent}\n </div>\n );\n }\n\n return (\n <DatePickerField\n ref={ref}\n disabled={disabled}\n error={error}\n className={className}\n label={label}\n required={required}\n helpText={helpText}\n labelProps={labelProps}\n errorId={errorId}\n helpTextId={helpTextId}\n errorTestId={`${testIdPrefix}-input-error`}\n >\n {triggerContent}\n </DatePickerField>\n );\n }\n);\n\nDatePicker.displayName = \"DatePicker\";\n\nexport { DatePicker };\n"],"names":["createLucideIcon","pureDayjs","customParseFormat","dayjs","cn","jsx","jsxs","Button","forwardRef","Field","FieldLabel","FieldContent","FieldError","FieldDescription","PopoverAnchor","CalendarIcon","X","ChevronLeftIcon","ChevronRightIcon","Calendar","useState","useCallback","useMemo","useId","useRef","useControlledOpen","isFixedWidthFormat","buildRangeMaskTemplate","buildMaskTemplate","formatted","useEffect","useOutsideClickClose","dateToTimeValue","applyMask","useCursorRestore","buildTestIdPrefix","Popover","PopoverTrigger","PopoverContent","Fragment","TimePickerPanel"],"mappings":"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","x_google_ignoreList":[0]}
@@ -40,6 +40,7 @@ const HelpIcon = (helpIconProps) => {
40
40
  helpIconProps.onClick && "cursor-pointer",
41
41
  helpIconProps.className
42
42
  ),
43
+ "data-testid": helpIconProps["data-testid"],
43
44
  onClick: helpIconProps.onClick,
44
45
  children: renderIcon.renderIcon(icon, "size-3.5")
45
46
  }
@@ -80,4 +81,4 @@ const HelpIcon = (helpIconProps) => {
80
81
  };
81
82
 
82
83
  exports.HelpIcon = HelpIcon;
83
- //# sourceMappingURL=HelpIcon-fsWWgStQ.js.map
84
+ //# sourceMappingURL=HelpIcon-CULBhXS7.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HelpIcon-CULBhXS7.js","sources":["../../node_modules/lucide-react/dist/esm/icons/circle-question-mark.js","../../src/shared/HelpIcon.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.577.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\", key: \"1u773s\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n];\nconst CircleQuestionMark = createLucideIcon(\"circle-question-mark\", __iconNode);\n\nexport { __iconNode, CircleQuestionMark as default };\n//# sourceMappingURL=circle-question-mark.js.map\n","import type React from \"react\";\n\nimport { CircleHelpIcon } from \"lucide-react\";\n\nimport { Button, type ButtonProps } from \"src/components/Button\";\nimport { Popover } from \"src/components/Popover\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"src/primitives/Tooltip\";\nimport { renderIcon, type IconProp } from \"src/shared/renderIcon\";\nimport { cn } from \"src/shadcn/lib/utils\";\n\nconst SIDE_MAP: Record<string, \"top\" | \"right\" | \"bottom\" | \"left\"> = {\n top: \"top\",\n bottom: \"bottom\",\n left: \"left\",\n right: \"right\",\n auto: \"top\",\n};\n\nexport interface HelpIconTooltipProps {\n /** Tooltip content. */\n content?: React.ReactNode;\n /** Tooltip position. */\n position?: string;\n}\n\nexport interface HelpIconPopoverProps {\n /** Popover title. */\n title?: React.ReactNode;\n /** Popover description. */\n description?: React.ReactNode;\n /** Props for an optional help link button inside the popover. */\n helpLinkProps?: ButtonProps;\n}\n\nexport interface HelpIconProps {\n /** Click handler on the help icon. */\n onClick?: () => void;\n /** Custom icon. Defaults to CircleHelpIcon. */\n icon?: IconProp;\n /** Show a tooltip on hover. */\n tooltipProps?: HelpIconTooltipProps;\n /** Show a popover on hover with title, description, and optional link. */\n popoverProps?: HelpIconPopoverProps;\n /** Additional class name for the help icon. */\n className?: string;\n /** `data-testid` for the help icon. */\n \"data-testid\"?: string;\n}\n\nexport const HelpIcon = (helpIconProps: HelpIconProps) => {\n const icon = helpIconProps.icon ?? CircleHelpIcon;\n\n const iconElement = (\n <span\n className={cn(\n \"inline-flex cursor-help text-muted-foreground transition-colors hover:text-foreground\",\n helpIconProps.onClick && \"cursor-pointer\",\n helpIconProps.className\n )}\n data-testid={helpIconProps[\"data-testid\"]}\n onClick={helpIconProps.onClick}\n >\n {renderIcon(icon, \"size-3.5\")}\n </span>\n );\n\n if (helpIconProps.popoverProps) {\n const { title, description, helpLinkProps } = helpIconProps.popoverProps;\n\n return (\n <Popover trigger={iconElement}>\n {title && (\n <Popover.Title data-testid=\"help-popover-title\">\n {title}\n </Popover.Title>\n )}\n {description && (\n <p\n className=\"text-sm text-muted-foreground\"\n data-testid=\"help-popover-description\"\n >\n {description}\n </p>\n )}\n {helpLinkProps && (\n <Button\n variant=\"link\"\n size=\"sm\"\n className=\"mt-1 h-auto self-start p-0\"\n data-testid=\"help-popover-link-button\"\n {...helpLinkProps}\n href={helpLinkProps.href}\n />\n )}\n </Popover>\n );\n }\n\n if (helpIconProps.tooltipProps?.content) {\n const side =\n SIDE_MAP[helpIconProps.tooltipProps.position ?? \"auto\"] ?? \"top\";\n\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>{iconElement}</TooltipTrigger>\n <TooltipContent side={side}>\n {helpIconProps.tooltipProps.content}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n }\n\n return iconElement;\n};\n"],"names":["createLucideIcon","CircleHelpIcon","jsx","cn","renderIcon","jsxs","Popover","Button","TooltipProvider","Tooltip","TooltipTrigger","TooltipContent"],"mappings":"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","x_google_ignoreList":[0]}
@@ -2,7 +2,7 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
- var HelpIcon = require('./HelpIcon-fsWWgStQ.js');
5
+ var HelpIcon = require('./HelpIcon-CULBhXS7.js');
6
6
  var primitives_Label = require('./primitives/Label.js');
7
7
  var utils = require('./utils-BhM0B89p.js');
8
8
 
@@ -16,4 +16,4 @@ const Label = React.forwardRef(
16
16
  Label.displayName = "Label";
17
17
 
18
18
  exports.Label = Label;
19
- //# sourceMappingURL=Label-Dfq_eZzp.js.map
19
+ //# sourceMappingURL=Label-D_FsFUcl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Label-Dfq_eZzp.js","sources":["../../src/components/Label/Label.tsx"],"sourcesContent":["import React, { forwardRef } from \"react\";\n\nimport { HelpIcon, type HelpIconProps } from \"src/shared/HelpIcon\";\nimport { Label as PrimitiveLabel } from \"src/primitives/Label\";\nimport { cn } from \"src/shadcn/lib/utils\";\n\nexport type { HelpIconProps };\n\nexport interface LabelProps extends React.ComponentProps<\n typeof PrimitiveLabel\n> {\n /** Shows a red asterisk after the label text. */\n required?: boolean;\n /** Props for the help icon (tooltip or popover mode). */\n helpIconProps?: HelpIconProps;\n /** Additional CSS class names. */\n className?: string;\n}\n\nconst Label = forwardRef<HTMLLabelElement, LabelProps>(\n ({ required, helpIconProps, className, children, ...otherProps }, ref) => (\n <PrimitiveLabel ref={ref} className={cn(className)} {...otherProps}>\n {children}\n {required && (\n <span aria-hidden=\"true\" className=\"text-destructive\">\n *\n </span>\n )}\n {helpIconProps && <HelpIcon {...helpIconProps} />}\n </PrimitiveLabel>\n )\n);\n\nLabel.displayName = \"Label\";\n\nexport { Label };\n"],"names":["forwardRef","jsxs","PrimitiveLabel","cn","jsx","HelpIcon"],"mappings":";;;;;;;;AAmBA,MAAM,KAAA,GAAQA,gBAAA;AAAA,EACZ,CAAC,EAAE,QAAA,EAAU,eAAe,SAAA,EAAW,QAAA,EAAU,GAAG,UAAA,EAAW,EAAG,GAAA,qBAChEC,eAAA,CAACC,0BAAe,GAAA,EAAU,SAAA,EAAWC,SAAG,SAAS,CAAA,EAAI,GAAG,UAAA,EACrD,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,IACA,4BACCC,cAAA,CAAC,MAAA,EAAA,EAAK,eAAY,MAAA,EAAO,SAAA,EAAU,oBAAmB,QAAA,EAAA,GAAA,EAEtD,CAAA;AAAA,IAED,aAAA,oBAAiBA,cAAA,CAACC,iBAAA,EAAA,EAAU,GAAG,aAAA,EAAe;AAAA,GAAA,EACjD;AAEJ;AAEA,KAAA,CAAM,WAAA,GAAc,OAAA;;;;"}
1
+ {"version":3,"file":"Label-D_FsFUcl.js","sources":["../../src/components/Label/Label.tsx"],"sourcesContent":["import React, { forwardRef } from \"react\";\n\nimport { HelpIcon, type HelpIconProps } from \"src/shared/HelpIcon\";\nimport { Label as PrimitiveLabel } from \"src/primitives/Label\";\nimport { cn } from \"src/shadcn/lib/utils\";\n\nexport type { HelpIconProps };\n\nexport interface LabelProps extends React.ComponentProps<\n typeof PrimitiveLabel\n> {\n /** Shows a red asterisk after the label text. */\n required?: boolean;\n /** Props for the help icon (tooltip or popover mode). */\n helpIconProps?: HelpIconProps;\n /** Additional CSS class names. */\n className?: string;\n}\n\nconst Label = forwardRef<HTMLLabelElement, LabelProps>(\n ({ required, helpIconProps, className, children, ...otherProps }, ref) => (\n <PrimitiveLabel ref={ref} className={cn(className)} {...otherProps}>\n {children}\n {required && (\n <span aria-hidden=\"true\" className=\"text-destructive\">\n *\n </span>\n )}\n {helpIconProps && <HelpIcon {...helpIconProps} />}\n </PrimitiveLabel>\n )\n);\n\nLabel.displayName = \"Label\";\n\nexport { Label };\n"],"names":["forwardRef","jsxs","PrimitiveLabel","cn","jsx","HelpIcon"],"mappings":";;;;;;;;AAmBA,MAAM,KAAA,GAAQA,gBAAA;AAAA,EACZ,CAAC,EAAE,QAAA,EAAU,eAAe,SAAA,EAAW,QAAA,EAAU,GAAG,UAAA,EAAW,EAAG,GAAA,qBAChEC,eAAA,CAACC,0BAAe,GAAA,EAAU,SAAA,EAAWC,SAAG,SAAS,CAAA,EAAI,GAAG,UAAA,EACrD,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,IACA,4BACCC,cAAA,CAAC,MAAA,EAAA,EAAK,eAAY,MAAA,EAAO,SAAA,EAAU,oBAAmB,QAAA,EAAA,GAAA,EAEtD,CAAA;AAAA,IAED,aAAA,oBAAiBA,cAAA,CAACC,iBAAA,EAAA,EAAU,GAAG,aAAA,EAAe;AAAA,GAAA,EACjD;AAEJ;AAEA,KAAA,CAAM,WAAA,GAAc,OAAA;;;;"}
@@ -7,6 +7,7 @@ var primitives_Combobox = require('./Combobox-B3KzI_J_.js');
7
7
  var SelectFieldWrapper = require('./SelectFieldWrapper-CIh_atln.js');
8
8
  var utils = require('./utils-BhM0B89p.js');
9
9
  var primitives_Spinner = require('./primitives/Spinner.js');
10
+ var hyphenize = require('./hyphenize-BTrVNVv3.js');
10
11
  var x = require('./x-Brw3FJst.js');
11
12
  var chevronDown = require('./chevron-down-CPsWSS51.js');
12
13
 
@@ -630,13 +631,14 @@ function OptionItem({
630
631
  testIdPrefix
631
632
  }) {
632
633
  const isCreateItem = isCreateValue(val);
634
+ const optionLabel = isCreateItem ? `Create "${val.slice(CREATE_PREFIX.length)}"` : flatOptionsMap.get(val)?.label ?? val;
633
635
  return /* @__PURE__ */ jsxRuntime.jsx(
634
636
  primitives_Combobox.ComboboxItem,
635
637
  {
636
638
  value: val,
637
639
  disabled: !isCreateItem && flatOptionsMap.get(val)?.disabled,
638
640
  className: isCreateItem ? "text-primary" : void 0,
639
- ...testIdPrefix ? { "data-testid": `${testIdPrefix}-select-option` } : {},
641
+ ...testIdPrefix ? { "data-testid": `${hyphenize.hyphenize(optionLabel)}-select-option` } : {},
640
642
  children: renderOption(val)
641
643
  },
642
644
  val
@@ -1358,4 +1360,4 @@ const Select = React.forwardRef((props, ref) => {
1358
1360
  Select.displayName = "Select";
1359
1361
 
1360
1362
  exports.Select = Select;
1361
- //# sourceMappingURL=Select-CdugYSdp.js.map
1363
+ //# sourceMappingURL=Select-0JzGuzUW.js.map