@bigbinary/neeto-atoms 1.0.37 → 1.0.39

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 (59) hide show
  1. package/dist/DatePicker-CJfkNORC.js +634 -0
  2. package/dist/DatePicker-CJfkNORC.js.map +1 -0
  3. package/dist/{TimePicker-wPi2k6Z8.js → TimePicker-D4cwQB7b.js} +50 -32
  4. package/dist/TimePicker-D4cwQB7b.js.map +1 -0
  5. package/dist/TimePickerPanel-DN5mK2he.js +436 -0
  6. package/dist/TimePickerPanel-DN5mK2he.js.map +1 -0
  7. package/dist/cjs/DatePicker-DaVdS--q.js +636 -0
  8. package/dist/cjs/DatePicker-DaVdS--q.js.map +1 -0
  9. package/dist/cjs/{TimePicker-BG_vYH3r.js → TimePicker-DrHKSjhU.js} +49 -31
  10. package/dist/cjs/TimePicker-DrHKSjhU.js.map +1 -0
  11. package/dist/cjs/TimePickerPanel-Df904uM-.js +446 -0
  12. package/dist/cjs/TimePickerPanel-Df904uM-.js.map +1 -0
  13. package/dist/cjs/components/DatePicker.js +4 -3
  14. package/dist/cjs/components/DatePicker.js.map +1 -1
  15. package/dist/cjs/components/TimePicker.js +3 -2
  16. package/dist/cjs/components/TimePicker.js.map +1 -1
  17. package/dist/cjs/components/index.js +5 -4
  18. package/dist/cjs/components/index.js.map +1 -1
  19. package/dist/cjs/index.js +11 -247
  20. package/dist/cjs/index.js.map +1 -1
  21. package/dist/cjs/primitives/Calendar.js +8129 -10
  22. package/dist/cjs/primitives/Calendar.js.map +1 -1
  23. package/dist/cjs/primitives/index.js +1 -1
  24. package/dist/components/DatePicker/constants.d.ts +0 -1
  25. package/dist/components/DatePicker/types.d.ts +7 -5
  26. package/dist/components/DatePicker/utils.d.ts +18 -3
  27. package/dist/components/DatePicker.js +4 -3
  28. package/dist/components/DatePicker.js.map +1 -1
  29. package/dist/components/TimePicker/types.d.ts +3 -3
  30. package/dist/components/TimePicker/utils.d.ts +13 -1
  31. package/dist/components/TimePicker.js +3 -2
  32. package/dist/components/TimePicker.js.map +1 -1
  33. package/dist/components/index.js +5 -4
  34. package/dist/components/index.js.map +1 -1
  35. package/dist/index.d.ts +2 -1
  36. package/dist/index.js +9 -239
  37. package/dist/index.js.map +1 -1
  38. package/dist/primitives/Calendar.js +8112 -8
  39. package/dist/primitives/Calendar.js.map +1 -1
  40. package/dist/primitives/index.js +1 -1
  41. package/dist/utils/inputMask.d.ts +38 -0
  42. package/dist/utils/timezone.d.ts +7 -0
  43. package/package.json +2 -1
  44. package/dist/Calendar-CjOBwDbx.js +0 -8134
  45. package/dist/Calendar-CjOBwDbx.js.map +0 -1
  46. package/dist/DatePicker-CCN3b1oz.js +0 -3166
  47. package/dist/DatePicker-CCN3b1oz.js.map +0 -1
  48. package/dist/TimePicker-wPi2k6Z8.js.map +0 -1
  49. package/dist/TimePickerPanel-DAhz3B2d.js +0 -227
  50. package/dist/TimePickerPanel-DAhz3B2d.js.map +0 -1
  51. package/dist/cjs/Calendar-02KiUZTT.js +0 -8175
  52. package/dist/cjs/Calendar-02KiUZTT.js.map +0 -1
  53. package/dist/cjs/DatePicker-DRQubO2h.js +0 -3168
  54. package/dist/cjs/DatePicker-DRQubO2h.js.map +0 -1
  55. package/dist/cjs/TimePicker-BG_vYH3r.js.map +0 -1
  56. package/dist/cjs/TimePickerPanel-6xA-hjhm.js +0 -233
  57. package/dist/cjs/TimePickerPanel-6xA-hjhm.js.map +0 -1
  58. package/dist/utils/dayjs/index.d.ts +0 -4
  59. package/dist/utils/dayjs/timezonePlugin.d.ts +0 -3
