@bug-on/m3-expressive 1.2.6 → 1.3.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 (54) 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 +230 -82
  5. package/dist/buttons.js.map +1 -1
  6. package/dist/buttons.mjs +231 -83
  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 +300 -152
  13. package/dist/core.js.map +1 -1
  14. package/dist/core.mjs +283 -135
  15. package/dist/core.mjs.map +1 -1
  16. package/dist/feedback.d.mts +40 -6
  17. package/dist/feedback.d.ts +40 -6
  18. package/dist/feedback.js +313 -165
  19. package/dist/feedback.js.map +1 -1
  20. package/dist/feedback.mjs +291 -143
  21. package/dist/feedback.mjs.map +1 -1
  22. package/dist/{icon-button-CSsDmuQC.d.mts → icon-button-CqdQBsRe.d.ts} +11 -5
  23. package/dist/{icon-button-CSsDmuQC.d.ts → icon-button-USJo7AqO.d.mts} +11 -5
  24. package/dist/index.d.mts +6 -6
  25. package/dist/index.d.ts +6 -6
  26. package/dist/index.js +511 -235
  27. package/dist/index.js.map +1 -1
  28. package/dist/index.mjs +511 -236
  29. package/dist/index.mjs.map +1 -1
  30. package/dist/layout.d.mts +1 -1
  31. package/dist/layout.d.ts +1 -1
  32. package/dist/layout.js +221 -105
  33. package/dist/layout.js.map +1 -1
  34. package/dist/layout.mjs +222 -106
  35. package/dist/layout.mjs.map +1 -1
  36. package/dist/{md3-Dty-Qcad.d.mts → md3-D0_Z7IXj.d.mts} +9 -1
  37. package/dist/{md3-Dty-Qcad.d.ts → md3-D0_Z7IXj.d.ts} +9 -1
  38. package/dist/navigation.d.mts +103 -33
  39. package/dist/navigation.d.ts +103 -33
  40. package/dist/navigation.js +507 -199
  41. package/dist/navigation.js.map +1 -1
  42. package/dist/navigation.mjs +508 -201
  43. package/dist/navigation.mjs.map +1 -1
  44. package/dist/overlays.js +354 -206
  45. package/dist/overlays.js.map +1 -1
  46. package/dist/overlays.mjs +317 -169
  47. package/dist/overlays.mjs.map +1 -1
  48. package/dist/pickers.js +362 -214
  49. package/dist/pickers.js.map +1 -1
  50. package/dist/pickers.mjs +330 -182
  51. package/dist/pickers.mjs.map +1 -1
  52. package/dist/{split-button-trailing-uncheckable-DPJL3bO6.d.mts → split-button-trailing-uncheckable-26qlZvKT.d.mts} +10 -7
  53. package/dist/{split-button-trailing-uncheckable--BhNTEJw.d.ts → split-button-trailing-uncheckable-CXUVrH64.d.ts} +10 -7
  54. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @bug-on/m3-expressive
2
2
 
3
+ ## 1.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - dbcb09f: Add fading blur mask & API refinements
8
+
9
+ ## 1.2.7
10
+
11
+ ### Patch Changes
12
+
13
+ - 81a5076: Fix issues Circular Indeterminate do not work.
14
+
3
15
  ## 1.2.6
4
16
 
5
17
  ### Patch Changes
