@bug-on/m3-expressive 1.3.6 → 1.3.7

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 (70) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/buttons.d.mts +3 -3
  3. package/dist/buttons.d.ts +3 -3
  4. package/dist/buttons.js +110 -91
  5. package/dist/buttons.js.map +1 -1
  6. package/dist/buttons.mjs +110 -91
  7. package/dist/buttons.mjs.map +1 -1
  8. package/dist/{core-Cckt8qEm.d.ts → core-DamhB5Yd.d.ts} +1 -1
  9. package/dist/{core-DDfG4pym.d.mts → core-Wsfqn9_N.d.mts} +1 -1
  10. package/dist/core.d.mts +2 -2
  11. package/dist/core.d.ts +2 -2
  12. package/dist/core.js +1 -1
  13. package/dist/core.js.map +1 -1
  14. package/dist/core.mjs +1 -1
  15. package/dist/core.mjs.map +1 -1
  16. package/dist/{fading-blur-mask--uZbBKLj.d.ts → fading-blur-mask-CX-bwjNU.d.mts} +6 -1
  17. package/dist/{fading-blur-mask--uZbBKLj.d.mts → fading-blur-mask-D57UMguz.d.ts} +6 -1
  18. package/dist/feedback.d.mts +17 -5
  19. package/dist/feedback.d.ts +17 -5
  20. package/dist/feedback.js +1 -1
  21. package/dist/feedback.js.map +1 -1
  22. package/dist/feedback.mjs +1 -1
  23. package/dist/feedback.mjs.map +1 -1
  24. package/dist/forms.d.mts +3 -3
  25. package/dist/forms.d.ts +3 -3
  26. package/dist/{icon-button-CxyJv7UV.d.mts → icon-button-BpX9_fwZ.d.mts} +1 -1
  27. package/dist/{icon-button-Di8VX6ou.d.ts → icon-button-DFXp9hze.d.ts} +1 -1
  28. package/dist/index.d.mts +9 -8
  29. package/dist/index.d.ts +9 -8
  30. package/dist/index.js +1098 -976
  31. package/dist/index.js.map +1 -1
  32. package/dist/index.mjs +924 -802
  33. package/dist/index.mjs.map +1 -1
  34. package/dist/layout.d.mts +92 -23
  35. package/dist/layout.d.ts +92 -23
  36. package/dist/layout.js +118 -13
  37. package/dist/layout.js.map +1 -1
  38. package/dist/layout.mjs +118 -15
  39. package/dist/layout.mjs.map +1 -1
  40. package/dist/md3-xBl4wgND.d.mts +44 -0
  41. package/dist/md3-xBl4wgND.d.ts +44 -0
  42. package/dist/navigation.d.mts +4 -4
  43. package/dist/navigation.d.ts +4 -4
  44. package/dist/navigation.js +1 -1
  45. package/dist/navigation.js.map +1 -1
  46. package/dist/navigation.mjs +1 -1
  47. package/dist/navigation.mjs.map +1 -1
  48. package/dist/overlays.d.mts +4 -4
  49. package/dist/overlays.d.ts +4 -4
  50. package/dist/overlays.js +1 -1
  51. package/dist/overlays.js.map +1 -1
  52. package/dist/overlays.mjs +1 -1
  53. package/dist/overlays.mjs.map +1 -1
  54. package/dist/pickers.js +1 -1
  55. package/dist/pickers.js.map +1 -1
  56. package/dist/pickers.mjs +1 -1
  57. package/dist/pickers.mjs.map +1 -1
  58. package/dist/shapes.d.mts +9 -2
  59. package/dist/shapes.d.ts +9 -2
  60. package/dist/{side-sheet-modal-Cw4vemKx.d.ts → side-sheet-modal-BfdgYjd3.d.ts} +1 -1
  61. package/dist/{side-sheet-modal-BycxrabB.d.mts → side-sheet-modal-kLfHINFZ.d.mts} +1 -1
  62. package/dist/{split-button-trailing-uncheckable-CGzk7KcG.d.ts → split-button-trailing-uncheckable-BpyIlOdn.d.ts} +7 -3
  63. package/dist/{split-button-trailing-uncheckable-gAz6OAIi.d.mts → split-button-trailing-uncheckable-CpT8iPpr.d.mts} +7 -3
  64. package/dist/{text-field-C0VQLp8Y.d.ts → text-field-Ct-LT_2T.d.ts} +1 -1
  65. package/dist/{text-field-B1fLh5Sh.d.mts → text-field-D5xiGn-q.d.mts} +1 -1
  66. package/llms-full.txt +18 -3
  67. package/llms.txt +4 -1
  68. package/package.json +1 -1
  69. package/dist/md3-BQhRygSi.d.mts +0 -31
  70. package/dist/md3-BQhRygSi.d.ts +0 -31
