@bug-on/m3-expressive 1.2.7 → 1.3.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 (62) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/buttons.d.mts +3 -3
  3. package/dist/buttons.d.ts +3 -3
  4. package/dist/buttons.js +195 -50
  5. package/dist/buttons.js.map +1 -1
  6. package/dist/buttons.mjs +196 -51
  7. package/dist/buttons.mjs.map +1 -1
  8. package/dist/{core-D4048_K5.d.mts → core-CAU8g2HY.d.mts} +1 -1
  9. package/dist/{core-Bc5Wj_pc.d.ts → core-DRrLnsnJ.d.ts} +1 -1
  10. package/dist/core.d.mts +2 -2
  11. package/dist/core.d.ts +2 -2
  12. package/dist/core.js +159 -28
  13. package/dist/core.js.map +1 -1
  14. package/dist/core.mjs +160 -29
  15. package/dist/core.mjs.map +1 -1
  16. package/dist/feedback.d.mts +28 -6
  17. package/dist/feedback.d.ts +28 -6
  18. package/dist/feedback.js +161 -30
  19. package/dist/feedback.js.map +1 -1
  20. package/dist/feedback.mjs +162 -31
  21. package/dist/feedback.mjs.map +1 -1
  22. package/dist/forms.d.mts +3 -2
  23. package/dist/forms.d.ts +3 -2
  24. package/dist/forms.js +88 -100
  25. package/dist/forms.js.map +1 -1
  26. package/dist/forms.mjs +88 -100
  27. package/dist/forms.mjs.map +1 -1
  28. package/dist/{icon-button-CSsDmuQC.d.mts → icon-button-CqdQBsRe.d.ts} +11 -5
  29. package/dist/{icon-button-CSsDmuQC.d.ts → icon-button-USJo7AqO.d.mts} +11 -5
  30. package/dist/index.d.mts +8 -8
  31. package/dist/index.d.ts +8 -8
  32. package/dist/index.js +570 -309
  33. package/dist/index.js.map +1 -1
  34. package/dist/index.mjs +570 -310
  35. package/dist/index.mjs.map +1 -1
  36. package/dist/layout.d.mts +1 -1
  37. package/dist/layout.d.ts +1 -1
  38. package/dist/layout.js +159 -60
  39. package/dist/layout.js.map +1 -1
  40. package/dist/layout.mjs +160 -61
  41. package/dist/layout.mjs.map +1 -1
  42. package/dist/{md3-Dty-Qcad.d.mts → md3-D0_Z7IXj.d.mts} +9 -1
  43. package/dist/{md3-Dty-Qcad.d.ts → md3-D0_Z7IXj.d.ts} +9 -1
  44. package/dist/navigation.d.mts +103 -33
  45. package/dist/navigation.d.ts +103 -33
  46. package/dist/navigation.js +443 -152
  47. package/dist/navigation.js.map +1 -1
  48. package/dist/navigation.mjs +444 -154
  49. package/dist/navigation.mjs.map +1 -1
  50. package/dist/overlays.js +159 -28
  51. package/dist/overlays.js.map +1 -1
  52. package/dist/overlays.mjs +160 -29
  53. package/dist/overlays.mjs.map +1 -1
  54. package/dist/pickers.js +159 -28
  55. package/dist/pickers.js.map +1 -1
  56. package/dist/pickers.mjs +160 -29
  57. package/dist/pickers.mjs.map +1 -1
  58. package/dist/{split-button-trailing-uncheckable-DPJL3bO6.d.mts → split-button-trailing-uncheckable-CIVEYgjY.d.mts} +12 -7
  59. package/dist/{split-button-trailing-uncheckable--BhNTEJw.d.ts → split-button-trailing-uncheckable-DTQJjzsB.d.ts} +12 -7
  60. package/dist/{text-field-DWC7qOvp.d.mts → text-field-CiOmDM_8.d.ts} +52 -51
  61. package/dist/{text-field-DWC7qOvp.d.ts → text-field-Ear3hCSq.d.mts} +52 -51
  62. package/package.json +3 -3
