@allxsmith/bestax-bulma 5.65.0 → 5.66.0

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 (113) hide show
  1. package/dist/bestax.css +1 -1
  2. package/dist/bestax.css.map +1 -1
  3. package/dist/esm/components/Card.js +6 -6
  4. package/dist/esm/components/Card.js.map +1 -1
  5. package/dist/esm/components/Carousel.js +19 -7
  6. package/dist/esm/components/Carousel.js.map +1 -1
  7. package/dist/esm/components/Message.js +1 -1
  8. package/dist/esm/components/Message.js.map +1 -1
  9. package/dist/esm/components/Modal.js +1 -1
  10. package/dist/esm/components/Modal.js.map +1 -1
  11. package/dist/esm/components/Navbar.js.map +1 -1
  12. package/dist/esm/components/Popover.js +4 -1
  13. package/dist/esm/components/Popover.js.map +1 -1
  14. package/dist/esm/components/SegmentedControl.js +4 -4
  15. package/dist/esm/components/SegmentedControl.js.map +1 -1
  16. package/dist/esm/components/Sidebar.js +1 -1
  17. package/dist/esm/components/Sidebar.js.map +1 -1
  18. package/dist/esm/elements/Figure.js +1 -1
  19. package/dist/esm/elements/Figure.js.map +1 -1
  20. package/dist/esm/form/ColorInputBase.js +1 -1
  21. package/dist/esm/form/ColorInputBase.js.map +1 -1
  22. package/dist/esm/form/DateInput.js +4 -1
  23. package/dist/esm/form/DateInput.js.map +1 -1
  24. package/dist/esm/form/DateInputBase.js +1 -1
  25. package/dist/esm/form/DateInputBase.js.map +1 -1
  26. package/dist/esm/form/DateRangeInput.js +4 -1
  27. package/dist/esm/form/DateRangeInput.js.map +1 -1
  28. package/dist/esm/form/DateRangeInputBase.js +1 -1
  29. package/dist/esm/form/DateRangeInputBase.js.map +1 -1
  30. package/dist/esm/form/DateTimeInput.js +4 -1
  31. package/dist/esm/form/DateTimeInput.js.map +1 -1
  32. package/dist/esm/form/DateTimeInputBase.js +1 -1
  33. package/dist/esm/form/DateTimeInputBase.js.map +1 -1
  34. package/dist/esm/form/Slider.js +19 -9
  35. package/dist/esm/form/Slider.js.map +1 -1
  36. package/dist/esm/form/TimeInput.js +4 -1
  37. package/dist/esm/form/TimeInput.js.map +1 -1
  38. package/dist/esm/form/TimeInputBase.js +1 -1
  39. package/dist/esm/form/TimeInputBase.js.map +1 -1
  40. package/dist/esm/form/TreeSelect.js.map +1 -1
  41. package/dist/esm/form/_pickerInternals/PickerPopover.js +4 -1
  42. package/dist/esm/form/_pickerInternals/PickerPopover.js.map +1 -1
  43. package/dist/esm/form/_pickerInternals/TimeWheels.js +1 -1
  44. package/dist/esm/form/_pickerInternals/TimeWheels.js.map +1 -1
  45. package/dist/esm/form/_pickerInternals/useLocaleDefaults.js +15 -1
  46. package/dist/esm/form/_pickerInternals/useLocaleDefaults.js.map +1 -1
  47. package/dist/esm/form/_selectInternals/DialogSelect.js +1 -1
  48. package/dist/esm/form/_selectInternals/DialogSelect.js.map +1 -1
  49. package/dist/esm/helpers/useAnchoredPosition.js +11 -3
  50. package/dist/esm/helpers/useAnchoredPosition.js.map +1 -1
  51. package/dist/extras.css +1 -1
  52. package/dist/extras.css.map +1 -1
  53. package/dist/index.cjs +122 -40
  54. package/dist/index.cjs.map +1 -1
  55. package/dist/index.esm.js +6 -6
  56. package/dist/types/components/Card.d.ts +52 -0
  57. package/dist/types/components/Carousel.d.ts +12 -3
  58. package/dist/types/components/Message.d.ts +16 -0
  59. package/dist/types/components/Modal.d.ts +71 -0
  60. package/dist/types/components/Navbar.d.ts +10 -0
  61. package/dist/types/components/Popover.d.ts +5 -1
  62. package/dist/types/components/SegmentedControl.d.ts +9 -0
  63. package/dist/types/components/Sidebar.d.ts +45 -5
  64. package/dist/types/elements/Figure.d.ts +11 -0
  65. package/dist/types/form/ColorInputBase.d.ts +7 -1
  66. package/dist/types/form/DateInputBase.d.ts +7 -1
  67. package/dist/types/form/DateRangeInputBase.d.ts +7 -1
  68. package/dist/types/form/DateTimeInputBase.d.ts +7 -1
  69. package/dist/types/form/TimeInputBase.d.ts +7 -1
  70. package/dist/types/form/TreeSelect.d.ts +4 -1
  71. package/dist/types/form/_pickerInternals/PickerPopover.d.ts +5 -0
  72. package/dist/types/form/_pickerInternals/useLocaleDefaults.d.ts +12 -0
  73. package/dist/types/form/_selectInternals/DialogSelect.d.ts +1 -0
  74. package/dist/types/helpers/useAnchoredPosition.d.ts +9 -2
  75. package/dist/types-cjs/components/Card.d.ts +52 -0
  76. package/dist/types-cjs/components/Carousel.d.ts +12 -3
  77. package/dist/types-cjs/components/Message.d.ts +16 -0
  78. package/dist/types-cjs/components/Modal.d.ts +71 -0
  79. package/dist/types-cjs/components/Navbar.d.ts +10 -0
  80. package/dist/types-cjs/components/Popover.d.ts +5 -1
  81. package/dist/types-cjs/components/SegmentedControl.d.ts +9 -0
  82. package/dist/types-cjs/components/Sidebar.d.ts +45 -5
  83. package/dist/types-cjs/elements/Figure.d.ts +11 -0
  84. package/dist/types-cjs/form/ColorInputBase.d.ts +7 -1
  85. package/dist/types-cjs/form/DateInputBase.d.ts +7 -1
  86. package/dist/types-cjs/form/DateRangeInputBase.d.ts +7 -1
  87. package/dist/types-cjs/form/DateTimeInputBase.d.ts +7 -1
  88. package/dist/types-cjs/form/TimeInputBase.d.ts +7 -1
  89. package/dist/types-cjs/form/TreeSelect.d.ts +4 -1
  90. package/dist/types-cjs/form/_pickerInternals/PickerPopover.d.ts +5 -0
  91. package/dist/types-cjs/form/_pickerInternals/useLocaleDefaults.d.ts +12 -0
  92. package/dist/types-cjs/form/_selectInternals/DialogSelect.d.ts +1 -0
  93. package/dist/types-cjs/helpers/useAnchoredPosition.d.ts +9 -2
  94. package/dist/versions/bestax-no-dark-mode.css +1 -1
  95. package/dist/versions/bestax-no-dark-mode.css.map +1 -1
  96. package/dist/versions/bestax-no-helpers-prefixed.css +1 -1
  97. package/dist/versions/bestax-no-helpers-prefixed.css.map +1 -1
  98. package/dist/versions/bestax-no-helpers.css +1 -1
  99. package/dist/versions/bestax-no-helpers.css.map +1 -1
  100. package/dist/versions/bestax-prefixed.css +1 -1
  101. package/dist/versions/bestax-prefixed.css.map +1 -1
  102. package/package.json +6 -6
  103. package/src/scss/CLAUDE.md +1 -1
  104. package/src/scss/_input-trigger.scss +24 -5
  105. package/src/scss/components/_carousel.scss +22 -4
  106. package/src/scss/components/_popover.scss +11 -0
  107. package/src/scss/elements/_button.scss +49 -0
  108. package/src/scss/elements/_index.scss +1 -0
  109. package/src/scss/elements/_loader.scss +10 -5
  110. package/src/scss/form/_dateinput.scss +6 -0
  111. package/src/scss/form/_passwordinput.scss +6 -5
  112. package/src/scss/form/_picker-popover.scss +45 -5
  113. package/src/scss/form/_slider.scss +39 -0
