@heymantle/litho 0.0.1

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 (140) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +90 -0
  3. package/dist/cjs/components/ActionList.js +267 -0
  4. package/dist/cjs/components/AnnouncementBar.js +73 -0
  5. package/dist/cjs/components/AppProvider.js +245 -0
  6. package/dist/cjs/components/Autocomplete.js +351 -0
  7. package/dist/cjs/components/Badge.js +234 -0
  8. package/dist/cjs/components/Banner.js +264 -0
  9. package/dist/cjs/components/Box.js +247 -0
  10. package/dist/cjs/components/Button.js +1018 -0
  11. package/dist/cjs/components/ButtonGroup.js +196 -0
  12. package/dist/cjs/components/Card.js +593 -0
  13. package/dist/cjs/components/Checkbox.js +175 -0
  14. package/dist/cjs/components/ChoiceList.js +160 -0
  15. package/dist/cjs/components/Collapsible.js +42 -0
  16. package/dist/cjs/components/ColorField.js +159 -0
  17. package/dist/cjs/components/ContextualSaveBar.js +53 -0
  18. package/dist/cjs/components/DatePicker.js +547 -0
  19. package/dist/cjs/components/Divider.js +50 -0
  20. package/dist/cjs/components/DropZone.js +547 -0
  21. package/dist/cjs/components/EmptyState.js +111 -0
  22. package/dist/cjs/components/Filters.js +874 -0
  23. package/dist/cjs/components/FooterHelp.js +48 -0
  24. package/dist/cjs/components/Form.js +44 -0
  25. package/dist/cjs/components/Frame.js +386 -0
  26. package/dist/cjs/components/FrameSaveBar.js +239 -0
  27. package/dist/cjs/components/Grid.js +151 -0
  28. package/dist/cjs/components/HorizontalStack.js +180 -0
  29. package/dist/cjs/components/Icon.js +346 -0
  30. package/dist/cjs/components/Image.js +191 -0
  31. package/dist/cjs/components/InlineError.js +57 -0
  32. package/dist/cjs/components/Label.js +78 -0
  33. package/dist/cjs/components/Layout.js +228 -0
  34. package/dist/cjs/components/LayoutSection.js +133 -0
  35. package/dist/cjs/components/Link.js +128 -0
  36. package/dist/cjs/components/List.js +69 -0
  37. package/dist/cjs/components/Listbox.js +211 -0
  38. package/dist/cjs/components/Loading.js +103 -0
  39. package/dist/cjs/components/Modal.js +449 -0
  40. package/dist/cjs/components/Navigation.js +331 -0
  41. package/dist/cjs/components/Page.js +529 -0
  42. package/dist/cjs/components/Pagination.js +109 -0
  43. package/dist/cjs/components/Pane.js +128 -0
  44. package/dist/cjs/components/Popover.js +365 -0
  45. package/dist/cjs/components/PopoverManager.js +34 -0
  46. package/dist/cjs/components/ProgressBar.js +124 -0
  47. package/dist/cjs/components/RadioButton.js +172 -0
  48. package/dist/cjs/components/RadioButtonCard.js +193 -0
  49. package/dist/cjs/components/RangeSlider.js +235 -0
  50. package/dist/cjs/components/ResourceList.js +105 -0
  51. package/dist/cjs/components/Select.js +300 -0
  52. package/dist/cjs/components/SkeletonText.js +130 -0
  53. package/dist/cjs/components/Spinner.js +72 -0
  54. package/dist/cjs/components/Table.js +1184 -0
  55. package/dist/cjs/components/Tabs.js +421 -0
  56. package/dist/cjs/components/Tag.js +165 -0
  57. package/dist/cjs/components/Text.js +274 -0
  58. package/dist/cjs/components/TextField.js +584 -0
  59. package/dist/cjs/components/Thumbnail.js +73 -0
  60. package/dist/cjs/components/TimePicker.js +23 -0
  61. package/dist/cjs/components/Tip.js +220 -0
  62. package/dist/cjs/components/Tooltip.js +431 -0
  63. package/dist/cjs/components/TopBar.js +210 -0
  64. package/dist/cjs/components/VerticalStack.js +161 -0
  65. package/dist/cjs/index.js +308 -0
  66. package/dist/cjs/styles/Table.js +591 -0
  67. package/dist/cjs/utilities/dates.js +339 -0
  68. package/dist/cjs/utilities/useIndexResourceState.js +175 -0
  69. package/dist/cjs/utilities/useMounted.js +67 -0
  70. package/dist/cjs/utilities/useTableScrollState.js +142 -0
  71. package/dist/esm/components/ActionList.js +216 -0
  72. package/dist/esm/components/AnnouncementBar.js +63 -0
  73. package/dist/esm/components/AppProvider.js +185 -0
  74. package/dist/esm/components/Autocomplete.js +300 -0
  75. package/dist/esm/components/Badge.js +225 -0
  76. package/dist/esm/components/Banner.js +254 -0
  77. package/dist/esm/components/Box.js +238 -0
  78. package/dist/esm/components/Button.js +967 -0
  79. package/dist/esm/components/ButtonGroup.js +137 -0
  80. package/dist/esm/components/Card.js +537 -0
  81. package/dist/esm/components/Checkbox.js +165 -0
  82. package/dist/esm/components/ChoiceList.js +145 -0
  83. package/dist/esm/components/Collapsible.js +32 -0
  84. package/dist/esm/components/ColorField.js +149 -0
  85. package/dist/esm/components/ContextualSaveBar.js +43 -0
  86. package/dist/esm/components/DatePicker.js +532 -0
  87. package/dist/esm/components/Divider.js +41 -0
  88. package/dist/esm/components/DropZone.js +537 -0
  89. package/dist/esm/components/EmptyState.js +101 -0
  90. package/dist/esm/components/Filters.js +823 -0
  91. package/dist/esm/components/FooterHelp.js +38 -0
  92. package/dist/esm/components/Form.js +35 -0
  93. package/dist/esm/components/Frame.js +376 -0
  94. package/dist/esm/components/FrameSaveBar.js +229 -0
  95. package/dist/esm/components/Grid.js +142 -0
  96. package/dist/esm/components/HorizontalStack.js +171 -0
  97. package/dist/esm/components/Icon.js +296 -0
  98. package/dist/esm/components/Image.js +141 -0
  99. package/dist/esm/components/InlineError.js +43 -0
  100. package/dist/esm/components/Label.js +63 -0
  101. package/dist/esm/components/Layout.js +164 -0
  102. package/dist/esm/components/LayoutSection.js +82 -0
  103. package/dist/esm/components/Link.js +119 -0
  104. package/dist/esm/components/List.js +61 -0
  105. package/dist/esm/components/Listbox.js +201 -0
  106. package/dist/esm/components/Loading.js +93 -0
  107. package/dist/esm/components/Modal.js +390 -0
  108. package/dist/esm/components/Navigation.js +321 -0
  109. package/dist/esm/components/Page.js +473 -0
  110. package/dist/esm/components/Pagination.js +99 -0
  111. package/dist/esm/components/Pane.js +118 -0
  112. package/dist/esm/components/Popover.js +350 -0
  113. package/dist/esm/components/PopoverManager.js +24 -0
  114. package/dist/esm/components/ProgressBar.js +114 -0
  115. package/dist/esm/components/RadioButton.js +157 -0
  116. package/dist/esm/components/RadioButtonCard.js +178 -0
  117. package/dist/esm/components/RangeSlider.js +225 -0
  118. package/dist/esm/components/ResourceList.js +95 -0
  119. package/dist/esm/components/Select.js +285 -0
  120. package/dist/esm/components/SkeletonText.js +120 -0
  121. package/dist/esm/components/Spinner.js +63 -0
  122. package/dist/esm/components/Table.js +1129 -0
  123. package/dist/esm/components/Tabs.js +366 -0
  124. package/dist/esm/components/Tag.js +151 -0
  125. package/dist/esm/components/Text.js +265 -0
  126. package/dist/esm/components/TextField.js +533 -0
  127. package/dist/esm/components/Thumbnail.js +63 -0
  128. package/dist/esm/components/TimePicker.js +13 -0
  129. package/dist/esm/components/Tip.js +169 -0
  130. package/dist/esm/components/Tooltip.js +380 -0
  131. package/dist/esm/components/TopBar.js +200 -0
  132. package/dist/esm/components/VerticalStack.js +152 -0
  133. package/dist/esm/index.js +61 -0
  134. package/dist/esm/styles/Table.js +581 -0
  135. package/dist/esm/utilities/dates.js +289 -0
  136. package/dist/esm/utilities/useIndexResourceState.js +158 -0
  137. package/dist/esm/utilities/useMounted.js +57 -0
  138. package/dist/esm/utilities/useTableScrollState.js +132 -0
  139. package/index.css +1137 -0
  140. package/package.json +53 -0
