pixelize-design-library 2.2.193 → 2.2.195

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 (213) hide show
  1. package/dist/Components/Table/Components/HeaderActions.js +22 -12
  2. package/dist/Components/Table/Table.js +4 -4
  3. package/dist/Components/Table/TableProps.d.ts +8 -3
  4. package/dist/Components/ToolTip/ToolTip.js +2 -2
  5. package/package.json +1 -1
  6. package/.claude/settings.local.json +0 -15
  7. package/coverage/clover.xml +0 -638
  8. package/coverage/coverage-final.json +0 -20
  9. package/coverage/lcov-report/Table/CompactSelect.tsx.html +0 -379
  10. package/coverage/lcov-report/Table/Components/ActiveFilters.tsx.html +0 -514
  11. package/coverage/lcov-report/Table/Components/HeaderActions.tsx.html +0 -373
  12. package/coverage/lcov-report/Table/Components/Pagination.tsx.html +0 -574
  13. package/coverage/lcov-report/Table/Components/TableActions.tsx.html +0 -574
  14. package/coverage/lcov-report/Table/Components/TableBody.tsx.html +0 -1027
  15. package/coverage/lcov-report/Table/Components/TableFilters.tsx.html +0 -397
  16. package/coverage/lcov-report/Table/Components/TableHeader.tsx.html +0 -1060
  17. package/coverage/lcov-report/Table/Components/TableLoading.tsx.html +0 -361
  18. package/coverage/lcov-report/Table/Components/TableSearch.tsx.html +0 -337
  19. package/coverage/lcov-report/Table/Components/index.html +0 -266
  20. package/coverage/lcov-report/Table/Components/useDebounce.ts.html +0 -178
  21. package/coverage/lcov-report/Table/Components/useTable.ts.html +0 -778
  22. package/coverage/lcov-report/Table/LeftFilterPane.tsx.html +0 -1810
  23. package/coverage/lcov-report/Table/SelectOperationControls.tsx.html +0 -178
  24. package/coverage/lcov-report/Table/Table.tsx.html +0 -1567
  25. package/coverage/lcov-report/Table/TableProps.tsx.html +0 -658
  26. package/coverage/lcov-report/Table/TableSettings/ManageColumns.tsx.html +0 -619
  27. package/coverage/lcov-report/Table/TableSettings/TableFilters.tsx.html +0 -229
  28. package/coverage/lcov-report/Table/TableSettings/TableSettings.tsx.html +0 -532
  29. package/coverage/lcov-report/Table/TableSettings/index.html +0 -146
  30. package/coverage/lcov-report/Table/TableToDo.tsx.html +0 -973
  31. package/coverage/lcov-report/Table/TextOperationControls.tsx.html +0 -271
  32. package/coverage/lcov-report/Table/filterTypes.ts.html +0 -97
  33. package/coverage/lcov-report/Table/index.html +0 -176
  34. package/coverage/lcov-report/base.css +0 -224
  35. package/coverage/lcov-report/block-navigation.js +0 -87
  36. package/coverage/lcov-report/favicon.png +0 -0
  37. package/coverage/lcov-report/index.html +0 -146
  38. package/coverage/lcov-report/prettify.css +0 -1
  39. package/coverage/lcov-report/prettify.js +0 -2
  40. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  41. package/coverage/lcov-report/sorter.js +0 -210
  42. package/coverage/lcov.info +0 -1836
  43. package/dist/Assets/defaultLogo.tsx +0 -31
  44. package/dist/Theme/Dark/palette.d.ts +0 -370
  45. package/dist/Theme/Dark/palette.js +0 -372
  46. package/dist/components-v2/AlertDialog/AlertDialog.d.ts +0 -23
  47. package/dist/components-v2/AlertDialog/AlertDialog.js +0 -98
  48. package/dist/components-v2/Breadcrumbs/Breadcrumbs.d.ts +0 -14
  49. package/dist/components-v2/Breadcrumbs/Breadcrumbs.js +0 -66
  50. package/dist/components-v2/Charts/AreaChart.d.ts +0 -23
  51. package/dist/components-v2/Charts/AreaChart.js +0 -63
  52. package/dist/components-v2/Charts/BarChart.d.ts +0 -25
  53. package/dist/components-v2/Charts/BarChart.js +0 -57
  54. package/dist/components-v2/Charts/LineChart.d.ts +0 -23
  55. package/dist/components-v2/Charts/LineChart.js +0 -55
  56. package/dist/components-v2/Charts/PieChart.d.ts +0 -15
  57. package/dist/components-v2/Charts/PieChart.js +0 -54
  58. package/dist/components-v2/Charts/PolarChart.d.ts +0 -14
  59. package/dist/components-v2/Charts/PolarChart.js +0 -54
  60. package/dist/components-v2/Charts/chartOptions.d.ts +0 -7
  61. package/dist/components-v2/Charts/chartOptions.js +0 -41
  62. package/dist/components-v2/Charts/useChartTheme.d.ts +0 -22
  63. package/dist/components-v2/Charts/useChartTheme.js +0 -106
  64. package/dist/components-v2/ContactForm/ContactForm.d.ts +0 -25
  65. package/dist/components-v2/ContactForm/ContactForm.js +0 -116
  66. package/dist/components-v2/DatePicker/Calendar.d.ts +0 -19
  67. package/dist/components-v2/DatePicker/Calendar.js +0 -212
  68. package/dist/components-v2/DatePicker/DatePicker.d.ts +0 -46
  69. package/dist/components-v2/DatePicker/DatePicker.js +0 -189
  70. package/dist/components-v2/DatePicker/TimePicker.d.ts +0 -12
  71. package/dist/components-v2/DatePicker/TimePicker.js +0 -105
  72. package/dist/components-v2/DatePicker/utils.d.ts +0 -31
  73. package/dist/components-v2/DatePicker/utils.js +0 -109
  74. package/dist/components-v2/Drawer/Drawer.d.ts +0 -27
  75. package/dist/components-v2/Drawer/Drawer.js +0 -132
  76. package/dist/components-v2/FeedbackForm/FeedbackForm.d.ts +0 -26
  77. package/dist/components-v2/FeedbackForm/FeedbackForm.js +0 -112
  78. package/dist/components-v2/FileUploader/FileUploader.d.ts +0 -28
  79. package/dist/components-v2/FileUploader/FileUploader.js +0 -127
  80. package/dist/components-v2/Input/TextInput.d.ts +0 -41
  81. package/dist/components-v2/Input/TextInput.js +0 -169
  82. package/dist/components-v2/KanbanBoard/KanbanBoard.d.ts +0 -39
  83. package/dist/components-v2/KanbanBoard/KanbanBoard.js +0 -101
  84. package/dist/components-v2/Layout/AppLayout.d.ts +0 -22
  85. package/dist/components-v2/Layout/AppLayout.js +0 -53
  86. package/dist/components-v2/Loading/Loading.d.ts +0 -19
  87. package/dist/components-v2/Loading/Loading.js +0 -55
  88. package/dist/components-v2/Modal/Modal.d.ts +0 -30
  89. package/dist/components-v2/Modal/Modal.js +0 -82
  90. package/dist/components-v2/NavigationBar/NavigationBar.d.ts +0 -47
  91. package/dist/components-v2/NavigationBar/NavigationBar.js +0 -148
  92. package/dist/components-v2/Notification/Notification.d.ts +0 -22
  93. package/dist/components-v2/Notification/Notification.js +0 -113
  94. package/dist/components-v2/NumberInput/NumberInput.d.ts +0 -37
  95. package/dist/components-v2/NumberInput/NumberInput.js +0 -210
  96. package/dist/components-v2/PinInput/PinInput.d.ts +0 -26
  97. package/dist/components-v2/PinInput/PinInput.js +0 -138
  98. package/dist/components-v2/ProfilePhotoViewer/ProfilePhotoViewer.d.ts +0 -18
  99. package/dist/components-v2/ProfilePhotoViewer/ProfilePhotoViewer.js +0 -91
  100. package/dist/components-v2/Select/Select.d.ts +0 -41
  101. package/dist/components-v2/Select/Select.js +0 -284
  102. package/dist/components-v2/Sidebar/Sidebar.d.ts +0 -41
  103. package/dist/components-v2/Sidebar/Sidebar.js +0 -182
  104. package/dist/components-v2/Slider/Slider.d.ts +0 -18
  105. package/dist/components-v2/Slider/Slider.js +0 -101
  106. package/dist/components-v2/Table/Table.d.ts +0 -7
  107. package/dist/components-v2/Table/Table.js +0 -172
  108. package/dist/components-v2/Table/TableProps.d.ts +0 -139
  109. package/dist/components-v2/Table/TableProps.js +0 -9
  110. package/dist/components-v2/Table/components/ActiveFilters.d.ts +0 -10
  111. package/dist/components-v2/Table/components/ActiveFilters.js +0 -70
  112. package/dist/components-v2/Table/components/BulkActionBar.d.ts +0 -11
  113. package/dist/components-v2/Table/components/BulkActionBar.js +0 -92
  114. package/dist/components-v2/Table/components/ColumnResizeHandle.d.ts +0 -7
  115. package/dist/components-v2/Table/components/ColumnResizeHandle.js +0 -41
  116. package/dist/components-v2/Table/components/Pagination.d.ts +0 -11
  117. package/dist/components-v2/Table/components/Pagination.js +0 -92
  118. package/dist/components-v2/Table/components/TableBody.d.ts +0 -23
  119. package/dist/components-v2/Table/components/TableBody.js +0 -69
  120. package/dist/components-v2/Table/components/TableCell.d.ts +0 -14
  121. package/dist/components-v2/Table/components/TableCell.js +0 -63
  122. package/dist/components-v2/Table/components/TableEmptyState.d.ts +0 -12
  123. package/dist/components-v2/Table/components/TableEmptyState.js +0 -55
  124. package/dist/components-v2/Table/components/TableErrorState.d.ts +0 -6
  125. package/dist/components-v2/Table/components/TableErrorState.js +0 -52
  126. package/dist/components-v2/Table/components/TableHeader.d.ts +0 -21
  127. package/dist/components-v2/Table/components/TableHeader.js +0 -94
  128. package/dist/components-v2/Table/components/TableRow.d.ts +0 -20
  129. package/dist/components-v2/Table/components/TableRow.js +0 -64
  130. package/dist/components-v2/Table/components/TableSearch.d.ts +0 -8
  131. package/dist/components-v2/Table/components/TableSearch.js +0 -47
  132. package/dist/components-v2/Table/filters/FilterChips.d.ts +0 -6
  133. package/dist/components-v2/Table/filters/FilterChips.js +0 -9
  134. package/dist/components-v2/Table/filters/LeftFilterPane.d.ts +0 -17
  135. package/dist/components-v2/Table/filters/LeftFilterPane.js +0 -105
  136. package/dist/components-v2/Table/filters/TableFilters.d.ts +0 -12
  137. package/dist/components-v2/Table/filters/TableFilters.js +0 -127
  138. package/dist/components-v2/Table/hooks/useColumnResize.d.ts +0 -15
  139. package/dist/components-v2/Table/hooks/useColumnResize.js +0 -104
  140. package/dist/components-v2/Table/hooks/useTable.d.ts +0 -58
  141. package/dist/components-v2/Table/hooks/useTable.js +0 -254
  142. package/dist/components-v2/Table/hooks/useTableKeyboard.d.ts +0 -25
  143. package/dist/components-v2/Table/hooks/useTableKeyboard.js +0 -112
  144. package/dist/components-v2/Table/hooks/useVirtualScroll.d.ts +0 -29
  145. package/dist/components-v2/Table/hooks/useVirtualScroll.js +0 -83
  146. package/dist/components-v2/Table/settings/ManageColumns.d.ts +0 -12
  147. package/dist/components-v2/Table/settings/ManageColumns.js +0 -59
  148. package/dist/components-v2/Table/settings/TableSettings.d.ts +0 -12
  149. package/dist/components-v2/Table/settings/TableSettings.js +0 -57
  150. package/dist/components-v2/Table/utils/filterUtils.d.ts +0 -7
  151. package/dist/components-v2/Table/utils/filterUtils.js +0 -149
  152. package/dist/components-v2/Table/utils/sortUtils.d.ts +0 -6
  153. package/dist/components-v2/Table/utils/sortUtils.js +0 -65
  154. package/dist/components-v2/Tag/Tag.d.ts +0 -15
  155. package/dist/components-v2/Tag/Tag.js +0 -87
  156. package/dist/components-v2/Timeline/Timeline.d.ts +0 -18
  157. package/dist/components-v2/Timeline/Timeline.js +0 -76
  158. package/dist/components-v2/Toaster/Toaster.d.ts +0 -61
  159. package/dist/components-v2/Toaster/Toaster.js +0 -63
  160. package/dist/components-v2/Toggle/Toggle.d.ts +0 -28
  161. package/dist/components-v2/Toggle/Toggle.js +0 -90
  162. package/dist/components-v2/ui/accordion.d.ts +0 -12
  163. package/dist/components-v2/ui/accordion.js +0 -104
  164. package/dist/components-v2/ui/alert.d.ts +0 -18
  165. package/dist/components-v2/ui/alert.js +0 -99
  166. package/dist/components-v2/ui/avatar.d.ts +0 -12
  167. package/dist/components-v2/ui/avatar.js +0 -80
  168. package/dist/components-v2/ui/badge.d.ts +0 -10
  169. package/dist/components-v2/ui/badge.js +0 -76
  170. package/dist/components-v2/ui/button.d.ts +0 -18
  171. package/dist/components-v2/ui/button.js +0 -97
  172. package/dist/components-v2/ui/checkbox.d.ts +0 -15
  173. package/dist/components-v2/ui/checkbox.js +0 -86
  174. package/dist/components-v2/ui/dialog.d.ts +0 -30
  175. package/dist/components-v2/ui/dialog.js +0 -115
  176. package/dist/components-v2/ui/dropdown-menu.d.ts +0 -26
  177. package/dist/components-v2/ui/dropdown-menu.js +0 -121
  178. package/dist/components-v2/ui/field.d.ts +0 -32
  179. package/dist/components-v2/ui/field.js +0 -62
  180. package/dist/components-v2/ui/form-field.d.ts +0 -25
  181. package/dist/components-v2/ui/form-field.js +0 -96
  182. package/dist/components-v2/ui/input.d.ts +0 -9
  183. package/dist/components-v2/ui/input.js +0 -73
  184. package/dist/components-v2/ui/label.d.ts +0 -10
  185. package/dist/components-v2/ui/label.js +0 -70
  186. package/dist/components-v2/ui/popover.d.ts +0 -9
  187. package/dist/components-v2/ui/popover.js +0 -60
  188. package/dist/components-v2/ui/progress.d.ts +0 -12
  189. package/dist/components-v2/ui/progress.js +0 -75
  190. package/dist/components-v2/ui/radio-group.d.ts +0 -17
  191. package/dist/components-v2/ui/radio-group.js +0 -91
  192. package/dist/components-v2/ui/select.d.ts +0 -24
  193. package/dist/components-v2/ui/select.js +0 -122
  194. package/dist/components-v2/ui/separator.d.ts +0 -5
  195. package/dist/components-v2/ui/separator.js +0 -55
  196. package/dist/components-v2/ui/skeleton.d.ts +0 -9
  197. package/dist/components-v2/ui/skeleton.js +0 -68
  198. package/dist/components-v2/ui/spinner.d.ts +0 -16
  199. package/dist/components-v2/ui/spinner.js +0 -64
  200. package/dist/components-v2/ui/switch.d.ts +0 -10
  201. package/dist/components-v2/ui/switch.js +0 -81
  202. package/dist/components-v2/ui/tabs.d.ts +0 -13
  203. package/dist/components-v2/ui/tabs.js +0 -95
  204. package/dist/components-v2/ui/textarea.d.ts +0 -10
  205. package/dist/components-v2/ui/textarea.js +0 -96
  206. package/dist/components-v2/ui/tooltip.d.ts +0 -17
  207. package/dist/components-v2/ui/tooltip.js +0 -75
  208. package/dist/lib/utils.d.ts +0 -2
  209. package/dist/lib/utils.js +0 -8
  210. package/dist/theme-v2/ThemeProvider.d.ts +0 -19
  211. package/dist/theme-v2/ThemeProvider.js +0 -149
  212. package/dist/theme-v2/dark.css +0 -47
  213. package/dist/theme-v2/tokens.css +0 -72