package/dist/index.cjs CHANGED
@@ -2698,7 +2698,7 @@ const STRIP_FROM_NON_BUTTON = {
2698
2698
  * @param {CardHeaderProps} props - Props for the CardHeader component.
2699
2699
  * @returns {JSX.Element} The rendered card header.
2700
2700
  */
2701
- const CardHeader = ({ className, children, centered, color, bgColor, textColor, ...props }) => {
2701
+ const CardHeaderComponent = ({ className, children, centered, color, bgColor, textColor, ...props }) => {
2702
2702
  const { classPrefix } = useConfig();
2703
2703
  const { bulmaHelperClasses, rest } = useBulmaClasses({
2704
2704
  color: textColor ?? color,
@@ -2829,14 +2829,14 @@ const CardFooterItem = ({ as = 'span', className, children, color, bgColor, text
2829
2829
  }
2830
2830
  return (jsxRuntime.jsx("span", { className: itemClasses, ...omitAttrs(forwarded, STRIP_FROM_NON_BUTTON), children: children }));
2831
2831
  };
2832
- // Attach nested Title and Icon components to CardHeader
2833
- const CardHeaderCompound = withSubComponents(CardHeader, {
2832
+ // Export the compound, not the bare function, so `CardHeader.Title` typechecks.
2833
+ const CardHeader = withSubComponents(CardHeaderComponent, {
2834
2834
  Title: CardHeaderTitle,
2835
2835
  Icon: CardHeaderIcon,
2836
- });
2836
+ }, 'CardHeader');
2837
2837
  /** Card component with Header, Image, Content, Footer, and FooterItem sub-components. */
2838
2838
  const Card = withSubComponents(CardComponent, {
2839
- Header: CardHeaderCompound,
2839
+ Header: CardHeader,
2840
2840
  Image: CardImage,
2841
2841
  Content: CardContent,
2842
2842
  Footer: CardFooter,
@@ -7321,7 +7321,7 @@ const SegmentedControlRoot = React.forwardRef(function SegmentedControl({ value,
7321
7321
  * @param {React.Ref<HTMLButtonElement>} ref - Forwarded ref to the `<button>`.
7322
7322
  * @returns {JSX.Element} The rendered segment.
7323
7323
  */
7324
- const Segment = React.forwardRef(function Segment({ value, isDisabled, disabled, className, onClick, onKeyDown, onFocus, onBlur, ...props }, ref) {
7324
+ const SegmentedControlSegment = React.forwardRef(function SegmentedControlSegment({ value, isDisabled, disabled, className, onClick, onKeyDown, onFocus, onBlur, ...props }, ref) {
7325
7325
  const ctx = React.useContext(SegmentedControlContext);
7326
7326
  const checked = ctx !== null && ctx.checked === value;
7327
7327
  const off = Boolean(isDisabled || disabled);
@@ -7397,8 +7397,8 @@ const Segment = React.forwardRef(function Segment({ value, isDisabled, disabled,
7397
7397
  // decides whether Tab reaches it.
7398
7398
  return (jsxRuntime.jsx(Button, { ...props, ref: setRefs, as: "button", type: "button", role: "radio", "aria-checked": checked, tabIndex: ctx ? (ctx.tabStop === value ? 0 : -1) : undefined, isDisabled: off, color: checked ? ctx.color : undefined, className: classNames(selectedClass, className), onClick: handleClick, onKeyDown: handleKeyDown, onFocus: handleFocus, onBlur: handleBlur }));
7399
7399
  });
7400
- Segment.displayName = 'SegmentedControl.Segment';
7401
- const SegmentedControl = withSubComponents(SegmentedControlRoot, { Segment }, 'SegmentedControl');
7400
+ SegmentedControlSegment.displayName = 'SegmentedControl.Segment';
7401
+ const SegmentedControl = withSubComponents(SegmentedControlRoot, { Segment: SegmentedControlSegment }, 'SegmentedControl');
7402
7402
 
7403
7403
  // INTERNAL: deliberately not exported from src/index.ts.
7404
7404
  /**
@@ -8533,7 +8533,7 @@ const samePosition = (a, b) => a.position === b.position &&
8533
8533
  */
8534
8534
  function useAnchoredPosition(anchorRef, panelRef, { active, position, fixed, offset = 4, styledGap, matchWidth = false, followContent = false, }) {
8535
8535
  const [resolved, setResolved] = React.useState({
8536
- position: position === 'auto' ? 'bottom-left' : position,
8536
+ position: position === undefined || position === 'auto' ? 'bottom-left' : position,
8537
8537
  });
8538
8538
  // The measurement while the panel is active, for `followContent` to run
8539
8539
  // again after a render.
@@ -8557,14 +8557,22 @@ function useAnchoredPosition(anchorRef, panelRef, { active, position, fixed, off
8557
8557
  const { height } = measured;
8558
8558
  const corner = position === 'auto'
8559
8559
  ? resolveAuto(view, rect, width, height, offset + (styledGap?.(panel) ?? 0))
8560
- : position;
8560
+ : (position ?? 'bottom-left');
8561
+ // The default lines up with the anchor's inline start, so right to
8562
+ // left a fixed panel lines up the right edges. A named corner doesn't,
8563
+ // and a panel in place takes the default's side from its stylesheet.
8564
+ const startsRight = position === undefined &&
8565
+ fixed &&
8566
+ getComputedStyle(anchor).direction === 'rtl';
8561
8567
  const next = fixed
8562
8568
  ? {
8563
8569
  position: corner,
8564
8570
  top: corner.startsWith('bottom')
8565
8571
  ? rect.bottom + offset
8566
8572
  : rect.top - height - offset,
8567
- left: corner.endsWith('left') ? rect.left : rect.right - width,
8573
+ left: corner.endsWith('left') && !startsRight
8574
+ ? rect.left
8575
+ : rect.right - width,
8568
8576
  ...(matchWidth ? { minWidth: rect.width } : {}),
8569
8577
  }
8570
8578
  : { position: corner };
@@ -8688,7 +8696,7 @@ function nearestDialog(event) {
8688
8696
  * </Popover.Footer>
8689
8697
  * </Popover>
8690
8698
  */
8691
- const PopoverComponent = ({ trigger, children, open: controlledOpen, defaultOpen = false, onOpenChange, position = 'bottom-left', appendToBody = false, trapFocus = true, closeOnClickOutside = true, closeOnEscape = true, ariaLabel, className, contentClassName, ...props }) => {
8699
+ const PopoverComponent = ({ trigger, children, open: controlledOpen, defaultOpen = false, onOpenChange, position, appendToBody = false, trapFocus = true, closeOnClickOutside = true, closeOnEscape = true, ariaLabel, className, contentClassName, ...props }) => {
8692
8700
  const { bulmaHelperClasses, rest } = useBulmaClasses(props);
8693
8701
  const rootRef = React.useRef(null);
8694
8702
  const panelRef = React.useRef(null);
@@ -8808,6 +8816,9 @@ const PopoverComponent = ({ trigger, children, open: controlledOpen, defaultOpen
8808
8816
  const rootClasses = classNames(usePrefixedClassNames('popover', { 'is-active': isOpen }), bulmaHelperClasses, className);
8809
8817
  const panelClasses = classNames(usePrefixedClassNames('popover-content', {
8810
8818
  [`is-${resolved.position}`]: true,
8819
+ // The default lines up with the trigger's inline start, so the
8820
+ // stylesheet moves it to the right edge on a right-to-left page.
8821
+ 'is-start-aligned': position === undefined,
8811
8822
  'is-portal': appendToBody,
8812
8823
  }), contentClassName);
8813
8824
  return (jsxRuntime.jsxs("div", { className: rootClasses, ...rest, ref: rootRef, children: [clonedTrigger, isOpen && (jsxRuntime.jsx(Portal, { disabled: !appendToBody, children: jsxRuntime.jsx(PopoverPanel, { panelRef: panelRef, titleId: titleId, ariaLabel: ariaLabel, close: close, id: panelId, className: panelClasses, style: appendToBody
@@ -10930,11 +10941,17 @@ const Carousel = React.forwardRef(({ value: controlledValue, autoplay = false, i
10930
10941
  setIsPaused(false);
10931
10942
  }
10932
10943
  }, [pauseOnHover]);
10933
- // Drag and swipe, through the shared hook: a drag left goes on and a
10934
- // drag right goes back, past its 50px threshold.
10944
+ // Right to left the track runs the other way, so the next slide is on
10945
+ // the left. Read when a swipe or key arrives, as Lightbox does, so a
10946
+ // LocaleProvider and the page's own `dir` both count.
10947
+ const isRtl = () => getComputedStyle(carouselRef.current).direction ===
10948
+ 'rtl';
10949
+ // Drag and swipe, through the shared hook, past its 50px threshold: a
10950
+ // drag toward the start of the line goes on, which is a drag left on a
10951
+ // left-to-right page, and a drag the other way goes back.
10935
10952
  const swipe = useSwipe({
10936
10953
  enabled: hasDrag,
10937
- onSwipe: direction => (direction === 'left' ? goToNext() : goToPrev()),
10954
+ onSwipe: direction => direction === (isRtl() ? 'right' : 'left') ? goToNext() : goToPrev(),
10938
10955
  });
10939
10956
  const isDragging = swipe.isSwiping;
10940
10957
  const dragOffset = swipe.offsetX;
@@ -10948,14 +10965,17 @@ const Carousel = React.forwardRef(({ value: controlledValue, autoplay = false, i
10948
10965
  if (!node?.contains(active) || slidesRef.current?.contains(active)) {
10949
10966
  return;
10950
10967
  }
10968
+ // The arrow points where the slide comes from: right to left the
10969
+ // next one is on the left.
10970
+ const rtl = getComputedStyle(node).direction === 'rtl';
10951
10971
  switch (e.key) {
10952
10972
  case 'ArrowLeft':
10953
10973
  e.preventDefault();
10954
- goToPrevRef.current();
10974
+ (rtl ? goToNextRef : goToPrevRef).current();
10955
10975
  break;
10956
10976
  case 'ArrowRight':
10957
10977
  e.preventDefault();
10958
- goToNextRef.current();
10978
+ (rtl ? goToPrevRef : goToNextRef).current();
10959
10979
  break;
10960
10980
  }
10961
10981
  };
@@ -11108,8 +11128,11 @@ const Carousel = React.forwardRef(({ value: controlledValue, autoplay = false, i
11108
11128
  cursor: hasDrag ? (isDragging ? 'grabbing' : 'grab') : undefined,
11109
11129
  }, children: [jsxRuntime.jsx("div", { ref: slidesRef, className: carouselSlidesClass, style: {
11110
11130
  // One item is the track's width plus a gap, over the count the
11111
- // stylesheet has in view; account for the prepended clones
11112
- transform: `translateX(calc(${-(shownIndex + cloneCount)} * (100% + var(--bulma-carousel-item-gap, 0px)) / var(--bulma-carousel-items-in-view, 1)))`,
11131
+ // stylesheet has in view; account for the prepended clones.
11132
+ // The sign is -1 left to right. Right to left the flex row
11133
+ // reverses, and the stylesheet sets the sign to +1 so the
11134
+ // same shift keeps a slide in view.
11135
+ transform: `translateX(calc(var(--carousel-shift-sign, -1) * ${shownIndex + cloneCount} * (100% + var(--bulma-carousel-item-gap, 0px)) / var(--bulma-carousel-items-in-view, 1)))`,
11113
11136
  // Disable transition during drag or instant snap after wrap-around
11114
11137
  transition: isDragging || skipTransition
11115
11138
  ? 'none'
@@ -19258,6 +19281,9 @@ const Slider = React.forwardRef((props, ref) => {
19258
19281
  const effectiveThumbExpr = isCircle
19259
19282
  ? `(${thumbCssVar} * 1.2)`
19260
19283
  : thumbCssVar;
19284
+ // Measured from where the track starts: its inline start when
19285
+ // horizontal, which is the right edge right to left, where the native
19286
+ // range puts its minimum, and its bottom when vertical.
19261
19287
  const getThumbLeft = (progressPct) => {
19262
19288
  const fraction = progressPct / 100;
19263
19289
  return `calc(${effectiveThumbExpr} / 2 + ${fraction} * (100% - ${effectiveThumbExpr}))`;
@@ -19332,9 +19358,14 @@ const Slider = React.forwardRef((props, ref) => {
19332
19358
  const computeNudge = React.useCallback((el, wrapper, progressPct, thumbSizePx) => {
19333
19359
  const wr = wrapper.getBoundingClientRect();
19334
19360
  const tooltipWidth = el.offsetWidth;
19335
- // Corrected center: accounts for thumb inset from track edges
19361
+ // Corrected center: accounts for thumb inset from track edges. The
19362
+ // native range mirrors right to left, so the thumb is that far from
19363
+ // the right edge instead, and the nudge, a physical shift, follows.
19336
19364
  const fraction = progressPct / 100;
19337
- const centerX = wr.left + thumbSizePx / 2 + fraction * (wr.width - thumbSizePx);
19365
+ const along = thumbSizePx / 2 + fraction * (wr.width - thumbSizePx);
19366
+ const centerX = getComputedStyle(wrapper).direction === 'rtl'
19367
+ ? wr.right - along
19368
+ : wr.left + along;
19338
19369
  const tooltipLeft = centerX - tooltipWidth / 2;
19339
19370
  const tooltipRight = centerX + tooltipWidth / 2;
19340
19371
  if (tooltipLeft < wr.left) {
@@ -19404,9 +19435,11 @@ const Slider = React.forwardRef((props, ref) => {
19404
19435
  return null;
19405
19436
  return (jsxRuntime.jsx("div", { className: prefixedClassNames(classPrefix, 'slider-ticks'), children: tickPositions.map((tick, i) => {
19406
19437
  const pct = ((tick.value - min) / (max - min)) * 100;
19438
+ // From the inline start, so a right-to-left page puts 0 on the
19439
+ // right, where the native thumb sits. Left to right that is `left`.
19407
19440
  const posStyle = isVertical
19408
19441
  ? { bottom: `${pct}%` }
19409
- : { left: `${pct}%` };
19442
+ : { insetInlineStart: `${pct}%` };
19410
19443
  const isEndpoint = tick.value === min || tick.value === max;
19411
19444
  return (jsxRuntime.jsx("span", { className: prefixedClassNames(classPrefix, 'slider-tick', {
19412
19445
  'is-endpoint': isEndpoint,
@@ -19439,8 +19472,8 @@ const Slider = React.forwardRef((props, ref) => {
19439
19472
  right: 'auto',
19440
19473
  })
19441
19474
  : {
19442
- left: getThumbLeft(progressSingle),
19443
- transform: `translateX(calc(-50% + ${nudgeX}px))`,
19475
+ insetInlineStart: getThumbLeft(progressSingle),
19476
+ transform: `translateX(calc(var(--slider-output-shift, -50%) + ${nudgeX}px))`,
19444
19477
  '--slider-output-arrow-offset': `calc(50% - ${nudgeX}px)`,
19445
19478
  }, children: formatValue(currentSingle) })), renderTicks()] })) : (jsxRuntime.jsxs("div", { ref: wrapperRef, className: combinedClasses, style: wrapperStyle, children: [jsxRuntime.jsx("div", { className: prefixedClassNames(classPrefix, 'slider-track'), style: isVertical
19446
19479
  ? {
@@ -19467,8 +19500,8 @@ const Slider = React.forwardRef((props, ref) => {
19467
19500
  right: 'auto',
19468
19501
  })
19469
19502
  : {
19470
- left: getThumbLeft(progressLow),
19471
- transform: `translateX(calc(-50% + ${nudgeX}px))`,
19503
+ insetInlineStart: getThumbLeft(progressLow),
19504
+ transform: `translateX(calc(var(--slider-output-shift, -50%) + ${nudgeX}px))`,
19472
19505
  '--slider-output-arrow-offset': `calc(50% - ${nudgeX}px)`,
19473
19506
  }, children: formatValue(currentRange[0]) })), tooltipMode !== 'hidden' && (jsxRuntime.jsx("output", { ref: outputHighRef, className: prefixedClassNames(classPrefix, 'slider-output', 'slider-output-high', {
19474
19507
  'is-visible': showTipHigh,
@@ -19487,8 +19520,8 @@ const Slider = React.forwardRef((props, ref) => {
19487
19520
  right: 'auto',
19488
19521
  })
19489
19522
  : {
19490
- left: getThumbLeft(progressHigh),
19491
- transform: `translateX(calc(-50% + ${nudgeXHigh}px))`,
19523
+ insetInlineStart: getThumbLeft(progressHigh),
19524
+ transform: `translateX(calc(var(--slider-output-shift, -50%) + ${nudgeXHigh}px))`,
19492
19525
  '--slider-output-arrow-offset': `calc(50% - ${nudgeXHigh}px)`,
19493
19526
  }, children: formatValue(currentRange[1]) })), renderTicks()] }));
19494
19527
  let content = sliderElement;
@@ -21208,7 +21241,7 @@ function searchTree(data, matches) {
21208
21241
  }
21209
21242
 
21210
21243
  const isBrowser = typeof window !== 'undefined';
21211
- const PickerPopover = ({ isOpen, onClose, anchorRef, children, position = 'bottom-left', appendToBody = false, className, trapFocus = true, closeOnClickOutside = true, closeOnEscape = true, ariaLabel, ariaLabelledBy, role = 'dialog', id, restoreFocusRef, initialFocusSelector, localeScope, matchWidth = false, followContent = false, }) => {
21244
+ const PickerPopover = ({ isOpen, onClose, anchorRef, children, position, appendToBody = false, className, trapFocus = true, closeOnClickOutside = true, closeOnEscape = true, ariaLabel, ariaLabelledBy, role = 'dialog', id, restoreFocusRef, initialFocusSelector, localeScope, matchWidth = false, followContent = false, }) => {
21212
21245
  const panelRef = React.useRef(null);
21213
21246
  const resolveContainer = usePortalContainer();
21214
21247
  // Read as the trap turns on, once the panel's content has rendered.
@@ -21287,6 +21320,9 @@ const PickerPopover = ({ isOpen, onClose, anchorRef, children, position = 'botto
21287
21320
  const panelClass = usePrefixedClassNames('picker-popover', {
21288
21321
  'is-active': isOpen,
21289
21322
  [`is-${resolved.position}`]: true,
21323
+ // The default lines up with the field's inline start, so the stylesheet
21324
+ // moves it to the right edge on a right-to-left page.
21325
+ 'is-start-aligned': position === undefined,
21290
21326
  'is-portal': appendToBody,
21291
21327
  'has-anchor-width': matchWidth,
21292
21328
  });
@@ -21408,6 +21444,20 @@ function usePickerLocaleScope(ownLocale, ownDir) {
21408
21444
  };
21409
21445
  }, [scope, ownLocale, ownDir]);
21410
21446
  }
21447
+ /**
21448
+ * The `dir` a picker's root ends up with: the one passed to it, else its own
21449
+ * locale's inside a `LocaleProvider`, else none, so it follows the page. A
21450
+ * picker that renders its own `Control` puts it there too. Bulma places the
21451
+ * Control's icon and loading spinner against the Control's direction, and
21452
+ * the launcher sits inside the picker's root, so the two have to agree or a
21453
+ * French picker in an Arabic section puts the icon on top of the launcher.
21454
+ * Returned as attributes to spread, empty when there's no `dir` to set.
21455
+ */
21456
+ function usePickerDirAttrs(ownLocale, ownDir) {
21457
+ const { rootAttrs } = usePickerLocaleScope(ownLocale, ownDir);
21458
+ const dir = ownDir ?? rootAttrs.dir;
21459
+ return dir === undefined ? NO_ROOT_ATTRS : { dir };
21460
+ }
21411
21461
  /**
21412
21462
  * Whether a picker's `dayNames` replace the calendar's own, which `Calendar`
21413
21463
  * does only for a full week of seven.
@@ -21486,7 +21536,7 @@ const ignoreChange = () => { };
21486
21536
  * close it and put focus back on the field, and a press outside closes it
21487
21537
  * where the press put focus.
21488
21538
  */
21489
- function DialogSelect({ component, rootClass, panelClass, text, values, hasValue, open, onOpenChange, onFormReset, onPrintableKey, onClear, clearable, clearLabel, chooseLabel, placeholder, name, form, required = false, disabled, color, size, isRounded, position = 'bottom-left', appendToBody = false, inputRef, fieldRef, describedBy, below, initialFocusSelector, children, label, labelSize, labelProps, horizontal, message, messageColor, fieldClassName, className, id, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, 'aria-describedby': ariaDescribedBy, ...props }) {
21539
+ function DialogSelect({ component, rootClass, panelClass, text, values, hasValue, open, onOpenChange, onFormReset, onPrintableKey, onClear, clearable, clearLabel, chooseLabel, placeholder, name, form, required = false, disabled, color, size, isRounded, position, appendToBody = false, inputRef, fieldRef, describedBy, below, initialFocusSelector, children, label, labelSize, labelProps, horizontal, message, messageColor, fieldClassName, className, id, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, 'aria-describedby': ariaDescribedBy, ...props }) {
21490
21540
  const insideField = useInsideField();
21491
21541
  const insideControl = useInsideControl();
21492
21542
  const ownField = rendersOwnField(component, {
@@ -25998,7 +26048,7 @@ const SKIPPED_SEGMENTS = {
25998
26048
  * @returns {JSX.Element}
25999
26049
  */
26000
26050
  const DateInputBase = React.forwardRef((props, ref) => {
26001
- const { value: controlledValue, defaultValue, onChange, onOpen, onClose, min, max, disabled: disabledProp, readOnly, placeholder, granularity = 'day', format, parse, locale: localeProp, inline = false, mobileNative = 'auto', editable = true, popover = true, openOnFocus = true, closeOnSelect = true, position = 'bottom-left', appendToBody = false, color, size, isRounded, shouldDisableDate, unselectableDates, firstDayOfWeek: firstDayOfWeekProp, dayNames, monthNames, nearbyMonthDays = true, className, name, form, required, id: idProp, onFocus, onClick, onKeyDown, onBlur, iconLeftName: _iconLeftName, triggerIcon: triggerIconProp, triggerIconName = 'chevron-down', labels, ...rest } = props;
26051
+ const { value: controlledValue, defaultValue, onChange, onOpen, onClose, min, max, disabled: disabledProp, readOnly, placeholder, granularity = 'day', format, parse, locale: localeProp, inline = false, mobileNative = 'auto', editable = true, popover = true, openOnFocus = true, closeOnSelect = true, position, appendToBody = false, color, size, isRounded, shouldDisableDate, unselectableDates, firstDayOfWeek: firstDayOfWeekProp, dayNames, monthNames, nearbyMonthDays = true, className, name, form, required, id: idProp, onFocus, onClick, onKeyDown, onBlur, iconLeftName: _iconLeftName, triggerIcon: triggerIconProp, triggerIconName = 'chevron-down', labels, ...rest } = props;
26002
26052
  // A LocaleProvider around the picker sets its default locale and, through
26003
26053
  // that locale, the day its week starts on.
26004
26054
  const locale = usePickerLocale(localeProp);
@@ -26254,6 +26304,8 @@ DateInputBase.displayName = 'DateInputBase';
26254
26304
  */
26255
26305
  const DateInput = React.forwardRef((props, ref) => {
26256
26306
  const { label, labelSize, labelProps, horizontal, iconLeft, iconRight, iconLeftName = 'calendar', iconRightName, iconLeftSize, iconRightSize, hasIconsLeft, hasIconsRight, isLoading, isExpanded, controlSize, message, messageColor, fieldClassName, controlClassName, ...baseProps } = props;
26307
+ // The picker's own direction, which the Control below takes too.
26308
+ const pickerDirAttrs = usePickerDirAttrs(baseProps.locale, baseProps.dir);
26257
26309
  const insideField = useInsideField();
26258
26310
  const insideControl = useInsideControl();
26259
26311
  const ownField = rendersOwnField('DateInput', {
@@ -26301,7 +26353,7 @@ const DateInput = React.forwardRef((props, ref) => {
26301
26353
  // whether that is the one rendered below or an enclosing one.
26302
26354
  let content = (jsxRuntime.jsx(DateInputBase, { ref: ref, ...baseProps, id: controlId }));
26303
26355
  if (ownControl) {
26304
- content = (jsxRuntime.jsx(Control, { iconLeft: iconLeft, iconRight: iconRight, iconLeftName: iconLeftName, iconRightName: iconRightName, iconLeftSize: iconLeftSize, iconRightSize: iconRightSize, hasIconsLeft: hasIconsLeft || !!iconLeftName, hasIconsRight: hasIconsRight, isLoading: isLoading, isExpanded: isExpanded, size: controlSize, className: controlClassName, children: content }));
26356
+ content = (jsxRuntime.jsx(Control, { ...pickerDirAttrs, iconLeft: iconLeft, iconRight: iconRight, iconLeftName: iconLeftName, iconRightName: iconRightName, iconLeftSize: iconLeftSize, iconRightSize: iconRightSize, hasIconsLeft: hasIconsLeft || !!iconLeftName, hasIconsRight: hasIconsRight, isLoading: isLoading, isExpanded: isExpanded, size: controlSize, className: controlClassName, children: content }));
26305
26357
  }
26306
26358
  const messageEl = message ? jsxRuntime.jsx("p", { className: helpClass, children: message }) : null;
26307
26359
  if (ownField) {
@@ -27157,7 +27209,7 @@ const TimeWheels = ({ value, onChange, hourFormat = '24', enableSeconds = false,
27157
27209
  });
27158
27210
  columnOrder[nearestIdx]?.current?.startDrag(e.pointerId, e.clientY);
27159
27211
  };
27160
- return (jsxRuntime.jsx("div", { id: id, className: classNames(rootClass, className), "aria-disabled": disabled, children: jsxRuntime.jsxs("div", { className: wheelsClass, ref: wheelsContainerRef, onPointerDown: onWheelsContainerPointerDown, children: [jsxRuntime.jsx(Wheel, { ref: hoursRef, values: hourValues, index: hourIndex, onChange: onHourIndex, formatLabel: pad2, ariaLabel: t.hours, visibleCount: visibleCount, itemHeight: itemHeight, disabled: disabled, size: size, color: color, wrap: true, onCommit: onCommit, onFocusPrev: focusPrevOf(hoursRef), onFocusNext: focusNextOf(hoursRef), disabledFor: hourDisabledFor, audioTick: audioTick }), jsxRuntime.jsx("div", { className: sepClass, "aria-hidden": "true", children: ":" }), jsxRuntime.jsx(Wheel, { ref: minutesRef, values: minuteValues, index: minuteIndex, onChange: onMinuteIndex, formatLabel: pad2, ariaLabel: t.minutes, visibleCount: visibleCount, itemHeight: itemHeight, disabled: disabled, size: size, color: color, wrap: true, onCommit: onCommit, onFocusPrev: focusPrevOf(minutesRef), onFocusNext: focusNextOf(minutesRef), disabledFor: minuteDisabledFor, audioTick: audioTick }), enableSeconds && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { className: sepClass, "aria-hidden": "true", children: ":" }), jsxRuntime.jsx(Wheel, { ref: secondsRef, values: secondValues, index: secondIndex, onChange: onSecondIndex, formatLabel: pad2, ariaLabel: t.seconds, visibleCount: visibleCount, itemHeight: itemHeight, disabled: disabled, size: size, color: color, wrap: true, onCommit: onCommit, onFocusPrev: focusPrevOf(secondsRef), onFocusNext: focusNextOf(secondsRef), disabledFor: secondDisabledFor, audioTick: audioTick })] })), hourFormat === '12' && (jsxRuntime.jsx(Wheel, { ref: ampmRef, values: ['AM', 'PM'], index: ampmIndex, onChange: onAmpmIndex, formatLabel: v => v, ariaLabel: t.ampm, visibleCount: visibleCount, itemHeight: itemHeight, disabled: disabled, size: size, color: color, onCommit: onCommit, onFocusPrev: focusPrevOf(ampmRef), onFocusNext: focusNextOf(ampmRef), audioTick: audioTick }))] }) }));
27212
+ return (jsxRuntime.jsx("div", { id: id, className: classNames(rootClass, className), dir: "ltr", "aria-disabled": disabled, children: jsxRuntime.jsxs("div", { className: wheelsClass, ref: wheelsContainerRef, onPointerDown: onWheelsContainerPointerDown, children: [jsxRuntime.jsx(Wheel, { ref: hoursRef, values: hourValues, index: hourIndex, onChange: onHourIndex, formatLabel: pad2, ariaLabel: t.hours, visibleCount: visibleCount, itemHeight: itemHeight, disabled: disabled, size: size, color: color, wrap: true, onCommit: onCommit, onFocusPrev: focusPrevOf(hoursRef), onFocusNext: focusNextOf(hoursRef), disabledFor: hourDisabledFor, audioTick: audioTick }), jsxRuntime.jsx("div", { className: sepClass, "aria-hidden": "true", children: ":" }), jsxRuntime.jsx(Wheel, { ref: minutesRef, values: minuteValues, index: minuteIndex, onChange: onMinuteIndex, formatLabel: pad2, ariaLabel: t.minutes, visibleCount: visibleCount, itemHeight: itemHeight, disabled: disabled, size: size, color: color, wrap: true, onCommit: onCommit, onFocusPrev: focusPrevOf(minutesRef), onFocusNext: focusNextOf(minutesRef), disabledFor: minuteDisabledFor, audioTick: audioTick }), enableSeconds && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { className: sepClass, "aria-hidden": "true", children: ":" }), jsxRuntime.jsx(Wheel, { ref: secondsRef, values: secondValues, index: secondIndex, onChange: onSecondIndex, formatLabel: pad2, ariaLabel: t.seconds, visibleCount: visibleCount, itemHeight: itemHeight, disabled: disabled, size: size, color: color, wrap: true, onCommit: onCommit, onFocusPrev: focusPrevOf(secondsRef), onFocusNext: focusNextOf(secondsRef), disabledFor: secondDisabledFor, audioTick: audioTick })] })), hourFormat === '12' && (jsxRuntime.jsx(Wheel, { ref: ampmRef, values: ['AM', 'PM'], index: ampmIndex, onChange: onAmpmIndex, formatLabel: v => v, ariaLabel: t.ampm, visibleCount: visibleCount, itemHeight: itemHeight, disabled: disabled, size: size, color: color, onCommit: onCommit, onFocusPrev: focusPrevOf(ampmRef), onFocusNext: focusNextOf(ampmRef), audioTick: audioTick }))] }) }));
27161
27213
  };
27162
27214
  TimeWheels.displayName = 'TimeWheels';
27163
27215
 
@@ -27187,7 +27239,7 @@ const fromIsoTime = (s) => {
27187
27239
  * @returns {JSX.Element}
27188
27240
  */
27189
27241
  const TimeInputBase = React.forwardRef((props, ref) => {
27190
- const { value: controlledValue, defaultValue, onChange, onOpen, onClose, min, max, disabled: disabledProp, readOnly, placeholder, format, parse, locale: localeProp, inline = false, mobileNative = 'auto', editable = true, popover = true, openOnFocus = true, closeOnSelect = false, position = 'bottom-left', appendToBody = false, color, size, isRounded, hourFormat = '24', enableSeconds = false, incrementHours = 1, incrementMinutes = 1, incrementSeconds = 1, unselectableTimes, className, name, form, required, id: idProp, onFocus, onClick, onKeyDown, onBlur, iconLeftName: _iconLeftName, triggerIcon: triggerIconProp, triggerIconName = 'chevron-down', labels, audioTick = false, haptics = false, ...rest } = props;
27242
+ const { value: controlledValue, defaultValue, onChange, onOpen, onClose, min, max, disabled: disabledProp, readOnly, placeholder, format, parse, locale: localeProp, inline = false, mobileNative = 'auto', editable = true, popover = true, openOnFocus = true, closeOnSelect = false, position, appendToBody = false, color, size, isRounded, hourFormat = '24', enableSeconds = false, incrementHours = 1, incrementMinutes = 1, incrementSeconds = 1, unselectableTimes, className, name, form, required, id: idProp, onFocus, onClick, onKeyDown, onBlur, iconLeftName: _iconLeftName, triggerIcon: triggerIconProp, triggerIconName = 'chevron-down', labels, audioTick = false, haptics = false, ...rest } = props;
27191
27243
  // A LocaleProvider around the picker sets its default locale.
27192
27244
  const locale = usePickerLocale(localeProp);
27193
27245
  // Its own language and direction, which its root and a portaled panel
@@ -27415,6 +27467,8 @@ TimeInputBase.displayName = 'TimeInputBase';
27415
27467
  */
27416
27468
  const TimeInput = React.forwardRef((props, ref) => {
27417
27469
  const { label, labelSize, labelProps, horizontal, iconLeft, iconRight, iconLeftName = 'clock', iconRightName, iconLeftSize, iconRightSize, hasIconsLeft, hasIconsRight, isLoading, isExpanded, controlSize, message, messageColor, fieldClassName, controlClassName, ...baseProps } = props;
27470
+ // The picker's own direction, which the Control below takes too.
27471
+ const pickerDirAttrs = usePickerDirAttrs(baseProps.locale, baseProps.dir);
27418
27472
  const insideField = useInsideField();
27419
27473
  const insideControl = useInsideControl();
27420
27474
  const ownField = rendersOwnField('TimeInput', {
@@ -27462,7 +27516,7 @@ const TimeInput = React.forwardRef((props, ref) => {
27462
27516
  // whether that is the one rendered below or an enclosing one.
27463
27517
  let content = (jsxRuntime.jsx(TimeInputBase, { ref: ref, ...baseProps, id: controlId }));
27464
27518
  if (ownControl) {
27465
- content = (jsxRuntime.jsx(Control, { iconLeft: iconLeft, iconRight: iconRight, iconLeftName: iconLeftName, iconRightName: iconRightName, iconLeftSize: iconLeftSize, iconRightSize: iconRightSize, hasIconsLeft: hasIconsLeft || !!iconLeftName, hasIconsRight: hasIconsRight, isLoading: isLoading, isExpanded: isExpanded, size: controlSize, className: controlClassName, children: content }));
27519
+ content = (jsxRuntime.jsx(Control, { ...pickerDirAttrs, iconLeft: iconLeft, iconRight: iconRight, iconLeftName: iconLeftName, iconRightName: iconRightName, iconLeftSize: iconLeftSize, iconRightSize: iconRightSize, hasIconsLeft: hasIconsLeft || !!iconLeftName, hasIconsRight: hasIconsRight, isLoading: isLoading, isExpanded: isExpanded, size: controlSize, className: controlClassName, children: content }));
27466
27520
  }
27467
27521
  const messageEl = message ? jsxRuntime.jsx("p", { className: helpClass, children: message }) : null;
27468
27522
  if (ownField) {
@@ -27508,7 +27562,7 @@ const fromIsoDateTime = (s) => {
27508
27562
  * @returns {JSX.Element}
27509
27563
  */
27510
27564
  const DateTimeInputBase = React.forwardRef((props, ref) => {
27511
- const { value: controlledValue, defaultValue, onChange, onOpen, onClose, min, max, disabled: disabledProp, readOnly, placeholder, format, parse, locale: localeProp, inline = false, mobileNative = 'auto', editable = true, popover = true, openOnFocus = true, closeOnSelect = false, position = 'bottom-left', appendToBody = false, color, size, isRounded, shouldDisableDate, unselectableDates, firstDayOfWeek: firstDayOfWeekProp, dayNames, monthNames, nearbyMonthDays = true, hourFormat = '24', enableSeconds = false, incrementHours = 1,
27565
+ const { value: controlledValue, defaultValue, onChange, onOpen, onClose, min, max, disabled: disabledProp, readOnly, placeholder, format, parse, locale: localeProp, inline = false, mobileNative = 'auto', editable = true, popover = true, openOnFocus = true, closeOnSelect = false, position, appendToBody = false, color, size, isRounded, shouldDisableDate, unselectableDates, firstDayOfWeek: firstDayOfWeekProp, dayNames, monthNames, nearbyMonthDays = true, hourFormat = '24', enableSeconds = false, incrementHours = 1,
27512
27566
  // Step between visible wheel values; 1 gives the iOS-style every-minute wheel.
27513
27567
  incrementMinutes = 1, incrementSeconds = 1, unselectableTimes, className, name, form, required, id: idProp, onFocus, onClick, onKeyDown, onBlur, iconLeftName: _iconLeftName, triggerIcon: triggerIconProp, triggerIconName = 'chevron-down', audioTick = false, haptics = false, labels, ...rest } = props;
27514
27568
  // A LocaleProvider around the picker sets its default locale and, through
@@ -27817,6 +27871,8 @@ DateTimeInputBase.displayName = 'DateTimeInputBase';
27817
27871
  */
27818
27872
  const DateTimeInput = React.forwardRef((props, ref) => {
27819
27873
  const { label, labelSize, labelProps, horizontal, iconLeft, iconRight, iconLeftName = 'calendar-alt', iconRightName, iconLeftSize, iconRightSize, hasIconsLeft, hasIconsRight, isLoading, isExpanded, controlSize, message, messageColor, fieldClassName, controlClassName, ...baseProps } = props;
27874
+ // The picker's own direction, which the Control below takes too.
27875
+ const pickerDirAttrs = usePickerDirAttrs(baseProps.locale, baseProps.dir);
27820
27876
  const insideField = useInsideField();
27821
27877
  const insideControl = useInsideControl();
27822
27878
  const ownField = rendersOwnField('DateTimeInput', {
@@ -27864,7 +27920,7 @@ const DateTimeInput = React.forwardRef((props, ref) => {
27864
27920
  // whether that is the one rendered below or an enclosing one.
27865
27921
  let content = (jsxRuntime.jsx(DateTimeInputBase, { ref: ref, ...baseProps, id: controlId }));
27866
27922
  if (ownControl) {
27867
- content = (jsxRuntime.jsx(Control, { iconLeft: iconLeft, iconRight: iconRight, iconLeftName: iconLeftName, iconRightName: iconRightName, iconLeftSize: iconLeftSize, iconRightSize: iconRightSize, hasIconsLeft: hasIconsLeft || !!iconLeftName, hasIconsRight: hasIconsRight, isLoading: isLoading, isExpanded: isExpanded, size: controlSize, className: controlClassName, children: content }));
27923
+ content = (jsxRuntime.jsx(Control, { ...pickerDirAttrs, iconLeft: iconLeft, iconRight: iconRight, iconLeftName: iconLeftName, iconRightName: iconRightName, iconLeftSize: iconLeftSize, iconRightSize: iconRightSize, hasIconsLeft: hasIconsLeft || !!iconLeftName, hasIconsRight: hasIconsRight, isLoading: isLoading, isExpanded: isExpanded, size: controlSize, className: controlClassName, children: content }));
27868
27924
  }
27869
27925
  const messageEl = message ? jsxRuntime.jsx("p", { className: helpClass, children: message }) : null;
27870
27926
  if (ownField) {
@@ -27893,7 +27949,7 @@ const today = () => startOfDay(new Date());
27893
27949
  * @returns {JSX.Element}
27894
27950
  */
27895
27951
  const DateRangeInputBase = React.forwardRef((props, ref) => {
27896
- const { value: controlledValue, defaultValue, onChange, onOpen, onClose, min, max, disabled: disabledProp, readOnly, placeholder, format, parse, locale: localeProp, inline = false, mobileNative = 'auto', editable = true, popover = true, openOnFocus = true, closeOnSelect = true, position = 'bottom-left', appendToBody = false, color, size, isRounded, shouldDisableDate, unselectableDates, allowDisabledInRange = false, firstDayOfWeek: firstDayOfWeekProp, dayNames, monthNames, nearbyMonthDays = true, iconLeftName: _iconLeftName, triggerIcon: triggerIconProp, triggerIconName = 'chevron-down', labels, name, startName, endName, form, required, id, className, onFocus, onFocusCapture, ...rest } = props;
27952
+ const { value: controlledValue, defaultValue, onChange, onOpen, onClose, min, max, disabled: disabledProp, readOnly, placeholder, format, parse, locale: localeProp, inline = false, mobileNative = 'auto', editable = true, popover = true, openOnFocus = true, closeOnSelect = true, position, appendToBody = false, color, size, isRounded, shouldDisableDate, unselectableDates, allowDisabledInRange = false, firstDayOfWeek: firstDayOfWeekProp, dayNames, monthNames, nearbyMonthDays = true, iconLeftName: _iconLeftName, triggerIcon: triggerIconProp, triggerIconName = 'chevron-down', labels, name, startName, endName, form, required, id, className, onFocus, onFocusCapture, ...rest } = props;
27897
27953
  // A LocaleProvider around the picker sets its default locale and, through
27898
27954
  // that locale, the day its week starts on.
27899
27955
  const locale = usePickerLocale(localeProp);
@@ -28192,6 +28248,8 @@ DateRangeInputBase.displayName = 'DateRangeInputBase';
28192
28248
  */
28193
28249
  const DateRangeInput = React.forwardRef((props, ref) => {
28194
28250
  const { label, labelSize, labelProps, horizontal, iconLeft, iconRight, iconLeftName = 'calendar', iconRightName, iconLeftSize, iconRightSize, hasIconsLeft, hasIconsRight, isLoading, isExpanded, controlSize, message, messageColor, fieldClassName, controlClassName, ...baseProps } = props;
28251
+ // The picker's own direction, which the Control below takes too.
28252
+ const pickerDirAttrs = usePickerDirAttrs(baseProps.locale, baseProps.dir);
28195
28253
  const insideField = useInsideField();
28196
28254
  const insideControl = useInsideControl();
28197
28255
  const ownField = rendersOwnField('DateRangeInput', {
@@ -28235,7 +28293,7 @@ const DateRangeInput = React.forwardRef((props, ref) => {
28235
28293
  });
28236
28294
  let content = (jsxRuntime.jsx(DateRangeInputBase, { ref: ref, "aria-labelledby": ariaLabelledBy, ...baseProps }));
28237
28295
  if (ownControl) {
28238
- content = (jsxRuntime.jsx(Control, { iconLeft: iconLeft, iconRight: iconRight, iconLeftName: iconLeftName, iconRightName: iconRightName, iconLeftSize: iconLeftSize, iconRightSize: iconRightSize, hasIconsLeft: hasIconsLeft || !!iconLeftName, hasIconsRight: hasIconsRight, isLoading: isLoading, isExpanded: isExpanded, size: controlSize, className: controlClassName, children: content }));
28296
+ content = (jsxRuntime.jsx(Control, { ...pickerDirAttrs, iconLeft: iconLeft, iconRight: iconRight, iconLeftName: iconLeftName, iconRightName: iconRightName, iconLeftSize: iconLeftSize, iconRightSize: iconRightSize, hasIconsLeft: hasIconsLeft || !!iconLeftName, hasIconsRight: hasIconsRight, isLoading: isLoading, isExpanded: isExpanded, size: controlSize, className: controlClassName, children: content }));
28239
28297
  }
28240
28298
  const messageEl = message ? jsxRuntime.jsx("p", { className: helpClass, children: message }) : null;
28241
28299
  if (ownField) {
@@ -28256,7 +28314,7 @@ DateRangeInput.displayName = 'DateRangeInput';
28256
28314
  * @returns {JSX.Element} The rendered field.
28257
28315
  */
28258
28316
  const ColorInputBase = React.forwardRef((props, ref) => {
28259
- const { value: controlledValue, defaultValue, onChange, onChangeEnd, format = 'hsl', alpha = false, swatches, eyeDropper = false, onOpen, onClose, openOnFocus = false, closeOnSwatchClick = false, position = 'bottom-left', appendToBody = false, color, size, isRounded, disabled: disabledProp, readOnly, placeholder, triggerIcon: triggerIconProp, triggerIconName = 'chevron-down', labels, className, id: idProp, onFocus, onBlur, onKeyDown, ...rest } = props;
28317
+ const { value: controlledValue, defaultValue, onChange, onChangeEnd, format = 'hsl', alpha = false, swatches, eyeDropper = false, onOpen, onClose, openOnFocus = false, closeOnSwatchClick = false, position, appendToBody = false, color, size, isRounded, disabled: disabledProp, readOnly, placeholder, triggerIcon: triggerIconProp, triggerIconName = 'chevron-down', labels, className, id: idProp, onFocus, onBlur, onKeyDown, ...rest } = props;
28260
28318
  const disabled = useFieldsetDisabled(disabledProp);
28261
28319
  const id = useFieldLabelTarget(idProp, true);
28262
28320
  const localeScope = usePickerLocaleScope(undefined, props.dir);
@@ -31165,6 +31223,13 @@ exports.Breadcrumb = Breadcrumb;
31165
31223
  exports.Button = Button;
31166
31224
  exports.Buttons = Buttons;
31167
31225
  exports.Card = Card;
31226
+ exports.CardContent = CardContent;
31227
+ exports.CardFooter = CardFooter;
31228
+ exports.CardFooterItem = CardFooterItem;
31229
+ exports.CardHeader = CardHeader;
31230
+ exports.CardHeaderIcon = CardHeaderIcon;
31231
+ exports.CardHeaderTitle = CardHeaderTitle;
31232
+ exports.CardImage = CardImage;
31168
31233
  exports.Carousel = Carousel;
31169
31234
  exports.CarouselItem = CarouselItem;
31170
31235
  exports.Cell = Cell;
@@ -31237,6 +31302,7 @@ exports.FieldBody = FieldBody;
31237
31302
  exports.FieldLabel = FieldLabel;
31238
31303
  exports.Fieldset = Fieldset;
31239
31304
  exports.Figure = Figure;
31305
+ exports.FigureCaption = FigureCaption;
31240
31306
  exports.File = File;
31241
31307
  exports.Flex = Flex;
31242
31308
  exports.Footer = Footer;
@@ -31277,7 +31343,17 @@ exports.MenuLabel = MenuLabel;
31277
31343
  exports.MenuList = MenuList;
31278
31344
  exports.MenuSection = MenuSection;
31279
31345
  exports.Message = Message;
31346
+ exports.MessageBody = MessageBody;
31347
+ exports.MessageHeader = MessageHeader;
31280
31348
  exports.Modal = Modal;
31349
+ exports.ModalBackground = ModalBackground;
31350
+ exports.ModalCard = ModalCard;
31351
+ exports.ModalCardBody = ModalCardBody;
31352
+ exports.ModalCardFoot = ModalCardFoot;
31353
+ exports.ModalCardHead = ModalCardHead;
31354
+ exports.ModalCardTitle = ModalCardTitle;
31355
+ exports.ModalClose = ModalClose;
31356
+ exports.ModalContent = ModalContent;
31281
31357
  exports.Navbar = Navbar;
31282
31358
  exports.NavbarBrand = NavbarBrand;
31283
31359
  exports.NavbarBurger = NavbarBurger;
@@ -31330,9 +31406,15 @@ exports.RingProgress = RingProgress;
31330
31406
  exports.ScrollArea = ScrollArea;
31331
31407
  exports.Section = Section;
31332
31408
  exports.SegmentedControl = SegmentedControl;
31409
+ exports.SegmentedControlSegment = SegmentedControlSegment;
31333
31410
  exports.Select = Select;
31334
31411
  exports.SelectBase = SelectBase;
31335
31412
  exports.Sidebar = Sidebar;
31413
+ exports.SidebarBody = SidebarBody;
31414
+ exports.SidebarClose = SidebarClose;
31415
+ exports.SidebarFooter = SidebarFooter;
31416
+ exports.SidebarHeader = SidebarHeader;
31417
+ exports.SidebarTitle = SidebarTitle;
31336
31418
  exports.Skeleton = Skeleton;
31337
31419
  exports.Slider = Slider;
31338
31420
  exports.Span = Span;