@bug-on/m3-expressive 1.1.0 → 1.2.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 (61) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/buttons.d.mts +3 -3
  3. package/dist/buttons.d.ts +3 -3
  4. package/dist/buttons.js +708 -606
  5. package/dist/buttons.js.map +1 -1
  6. package/dist/buttons.mjs +707 -605
  7. package/dist/buttons.mjs.map +1 -1
  8. package/dist/core-Bc5Wj_pc.d.ts +497 -0
  9. package/dist/core-D4048_K5.d.mts +497 -0
  10. package/dist/core.d.mts +6 -422
  11. package/dist/core.d.ts +6 -422
  12. package/dist/core.js +223 -129
  13. package/dist/core.js.map +1 -1
  14. package/dist/core.mjs +224 -130
  15. package/dist/core.mjs.map +1 -1
  16. package/dist/feedback.js +85 -61
  17. package/dist/feedback.js.map +1 -1
  18. package/dist/feedback.mjs +85 -61
  19. package/dist/feedback.mjs.map +1 -1
  20. package/dist/forms.d.mts +2 -2
  21. package/dist/forms.d.ts +2 -2
  22. package/dist/forms.js +70 -8
  23. package/dist/forms.js.map +1 -1
  24. package/dist/forms.mjs +70 -8
  25. package/dist/forms.mjs.map +1 -1
  26. package/dist/{icon-button-D-gs0gfj.d.mts → icon-button-sSt6PPLg.d.mts} +6 -0
  27. package/dist/{icon-button-D-gs0gfj.d.ts → icon-button-sSt6PPLg.d.ts} +6 -0
  28. package/dist/index.css +6 -1
  29. package/dist/index.d.mts +68 -6
  30. package/dist/index.d.ts +68 -6
  31. package/dist/index.js +1177 -580
  32. package/dist/index.js.map +1 -1
  33. package/dist/index.mjs +1172 -583
  34. package/dist/index.mjs.map +1 -1
  35. package/dist/layout.d.mts +18 -1
  36. package/dist/layout.d.ts +18 -1
  37. package/dist/layout.js +94 -8
  38. package/dist/layout.js.map +1 -1
  39. package/dist/layout.mjs +94 -8
  40. package/dist/layout.mjs.map +1 -1
  41. package/dist/{md3-DFhj-NZj.d.mts → md3-Dty-Qcad.d.mts} +7 -1
  42. package/dist/{md3-DFhj-NZj.d.ts → md3-Dty-Qcad.d.ts} +7 -1
  43. package/dist/navigation.d.mts +134 -9
  44. package/dist/navigation.d.ts +134 -9
  45. package/dist/navigation.js +403 -93
  46. package/dist/navigation.js.map +1 -1
  47. package/dist/navigation.mjs +397 -94
  48. package/dist/navigation.mjs.map +1 -1
  49. package/dist/overlays.js +214 -189
  50. package/dist/overlays.js.map +1 -1
  51. package/dist/overlays.mjs +176 -151
  52. package/dist/overlays.mjs.map +1 -1
  53. package/dist/pickers.js +222 -197
  54. package/dist/pickers.js.map +1 -1
  55. package/dist/pickers.mjs +189 -164
  56. package/dist/pickers.mjs.map +1 -1
  57. package/dist/{split-button-trailing-uncheckable-BRPuTqi1.d.mts → split-button-trailing-uncheckable-BcPD_7uK.d.ts} +73 -7
  58. package/dist/{split-button-trailing-uncheckable-CjOFCoyW.d.ts → split-button-trailing-uncheckable-DtFJkTFr.d.mts} +73 -7
  59. package/dist/{text-field-eAIpz9z1.d.mts → text-field-T4Rg-9Bw.d.mts} +7 -0
  60. package/dist/{text-field-eAIpz9z1.d.ts → text-field-T4Rg-9Bw.d.ts} +7 -0
  61. package/package.json +4 -4
package/dist/forms.mjs CHANGED
@@ -5,6 +5,7 @@ import { useMemo } from 'react';
5
5
  import { clsx } from 'clsx';
6
6
  import { twMerge } from 'tailwind-merge';
