@astryxdesign/core 0.4.6 → 0.4.7-canary.29be96d
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.
- package/CHANGELOG.md +35 -0
- package/dist/BottomSheet/BottomSheet.d.ts +1 -0
- package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheet.js +54 -15
- package/dist/BottomSheet/BottomSheetEdgeTint.d.ts +6 -0
- package/dist/BottomSheet/BottomSheetEdgeTint.d.ts.map +1 -0
- package/dist/BottomSheet/BottomSheetEdgeTint.js +62 -0
- package/dist/BottomSheet/BottomSheetPanel.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetPanel.js +1 -0
- package/dist/BottomSheet/BottomSheetSwitcher.d.ts +1 -0
- package/dist/BottomSheet/BottomSheetSwitcher.d.ts.map +1 -1
- package/dist/BottomSheet/BottomSheetSwitcher.js +10 -4
- package/dist/BottomSheet/useSheetGestures.d.ts.map +1 -1
- package/dist/BottomSheet/useSheetGestures.js +23 -5
- package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
- package/dist/Breadcrumbs/BreadcrumbItem.js +5 -5
- package/dist/Calendar/Calendar.d.ts +3 -1
- package/dist/Calendar/Calendar.d.ts.map +1 -1
- package/dist/Calendar/Calendar.js +13 -14
- package/dist/Calendar/getInitialFocusDate.d.ts +46 -0
- package/dist/Calendar/getInitialFocusDate.d.ts.map +1 -0
- package/dist/Calendar/getInitialFocusDate.js +62 -0
- package/dist/Chat/ChatMessageList.d.ts +22 -3
- package/dist/Chat/ChatMessageList.d.ts.map +1 -1
- package/dist/Chat/ChatMessageList.js +6 -3
- package/dist/DateInput/TouchDateField.d.ts.map +1 -1
- package/dist/DateInput/TouchDateField.js +34 -1
- package/dist/Dialog/Dialog.d.ts +7 -1
- package/dist/Dialog/Dialog.d.ts.map +1 -1
- package/dist/Dialog/Dialog.js +48 -22
- package/dist/Heading/Heading.d.ts.map +1 -1
- package/dist/Heading/Heading.js +6 -2
- package/dist/Kbd/Kbd.d.ts.map +1 -1
- package/dist/Kbd/Kbd.js +10 -3
- package/dist/Markdown/index.d.ts +1 -1
- package/dist/Markdown/index.d.ts.map +1 -1
- package/dist/Markdown/parser.d.ts +38 -1
- package/dist/Markdown/parser.d.ts.map +1 -1
- package/dist/Markdown/parser.js +149 -23
- package/dist/MultiSelector/MultiSelector.d.ts +15 -1
- package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
- package/dist/MultiSelector/MultiSelector.js +17 -6
- package/dist/MultiSelector/index.d.ts +1 -1
- package/dist/MultiSelector/index.d.ts.map +1 -1
- package/dist/Selector/Selector.d.ts.map +1 -1
- package/dist/Selector/Selector.js +5 -0
- package/dist/Stepper/Step.d.ts +140 -0
- package/dist/Stepper/Step.d.ts.map +1 -0
- package/dist/Stepper/Step.js +1045 -0
- package/dist/Stepper/StepStatus.d.ts +24 -0
- package/dist/Stepper/StepStatus.d.ts.map +1 -0
- package/dist/Stepper/StepStatus.js +1 -0
- package/dist/Stepper/Stepper.d.ts +93 -0
- package/dist/Stepper/Stepper.d.ts.map +1 -0
- package/dist/Stepper/Stepper.js +184 -0
- package/dist/Stepper/StepperContext.d.ts +41 -0
- package/dist/Stepper/StepperContext.d.ts.map +1 -0
- package/dist/Stepper/StepperContext.js +34 -0
- package/dist/Stepper/index.d.ts +8 -0
- package/dist/Stepper/index.d.ts.map +1 -0
- package/dist/Stepper/index.js +7 -0
- package/dist/Stepper/stepper.stylex.d.ts +15 -0
- package/dist/Stepper/stepper.stylex.d.ts.map +1 -0
- package/dist/Stepper/stepper.stylex.js +20 -0
- package/dist/TabList/Tab.d.ts.map +1 -1
- package/dist/TabList/Tab.js +5 -1
- package/dist/Table/BaseTable.d.ts.map +1 -1
- package/dist/Table/BaseTable.js +4 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
- package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +20 -8
- package/dist/Table/plugins/rowStatus/useTableRowStatus.d.ts.map +1 -1
- package/dist/Table/plugins/rowStatus/useTableRowStatus.js +10 -3
- package/dist/Table/plugins/selection/useTableSelection.d.ts +16 -0
- package/dist/Table/plugins/selection/useTableSelection.d.ts.map +1 -1
- package/dist/Table/plugins/selection/useTableSelection.js +19 -5
- package/dist/Table/types.d.ts +22 -4
- package/dist/Table/types.d.ts.map +1 -1
- package/dist/Table/useBaseTablePlugins.d.ts.map +1 -1
- package/dist/Table/useBaseTablePlugins.js +5 -0
- package/dist/Text/Text.d.ts.map +1 -1
- package/dist/Text/Text.js +6 -2
- package/dist/astryx.css +41 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/useHotkeys.d.ts.map +1 -1
- package/dist/hooks/useHotkeys.js +10 -3
- package/dist/hooks/useListFocus.d.ts +5 -2
- package/dist/hooks/useListFocus.d.ts.map +1 -1
- package/dist/hooks/useListFocus.js +12 -6
- package/dist/hooks/useMergedRefs.d.ts +18 -0
- package/dist/hooks/useMergedRefs.d.ts.map +1 -0
- package/dist/hooks/useMergedRefs.js +25 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/utils/timeParser.d.ts +1 -1
- package/dist/utils/timeParser.d.ts.map +1 -1
- package/dist/utils/timeParser.js +26 -12
- package/locales/en.json +14 -6
- package/locales/pseudo.json +6 -0
- package/package.json +8 -3
- package/src/Avatar/Avatar.doc.mjs +2 -1
- package/src/BottomSheet/BottomSheet.test.tsx +123 -0
- package/src/BottomSheet/BottomSheet.tsx +36 -4
- package/src/BottomSheet/BottomSheetEdgeTint.test.tsx +225 -0
- package/src/BottomSheet/BottomSheetEdgeTint.tsx +82 -0
- package/src/BottomSheet/BottomSheetPanel.test.tsx +66 -0
- package/src/BottomSheet/BottomSheetPanel.tsx +19 -0
- package/src/BottomSheet/BottomSheetSwitcher.tsx +13 -0
- package/src/BottomSheet/useSheetGestures.test.ts +27 -0
- package/src/BottomSheet/useSheetGestures.ts +25 -5
- package/src/Breadcrumbs/BreadcrumbItem.tsx +2 -1
- package/src/Button/Button.doc.mjs +22 -0
- package/src/Calendar/Calendar.doc.mjs +4 -3
- package/src/Calendar/Calendar.test.tsx +52 -0
- package/src/Calendar/Calendar.tsx +18 -15
- package/src/Calendar/getInitialFocusDate.test.ts +94 -0
- package/src/Calendar/getInitialFocusDate.ts +93 -0
- package/src/Chat/ChatMessageList.doc.mjs +9 -1
- package/src/Chat/ChatMessageList.test.tsx +46 -0
- package/src/Chat/ChatMessageList.tsx +28 -4
- package/src/CodeBlock/CodeBlock.doc.mjs +6 -0
- package/src/ContextMenu/ContextMenu.doc.mjs +5 -0
- package/src/DateInput/DateInputTouch.test.tsx +36 -0
- package/src/DateInput/TouchDateField.tsx +35 -1
- package/src/Dialog/Dialog.doc.mjs +8 -3
- package/src/Dialog/Dialog.test.tsx +71 -0
- package/src/Dialog/Dialog.tsx +72 -20
- package/src/Field/Field.doc.mjs +11 -0
- package/src/Heading/Heading.test.tsx +23 -1
- package/src/Heading/Heading.tsx +6 -2
- package/src/Kbd/Kbd.test.tsx +17 -0
- package/src/Kbd/Kbd.tsx +10 -3
- package/src/Link/Link.doc.mjs +11 -0
- package/src/Markdown/index.ts +1 -0
- package/src/Markdown/parser.perf.test.ts +71 -1
- package/src/Markdown/parser.test.ts +145 -2
- package/src/Markdown/parser.ts +208 -22
- package/src/MoreMenu/MoreMenu.doc.mjs +7 -1
- package/src/MultiSelector/MultiSelector.doc.mjs +10 -0
- package/src/MultiSelector/MultiSelector.test.tsx +105 -0
- package/src/MultiSelector/MultiSelector.tsx +50 -6
- package/src/MultiSelector/index.ts +1 -0
- package/src/NumberInput/NumberInput.doc.mjs +5 -0
- package/src/Popover/Popover.test.tsx +27 -1
- package/src/PowerSearch/PowerSearch.doc.mjs +10 -0
- package/src/Selector/Selector.doc.mjs +11 -0
- package/src/Selector/Selector.test.tsx +21 -0
- package/src/Selector/Selector.tsx +11 -1
- package/src/Stepper/Step.doc.mjs +98 -0
- package/src/Stepper/Step.tsx +1638 -0
- package/src/Stepper/StepStatus.ts +26 -0
- package/src/Stepper/Stepper.doc.mjs +370 -0
- package/src/Stepper/Stepper.test.tsx +1024 -0
- package/src/Stepper/Stepper.tsx +258 -0
- package/src/Stepper/StepperContext.ts +71 -0
- package/src/Stepper/index.ts +18 -0
- package/src/Stepper/stepper.stylex.ts +19 -0
- package/src/TabList/Tab.tsx +5 -1
- package/src/TabList/TabList.test.tsx +21 -4
- package/src/Table/BaseTable.tsx +6 -3
- package/src/Table/Table.test.tsx +35 -0
- package/src/Table/plugins/groupedRows/useTableGroupedRows-perf.test.tsx +112 -0
- package/src/Table/plugins/groupedRows/useTableGroupedRows.test.tsx +100 -0
- package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +17 -8
- package/src/Table/plugins/rowStatus/useTableRowStatus.test.tsx +13 -7
- package/src/Table/plugins/rowStatus/useTableRowStatus.tsx +12 -3
- package/src/Table/plugins/selection/useTableSelection.test.tsx +76 -0
- package/src/Table/plugins/selection/useTableSelection.tsx +40 -7
- package/src/Table/types.ts +22 -4
- package/src/Table/useBaseTablePlugins.ts +5 -0
- package/src/Table/useTableGroupedRows.doc.mjs +5 -4
- package/src/Table/useTableRowStatus.doc.mjs +1 -1
- package/src/Table/useTableSelection.doc.mjs +31 -0
- package/src/Text/Text.test.tsx +23 -1
- package/src/Text/Text.tsx +6 -2
- package/src/TextInput/TextInput.doc.mjs +10 -0
- package/src/Toast/Toast.doc.mjs +6 -0
- package/src/Tokenizer/Tokenizer.doc.mjs +10 -0
- package/src/Toolbar/Toolbar.doc.mjs +5 -0
- package/src/__tests__/apiContractDrift.test.tsx +80 -0
- package/src/__tests__/fieldContract.test.tsx +24 -0
- package/src/__tests__/structuralComponentContract.test.tsx +39 -0
- package/src/hooks/index.ts +2 -0
- package/src/hooks/useHotkeys.test.ts +18 -0
- package/src/hooks/useHotkeys.ts +10 -3
- package/src/hooks/useListFocus.doc.mjs +2 -2
- package/src/hooks/useListFocus.test.tsx +65 -3
- package/src/hooks/useListFocus.ts +15 -7
- package/src/hooks/useMergedRefs.doc.mjs +79 -0
- package/src/hooks/useMergedRefs.test.tsx +62 -0
- package/src/hooks/useMergedRefs.ts +36 -0
- package/src/index.ts +1 -0
- package/src/theme/MediaTheme.doc.mjs +5 -5
- package/src/utils/timeParser.test.ts +6 -1
- package/src/utils/timeParser.ts +35 -13
|
@@ -135,6 +135,9 @@ describe('parseTimeInput', () => {
|
|
|
135
135
|
it('parses compact formats', () => {
|
|
136
136
|
expect(parseTimeInput('1430')).toBe('14:30');
|
|
137
137
|
expect(parseTimeInput('0000')).toBe('00:00');
|
|
138
|
+
expect(parseTimeInput('0230pm')).toBe('14:30');
|
|
139
|
+
expect(parseTimeInput('1230am')).toBe('00:30');
|
|
140
|
+
expect(parseTimeInput('023045pm', true)).toBe('14:30:45');
|
|
138
141
|
});
|
|
139
142
|
|
|
140
143
|
it('parses hour-only with meridiem', () => {
|
|
@@ -259,7 +262,9 @@ describe('adjustTime', () => {
|
|
|
259
262
|
|
|
260
263
|
it('wraps large negative deltas in constant time', () => {
|
|
261
264
|
expect(adjustTime('10:00' as ISOTimeString, -1440 * 1e7)).toBe('10:00');
|
|
262
|
-
expect(adjustTime('10:00' as ISOTimeString, -1440 * 1e7 - 30)).toBe(
|
|
265
|
+
expect(adjustTime('10:00' as ISOTimeString, -1440 * 1e7 - 30)).toBe(
|
|
266
|
+
'09:30',
|
|
267
|
+
);
|
|
263
268
|
});
|
|
264
269
|
|
|
265
270
|
it('adds minutes', () => {
|
package/src/utils/timeParser.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @file timeParser.ts
|
|
5
5
|
* @input Uses string parsing
|
|
6
6
|
* @output Exports time parsing and formatting utilities
|
|
7
|
-
* @position Shared utility; used by
|
|
7
|
+
* @position Shared utility; used by TimeInput and DateTimeInput
|
|
8
8
|
*
|
|
9
9
|
* SYNC: When modified, update this header
|
|
10
10
|
*/
|
|
@@ -175,16 +175,29 @@ export function parseTimeInput(
|
|
|
175
175
|
// Remove AM/PM suffix
|
|
176
176
|
const timeStr = trimmed.replace(/\s*[ap]\.?m?\.?\s*$/i, '').trim();
|
|
177
177
|
|
|
178
|
+
const convertHourTo24Hour = (hour: number): number | null => {
|
|
179
|
+
if (!hasMeridiem) {
|
|
180
|
+
return hour;
|
|
181
|
+
}
|
|
182
|
+
if (hour < 1 || hour > 12) {
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
if (isPM && hour !== 12) {
|
|
186
|
+
return hour + 12;
|
|
187
|
+
}
|
|
188
|
+
if (isAM && hour === 12) {
|
|
189
|
+
return 0;
|
|
190
|
+
}
|
|
191
|
+
return hour;
|
|
192
|
+
};
|
|
193
|
+
|
|
178
194
|
// Handle formats like "2pm" -> "2"
|
|
179
195
|
if (/^\d{1,2}$/.test(timeStr)) {
|
|
180
196
|
const hour = parseInt(timeStr, 10);
|
|
181
|
-
if (
|
|
182
|
-
|
|
183
|
-
if (
|
|
184
|
-
|
|
185
|
-
}
|
|
186
|
-
if (isAM && hour === 12) {
|
|
187
|
-
hour24 = 0;
|
|
197
|
+
if (hasMeridiem) {
|
|
198
|
+
const hour24 = convertHourTo24Hour(hour);
|
|
199
|
+
if (hour24 === null) {
|
|
200
|
+
return null;
|
|
188
201
|
}
|
|
189
202
|
return formatISOTime(
|
|
190
203
|
{hour: hour24, minute: 0, second: 0},
|
|
@@ -201,8 +214,15 @@ export function parseTimeInput(
|
|
|
201
214
|
if (/^\d{4}$/.test(timeStr)) {
|
|
202
215
|
const hour = parseInt(timeStr.slice(0, 2), 10);
|
|
203
216
|
const minute = parseInt(timeStr.slice(2, 4), 10);
|
|
204
|
-
|
|
205
|
-
|
|
217
|
+
const hour24 = convertHourTo24Hour(hour);
|
|
218
|
+
if (
|
|
219
|
+
hour24 !== null &&
|
|
220
|
+
hour24 >= 0 &&
|
|
221
|
+
hour24 <= 23 &&
|
|
222
|
+
minute >= 0 &&
|
|
223
|
+
minute <= 59
|
|
224
|
+
) {
|
|
225
|
+
return formatISOTime({hour: hour24, minute, second: 0}, includeSeconds);
|
|
206
226
|
}
|
|
207
227
|
return null;
|
|
208
228
|
}
|
|
@@ -212,15 +232,17 @@ export function parseTimeInput(
|
|
|
212
232
|
const hour = parseInt(timeStr.slice(0, 2), 10);
|
|
213
233
|
const minute = parseInt(timeStr.slice(2, 4), 10);
|
|
214
234
|
const second = parseInt(timeStr.slice(4, 6), 10);
|
|
235
|
+
const hour24 = convertHourTo24Hour(hour);
|
|
215
236
|
if (
|
|
216
|
-
|
|
217
|
-
|
|
237
|
+
hour24 !== null &&
|
|
238
|
+
hour24 >= 0 &&
|
|
239
|
+
hour24 <= 23 &&
|
|
218
240
|
minute >= 0 &&
|
|
219
241
|
minute <= 59 &&
|
|
220
242
|
second >= 0 &&
|
|
221
243
|
second <= 59
|
|
222
244
|
) {
|
|
223
|
-
return formatISOTime({hour, minute, second}, includeSeconds);
|
|
245
|
+
return formatISOTime({hour: hour24, minute, second}, includeSeconds);
|
|
224
246
|
}
|
|
225
247
|
return null;
|
|
226
248
|
}
|