@bug-on/m3-expressive 1.2.4 → 1.2.6

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 (51) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +128 -41
  3. package/dist/buttons.d.mts +1 -1
  4. package/dist/buttons.d.ts +1 -1
  5. package/dist/buttons.js +59 -45
  6. package/dist/buttons.js.map +1 -1
  7. package/dist/buttons.mjs +59 -45
  8. package/dist/buttons.mjs.map +1 -1
  9. package/dist/core.js +54 -40
  10. package/dist/core.js.map +1 -1
  11. package/dist/core.mjs +54 -40
  12. package/dist/core.mjs.map +1 -1
  13. package/dist/feedback.js +53 -39
  14. package/dist/feedback.js.map +1 -1
  15. package/dist/feedback.mjs +53 -39
  16. package/dist/feedback.mjs.map +1 -1
  17. package/dist/forms.d.mts +2 -2
  18. package/dist/forms.d.ts +2 -2
  19. package/dist/index.d.mts +77 -6
  20. package/dist/index.d.ts +77 -6
  21. package/dist/index.js +5607 -5429
  22. package/dist/index.js.map +1 -1
  23. package/dist/index.mjs +5506 -5329
  24. package/dist/index.mjs.map +1 -1
  25. package/dist/layout.js +60 -46
  26. package/dist/layout.js.map +1 -1
  27. package/dist/layout.mjs +60 -46
  28. package/dist/layout.mjs.map +1 -1
  29. package/dist/navigation.d.mts +27 -7
  30. package/dist/navigation.d.ts +27 -7
  31. package/dist/navigation.js +481 -474
  32. package/dist/navigation.js.map +1 -1
  33. package/dist/navigation.mjs +473 -466
  34. package/dist/navigation.mjs.map +1 -1
  35. package/dist/overlays.d.mts +2 -2
  36. package/dist/overlays.d.ts +2 -2
  37. package/dist/overlays.js +53 -39
  38. package/dist/overlays.js.map +1 -1
  39. package/dist/overlays.mjs +53 -39
  40. package/dist/overlays.mjs.map +1 -1
  41. package/dist/pickers.js +53 -39
  42. package/dist/pickers.js.map +1 -1
  43. package/dist/pickers.mjs +53 -39
  44. package/dist/pickers.mjs.map +1 -1
  45. package/dist/{side-sheet-modal-Bd5Qqvp9.d.ts → side-sheet-modal-DdEZR6Vl.d.ts} +1 -1
  46. package/dist/{side-sheet-modal-64FGhDxL.d.mts → side-sheet-modal-Dgjt739k.d.mts} +1 -1
  47. package/dist/{split-button-trailing-uncheckable-DtxrcLxH.d.ts → split-button-trailing-uncheckable--BhNTEJw.d.ts} +5 -5
  48. package/dist/{split-button-trailing-uncheckable-BTWfIN2k.d.mts → split-button-trailing-uncheckable-DPJL3bO6.d.mts} +5 -5
  49. package/dist/{text-field-T4Rg-9Bw.d.mts → text-field-DWC7qOvp.d.mts} +128 -128
  50. package/dist/{text-field-T4Rg-9Bw.d.ts → text-field-DWC7qOvp.d.ts} +128 -128
  51. package/package.json +3 -3
package/dist/buttons.mjs CHANGED
@@ -256,24 +256,36 @@ function generateWavyCircularPath(center, radius, amplitude, wavelength) {
256
256
  if (i === 0) d += `M ${xAt(t0).toFixed(2)} ${yAt(t0).toFixed(2)}`;
257
257
  d += ` C ${cp1x.toFixed(2)} ${cp1y.toFixed(2)}, ${cp2x.toFixed(2)} ${cp2y.toFixed(2)}, ${xAt(t1).toFixed(2)} ${yAt(t1).toFixed(2)}`;
258
258
  }
259
- d += " Z";
260
259
  return d;
261
260
  }
