@astryxdesign/core 0.7.3-canary.b74cf21 → 0.7.3-canary.ca48bb7

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 (189) hide show
  1. package/dist/BottomSheet/BottomSheet.d.ts.map +1 -1
  2. package/dist/BottomSheet/BottomSheet.js +8 -4
  3. package/dist/BottomSheet/BottomSheetSwitcher.d.ts.map +1 -1
  4. package/dist/BottomSheet/BottomSheetSwitcher.js +7 -0
  5. package/dist/Calendar/Calendar.js +3 -2
  6. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  7. package/dist/CheckboxInput/CheckboxInput.js +19 -24
  8. package/dist/ClickableCard/ClickableCard.d.ts +2 -2
  9. package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
  10. package/dist/ClickableCard/ClickableCard.js +11 -9
  11. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  12. package/dist/CodeBlock/CodeBlock.js +11 -1
  13. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
  14. package/dist/ComplexSelector/ComplexSelector.js +23 -5
  15. package/dist/DateInput/DateInput.d.ts +4 -4
  16. package/dist/DateInput/DateInput.d.ts.map +1 -1
  17. package/dist/DateInput/DateInput.js +27 -20
  18. package/dist/DateInput/NativeDateField.d.ts.map +1 -1
  19. package/dist/DateInput/NativeDateField.js +14 -8
  20. package/dist/DateInput/TouchDateField.d.ts.map +1 -1
  21. package/dist/DateInput/TouchDateField.js +14 -10
  22. package/dist/DateRangeInput/DateRangeInput.d.ts +5 -5
  23. package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  24. package/dist/DateRangeInput/DateRangeInput.js +27 -18
  25. package/dist/Dialog/Dialog.d.ts.map +1 -1
  26. package/dist/Dialog/Dialog.js +9 -4
  27. package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  28. package/dist/DropdownMenu/DropdownMenu.js +52 -10
  29. package/dist/DropdownMenu/DropdownMenuContext.d.ts +34 -1
  30. package/dist/DropdownMenu/DropdownMenuContext.d.ts.map +1 -1
  31. package/dist/DropdownMenu/DropdownMenuContext.js +15 -0
  32. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts +21 -2
  33. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -1
  34. package/dist/DropdownMenu/DropdownMenuSubMenu.js +375 -42
  35. package/dist/DropdownMenu/menuRegionStops.d.ts +2 -2
  36. package/dist/DropdownMenu/menuRegionStops.js +2 -2
  37. package/dist/FileInput/FileInput.d.ts.map +1 -1
  38. package/dist/FileInput/FileInput.js +14 -12
  39. package/dist/Link/Link.d.ts +2 -3
  40. package/dist/Link/Link.d.ts.map +1 -1
  41. package/dist/Link/Link.js +11 -19
  42. package/dist/Markdown/Markdown.d.ts.map +1 -1
  43. package/dist/Markdown/Markdown.js +48 -15
  44. package/dist/MultiSelector/MultiSelector.d.ts +4 -4
  45. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  46. package/dist/MultiSelector/MultiSelector.disabledFocus.a11y.chromium.spec.d.ts +2 -0
  47. package/dist/MultiSelector/MultiSelector.disabledFocus.a11y.chromium.spec.d.ts.map +1 -0
  48. package/dist/MultiSelector/MultiSelector.disabledFocus.a11y.chromium.spec.js +48 -0
  49. package/dist/MultiSelector/MultiSelector.js +25 -18
  50. package/dist/Pagination/Pagination.d.ts.map +1 -1
  51. package/dist/Pagination/Pagination.js +5 -2
  52. package/dist/Popover/Popover.d.ts.map +1 -1
  53. package/dist/Popover/Popover.js +8 -4
  54. package/dist/Selector/Selector.d.ts +4 -4
  55. package/dist/Selector/Selector.d.ts.map +1 -1
  56. package/dist/Selector/Selector.js +23 -14
  57. package/dist/Slider/Slider.d.ts.map +1 -1
  58. package/dist/Slider/Slider.js +7 -14
  59. package/dist/Switch/Switch.d.ts.map +1 -1
  60. package/dist/Switch/Switch.js +25 -17
  61. package/dist/Switch/switch.markers.stylex.d.ts +2 -0
  62. package/dist/Switch/switch.markers.stylex.d.ts.map +1 -1
  63. package/dist/Switch/switch.markers.stylex.js +6 -0
  64. package/dist/TimeInput/TimeInput.d.ts +2 -1
  65. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  66. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  67. package/dist/Timestamp/Timestamp.js +41 -8
  68. package/dist/Token/Token.d.ts.map +1 -1
  69. package/dist/Token/Token.js +8 -3
  70. package/dist/Tooltip/Tooltip.d.ts.map +1 -1
  71. package/dist/Tooltip/Tooltip.js +36 -14
  72. package/dist/TopNav/TopNav.d.ts.map +1 -1
  73. package/dist/TopNav/TopNav.js +2 -2
  74. package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
  75. package/dist/TopNav/TopNavHeading.js +1 -0
  76. package/dist/TreeList/TreeListItem.d.ts.map +1 -1
  77. package/dist/TreeList/TreeListItem.js +8 -3
  78. package/dist/astryx.css +7 -2
  79. package/dist/hooks/useGridFocus.d.ts.map +1 -1
  80. package/dist/hooks/useGridFocus.js +10 -1
  81. package/dist/hooks/useMenuPress.d.ts +11 -1
  82. package/dist/hooks/useMenuPress.d.ts.map +1 -1
  83. package/dist/hooks/useMenuPress.js +43 -5
  84. package/dist/utils/disabledInteraction.d.ts +21 -0
  85. package/dist/utils/disabledInteraction.d.ts.map +1 -0
  86. package/dist/utils/disabledInteraction.js +33 -0
  87. package/dist/utils/timeParser.d.ts +4 -0
  88. package/dist/utils/timeParser.d.ts.map +1 -1
  89. package/dist/utils/timeParser.js +9 -2
  90. package/package.json +3 -3
  91. package/src/Banner/Banner.spec.md +37 -32
  92. package/src/BottomSheet/BottomSheet.spec.md +26 -53
  93. package/src/BottomSheet/BottomSheet.test.tsx +29 -0
  94. package/src/BottomSheet/BottomSheet.tsx +8 -4
  95. package/src/BottomSheet/BottomSheetSwitcher.spec.md +45 -48
  96. package/src/BottomSheet/BottomSheetSwitcher.test.tsx +26 -0
  97. package/src/BottomSheet/BottomSheetSwitcher.tsx +6 -0
  98. package/src/Calendar/Calendar.test.tsx +68 -24
  99. package/src/Calendar/Calendar.tsx +2 -1
  100. package/src/CheckboxInput/CheckboxInput.test.tsx +44 -5
  101. package/src/CheckboxInput/CheckboxInput.tsx +16 -26
  102. package/src/CheckboxInput/__tests__/Checkbox.a11y.states.ts +3 -3
  103. package/src/CheckboxList/CheckboxList.test.tsx +9 -6
  104. package/src/ClickableCard/ClickableCard.doc.mjs +2 -2
  105. package/src/ClickableCard/ClickableCard.test.tsx +5 -4
  106. package/src/ClickableCard/ClickableCard.tsx +9 -9
  107. package/src/CodeBlock/CodeBlock.highlightStyles.test.tsx +87 -0
  108. package/src/CodeBlock/CodeBlock.tsx +11 -1
  109. package/src/ComplexSelector/ComplexSelector.focusableDisabled.test.tsx +76 -0
  110. package/src/ComplexSelector/ComplexSelector.tsx +21 -4
  111. package/src/ContextMenu/ContextMenu.test.tsx +41 -0
  112. package/src/DateInput/DateInput.doc.mjs +9 -8
  113. package/src/DateInput/DateInput.test.tsx +88 -13
  114. package/src/DateInput/DateInput.tsx +49 -21
  115. package/src/DateInput/DateInputTouch.test.tsx +22 -1
  116. package/src/DateInput/NativeDateField.test.tsx +29 -3
  117. package/src/DateInput/NativeDateField.tsx +20 -7
  118. package/src/DateInput/TouchDateField.tsx +24 -9
  119. package/src/DateRangeInput/DateRangeInput.doc.mjs +6 -5
  120. package/src/DateRangeInput/DateRangeInput.test.tsx +82 -16
  121. package/src/DateRangeInput/DateRangeInput.tsx +40 -20
  122. package/src/Dialog/Dialog.test.tsx +39 -0
  123. package/src/Dialog/Dialog.tsx +9 -4
  124. package/src/DropdownMenu/DropdownMenu.spec.md +33 -2
  125. package/src/DropdownMenu/DropdownMenu.tsx +79 -8
  126. package/src/DropdownMenu/DropdownMenuContext.public.test.ts +22 -0
  127. package/src/DropdownMenu/DropdownMenuContext.tsx +39 -1
  128. package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +16 -1
  129. package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +623 -1
  130. package/src/DropdownMenu/DropdownMenuSubMenu.tsx +556 -99
  131. package/src/DropdownMenu/__tests__/SubMenuHeaderFooter.a11y.chromium.spec.ts +267 -0
  132. package/src/DropdownMenu/menuRegionStops.ts +2 -2
  133. package/src/DropdownMenu/modules/useMenuPress.spec.md +9 -0
  134. package/src/FieldStatus/FieldStatus.spec.md +3 -2
  135. package/src/FileInput/FileInput.test.tsx +30 -7
  136. package/src/FileInput/FileInput.tsx +21 -11
  137. package/src/Link/Link.test.tsx +21 -7
  138. package/src/Link/Link.tsx +16 -24
  139. package/src/Link/__tests__/Link.a11y.states.ts +1 -1
  140. package/src/Markdown/Markdown.rerender.test.tsx +143 -0
  141. package/src/Markdown/Markdown.tsx +89 -35
  142. package/src/MultiSelector/MultiSelector.disabledFocus.a11y.chromium.spec.ts +71 -0
  143. package/src/MultiSelector/MultiSelector.doc.mjs +5 -5
  144. package/src/MultiSelector/MultiSelector.focusableDisabled.test.tsx +121 -0
  145. package/src/MultiSelector/MultiSelector.test.tsx +49 -7
  146. package/src/MultiSelector/MultiSelector.tsx +53 -29
  147. package/src/Pagination/Pagination.test.tsx +5 -1
  148. package/src/Pagination/Pagination.tsx +3 -1
  149. package/src/Popover/Popover.test.tsx +15 -0
  150. package/src/Popover/Popover.tsx +19 -8
  151. package/src/PowerSearch/PowerSearchFilterEditor.test.tsx +3 -2
  152. package/src/PowerSearch/PowerSearchToken.test.tsx +7 -5
  153. package/src/Selector/Selector.doc.mjs +4 -4
  154. package/src/Selector/Selector.focusableDisabled.test.tsx +127 -0
  155. package/src/Selector/Selector.test.tsx +48 -6
  156. package/src/Selector/Selector.tsx +51 -21
  157. package/src/SideNav/SideNav.test.tsx +35 -0
  158. package/src/Slider/Slider.test.tsx +3 -3
  159. package/src/Slider/Slider.tsx +8 -15
  160. package/src/Switch/Switch.test.tsx +85 -8
  161. package/src/Switch/Switch.tsx +26 -16
  162. package/src/Switch/__tests__/Switch.a11y.states.ts +2 -2
  163. package/src/Switch/switch.markers.stylex.ts +4 -0
  164. package/src/Table/plugins/selection/useTableSelection.test.tsx +5 -3
  165. package/src/TimeInput/TimeInput.doc.mjs +5 -3
  166. package/src/TimeInput/TimeInput.test.tsx +20 -0
  167. package/src/TimeInput/TimeInput.tsx +2 -1
  168. package/src/Timestamp/Timestamp.doc.mjs +1 -1
  169. package/src/Timestamp/Timestamp.test.tsx +168 -0
  170. package/src/Timestamp/Timestamp.tsx +62 -11
  171. package/src/Token/Token.test.tsx +26 -4
  172. package/src/Token/Token.tsx +6 -2
  173. package/src/Tooltip/Tooltip.test.tsx +51 -6
  174. package/src/Tooltip/Tooltip.tsx +41 -18
  175. package/src/Tooltip/__tests__/Tooltip.a11y.chromium.spec.ts +129 -0
  176. package/src/Tooltip/__tests__/Tooltip.a11y.renders.tsx +86 -0
  177. package/src/Tooltip/__tests__/Tooltip.a11y.states.ts +132 -0
  178. package/src/Tooltip/__tests__/Tooltip.a11y.test.tsx +126 -0
  179. package/src/TopNav/TopNav.tsx +11 -1
  180. package/src/TopNav/TopNavHeading.tsx +1 -0
  181. package/src/TopNav/__tests__/TopNavMobileLongHeading.a11y.chromium.spec.ts +74 -0
  182. package/src/TreeList/TreeList.test.tsx +28 -0
  183. package/src/TreeList/TreeListItem.tsx +6 -2
  184. package/src/__tests__/DisabledTriggerFocus.a11y.chromium.spec.ts +86 -0
  185. package/src/hooks/useGridFocus.ts +16 -1
  186. package/src/hooks/useMenuPress.ts +45 -7
  187. package/src/utils/disabledInteraction.ts +40 -0
  188. package/src/utils/timeParser.test.ts +11 -0
  189. package/src/utils/timeParser.ts +9 -2