@@ -46,12 +46,14 @@ interface BadgedBoxProps {
46
46
  */
47
47
  className?: string;
48
48
  /**
49
- * Explicitly override size detection for badge positioning.
50
- * - `'small'` BadgeOffset = 6dp translate(50%, -50%)
51
- * - `'large'` → HOffset=12dp/VOffset=14dp → translate(35%, -35%)
49
+ /**
50
+ * Explicitly override size detection for badge positioning per MD3 specification.
51
+ * - `'sm'` → Small badge (dot): BadgeOffset = 6dp → translate(50%, -50%)
52
+ * - `'lg'` → Large badge (text): HOffset=12dp/VOffset=14dp → translate(35%, -35%)
52
53
  * When omitted, BadgedBox auto-detects by inspecting `badge` children prop.
54
+ * @default auto-detected
53
55
  */
54
- badgeSize?: "small" | "large";
56
+ size?: "sm" | "lg";
55
57
  }
56
58
  /**
57
59
  * MD3 Expressive Badge — dynamic status indicator.
@@ -84,7 +86,7 @@ declare const Badge: React$1.NamedExoticComponent<BadgeProps & React$1.RefAttrib
84
86
  * → translate(35%, -35%)
85
87
  *
86
88
  * Auto-detects badge size by inspecting the badge element's children prop,
87
- * or accepts an explicit `badgeSize` override.
89
+ * or accepts an explicit `size` override.
88
90
  *
89
91
  * @example
90
92
  * ```tsx
@@ -99,7 +101,7 @@ declare const Badge: React$1.NamedExoticComponent<BadgeProps & React$1.RefAttrib
99
101
  * </BadgedBox>
100
102
  * ```
101
103
  */
102
- declare function BadgedBox({ badge, children, className, badgeSize, }: BadgedBoxProps): react_jsx_runtime.JSX.Element;
104
+ declare function BadgedBox({ badge, children, className, size, }: BadgedBoxProps): react_jsx_runtime.JSX.Element;
103
105
 
104
106
  interface LoadingIndicatorProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
105
107
  /**
@@ -279,6 +281,14 @@ interface CircularProgressProps extends ProgressBaseProps {
279
281
  * - `wavy`: Oscillating wavy line pattern.
280
282
  */
281
283
  shape?: "flat" | "wavy";
284
+ /**
285
+ * Shape profile of the background track in Determinate mode.
286
+ * - `flat`: Smooth circular ring line (default)
287
+ * - `wavy`: Matching wave line contour as the active indicator
288
+ *
289
+ * @default "flat"
290
+ */
291
+ trackShape?: "flat" | "wavy";
282
292
  /**
283
293
  * Wave amplitude profile for `wavy` circular indicators.
284
294
  */
