@bigbinary/neeto-atoms 1.1.3 → 1.1.4

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.
@@ -477,6 +477,7 @@ const TimePicker = forwardRef(
477
477
  ref: fromInputRef,
478
478
  type: "text",
479
479
  disabled,
480
+ "data-testid": `${testIdPrefix}-start-input`,
480
481
  "aria-label": label ? `${label} start time` : "Pick a start time",
481
482
  "aria-describedby": ariaDescribedBy,
482
483
  "aria-invalid": !!error || void 0,
@@ -503,6 +504,7 @@ const TimePicker = forwardRef(
503
504
  ref: toInputRef,
504
505
  type: "text",
505
506
  disabled,
507
+ "data-testid": `${testIdPrefix}-end-input`,
506
508
  "aria-label": label ? `${label} end time` : "Pick an end time",
507
509
  "aria-describedby": ariaDescribedBy,
508
510
  "aria-invalid": !!error || void 0,
@@ -521,6 +523,7 @@ const TimePicker = forwardRef(
521
523
  ref: fromInputRef,
522
524
  type: "text",
523
525
  disabled,
526
+ "data-testid": `${testIdPrefix}-input`,
524
527
  "aria-label": label || "Pick a time",
525
528
  "aria-describedby": ariaDescribedBy,
526
529
  "aria-invalid": !!error || void 0,
@@ -537,6 +540,7 @@ const TimePicker = forwardRef(
537
540
  "button",
538
541
  {
539
542
  type: "button",
543
+ "data-testid": `${testIdPrefix}-clear-button`,
540
544
  onPointerDown: (e) => e.preventDefault(),
541
545
  onClick: handleClear,
542
546
  className: cn(
@@ -635,4 +639,4 @@ const TimePicker = forwardRef(
635
639
  TimePicker.displayName = "TimePicker";
636
640
 
637
641
  export { TimePicker as T, TimePickerPanel as a };
638
- //# sourceMappingURL=TimePicker-CJ8K2zea.js.map
642
+ //# sourceMappingURL=TimePicker-DNeKmsBO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimePicker-DNeKmsBO.js","sources":["../src/components/TimePicker/constants.ts","../src/components/TimePicker/TimeColumn.tsx","../src/components/TimePicker/TimePickerPanel.tsx","../src/components/TimePicker/TimePicker.tsx"],"sourcesContent":["export const COLUMN_HEIGHT = 224;\nexport const ITEM_HEIGHT = 32;\nexport const PERIODS = [\"AM\", \"PM\"] as const;\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 React, { useEffect, useRef } from \"react\";\n\nimport { Button } from \"src/primitives/Button\";\nimport { ScrollArea } from \"src/primitives/ScrollArea\";\nimport { cn } from \"src/shadcn/lib/utils\";\n\nimport { COLUMN_HEIGHT, ITEM_HEIGHT } from \"./constants\";\nimport { padNumber } from \"./utils\";\n\ninterface TimeColumnProps {\n items: (number | string)[];\n selected: number | string;\n onSelect: (value: number | string) => void;\n disabled?: boolean;\n className?: string;\n padStart?: number;\n}\n\nconst TimeColumn: React.FC<TimeColumnProps> = ({\n items,\n selected,\n onSelect,\n disabled = false,\n className,\n padStart = 2,\n}) => {\n const selectedRef = useRef<HTMLButtonElement>(null);\n\n useEffect(() => {\n if (selectedRef.current) {\n selectedRef.current.scrollIntoView({\n block: \"center\",\n behavior: \"smooth\",\n });\n }\n }, [selected]);\n\n return (\n <ScrollArea\n className={cn(\"w-16\", className)}\n style={{ height: COLUMN_HEIGHT }}\n >\n <div\n className=\"flex flex-col items-center py-2\"\n role=\"listbox\"\n aria-label=\"Time selection\"\n >\n {items.map(item => {\n const isSelected = item === selected;\n const displayValue =\n typeof item === \"number\" ? padNumber(item, padStart) : item;\n\n return (\n <Button\n key={item}\n ref={isSelected ? selectedRef : undefined}\n variant={isSelected ? \"default\" : \"ghost\"}\n size=\"sm\"\n role=\"option\"\n aria-selected={isSelected}\n disabled={disabled}\n className={cn(\n \"w-12 justify-center font-mono text-sm\",\n !isSelected && \"text-muted-foreground\"\n )}\n style={{ height: ITEM_HEIGHT }}\n onClick={() => onSelect(item)}\n >\n {displayValue}\n </Button>\n );\n })}\n </div>\n </ScrollArea>\n );\n};\n\nTimeColumn.displayName = \"TimeColumn\";\n\nexport { TimeColumn };\n","import { forwardRef, useCallback, useEffect, useState } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\n\nimport { PERIODS } from \"./constants\";\nimport { TimeColumn } from \"./TimeColumn\";\nimport type { TimePickerPanelProps, TimeValue } from \"./types\";\nimport { generateRange, to12Hour, to24Hour } from \"./utils\";\n\nconst TimePickerPanel = forwardRef<HTMLDivElement, TimePickerPanelProps>(\n (\n {\n value,\n onChange,\n format = \"24\",\n showSeconds = false,\n minuteStep = 1,\n secondStep = 1,\n disabled = false,\n className,\n },\n ref\n ) => {\n const getInitialTime = useCallback(\n (): TimeValue => ({\n hours: value?.hours ?? 0,\n minutes: value?.minutes ?? 0,\n seconds: value?.seconds ?? 0,\n }),\n [value]\n );\n\n const [internalTime, setInternalTime] = useState<TimeValue>(getInitialTime);\n\n useEffect(() => {\n setInternalTime(getInitialTime());\n }, [getInitialTime]);\n\n const hours = format === \"12\" ? generateRange(1, 12) : generateRange(0, 23);\n const minutes = generateRange(0, 59, minuteStep);\n const seconds = generateRange(0, 59, secondStep);\n\n const { hour12, period } =\n format === \"12\"\n ? to12Hour(internalTime.hours)\n : { hour12: internalTime.hours, period: \"AM\" as const };\n\n const handleHourSelect = (hourValue: number | string) => {\n const hour = Number(hourValue);\n const newHours = format === \"12\" ? to24Hour(hour, period) : hour;\n const newTime = { ...internalTime, hours: newHours };\n setInternalTime(newTime);\n onChange?.(newTime);\n };\n\n const handleMinuteSelect = (minuteValue: number | string) => {\n const newTime = { ...internalTime, minutes: Number(minuteValue) };\n setInternalTime(newTime);\n onChange?.(newTime);\n };\n\n const handleSecondSelect = (secondValue: number | string) => {\n const newTime = { ...internalTime, seconds: Number(secondValue) };\n setInternalTime(newTime);\n onChange?.(newTime);\n };\n\n const handlePeriodSelect = (newPeriod: number | string) => {\n const newHours = to24Hour(hour12, newPeriod as \"AM\" | \"PM\");\n const newTime = { ...internalTime, hours: newHours };\n setInternalTime(newTime);\n onChange?.(newTime);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"flex\", className)}\n role=\"group\"\n aria-label=\"Time picker\"\n >\n <TimeColumn\n items={hours}\n selected={format === \"12\" ? hour12 : internalTime.hours}\n onSelect={handleHourSelect}\n disabled={disabled}\n />\n <div className=\"border-inline-end border-border\" />\n <TimeColumn\n items={minutes}\n selected={internalTime.minutes}\n onSelect={handleMinuteSelect}\n disabled={disabled}\n />\n {showSeconds && (\n <>\n <div className=\"border-inline-end border-border\" />\n <TimeColumn\n items={seconds}\n selected={internalTime.seconds ?? 0}\n onSelect={handleSecondSelect}\n disabled={disabled}\n />\n </>\n )}\n {format === \"12\" && (\n <>\n <div className=\"border-inline-end border-border\" />\n <TimeColumn\n items={[...PERIODS]}\n selected={period}\n onSelect={handlePeriodSelect}\n disabled={disabled}\n padStart={0}\n />\n </>\n )}\n </div>\n );\n }\n);\n\nTimePickerPanel.displayName = \"TimePickerPanel\";\n\nexport { TimePickerPanel };\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { Clock, X } from \"lucide-react\";\nimport { Popover, PopoverAnchor, PopoverContent } from \"src/primitives/Popover\";\nimport {\n Field,\n FieldLabel,\n FieldContent,\n FieldDescription,\n FieldError,\n} from \"src/primitives/Field\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { buildTestIdPrefix } from \"src/utils/fieldIds\";\nimport { useControlledOpen } from \"src/hooks/useControlledOpen\";\nimport { useCursorRestore } from \"src/hooks/useCursorRestore\";\nimport { useOutsideClickClose } from \"src/hooks/useOutsideClickClose\";\n\nimport type { Dayjs } from \"dayjs\";\n\nimport { TimePickerPanel } from \"./TimePickerPanel\";\nimport { SIZE_CONFIG } from \"./constants\";\nimport type { TimePickerProps, TimeValue } from \"./types\";\nimport {\n coerceToTimeValue,\n formatTimeDisplay,\n formatTimeWithPattern,\n getDefaultTimeMaskFormat,\n getTimePlaceholder,\n parseTimeString,\n parseTimeWithPattern,\n timeValueEquals,\n timeValueToDayjs,\n} from \"./utils\";\nimport { applyMask, buildMaskTemplate } from \"src/utils/inputMask\";\n\ntype RangeSide = \"from\" | \"to\";\n\nconst TimePicker = forwardRef<HTMLDivElement, TimePickerProps>(\n (\n {\n value,\n onChange,\n onBlur,\n type = \"time\",\n format = \"24\",\n displayFormat,\n showSeconds = false,\n minuteStep = 1,\n secondStep = 1,\n disabled = false,\n placeholder,\n label,\n error,\n helpText,\n size = \"medium\",\n required = false,\n timezone,\n open: openProp,\n onOpenChange,\n needConfirm = true,\n onOk,\n labelProps,\n className,\n dataTestId,\n },\n ref\n ) => {\n const generatedId = useId();\n const errorId = `error_${generatedId}`;\n const helpTextId = `helpText_${generatedId}`;\n const testIdPrefix = buildTestIdPrefix(dataTestId, label);\n const containerRef = useRef<HTMLDivElement>(null);\n const fromInputRef = useRef<HTMLInputElement>(null);\n const toInputRef = useRef<HTMLInputElement>(null);\n const fromCursorRef = useRef<number | null>(null);\n const toCursorRef = useRef<number | null>(null);\n\n const popoverContentId = useRef(\n `timepicker-popover-${generatedId}`\n ).current;\n\n const committedRef = useRef<{\n from: TimeValue | null;\n to: TimeValue | null;\n }>({ from: null, to: null });\n\n const { open, setOpen } = useControlledOpen(openProp, onOpenChange);\n\n const isRange = type === \"range\";\n\n const getInitialTimes = useCallback(() => {\n if (isRange) {\n if (!value || !Array.isArray(value)) {\n return { from: null, to: null };\n }\n\n return {\n from: coerceToTimeValue(value[0]),\n to: coerceToTimeValue(value[1]),\n };\n }\n\n return {\n from: coerceToTimeValue(\n value as TimeValue | Date | Dayjs | string | null | undefined\n ),\n to: null,\n };\n }, [value, isRange]);\n\n const formatOne = useCallback(\n (time: TimeValue | null) =>\n displayFormat\n ? formatTimeWithPattern(time, displayFormat)\n : formatTimeDisplay(time, format, showSeconds),\n [displayFormat, format, showSeconds]\n );\n\n const [activeSide, setActiveSide] = useState<RangeSide>(\"from\");\n const [fromTime, setFromTime] = useState(() => getInitialTimes().from);\n const [toTime, setToTime] = useState(() => getInitialTimes().to);\n\n const [fromText, setFromText] = useState(() =>\n formatOne(getInitialTimes().from)\n );\n const [toText, setToText] = useState(() => formatOne(getInitialTimes().to));\n\n const parseOne = (text: string): TimeValue | null =>\n displayFormat\n ? parseTimeWithPattern(text, displayFormat)\n : parseTimeString(text, format);\n\n const emitChange = (from: TimeValue | null, to: TimeValue | null) => {\n if (isRange) {\n if (!from || !to) {\n onChange?.(null, [\"\", \"\"]);\n\n return;\n }\n\n onChange?.(\n [timeValueToDayjs(from), timeValueToDayjs(to)],\n [formatOne(from), formatOne(to)]\n );\n\n return;\n }\n\n if (!from) {\n onChange?.(null, \"\");\n\n return;\n }\n\n onChange?.(timeValueToDayjs(from), formatOne(from));\n };\n\n const commitPendingOnClose = useCallback(() => {\n if (!needConfirm) {\n setFromText(formatOne(fromTime));\n setToText(formatOne(toTime));\n\n return;\n }\n\n const { from: committedFrom, to: committedTo } = committedRef.current;\n const unchanged =\n timeValueEquals(fromTime, committedFrom) &&\n timeValueEquals(toTime, committedTo);\n if (unchanged) return;\n\n emitChange(fromTime, toTime);\n committedRef.current = { from: fromTime, to: toTime };\n }, [needConfirm, fromTime, toTime, formatOne, isRange, onChange]);\n\n const closePopover = useCallback(() => {\n commitPendingOnClose();\n setOpen(false);\n }, [commitPendingOnClose, setOpen]);\n\n useOutsideClickClose({\n enabled: open,\n containerRef,\n popoverElementId: popoverContentId,\n onClose: closePopover,\n });\n\n const maskTemplate = useMemo(\n () =>\n displayFormat\n ? null\n : buildMaskTemplate(getDefaultTimeMaskFormat(format, showSeconds)),\n [displayFormat, format, showSeconds]\n );\n\n const handleOk = () => {\n if (isRange && activeSide === \"from\" && fromTime && !toTime) {\n setActiveSide(\"to\");\n toInputRef.current?.focus();\n\n return;\n }\n\n committedRef.current = { from: fromTime, to: toTime };\n emitChange(fromTime, toTime);\n\n if (isRange) {\n if (fromTime && toTime) {\n onOk?.([timeValueToDayjs(fromTime), timeValueToDayjs(toTime)]);\n } else {\n onOk?.(null);\n }\n } else {\n onOk?.(fromTime ? timeValueToDayjs(fromTime) : null);\n }\n\n setOpen(false);\n };\n\n const handlePanelChange = (time: TimeValue) => {\n if (!isRange) {\n setFromTime(time);\n setFromText(formatOne(time));\n if (!needConfirm) emitChange(time, null);\n\n return;\n }\n\n if (activeSide === \"from\") {\n setFromTime(time);\n setFromText(formatOne(time));\n if (!needConfirm) emitChange(time, toTime);\n\n return;\n }\n\n setToTime(time);\n setToText(formatOne(time));\n if (!needConfirm) emitChange(fromTime, time);\n };\n\n const buildInputChangeHandler =\n (side: RangeSide) => (e: React.ChangeEvent<HTMLInputElement>) => {\n let text = e.target.value;\n const previousText = side === \"from\" ? fromText : toText;\n\n if (maskTemplate) {\n const masked = applyMask(\n text,\n maskTemplate,\n previousText,\n e.target.selectionStart\n );\n text = masked.text;\n\n if (side === \"from\") fromCursorRef.current = masked.cursorPosition;\n else toCursorRef.current = masked.cursorPosition;\n }\n\n if (side === \"from\") setFromText(text);\n else setToText(text);\n\n const parsed = parseOne(text);\n if (!parsed) return;\n\n if (side === \"from\") {\n setFromTime(parsed);\n if (!needConfirm) emitChange(parsed, toTime);\n } else {\n setToTime(parsed);\n if (!needConfirm) emitChange(fromTime, parsed);\n }\n };\n\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Escape\") {\n const { from, to } = committedRef.current;\n setFromTime(from);\n setToTime(to);\n setFromText(formatOne(from));\n setToText(formatOne(to));\n setOpen(false);\n\n return;\n }\n\n if (e.key !== \"Enter\") return;\n\n if (needConfirm) {\n handleOk();\n\n return;\n }\n\n setFromText(formatOne(fromTime));\n setToText(formatOne(toTime));\n setOpen(false);\n };\n\n const handleInputFocus = (side: RangeSide) => {\n setActiveSide(side);\n if (!open) setOpen(true);\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 const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n\n setFromTime(null);\n setToTime(null);\n setFromText(\"\");\n setToText(\"\");\n\n committedRef.current = { from: null, to: null };\n onChange?.(null, isRange ? [\"\", \"\"] : \"\");\n };\n\n useEffect(() => {\n if (value === undefined) return;\n\n const next = getInitialTimes();\n setFromTime(next.from);\n setToTime(next.to);\n if (open) return;\n\n setFromText(formatOne(next.from));\n setToText(formatOne(next.to));\n committedRef.current = { from: next.from, to: next.to };\n }, [value, getInitialTimes, formatOne, open]);\n\n useEffect(() => {\n if (!open) return;\n\n committedRef.current = { from: fromTime, to: toTime };\n }, [open]);\n\n useCursorRestore([\n { inputRef: fromInputRef, cursorRef: fromCursorRef },\n { inputRef: toInputRef, cursorRef: toCursorRef },\n ]);\n\n const singlePlaceholder = getTimePlaceholder(\n format,\n showSeconds,\n displayFormat\n );\n\n const hasField = !!(label || error || helpText);\n const sizeConfig = SIZE_CONFIG[size];\n const hasAnyValue = !!(fromText || toText);\n const activeTime = activeSide === \"from\" ? fromTime : toTime;\n\n const ariaDescribedBy =\n [error ? errorId : null, helpText ? helpTextId : null]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n const inputBaseClass = cn(\n \"min-w-0 bg-transparent outline-none placeholder:text-placeholder\",\n \"disabled:cursor-not-allowed\",\n sizeConfig.input\n );\n\n const triggerContent = (\n <Popover open={open}>\n <PopoverAnchor asChild>\n <div\n ref={containerRef}\n className={cn(\n \"relative flex w-full 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 sizeConfig.trigger,\n !hasField && className\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 <Clock\n className={cn(\n \"shrink-0 text-muted-foreground\",\n sizeConfig.icon\n )}\n />\n )}\n {isRange ? (\n <>\n <input\n ref={fromInputRef}\n type=\"text\"\n disabled={disabled}\n data-testid={`${testIdPrefix}-start-input`}\n aria-label={\n label ? `${label} start time` : \"Pick a start time\"\n }\n aria-describedby={ariaDescribedBy}\n aria-invalid={!!error || undefined}\n placeholder={placeholder ?? singlePlaceholder}\n value={fromText}\n onChange={buildInputChangeHandler(\"from\")}\n onKeyDown={handleInputKeyDown}\n onFocus={() => handleInputFocus(\"from\")}\n onBlur={handleInputBlur}\n className={cn(inputBaseClass, \"flex-1\")}\n />\n <span\n aria-hidden=\"true\"\n className=\"shrink-0 text-muted-foreground\"\n >\n ~\n </span>\n <input\n ref={toInputRef}\n type=\"text\"\n disabled={disabled}\n data-testid={`${testIdPrefix}-end-input`}\n aria-label={label ? `${label} end time` : \"Pick an end time\"}\n aria-describedby={ariaDescribedBy}\n aria-invalid={!!error || undefined}\n placeholder={placeholder ?? singlePlaceholder}\n value={toText}\n onChange={buildInputChangeHandler(\"to\")}\n onKeyDown={handleInputKeyDown}\n onFocus={() => handleInputFocus(\"to\")}\n onBlur={handleInputBlur}\n className={cn(inputBaseClass, \"flex-1\")}\n />\n </>\n ) : (\n <input\n ref={fromInputRef}\n type=\"text\"\n disabled={disabled}\n data-testid={`${testIdPrefix}-input`}\n aria-label={label || \"Pick a time\"}\n aria-describedby={ariaDescribedBy}\n aria-invalid={!!error || undefined}\n placeholder={placeholder ?? singlePlaceholder}\n value={fromText}\n onChange={buildInputChangeHandler(\"from\")}\n onKeyDown={handleInputKeyDown}\n onFocus={() => handleInputFocus(\"from\")}\n onBlur={handleInputBlur}\n className={cn(inputBaseClass, \"flex-1\")}\n />\n )}\n <button\n type=\"button\"\n data-testid={`${testIdPrefix}-clear-button`}\n onPointerDown={e => e.preventDefault()}\n onClick={handleClear}\n className={cn(\n \"absolute inset-y-0 end-2 flex items-center text-muted-foreground hover:text-foreground focus:outline-none\",\n !(hasAnyValue && !disabled) && \"invisible\"\n )}\n aria-label={isRange ? \"Clear time range\" : \"Clear time\"}\n tabIndex={-1}\n >\n <X className={sizeConfig.icon} />\n </button>\n </div>\n </PopoverAnchor>\n {open && (\n <PopoverContent\n id={popoverContentId}\n className=\"w-auto p-0\"\n align=\"start\"\n onOpenAutoFocus={e => e.preventDefault()}\n onCloseAutoFocus={e => e.preventDefault()}\n onPointerDownOutside={e => e.preventDefault()}\n onInteractOutside={e => e.preventDefault()}\n >\n <TimePickerPanel\n value={activeTime ?? undefined}\n onChange={handlePanelChange}\n format={format}\n showSeconds={showSeconds}\n minuteStep={minuteStep}\n secondStep={secondStep}\n disabled={disabled}\n />\n {needConfirm && (\n <div className=\"flex items-center justify-end border-t border-border px-3 py-2\">\n <button\n type=\"button\"\n onClick={handleOk}\n className=\"rounded bg-primary px-3 py-1 text-sm font-medium text-primary-foreground hover:bg-primary/90 focus:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n OK\n </button>\n </div>\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 <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 {triggerContent}\n {!!error && (\n <FieldError\n id={errorId}\n data-testid={`${testIdPrefix}-input-error`}\n >\n {error}\n </FieldError>\n )}\n {helpText && (\n <FieldDescription\n id={helpTextId}\n data-testid={`${testIdPrefix}-input-help`}\n >\n {helpText}\n </FieldDescription>\n )}\n </FieldContent>\n </Field>\n );\n }\n);\n\nTimePicker.displayName = \"TimePicker\";\n\nexport { TimePicker };\n"],"names":[],"mappings":"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"}
@@ -479,6 +479,7 @@ const TimePicker = React.forwardRef(
479
479
  ref: fromInputRef,
480
480
  type: "text",
481
481
  disabled,
482
+ "data-testid": `${testIdPrefix}-start-input`,
482
483
  "aria-label": label ? `${label} start time` : "Pick a start time",
483
484
  "aria-describedby": ariaDescribedBy,
484
485
  "aria-invalid": !!error || void 0,
@@ -505,6 +506,7 @@ const TimePicker = React.forwardRef(
505
506
  ref: toInputRef,
506
507
  type: "text",
507
508
  disabled,
509
+ "data-testid": `${testIdPrefix}-end-input`,
508
510
  "aria-label": label ? `${label} end time` : "Pick an end time",
509
511
  "aria-describedby": ariaDescribedBy,
510
512
  "aria-invalid": !!error || void 0,
@@ -523,6 +525,7 @@ const TimePicker = React.forwardRef(
523
525
  ref: fromInputRef,
524
526
  type: "text",
525
527
  disabled,
528
+ "data-testid": `${testIdPrefix}-input`,
526
529
  "aria-label": label || "Pick a time",
527
530
  "aria-describedby": ariaDescribedBy,
528
531
  "aria-invalid": !!error || void 0,
@@ -539,6 +542,7 @@ const TimePicker = React.forwardRef(
539
542
  "button",
540
543
  {
541
544
  type: "button",
545
+ "data-testid": `${testIdPrefix}-clear-button`,
542
546
  onPointerDown: (e) => e.preventDefault(),
543
547
  onClick: handleClear,
544
548
  className: utils$1.cn(
@@ -638,4 +642,4 @@ TimePicker.displayName = "TimePicker";
638
642
 
639
643
  exports.TimePicker = TimePicker;
640
644
  exports.TimePickerPanel = TimePickerPanel;
641
- //# sourceMappingURL=TimePicker-BhOW7vbV.js.map
645
+ //# sourceMappingURL=TimePicker-CDw_m3LR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TimePicker-CDw_m3LR.js","sources":["../../src/components/TimePicker/constants.ts","../../src/components/TimePicker/TimeColumn.tsx","../../src/components/TimePicker/TimePickerPanel.tsx","../../src/components/TimePicker/TimePicker.tsx"],"sourcesContent":["export const COLUMN_HEIGHT = 224;\nexport const ITEM_HEIGHT = 32;\nexport const PERIODS = [\"AM\", \"PM\"] as const;\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 React, { useEffect, useRef } from \"react\";\n\nimport { Button } from \"src/primitives/Button\";\nimport { ScrollArea } from \"src/primitives/ScrollArea\";\nimport { cn } from \"src/shadcn/lib/utils\";\n\nimport { COLUMN_HEIGHT, ITEM_HEIGHT } from \"./constants\";\nimport { padNumber } from \"./utils\";\n\ninterface TimeColumnProps {\n items: (number | string)[];\n selected: number | string;\n onSelect: (value: number | string) => void;\n disabled?: boolean;\n className?: string;\n padStart?: number;\n}\n\nconst TimeColumn: React.FC<TimeColumnProps> = ({\n items,\n selected,\n onSelect,\n disabled = false,\n className,\n padStart = 2,\n}) => {\n const selectedRef = useRef<HTMLButtonElement>(null);\n\n useEffect(() => {\n if (selectedRef.current) {\n selectedRef.current.scrollIntoView({\n block: \"center\",\n behavior: \"smooth\",\n });\n }\n }, [selected]);\n\n return (\n <ScrollArea\n className={cn(\"w-16\", className)}\n style={{ height: COLUMN_HEIGHT }}\n >\n <div\n className=\"flex flex-col items-center py-2\"\n role=\"listbox\"\n aria-label=\"Time selection\"\n >\n {items.map(item => {\n const isSelected = item === selected;\n const displayValue =\n typeof item === \"number\" ? padNumber(item, padStart) : item;\n\n return (\n <Button\n key={item}\n ref={isSelected ? selectedRef : undefined}\n variant={isSelected ? \"default\" : \"ghost\"}\n size=\"sm\"\n role=\"option\"\n aria-selected={isSelected}\n disabled={disabled}\n className={cn(\n \"w-12 justify-center font-mono text-sm\",\n !isSelected && \"text-muted-foreground\"\n )}\n style={{ height: ITEM_HEIGHT }}\n onClick={() => onSelect(item)}\n >\n {displayValue}\n </Button>\n );\n })}\n </div>\n </ScrollArea>\n );\n};\n\nTimeColumn.displayName = \"TimeColumn\";\n\nexport { TimeColumn };\n","import { forwardRef, useCallback, useEffect, useState } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\n\nimport { PERIODS } from \"./constants\";\nimport { TimeColumn } from \"./TimeColumn\";\nimport type { TimePickerPanelProps, TimeValue } from \"./types\";\nimport { generateRange, to12Hour, to24Hour } from \"./utils\";\n\nconst TimePickerPanel = forwardRef<HTMLDivElement, TimePickerPanelProps>(\n (\n {\n value,\n onChange,\n format = \"24\",\n showSeconds = false,\n minuteStep = 1,\n secondStep = 1,\n disabled = false,\n className,\n },\n ref\n ) => {\n const getInitialTime = useCallback(\n (): TimeValue => ({\n hours: value?.hours ?? 0,\n minutes: value?.minutes ?? 0,\n seconds: value?.seconds ?? 0,\n }),\n [value]\n );\n\n const [internalTime, setInternalTime] = useState<TimeValue>(getInitialTime);\n\n useEffect(() => {\n setInternalTime(getInitialTime());\n }, [getInitialTime]);\n\n const hours = format === \"12\" ? generateRange(1, 12) : generateRange(0, 23);\n const minutes = generateRange(0, 59, minuteStep);\n const seconds = generateRange(0, 59, secondStep);\n\n const { hour12, period } =\n format === \"12\"\n ? to12Hour(internalTime.hours)\n : { hour12: internalTime.hours, period: \"AM\" as const };\n\n const handleHourSelect = (hourValue: number | string) => {\n const hour = Number(hourValue);\n const newHours = format === \"12\" ? to24Hour(hour, period) : hour;\n const newTime = { ...internalTime, hours: newHours };\n setInternalTime(newTime);\n onChange?.(newTime);\n };\n\n const handleMinuteSelect = (minuteValue: number | string) => {\n const newTime = { ...internalTime, minutes: Number(minuteValue) };\n setInternalTime(newTime);\n onChange?.(newTime);\n };\n\n const handleSecondSelect = (secondValue: number | string) => {\n const newTime = { ...internalTime, seconds: Number(secondValue) };\n setInternalTime(newTime);\n onChange?.(newTime);\n };\n\n const handlePeriodSelect = (newPeriod: number | string) => {\n const newHours = to24Hour(hour12, newPeriod as \"AM\" | \"PM\");\n const newTime = { ...internalTime, hours: newHours };\n setInternalTime(newTime);\n onChange?.(newTime);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"flex\", className)}\n role=\"group\"\n aria-label=\"Time picker\"\n >\n <TimeColumn\n items={hours}\n selected={format === \"12\" ? hour12 : internalTime.hours}\n onSelect={handleHourSelect}\n disabled={disabled}\n />\n <div className=\"border-inline-end border-border\" />\n <TimeColumn\n items={minutes}\n selected={internalTime.minutes}\n onSelect={handleMinuteSelect}\n disabled={disabled}\n />\n {showSeconds && (\n <>\n <div className=\"border-inline-end border-border\" />\n <TimeColumn\n items={seconds}\n selected={internalTime.seconds ?? 0}\n onSelect={handleSecondSelect}\n disabled={disabled}\n />\n </>\n )}\n {format === \"12\" && (\n <>\n <div className=\"border-inline-end border-border\" />\n <TimeColumn\n items={[...PERIODS]}\n selected={period}\n onSelect={handlePeriodSelect}\n disabled={disabled}\n padStart={0}\n />\n </>\n )}\n </div>\n );\n }\n);\n\nTimePickerPanel.displayName = \"TimePickerPanel\";\n\nexport { TimePickerPanel };\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { Clock, X } from \"lucide-react\";\nimport { Popover, PopoverAnchor, PopoverContent } from \"src/primitives/Popover\";\nimport {\n Field,\n FieldLabel,\n FieldContent,\n FieldDescription,\n FieldError,\n} from \"src/primitives/Field\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { buildTestIdPrefix } from \"src/utils/fieldIds\";\nimport { useControlledOpen } from \"src/hooks/useControlledOpen\";\nimport { useCursorRestore } from \"src/hooks/useCursorRestore\";\nimport { useOutsideClickClose } from \"src/hooks/useOutsideClickClose\";\n\nimport type { Dayjs } from \"dayjs\";\n\nimport { TimePickerPanel } from \"./TimePickerPanel\";\nimport { SIZE_CONFIG } from \"./constants\";\nimport type { TimePickerProps, TimeValue } from \"./types\";\nimport {\n coerceToTimeValue,\n formatTimeDisplay,\n formatTimeWithPattern,\n getDefaultTimeMaskFormat,\n getTimePlaceholder,\n parseTimeString,\n parseTimeWithPattern,\n timeValueEquals,\n timeValueToDayjs,\n} from \"./utils\";\nimport { applyMask, buildMaskTemplate } from \"src/utils/inputMask\";\n\ntype RangeSide = \"from\" | \"to\";\n\nconst TimePicker = forwardRef<HTMLDivElement, TimePickerProps>(\n (\n {\n value,\n onChange,\n onBlur,\n type = \"time\",\n format = \"24\",\n displayFormat,\n showSeconds = false,\n minuteStep = 1,\n secondStep = 1,\n disabled = false,\n placeholder,\n label,\n error,\n helpText,\n size = \"medium\",\n required = false,\n timezone,\n open: openProp,\n onOpenChange,\n needConfirm = true,\n onOk,\n labelProps,\n className,\n dataTestId,\n },\n ref\n ) => {\n const generatedId = useId();\n const errorId = `error_${generatedId}`;\n const helpTextId = `helpText_${generatedId}`;\n const testIdPrefix = buildTestIdPrefix(dataTestId, label);\n const containerRef = useRef<HTMLDivElement>(null);\n const fromInputRef = useRef<HTMLInputElement>(null);\n const toInputRef = useRef<HTMLInputElement>(null);\n const fromCursorRef = useRef<number | null>(null);\n const toCursorRef = useRef<number | null>(null);\n\n const popoverContentId = useRef(\n `timepicker-popover-${generatedId}`\n ).current;\n\n const committedRef = useRef<{\n from: TimeValue | null;\n to: TimeValue | null;\n }>({ from: null, to: null });\n\n const { open, setOpen } = useControlledOpen(openProp, onOpenChange);\n\n const isRange = type === \"range\";\n\n const getInitialTimes = useCallback(() => {\n if (isRange) {\n if (!value || !Array.isArray(value)) {\n return { from: null, to: null };\n }\n\n return {\n from: coerceToTimeValue(value[0]),\n to: coerceToTimeValue(value[1]),\n };\n }\n\n return {\n from: coerceToTimeValue(\n value as TimeValue | Date | Dayjs | string | null | undefined\n ),\n to: null,\n };\n }, [value, isRange]);\n\n const formatOne = useCallback(\n (time: TimeValue | null) =>\n displayFormat\n ? formatTimeWithPattern(time, displayFormat)\n : formatTimeDisplay(time, format, showSeconds),\n [displayFormat, format, showSeconds]\n );\n\n const [activeSide, setActiveSide] = useState<RangeSide>(\"from\");\n const [fromTime, setFromTime] = useState(() => getInitialTimes().from);\n const [toTime, setToTime] = useState(() => getInitialTimes().to);\n\n const [fromText, setFromText] = useState(() =>\n formatOne(getInitialTimes().from)\n );\n const [toText, setToText] = useState(() => formatOne(getInitialTimes().to));\n\n const parseOne = (text: string): TimeValue | null =>\n displayFormat\n ? parseTimeWithPattern(text, displayFormat)\n : parseTimeString(text, format);\n\n const emitChange = (from: TimeValue | null, to: TimeValue | null) => {\n if (isRange) {\n if (!from || !to) {\n onChange?.(null, [\"\", \"\"]);\n\n return;\n }\n\n onChange?.(\n [timeValueToDayjs(from), timeValueToDayjs(to)],\n [formatOne(from), formatOne(to)]\n );\n\n return;\n }\n\n if (!from) {\n onChange?.(null, \"\");\n\n return;\n }\n\n onChange?.(timeValueToDayjs(from), formatOne(from));\n };\n\n const commitPendingOnClose = useCallback(() => {\n if (!needConfirm) {\n setFromText(formatOne(fromTime));\n setToText(formatOne(toTime));\n\n return;\n }\n\n const { from: committedFrom, to: committedTo } = committedRef.current;\n const unchanged =\n timeValueEquals(fromTime, committedFrom) &&\n timeValueEquals(toTime, committedTo);\n if (unchanged) return;\n\n emitChange(fromTime, toTime);\n committedRef.current = { from: fromTime, to: toTime };\n }, [needConfirm, fromTime, toTime, formatOne, isRange, onChange]);\n\n const closePopover = useCallback(() => {\n commitPendingOnClose();\n setOpen(false);\n }, [commitPendingOnClose, setOpen]);\n\n useOutsideClickClose({\n enabled: open,\n containerRef,\n popoverElementId: popoverContentId,\n onClose: closePopover,\n });\n\n const maskTemplate = useMemo(\n () =>\n displayFormat\n ? null\n : buildMaskTemplate(getDefaultTimeMaskFormat(format, showSeconds)),\n [displayFormat, format, showSeconds]\n );\n\n const handleOk = () => {\n if (isRange && activeSide === \"from\" && fromTime && !toTime) {\n setActiveSide(\"to\");\n toInputRef.current?.focus();\n\n return;\n }\n\n committedRef.current = { from: fromTime, to: toTime };\n emitChange(fromTime, toTime);\n\n if (isRange) {\n if (fromTime && toTime) {\n onOk?.([timeValueToDayjs(fromTime), timeValueToDayjs(toTime)]);\n } else {\n onOk?.(null);\n }\n } else {\n onOk?.(fromTime ? timeValueToDayjs(fromTime) : null);\n }\n\n setOpen(false);\n };\n\n const handlePanelChange = (time: TimeValue) => {\n if (!isRange) {\n setFromTime(time);\n setFromText(formatOne(time));\n if (!needConfirm) emitChange(time, null);\n\n return;\n }\n\n if (activeSide === \"from\") {\n setFromTime(time);\n setFromText(formatOne(time));\n if (!needConfirm) emitChange(time, toTime);\n\n return;\n }\n\n setToTime(time);\n setToText(formatOne(time));\n if (!needConfirm) emitChange(fromTime, time);\n };\n\n const buildInputChangeHandler =\n (side: RangeSide) => (e: React.ChangeEvent<HTMLInputElement>) => {\n let text = e.target.value;\n const previousText = side === \"from\" ? fromText : toText;\n\n if (maskTemplate) {\n const masked = applyMask(\n text,\n maskTemplate,\n previousText,\n e.target.selectionStart\n );\n text = masked.text;\n\n if (side === \"from\") fromCursorRef.current = masked.cursorPosition;\n else toCursorRef.current = masked.cursorPosition;\n }\n\n if (side === \"from\") setFromText(text);\n else setToText(text);\n\n const parsed = parseOne(text);\n if (!parsed) return;\n\n if (side === \"from\") {\n setFromTime(parsed);\n if (!needConfirm) emitChange(parsed, toTime);\n } else {\n setToTime(parsed);\n if (!needConfirm) emitChange(fromTime, parsed);\n }\n };\n\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Escape\") {\n const { from, to } = committedRef.current;\n setFromTime(from);\n setToTime(to);\n setFromText(formatOne(from));\n setToText(formatOne(to));\n setOpen(false);\n\n return;\n }\n\n if (e.key !== \"Enter\") return;\n\n if (needConfirm) {\n handleOk();\n\n return;\n }\n\n setFromText(formatOne(fromTime));\n setToText(formatOne(toTime));\n setOpen(false);\n };\n\n const handleInputFocus = (side: RangeSide) => {\n setActiveSide(side);\n if (!open) setOpen(true);\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 const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n\n setFromTime(null);\n setToTime(null);\n setFromText(\"\");\n setToText(\"\");\n\n committedRef.current = { from: null, to: null };\n onChange?.(null, isRange ? [\"\", \"\"] : \"\");\n };\n\n useEffect(() => {\n if (value === undefined) return;\n\n const next = getInitialTimes();\n setFromTime(next.from);\n setToTime(next.to);\n if (open) return;\n\n setFromText(formatOne(next.from));\n setToText(formatOne(next.to));\n committedRef.current = { from: next.from, to: next.to };\n }, [value, getInitialTimes, formatOne, open]);\n\n useEffect(() => {\n if (!open) return;\n\n committedRef.current = { from: fromTime, to: toTime };\n }, [open]);\n\n useCursorRestore([\n { inputRef: fromInputRef, cursorRef: fromCursorRef },\n { inputRef: toInputRef, cursorRef: toCursorRef },\n ]);\n\n const singlePlaceholder = getTimePlaceholder(\n format,\n showSeconds,\n displayFormat\n );\n\n const hasField = !!(label || error || helpText);\n const sizeConfig = SIZE_CONFIG[size];\n const hasAnyValue = !!(fromText || toText);\n const activeTime = activeSide === \"from\" ? fromTime : toTime;\n\n const ariaDescribedBy =\n [error ? errorId : null, helpText ? helpTextId : null]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n const inputBaseClass = cn(\n \"min-w-0 bg-transparent outline-none placeholder:text-placeholder\",\n \"disabled:cursor-not-allowed\",\n sizeConfig.input\n );\n\n const triggerContent = (\n <Popover open={open}>\n <PopoverAnchor asChild>\n <div\n ref={containerRef}\n className={cn(\n \"relative flex w-full 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 sizeConfig.trigger,\n !hasField && className\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 <Clock\n className={cn(\n \"shrink-0 text-muted-foreground\",\n sizeConfig.icon\n )}\n />\n )}\n {isRange ? (\n <>\n <input\n ref={fromInputRef}\n type=\"text\"\n disabled={disabled}\n data-testid={`${testIdPrefix}-start-input`}\n aria-label={\n label ? `${label} start time` : \"Pick a start time\"\n }\n aria-describedby={ariaDescribedBy}\n aria-invalid={!!error || undefined}\n placeholder={placeholder ?? singlePlaceholder}\n value={fromText}\n onChange={buildInputChangeHandler(\"from\")}\n onKeyDown={handleInputKeyDown}\n onFocus={() => handleInputFocus(\"from\")}\n onBlur={handleInputBlur}\n className={cn(inputBaseClass, \"flex-1\")}\n />\n <span\n aria-hidden=\"true\"\n className=\"shrink-0 text-muted-foreground\"\n >\n ~\n </span>\n <input\n ref={toInputRef}\n type=\"text\"\n disabled={disabled}\n data-testid={`${testIdPrefix}-end-input`}\n aria-label={label ? `${label} end time` : \"Pick an end time\"}\n aria-describedby={ariaDescribedBy}\n aria-invalid={!!error || undefined}\n placeholder={placeholder ?? singlePlaceholder}\n value={toText}\n onChange={buildInputChangeHandler(\"to\")}\n onKeyDown={handleInputKeyDown}\n onFocus={() => handleInputFocus(\"to\")}\n onBlur={handleInputBlur}\n className={cn(inputBaseClass, \"flex-1\")}\n />\n </>\n ) : (\n <input\n ref={fromInputRef}\n type=\"text\"\n disabled={disabled}\n data-testid={`${testIdPrefix}-input`}\n aria-label={label || \"Pick a time\"}\n aria-describedby={ariaDescribedBy}\n aria-invalid={!!error || undefined}\n placeholder={placeholder ?? singlePlaceholder}\n value={fromText}\n onChange={buildInputChangeHandler(\"from\")}\n onKeyDown={handleInputKeyDown}\n onFocus={() => handleInputFocus(\"from\")}\n onBlur={handleInputBlur}\n className={cn(inputBaseClass, \"flex-1\")}\n />\n )}\n <button\n type=\"button\"\n data-testid={`${testIdPrefix}-clear-button`}\n onPointerDown={e => e.preventDefault()}\n onClick={handleClear}\n className={cn(\n \"absolute inset-y-0 end-2 flex items-center text-muted-foreground hover:text-foreground focus:outline-none\",\n !(hasAnyValue && !disabled) && \"invisible\"\n )}\n aria-label={isRange ? \"Clear time range\" : \"Clear time\"}\n tabIndex={-1}\n >\n <X className={sizeConfig.icon} />\n </button>\n </div>\n </PopoverAnchor>\n {open && (\n <PopoverContent\n id={popoverContentId}\n className=\"w-auto p-0\"\n align=\"start\"\n onOpenAutoFocus={e => e.preventDefault()}\n onCloseAutoFocus={e => e.preventDefault()}\n onPointerDownOutside={e => e.preventDefault()}\n onInteractOutside={e => e.preventDefault()}\n >\n <TimePickerPanel\n value={activeTime ?? undefined}\n onChange={handlePanelChange}\n format={format}\n showSeconds={showSeconds}\n minuteStep={minuteStep}\n secondStep={secondStep}\n disabled={disabled}\n />\n {needConfirm && (\n <div className=\"flex items-center justify-end border-t border-border px-3 py-2\">\n <button\n type=\"button\"\n onClick={handleOk}\n className=\"rounded bg-primary px-3 py-1 text-sm font-medium text-primary-foreground hover:bg-primary/90 focus:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n OK\n </button>\n </div>\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 <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 {triggerContent}\n {!!error && (\n <FieldError\n id={errorId}\n data-testid={`${testIdPrefix}-input-error`}\n >\n {error}\n </FieldError>\n )}\n {helpText && (\n <FieldDescription\n id={helpTextId}\n data-testid={`${testIdPrefix}-input-help`}\n >\n {helpText}\n </FieldDescription>\n )}\n </FieldContent>\n </Field>\n );\n }\n);\n\nTimePicker.displayName = \"TimePicker\";\n\nexport { TimePicker };\n"],"names":["useRef","useEffect","jsx","ScrollArea","cn","padNumber","Button","forwardRef","useCallback","useState","generateRange","to12Hour","to24Hour","jsxs","Fragment","useId","buildTestIdPrefix","useControlledOpen","coerceToTimeValue","formatTimeWithPattern","formatTimeDisplay","parseTimeWithPattern","parseTimeString","timeValueToDayjs","timeValueEquals","useOutsideClickClose","useMemo","buildMaskTemplate","getDefaultTimeMaskFormat","applyMask","useCursorRestore","getTimePlaceholder","Popover","PopoverAnchor","Clock","X","PopoverContent","Field","FieldLabel","FieldContent","FieldError","FieldDescription"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var TimePicker = require('../TimePicker-BhOW7vbV.js');
3
+ var TimePicker = require('../TimePicker-CDw_m3LR.js');
4
4
  require('react/jsx-runtime');
5
5
  require('react');
6
6
  require('../primitives/Popover.js');
@@ -29,7 +29,7 @@ var Stepper = require('../Stepper-BZBdL6JW.js');
29
29
  var Switch = require('../Switch-BbRK3HUZ.js');
30
30
  var Tabs = require('../Tabs-BQl63Ewe.js');
31
31
  var Textarea = require('../Textarea-bxleSw86.js');
32
- var TimePicker = require('../TimePicker-BhOW7vbV.js');
32
+ var TimePicker = require('../TimePicker-CDw_m3LR.js');
33
33
  var Toastr = require('../Toastr-DgllCbfd.js');
34
34
  var Tooltip = require('../Tooltip-B6uv_2Jz.js');
35
35
  var TranslationProvider = require('../TranslationProvider-Cao2ugzJ.js');
package/dist/cjs/index.js CHANGED
@@ -2,7 +2,6 @@
2
2
 
3
3
  var utils$1 = require('@bigbinary/neeto-commons-frontend/utils');
4
4
  var TranslationProvider = require('./TranslationProvider-Cao2ugzJ.js');
5
- var DirectionProvider = require('./DirectionProvider-BTtE4FcN.js');
6
5
  var components_DropdownMenu = require('./components/DropdownMenu.js');
7
6
  var useMobile = require('./use-mobile-Be9CI6km.js');
8
7
  var utils = require('./utils-BhM0B89p.js');
@@ -17,6 +16,7 @@ var ColorPicker = require('./ColorPicker-CODJ0QKs.js');
17
16
  var DataTable = require('./DataTable-KvsmFjeu.js');
18
17
  var DatePicker = require('./DatePicker-CBxWLALJ.js');
19
18
  var Dialog = require('./Dialog-B_FZwr_u.js');
19
+ var DirectionProvider = require('./DirectionProvider-BTtE4FcN.js');
20
20
  var Empty = require('./Empty-Bwpsj82B.js');
21
21
  var Input = require('./Input-DFvMBpiU.js');
22
22
  var Kbd = require('./Kbd--A8Gl8TV.js');
@@ -34,7 +34,7 @@ var Stepper = require('./Stepper-BZBdL6JW.js');
34
34
  var Switch = require('./Switch-BbRK3HUZ.js');
35
35
  var Tabs = require('./Tabs-BQl63Ewe.js');
36
36
  var Textarea = require('./Textarea-bxleSw86.js');
37
- var TimePicker = require('./TimePicker-BhOW7vbV.js');
37
+ var TimePicker = require('./TimePicker-CDw_m3LR.js');
38
38
  var Toastr = require('./Toastr-DgllCbfd.js');
39
39
  var Tooltip = require('./Tooltip-B6uv_2Jz.js');
40
40
  var Tree = require('./Tree-D1QjLPS9.js');
@@ -44,7 +44,6 @@ require('react/jsx-runtime');
44
44
  require('react');
45
45
  require('react-i18next');
46
46
  require('i18next');
47
- require('./index-BY6wgiQV.js');
48
47
  require('./primitives/DropdownMenu.js');
49
48
  require('./chevron-right-0jNdwX2Q.js');
50
49
  require('./createLucideIcon-D0tRgV6l.js');
@@ -58,6 +57,7 @@ require('./index-DMbj7vXd.js');
58
57
  require('react-dom');
59
58
  require('./index-CMFCdiR6.js');
60
59
  require('./index-Ch55j1or.js');
60
+ require('./index-BY6wgiQV.js');
61
61
  require('./index-Bvu9MiFi.js');
62
62
  require('./index-lWVw05cs.js');
63
63
  require('./index-CS_WSHYi.js');
@@ -153,7 +153,6 @@ Object.defineProperty(exports, "dayjs", {
153
153
  });
154
154
  exports.TranslationProvider = TranslationProvider.TranslationProvider;
155
155
  exports.translations = TranslationProvider.resources;
156
- exports.DirectionProvider = DirectionProvider.DirectionProvider;
157
156
  exports.DropdownMenu = components_DropdownMenu.DropdownMenu;
158
157
  exports.useIsMobile = useMobile.useIsMobile;
159
158
  exports.cn = utils.cn;
@@ -174,6 +173,7 @@ exports.useTableSelection = DataTable.useTableSelection;
174
173
  exports.useTableSort = DataTable.useTableSort;
175
174
  exports.DatePicker = DatePicker.DatePicker;
176
175
  exports.Dialog = Dialog.Dialog;
176
+ exports.DirectionProvider = DirectionProvider.DirectionProvider;
177
177
  exports.Empty = Empty.Empty;
178
178
  exports.Input = Input.Input;
179
179
  exports.Kbd = Kbd.KbdNamespace;
@@ -1,4 +1,4 @@
1
- export { T as TimePicker, a as TimePickerPanel } from '../TimePicker-CJ8K2zea.js';
1
+ export { T as TimePicker, a as TimePickerPanel } from '../TimePicker-DNeKmsBO.js';
2
2
  import 'react/jsx-runtime';
3
3
  import 'react';
4
4
  import '../primitives/Popover.js';
@@ -27,7 +27,7 @@ export { S as Stepper } from '../Stepper-GK8gDn-s.js';
27
27
  export { S as Switch } from '../Switch-C9fqpoNR.js';
28
28
  export { T as Tabs } from '../Tabs-DaXiF_67.js';
29
29
  export { T as Textarea } from '../Textarea-CUe09-sr.js';
30
- export { T as TimePicker, a as TimePickerPanel } from '../TimePicker-CJ8K2zea.js';
30
+ export { T as TimePicker, a as TimePickerPanel } from '../TimePicker-DNeKmsBO.js';
31
31
  export { T as Toastr } from '../Toastr-Dhl8V1V2.js';
32
32
  export { T as Tooltip } from '../Tooltip-DWDsgyx7.js';
33
33
  export { T as TranslationProvider } from '../TranslationProvider-DKdbPweu.js';
package/dist/index.js CHANGED
@@ -33,7 +33,7 @@ export { S as Stepper } from './Stepper-GK8gDn-s.js';
33
33
  export { S as Switch } from './Switch-C9fqpoNR.js';
34
34
  export { T as Tabs } from './Tabs-DaXiF_67.js';
35
35
  export { T as Textarea } from './Textarea-CUe09-sr.js';
36
- export { T as TimePicker } from './TimePicker-CJ8K2zea.js';
36
+ export { T as TimePicker } from './TimePicker-DNeKmsBO.js';
37
37
  export { T as Toastr } from './Toastr-Dhl8V1V2.js';
38
38
  export { T as Tooltip } from './Tooltip-DWDsgyx7.js';
39
39
  export { T as Tree } from './Tree-Cf0rLcX9.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bigbinary/neeto-atoms",
3
- "version": "1.1.3",
3
+ "version": "1.1.4",
4
4
  "author": "BigBinary",
5
5
  "license": "MIT",
6
6
  "engines": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimePicker-CJ8K2zea.js","sources":["../src/components/TimePicker/constants.ts","../src/components/TimePicker/TimeColumn.tsx","../src/components/TimePicker/TimePickerPanel.tsx","../src/components/TimePicker/TimePicker.tsx"],"sourcesContent":["export const COLUMN_HEIGHT = 224;\nexport const ITEM_HEIGHT = 32;\nexport const PERIODS = [\"AM\", \"PM\"] as const;\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 React, { useEffect, useRef } from \"react\";\n\nimport { Button } from \"src/primitives/Button\";\nimport { ScrollArea } from \"src/primitives/ScrollArea\";\nimport { cn } from \"src/shadcn/lib/utils\";\n\nimport { COLUMN_HEIGHT, ITEM_HEIGHT } from \"./constants\";\nimport { padNumber } from \"./utils\";\n\ninterface TimeColumnProps {\n items: (number | string)[];\n selected: number | string;\n onSelect: (value: number | string) => void;\n disabled?: boolean;\n className?: string;\n padStart?: number;\n}\n\nconst TimeColumn: React.FC<TimeColumnProps> = ({\n items,\n selected,\n onSelect,\n disabled = false,\n className,\n padStart = 2,\n}) => {\n const selectedRef = useRef<HTMLButtonElement>(null);\n\n useEffect(() => {\n if (selectedRef.current) {\n selectedRef.current.scrollIntoView({\n block: \"center\",\n behavior: \"smooth\",\n });\n }\n }, [selected]);\n\n return (\n <ScrollArea\n className={cn(\"w-16\", className)}\n style={{ height: COLUMN_HEIGHT }}\n >\n <div\n className=\"flex flex-col items-center py-2\"\n role=\"listbox\"\n aria-label=\"Time selection\"\n >\n {items.map(item => {\n const isSelected = item === selected;\n const displayValue =\n typeof item === \"number\" ? padNumber(item, padStart) : item;\n\n return (\n <Button\n key={item}\n ref={isSelected ? selectedRef : undefined}\n variant={isSelected ? \"default\" : \"ghost\"}\n size=\"sm\"\n role=\"option\"\n aria-selected={isSelected}\n disabled={disabled}\n className={cn(\n \"w-12 justify-center font-mono text-sm\",\n !isSelected && \"text-muted-foreground\"\n )}\n style={{ height: ITEM_HEIGHT }}\n onClick={() => onSelect(item)}\n >\n {displayValue}\n </Button>\n );\n })}\n </div>\n </ScrollArea>\n );\n};\n\nTimeColumn.displayName = \"TimeColumn\";\n\nexport { TimeColumn };\n","import { forwardRef, useCallback, useEffect, useState } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\n\nimport { PERIODS } from \"./constants\";\nimport { TimeColumn } from \"./TimeColumn\";\nimport type { TimePickerPanelProps, TimeValue } from \"./types\";\nimport { generateRange, to12Hour, to24Hour } from \"./utils\";\n\nconst TimePickerPanel = forwardRef<HTMLDivElement, TimePickerPanelProps>(\n (\n {\n value,\n onChange,\n format = \"24\",\n showSeconds = false,\n minuteStep = 1,\n secondStep = 1,\n disabled = false,\n className,\n },\n ref\n ) => {\n const getInitialTime = useCallback(\n (): TimeValue => ({\n hours: value?.hours ?? 0,\n minutes: value?.minutes ?? 0,\n seconds: value?.seconds ?? 0,\n }),\n [value]\n );\n\n const [internalTime, setInternalTime] = useState<TimeValue>(getInitialTime);\n\n useEffect(() => {\n setInternalTime(getInitialTime());\n }, [getInitialTime]);\n\n const hours = format === \"12\" ? generateRange(1, 12) : generateRange(0, 23);\n const minutes = generateRange(0, 59, minuteStep);\n const seconds = generateRange(0, 59, secondStep);\n\n const { hour12, period } =\n format === \"12\"\n ? to12Hour(internalTime.hours)\n : { hour12: internalTime.hours, period: \"AM\" as const };\n\n const handleHourSelect = (hourValue: number | string) => {\n const hour = Number(hourValue);\n const newHours = format === \"12\" ? to24Hour(hour, period) : hour;\n const newTime = { ...internalTime, hours: newHours };\n setInternalTime(newTime);\n onChange?.(newTime);\n };\n\n const handleMinuteSelect = (minuteValue: number | string) => {\n const newTime = { ...internalTime, minutes: Number(minuteValue) };\n setInternalTime(newTime);\n onChange?.(newTime);\n };\n\n const handleSecondSelect = (secondValue: number | string) => {\n const newTime = { ...internalTime, seconds: Number(secondValue) };\n setInternalTime(newTime);\n onChange?.(newTime);\n };\n\n const handlePeriodSelect = (newPeriod: number | string) => {\n const newHours = to24Hour(hour12, newPeriod as \"AM\" | \"PM\");\n const newTime = { ...internalTime, hours: newHours };\n setInternalTime(newTime);\n onChange?.(newTime);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"flex\", className)}\n role=\"group\"\n aria-label=\"Time picker\"\n >\n <TimeColumn\n items={hours}\n selected={format === \"12\" ? hour12 : internalTime.hours}\n onSelect={handleHourSelect}\n disabled={disabled}\n />\n <div className=\"border-inline-end border-border\" />\n <TimeColumn\n items={minutes}\n selected={internalTime.minutes}\n onSelect={handleMinuteSelect}\n disabled={disabled}\n />\n {showSeconds && (\n <>\n <div className=\"border-inline-end border-border\" />\n <TimeColumn\n items={seconds}\n selected={internalTime.seconds ?? 0}\n onSelect={handleSecondSelect}\n disabled={disabled}\n />\n </>\n )}\n {format === \"12\" && (\n <>\n <div className=\"border-inline-end border-border\" />\n <TimeColumn\n items={[...PERIODS]}\n selected={period}\n onSelect={handlePeriodSelect}\n disabled={disabled}\n padStart={0}\n />\n </>\n )}\n </div>\n );\n }\n);\n\nTimePickerPanel.displayName = \"TimePickerPanel\";\n\nexport { TimePickerPanel };\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { Clock, X } from \"lucide-react\";\nimport { Popover, PopoverAnchor, PopoverContent } from \"src/primitives/Popover\";\nimport {\n Field,\n FieldLabel,\n FieldContent,\n FieldDescription,\n FieldError,\n} from \"src/primitives/Field\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { buildTestIdPrefix } from \"src/utils/fieldIds\";\nimport { useControlledOpen } from \"src/hooks/useControlledOpen\";\nimport { useCursorRestore } from \"src/hooks/useCursorRestore\";\nimport { useOutsideClickClose } from \"src/hooks/useOutsideClickClose\";\n\nimport type { Dayjs } from \"dayjs\";\n\nimport { TimePickerPanel } from \"./TimePickerPanel\";\nimport { SIZE_CONFIG } from \"./constants\";\nimport type { TimePickerProps, TimeValue } from \"./types\";\nimport {\n coerceToTimeValue,\n formatTimeDisplay,\n formatTimeWithPattern,\n getDefaultTimeMaskFormat,\n getTimePlaceholder,\n parseTimeString,\n parseTimeWithPattern,\n timeValueEquals,\n timeValueToDayjs,\n} from \"./utils\";\nimport { applyMask, buildMaskTemplate } from \"src/utils/inputMask\";\n\ntype RangeSide = \"from\" | \"to\";\n\nconst TimePicker = forwardRef<HTMLDivElement, TimePickerProps>(\n (\n {\n value,\n onChange,\n onBlur,\n type = \"time\",\n format = \"24\",\n displayFormat,\n showSeconds = false,\n minuteStep = 1,\n secondStep = 1,\n disabled = false,\n placeholder,\n label,\n error,\n helpText,\n size = \"medium\",\n required = false,\n timezone,\n open: openProp,\n onOpenChange,\n needConfirm = true,\n onOk,\n labelProps,\n className,\n dataTestId,\n },\n ref\n ) => {\n const generatedId = useId();\n const errorId = `error_${generatedId}`;\n const helpTextId = `helpText_${generatedId}`;\n const testIdPrefix = buildTestIdPrefix(dataTestId, label);\n const containerRef = useRef<HTMLDivElement>(null);\n const fromInputRef = useRef<HTMLInputElement>(null);\n const toInputRef = useRef<HTMLInputElement>(null);\n const fromCursorRef = useRef<number | null>(null);\n const toCursorRef = useRef<number | null>(null);\n\n const popoverContentId = useRef(\n `timepicker-popover-${generatedId}`\n ).current;\n\n const committedRef = useRef<{\n from: TimeValue | null;\n to: TimeValue | null;\n }>({ from: null, to: null });\n\n const { open, setOpen } = useControlledOpen(openProp, onOpenChange);\n\n const isRange = type === \"range\";\n\n const getInitialTimes = useCallback(() => {\n if (isRange) {\n if (!value || !Array.isArray(value)) {\n return { from: null, to: null };\n }\n\n return {\n from: coerceToTimeValue(value[0]),\n to: coerceToTimeValue(value[1]),\n };\n }\n\n return {\n from: coerceToTimeValue(\n value as TimeValue | Date | Dayjs | string | null | undefined\n ),\n to: null,\n };\n }, [value, isRange]);\n\n const formatOne = useCallback(\n (time: TimeValue | null) =>\n displayFormat\n ? formatTimeWithPattern(time, displayFormat)\n : formatTimeDisplay(time, format, showSeconds),\n [displayFormat, format, showSeconds]\n );\n\n const [activeSide, setActiveSide] = useState<RangeSide>(\"from\");\n const [fromTime, setFromTime] = useState(() => getInitialTimes().from);\n const [toTime, setToTime] = useState(() => getInitialTimes().to);\n\n const [fromText, setFromText] = useState(() =>\n formatOne(getInitialTimes().from)\n );\n const [toText, setToText] = useState(() => formatOne(getInitialTimes().to));\n\n const parseOne = (text: string): TimeValue | null =>\n displayFormat\n ? parseTimeWithPattern(text, displayFormat)\n : parseTimeString(text, format);\n\n const emitChange = (from: TimeValue | null, to: TimeValue | null) => {\n if (isRange) {\n if (!from || !to) {\n onChange?.(null, [\"\", \"\"]);\n\n return;\n }\n\n onChange?.(\n [timeValueToDayjs(from), timeValueToDayjs(to)],\n [formatOne(from), formatOne(to)]\n );\n\n return;\n }\n\n if (!from) {\n onChange?.(null, \"\");\n\n return;\n }\n\n onChange?.(timeValueToDayjs(from), formatOne(from));\n };\n\n const commitPendingOnClose = useCallback(() => {\n if (!needConfirm) {\n setFromText(formatOne(fromTime));\n setToText(formatOne(toTime));\n\n return;\n }\n\n const { from: committedFrom, to: committedTo } = committedRef.current;\n const unchanged =\n timeValueEquals(fromTime, committedFrom) &&\n timeValueEquals(toTime, committedTo);\n if (unchanged) return;\n\n emitChange(fromTime, toTime);\n committedRef.current = { from: fromTime, to: toTime };\n }, [needConfirm, fromTime, toTime, formatOne, isRange, onChange]);\n\n const closePopover = useCallback(() => {\n commitPendingOnClose();\n setOpen(false);\n }, [commitPendingOnClose, setOpen]);\n\n useOutsideClickClose({\n enabled: open,\n containerRef,\n popoverElementId: popoverContentId,\n onClose: closePopover,\n });\n\n const maskTemplate = useMemo(\n () =>\n displayFormat\n ? null\n : buildMaskTemplate(getDefaultTimeMaskFormat(format, showSeconds)),\n [displayFormat, format, showSeconds]\n );\n\n const handleOk = () => {\n if (isRange && activeSide === \"from\" && fromTime && !toTime) {\n setActiveSide(\"to\");\n toInputRef.current?.focus();\n\n return;\n }\n\n committedRef.current = { from: fromTime, to: toTime };\n emitChange(fromTime, toTime);\n\n if (isRange) {\n if (fromTime && toTime) {\n onOk?.([timeValueToDayjs(fromTime), timeValueToDayjs(toTime)]);\n } else {\n onOk?.(null);\n }\n } else {\n onOk?.(fromTime ? timeValueToDayjs(fromTime) : null);\n }\n\n setOpen(false);\n };\n\n const handlePanelChange = (time: TimeValue) => {\n if (!isRange) {\n setFromTime(time);\n setFromText(formatOne(time));\n if (!needConfirm) emitChange(time, null);\n\n return;\n }\n\n if (activeSide === \"from\") {\n setFromTime(time);\n setFromText(formatOne(time));\n if (!needConfirm) emitChange(time, toTime);\n\n return;\n }\n\n setToTime(time);\n setToText(formatOne(time));\n if (!needConfirm) emitChange(fromTime, time);\n };\n\n const buildInputChangeHandler =\n (side: RangeSide) => (e: React.ChangeEvent<HTMLInputElement>) => {\n let text = e.target.value;\n const previousText = side === \"from\" ? fromText : toText;\n\n if (maskTemplate) {\n const masked = applyMask(\n text,\n maskTemplate,\n previousText,\n e.target.selectionStart\n );\n text = masked.text;\n\n if (side === \"from\") fromCursorRef.current = masked.cursorPosition;\n else toCursorRef.current = masked.cursorPosition;\n }\n\n if (side === \"from\") setFromText(text);\n else setToText(text);\n\n const parsed = parseOne(text);\n if (!parsed) return;\n\n if (side === \"from\") {\n setFromTime(parsed);\n if (!needConfirm) emitChange(parsed, toTime);\n } else {\n setToTime(parsed);\n if (!needConfirm) emitChange(fromTime, parsed);\n }\n };\n\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Escape\") {\n const { from, to } = committedRef.current;\n setFromTime(from);\n setToTime(to);\n setFromText(formatOne(from));\n setToText(formatOne(to));\n setOpen(false);\n\n return;\n }\n\n if (e.key !== \"Enter\") return;\n\n if (needConfirm) {\n handleOk();\n\n return;\n }\n\n setFromText(formatOne(fromTime));\n setToText(formatOne(toTime));\n setOpen(false);\n };\n\n const handleInputFocus = (side: RangeSide) => {\n setActiveSide(side);\n if (!open) setOpen(true);\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 const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n\n setFromTime(null);\n setToTime(null);\n setFromText(\"\");\n setToText(\"\");\n\n committedRef.current = { from: null, to: null };\n onChange?.(null, isRange ? [\"\", \"\"] : \"\");\n };\n\n useEffect(() => {\n if (value === undefined) return;\n\n const next = getInitialTimes();\n setFromTime(next.from);\n setToTime(next.to);\n if (open) return;\n\n setFromText(formatOne(next.from));\n setToText(formatOne(next.to));\n committedRef.current = { from: next.from, to: next.to };\n }, [value, getInitialTimes, formatOne, open]);\n\n useEffect(() => {\n if (!open) return;\n\n committedRef.current = { from: fromTime, to: toTime };\n }, [open]);\n\n useCursorRestore([\n { inputRef: fromInputRef, cursorRef: fromCursorRef },\n { inputRef: toInputRef, cursorRef: toCursorRef },\n ]);\n\n const singlePlaceholder = getTimePlaceholder(\n format,\n showSeconds,\n displayFormat\n );\n\n const hasField = !!(label || error || helpText);\n const sizeConfig = SIZE_CONFIG[size];\n const hasAnyValue = !!(fromText || toText);\n const activeTime = activeSide === \"from\" ? fromTime : toTime;\n\n const ariaDescribedBy =\n [error ? errorId : null, helpText ? helpTextId : null]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n const inputBaseClass = cn(\n \"min-w-0 bg-transparent outline-none placeholder:text-placeholder\",\n \"disabled:cursor-not-allowed\",\n sizeConfig.input\n );\n\n const triggerContent = (\n <Popover open={open}>\n <PopoverAnchor asChild>\n <div\n ref={containerRef}\n className={cn(\n \"relative flex w-full 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 sizeConfig.trigger,\n !hasField && className\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 <Clock\n className={cn(\n \"shrink-0 text-muted-foreground\",\n sizeConfig.icon\n )}\n />\n )}\n {isRange ? (\n <>\n <input\n ref={fromInputRef}\n type=\"text\"\n disabled={disabled}\n aria-label={\n label ? `${label} start time` : \"Pick a start time\"\n }\n aria-describedby={ariaDescribedBy}\n aria-invalid={!!error || undefined}\n placeholder={placeholder ?? singlePlaceholder}\n value={fromText}\n onChange={buildInputChangeHandler(\"from\")}\n onKeyDown={handleInputKeyDown}\n onFocus={() => handleInputFocus(\"from\")}\n onBlur={handleInputBlur}\n className={cn(inputBaseClass, \"flex-1\")}\n />\n <span\n aria-hidden=\"true\"\n className=\"shrink-0 text-muted-foreground\"\n >\n ~\n </span>\n <input\n ref={toInputRef}\n type=\"text\"\n disabled={disabled}\n aria-label={label ? `${label} end time` : \"Pick an end time\"}\n aria-describedby={ariaDescribedBy}\n aria-invalid={!!error || undefined}\n placeholder={placeholder ?? singlePlaceholder}\n value={toText}\n onChange={buildInputChangeHandler(\"to\")}\n onKeyDown={handleInputKeyDown}\n onFocus={() => handleInputFocus(\"to\")}\n onBlur={handleInputBlur}\n className={cn(inputBaseClass, \"flex-1\")}\n />\n </>\n ) : (\n <input\n ref={fromInputRef}\n type=\"text\"\n disabled={disabled}\n aria-label={label || \"Pick a time\"}\n aria-describedby={ariaDescribedBy}\n aria-invalid={!!error || undefined}\n placeholder={placeholder ?? singlePlaceholder}\n value={fromText}\n onChange={buildInputChangeHandler(\"from\")}\n onKeyDown={handleInputKeyDown}\n onFocus={() => handleInputFocus(\"from\")}\n onBlur={handleInputBlur}\n className={cn(inputBaseClass, \"flex-1\")}\n />\n )}\n <button\n type=\"button\"\n onPointerDown={e => e.preventDefault()}\n onClick={handleClear}\n className={cn(\n \"absolute inset-y-0 end-2 flex items-center text-muted-foreground hover:text-foreground focus:outline-none\",\n !(hasAnyValue && !disabled) && \"invisible\"\n )}\n aria-label={isRange ? \"Clear time range\" : \"Clear time\"}\n tabIndex={-1}\n >\n <X className={sizeConfig.icon} />\n </button>\n </div>\n </PopoverAnchor>\n {open && (\n <PopoverContent\n id={popoverContentId}\n className=\"w-auto p-0\"\n align=\"start\"\n onOpenAutoFocus={e => e.preventDefault()}\n onCloseAutoFocus={e => e.preventDefault()}\n onPointerDownOutside={e => e.preventDefault()}\n onInteractOutside={e => e.preventDefault()}\n >\n <TimePickerPanel\n value={activeTime ?? undefined}\n onChange={handlePanelChange}\n format={format}\n showSeconds={showSeconds}\n minuteStep={minuteStep}\n secondStep={secondStep}\n disabled={disabled}\n />\n {needConfirm && (\n <div className=\"flex items-center justify-end border-t border-border px-3 py-2\">\n <button\n type=\"button\"\n onClick={handleOk}\n className=\"rounded bg-primary px-3 py-1 text-sm font-medium text-primary-foreground hover:bg-primary/90 focus:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n OK\n </button>\n </div>\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 <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 {triggerContent}\n {!!error && (\n <FieldError\n id={errorId}\n data-testid={`${testIdPrefix}-input-error`}\n >\n {error}\n </FieldError>\n )}\n {helpText && (\n <FieldDescription\n id={helpTextId}\n data-testid={`${testIdPrefix}-input-help`}\n >\n {helpText}\n </FieldDescription>\n )}\n </FieldContent>\n </Field>\n );\n }\n);\n\nTimePicker.displayName = \"TimePicker\";\n\nexport { TimePicker };\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimePicker-BhOW7vbV.js","sources":["../../src/components/TimePicker/constants.ts","../../src/components/TimePicker/TimeColumn.tsx","../../src/components/TimePicker/TimePickerPanel.tsx","../../src/components/TimePicker/TimePicker.tsx"],"sourcesContent":["export const COLUMN_HEIGHT = 224;\nexport const ITEM_HEIGHT = 32;\nexport const PERIODS = [\"AM\", \"PM\"] as const;\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 React, { useEffect, useRef } from \"react\";\n\nimport { Button } from \"src/primitives/Button\";\nimport { ScrollArea } from \"src/primitives/ScrollArea\";\nimport { cn } from \"src/shadcn/lib/utils\";\n\nimport { COLUMN_HEIGHT, ITEM_HEIGHT } from \"./constants\";\nimport { padNumber } from \"./utils\";\n\ninterface TimeColumnProps {\n items: (number | string)[];\n selected: number | string;\n onSelect: (value: number | string) => void;\n disabled?: boolean;\n className?: string;\n padStart?: number;\n}\n\nconst TimeColumn: React.FC<TimeColumnProps> = ({\n items,\n selected,\n onSelect,\n disabled = false,\n className,\n padStart = 2,\n}) => {\n const selectedRef = useRef<HTMLButtonElement>(null);\n\n useEffect(() => {\n if (selectedRef.current) {\n selectedRef.current.scrollIntoView({\n block: \"center\",\n behavior: \"smooth\",\n });\n }\n }, [selected]);\n\n return (\n <ScrollArea\n className={cn(\"w-16\", className)}\n style={{ height: COLUMN_HEIGHT }}\n >\n <div\n className=\"flex flex-col items-center py-2\"\n role=\"listbox\"\n aria-label=\"Time selection\"\n >\n {items.map(item => {\n const isSelected = item === selected;\n const displayValue =\n typeof item === \"number\" ? padNumber(item, padStart) : item;\n\n return (\n <Button\n key={item}\n ref={isSelected ? selectedRef : undefined}\n variant={isSelected ? \"default\" : \"ghost\"}\n size=\"sm\"\n role=\"option\"\n aria-selected={isSelected}\n disabled={disabled}\n className={cn(\n \"w-12 justify-center font-mono text-sm\",\n !isSelected && \"text-muted-foreground\"\n )}\n style={{ height: ITEM_HEIGHT }}\n onClick={() => onSelect(item)}\n >\n {displayValue}\n </Button>\n );\n })}\n </div>\n </ScrollArea>\n );\n};\n\nTimeColumn.displayName = \"TimeColumn\";\n\nexport { TimeColumn };\n","import { forwardRef, useCallback, useEffect, useState } from \"react\";\n\nimport { cn } from \"src/shadcn/lib/utils\";\n\nimport { PERIODS } from \"./constants\";\nimport { TimeColumn } from \"./TimeColumn\";\nimport type { TimePickerPanelProps, TimeValue } from \"./types\";\nimport { generateRange, to12Hour, to24Hour } from \"./utils\";\n\nconst TimePickerPanel = forwardRef<HTMLDivElement, TimePickerPanelProps>(\n (\n {\n value,\n onChange,\n format = \"24\",\n showSeconds = false,\n minuteStep = 1,\n secondStep = 1,\n disabled = false,\n className,\n },\n ref\n ) => {\n const getInitialTime = useCallback(\n (): TimeValue => ({\n hours: value?.hours ?? 0,\n minutes: value?.minutes ?? 0,\n seconds: value?.seconds ?? 0,\n }),\n [value]\n );\n\n const [internalTime, setInternalTime] = useState<TimeValue>(getInitialTime);\n\n useEffect(() => {\n setInternalTime(getInitialTime());\n }, [getInitialTime]);\n\n const hours = format === \"12\" ? generateRange(1, 12) : generateRange(0, 23);\n const minutes = generateRange(0, 59, minuteStep);\n const seconds = generateRange(0, 59, secondStep);\n\n const { hour12, period } =\n format === \"12\"\n ? to12Hour(internalTime.hours)\n : { hour12: internalTime.hours, period: \"AM\" as const };\n\n const handleHourSelect = (hourValue: number | string) => {\n const hour = Number(hourValue);\n const newHours = format === \"12\" ? to24Hour(hour, period) : hour;\n const newTime = { ...internalTime, hours: newHours };\n setInternalTime(newTime);\n onChange?.(newTime);\n };\n\n const handleMinuteSelect = (minuteValue: number | string) => {\n const newTime = { ...internalTime, minutes: Number(minuteValue) };\n setInternalTime(newTime);\n onChange?.(newTime);\n };\n\n const handleSecondSelect = (secondValue: number | string) => {\n const newTime = { ...internalTime, seconds: Number(secondValue) };\n setInternalTime(newTime);\n onChange?.(newTime);\n };\n\n const handlePeriodSelect = (newPeriod: number | string) => {\n const newHours = to24Hour(hour12, newPeriod as \"AM\" | \"PM\");\n const newTime = { ...internalTime, hours: newHours };\n setInternalTime(newTime);\n onChange?.(newTime);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"flex\", className)}\n role=\"group\"\n aria-label=\"Time picker\"\n >\n <TimeColumn\n items={hours}\n selected={format === \"12\" ? hour12 : internalTime.hours}\n onSelect={handleHourSelect}\n disabled={disabled}\n />\n <div className=\"border-inline-end border-border\" />\n <TimeColumn\n items={minutes}\n selected={internalTime.minutes}\n onSelect={handleMinuteSelect}\n disabled={disabled}\n />\n {showSeconds && (\n <>\n <div className=\"border-inline-end border-border\" />\n <TimeColumn\n items={seconds}\n selected={internalTime.seconds ?? 0}\n onSelect={handleSecondSelect}\n disabled={disabled}\n />\n </>\n )}\n {format === \"12\" && (\n <>\n <div className=\"border-inline-end border-border\" />\n <TimeColumn\n items={[...PERIODS]}\n selected={period}\n onSelect={handlePeriodSelect}\n disabled={disabled}\n padStart={0}\n />\n </>\n )}\n </div>\n );\n }\n);\n\nTimePickerPanel.displayName = \"TimePickerPanel\";\n\nexport { TimePickerPanel };\n","import React, {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { Clock, X } from \"lucide-react\";\nimport { Popover, PopoverAnchor, PopoverContent } from \"src/primitives/Popover\";\nimport {\n Field,\n FieldLabel,\n FieldContent,\n FieldDescription,\n FieldError,\n} from \"src/primitives/Field\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport { buildTestIdPrefix } from \"src/utils/fieldIds\";\nimport { useControlledOpen } from \"src/hooks/useControlledOpen\";\nimport { useCursorRestore } from \"src/hooks/useCursorRestore\";\nimport { useOutsideClickClose } from \"src/hooks/useOutsideClickClose\";\n\nimport type { Dayjs } from \"dayjs\";\n\nimport { TimePickerPanel } from \"./TimePickerPanel\";\nimport { SIZE_CONFIG } from \"./constants\";\nimport type { TimePickerProps, TimeValue } from \"./types\";\nimport {\n coerceToTimeValue,\n formatTimeDisplay,\n formatTimeWithPattern,\n getDefaultTimeMaskFormat,\n getTimePlaceholder,\n parseTimeString,\n parseTimeWithPattern,\n timeValueEquals,\n timeValueToDayjs,\n} from \"./utils\";\nimport { applyMask, buildMaskTemplate } from \"src/utils/inputMask\";\n\ntype RangeSide = \"from\" | \"to\";\n\nconst TimePicker = forwardRef<HTMLDivElement, TimePickerProps>(\n (\n {\n value,\n onChange,\n onBlur,\n type = \"time\",\n format = \"24\",\n displayFormat,\n showSeconds = false,\n minuteStep = 1,\n secondStep = 1,\n disabled = false,\n placeholder,\n label,\n error,\n helpText,\n size = \"medium\",\n required = false,\n timezone,\n open: openProp,\n onOpenChange,\n needConfirm = true,\n onOk,\n labelProps,\n className,\n dataTestId,\n },\n ref\n ) => {\n const generatedId = useId();\n const errorId = `error_${generatedId}`;\n const helpTextId = `helpText_${generatedId}`;\n const testIdPrefix = buildTestIdPrefix(dataTestId, label);\n const containerRef = useRef<HTMLDivElement>(null);\n const fromInputRef = useRef<HTMLInputElement>(null);\n const toInputRef = useRef<HTMLInputElement>(null);\n const fromCursorRef = useRef<number | null>(null);\n const toCursorRef = useRef<number | null>(null);\n\n const popoverContentId = useRef(\n `timepicker-popover-${generatedId}`\n ).current;\n\n const committedRef = useRef<{\n from: TimeValue | null;\n to: TimeValue | null;\n }>({ from: null, to: null });\n\n const { open, setOpen } = useControlledOpen(openProp, onOpenChange);\n\n const isRange = type === \"range\";\n\n const getInitialTimes = useCallback(() => {\n if (isRange) {\n if (!value || !Array.isArray(value)) {\n return { from: null, to: null };\n }\n\n return {\n from: coerceToTimeValue(value[0]),\n to: coerceToTimeValue(value[1]),\n };\n }\n\n return {\n from: coerceToTimeValue(\n value as TimeValue | Date | Dayjs | string | null | undefined\n ),\n to: null,\n };\n }, [value, isRange]);\n\n const formatOne = useCallback(\n (time: TimeValue | null) =>\n displayFormat\n ? formatTimeWithPattern(time, displayFormat)\n : formatTimeDisplay(time, format, showSeconds),\n [displayFormat, format, showSeconds]\n );\n\n const [activeSide, setActiveSide] = useState<RangeSide>(\"from\");\n const [fromTime, setFromTime] = useState(() => getInitialTimes().from);\n const [toTime, setToTime] = useState(() => getInitialTimes().to);\n\n const [fromText, setFromText] = useState(() =>\n formatOne(getInitialTimes().from)\n );\n const [toText, setToText] = useState(() => formatOne(getInitialTimes().to));\n\n const parseOne = (text: string): TimeValue | null =>\n displayFormat\n ? parseTimeWithPattern(text, displayFormat)\n : parseTimeString(text, format);\n\n const emitChange = (from: TimeValue | null, to: TimeValue | null) => {\n if (isRange) {\n if (!from || !to) {\n onChange?.(null, [\"\", \"\"]);\n\n return;\n }\n\n onChange?.(\n [timeValueToDayjs(from), timeValueToDayjs(to)],\n [formatOne(from), formatOne(to)]\n );\n\n return;\n }\n\n if (!from) {\n onChange?.(null, \"\");\n\n return;\n }\n\n onChange?.(timeValueToDayjs(from), formatOne(from));\n };\n\n const commitPendingOnClose = useCallback(() => {\n if (!needConfirm) {\n setFromText(formatOne(fromTime));\n setToText(formatOne(toTime));\n\n return;\n }\n\n const { from: committedFrom, to: committedTo } = committedRef.current;\n const unchanged =\n timeValueEquals(fromTime, committedFrom) &&\n timeValueEquals(toTime, committedTo);\n if (unchanged) return;\n\n emitChange(fromTime, toTime);\n committedRef.current = { from: fromTime, to: toTime };\n }, [needConfirm, fromTime, toTime, formatOne, isRange, onChange]);\n\n const closePopover = useCallback(() => {\n commitPendingOnClose();\n setOpen(false);\n }, [commitPendingOnClose, setOpen]);\n\n useOutsideClickClose({\n enabled: open,\n containerRef,\n popoverElementId: popoverContentId,\n onClose: closePopover,\n });\n\n const maskTemplate = useMemo(\n () =>\n displayFormat\n ? null\n : buildMaskTemplate(getDefaultTimeMaskFormat(format, showSeconds)),\n [displayFormat, format, showSeconds]\n );\n\n const handleOk = () => {\n if (isRange && activeSide === \"from\" && fromTime && !toTime) {\n setActiveSide(\"to\");\n toInputRef.current?.focus();\n\n return;\n }\n\n committedRef.current = { from: fromTime, to: toTime };\n emitChange(fromTime, toTime);\n\n if (isRange) {\n if (fromTime && toTime) {\n onOk?.([timeValueToDayjs(fromTime), timeValueToDayjs(toTime)]);\n } else {\n onOk?.(null);\n }\n } else {\n onOk?.(fromTime ? timeValueToDayjs(fromTime) : null);\n }\n\n setOpen(false);\n };\n\n const handlePanelChange = (time: TimeValue) => {\n if (!isRange) {\n setFromTime(time);\n setFromText(formatOne(time));\n if (!needConfirm) emitChange(time, null);\n\n return;\n }\n\n if (activeSide === \"from\") {\n setFromTime(time);\n setFromText(formatOne(time));\n if (!needConfirm) emitChange(time, toTime);\n\n return;\n }\n\n setToTime(time);\n setToText(formatOne(time));\n if (!needConfirm) emitChange(fromTime, time);\n };\n\n const buildInputChangeHandler =\n (side: RangeSide) => (e: React.ChangeEvent<HTMLInputElement>) => {\n let text = e.target.value;\n const previousText = side === \"from\" ? fromText : toText;\n\n if (maskTemplate) {\n const masked = applyMask(\n text,\n maskTemplate,\n previousText,\n e.target.selectionStart\n );\n text = masked.text;\n\n if (side === \"from\") fromCursorRef.current = masked.cursorPosition;\n else toCursorRef.current = masked.cursorPosition;\n }\n\n if (side === \"from\") setFromText(text);\n else setToText(text);\n\n const parsed = parseOne(text);\n if (!parsed) return;\n\n if (side === \"from\") {\n setFromTime(parsed);\n if (!needConfirm) emitChange(parsed, toTime);\n } else {\n setToTime(parsed);\n if (!needConfirm) emitChange(fromTime, parsed);\n }\n };\n\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Escape\") {\n const { from, to } = committedRef.current;\n setFromTime(from);\n setToTime(to);\n setFromText(formatOne(from));\n setToText(formatOne(to));\n setOpen(false);\n\n return;\n }\n\n if (e.key !== \"Enter\") return;\n\n if (needConfirm) {\n handleOk();\n\n return;\n }\n\n setFromText(formatOne(fromTime));\n setToText(formatOne(toTime));\n setOpen(false);\n };\n\n const handleInputFocus = (side: RangeSide) => {\n setActiveSide(side);\n if (!open) setOpen(true);\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 const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n e.preventDefault();\n\n setFromTime(null);\n setToTime(null);\n setFromText(\"\");\n setToText(\"\");\n\n committedRef.current = { from: null, to: null };\n onChange?.(null, isRange ? [\"\", \"\"] : \"\");\n };\n\n useEffect(() => {\n if (value === undefined) return;\n\n const next = getInitialTimes();\n setFromTime(next.from);\n setToTime(next.to);\n if (open) return;\n\n setFromText(formatOne(next.from));\n setToText(formatOne(next.to));\n committedRef.current = { from: next.from, to: next.to };\n }, [value, getInitialTimes, formatOne, open]);\n\n useEffect(() => {\n if (!open) return;\n\n committedRef.current = { from: fromTime, to: toTime };\n }, [open]);\n\n useCursorRestore([\n { inputRef: fromInputRef, cursorRef: fromCursorRef },\n { inputRef: toInputRef, cursorRef: toCursorRef },\n ]);\n\n const singlePlaceholder = getTimePlaceholder(\n format,\n showSeconds,\n displayFormat\n );\n\n const hasField = !!(label || error || helpText);\n const sizeConfig = SIZE_CONFIG[size];\n const hasAnyValue = !!(fromText || toText);\n const activeTime = activeSide === \"from\" ? fromTime : toTime;\n\n const ariaDescribedBy =\n [error ? errorId : null, helpText ? helpTextId : null]\n .filter(Boolean)\n .join(\" \") || undefined;\n\n const inputBaseClass = cn(\n \"min-w-0 bg-transparent outline-none placeholder:text-placeholder\",\n \"disabled:cursor-not-allowed\",\n sizeConfig.input\n );\n\n const triggerContent = (\n <Popover open={open}>\n <PopoverAnchor asChild>\n <div\n ref={containerRef}\n className={cn(\n \"relative flex w-full 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 sizeConfig.trigger,\n !hasField && className\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 <Clock\n className={cn(\n \"shrink-0 text-muted-foreground\",\n sizeConfig.icon\n )}\n />\n )}\n {isRange ? (\n <>\n <input\n ref={fromInputRef}\n type=\"text\"\n disabled={disabled}\n aria-label={\n label ? `${label} start time` : \"Pick a start time\"\n }\n aria-describedby={ariaDescribedBy}\n aria-invalid={!!error || undefined}\n placeholder={placeholder ?? singlePlaceholder}\n value={fromText}\n onChange={buildInputChangeHandler(\"from\")}\n onKeyDown={handleInputKeyDown}\n onFocus={() => handleInputFocus(\"from\")}\n onBlur={handleInputBlur}\n className={cn(inputBaseClass, \"flex-1\")}\n />\n <span\n aria-hidden=\"true\"\n className=\"shrink-0 text-muted-foreground\"\n >\n ~\n </span>\n <input\n ref={toInputRef}\n type=\"text\"\n disabled={disabled}\n aria-label={label ? `${label} end time` : \"Pick an end time\"}\n aria-describedby={ariaDescribedBy}\n aria-invalid={!!error || undefined}\n placeholder={placeholder ?? singlePlaceholder}\n value={toText}\n onChange={buildInputChangeHandler(\"to\")}\n onKeyDown={handleInputKeyDown}\n onFocus={() => handleInputFocus(\"to\")}\n onBlur={handleInputBlur}\n className={cn(inputBaseClass, \"flex-1\")}\n />\n </>\n ) : (\n <input\n ref={fromInputRef}\n type=\"text\"\n disabled={disabled}\n aria-label={label || \"Pick a time\"}\n aria-describedby={ariaDescribedBy}\n aria-invalid={!!error || undefined}\n placeholder={placeholder ?? singlePlaceholder}\n value={fromText}\n onChange={buildInputChangeHandler(\"from\")}\n onKeyDown={handleInputKeyDown}\n onFocus={() => handleInputFocus(\"from\")}\n onBlur={handleInputBlur}\n className={cn(inputBaseClass, \"flex-1\")}\n />\n )}\n <button\n type=\"button\"\n onPointerDown={e => e.preventDefault()}\n onClick={handleClear}\n className={cn(\n \"absolute inset-y-0 end-2 flex items-center text-muted-foreground hover:text-foreground focus:outline-none\",\n !(hasAnyValue && !disabled) && \"invisible\"\n )}\n aria-label={isRange ? \"Clear time range\" : \"Clear time\"}\n tabIndex={-1}\n >\n <X className={sizeConfig.icon} />\n </button>\n </div>\n </PopoverAnchor>\n {open && (\n <PopoverContent\n id={popoverContentId}\n className=\"w-auto p-0\"\n align=\"start\"\n onOpenAutoFocus={e => e.preventDefault()}\n onCloseAutoFocus={e => e.preventDefault()}\n onPointerDownOutside={e => e.preventDefault()}\n onInteractOutside={e => e.preventDefault()}\n >\n <TimePickerPanel\n value={activeTime ?? undefined}\n onChange={handlePanelChange}\n format={format}\n showSeconds={showSeconds}\n minuteStep={minuteStep}\n secondStep={secondStep}\n disabled={disabled}\n />\n {needConfirm && (\n <div className=\"flex items-center justify-end border-t border-border px-3 py-2\">\n <button\n type=\"button\"\n onClick={handleOk}\n className=\"rounded bg-primary px-3 py-1 text-sm font-medium text-primary-foreground hover:bg-primary/90 focus:outline-none focus-visible:ring-2 focus-visible:ring-ring\"\n >\n OK\n </button>\n </div>\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 <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 {triggerContent}\n {!!error && (\n <FieldError\n id={errorId}\n data-testid={`${testIdPrefix}-input-error`}\n >\n {error}\n </FieldError>\n )}\n {helpText && (\n <FieldDescription\n id={helpTextId}\n data-testid={`${testIdPrefix}-input-help`}\n >\n {helpText}\n </FieldDescription>\n )}\n </FieldContent>\n </Field>\n );\n }\n);\n\nTimePicker.displayName = \"TimePicker\";\n\nexport { TimePicker };\n"],"names":["useRef","useEffect","jsx","ScrollArea","cn","padNumber","Button","forwardRef","useCallback","useState","generateRange","to12Hour","to24Hour","jsxs","Fragment","useId","buildTestIdPrefix","useControlledOpen","coerceToTimeValue","formatTimeWithPattern","formatTimeDisplay","parseTimeWithPattern","parseTimeString","timeValueToDayjs","timeValueEquals","useOutsideClickClose","useMemo","buildMaskTemplate","getDefaultTimeMaskFormat","applyMask","useCursorRestore","getTimePlaceholder","Popover","PopoverAnchor","Clock","X","PopoverContent","Field","FieldLabel","FieldContent","FieldError","FieldDescription"],"mappings":"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"}