@@ -1,227 +0,0 @@
1
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
- import { useRef, useEffect, forwardRef, useCallback, useState } from 'react';
3
- import { c as cn } from './utils-BJnb9o5c.js';
4
- import { Button } from './primitives/Button.js';
5
- import { ScrollArea } from './primitives/ScrollArea.js';
6
-
7
- const COLUMN_HEIGHT = 224;
8
- const ITEM_HEIGHT = 32;
9
- const PERIODS = ["AM", "PM"];
10
-
11
- const generateRange = (start, end, step = 1) => {
12
- const result = [];
13
- for (let i = start; i <= end; i += step) {
14
- result.push(i);
15
- }
16
- return result;
17
- };
18
- const to12Hour = (hour24) => {
19
- const period = hour24 >= 12 ? "PM" : "AM";
20
- const hour12 = hour24 % 12 || 12;
21
- return { hour12, period };
22
- };
23
- const to24Hour = (hour12, period) => {
24
- if (period === "AM") {
25
- return hour12 === 12 ? 0 : hour12;
26
- }
27
- return hour12 === 12 ? 12 : hour12 + 12;
28
- };
29
- const dateToTimeValue = (date) => ({
30
- hours: date.getHours(),
31
- minutes: date.getMinutes(),
32
- seconds: date.getSeconds()
33
- });
34
- const padNumber = (num, length = 2) => String(num).padStart(length, "0");
35
- const parseTimeString = (input, format) => {
36
- const trimmed = input.trim();
37
- if (!trimmed) return null;
38
- if (format === "12") {
39
- const match2 = trimmed.match(
40
- /^(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?\s*(AM|PM)$/i
41
- );
42
- if (!match2) return null;
43
- const hour12 = parseInt(match2[1], 10);
44
- const minutes2 = parseInt(match2[2], 10);
45
- const seconds2 = match2[3] ? parseInt(match2[3], 10) : 0;
46
- const period = match2[4].toUpperCase();
47
- if (hour12 < 1 || hour12 > 12 || minutes2 > 59 || seconds2 > 59) return null;
48
- return { hours: to24Hour(hour12, period), minutes: minutes2, seconds: seconds2 };
49
- }
50
- const match = trimmed.match(/^(\d{1,2}):(\d{1,2})(?::(\d{1,2}))?$/);
51
- if (!match) return null;
52
- const hours = parseInt(match[1], 10);
53
- const minutes = parseInt(match[2], 10);
54
- const seconds = match[3] ? parseInt(match[3], 10) : 0;
55
- if (hours > 23 || minutes > 59 || seconds > 59) return null;
56
- return { hours, minutes, seconds };
57
- };
58
-
59
- const TimeColumn = ({
60
- items,
61
- selected,
62
- onSelect,
63
- disabled = false,
64
- className,
65
- padStart = 2
66
- }) => {
67
- const selectedRef = useRef(null);
68
- useEffect(() => {
69
- if (selectedRef.current) {
70
- selectedRef.current.scrollIntoView({
71
- block: "center",
72
- behavior: "smooth"
73
- });
74
- }
75
- }, [selected]);
76
- return /* @__PURE__ */ jsx(
77
- ScrollArea,
78
- {
79
- className: cn("w-16", className),
80
- style: { height: COLUMN_HEIGHT },
81
- children: /* @__PURE__ */ jsx(
82
- "div",
83
- {
84
- className: "flex flex-col items-center py-2",
85
- role: "listbox",
86
- "aria-label": "Time selection",
87
- children: items.map((item) => {
88
- const isSelected = item === selected;
89
- const displayValue = typeof item === "number" ? padNumber(item, padStart) : item;
90
- return /* @__PURE__ */ jsx(
91
- Button,
92
- {
93
- ref: isSelected ? selectedRef : void 0,
94
- variant: isSelected ? "default" : "ghost",
95
- size: "sm",
96
- role: "option",
97
- "aria-selected": isSelected,
98
- disabled,
99
- className: cn(
100
- "w-12 justify-center font-mono text-sm",
101
- !isSelected && "text-muted-foreground"
102
- ),
103
- style: { height: ITEM_HEIGHT },
104
- onClick: () => onSelect(item),
105
- children: displayValue
106
- },
107
- item
108
- );
109
- })
110
- }
111
- )
112
- }
113
- );
114
- };
115
- TimeColumn.displayName = "TimeColumn";
116
-
117
- const TimePickerPanel = forwardRef(
118
- ({
119
- value,
120
- onChange,
121
- format = "24",
122
- showSeconds = false,
123
- minuteStep = 1,
124
- secondStep = 1,
125
- disabled = false,
126
- className
127
- }, ref) => {
128
- const getInitialTime = useCallback(
129
- () => ({
130
- hours: value?.hours ?? 0,
131
- minutes: value?.minutes ?? 0,
132
- seconds: value?.seconds ?? 0
133
- }),
134
- [value]
135
- );
136
- const [internalTime, setInternalTime] = useState(getInitialTime);
137
- useEffect(() => {
138
- setInternalTime(getInitialTime());
139
- }, [getInitialTime]);
140
- const hours = format === "12" ? generateRange(1, 12) : generateRange(0, 23);
141
- const minutes = generateRange(0, 59, minuteStep);
142
- const seconds = generateRange(0, 59, secondStep);
143
- const { hour12, period } = format === "12" ? to12Hour(internalTime.hours) : { hour12: internalTime.hours, period: "AM" };
144
- const handleHourSelect = (hourValue) => {
145
- const hour = Number(hourValue);
146
- const newHours = format === "12" ? to24Hour(hour, period) : hour;
147
- const newTime = { ...internalTime, hours: newHours };
148
- setInternalTime(newTime);
149
- onChange?.(newTime);
150
- };
151
- const handleMinuteSelect = (minuteValue) => {
152
- const newTime = { ...internalTime, minutes: Number(minuteValue) };
153
- setInternalTime(newTime);
154
- onChange?.(newTime);
155
- };
156
- const handleSecondSelect = (secondValue) => {
157
- const newTime = { ...internalTime, seconds: Number(secondValue) };
158
- setInternalTime(newTime);
159
- onChange?.(newTime);
160
- };
161
- const handlePeriodSelect = (newPeriod) => {
162
- const newHours = to24Hour(hour12, newPeriod);
163
- const newTime = { ...internalTime, hours: newHours };
164
- setInternalTime(newTime);
165
- onChange?.(newTime);
166
- };
167
- return /* @__PURE__ */ jsxs(
168
- "div",
169
- {
170
- ref,
171
- className: cn("flex", className),
172
- role: "group",
173
- "aria-label": "Time picker",
174
- children: [
175
- /* @__PURE__ */ jsx(
176
- TimeColumn,
177
- {
178
- items: hours,
179
- selected: format === "12" ? hour12 : internalTime.hours,
180
- onSelect: handleHourSelect,
181
- disabled
182
- }
183
- ),
184
- /* @__PURE__ */ jsx("div", { className: "border-inline-end border-border" }),
185
- /* @__PURE__ */ jsx(
186
- TimeColumn,
187
- {
188
- items: minutes,
189
- selected: internalTime.minutes,
190
- onSelect: handleMinuteSelect,
191
- disabled
192
- }
193
- ),
194
- showSeconds && /* @__PURE__ */ jsxs(Fragment, { children: [
195
- /* @__PURE__ */ jsx("div", { className: "border-inline-end border-border" }),
196
- /* @__PURE__ */ jsx(
197
- TimeColumn,
198
- {
199
- items: seconds,
200
- selected: internalTime.seconds ?? 0,
201
- onSelect: handleSecondSelect,
202
- disabled
203
- }
204
- )
205
- ] }),
206
- format === "12" && /* @__PURE__ */ jsxs(Fragment, { children: [
207
- /* @__PURE__ */ jsx("div", { className: "border-inline-end border-border" }),
208
- /* @__PURE__ */ jsx(
209
- TimeColumn,
210
- {
211
- items: [...PERIODS],
212
- selected: period,
213
- onSelect: handlePeriodSelect,
214
- disabled,
215
- padStart: 0
216
- }
217
- )
218
- ] })
219
- ]
220
- }
221
- );
222
- }
223
- );
224
- TimePickerPanel.displayName = "TimePickerPanel";
225
-
226
- export { TimePickerPanel as T, parseTimeString as a, dateToTimeValue as d, padNumber as p, to12Hour as t };
227
- //# sourceMappingURL=TimePickerPanel-DAhz3B2d.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TimePickerPanel-DAhz3B2d.js","sources":["../src/components/TimePicker/constants.ts","../src/components/TimePicker/utils.ts","../src/components/TimePicker/TimeColumn.tsx","../src/components/TimePicker/TimePickerPanel.tsx"],"sourcesContent":["export const COLUMN_HEIGHT = 224;\nexport const ITEM_HEIGHT = 32;\nexport const PERIODS = [\"AM\", \"PM\"] as const;\n","import type { TimeValue } from \"./types\";\n\nexport const generateRange = (\n start: number,\n end: number,\n step = 1\n): number[] => {\n const result: number[] = [];\n for (let i = start; i <= end; i += step) {\n result.push(i);\n }\n\n return result;\n};\n\nexport const to12Hour = (\n hour24: number\n): { hour12: number; period: \"AM\" | \"PM\" } => {\n const period = hour24 >= 12 ? \"PM\" : \"AM\";\n const hour12 = hour24 % 12 || 12;\n\n return { hour12, period };\n};\n\nexport const to24Hour = (hour12: number, period: \"AM\" | \"PM\"): number => {\n if (period === \"AM\") {\n return hour12 === 12 ? 0 : hour12;\n }\n\n return hour12 === 12 ? 12 : hour12 + 12;\n};\n\nexport const dateToTimeValue = (date: Date): TimeValue => ({\n hours: date.getHours(),\n minutes: date.getMinutes(),\n seconds: date.getSeconds(),\n});\n\nexport const timeValueToDate = (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\nexport const padNumber = (num: number, length = 2): string =>\n String(num).padStart(length, \"0\");\n\nexport const parseTimeString = (\n input: string,\n format: \"12\" | \"24\"\n): TimeValue | null => {\n const trimmed = input.trim();\n if (!trimmed) return null;\n\n if (format === \"12\") {\n // Accept: \"2:30 PM\", \"02:30 PM\", \"2:3 PM\", \"2:30:15 PM\"\n const match = trimmed.match(\n /^(\\d{1,2}):(\\d{1,2})(?::(\\d{1,2}))?\\s*(AM|PM)$/i\n );\n if (!match) return null;\n\n const hour12 = parseInt(match[1], 10);\n const minutes = parseInt(match[2], 10);\n const seconds = match[3] ? parseInt(match[3], 10) : 0;\n const period = match[4].toUpperCase() as \"AM\" | \"PM\";\n\n if (hour12 < 1 || hour12 > 12 || minutes > 59 || seconds > 59) return null;\n\n return { hours: to24Hour(hour12, period), minutes, seconds };\n }\n\n // Accept: \"14:3\", \"14:30\", \"2:5\", \"14:30:05\"\n const match = trimmed.match(/^(\\d{1,2}):(\\d{1,2})(?::(\\d{1,2}))?$/);\n if (!match) return null;\n\n const hours = parseInt(match[1], 10);\n const minutes = parseInt(match[2], 10);\n const seconds = match[3] ? parseInt(match[3], 10) : 0;\n\n if (hours > 23 || minutes > 59 || seconds > 59) return null;\n\n return { hours, minutes, seconds };\n};\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"],"names":["match","minutes","seconds"],"mappings":"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"}