@@ -287,6 +297,10 @@ interface CircularProgressProps extends ProgressBaseProps {
287
297
  wavelength?: number;
288
298
  /** Gap distance separating line ends. */
289
299
  gapSize?: number;
300
+ /**
301
+ * Speed multiplier for wavy animation ripples. Defaults to `1`.
302
+ */
303
+ waveSpeed?: number;
290
304
  /**
291
305
  * Speed multiplier for Indeterminate circular crawler rotation.
292
306
  */
@@ -314,6 +328,14 @@ interface CircularProgressProps extends ProgressBaseProps {
314
328
  * @default 0.8 (matching M3 Kotlin)
315
329
  */
316
330
  maxProgress?: number;
331
+ /**
332
+ * Configuration for wave damping near edge thresholds (<= 10% or >= 95%) in Determinate Wavy mode.
333
+ * - `md3`: Smoothly flattens wave amplitude to zero near edges (Google MD3 standard: Flat → Wavy → Flat).
334
+ * - `continuous`: Ignores damping, preserving wave motion across all percentages (0–100%).
335
+ *
336
+ * @default "md3"
337
+ */
338
+ determinateAnimation?: "md3" | "continuous";
317
339
  /**
318
340
  * Amplitude range for wavy indeterminate mode as `[min, max]`.
319
341
  * The amplitude modulates between these values based on the arc length.
@@ -46,12 +46,14 @@ interface BadgedBoxProps {
46
46
  */
47
47
  className?: string;
48
48
  /**
49
- * Explicitly override size detection for badge positioning.
50
- * - `'small'` BadgeOffset = 6dp translate(50%, -50%)
51
- * - `'large'` → HOffset=12dp/VOffset=14dp → translate(35%, -35%)
49
+ /**
50
+ * Explicitly override size detection for badge positioning per MD3 specification.
51
+ * - `'sm'` → Small badge (dot): BadgeOffset = 6dp → translate(50%, -50%)
52
+ * - `'lg'` → Large badge (text): HOffset=12dp/VOffset=14dp → translate(35%, -35%)
52
53
  * When omitted, BadgedBox auto-detects by inspecting `badge` children prop.
54
+ * @default auto-detected
53
55
  */
54
- badgeSize?: "small" | "large";
56
+ size?: "sm" | "lg";
55
57
  }
56
58
  /**
57
59
  * MD3 Expressive Badge — dynamic status indicator.
@@ -84,7 +86,7 @@ declare const Badge: React$1.NamedExoticComponent<BadgeProps & React$1.RefAttrib
84
86
  * → translate(35%, -35%)
85
87
  *
86
88
  * Auto-detects badge size by inspecting the badge element's children prop,
87
- * or accepts an explicit `badgeSize` override.
89
+ * or accepts an explicit `size` override.
88
90
  *
89
91
  * @example
90
92
  * ```tsx
@@ -99,7 +101,7 @@ declare const Badge: React$1.NamedExoticComponent<BadgeProps & React$1.RefAttrib
99
101
  * </BadgedBox>
100
102
  * ```
101
103
  */
102
- declare function BadgedBox({ badge, children, className, badgeSize, }: BadgedBoxProps): react_jsx_runtime.JSX.Element;
104
+ declare function BadgedBox({ badge, children, className, size, }: BadgedBoxProps): react_jsx_runtime.JSX.Element;
103
105
 
104
106
  interface LoadingIndicatorProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>, "children"> {
105
107
  /**
@@ -279,6 +281,14 @@ interface CircularProgressProps extends ProgressBaseProps {
279
281
  * - `wavy`: Oscillating wavy line pattern.
280
282
  */
281
283
  shape?: "flat" | "wavy";
284
+ /**
285
+ * Shape profile of the background track in Determinate mode.
286
+ * - `flat`: Smooth circular ring line (default)
287
+ * - `wavy`: Matching wave line contour as the active indicator
288
+ *
289
+ * @default "flat"
290
+ */
291
+ trackShape?: "flat" | "wavy";
282
292
  /**
283
293
  * Wave amplitude profile for `wavy` circular indicators.
284
294
  */
@@ -287,6 +297,10 @@ interface CircularProgressProps extends ProgressBaseProps {
287
297
  wavelength?: number;
288
298
  /** Gap distance separating line ends. */
289
299
  gapSize?: number;
300
+ /**
301
+ * Speed multiplier for wavy animation ripples. Defaults to `1`.
302
+ */
303
+ waveSpeed?: number;
290
304
  /**
291
305
  * Speed multiplier for Indeterminate circular crawler rotation.
292
306
  */
@@ -314,6 +328,14 @@ interface CircularProgressProps extends ProgressBaseProps {
314
328
  * @default 0.8 (matching M3 Kotlin)
315
329
  */
316
330
  maxProgress?: number;
331
+ /**
332
+ * Configuration for wave damping near edge thresholds (<= 10% or >= 95%) in Determinate Wavy mode.
333
+ * - `md3`: Smoothly flattens wave amplitude to zero near edges (Google MD3 standard: Flat → Wavy → Flat).
334
+ * - `continuous`: Ignores damping, preserving wave motion across all percentages (0–100%).
335
+ *
336
+ * @default "md3"
337
+ */
338
+ determinateAnimation?: "md3" | "continuous";
317
339
  /**
318
340
  * Amplitude range for wavy indeterminate mode as `[min, max]`.
319
341
  * The amplitude modulates between these values based on the arc length.
package/dist/feedback.js CHANGED
@@ -160,9 +160,9 @@ function BadgedBox({
160
160
  badge,
161
161
  children,
162
162
  className,
163
- badgeSize
163
+ size
164
164
  }) {
165
- const isLarge = badgeSize ? badgeSize === "large" : detectBadgeHasContent(badge);
165
+ const isLarge = size ? size === "lg" : detectBadgeHasContent(badge);
166
166
  const badgePositionClass = isLarge ? "translate-x-[35%] -translate-y-[35%]" : "translate-x-[50%] -translate-y-[50%]";
167
167
  return /* @__PURE__ */ jsxRuntime.jsxs("span", { className: cn("relative inline-flex", className), children: [
168
168
  children,
@@ -363,7 +363,7 @@ LoadingIndicator.displayName = "LoadingIndicator";
363
363
  function easeInOutCubic(x) {
364
364
  return x < 0.5 ? 4 * x * x * x : 1 - (-2 * x + 2) ** 3 / 2;
365
365
  }
366
- function generateWavyCircularPath(center, radius, amplitude, wavelength) {
366
+ function generateWavyCircularPath(center, radius, amplitude, wavelength, phase = 0) {
367
367
  const circumference = 2 * Math.PI * radius;
368
368
  const numWaves = Math.max(
369
369
  3,
@@ -371,8 +371,8 @@ function generateWavyCircularPath(center, radius, amplitude, wavelength) {
371
371
  );
372
372
  const steps = numWaves * 4;
373
373
  const dt = 2 * Math.PI / steps;
374
- const rAt = (t) => radius + amplitude * Math.sin(numWaves * t);
375
- const drAt = (t) => amplitude * numWaves * Math.cos(numWaves * t);
374
+ const rAt = (t) => radius + amplitude * Math.sin(numWaves * t + phase);
375
+ const drAt = (t) => amplitude * numWaves * Math.cos(numWaves * t + phase);
376
376
  const xAt = (t) => center + rAt(t) * Math.cos(t);
377
377
  const yAt = (t) => center + rAt(t) * Math.sin(t);
378
378
  const dxAt = (t) => drAt(t) * Math.cos(t) - rAt(t) * Math.sin(t);
@@ -437,15 +437,18 @@ var CircularProgress = React3__namespace.forwardRef(
437
437
  size = 48,
438
438
  trackHeight = 4,
439
439
  shape = "flat",
440
+ trackShape = "flat",
440
441
  amplitude,
441
442
  wavelength,
442
443
  gapSize = 4,
444
+ waveSpeed = 1,
443
445
  crawlerSpeed = 1,
444
446
  color,
445
447
  trackColor,
446
448
  showTrack = "auto",
447
449
  minProgress = DEFAULT_MIN_PROGRESS,
448
450
  maxProgress = DEFAULT_MAX_PROGRESS,
451
+ determinateAnimation = "md3",
449
452
  amplitudeRange,
450
453
  className,
451
454
  "aria-label": ariaLabel
@@ -454,15 +457,18 @@ var CircularProgress = React3__namespace.forwardRef(
454
457
  "size",
455
458
  "trackHeight",
456
459
  "shape",
460
+ "trackShape",
457
461
  "amplitude",
458
462
  "wavelength",
459
463
  "gapSize",
464
+ "waveSpeed",
460
465
  "crawlerSpeed",
461
466
  "color",
462
467
  "trackColor",
463
468
  "showTrack",
464
469
  "minProgress",
465
470
  "maxProgress",
471
+ "determinateAnimation",
466
472
  "amplitudeRange",
467
473
  "className",
468
474
  "aria-label"
@@ -475,6 +481,7 @@ var CircularProgress = React3__namespace.forwardRef(
475
481
  const bgTrackColor = trackColor || "var(--md-sys-color-indicator-track)";
476
482
  const isWavy = shape === "wavy";
477
483
  const shouldShowIndeterminateTrack = showTrack === "auto" ? isWavy : showTrack;
484
+ const shouldShowDeterminateTrack = showTrack === "auto" ? true : showTrack;
478
485
  const BASELINE_SIZE = 48;
479
486
  const scaleFactor = size / BASELINE_SIZE;
480
487
  const effectiveAmplitude = React3__namespace.useMemo(
@@ -507,19 +514,50 @@ var CircularProgress = React3__namespace.forwardRef(
507
514
  const trackOffset = isDeterminate ? activeAngularFraction + gapForTrack : 0;
508
515
  const trackLength = isDeterminate ? Math.max(1e-3, 1 - activeAngularFraction - 2 * gapForTrack) : 1;
509
516
  const ActiveCircleElem = react.m.circle;
510
- const ActivePathElem = react.m.path;
511
517
  const indeterminateSvgRef = React3__namespace.useRef(null);
512
518
  const indeterminateTrackRef = React3__namespace.useRef(null);
513
519
  const indeterminateActiveRef = React3__namespace.useRef(null);
514
520
  const indeterminateWavyTrackPathRef = React3__namespace.useRef(null);
515
521
  const indeterminateWavyActivePathRef = React3__namespace.useRef(null);
522
+ const determinateWavyActivePathRef = React3__namespace.useRef(null);
523
+ const determinateWavyTrackPathRef = React3__namespace.useRef(null);
516
524
  const cachedPathLengthRef = React3__namespace.useRef(0);
525
+ const fractionMV = react.useMotionValue(isDeterminate ? clampedValue / 100 : 0);
526
+ const amplitudeMV = react.useMotionValue(isWavy ? effectiveAmplitude : 0);
527
+ React3__namespace.useEffect(() => {
528
+ if (isDeterminate) {
529
+ react.animate(fractionMV, clampedValue / 100, {
530
+ duration: 0.4,
531
+ ease: [0.2, 0, 0, 1]
532
+ });
533
+ }
534
+ }, [clampedValue, isDeterminate, fractionMV]);
535
+ React3__namespace.useEffect(() => {
536
+ if (!isDeterminate || !isWavy) return;
537
+ const fraction = clampedValue / 100;
538
+ let targetAmp = effectiveAmplitude;
539
+ if (determinateAnimation === "md3") {
540
+ targetAmp = fraction <= 0.1 || fraction >= 0.95 ? 0 : effectiveAmplitude;
541
+ }
542
+ react.animate(amplitudeMV, targetAmp, {
543
+ type: "spring",
544
+ bounce: 0,
545
+ duration: 0.5
546
+ });
547
+ }, [
548
+ clampedValue,
549
+ isDeterminate,
550
+ isWavy,
551
+ effectiveAmplitude,
552
+ amplitudeMV,
553
+ determinateAnimation
554
+ ]);
517
555
  React3__namespace.useLayoutEffect(() => {
518
556
  if (!isWavy || !wavyActivePath) {
519
557
  cachedPathLengthRef.current = circumference;
520
558
  return;
521
559
  }
522
- const el = indeterminateActiveRef.current;
560
+ const el = indeterminateActiveRef.current || determinateWavyActivePathRef.current;
523
561
  if (el && "getTotalLength" in el) {
524
562
  try {
525
563
  const len = el.getTotalLength();
@@ -533,7 +571,65 @@ var CircularProgress = React3__namespace.forwardRef(
533
571
  cachedPathLengthRef.current = circumference;
534
572
  }, [isWavy, circumference, wavyActivePath]);
535
573
  react.useAnimationFrame((time) => {
536
- if (isDeterminate) return;
574
+ const safeWaveSpeed = Math.max(0.1, waveSpeed);
575
+ const wavePhase = time / 1e3 * safeWaveSpeed * 2 * Math.PI;
576
+ if (isDeterminate) {
577
+ if (isWavy) {
578
+ const currentAmp = amplitudeMV.get();
579
+ const dynamicPath = generateWavyCircularPath(
580
+ center,
581
+ radius,
582
+ currentAmp,
583
+ effectiveWavelength,
584
+ wavePhase
585
+ );
586
+ if (determinateWavyActivePathRef.current) {
587
+ determinateWavyActivePathRef.current.setAttribute("d", dynamicPath);
588
+ }
589
+ if (trackShape === "wavy" && determinateWavyTrackPathRef.current) {
590
+ determinateWavyTrackPathRef.current.setAttribute("d", dynamicPath);
591
+ }
592
+ const pathEl = determinateWavyActivePathRef.current;
593
+ let totalLen = cachedPathLengthRef.current || circumference;
594
+ if (pathEl) {
595
+ try {
596
+ const len = pathEl.getTotalLength();
597
+ if (len > 0) totalLen = len;
598
+ } catch (e) {
599
+ }
600
+ }
601
+ const activeFrac = Math.max(0, Math.min(1, fractionMV.get()));
602
+ const activeLen = totalLen * activeFrac;
603
+ if (determinateWavyActivePathRef.current) {
604
+ determinateWavyActivePathRef.current.setAttribute(
605
+ "stroke-dasharray",
606
+ `${activeLen} ${totalLen}`
607
+ );
608
+ determinateWavyActivePathRef.current.setAttribute(
609
+ "stroke-dashoffset",
610
+ "0"
611
+ );
612
+ }
613
+ if (shouldShowDeterminateTrack && trackShape === "wavy" && determinateWavyTrackPathRef.current) {
614
+ const gapFrac = (gapSize + trackHeight) / totalLen;
615
+ const trackStartFrac = activeFrac + gapFrac;
616
+ const trackLen = Math.max(
617
+ 1e-3,
618
+ totalLen * (1 - activeFrac - 2 * gapFrac)
619
+ );
620
+ const trackOff = -totalLen * trackStartFrac;
621
+ determinateWavyTrackPathRef.current.setAttribute(
622
+ "stroke-dasharray",
623
+ `${trackLen} ${totalLen}`
624
+ );
625
+ determinateWavyTrackPathRef.current.setAttribute(
626
+ "stroke-dashoffset",
627
+ `${trackOff}`
628
+ );
629
+ }
630
+ }
631
+ return;
632
+ }
537
633
  const safeCrawlerSpeed = Math.max(0.1, crawlerSpeed);
538
634
  const scaledTime = time * safeCrawlerSpeed;
539
635
  const globalCycle = scaledTime % GLOBAL_ROTATION_DURATION;
@@ -568,7 +664,8 @@ var CircularProgress = React3__namespace.forwardRef(
568
664
  center,
569
665
  radius,
570
666
  currentAmplitude,
571
- effectiveWavelength
667
+ effectiveWavelength,
668
+ wavePhase
572
669
  );
573
670
  if (indeterminateWavyActivePathRef.current) {
574
671
  indeterminateWavyActivePathRef.current.setAttribute("d", dynamicPath);
@@ -663,7 +760,7 @@ var CircularProgress = React3__namespace.forwardRef(
663
760
  style: { width: size, height: size }
664
761
  }, restProps), {
665
762
  children: /* @__PURE__ */ jsxRuntime.jsxs(react.LazyMotion, { features: react.domMax, strict: true, children: [
666
- /* @__PURE__ */ jsxRuntime.jsxs(
763
+ /* @__PURE__ */ jsxRuntime.jsx(
667
764
  "svg",
668
765
  {
669
766
  width: size,
@@ -671,8 +768,18 @@ var CircularProgress = React3__namespace.forwardRef(
671
768
  viewBox: `0 0 ${size} ${size}`,
672
769
  "aria-hidden": "true",
673
770
  style: { transform: "rotate(-90deg)", overflow: "visible" },
674
- children: [
675
- isDeterminate ? /* @__PURE__ */ jsxRuntime.jsx(
771
+ children: isDeterminate ? isWavy ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
772
+ shouldShowDeterminateTrack && (trackShape === "wavy" ? /* @__PURE__ */ jsxRuntime.jsx(
773
+ "path",
774
+ {
775
+ ref: determinateWavyTrackPathRef,
776
+ d: wavyActivePath != null ? wavyActivePath : "",
777
+ fill: "none",
778
+ stroke: bgTrackColor,
779
+ strokeWidth: trackHeight,
780
+ strokeLinecap: "round"
781
+ }
782
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
676
783
  react.m.circle,
677
784
  {
678
785
  cx: center,
@@ -681,28 +788,52 @@ var CircularProgress = React3__namespace.forwardRef(
681
788
  fill: "none",
682
789
  stroke: bgTrackColor,
683
790
  strokeWidth: trackHeight,
684
- initial: { pathLength: trackLength, pathOffset: trackOffset },
685
- animate: { pathLength: trackLength, pathOffset: trackOffset },
791
+ initial: {
792
+ pathLength: trackLength,
793
+ pathOffset: trackOffset
794
+ },
795
+ animate: {
796
+ pathLength: trackLength,
797
+ pathOffset: trackOffset
798
+ },
686
799
  transition: { duration: 0.4, ease: [0.2, 0, 0, 1] },
687
800
  strokeLinecap: "round"
688
801
  }
689
- ) : null,
690
- isDeterminate && (isWavy ? /* @__PURE__ */ jsxRuntime.jsx(
691
- ActivePathElem,
802
+ )),
803
+ /* @__PURE__ */ jsxRuntime.jsx(
804
+ "path",
692
805
  {
806
+ ref: determinateWavyActivePathRef,
693
807
  d: wavyActivePath != null ? wavyActivePath : "",
694
808
  fill: "none",
695
809
  stroke: activeColor,
696
810
  strokeWidth: trackHeight,
697
- strokeLinecap: "round",
698
- initial: { pathLength: 0 },
699
- animate: { pathLength: clampedValue / 100 },
700
- transition: {
701
- duration: 0.4,
702
- ease: [0.2, 0, 0, 1]
703
- }
811
+ strokeLinecap: "round"
704
812
  }
705
- ) : /* @__PURE__ */ jsxRuntime.jsx(
813
+ )
814
+ ] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
815
+ /* @__PURE__ */ jsxRuntime.jsx(
816
+ react.m.circle,
817
+ {
818
+ cx: center,
819
+ cy: center,
820
+ r: radius,
821
+ fill: "none",
822
+ stroke: bgTrackColor,
823
+ strokeWidth: trackHeight,
824
+ initial: {
825
+ pathLength: trackLength,
826
+ pathOffset: trackOffset
827
+ },
828
+ animate: {
829
+ pathLength: trackLength,
830
+ pathOffset: trackOffset
831
+ },
832
+ transition: { duration: 0.4, ease: [0.2, 0, 0, 1] },
833
+ strokeLinecap: "round"
834
+ }
835
+ ),
836
+ /* @__PURE__ */ jsxRuntime.jsx(
706
837
  ActiveCircleElem,
707
838
  {
708
839
  cx: center,
@@ -719,8 +850,8 @@ var CircularProgress = React3__namespace.forwardRef(
719
850
  ease: [0.2, 0, 0, 1]
720
851
  }
721
852
  }
722
- ))
723
- ]
853
+ )
854
+ ] }) : null
724
855
  }
725
856
  ),
726
857
  !isDeterminate && /* @__PURE__ */ jsxRuntime.jsx(
@@ -1488,7 +1619,7 @@ var IconButtonComponent = React3__namespace.forwardRef(
1488
1619
  variant = "default",
1489
1620
  colorStyle = "standard",
1490
1621
  size = "sm",
1491
- widthVariant = "default",
1622
+ width = "default",
1492
1623
  shape = "round",
1493
1624
  selected,
1494
1625
  selectedIcon,
@@ -1506,7 +1637,7 @@ var IconButtonComponent = React3__namespace.forwardRef(
1506
1637
  "variant",
1507
1638
  "colorStyle",
1508
1639
  "size",
1509
- "widthVariant",
1640
+ "width",
1510
1641
  "shape",
1511
1642
  "selected",
1512
1643
  "selectedIcon",
@@ -1551,7 +1682,7 @@ var IconButtonComponent = React3__namespace.forwardRef(
1551
1682
  const iconPx = iconSize != null ? iconSize : defaultIconPx;
1552
1683
  const isCustomSize = iconSize != null && iconSize !== "inherit";
1553
1684
  const heightClass = (_c = SIZE_HEIGHT_STYLES[size]) != null ? _c : SIZE_HEIGHT_STYLES.sm;
1554
- const widthClass = (_e = ((_d = WIDTH_SIZE_STYLES[size]) != null ? _d : WIDTH_SIZE_STYLES.sm)[widthVariant]) != null ? _e : WIDTH_SIZE_STYLES.sm.default;
1685
+ const widthClass = (_e = ((_d = WIDTH_SIZE_STYLES[size]) != null ? _d : WIDTH_SIZE_STYLES.sm)[width]) != null ? _e : WIDTH_SIZE_STYLES.sm.default;
1555
1686
  const needsTouchTarget = size === "xs" || size === "sm";
1556
1687
  const { ripples, onPointerDown, removeRipple } = useRippleState({
1557
1688
  disabled: loading