package/dist/buttons.mjs CHANGED
@@ -3556,6 +3556,25 @@ function FABMenuItem({
3556
3556
  }
3557
3557
  );
3558
3558
  }
3559
+ function useClickOutside(ref, handler, enabled) {
3560
+ const stableHandler = React16.useRef(handler);
3561
+ React16.useEffect(() => {
3562
+ stableHandler.current = handler;
3563
+ });
3564
+ React16.useEffect(() => {
3565
+ if (!enabled) return;
3566
+ const listener = (event) => {
3567
+ if (!ref.current || ref.current.contains(event.target)) return;
3568
+ stableHandler.current();
3569
+ };
3570
+ document.addEventListener("mousedown", listener);
3571
+ document.addEventListener("touchstart", listener, { passive: true });
3572
+ return () => {
3573
+ document.removeEventListener("mousedown", listener);
3574
+ document.removeEventListener("touchstart", listener);
3575
+ };
3576
+ }, [ref, enabled]);
3577
+ }
3559
3578
  function FABMenu({
3560
3579
  expanded,
3561
3580
  onToggle,
@@ -3571,9 +3590,18 @@ function FABMenu({
3571
3590
  const fabId = React16.useId();
3572
3591
  const menuId = React16.useId();
3573
3592
  const toggleRef = React16.useRef(null);
3593
+ const containerRef = React16.useRef(null);
3574
3594
  const itemRefs = React16.useRef([]);
3575
3595
  const [focusedIndex, setFocusedIndex] = React16.useState(-1);
3576
3596
  const reversedItems = React16.useMemo(() => [...items].reverse(), [items]);
3597
+ const handleOutsideClick = React16.useCallback(() => {
3598
+ onToggle(false);
3599
+ }, [onToggle]);
3600
+ useClickOutside(
3601
+ containerRef,
3602
+ handleOutsideClick,
3603
+ expanded && closeOnBackdropClick
3604
+ );
3577
3605
  const focusItem = React16.useCallback((index) => {
3578
3606
  var _a;
3579
3607
  const clampedIndex = Math.max(
@@ -3631,97 +3659,88 @@ function FABMenu({
3631
3659
  },
3632
3660
  [expanded, focusedIndex, items.length, focusItem, onToggle]
3633
3661
  );
3634
- return /* @__PURE__ */ jsxs(LazyMotion, { features: domMax, strict: true, children: [
3635
- expanded && closeOnBackdropClick && /* @__PURE__ */ jsx(
3636
- "div",
3637
- {
3638
- "aria-hidden": "true",
3639
- className: "fixed inset-0 z-40",
3640
- onClick: () => onToggle(false)
3641
- }
3642
- ),
3643
- /* @__PURE__ */ jsxs(
3644
- "div",
3645
- {
3646
- role: "group",
3647
- "aria-label": ariaLabel != null ? ariaLabel : "Actions menu",
3648
- className: cn(
3649
- "fixed z-50 flex flex-col gap-2",
3650
- ALIGNMENT_CONTAINER_CLASSES[alignment],
3651
- "*:shrink-0",
3652
- className
3653
- ),
3654
- onKeyDown: handleMenuKeyDown,
3655
- children: [
3656
- /* @__PURE__ */ jsx(AnimatePresence, { children: expanded && /* @__PURE__ */ jsx(
3657
- m.div,
3658
- {
3659
- id: menuId,
3660
- role: "menu",
3661
- "aria-labelledby": fabId,
3662
- "aria-orientation": "vertical",
3663
- variants: MENU_CONTAINER_VARIANTS,
3664
- initial: "closed",
3665
- animate: "open",
3666
- exit: "closed",
3667
- className: cn(
3668
- "flex flex-col-reverse gap-2",
3669
- ALIGNMENT_ITEMS_CLASSES[alignment]
3670
- ),
3671
- children: reversedItems.map((item, reversedIndex) => {
3672
- var _a;
3673
- const originalIndex = items.length - 1 - reversedIndex;
3674
- return /* @__PURE__ */ jsx(
3675
- m.div,
3676
- {
3677
- variants: MENU_ITEM_VARIANTS,
3678
- style: {
3679
- transformOrigin: (_a = ALIGNMENT_TRANSFORM_ORIGIN[alignment]) != null ? _a : "right"
3680
- },
3681
- ref: (el) => {
3682
- itemRefs.current[originalIndex] = el;
3683
- },
3684
- children: /* @__PURE__ */ jsx(
3685
- FABMenuItem,
3686
- {
3687
- icon: item.icon,
3688
- label: item.label,
3689
- onClick: () => {
3690
- if (!item.disabled) {
3691
- item.onClick();
3692
- onToggle(false);
3693
- }
3694
- },
3695
- disabled: item.disabled,
3696
- colorVariant,
3697
- className: item.className,
3698
- tabIndex: expanded ? 0 : -1
3699
- }
3700
- )
3662
+ return /* @__PURE__ */ jsx(LazyMotion, { features: domMax, strict: true, children: /* @__PURE__ */ jsxs(
3663
+ "div",
3664
+ {
3665
+ ref: containerRef,
3666
+ role: "group",
3667
+ "aria-label": ariaLabel != null ? ariaLabel : "Actions menu",
3668
+ className: cn(
3669
+ "fixed z-50 flex flex-col gap-2",
3670
+ ALIGNMENT_CONTAINER_CLASSES[alignment],
3671
+ "*:shrink-0",
3672
+ className
3673
+ ),
3674
+ onKeyDown: handleMenuKeyDown,
3675
+ children: [
3676
+ /* @__PURE__ */ jsx(AnimatePresence, { children: expanded && /* @__PURE__ */ jsx(
3677
+ m.div,
3678
+ {
3679
+ id: menuId,
3680
+ role: "menu",
3681
+ "aria-labelledby": fabId,
3682
+ "aria-orientation": "vertical",
3683
+ variants: MENU_CONTAINER_VARIANTS,
3684
+ initial: "closed",
3685
+ animate: "open",
3686
+ exit: "closed",
3687
+ className: cn(
3688
+ "flex flex-col-reverse gap-2",
3689
+ ALIGNMENT_ITEMS_CLASSES[alignment]
3690
+ ),
3691
+ children: reversedItems.map((item, reversedIndex) => {
3692
+ var _a;
3693
+ const originalIndex = items.length - 1 - reversedIndex;
3694
+ return /* @__PURE__ */ jsx(
3695
+ m.div,
3696
+ {
3697
+ variants: MENU_ITEM_VARIANTS,
3698
+ style: {
3699
+ transformOrigin: (_a = ALIGNMENT_TRANSFORM_ORIGIN[alignment]) != null ? _a : "right"
3701
3700
  },
3702
- item.id
3703
- );
3704
- })
3705
- }
3706
- ) }),
3707
- /* @__PURE__ */ jsx(
3708
- ToggleFAB,
3709
- {
3710
- ref: toggleRef,
3711
- id: fabId,
3712
- expanded,
3713
- onToggle,
3714
- colorVariant,
3715
- size,
3716
- "aria-label": ariaLabel != null ? ariaLabel : expanded ? "Close actions menu" : "Open actions menu",
3717
- "aria-controls": menuId,
3718
- icon: defaultFabIcon
3719
- }
3720
- )
3721
- ]
3722
- }
3723
- )
3724
- ] });
3701
+ ref: (el) => {
3702
+ itemRefs.current[originalIndex] = el;
3703
+ },
3704
+ children: /* @__PURE__ */ jsx(
3705
+ FABMenuItem,
3706
+ {
3707
+ icon: item.icon,
3708
+ label: item.label,
3709
+ onClick: () => {
3710
+ if (!item.disabled) {
3711
+ item.onClick();
3712
+ onToggle(false);
3713
+ }
3714
+ },
3715
+ disabled: item.disabled,
3716
+ colorVariant,
3717
+ className: item.className,
3718
+ tabIndex: expanded ? 0 : -1
3719
+ }
3720
+ )
3721
+ },
3722
+ item.id
3723
+ );
3724
+ })
3725
+ }
3726
+ ) }),
3727
+ /* @__PURE__ */ jsx(
3728
+ ToggleFAB,
3729
+ {
3730
+ ref: toggleRef,
3731
+ id: fabId,
3732
+ expanded,
3733
+ onToggle,
3734
+ colorVariant,
3735
+ size,
3736
+ "aria-label": ariaLabel != null ? ariaLabel : expanded ? "Close actions menu" : "Open actions menu",
3737
+ "aria-controls": menuId,
3738
+ icon: defaultFabIcon
3739
+ }
3740
+ )
3741
+ ]
3742
+ }
3743
+ ) });
3725
3744
  }
3726
3745
  var SIZE_HEIGHT_STYLES = {
3727
3746
  xs: "h-8",
@@ -3738,7 +3757,7 @@ var WIDTH_SIZE_STYLES = {
3738
3757
  },
3739
3758
  sm: {
3740
3759
  default: "w-10",
3741
- narrow: "w-12",
3760
+ narrow: "w-10",
3742
3761
  wide: "w-[3.25rem]"
3743
3762
  },
3744
3763
  md: {