@@ -1,212 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.Calendar = void 0;
37
- const React = __importStar(require("react"));
38
- const lucide_react_1 = require("lucide-react");
39
- const utils_1 = require("../../lib/utils");
40
- const utils_2 = require("./utils");
41
- exports.Calendar = React.forwardRef(({ viewDate, onViewDateChange, selected, rangeStart, rangeEnd, onSelectDate, mode, constraints = {}, weekStartsOn = 0, locale, compact = false, }, ref) => {
42
- const [pane, setPane] = React.useState("days");
43
- const [focusDate, setFocusDate] = React.useState((0, utils_2.startOfDay)(viewDate));
44
- const gridRef = React.useRef(null);
45
- React.useEffect(() => {
46
- if (focusDate.getMonth() !== viewDate.getMonth() ||
47
- focusDate.getFullYear() !== viewDate.getFullYear()) {
48
- setFocusDate((0, utils_2.startOfDay)(viewDate));
49
- }
50
- }, [viewDate, focusDate]);
51
- const moveFocus = (next) => {
52
- if (next.getMonth() !== viewDate.getMonth() ||
53
- next.getFullYear() !== viewDate.getFullYear()) {
54
- onViewDateChange(next);
55
- }
56
- setFocusDate((0, utils_2.startOfDay)(next));
57
- requestAnimationFrame(() => {
58
- var _a;
59
- const node = (_a = gridRef.current) === null || _a === void 0 ? void 0 : _a.querySelector(`[data-date="${next.toDateString()}"]`);
60
- node === null || node === void 0 ? void 0 : node.focus();
61
- });
62
- };
63
- const cells = React.useMemo(() => (0, utils_2.buildMonthGrid)(viewDate, weekStartsOn), [viewDate, weekStartsOn]);
64
- const weekdayLabels = React.useMemo(() => (0, utils_2.getWeekdayHeaders)(weekStartsOn, locale), [weekStartsOn, locale]);
65
- const monthLabel = (0, utils_2.formatDate)(viewDate, "MMMM");
66
- const yearLabel = (0, utils_2.formatDate)(viewDate, "yyyy");
67
- const handleDayKeyDown = (event, cellDate) => {
68
- const handled = (next) => {
69
- event.preventDefault();
70
- moveFocus(next);
71
- };
72
- switch (event.key) {
73
- case "ArrowLeft":
74
- return handled((0, utils_2.addDays)(cellDate, -1));
75
- case "ArrowRight":
76
- return handled((0, utils_2.addDays)(cellDate, 1));
77
- case "ArrowUp":
78
- return handled((0, utils_2.addDays)(cellDate, -7));
79
- case "ArrowDown":
80
- return handled((0, utils_2.addDays)(cellDate, 7));
81
- case "Home":
82
- return handled((0, utils_2.addDays)(cellDate, -cellDate.getDay()));
83
- case "End":
84
- return handled((0, utils_2.addDays)(cellDate, 6 - cellDate.getDay()));
85
- case "PageUp":
86
- return handled((0, utils_2.addMonths)(cellDate, event.shiftKey ? -12 : -1));
87
- case "PageDown":
88
- return handled((0, utils_2.addMonths)(cellDate, event.shiftKey ? 12 : 1));
89
- case "Enter":
90
- case " ":
91
- event.preventDefault();
92
- if (!(0, utils_2.isDateDisabled)(cellDate, constraints))
93
- onSelectDate(cellDate);
94
- return;
95
- default:
96
- return;
97
- }
98
- };
99
- return (React.createElement("div", { ref: ref, className: (0, utils_1.cn)("select-none", compact ? "p-2" : "p-3"), role: "application", "aria-label": "Calendar" },
100
- React.createElement(CalendarHeader, { pane: pane, setPane: setPane, viewDate: viewDate, onViewDateChange: onViewDateChange, monthLabel: monthLabel, yearLabel: yearLabel, constraints: constraints }),
101
- pane === "days" && (React.createElement("div", { ref: gridRef, role: "grid", "aria-label": `${monthLabel} ${yearLabel}`, className: "mt-2" },
102
- React.createElement("div", { className: "grid grid-cols-7 gap-0 text-center text-[11px] font-medium text-muted-foreground" }, weekdayLabels.map((label) => (React.createElement("span", { key: label, className: "py-1" }, label)))),
103
- React.createElement("div", { role: "rowgroup", className: "grid grid-cols-7 gap-0.5" }, cells.map((cell) => {
104
- const disabled = (0, utils_2.isDateDisabled)(cell.date, constraints);
105
- const isSelected = mode === "single"
106
- ? selected && (0, utils_2.isSameDay)(cell.date, selected)
107
- : !!((rangeStart && (0, utils_2.isSameDay)(cell.date, rangeStart)) ||
108
- (rangeEnd && (0, utils_2.isSameDay)(cell.date, rangeEnd)));
109
- const inRange = mode === "range" &&
110
- rangeStart &&
111
- rangeEnd &&
112
- (0, utils_2.isAfter)(cell.date, rangeStart) &&
113
- (0, utils_2.isBefore)(cell.date, rangeEnd);
114
- const isFocused = (0, utils_2.isSameDay)(cell.date, focusDate);
115
- return (React.createElement(DayCell, { key: cell.date.toISOString(), date: cell.date, inCurrentMonth: cell.inCurrentMonth, isToday: cell.isToday, isSelected: !!isSelected, inRange: !!inRange, disabled: disabled, focusable: isFocused, onSelect: () => {
116
- if (!disabled)
117
- onSelectDate(cell.date);
118
- setFocusDate((0, utils_2.startOfDay)(cell.date));
119
- }, onKeyDown: (event) => handleDayKeyDown(event, cell.date) }));
120
- })))),
121
- pane === "months" && (React.createElement(MonthPane, { viewDate: viewDate, constraints: constraints, onSelect: (monthIndex) => {
122
- const next = new Date(viewDate);
123
- next.setMonth(monthIndex);
124
- onViewDateChange(next);
125
- setPane("days");
126
- } })),
127
- pane === "years" && (React.createElement(YearPane, { viewDate: viewDate, constraints: constraints, onSelect: (year) => {
128
- const next = new Date(viewDate);
129
- next.setFullYear(year);
130
- onViewDateChange(next);
131
- setPane("months");
132
- } }))));
133
- });
134
- exports.Calendar.displayName = "Calendar";
135
- function CalendarHeader({ pane, setPane, viewDate, onViewDateChange, monthLabel, yearLabel, constraints, }) {
136
- const goPrev = () => {
137
- if (pane === "days") {
138
- onViewDateChange((0, utils_2.addMonths)(viewDate, -1));
139
- }
140
- else if (pane === "months") {
141
- onViewDateChange((0, utils_2.addYears)(viewDate, -1));
142
- }
143
- else {
144
- onViewDateChange((0, utils_2.addYears)(viewDate, -12));
145
- }
146
- };
147
- const goNext = () => {
148
- if (pane === "days") {
149
- onViewDateChange((0, utils_2.addMonths)(viewDate, 1));
150
- }
151
- else if (pane === "months") {
152
- onViewDateChange((0, utils_2.addYears)(viewDate, 1));
153
- }
154
- else {
155
- onViewDateChange((0, utils_2.addYears)(viewDate, 12));
156
- }
157
- };
158
- const prevDisabled = constraints.minDate
159
- ? !(0, utils_2.isAfter)((0, utils_2.startOfMonth)(viewDate), constraints.minDate)
160
- : false;
161
- const nextDisabled = constraints.maxDate
162
- ? !(0, utils_2.isBefore)((0, utils_2.endOfMonth)(viewDate), constraints.maxDate)
163
- : false;
164
- return (React.createElement("div", { className: "flex items-center justify-between gap-2" },
165
- React.createElement("button", { type: "button", "aria-label": pane === "days" ? "Previous month" : pane === "months" ? "Previous year" : "Previous 12 years", onClick: goPrev, disabled: prevDisabled, className: "inline-flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-40" },
166
- React.createElement(lucide_react_1.ChevronLeft, { className: "h-4 w-4" })),
167
- React.createElement("h2", { role: "heading", "aria-level": 2, className: "flex flex-1 items-center justify-center gap-1 text-sm font-medium text-foreground" },
168
- React.createElement("button", { type: "button", className: "rounded px-1.5 py-0.5 hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", onClick: () => setPane(pane === "months" ? "days" : "months"), "aria-label": "Pick month" }, monthLabel),
169
- React.createElement("button", { type: "button", className: "rounded px-1.5 py-0.5 hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", onClick: () => setPane(pane === "years" ? "days" : "years"), "aria-label": "Pick year" }, yearLabel)),
170
- React.createElement("button", { type: "button", "aria-label": pane === "days" ? "Next month" : pane === "months" ? "Next year" : "Next 12 years", onClick: goNext, disabled: nextDisabled, className: "inline-flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-40" },
171
- React.createElement(lucide_react_1.ChevronRight, { className: "h-4 w-4" }))));
172
- }
173
- function DayCell({ date, inCurrentMonth, isToday, isSelected, inRange, disabled, focusable, onSelect, onKeyDown, }) {
174
- return (React.createElement("div", { role: "gridcell" },
175
- React.createElement("button", { type: "button", role: "button", tabIndex: focusable ? 0 : -1, "aria-label": (0, utils_2.formatDate)(date, "EEEE, MMMM d, yyyy"), "aria-selected": isSelected || undefined, "aria-disabled": disabled || undefined, disabled: disabled, onClick: onSelect, onKeyDown: onKeyDown, "data-date": date.toDateString(), className: (0, utils_1.cn)("relative inline-flex h-8 w-8 items-center justify-center rounded-md text-sm", "transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", "hover:bg-accent hover:text-accent-foreground", !inCurrentMonth && "text-muted-foreground/60", inRange && "bg-primary/15 rounded-none", isSelected &&
176
- "bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground", isToday &&
177
- !isSelected &&
178
- "ring-1 ring-inset ring-primary/40", disabled && "cursor-not-allowed opacity-40 hover:bg-transparent") }, date.getDate())));
179
- }
180
- function MonthPane({ viewDate, constraints, onSelect }) {
181
- const monthNames = React.useMemo(() => {
182
- const result = [];
183
- for (let i = 0; i < 12; i++) {
184
- const d = new Date(viewDate.getFullYear(), i, 1);
185
- result.push((0, utils_2.formatDate)(d, "MMM"));
186
- }
187
- return result;
188
- }, [viewDate]);
189
- return (React.createElement("div", { className: "mt-2 grid grid-cols-3 gap-1" }, monthNames.map((name, index) => {
190
- const monthStart = new Date(viewDate.getFullYear(), index, 1);
191
- const monthEnd = (0, utils_2.endOfMonth)(monthStart);
192
- const disabled = (constraints.minDate && (0, utils_2.isBefore)(monthEnd, constraints.minDate)) ||
193
- (constraints.maxDate && (0, utils_2.isAfter)(monthStart, constraints.maxDate)) ||
194
- false;
195
- const isCurrent = index === viewDate.getMonth();
196
- return (React.createElement("button", { key: name, type: "button", disabled: disabled, onClick: () => onSelect(index), className: (0, utils_1.cn)("rounded-md px-2 py-2 text-sm transition-colors", "hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", isCurrent && "bg-primary text-primary-foreground hover:bg-primary", disabled && "cursor-not-allowed opacity-40 hover:bg-transparent") }, name));
197
- })));
198
- }
199
- function YearPane({ viewDate, constraints, onSelect }) {
200
- const currentYear = viewDate.getFullYear();
201
- const startYear = Math.floor(currentYear / 12) * 12;
202
- const years = Array.from({ length: 12 }, (_, i) => startYear + i);
203
- return (React.createElement("div", { className: "mt-2 grid grid-cols-3 gap-1" }, years.map((year) => {
204
- const yearStart = new Date(year, 0, 1);
205
- const yearEnd = new Date(year, 11, 31);
206
- const disabled = (constraints.minDate && (0, utils_2.isBefore)(yearEnd, constraints.minDate)) ||
207
- (constraints.maxDate && (0, utils_2.isAfter)(yearStart, constraints.maxDate)) ||
208
- false;
209
- const isCurrent = year === currentYear;
210
- return (React.createElement("button", { key: year, type: "button", disabled: disabled, onClick: () => onSelect(year), className: (0, utils_1.cn)("rounded-md px-2 py-2 text-sm transition-colors", "hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", isCurrent && "bg-primary text-primary-foreground hover:bg-primary", disabled && "cursor-not-allowed opacity-40 hover:bg-transparent") }, year));
211
- })));
212
- }
@@ -1,46 +0,0 @@
1
- import * as React from "react";
2
- import { type DateConstraints, type DateRange, type DayOfWeek, formatDate, isDateDisabled } from "./utils";
3
- export type DatePickerSize = "sm" | "md" | "lg";
4
- export type DatePickerType = "date" | "time" | "datetime";
5
- export interface DatePickerProps {
6
- value?: Date | null;
7
- defaultValue?: Date | null;
8
- onChange?: (date: Date | null) => void;
9
- mode?: "single" | "range";
10
- rangeValue?: DateRange;
11
- onRangeChange?: (range: DateRange) => void;
12
- label?: React.ReactNode;
13
- placeholder?: string;
14
- format?: string;
15
- helperText?: React.ReactNode;
16
- error?: boolean;
17
- errorMessage?: React.ReactNode;
18
- isInformation?: boolean;
19
- informationMessage?: React.ReactNode;
20
- isRequired?: boolean;
21
- type?: DatePickerType;
22
- minDate?: Date;
23
- maxDate?: Date;
24
- disabledDates?: Date[];
25
- disabledDaysOfWeek?: DayOfWeek[];
26
- isDisabled?: boolean;
27
- isReadOnly?: boolean;
28
- size?: DatePickerSize;
29
- width?: string;
30
- /** 0 = Sunday … 6 = Saturday. Defaults to 0. */
31
- weekStartsOn?: DayOfWeek;
32
- /** Locale for weekday header labels (Intl.DateTimeFormat locale). */
33
- locale?: Intl.LocalesArgument;
34
- /** 12 or 24 hour clock for the time picker. */
35
- hourFormat?: 12 | 24;
36
- /** Minute step for the time picker. */
37
- minuteStep?: number;
38
- id?: string;
39
- name?: string;
40
- className?: string;
41
- /** Show ✕ clear button inside the trigger when a value is set. */
42
- clearable?: boolean;
43
- }
44
- export declare const DatePicker: React.ForwardRefExoticComponent<DatePickerProps & React.RefAttributes<HTMLButtonElement>>;
45
- export type { DateRange, DateConstraints, DayOfWeek };
46
- export { isDateDisabled, formatDate };
@@ -1,189 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __rest = (this && this.__rest) || function (s, e) {
36
- var t = {};
37
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
38
- t[p] = s[p];
39
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
40
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
41
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
42
- t[p[i]] = s[p[i]];
43
- }
44
- return t;
45
- };
46
- Object.defineProperty(exports, "__esModule", { value: true });
47
- exports.formatDate = exports.isDateDisabled = exports.DatePicker = void 0;
48
- const React = __importStar(require("react"));
49
- const lucide_react_1 = require("lucide-react");
50
- const utils_1 = require("../../lib/utils");
51
- const field_1 = require("../ui/field");
52
- const form_field_1 = require("../ui/form-field");
53
- const popover_1 = require("../ui/popover");
54
- const Calendar_1 = require("./Calendar");
55
- const TimePicker_1 = require("./TimePicker");
56
- const utils_2 = require("./utils");
57
- Object.defineProperty(exports, "formatDate", { enumerable: true, get: function () { return utils_2.formatDate; } });
58
- Object.defineProperty(exports, "isDateDisabled", { enumerable: true, get: function () { return utils_2.isDateDisabled; } });
59
- const TRIGGER_SIZE = {
60
- sm: "h-8 text-xs px-2.5",
61
- md: "h-9 text-sm px-3",
62
- lg: "h-10 text-base px-3.5",
63
- };
64
- exports.DatePicker = React.forwardRef((props, ref) => {
65
- const { id, label, helperText, error, errorMessage, isInformation, informationMessage, isRequired, width, className } = props, controlProps = __rest(props, ["id", "label", "helperText", "error", "errorMessage", "isInformation", "informationMessage", "isRequired", "width", "className"]);
66
- return (React.createElement(field_1.Field, { id: id, label: label, isRequired: isRequired, isInformation: isInformation, informationMessage: informationMessage, helperText: helperText, error: error, errorMessage: errorMessage, width: width },
67
- React.createElement(DatePickerControl, Object.assign({ ref: ref, error: error, className: className }, controlProps))));
68
- });
69
- exports.DatePicker.displayName = "DatePicker";
70
- const DatePickerControl = React.forwardRef((props, ref) => {
71
- var _a, _b, _c, _d, _e;
72
- const { value, defaultValue, onChange, mode = "single", rangeValue, onRangeChange, type, placeholder = "Select date…", format, minDate, maxDate, disabledDates, disabledDaysOfWeek, isDisabled = false, isReadOnly = false, size = "md", weekStartsOn = 0, locale, hourFormat = 24, minuteStep = 1, error, className, clearable = true, name, } = props;
73
- const inferredFormat = format !== null && format !== void 0 ? format : (type === "time"
74
- ? utils_2.DEFAULT_TIME_FORMAT
75
- : type === "datetime"
76
- ? utils_2.DEFAULT_DATETIME_FORMAT
77
- : utils_2.DEFAULT_DATE_FORMAT);
78
- const effectiveType = type !== null && type !== void 0 ? type : (0, utils_2.inferTypeFromFormat)(inferredFormat);
79
- const field = (0, form_field_1.useFormField)();
80
- const [open, setOpen] = React.useState(false);
81
- const isRange = mode === "range";
82
- const isControlledSingle = !isRange && value !== undefined;
83
- const [internalValue, setInternalValue] = React.useState(defaultValue !== null && defaultValue !== void 0 ? defaultValue : null);
84
- const singleValue = isControlledSingle ? value : internalValue;
85
- const isControlledRange = isRange && rangeValue !== undefined;
86
- const [internalRange, setInternalRange] = React.useState({
87
- start: null,
88
- end: null,
89
- });
90
- const range = isControlledRange ? rangeValue : internalRange;
91
- const [viewDate, setViewDate] = React.useState(() => {
92
- var _a;
93
- if (isRange)
94
- return (_a = range.start) !== null && _a !== void 0 ? _a : new Date();
95
- return singleValue !== null && singleValue !== void 0 ? singleValue : new Date();
96
- });
97
- const constraints = {
98
- minDate,
99
- maxDate,
100
- disabledDates,
101
- disabledDaysOfWeek,
102
- };
103
- const commitSingle = (next) => {
104
- if (!isControlledSingle)
105
- setInternalValue(next);
106
- onChange === null || onChange === void 0 ? void 0 : onChange(next);
107
- };
108
- const commitRange = (next) => {
109
- if (!isControlledRange)
110
- setInternalRange(next);
111
- onRangeChange === null || onRangeChange === void 0 ? void 0 : onRangeChange(next);
112
- };
113
- const handleSelectDate = (date) => {
114
- if (isReadOnly)
115
- return;
116
- if (isRange) {
117
- if (!range.start || (range.start && range.end)) {
118
- commitRange({ start: (0, utils_2.startOfDay)(date), end: null });
119
- }
120
- else if (date < range.start) {
121
- commitRange({ start: (0, utils_2.startOfDay)(date), end: range.start });
122
- }
123
- else {
124
- commitRange({ start: range.start, end: (0, utils_2.startOfDay)(date) });
125
- if (effectiveType === "date")
126
- setOpen(false);
127
- }
128
- }
129
- else {
130
- const next = new Date(date);
131
- if (effectiveType !== "date" && singleValue) {
132
- next.setHours(singleValue.getHours(), singleValue.getMinutes(), 0, 0);
133
- }
134
- commitSingle(next);
135
- if (effectiveType === "date")
136
- setOpen(false);
137
- }
138
- };
139
- const handleTimeChange = (next) => {
140
- if (isRange)
141
- return;
142
- commitSingle(next);
143
- };
144
- const handleClear = (event) => {
145
- event.stopPropagation();
146
- if (isRange) {
147
- commitRange({ start: null, end: null });
148
- }
149
- else {
150
- commitSingle(null);
151
- }
152
- };
153
- const displayValue = (() => {
154
- if (isRange) {
155
- if (!range.start && !range.end)
156
- return "";
157
- const startText = range.start ? (0, utils_2.formatDate)(range.start, inferredFormat) : "…";
158
- const endText = range.end ? (0, utils_2.formatDate)(range.end, inferredFormat) : "…";
159
- return `${startText} – ${endText}`;
160
- }
161
- return singleValue ? (0, utils_2.formatDate)(singleValue, inferredFormat) : "";
162
- })();
163
- const hasValue = isRange
164
- ? !!(range.start || range.end)
165
- : !!singleValue;
166
- const onlyTime = effectiveType === "time";
167
- return (React.createElement(React.Fragment, null,
168
- React.createElement(popover_1.Popover, { open: open, onOpenChange: isReadOnly || isDisabled ? undefined : setOpen },
169
- React.createElement(popover_1.PopoverTrigger, { asChild: true },
170
- React.createElement("button", { ref: ref, type: "button", id: field.id || undefined, disabled: isDisabled, "aria-haspopup": "dialog", "aria-expanded": open, "aria-invalid": error || field.hasError || undefined, "aria-readonly": isReadOnly || undefined, className: (0, utils_1.cn)("flex w-full items-center justify-between gap-2 rounded-md border border-input bg-background text-foreground shadow-sm transition-colors", "focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-1 focus:ring-offset-background", "disabled:cursor-not-allowed disabled:opacity-50", "data-[state=open]:ring-2 data-[state=open]:ring-ring", TRIGGER_SIZE[size], error &&
171
- "border-destructive bg-destructive/5 focus:ring-destructive", isReadOnly && "cursor-default bg-muted", className) },
172
- React.createElement("span", { className: (0, utils_1.cn)("truncate text-left", !displayValue && "text-muted-foreground") }, displayValue || placeholder),
173
- React.createElement("span", { className: "flex items-center gap-1 text-muted-foreground" },
174
- clearable && hasValue && !isDisabled && !isReadOnly && (React.createElement("button", { type: "button", "aria-label": "Clear date", onClick: handleClear, className: "rounded-sm hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring" },
175
- React.createElement(lucide_react_1.X, { className: "h-4 w-4" }))),
176
- React.createElement(lucide_react_1.Calendar, { className: "h-4 w-4 opacity-70" })))),
177
- React.createElement(popover_1.PopoverContent, { align: "start", className: "w-auto p-0", onOpenAutoFocus: (event) => {
178
- event.preventDefault();
179
- } },
180
- !onlyTime && (React.createElement(Calendar_1.Calendar, { viewDate: viewDate, onViewDateChange: setViewDate, selected: isRange ? null : singleValue, rangeStart: isRange ? range.start : null, rangeEnd: isRange ? range.end : null, onSelectDate: handleSelectDate, mode: isRange ? "range" : "single", constraints: constraints, weekStartsOn: weekStartsOn, locale: locale, compact: true })),
181
- (effectiveType === "datetime" || onlyTime) && !isRange && (React.createElement(TimePicker_1.TimePicker, { value: singleValue, onChange: handleTimeChange, hourFormat: hourFormat, minuteStep: minuteStep, referenceDate: viewDate })))),
182
- name && (React.createElement("input", { type: "hidden", name: name, value: isRange
183
- ? JSON.stringify({
184
- start: (_b = (_a = range.start) === null || _a === void 0 ? void 0 : _a.toISOString()) !== null && _b !== void 0 ? _b : null,
185
- end: (_d = (_c = range.end) === null || _c === void 0 ? void 0 : _c.toISOString()) !== null && _d !== void 0 ? _d : null,
186
- })
187
- : (_e = singleValue === null || singleValue === void 0 ? void 0 : singleValue.toISOString()) !== null && _e !== void 0 ? _e : "" }))));
188
- });
189
- DatePickerControl.displayName = "DatePickerControl";
@@ -1,12 +0,0 @@
1
- import * as React from "react";
2
- export interface TimePickerProps {
3
- value: Date | null;
4
- onChange: (date: Date) => void;
5
- /** 12 = 12-hour with AM/PM, 24 = 24-hour. */
6
- hourFormat?: 12 | 24;
7
- /** Step in minutes for the minute column. */
8
- minuteStep?: number;
9
- /** Base date when value is null — used to compose a Date with the chosen time. */
10
- referenceDate?: Date;
11
- }
12
- export declare function TimePicker({ value, onChange, hourFormat, minuteStep, referenceDate, }: TimePickerProps): React.ReactElement;
@@ -1,105 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.TimePicker = TimePicker;
37
- const React = __importStar(require("react"));
38
- const utils_1 = require("../../lib/utils");
39
- function TimePicker({ value, onChange, hourFormat = 24, minuteStep = 1, referenceDate, }) {
40
- var _a;
41
- const base = (_a = value !== null && value !== void 0 ? value : referenceDate) !== null && _a !== void 0 ? _a : new Date();
42
- const currentHour24 = base.getHours();
43
- const currentMinute = base.getMinutes();
44
- const isPM = currentHour24 >= 12;
45
- const hour12 = currentHour24 % 12 === 0 ? 12 : currentHour24 % 12;
46
- const setHour = (nextHour24) => {
47
- const next = new Date(base);
48
- next.setHours(nextHour24, currentMinute, 0, 0);
49
- onChange(next);
50
- };
51
- const setMinute = (m) => {
52
- const next = new Date(base);
53
- next.setMinutes(m, 0, 0);
54
- onChange(next);
55
- };
56
- const togglePeriod = (period) => {
57
- const wantsPM = period === "PM";
58
- if (wantsPM === isPM)
59
- return;
60
- const nextHour = wantsPM ? currentHour24 + 12 : currentHour24 - 12;
61
- setHour(((nextHour % 24) + 24) % 24);
62
- };
63
- const hours = hourFormat === 24
64
- ? Array.from({ length: 24 }, (_, i) => i)
65
- : Array.from({ length: 12 }, (_, i) => i + 1);
66
- const minutes = [];
67
- for (let m = 0; m < 60; m += minuteStep)
68
- minutes.push(m);
69
- return (React.createElement("div", { role: "group", "aria-label": "Time picker", className: "flex items-stretch justify-center gap-1 border-t border-border p-2" },
70
- React.createElement(ScrollColumn, { label: "Hour", items: hours, isSelected: (value) => hourFormat === 24 ? value === currentHour24 : value === hour12, onSelect: (value) => {
71
- if (hourFormat === 24) {
72
- setHour(value);
73
- }
74
- else {
75
- const normalized = value === 12 ? 0 : value;
76
- setHour(isPM ? normalized + 12 : normalized);
77
- }
78
- }, render: (v) => String(v).padStart(2, "0") }),
79
- React.createElement("span", { className: "self-center text-sm text-muted-foreground" }, ":"),
80
- React.createElement(ScrollColumn, { label: "Minute", items: minutes, isSelected: (value) => value === currentMinute, onSelect: setMinute, render: (v) => String(v).padStart(2, "0") }),
81
- hourFormat === 12 && (React.createElement("div", { role: "group", "aria-label": "Period", className: "ml-2 flex flex-col gap-1" },
82
- React.createElement(PeriodButton, { active: !isPM, onClick: () => togglePeriod("AM") }, "AM"),
83
- React.createElement(PeriodButton, { active: isPM, onClick: () => togglePeriod("PM") }, "PM")))));
84
- }
85
- function ScrollColumn({ label, items, isSelected, onSelect, render, }) {
86
- const ref = React.useRef(null);
87
- React.useEffect(() => {
88
- const node = ref.current;
89
- if (!node)
90
- return;
91
- const selected = node.querySelector('[data-selected="true"]');
92
- if (selected) {
93
- node.scrollTop =
94
- selected.offsetTop - node.clientHeight / 2 + selected.clientHeight / 2;
95
- }
96
- }, [items]);
97
- return (React.createElement("div", { ref: ref, role: "listbox", "aria-label": label, className: "flex h-32 w-12 flex-col gap-0.5 overflow-y-auto rounded-md border border-border bg-background p-1" }, items.map((item, index) => {
98
- const selected = isSelected(item);
99
- return (React.createElement("button", { key: index, type: "button", role: "option", "aria-selected": selected, "data-selected": selected, onClick: () => onSelect(item), className: (0, utils_1.cn)("rounded px-2 py-1 text-center text-sm transition-colors", "hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", selected &&
100
- "bg-primary text-primary-foreground hover:bg-primary") }, render(item)));
101
- })));
102
- }
103
- function PeriodButton({ active, onClick, children, }) {
104
- return (React.createElement("button", { type: "button", "aria-pressed": active, onClick: onClick, className: (0, utils_1.cn)("flex-1 rounded-md border border-border px-2 py-1 text-xs font-medium transition-colors", "hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", active && "bg-primary text-primary-foreground border-primary") }, children));
105
- }
@@ -1,31 +0,0 @@
1
- import { addDays, addMonths, addYears, endOfMonth, isAfter, isBefore, isSameDay, isSameMonth, startOfDay, startOfMonth } from "date-fns";
2
- export type DayOfWeek = 0 | 1 | 2 | 3 | 4 | 5 | 6;
3
- export interface DateRange {
4
- start: Date | null;
5
- end: Date | null;
6
- }
7
- export declare const DEFAULT_DATE_FORMAT = "dd/MM/yyyy";
8
- export declare const DEFAULT_DATETIME_FORMAT = "dd/MM/yyyy HH:mm";
9
- export declare const DEFAULT_TIME_FORMAT = "HH:mm";
10
- export declare function formatDate(date: Date | null | undefined, pattern: string): string;
11
- export declare function tryParseDate(text: string, pattern: string, referenceDate?: Date): Date | null;
12
- export interface CalendarCell {
13
- date: Date;
14
- inCurrentMonth: boolean;
15
- isToday: boolean;
16
- }
17
- /**
18
- * Returns the 6×7 grid for a given month, filled with leading/trailing days
19
- * from the adjacent months so the grid is always rectangular.
20
- */
21
- export declare function buildMonthGrid(referenceDate: Date, weekStartsOn: DayOfWeek): CalendarCell[];
22
- export declare function getWeekdayHeaders(weekStartsOn: DayOfWeek, locale?: Intl.LocalesArgument): string[];
23
- export interface DateConstraints {
24
- minDate?: Date;
25
- maxDate?: Date;
26
- disabledDates?: Date[];
27
- disabledDaysOfWeek?: DayOfWeek[];
28
- }
29
- export declare function isDateDisabled(date: Date, constraints: DateConstraints): boolean;
30
- export declare function inferTypeFromFormat(pattern: string): "date" | "time" | "datetime";
31
- export { addDays, addMonths, addYears, isAfter, isBefore, isSameDay, isSameMonth, startOfDay, startOfMonth, endOfMonth, };