262
261
  function getSinePath(startX, endX, phase, wl, amp) {
263
262
  if (startX >= endX) return "";
264
- let d = "";
265
- const step = amp === 0 ? Math.max(10, endX - startX) : 1;
266
- const yStart = Math.sin((startX + phase) / wl * 2 * Math.PI) * amp;
267
- d += `M ${startX.toFixed(2)} ${yStart.toFixed(2)}`;
268
- let nextX = Math.ceil(startX / step) * step;
269
- if (nextX === startX) nextX += step;
270
- while (nextX < endX) {
271
- const y = Math.sin((nextX + phase) / wl * 2 * Math.PI) * amp;
272
- d += ` L ${nextX.toFixed(2)} ${y.toFixed(2)}`;
273
- nextX += step;
263
+ if (amp <= 0.01) {
264
+ return `M ${startX.toFixed(2)} 0 L ${endX.toFixed(2)} 0`;
265
+ }
266
+ const safeWl = Math.max(1, wl);
267
+ const k = 2 * Math.PI / safeWl;
268
+ const phi = phase / safeWl * 2 * Math.PI;
269
+ const yAt = (x) => amp * Math.sin(k * x + phi);
270
+ const dyAt = (x) => amp * k * Math.cos(k * x + phi);
271
+ const step = safeWl / 4;
272
+ let d = `M ${startX.toFixed(2)} ${yAt(startX).toFixed(2)}`;
273
+ let currentX = startX;
274
+ while (currentX < endX) {
275
+ const nextX = Math.min(endX, currentX + step);
276
+ const dx = nextX - currentX;
277
+ const scale = dx / 3;
278
+ const y0 = yAt(currentX);
279
+ const dy0 = dyAt(currentX);
280
+ const y1 = yAt(nextX);
281
+ const dy1 = dyAt(nextX);
282
+ const cp1x = currentX + scale;
283
+ const cp1y = y0 + scale * dy0;
284
+ const cp2x = nextX - scale;
285
+ const cp2y = y1 - scale * dy1;
286
+ d += ` C ${cp1x.toFixed(2)} ${cp1y.toFixed(2)}, ${cp2x.toFixed(2)} ${cp2y.toFixed(2)}, ${nextX.toFixed(2)} ${y1.toFixed(2)}`;
287
+ currentX = nextX;
274
288
  }
275
- const yEnd = Math.sin((endX + phase) / wl * 2 * Math.PI) * amp;
276
- d += ` L ${endX.toFixed(2)} ${yEnd.toFixed(2)}`;
277
289
  return d;
278
290
  }
279
291
  var CircularProgress = React16.forwardRef(
@@ -428,16 +440,13 @@ var CircularProgress = React16.forwardRef(
428
440
  position: "absolute",
429
441
  inset: 0,
430
442
  overflow: "visible",
431
- rotate: "-90deg",
432
443
  transformOrigin: "center"
433
444
  },
434
- animate: { rotate: ["-90deg", "270deg"] },
445
+ animate: { rotate: [0, 360] },
435
446
  transition: {
436
- rotate: {
437
- duration: 2 / Math.max(0.1, crawlerSpeed),
438
- repeat: Number.POSITIVE_INFINITY,
439
- ease: "linear"
440
- }
447
+ duration: 2 / Math.max(0.1, crawlerSpeed),
448
+ repeat: Number.POSITIVE_INFINITY,
449
+ ease: "linear"
441
450
  },
442
451
  children: [
443
452
  /* @__PURE__ */ jsx(
@@ -450,17 +459,16 @@ var CircularProgress = React16.forwardRef(
450
459
  stroke: bgTrackColor,
451
460
  strokeWidth: trackHeight,
452
461
  strokeLinecap: "round",
453
- style: { originX: "50%", originY: "50%" },
454
462
  animate: {
455
463
  pathLength: [
456
- Math.max(1e-3, 1 - 0.1 - 2 * gapForTrack),
457
- Math.max(1e-3, 1 - 0.75 - 2 * gapForTrack),
458
- Math.max(1e-3, 1 - 0.1 - 2 * gapForTrack)
464
+ Math.max(1e-3, 0.9 - 2 * gapForTrack),
465
+ Math.max(1e-3, 0.25 - 2 * gapForTrack),
466
+ Math.max(1e-3, 0.9 - 2 * gapForTrack)
459
467
  ],
460
- rotate: [
461
- `${(0.1 + gapForTrack) * 360}deg`,
462
- `${(1 + gapForTrack) * 360}deg`,
463
- `${(1.1 + gapForTrack) * 360}deg`
468
+ pathOffset: [
469
+ 0.1 + gapForTrack,
470
+ 0.75 + gapForTrack,
471
+ 0.1 + gapForTrack
464
472
  ]
465
473
  },
466
474
  transition: {
@@ -478,10 +486,9 @@ var CircularProgress = React16.forwardRef(
478
486
  stroke: activeColor,
479
487
  strokeWidth: trackHeight,
480
488
  strokeLinecap: "round",
481
- style: { originX: "50%", originY: "50%" },
482
489
  animate: {
483
490
  pathLength: [0.1, 0.75, 0.1],
484
- rotate: ["0deg", "90deg", "360deg"]
491
+ pathOffset: [0, 0.65, 1]
485
492
  },
486
493
  transition: {
487
494
  duration: 2 / Math.max(0.1, crawlerSpeed),
@@ -499,10 +506,9 @@ var CircularProgress = React16.forwardRef(
499
506
  stroke: activeColor,
500
507
  strokeWidth: trackHeight,
501
508
  strokeLinecap: "round",
502
- style: { originX: "50%", originY: "50%" },
503
509
  animate: {
504
510
  pathLength: [0.1, 0.75, 0.1],
505
- rotate: ["0deg", "90deg", "360deg"]
511
+ pathOffset: [0, 0.65, 1]
506
512
  },
507
513
  transition: {
508
514
  duration: 2 / Math.max(0.1, crawlerSpeed),
@@ -675,6 +681,12 @@ var WavyLinearTrack = React16.memo(function WavyLinearTrack2({
675
681
  duration: 0.5
676
682
  });
677
683
  animate(fractionMV, fraction, { duration: 0.4, ease: [0.2, 0, 0, 1] });
684
+ } else {
685
+ animate(amplitudeMV, amplitude, {
686
+ type: "spring",
687
+ bounce: 0,
688
+ duration: 0.5
689
+ });
678
690
  }
679
691
  }, [
680
692
  clampedValue,
@@ -688,10 +700,10 @@ var WavyLinearTrack = React16.memo(function WavyLinearTrack2({
688
700
  1,
689
701
  isDeterminate ? wavelength : indeterminateWavelength
690
702
  );
691
- const trackAmp = trackShape === "wavy" ? amplitude : 0;
692
703
  useAnimationFrame((time) => {
693
704
  if (width === 0) return;
694
705
  const currentAmp = amplitudeMV.get();
706
+ const trackAmp = trackShape === "wavy" ? amplitude : 0;
695
707
  const phase = time / 1e3 * waveSpeed * activeWavelength;
696
708
  const capWidth = trackHeight / 2;
697
709
  let activePathD = "";
@@ -792,7 +804,7 @@ var WavyLinearTrack = React16.memo(function WavyLinearTrack2({
792
804
  "div",
793
805
  {
794
806
  ref: containerRef,
795
- className: "relative w-full overflow-hidden",
807
+ className: "relative w-full",
796
808
  style: { height: svgHeight },
797
809
  children: width > 0 && /* @__PURE__ */ jsxs(
798
810
  "svg",
@@ -846,7 +858,7 @@ var LinearProgress = React16.forwardRef(
846
858
  waveSpeed = 1,
847
859
  crawlerSpeed = 1,
848
860
  determinateAnimation = "md3",
849
- indeterminateAnimation = "continuous",
861
+ indeterminateAnimation = "md3",
850
862
  gapSize = 4,
851
863
  showStopIndicator = "auto",
852
864
  color,
@@ -883,15 +895,15 @@ var LinearProgress = React16.forwardRef(
883
895
  setIsRtl(dir === "rtl");
884
896
  }
885
897
  }, []);
886
- const isWavy = shape === "wavy";
887
898
  const resolvedTrackShape = trackShape != null ? trackShape : shape;
899
+ const isWavy = shape === "wavy" || resolvedTrackShape === "wavy";
888
900
  const effectiveAmplitude = React16.useMemo(() => amplitude != null ? amplitude : 3, [amplitude]);
889
901
  const svgHeight = React16.useMemo(
890
902
  () => isWavy ? trackHeight + effectiveAmplitude * 2 : trackHeight,
891
903
  [isWavy, trackHeight, effectiveAmplitude]
892
904
  );
893
905
  const shouldShowStop = React16.useMemo(
894
- () => isDeterminate && resolvedTrackShape === "flat" && (showStopIndicator === true || showStopIndicator === "auto" && isDeterminate),
906
+ () => isDeterminate && resolvedTrackShape === "flat" && showStopIndicator !== false,
895
907
  [isDeterminate, resolvedTrackShape, showStopIndicator]
896
908
  );
897
909
  const stopSize = React16.useMemo(
@@ -901,6 +913,8 @@ var LinearProgress = React16.forwardRef(
901
913
  const stopOffset = (trackHeight - stopSize) / 2;
902
914
  const activeColor = color || "var(--md-sys-color-indicator-active)";
903
915
  const bgTrackColor = trackColor || "var(--md-sys-color-indicator-track)";
916
+ const useWavyTrack = isWavy || !isDeterminate;
917
+ const trackAmp = isWavy ? effectiveAmplitude : 0;
904
918
  return /* @__PURE__ */ jsx(LazyMotion, { features: domMax, strict: true, children: /* @__PURE__ */ jsxs(
905
919
  "div",
906
920
  __spreadProps(__spreadValues({
@@ -917,12 +931,12 @@ var LinearProgress = React16.forwardRef(
917
931
  style: { height: svgHeight }
918
932
  }, restProps), {
919
933
  children: [
920
- isWavy ? /* @__PURE__ */ jsx(
934
+ useWavyTrack ? /* @__PURE__ */ jsx(
921
935
  WavyLinearTrack,
922
936
  {
923
937
  trackHeight,
924
938
  svgHeight,
925
- amplitude: effectiveAmplitude,
939
+ amplitude: trackAmp,
926
940
  wavelength,
927
941
  indeterminateWavelength,
928
942
  activeColor,
@@ -1078,6 +1092,7 @@ function TouchTarget() {
1078
1092
  }
1079
1093
  var BUTTON_SHAPE_MORPH_SPRING = FAST_SPATIAL_SPRING;
1080
1094
  var BUTTON_RADIUS_SPRING = FAST_EFFECTS_SPRING;
1095
+ var ROUND_SHAPE_RADIUS = 9999;
1081
1096
  var BUTTON_SIZE_TOKENS = {
1082
1097
  xs: {
1083
1098
  height: "2rem",
@@ -1096,7 +1111,7 @@ var BUTTON_SIZE_TOKENS = {
1096
1111
  // 12dp
1097
1112
  pressedShapeRadius: cornerRadius.small,
1098
1113
  // 8dp
1099
- roundShapeRadius: 16
1114
+ roundShapeRadius: ROUND_SHAPE_RADIUS
1100
1115
  },
1101
1116
  sm: {
1102
1117
  height: "2.5rem",
@@ -1115,7 +1130,7 @@ var BUTTON_SIZE_TOKENS = {
1115
1130
  // 12dp
1116
1131
  pressedShapeRadius: cornerRadius.small,
1117
1132
  // 8dp
1118
- roundShapeRadius: 20
1133
+ roundShapeRadius: ROUND_SHAPE_RADIUS
1119
1134
  },
1120
1135
  md: {
1121
1136
  height: "3.5rem",
@@ -1134,7 +1149,7 @@ var BUTTON_SIZE_TOKENS = {
1134
1149
  // 16dp
1135
1150
  pressedShapeRadius: cornerRadius.medium,
1136
1151
  // 12dp
1137
- roundShapeRadius: 28
1152
+ roundShapeRadius: ROUND_SHAPE_RADIUS
1138
1153
  },
1139
1154
  lg: {
1140
1155
  height: "6rem",
@@ -1153,7 +1168,7 @@ var BUTTON_SIZE_TOKENS = {
1153
1168
  // 28dp
1154
1169
  pressedShapeRadius: cornerRadius.large,
1155
1170
  // 16dp
1156
- roundShapeRadius: 48
1171
+ roundShapeRadius: ROUND_SHAPE_RADIUS
1157
1172
  },
1158
1173
  xl: {
1159
1174
  height: "8.5rem",
@@ -1172,7 +1187,7 @@ var BUTTON_SIZE_TOKENS = {
1172
1187
  // 28dp
1173
1188
  pressedShapeRadius: cornerRadius.large,
1174
1189
  // 16dp
1175
- roundShapeRadius: 68
1190
+ roundShapeRadius: ROUND_SHAPE_RADIUS
1176
1191
  }
1177
1192
  };
1178
1193
  var BUTTON_TYPOGRAPHY_TOKENS = {
@@ -1524,7 +1539,6 @@ var ButtonComponent = React16.forwardRef(
1524
1539
  m.button,
1525
1540
  __spreadProps(__spreadValues({
1526
1541
  ref,
1527
- layout: true,
1528
1542
  type: "button",
1529
1543
  "aria-pressed": isToggle ? isSelected : void 0,
1530
1544
  "aria-label": computedAriaLabel,