@@ -260,6 +260,17 @@ describe('adjustTime', () => {
260
260
  expect(adjustTime('10:00' as ISOTimeString, NaN)).toBe('10:00');
261
261
  });
262
262
 
263
+ it('returns the input unchanged for a fractional delta', () => {
264
+ // `increment` is documented as minutes and typed `number`, so a caller can
265
+ // hand ArrowUp a fraction. A fractional minute reaching formatISOTime is
266
+ // not rounded: it pads to "30.5" and the field is left holding a string
267
+ // that is no longer a parseable time.
268
+ expect(adjustTime('10:30' as ISOTimeString, 0.5)).toBe('10:30');
269
+ expect(adjustTime('10:30:45' as ISOTimeString, -0.5, true)).toBe(
270
+ '10:30:45',
271
+ );
272
+ });
273
+
263
274
  it('wraps large negative deltas in constant time', () => {
264
275
  expect(adjustTime('10:00' as ISOTimeString, -1440 * 1e7)).toBe('10:00');
265
276
  expect(adjustTime('10:00' as ISOTimeString, -1440 * 1e7 - 30)).toBe(
@@ -372,6 +372,10 @@ export function clampTime(
372
372
 
373
373
  /**
374
374
  * Adjusts a time by adding/subtracting minutes.
375
+ *
376
+ * `deltaMinutes` is a whole number of minutes. A fractional delta leaves the
377
+ * time unchanged rather than returning a value that is no longer a time —
378
+ * `HH:MM` has no place for a fraction of a minute.
375
379
  */
376
380
  export function adjustTime(
377
381
  time: ISOTimeString,
@@ -384,8 +388,11 @@ export function adjustTime(
384
388
  }
385
389
 
386
390
  // A non-finite delta would spin the wrap-around forever (-Infinity) or
387
- // produce "NaN:NaN" (NaN) — return the input unchanged instead.
388
- if (!Number.isFinite(deltaMinutes)) {
391
+ // produce "NaN:NaN" (NaN), and a fractional one is never rounded on the way
392
+ // out — formatISOTime pads "30.5" to two characters and leaves it, so the
393
+ // caller gets back a value that is no longer a time. Steps are whole
394
+ // minutes: return the input unchanged instead.
395
+ if (!Number.isInteger(deltaMinutes)) {
389
396
  return time;
390
397
  }
391
398