@@ -1,7 +1,7 @@
1
- export { B as BUTTON_COLOR_TOKENS, a as BUTTON_SIZE_TOKENS, b as BaseButtonProps, c as Button, d as ButtonDistribute, e as ButtonDistributeProps, f as ButtonGroup, g as ButtonGroupOrientation, h as ButtonGroupProps, i as ButtonGroupVariant, j as ButtonProps, D as DistributeMode, E as ElevatedSplitButtonLeading, k as ElevatedSplitButtonTrailing, l as ElevatedSplitButtonTrailingUncheckable, m as ExtendedFAB, n as ExtendedFABProps, F as FAB, o as FABMenu, p as FABMenuItem, q as FABMenuItemData, r as FABMenuItemProps, s as FABMenuProps, t as FABPosition, u as FABPositionProps, v as FABProps, w as FilledSplitButtonLeading, x as FilledSplitButtonTrailing, y as FilledSplitButtonTrailingUncheckable, O as OutlinedSplitButtonLeading, z as OutlinedSplitButtonTrailing, A as OutlinedSplitButtonTrailingUncheckable, S as SplitButtonLayout, C as SplitButtonLayoutProps, G as SplitButtonLeading, H as SplitButtonLeadingProps, I as SplitButtonSize, V as SplitButtonSizeTokens, J as SplitButtonTrailing, K as SplitButtonTrailingProps, L as SplitButtonTrailingUncheckable, M as SplitButtonTrailingUncheckableProps, N as SplitButtonVariant, T as ToggleFAB, P as ToggleFABProps, Q as TonalSplitButtonLeading, R as TonalSplitButtonTrailing, U as TonalSplitButtonTrailingUncheckable } from './split-button-trailing-uncheckable-DPJL3bO6.mjs';
1
+ export { B as BUTTON_COLOR_TOKENS, a as BUTTON_SIZE_TOKENS, b as BaseButtonProps, c as Button, d as ButtonDistribute, e as ButtonDistributeProps, f as ButtonGroup, g as ButtonGroupOrientation, h as ButtonGroupProps, i as ButtonGroupVariant, j as ButtonProps, D as DistributeMode, E as ElevatedSplitButtonLeading, k as ElevatedSplitButtonTrailing, l as ElevatedSplitButtonTrailingUncheckable, m as ExtendedFAB, n as ExtendedFABProps, F as FAB, o as FABMenu, p as FABMenuItem, q as FABMenuItemData, r as FABMenuItemProps, s as FABMenuProps, t as FABPosition, u as FABPositionProps, v as FABProps, w as FilledSplitButtonLeading, x as FilledSplitButtonTrailing, y as FilledSplitButtonTrailingUncheckable, O as OutlinedSplitButtonLeading, z as OutlinedSplitButtonTrailing, A as OutlinedSplitButtonTrailingUncheckable, S as SplitButtonLayout, C as SplitButtonLayoutProps, G as SplitButtonLeading, H as SplitButtonLeadingProps, I as SplitButtonSize, V as SplitButtonSizeTokens, J as SplitButtonTrailing, K as SplitButtonTrailingProps, L as SplitButtonTrailingUncheckable, M as SplitButtonTrailingUncheckableProps, N as SplitButtonVariant, T as ToggleFAB, P as ToggleFABProps, Q as TonalSplitButtonLeading, R as TonalSplitButtonTrailing, U as TonalSplitButtonTrailingUncheckable } from './split-button-trailing-uncheckable-26qlZvKT.mjs';
2
2
  import { Transition } from 'motion/react';
3
- import { b as MD3Size } from './md3-Dty-Qcad.mjs';
4
- export { B as BaseIconButtonProps, I as IconButton, a as IconButtonProps } from './icon-button-CSsDmuQC.mjs';
3
+ import { c as MD3Size } from './md3-D0_Z7IXj.mjs';
4
+ export { B as BaseIconButtonProps, I as IconButton, a as IconButtonProps } from './icon-button-USJo7AqO.mjs';
5
5
  import * as class_variance_authority_types from 'class-variance-authority/types';
6
6
  import 'react';
7
7
  import 'react/jsx-runtime';