@@ -0,0 +1,547 @@
1
+ "use client";
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "default", {
7
+ enumerable: true,
8
+ get: function() {
9
+ return _default;
10
+ }
11
+ });
12
+ var _jsxruntime = require("react/jsx-runtime");
13
+ var _react = require("react");
14
+ var _tailwindvariants = require("tailwind-variants");
15
+ var _dayjs = /*#__PURE__*/ _interop_require_default(require("dayjs"));
16
+ var _reactdatepicker = /*#__PURE__*/ _interop_require_default(require("react-datepicker"));
17
+ var _index = require("../index");
18
+ var _polarisicons = require("@shopify/polaris-icons");
19
+ var _locale = require("date-fns/locale");
20
+ var _dates = require("../utilities/dates");
21
+ function _array_like_to_array(arr, len) {
22
+ if (len == null || len > arr.length) len = arr.length;
23
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
24
+ return arr2;
25
+ }
26
+ function _array_with_holes(arr) {
27
+ if (Array.isArray(arr)) return arr;
28
+ }
29
+ function _array_without_holes(arr) {
30
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
31
+ }
32
+ function _define_property(obj, key, value) {
33
+ if (key in obj) {
34
+ Object.defineProperty(obj, key, {
35
+ value: value,
36
+ enumerable: true,
37
+ configurable: true,
38
+ writable: true
39
+ });
40
+ } else {
41
+ obj[key] = value;
42
+ }
43
+ return obj;
44
+ }
45
+ function _interop_require_default(obj) {
46
+ return obj && obj.__esModule ? obj : {
47
+ default: obj
48
+ };
49
+ }
50
+ function _iterable_to_array(iter) {
51
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
52
+ }
53
+ function _iterable_to_array_limit(arr, i) {
54
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
55
+ if (_i == null) return;
56
+ var _arr = [];
57
+ var _n = true;
58
+ var _d = false;
59
+ var _s, _e;
60
+ try {
61
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
62
+ _arr.push(_s.value);
63
+ if (i && _arr.length === i) break;
64
+ }
65
+ } catch (err) {
66
+ _d = true;
67
+ _e = err;
68
+ } finally{
69
+ try {
70
+ if (!_n && _i["return"] != null) _i["return"]();
71
+ } finally{
72
+ if (_d) throw _e;
73
+ }
74
+ }
75
+ return _arr;
76
+ }
77
+ function _non_iterable_rest() {
78
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
79
+ }
80
+ function _non_iterable_spread() {
81
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
82
+ }
83
+ function _object_spread(target) {
84
+ for(var i = 1; i < arguments.length; i++){
85
+ var source = arguments[i] != null ? arguments[i] : {};
86
+ var ownKeys = Object.keys(source);
87
+ if (typeof Object.getOwnPropertySymbols === "function") {
88
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
89
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
90
+ }));
91
+ }
92
+ ownKeys.forEach(function(key) {
93
+ _define_property(target, key, source[key]);
94
+ });
95
+ }
96
+ return target;
97
+ }
98
+ function ownKeys(object, enumerableOnly) {
99
+ var keys = Object.keys(object);
100
+ if (Object.getOwnPropertySymbols) {
101
+ var symbols = Object.getOwnPropertySymbols(object);
102
+ if (enumerableOnly) {
103
+ symbols = symbols.filter(function(sym) {
104
+ return Object.getOwnPropertyDescriptor(object, sym).enumerable;
105
+ });
106
+ }
107
+ keys.push.apply(keys, symbols);
108
+ }
109
+ return keys;
110
+ }
111
+ function _object_spread_props(target, source) {
112
+ source = source != null ? source : {};
113
+ if (Object.getOwnPropertyDescriptors) {
114
+ Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
115
+ } else {
116
+ ownKeys(Object(source)).forEach(function(key) {
117
+ Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
118
+ });
119
+ }
120
+ return target;
121
+ }
122
+ function _sliced_to_array(arr, i) {
123
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
124
+ }
125
+ function _to_consumable_array(arr) {
126
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
127
+ }
128
+ function _type_of(obj) {
129
+ "@swc/helpers - typeof";
130
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
131
+ }
132
+ function _unsupported_iterable_to_array(o, minLen) {
133
+ if (!o) return;
134
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
135
+ var n = Object.prototype.toString.call(o).slice(8, -1);
136
+ if (n === "Object" && o.constructor) n = o.constructor.name;
137
+ if (n === "Map" || n === "Set") return Array.from(n);
138
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
139
+ }
140
+ var calendarStyles = (0, _tailwindvariants.tv)({
141
+ base: "Litho-DatePicker__Calendar relative"
142
+ });
143
+ var dayStyles = (0, _tailwindvariants.tv)({
144
+ base: "Litho-DatePicker__Calendar__Day inline-block w-10 @sm:w-8 h-8 flex items-center justify-center text-center select-none",
145
+ variants: {
146
+ disabled: {
147
+ false: "cursor-pointer",
148
+ true: "text-lowest"
149
+ },
150
+ isToday: {
151
+ true: "font-semibold",
152
+ false: ""
153
+ },
154
+ isBetween: {
155
+ true: "bg-tab-active-bg hover:bg-tab-active-bg active:bg-tab-active-bg",
156
+ false: ""
157
+ }
158
+ },
159
+ compoundVariants: [
160
+ {
161
+ allowRange: true,
162
+ selected: false,
163
+ disabled: false,
164
+ isStartDate: false,
165
+ isEndDate: false,
166
+ isBetween: false,
167
+ class: "rounded-md"
168
+ },
169
+ {
170
+ allowRange: false,
171
+ class: "rounded-md"
172
+ },
173
+ {
174
+ allowRange: false,
175
+ selected: false,
176
+ disabled: false,
177
+ class: "hover"
178
+ },
179
+ {
180
+ allowRange: true,
181
+ selected: false,
182
+ disabled: false,
183
+ isBetween: false,
184
+ isStartDate: false,
185
+ isEndDate: false,
186
+ showHoverState: true,
187
+ class: "hover"
188
+ },
189
+ {
190
+ allowRange: false,
191
+ selected: true,
192
+ class: "font-semibold bg-form-accent hover:bg-form-accent dark:text-black"
193
+ },
194
+ {
195
+ allowRange: true,
196
+ selected: true,
197
+ isStartDate: true,
198
+ class: "font-semibold bg-form-accent hover:bg-form-accent rounded-l-md dark:text-black"
199
+ },
200
+ {
201
+ allowRange: true,
202
+ isEndDate: true,
203
+ class: "font-semibold bg-form-accent hover:bg-form-accent rounded-r-md dark:text-black"
204
+ }
205
+ ],
206
+ defaultVariants: {
207
+ isToday: false,
208
+ isStartDate: false,
209
+ isEndDate: false,
210
+ allowRange: false,
211
+ isBetween: false,
212
+ selected: false,
213
+ disabled: false
214
+ }
215
+ });
216
+ var buttonStyles = (0, _tailwindvariants.tv)({
217
+ base: "Litho-DatePicker__Button",
218
+ variants: {
219
+ disabled: {
220
+ false: "opacity-70 cursor-pointer rounded-md p-1 hover",
221
+ true: "opacity-20 pointer-events-none"
222
+ }
223
+ }
224
+ });
225
+ var presetContainerStyles = (0, _tailwindvariants.tv)({
226
+ base: "Litho-DatePicker__PresetContainer overflow-y-auto relative -left-2 max-w-full-plus-4 py-0.5 px-2 @sm:pl-0.5 @sm:pr-4 @sm:left-0 @sm:max-w-auto",
227
+ variants: {
228
+ rows: {
229
+ 4: "max-h-51",
230
+ 5: "max-h-59.5",
231
+ 6: "max-h-68"
232
+ }
233
+ }
234
+ });
235
+ var getDateRange = function(param) {
236
+ var startDate = param.startDate, endDate = param.endDate, dateRange = param.dateRange;
237
+ var start = (0, _dayjs.default)(startDate);
238
+ var end = (0, _dayjs.default)(endDate);
239
+ return _to_consumable_array(_dates.RANGE_PRESETS).concat(_to_consumable_array(_dates.HOURLY_RANGE_PRESETS)).find(function(preset) {
240
+ var _preset_value = preset.value, presetStart = _preset_value.start, presetEnd = _preset_value.end;
241
+ return start.isSame(presetStart, "day") && end.isSame(presetEnd, "day") && dateRange === preset.id;
242
+ }) || {
243
+ id: "custom",
244
+ value: {
245
+ start: start,
246
+ end: end
247
+ }
248
+ };
249
+ };
250
+ /**
251
+ * DatePicker component for selecting dates and date ranges.
252
+ *
253
+ * @param {Object} props - Component properties.
254
+ * @param {string} [props.label] - Label for the DatePicker.
255
+ * @param {Object|null} [props.labelAction] - Action button for the label.
256
+ * @param {function} [props.onBlur] - Callback function for when the field loses focus.
257
+ * @param {string} [props.placeholder="Select date..."] - Placeholder text.
258
+ * @param {string} [props.displayFormat] - Date format for displaying the value.
259
+ * @param {string} [props.helpText] - Help text displayed under the field.
260
+ * @param {JSX.Element|null} [props.suffix=null] - Icon or text displayed at the end of the input.
261
+ * @param {boolean} [props.isClearable=false] - Whether the input can be cleared.
262
+ * @param {string|null} [props.tooltip] - Tooltip text for the field.
263
+ * @param {string} [props.locale="en-US"] - Locale used for formatting.
264
+ * @param {Object|string|Date|null} [props.value] - Current value of the DatePicker.
265
+ * @param {boolean} [props.allowRange=false] - Whether date range selection is enabled.
266
+ * @param {JSX.Element|null} [props.activator] - Custom activator for the popover.
267
+ * @param {Date|string|null} [props.disableDatesAfter] - Dates after this value are disabled.
268
+ * @param {Date|string|null} [props.disableDatesBefore] - Dates before this value are disabled.
269
+ * @param {function} [props.onChange] - Callback function called when the date changes.
270
+ * @param {boolean} [props.multiMonth=false] - Whether multiple months are shown.
271
+ * @param {boolean} [props.disabled=false] - Whether the DatePicker is disabled.
272
+ * @param {boolean} [props.showTimePicker=false] - Whether a time picker is displayed.
273
+ * @param {boolean} [props.autoFocus=false] - Whether the input is focused automatically.
274
+ * @param {Date|null} [props.maxDate] - Maximum selectable date.
275
+ * @param {Date|null} [props.minDate] - Minimum selectable date.
276
+ * @param {boolean} [props.inline=false] - Whether the calendar is displayed inline.
277
+ * @param {string} [props.preferredAlignment="left"] - Alignment of the popover.
278
+ * @param {string} [props.preferredPosition="below"] - Position of the popover.
279
+ * @param {boolean} [props.includeHourlyPresets=false] - Whether hourly (last 30 minutes, last hour) presets are included.
280
+ * @param {Array} [props.customPresets=[]] - Custom presets to include.
281
+ * @param {JSX.Element|null} [props.footer] - An optional footer component to display at the bottom of the DatePicker.
282
+ * @returns {JSX.Element} The rendered DatePicker component.
283
+ */ function DatePicker() {
284
+ var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
285
+ var label = props.label, _props_labelAction = props.labelAction, labelAction = _props_labelAction === void 0 ? null : _props_labelAction, onBlur = props.onBlur, _props_placeholder = props.placeholder, placeholder = _props_placeholder === void 0 ? "Select date..." : _props_placeholder, _props_displayFormat = props.displayFormat, displayFormat = _props_displayFormat === void 0 ? props.showTimePicker && !props.allowRange ? _dates.DAY_TIME_FORMAT : _dates.DAY_FORMAT : _props_displayFormat, helpText = props.helpText, _props_suffix = props.suffix, suffix = _props_suffix === void 0 ? null : _props_suffix, isClearable = props.isClearable, tooltip = props.tooltip, tmp = props.locale, _locale1 = tmp === void 0 ? "en-US" : tmp, _value = props.value, _props_allowRange = props.allowRange, allowRange = _props_allowRange === void 0 ? false : _props_allowRange, activator = props.activator, disableDatesAfter = props.disableDatesAfter, disableDatesBefore = props.disableDatesBefore, onChange = props.onChange, multiMonth = props.multiMonth, disabled = props.disabled, showTimePicker = props.showTimePicker, autoFocus = props.autoFocus, _maxDate = props.maxDate, _minDate = props.minDate, _props_inline = props.inline, inline = _props_inline === void 0 ? false : _props_inline, _props_closeAfterDateSelection = props.closeAfterDateSelection, closeAfterDateSelection = _props_closeAfterDateSelection === void 0 ? true : _props_closeAfterDateSelection, _props_preferredAlignment = props.preferredAlignment, preferredAlignment = _props_preferredAlignment === void 0 ? "left" : _props_preferredAlignment, _props_preferredPosition = props.preferredPosition, preferredPosition = _props_preferredPosition === void 0 ? "below" : _props_preferredPosition, _props_includeHourlyPresets = props.includeHourlyPresets, includeHourlyPresets = _props_includeHourlyPresets === void 0 ? false : _props_includeHourlyPresets, _props_customPresets = props.customPresets, customPresets = _props_customPresets === void 0 ? [] : _props_customPresets, footer = props.footer;
286
+ var _useState = _sliced_to_array((0, _react.useState)(false), 2), showPopover = _useState[0], setShowPopover = _useState[1];
287
+ var _useState1 = _sliced_to_array((0, _react.useState)(4), 2), rows = _useState1[0], setRows = _useState1[1];
288
+ var startDate = (0, _dates.isValidDate)(_value === null || _value === void 0 ? void 0 : _value.start) ? _value.start : (0, _dayjs.default)().toDate();
289
+ var endDate = (0, _dates.isValidDate)(_value === null || _value === void 0 ? void 0 : _value.end) ? _value.end : null;
290
+ var value = (typeof _value === "undefined" ? "undefined" : _type_of(_value)) === "object" && (_value === null || _value === void 0 ? void 0 : _value.start) ? _value.start : _value || null;
291
+ var maxDate = _maxDate || disableDatesAfter;
292
+ var minDate = _minDate || disableDatesBefore ? (0, _dayjs.default)(disableDatesBefore).subtract(1, "day").toDate() : null;
293
+ var maxDateFormatted = maxDate ? (0, _dayjs.default)(maxDate) : null;
294
+ var minDateFormatted = minDate ? (0, _dayjs.default)(minDate) : null;
295
+ var dateRange = getDateRange({
296
+ startDate: startDate,
297
+ endDate: endDate,
298
+ dateRange: _value === null || _value === void 0 ? void 0 : _value.dateRange
299
+ });
300
+ var selectedDate = (0, _dayjs.default)(value).format(_dates.DAY_FORMAT);
301
+ var formattedTime = (0, _dayjs.default)(value).format(_dates.TIME_FORMAT);
302
+ var openToDate = allowRange ? startDate || endDate || value || (0, _dayjs.default)().toDate() : value || (0, _dayjs.default)().toDate();
303
+ var locale = _dates.DATE_LOCALE_MAP[_locale1] || _locale.enUS;
304
+ (0, _react.useEffect)(function() {
305
+ var _rows = getCalendarRows((openToDate === null || openToDate === void 0 ? void 0 : openToDate.getMonth()) || new Date().getMonth(), (openToDate === null || openToDate === void 0 ? void 0 : openToDate.getFullYear()) || new Date().getFullYear());
306
+ if (_rows !== rows) {
307
+ setRows(_rows);
308
+ }
309
+ }, [
310
+ startDate,
311
+ endDate
312
+ ]);
313
+ var renderDayContents = function(day, date) {
314
+ var dayjsDate = (0, _dayjs.default)(date);
315
+ var formattedDate = dayjsDate.format(_dates.DAY_FORMAT);
316
+ var isToday = formattedDate === _dates.NOW_TODAY;
317
+ var isStartDate = allowRange ? formattedDate === (0, _dayjs.default)(startDate).format(_dates.DAY_FORMAT) : false;
318
+ var isEndDate = allowRange ? formattedDate === (0, _dayjs.default)(endDate).format(_dates.DAY_FORMAT) : false;
319
+ var isBetween = allowRange ? dayjsDate.isAfter((0, _dayjs.default)(startDate)) && dayjsDate.isBefore((0, _dayjs.default)(endDate)) : false;
320
+ var disabled = false;
321
+ if (maxDateFormatted && dayjsDate.isAfter(maxDateFormatted)) {
322
+ disabled = true;
323
+ }
324
+ if (minDateFormatted && dayjsDate.isBefore(minDateFormatted)) {
325
+ disabled = true;
326
+ }
327
+ var dayClasses = dayStyles({
328
+ selected: formattedDate === selectedDate,
329
+ isStartDate: isStartDate,
330
+ isEndDate: isEndDate,
331
+ isBetween: isBetween,
332
+ showHoverState: !allowRange || !startDate && !endDate || !!startDate && !!endDate,
333
+ disabled: disabled,
334
+ allowRange: allowRange,
335
+ isToday: isToday
336
+ });
337
+ return /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
338
+ className: dayClasses,
339
+ children: day
340
+ });
341
+ };
342
+ var getCalendarRows = function(month, year) {
343
+ var weekStartsOn = (locale === null || locale === void 0 ? void 0 : locale.options.weekStartsOn) || 0;
344
+ var firstDayOfMonth = new Date(year, month, 1);
345
+ var lastDayOfMonth = new Date(year, month + 1, 0);
346
+ var firstDayOfWeek = (firstDayOfMonth.getDay() - weekStartsOn + 7) % 7;
347
+ var lastDayOfWeek = (lastDayOfMonth.getDay() - weekStartsOn + 7) % 7;
348
+ var daysInMonth = lastDayOfMonth.getDate();
349
+ var totalSlots = firstDayOfWeek + daysInMonth + (6 - lastDayOfWeek);
350
+ return Math.ceil(totalSlots / 7);
351
+ };
352
+ var calendarClasses = calendarStyles({
353
+ inline: inline
354
+ });
355
+ var presets = includeHourlyPresets ? _to_consumable_array(_dates.HOURLY_RANGE_PRESETS).concat(_to_consumable_array(_dates.RANGE_PRESETS)) : _dates.RANGE_PRESETS;
356
+ if (customPresets.length > 0) {
357
+ presets = _to_consumable_array(customPresets).concat(_to_consumable_array(presets));
358
+ }
359
+ var datePicker = /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
360
+ className: "flex flex-col @sm:flex-row items-start justify-start",
361
+ children: [
362
+ allowRange && /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
363
+ className: presetContainerStyles({
364
+ rows: rows
365
+ }),
366
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_index.Listbox, {
367
+ displayHorizontallyOnMobile: true,
368
+ options: presets.map(function(preset) {
369
+ return {
370
+ label: preset.label,
371
+ value: preset.id,
372
+ selected: dateRange.id === preset.id,
373
+ showIcon: false,
374
+ onAction: function() {
375
+ onChange(_object_spread_props(_object_spread({}, preset.value), {
376
+ dateRange: preset
377
+ }));
378
+ }
379
+ };
380
+ })
381
+ })
382
+ }),
383
+ /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
384
+ className: "flex flex-col gap-2 py-0.5 w-full @sm:w-auto",
385
+ children: [
386
+ /*#__PURE__*/ (0, _jsxruntime.jsx)(_reactdatepicker.default, {
387
+ className: "Litho-DatePicker",
388
+ calendarClassName: calendarClasses,
389
+ dayClassName: function() {
390
+ return "Litho-DatePicker__Day";
391
+ },
392
+ timeClassName: "Litho-DatePicker__Time",
393
+ monthClassName: "Litho-DatePicker__Month",
394
+ selectsRange: allowRange,
395
+ selected: allowRange ? startDate : value,
396
+ startDate: allowRange ? startDate : undefined,
397
+ endDate: allowRange ? endDate : undefined,
398
+ onChange: function(value) {
399
+ if (allowRange) {
400
+ var _value = _sliced_to_array(value, 2), start = _value[0], end = _value[1];
401
+ onChange({
402
+ start: start,
403
+ end: end,
404
+ dateRange: getDateRange(start, end)
405
+ });
406
+ } else {
407
+ onChange({
408
+ date: value,
409
+ dateRange: null
410
+ });
411
+ if (closeAfterDateSelection && !showTimePicker) {
412
+ setShowPopover(false);
413
+ }
414
+ }
415
+ },
416
+ openToDate: openToDate,
417
+ disabled: disabled,
418
+ inline: true,
419
+ monthsShown: multiMonth ? 2 : 1,
420
+ locale: locale,
421
+ renderDayContents: renderDayContents,
422
+ maxDate: maxDate,
423
+ minDate: minDate,
424
+ renderCustomHeader: function(param) {
425
+ var date = param.date, decreaseMonth = param.decreaseMonth, increaseMonth = param.increaseMonth, prevMonthButtonDisabled = param.prevMonthButtonDisabled, nextMonthButtonDisabled = param.nextMonthButtonDisabled;
426
+ var _date = (0, _dayjs.default)(date);
427
+ var monthLabel = _dates.MONTHS[_date.month()].name;
428
+ var yearLabel = _date.year();
429
+ var showYearLabel = true;
430
+ var _rows = getCalendarRows(_date.month(), _date.year());
431
+ if (_rows !== rows) {
432
+ setRows(_rows);
433
+ }
434
+ return /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
435
+ className: "flex justify-between items-center min-h-8",
436
+ children: [
437
+ /*#__PURE__*/ (0, _jsxruntime.jsx)("button", {
438
+ onClick: decreaseMonth,
439
+ disabled: prevMonthButtonDisabled,
440
+ className: buttonStyles({
441
+ disabled: prevMonthButtonDisabled
442
+ }),
443
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_index.Icon, {
444
+ source: _polarisicons.ChevronLeftMinor
445
+ })
446
+ }),
447
+ /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
448
+ children: /*#__PURE__*/ (0, _jsxruntime.jsxs)(_index.Text, {
449
+ children: [
450
+ monthLabel,
451
+ " ",
452
+ showYearLabel ? yearLabel : null
453
+ ]
454
+ })
455
+ }),
456
+ /*#__PURE__*/ (0, _jsxruntime.jsx)("button", {
457
+ onClick: increaseMonth,
458
+ disabled: nextMonthButtonDisabled,
459
+ className: buttonStyles({
460
+ disabled: nextMonthButtonDisabled
461
+ }),
462
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_index.Icon, {
463
+ source: _polarisicons.ChevronRightMinor
464
+ })
465
+ })
466
+ ]
467
+ });
468
+ }
469
+ }),
470
+ showTimePicker && !allowRange && /*#__PURE__*/ (0, _jsxruntime.jsx)(_index.TimePicker, {
471
+ value: formattedTime,
472
+ onChange: function(time) {
473
+ onChange({
474
+ date: (0, _dayjs.default)("".concat((0, _dayjs.default)(value).format(_dates.DAY_FORMAT), " ").concat(time)).toDate(),
475
+ dateRange: null
476
+ });
477
+ }
478
+ })
479
+ ]
480
+ })
481
+ ]
482
+ });
483
+ if (inline) {
484
+ return datePicker;
485
+ }
486
+ var startDateFormatted = startDate ? (0, _dayjs.default)(startDate).format(displayFormat) : null;
487
+ var endDateFormatted = endDate ? (0, _dayjs.default)(endDate).format(displayFormat) : null;
488
+ var displayValue = allowRange ? "".concat(startDateFormatted).concat(endDateFormatted && endDateFormatted !== startDateFormatted ? " to ".concat(endDateFormatted) : "") : value ? (0, _dayjs.default)(value).format(displayFormat) : "";
489
+ return /*#__PURE__*/ (0, _jsxruntime.jsx)(_index.Popover, {
490
+ active: showPopover,
491
+ activatorDisplayType: "block",
492
+ maxWidth: "datePicker",
493
+ activator: activator ? /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
494
+ onClick: function() {
495
+ return setShowPopover(!showPopover);
496
+ },
497
+ children: activator
498
+ }) : /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
499
+ onClick: function() {
500
+ return setShowPopover(!showPopover);
501
+ },
502
+ children: /*#__PURE__*/ (0, _jsxruntime.jsx)(_index.TextField, {
503
+ label: label,
504
+ labelAction: labelAction,
505
+ value: displayValue,
506
+ helpText: helpText,
507
+ autoComplete: "off",
508
+ placeholder: placeholder,
509
+ tooltip: tooltip,
510
+ icon: showTimePicker && !allowRange ? _polarisicons.CalendarTimeMinor : _polarisicons.CalendarMinor,
511
+ suffix: suffix,
512
+ onBlur: onBlur,
513
+ clearButton: isClearable,
514
+ onClearButtonClick: function() {
515
+ if (allowRange) {
516
+ onChange({
517
+ start: null,
518
+ end: null,
519
+ dateRange: null
520
+ });
521
+ } else {
522
+ onChange({
523
+ date: null
524
+ });
525
+ }
526
+ },
527
+ autoFocus: autoFocus,
528
+ disabled: disabled
529
+ })
530
+ }),
531
+ onClose: function() {
532
+ return setShowPopover(false);
533
+ },
534
+ preferredAlignment: preferredAlignment,
535
+ preferredPosition: preferredPosition,
536
+ children: /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
537
+ className: "flex flex-col p-2",
538
+ children: [
539
+ /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
540
+ children: datePicker
541
+ }),
542
+ footer && footer
543
+ ]
544
+ })
545
+ });
546
+ }
547
+ var _default = DatePicker;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return _default;
9
+ }
10
+ });
11
+ var _jsxruntime = require("react/jsx-runtime");
12
+ var _tailwindvariants = require("tailwind-variants");
13
+ var styles = (0, _tailwindvariants.tv)({
14
+ base: "Litho-Divider h-px",
15
+ variants: {
16
+ color: {
17
+ default: "bg-edge-default",
18
+ subdued: "bg-edge-subdued"
19
+ }
20
+ },
21
+ defaultVariants: {
22
+ color: "default"
23
+ }
24
+ });
25
+ /**
26
+ * Renders a divider element with customizable color variants.
27
+ *
28
+ * @component
29
+ * @param {Object} props - Component properties.
30
+ * @param {'default' | 'subdued'} [props.color='default'] - The color variant to apply to the divider.
31
+ * @returns {JSX.Element} A styled `<div>` element serving as a divider.
32
+ *
33
+ * @example
34
+ * // Renders a default color divider
35
+ * <Divider />
36
+ *
37
+ * @example
38
+ * // Renders a subdued color divider
39
+ * <Divider color="subdued" />
40
+ */ function Divider() {
41
+ var props = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
42
+ var color = props.color;
43
+ var classes = styles({
44
+ color: color
45
+ });
46
+ return /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
47
+ className: classes
48
+ });
49
+ }
50
+ var _default = Divider;