7
7
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
8
+ import { Slot } from '@radix-ui/react-slot';
8
9
  import { cva } from 'class-variance-authority';
9
10
  import * as RadixScrollArea from '@radix-ui/react-scroll-area';
10
11
 
@@ -518,7 +519,9 @@ var ChipImpl = React4.forwardRef(
518
519
  avatar,
519
520
  onRemove,
520
521
  className,
521
- onClick
522
+ onClick,
523
+ asChild = false,
524
+ children
522
525
  } = _b, props = __objRest(_b, [
523
526
  "variant",
524
527
  "elevated",
@@ -530,7 +533,9 @@ var ChipImpl = React4.forwardRef(
530
533
  "avatar",
531
534
  "onRemove",
532
535
  "className",
533
- "onClick"
536
+ "onClick",
537
+ "asChild",
538
+ "children"
534
539
  ]);
535
540
  const { ripples, onPointerDown, removeRipple } = useRippleState({
536
541
  disabled
@@ -645,6 +650,63 @@ var ChipImpl = React4.forwardRef(
645
650
  ) : null }),
646
651
  /* @__PURE__ */ jsx("span", { className: "whitespace-nowrap", children: label })
647
652
  ] });
653
+ if (asChild) {
654
+ const child = React4.Children.only(children);
655
+ const innerContent = /* @__PURE__ */ jsxs(Fragment, { children: [
656
+ /* @__PURE__ */ jsx(Ripple, { ripples, onRippleDone: removeRipple }),
657
+ mainContent,
658
+ hasTrailingContent && /* @__PURE__ */ jsx("span", { className: "flex items-center justify-center shrink-0", children: onRemove ? /* @__PURE__ */ jsx(
659
+ "button",
660
+ {
661
+ type: "button",
662
+ tabIndex: disabled ? -1 : 0,
663
+ "aria-label": typeof label === "string" ? `Remove ${label}` : "Remove",
664
+ onClick: (e) => {
665
+ e.stopPropagation();
666
+ onRemove(e);
667
+ },
668
+ onPointerDown: (e) => e.stopPropagation(),
669
+ className: cn(
670
+ "flex items-center justify-center w-8.5 h-full",
671
+ "cursor-pointer focus-visible:outline-none",
672
+ "transition-all duration-150",
673
+ "relative overflow-hidden rounded-r-[7px] rounded-l-none",
674
+ "before:absolute before:-inset-px before:pointer-events-none before:bg-current",
675
+ "before:transition-opacity before:duration-200 before:opacity-0 before:rounded-r-[7px]",
676
+ "hover:before:opacity-[0.08] active:before:opacity-[0.12]",
677
+ selected ? "text-m3-on-secondary-container" : "text-m3-on-surface-variant"
678
+ ),
679
+ children: /* @__PURE__ */ jsx(CloseIcon, {})
680
+ }
681
+ ) : trailingIcon ? /* @__PURE__ */ jsx(
682
+ "span",
683
+ {
684
+ className: cn(
685
+ "flex items-center justify-center w-4.5 h-4.5 [&_.md-icon]:text-[length:inherit]!",
686
+ selected ? "text-m3-on-secondary-container" : "text-m3-on-surface-variant"
687
+ ),
688
+ style: { fontSize: 18 },
689
+ "aria-hidden": "true",
690
+ children: trailingIcon
691
+ }
692
+ ) : null })
693
+ ] });
694
+ const strippedProps = __spreadValues({}, props);
695
+ delete strippedProps.children;
696
+ return /* @__PURE__ */ jsx(LazyMotion, { features: domMax, strict: true, children: /* @__PURE__ */ jsx(
697
+ Slot,
698
+ __spreadProps(__spreadValues({
699
+ ref,
700
+ "aria-disabled": disabled || void 0,
701
+ tabIndex: disabled ? -1 : 0,
702
+ onClick,
703
+ onPointerDown,
704
+ className: containerClass
705
+ }, strippedProps), {
706
+ children: React4.cloneElement(child, { children: innerContent })
707
+ })
708
+ ) });
709
+ }
648
710
  return /* @__PURE__ */ jsx(LazyMotion, { features: domMax, strict: true, children: /* @__PURE__ */ jsxs(
649
711
  Root2,
650
712
  __spreadProps(__spreadValues(__spreadProps(__spreadValues({
@@ -3449,7 +3511,6 @@ var FloatingLabel = React4.memo(function FloatingLabel2({
3449
3511
  "absolute pointer-events-none select-none origin-[left_center] leading-6 text-base whitespace-nowrap",
3450
3512
  "px-1 -mx-1",
3451
3513
  // Clear the notch gap and keep text aligned
3452
- variant === "outlined" && isFloated && "bg-m3-surface",
3453
3514
  "left-4",
3454
3515
  isDisabled && "opacity-[0.38]"
3455
3516
  ),
@@ -3525,7 +3586,8 @@ var OutlineContainer = React4.memo(function OutlineContainer2({
3525
3586
  );
3526
3587
  const borderWidth = isFocused || isError ? TF_SIZE.outlineThick : TF_SIZE.outlineThin;
3527
3588
  const leftSegmentWidth = TF_SIZE.paddingStart;
3528
- const notchWidth = isFloated ? labelWidth * TF_TYPOGRAPHY.labelScaleRatio + TF_SIZE.notchPadding * 2 : 0;
3589
+ const isNotched = isFloated && labelWidth > 0;
3590
+ const notchWidth = isNotched ? labelWidth * TF_TYPOGRAPHY.labelScaleRatio + TF_SIZE.notchPadding * 2 : 0;
3529
3591
  const borderTransition = { duration: colorDuration, ease };
3530
3592
  const notchTransition = { duration: notchDuration, ease };
3531
3593
  return /* @__PURE__ */ jsxs(
@@ -3563,7 +3625,7 @@ var OutlineContainer = React4.memo(function OutlineContainer2({
3563
3625
  style: { height: borderWidth },
3564
3626
  animate: {
3565
3627
  borderTopColor: borderColor,
3566
- opacity: isFloated ? 0 : 1,
3628
+ opacity: isNotched ? 0 : 1,
3567
3629
  borderTopWidth: borderWidth,
3568
3630
  borderTopStyle: "solid"
3569
3631
  },
@@ -4015,7 +4077,7 @@ var TextFieldComponent = React4.forwardRef(
4015
4077
  const computedDescribedby = [hasSupporting ? supportingId : "", ariaDescribedby != null ? ariaDescribedby : ""].filter(Boolean).join(" ") || void 0;
4016
4078
  const inputClass = cn(
4017
4079
  "bg-transparent outline-none w-full",
4018
- isInToolbar ? "self-center" : "self-end",
4080
+ !resolvedLabel || isInToolbar ? "self-center" : "self-end",
4019
4081
  "text-base leading-6 text-m3-on-surface",
4020
4082
  "caret-[var(--color-m3-primary)]",
4021
4083
  "placeholder:text-m3-on-surface-variant/60",
@@ -4026,7 +4088,7 @@ var TextFieldComponent = React4.forwardRef(
4026
4088
  id: inputId,
4027
4089
  name,
4028
4090
  value: currentValue,
4029
- placeholder: isFloated ? placeholder != null ? placeholder : "" : "",
4091
+ placeholder: !resolvedLabel || isFloated ? placeholder != null ? placeholder : "" : "",
4030
4092
  disabled,
4031
4093
  readOnly,
4032
4094
  required,
@@ -4058,7 +4120,7 @@ var TextFieldComponent = React4.forwardRef(
4058
4120
  "relative flex flex-col flex-1 min-w-0 h-full",
4059
4121
  paddingStart,
4060
4122
  paddingEnd,
4061
- isInToolbar ? "justify-center" : variant === "filled" ? resolvedDense ? "pt-5 pb-2" : "pt-6 pb-2" : resolvedDense ? "py-3" : "py-4"
4123
+ isInToolbar || !resolvedLabel ? "justify-center" : variant === "filled" ? resolvedDense ? "pt-5 pb-2" : "pt-6 pb-2" : resolvedDense ? "py-3" : "py-4"
4062
4124
  );
4063
4125
  const wrapperClass = cn(
4064
4126
  "group/tf inline-flex flex-col",