package/dist/buttons.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- export { B as BUTTON_COLOR_TOKENS, a as BUTTON_SIZE_TOKENS, b as BaseButtonProps, c as Button, d as ButtonDistribute, e as ButtonDistributeProps, f as ButtonGroup, g as ButtonGroupOrientation, h as ButtonGroupProps, i as ButtonGroupVariant, j as ButtonProps, D as DistributeMode, E as ElevatedSplitButtonLeading, k as ElevatedSplitButtonTrailing, l as ElevatedSplitButtonTrailingUncheckable, m as ExtendedFAB, n as ExtendedFABProps, F as FAB, o as FABMenu, p as FABMenuItem, q as FABMenuItemData, r as FABMenuItemProps, s as FABMenuProps, t as FABPosition, u as FABPositionProps, v as FABProps, w as FilledSplitButtonLeading, x as FilledSplitButtonTrailing, y as FilledSplitButtonTrailingUncheckable, O as OutlinedSplitButtonLeading, z as OutlinedSplitButtonTrailing, A as OutlinedSplitButtonTrailingUncheckable, S as SplitButtonLayout, C as SplitButtonLayoutProps, G as SplitButtonLeading, H as SplitButtonLeadingProps, I as SplitButtonSize, V as SplitButtonSizeTokens, J as SplitButtonTrailing, K as SplitButtonTrailingProps, L as SplitButtonTrailingUncheckable, M as SplitButtonTrailingUncheckableProps, N as SplitButtonVariant, T as ToggleFAB, P as ToggleFABProps, Q as TonalSplitButtonLeading, R as TonalSplitButtonTrailing, U as TonalSplitButtonTrailingUncheckable } from './split-button-trailing-uncheckable--BhNTEJw.js';
1
+ export { B as BUTTON_COLOR_TOKENS, a as BUTTON_SIZE_TOKENS, b as BaseButtonProps, c as Button, d as ButtonDistribute, e as ButtonDistributeProps, f as ButtonGroup, g as ButtonGroupOrientation, h as ButtonGroupProps, i as ButtonGroupVariant, j as ButtonProps, D as DistributeMode, E as ElevatedSplitButtonLeading, k as ElevatedSplitButtonTrailing, l as ElevatedSplitButtonTrailingUncheckable, m as ExtendedFAB, n as ExtendedFABProps, F as FAB, o as FABMenu, p as FABMenuItem, q as FABMenuItemData, r as FABMenuItemProps, s as FABMenuProps, t as FABPosition, u as FABPositionProps, v as FABProps, w as FilledSplitButtonLeading, x as FilledSplitButtonTrailing, y as FilledSplitButtonTrailingUncheckable, O as OutlinedSplitButtonLeading, z as OutlinedSplitButtonTrailing, A as OutlinedSplitButtonTrailingUncheckable, S as SplitButtonLayout, C as SplitButtonLayoutProps, G as SplitButtonLeading, H as SplitButtonLeadingProps, I as SplitButtonSize, V as SplitButtonSizeTokens, J as SplitButtonTrailing, K as SplitButtonTrailingProps, L as SplitButtonTrailingUncheckable, M as SplitButtonTrailingUncheckableProps, N as SplitButtonVariant, T as ToggleFAB, P as ToggleFABProps, Q as TonalSplitButtonLeading, R as TonalSplitButtonTrailing, U as TonalSplitButtonTrailingUncheckable } from './split-button-trailing-uncheckable-CXUVrH64.js';
2
2
  import { Transition } from 'motion/react';
3
- import { b as MD3Size } from './md3-Dty-Qcad.js';
4
- export { B as BaseIconButtonProps, I as IconButton, a as IconButtonProps } from './icon-button-CSsDmuQC.js';
3
+ import { c as MD3Size } from './md3-D0_Z7IXj.js';
4
+ export { B as BaseIconButtonProps, I as IconButton, a as IconButtonProps } from './icon-button-CqdQBsRe.js';
5
5
  import * as class_variance_authority_types from 'class-variance-authority/types';
6
6
  import 'react';
7
7
  import 'react/jsx-runtime';
package/dist/buttons.js CHANGED
@@ -278,7 +278,7 @@ function generateWavyCircularPath(center, radius, amplitude, wavelength) {
278
278
  if (i === 0) d += `M ${xAt(t0).toFixed(2)} ${yAt(t0).toFixed(2)}`;
279
279
  d += ` C ${cp1x.toFixed(2)} ${cp1y.toFixed(2)}, ${cp2x.toFixed(2)} ${cp2y.toFixed(2)}, ${xAt(t1).toFixed(2)} ${yAt(t1).toFixed(2)}`;
280
280
  }
281
- return d;
281
+ return `${d} Z`;
282
282
  }
283
283
  function getSinePath(startX, endX, phase, wl, amp) {
284
284
  if (startX >= endX) return "";
@@ -310,6 +310,14 @@ function getSinePath(startX, endX, phase, wl, amp) {
310
310
  }
311
311
  return d;
312
312
  }
313
+ var GLOBAL_ROTATION_DURATION = 6e3;
314
+ var GLOBAL_ROTATION_TARGET = 1080;
315
+ var ADDITIONAL_ROTATION_CYCLE = 1500;
316
+ var ADDITIONAL_ROTATION_STEP = 90;
317
+ var ADDITIONAL_ROTATION_EASE_DURATION = 500;
318
+ var DEFAULT_MIN_PROGRESS = 0.1;
319
+ var DEFAULT_MAX_PROGRESS = 0.8;
320
+ var PROGRESS_CYCLE_DURATION = 1500;
313
321
  var CircularProgress = React16__namespace.forwardRef(
314
322
  (_a, ref) => {
315
323
  var _b = _a, {
@@ -323,6 +331,10 @@ var CircularProgress = React16__namespace.forwardRef(
323
331
  crawlerSpeed = 1,
324
332
  color,
325
333
  trackColor,
334
+ showTrack = "auto",
335
+ minProgress = DEFAULT_MIN_PROGRESS,
336
+ maxProgress = DEFAULT_MAX_PROGRESS,
337
+ amplitudeRange,
326
338
  className,
327
339
  "aria-label": ariaLabel
328
340
  } = _b, restProps = __objRest(_b, [
@@ -336,6 +348,10 @@ var CircularProgress = React16__namespace.forwardRef(
336
348
  "crawlerSpeed",
337
349
  "color",
338
350
  "trackColor",
351
+ "showTrack",
352
+ "minProgress",
353
+ "maxProgress",
354
+ "amplitudeRange",
339
355
  "className",
340
356
  "aria-label"
341
357
  ]);
@@ -346,6 +362,7 @@ var CircularProgress = React16__namespace.forwardRef(
346
362
  const activeColor = color || "var(--md-sys-color-indicator-active)";
347
363
  const bgTrackColor = trackColor || "var(--md-sys-color-indicator-track)";
348
364
  const isWavy = shape === "wavy";
365
+ const shouldShowIndeterminateTrack = showTrack === "auto" ? isWavy : showTrack;
349
366
  const BASELINE_SIZE = 48;
350
367
  const scaleFactor = size / BASELINE_SIZE;
351
368
  const effectiveAmplitude = React16__namespace.useMemo(
@@ -356,6 +373,10 @@ var CircularProgress = React16__namespace.forwardRef(
356
373
  () => wavelength != null ? wavelength : 15 * scaleFactor,
357
374
  [wavelength, scaleFactor]
358
375
  );
376
+ const resolvedAmplitudeRange = React16__namespace.useMemo(
377
+ () => amplitudeRange != null ? amplitudeRange : [0, effectiveAmplitude],
378
+ [amplitudeRange, effectiveAmplitude]
379
+ );
359
380
  const wavyActivePath = React16__namespace.useMemo(
360
381
  () => isWavy ? generateWavyCircularPath(
361
382
  center,
@@ -375,6 +396,145 @@ var CircularProgress = React16__namespace.forwardRef(
375
396
  const trackLength = isDeterminate ? Math.max(1e-3, 1 - activeAngularFraction - 2 * gapForTrack) : 1;
376
397
  const ActiveCircleElem = react.m.circle;
377
398
  const ActivePathElem = react.m.path;
399
+ const indeterminateSvgRef = React16__namespace.useRef(null);
400
+ const indeterminateTrackRef = React16__namespace.useRef(null);
401
+ const indeterminateActiveRef = React16__namespace.useRef(null);
402
+ const indeterminateWavyTrackPathRef = React16__namespace.useRef(null);
403
+ const indeterminateWavyActivePathRef = React16__namespace.useRef(null);
404
+ const cachedPathLengthRef = React16__namespace.useRef(0);
405
+ React16__namespace.useLayoutEffect(() => {
406
+ if (!isWavy || !wavyActivePath) {
407
+ cachedPathLengthRef.current = circumference;
408
+ return;
409
+ }
410
+ const el = indeterminateActiveRef.current;
411
+ if (el && "getTotalLength" in el) {
412
+ try {
413
+ const len = el.getTotalLength();
414
+ if (len > 0) {
415
+ cachedPathLengthRef.current = len;
416
+ return;
417
+ }
418
+ } catch (e) {
419
+ }
420
+ }
421
+ cachedPathLengthRef.current = circumference;
422
+ }, [isWavy, circumference, wavyActivePath]);
423
+ react.useAnimationFrame((time) => {
424
+ if (isDeterminate) return;
425
+ const safeCrawlerSpeed = Math.max(0.1, crawlerSpeed);
426
+ const scaledTime = time * safeCrawlerSpeed;
427
+ const globalCycle = scaledTime % GLOBAL_ROTATION_DURATION;
428
+ const globalAngle = globalCycle / GLOBAL_ROTATION_DURATION * GLOBAL_ROTATION_TARGET;
429
+ const additionalFullCycles = Math.floor(
430
+ scaledTime / ADDITIONAL_ROTATION_CYCLE
431
+ );
432
+ const additionalCycleTime = scaledTime % ADDITIONAL_ROTATION_CYCLE;
433
+ const additionalEaseT = Math.min(
434
+ 1,
435
+ additionalCycleTime / ADDITIONAL_ROTATION_EASE_DURATION
436
+ );
437
+ const additionalAngle = (additionalFullCycles + easeInOutCubic(additionalEaseT)) * ADDITIONAL_ROTATION_STEP;
438
+ const totalRotation = globalAngle + additionalAngle;
439
+ if (indeterminateSvgRef.current) {
440
+ indeterminateSvgRef.current.style.transform = `rotate(${totalRotation - 90}deg)`;
441
+ }
442
+ const progressFullCycle = PROGRESS_CYCLE_DURATION * 2;
443
+ const progressCycleTime = scaledTime % progressFullCycle;
444
+ let progress;
445
+ if (progressCycleTime < PROGRESS_CYCLE_DURATION) {
446
+ const t = progressCycleTime / PROGRESS_CYCLE_DURATION;
447
+ progress = minProgress + (maxProgress - minProgress) * easeInOutCubic(t);
448
+ } else {
449
+ const t = (progressCycleTime - PROGRESS_CYCLE_DURATION) / PROGRESS_CYCLE_DURATION;
450
+ progress = maxProgress - (maxProgress - minProgress) * easeInOutCubic(t);
451
+ }
452
+ if (isWavy) {
453
+ const amplitudeT = (progress - minProgress) / (maxProgress - minProgress);
454
+ const currentAmplitude = resolvedAmplitudeRange[0] + (resolvedAmplitudeRange[1] - resolvedAmplitudeRange[0]) * amplitudeT;
455
+ const dynamicPath = generateWavyCircularPath(
456
+ center,
457
+ radius,
458
+ currentAmplitude,
459
+ effectiveWavelength
460
+ );
461
+ if (indeterminateWavyActivePathRef.current) {
462
+ indeterminateWavyActivePathRef.current.setAttribute("d", dynamicPath);
463
+ }
464
+ if (indeterminateWavyTrackPathRef.current) {
465
+ indeterminateWavyTrackPathRef.current.setAttribute("d", dynamicPath);
466
+ }
467
+ const pathEl = indeterminateWavyActivePathRef.current;
468
+ let totalLen = cachedPathLengthRef.current || circumference;
469
+ if (pathEl) {
470
+ try {
471
+ const len = pathEl.getTotalLength();
472
+ if (len > 0) totalLen = len;
473
+ } catch (e) {
474
+ }
475
+ }
476
+ const gapFrac = (gapSize + trackHeight) / totalLen;
477
+ const activeLen = totalLen * progress;
478
+ const activeOff = 0;
479
+ if (indeterminateWavyActivePathRef.current) {
480
+ indeterminateWavyActivePathRef.current.setAttribute(
481
+ "stroke-dasharray",
482
+ `${activeLen} ${totalLen}`
483
+ );
484
+ indeterminateWavyActivePathRef.current.setAttribute(
485
+ "stroke-dashoffset",
486
+ `${activeOff}`
487
+ );
488
+ }
489
+ if (shouldShowIndeterminateTrack && indeterminateWavyTrackPathRef.current) {
490
+ const trackStartFrac = progress + gapFrac;
491
+ const trackLen = Math.max(
492
+ 1e-3,
493
+ totalLen * (1 - progress - 2 * gapFrac)
494
+ );
495
+ const trackOff = -totalLen * trackStartFrac;
496
+ indeterminateWavyTrackPathRef.current.setAttribute(
497
+ "stroke-dasharray",
498
+ `${trackLen} ${totalLen}`
499
+ );
500
+ indeterminateWavyTrackPathRef.current.setAttribute(
501
+ "stroke-dashoffset",
502
+ `${trackOff}`
503
+ );
504
+ }
505
+ } else {
506
+ const totalLen = circumference;
507
+ const activeLen = totalLen * progress;
508
+ const activeOff = 0;
509
+ if (indeterminateActiveRef.current) {
510
+ indeterminateActiveRef.current.setAttribute(
511
+ "stroke-dasharray",
512
+ `${activeLen} ${totalLen}`
513
+ );
514
+ indeterminateActiveRef.current.setAttribute(
515
+ "stroke-dashoffset",
516
+ `${activeOff}`
517
+ );
518
+ }
519
+ if (shouldShowIndeterminateTrack && indeterminateTrackRef.current) {
520
+ const gapFrac = (gapSize + trackHeight) / totalLen;
521
+ const trackStartFrac = progress + gapFrac;
522
+ const trackLen = Math.max(
523
+ 1e-3,
524
+ totalLen * (1 - progress - 2 * gapFrac)
525
+ );
526
+ const trackOff = -totalLen * trackStartFrac;
527
+ indeterminateTrackRef.current.setAttribute(
528
+ "stroke-dasharray",
529
+ `${trackLen} ${totalLen}`
530
+ );
531
+ indeterminateTrackRef.current.setAttribute(
532
+ "stroke-dashoffset",
533
+ `${trackOff}`
534
+ );
535
+ }
536
+ }
537
+ });
378
538
  return /* @__PURE__ */ jsxRuntime.jsx(
379
539
  "div",
380
540
  __spreadProps(__spreadValues({
@@ -451,9 +611,10 @@ var CircularProgress = React16__namespace.forwardRef(
451
611
  ]
452
612
  }
453
613
  ),
454
- !isDeterminate && /* @__PURE__ */ jsxRuntime.jsxs(
455
- react.m.svg,
614
+ !isDeterminate && /* @__PURE__ */ jsxRuntime.jsx(
615
+ "svg",
456
616
  {
617
+ ref: indeterminateSvgRef,
457
618
  width: size,
458
619
  height: size,
459
620
  viewBox: `0 0 ${size} ${size}`,
@@ -462,84 +623,60 @@ var CircularProgress = React16__namespace.forwardRef(
462
623
  position: "absolute",
463
624
  inset: 0,
464
625
  overflow: "visible",
465
- transformOrigin: "center"
626
+ transformOrigin: "center",
627
+ transform: "rotate(-90deg)"
466
628
  },
467
- animate: { rotate: [0, 360] },
468
- transition: {
469
- duration: 2 / Math.max(0.1, crawlerSpeed),
470
- repeat: Number.POSITIVE_INFINITY,
471
- ease: "linear"
472
- },
473
- children: [
474
- /* @__PURE__ */ jsxRuntime.jsx(
475
- react.m.circle,
629
+ children: isWavy ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
630
+ shouldShowIndeterminateTrack && /* @__PURE__ */ jsxRuntime.jsx(
631
+ "path",
476
632
  {
477
- cx: center,
478
- cy: center,
479
- r: radius,
633
+ ref: indeterminateWavyTrackPathRef,
634
+ d: wavyActivePath != null ? wavyActivePath : "",
480
635
  fill: "none",
481
636
  stroke: bgTrackColor,
482
637
  strokeWidth: trackHeight,
483
- strokeLinecap: "round",
484
- animate: {
485
- pathLength: [
486
- Math.max(1e-3, 0.9 - 2 * gapForTrack),
487
- Math.max(1e-3, 0.25 - 2 * gapForTrack),
488
- Math.max(1e-3, 0.9 - 2 * gapForTrack)
489
- ],
490
- pathOffset: [
491
- 0.1 + gapForTrack,
492
- 0.75 + gapForTrack,
493
- 0.1 + gapForTrack
494
- ]
495
- },
496
- transition: {
497
- duration: 2 / Math.max(0.1, crawlerSpeed),
498
- repeat: Number.POSITIVE_INFINITY,
499
- ease: [0.4, 0, 0.2, 1]
500
- }
638
+ strokeLinecap: "round"
501
639
  }
502
640
  ),
503
- isWavy ? /* @__PURE__ */ jsxRuntime.jsx(
504
- ActivePathElem,
641
+ /* @__PURE__ */ jsxRuntime.jsx(
642
+ "path",
505
643
  {
644
+ ref: indeterminateWavyActivePathRef,
506
645
  d: wavyActivePath != null ? wavyActivePath : "",
507
646
  fill: "none",
508
647
  stroke: activeColor,
509
648
  strokeWidth: trackHeight,
510
- strokeLinecap: "round",
511
- animate: {
512
- pathLength: [0.1, 0.75, 0.1],
513
- pathOffset: [0, 0.65, 1]
514
- },
515
- transition: {
516
- duration: 2 / Math.max(0.1, crawlerSpeed),
517
- repeat: Number.POSITIVE_INFINITY,
518
- ease: [0.4, 0, 0.2, 1]
519
- }
649
+ strokeLinecap: "round"
520
650
  }
521
- ) : /* @__PURE__ */ jsxRuntime.jsx(
522
- ActiveCircleElem,
651
+ )
652
+ ] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
653
+ shouldShowIndeterminateTrack && /* @__PURE__ */ jsxRuntime.jsx(
654
+ "circle",
523
655
  {
656
+ ref: indeterminateTrackRef,
657
+ cx: center,
658
+ cy: center,
659
+ r: radius,
660
+ fill: "none",
661
+ stroke: bgTrackColor,
662
+ strokeWidth: trackHeight,
663
+ strokeLinecap: "round"
664
+ }
665
+ ),
666
+ /* @__PURE__ */ jsxRuntime.jsx(
667
+ "circle",
668
+ {
669
+ ref: indeterminateActiveRef,
524
670
  cx: center,
525
671
  cy: center,
526
672
  r: radius,
527
673
  fill: "none",
528
674
  stroke: activeColor,
529
675
  strokeWidth: trackHeight,
530
- strokeLinecap: "round",
531
- animate: {
532
- pathLength: [0.1, 0.75, 0.1],
533
- pathOffset: [0, 0.65, 1]
534
- },
535
- transition: {
536
- duration: 2 / Math.max(0.1, crawlerSpeed),
537
- repeat: Number.POSITIVE_INFINITY,
538
- ease: [0.4, 0, 0.2, 1]
539
- }
676
+ strokeLinecap: "round"
540
677
  }
541
678
  )
542
- ]
679
+ ] })
543
680
  }
544
681
  )
545
682
  ] })
@@ -745,7 +882,7 @@ var WavyLinearTrack = React16__namespace.memo(function WavyLinearTrack2({
745
882
  currentAmp
746
883
  );
747
884
  } else if (fraction === 0) {
748
- activePathD = `M ${capWidth} 0 L ${capWidth + 0.01} 0`;
885
+ activePathD = "";
749
886
  }
750
887
  const trackStart = adjHead + totalGap;
751
888
  if (trackStart < width - capWidth) {
@@ -777,20 +914,20 @@ var WavyLinearTrack = React16__namespace.memo(function WavyLinearTrack2({
777
914
  activeLines.push({ tail: l1T, head: l1H });
778
915
  activeLines.push({ tail: l2T, head: l2H });
779
916
  }
780
- const segments = activeLines.map((line) => {
781
- const barTail = line.tail * width;
782
- const barHead = line.head * width;
917
+ const activeSegments = activeLines.map((line) => {
918
+ const rawTail = line.tail * width;
919
+ const rawHead = line.head * width;
783
920
  const adjTail = Math.max(
784
921
  capWidth,
785
- Math.min(width - capWidth, barTail)
922
+ Math.min(width - capWidth, rawTail)
786
923
  );
787
924
  const adjHead = Math.max(
788
925
  capWidth,
789
- Math.min(width - capWidth, barHead)
926
+ Math.min(width - capWidth, rawHead)
790
927
  );
791
928
  return { adjTail, adjHead };
792
929
  }).filter((seg) => seg.adjHead - seg.adjTail > 0.1);
793
- activePathD = segments.map(
930
+ activePathD = activeSegments.map(
794
931
  (seg) => getSinePath(
795
932
  seg.adjTail,
796
933
  seg.adjHead,
@@ -799,13 +936,24 @@ var WavyLinearTrack = React16__namespace.memo(function WavyLinearTrack2({
799
936
  currentAmp
800
937
  )
801
938
  ).join(" ");
939
+ const validActiveLines = activeLines.filter(
940
+ (line) => line.head > line.tail && line.head * width > 0 && line.tail * width < width
941
+ ).sort((a, b) => a.tail - b.tail);
802
942
  let currentTrackX = capWidth;
803
- for (const seg of segments) {
804
- const trackEnd = seg.adjTail - totalGap;
943
+ for (const line of validActiveLines) {
944
+ const blockStart = line.tail * width - totalGap;
945
+ const blockEnd = line.head * width + totalGap;
946
+ const trackEnd = Math.min(width - capWidth, blockStart);
805
947
  if (trackEnd > currentTrackX) {
806
- trackD += `${getSinePath(currentTrackX, trackEnd, phase, activeWavelength, trackAmp)} `;
948
+ trackD += `${getSinePath(
949
+ currentTrackX,
950
+ trackEnd,
951
+ phase,
952
+ activeWavelength,
953
+ trackAmp
954
+ )} `;
807
955
  }
808
- currentTrackX = Math.max(currentTrackX, seg.adjHead + totalGap);
956
+ currentTrackX = Math.max(currentTrackX, blockEnd);
809
957
  }
810
958
  if (currentTrackX < width - capWidth) {
811
959
  trackD += getSinePath(
@@ -818,9 +966,9 @@ var WavyLinearTrack = React16__namespace.memo(function WavyLinearTrack2({
818
966
  }
819
967
  }
820
968
  if (activePathRef.current)
821
- activePathRef.current.setAttribute("d", activePathD);
969
+ activePathRef.current.setAttribute("d", activePathD || "");
822
970
  if (trackPathRef.current)
823
- trackPathRef.current.setAttribute("d", trackD.trim());
971
+ trackPathRef.current.setAttribute("d", trackD.trim() || "");
824
972
  });
825
973
  return /* @__PURE__ */ jsxRuntime.jsx(
826
974
  "div",
@@ -2942,9 +3090,9 @@ var TOGGLE_FAB_COLORS = {
2942
3090
  }
2943
3091
  };
2944
3092
  var TOGGLE_FAB_SIZES = {
2945
- baseline: { sizeClass: "h-14 w-14", initialRadius: 16, finalRadius: 28 },
2946
- medium: { sizeClass: "h-20 w-20", initialRadius: 20, finalRadius: 40 },
2947
- large: { sizeClass: "h-24 w-24", initialRadius: 28, finalRadius: 48 }
3093
+ sm: { sizeClass: "h-14 w-14", initialRadius: 16, finalRadius: 28 },
3094
+ md: { sizeClass: "h-20 w-20", initialRadius: 20, finalRadius: 40 },
3095
+ lg: { sizeClass: "h-24 w-24", initialRadius: 28, finalRadius: 48 }
2948
3096
  };
2949
3097
  var MENU_ITEM_STYLES = {
2950
3098
  padding: "ps-4 pe-6",
@@ -3031,7 +3179,7 @@ var ToggleFABComponent = React16__namespace.forwardRef(
3031
3179
  onToggle,
3032
3180
  icon,
3033
3181
  colorVariant = "primary",
3034
- fabSize = "baseline",
3182
+ size = "sm",
3035
3183
  className,
3036
3184
  id,
3037
3185
  "aria-label": ariaLabel,
@@ -3040,7 +3188,7 @@ var ToggleFABComponent = React16__namespace.forwardRef(
3040
3188
  var _a, _b;
3041
3189
  const prefersReduced = react.useReducedMotion();
3042
3190
  const colors = (_a = TOGGLE_FAB_COLORS[colorVariant]) != null ? _a : TOGGLE_FAB_COLORS.primary;
3043
- const sizeTokens = (_b = TOGGLE_FAB_SIZES[fabSize]) != null ? _b : TOGGLE_FAB_SIZES.baseline;
3191
+ const sizeTokens = (_b = TOGGLE_FAB_SIZES[size]) != null ? _b : TOGGLE_FAB_SIZES.sm;
3044
3192
  const springConfig = prefersReduced ? SPRING_REDUCED : SPRING_NORMAL;
3045
3193
  const checkedProgress = react.useSpring(expanded ? 1 : 0, springConfig);
3046
3194
  React16__namespace.useEffect(() => {
@@ -3210,7 +3358,7 @@ function FABMenu({
3210
3358
  onToggle,
3211
3359
  items,
3212
3360
  colorVariant = "primary",
3213
- fabSize = "baseline",
3361
+ size = "sm",
3214
3362
  alignment = "end",
3215
3363
  className,
3216
3364
  closeOnBackdropClick = true,
@@ -3361,7 +3509,7 @@ function FABMenu({
3361
3509
  expanded,
3362
3510
  onToggle,
3363
3511
  colorVariant,
3364
- fabSize,
3512
+ size,
3365
3513
  "aria-label": ariaLabel != null ? ariaLabel : expanded ? "Close actions menu" : "Open actions menu",
3366
3514
  "aria-controls": menuId,
3367
3515
  icon: defaultFabIcon
@@ -3505,7 +3653,7 @@ var IconButtonComponent = React16__namespace.forwardRef(
3505
3653
  variant = "default",
3506
3654
  colorStyle = "standard",
3507
3655
  size = "sm",
3508
- widthVariant = "default",
3656
+ width = "default",
3509
3657
  shape = "round",
3510
3658
  selected,
3511
3659
  selectedIcon,
@@ -3523,7 +3671,7 @@ var IconButtonComponent = React16__namespace.forwardRef(
3523
3671
  "variant",
3524
3672
  "colorStyle",
3525
3673
  "size",
3526
- "widthVariant",
3674
+ "width",
3527
3675
  "shape",
3528
3676
  "selected",
3529
3677
  "selectedIcon",
@@ -3568,7 +3716,7 @@ var IconButtonComponent = React16__namespace.forwardRef(
3568
3716
  const iconPx = iconSize != null ? iconSize : defaultIconPx;
3569
3717
  const isCustomSize = iconSize != null && iconSize !== "inherit";
3570
3718
  const heightClass = (_c = SIZE_HEIGHT_STYLES[size]) != null ? _c : SIZE_HEIGHT_STYLES.sm;
3571
- const widthClass = (_e = ((_d = WIDTH_SIZE_STYLES[size]) != null ? _d : WIDTH_SIZE_STYLES.sm)[widthVariant]) != null ? _e : WIDTH_SIZE_STYLES.sm.default;
3719
+ const widthClass = (_e = ((_d = WIDTH_SIZE_STYLES[size]) != null ? _d : WIDTH_SIZE_STYLES.sm)[width]) != null ? _e : WIDTH_SIZE_STYLES.sm.default;
3572
3720
  const needsTouchTarget = size === "xs" || size === "sm";
3573
3721
  const { ripples, onPointerDown, removeRipple } = useRippleState({
3574
3722
  disabled: loading