@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.
- package/CHANGELOG.md +12 -0
- package/dist/buttons.d.mts +3 -3
- package/dist/buttons.d.ts +3 -3
- package/dist/buttons.js +195 -50
- package/dist/buttons.js.map +1 -1
- package/dist/buttons.mjs +196 -51
- package/dist/buttons.mjs.map +1 -1
- package/dist/{core-D4048_K5.d.mts → core-CAU8g2HY.d.mts} +1 -1
- package/dist/{core-Bc5Wj_pc.d.ts → core-DRrLnsnJ.d.ts} +1 -1
- package/dist/core.d.mts +2 -2
- package/dist/core.d.ts +2 -2
- package/dist/core.js +159 -28
- package/dist/core.js.map +1 -1
- package/dist/core.mjs +160 -29
- package/dist/core.mjs.map +1 -1
- package/dist/feedback.d.mts +28 -6
- package/dist/feedback.d.ts +28 -6
- package/dist/feedback.js +161 -30
- package/dist/feedback.js.map +1 -1
- package/dist/feedback.mjs +162 -31
- package/dist/feedback.mjs.map +1 -1
- package/dist/forms.d.mts +3 -2
- package/dist/forms.d.ts +3 -2
- package/dist/forms.js +88 -100
- package/dist/forms.js.map +1 -1
- package/dist/forms.mjs +88 -100
- package/dist/forms.mjs.map +1 -1
- package/dist/{icon-button-CSsDmuQC.d.mts → icon-button-CqdQBsRe.d.ts} +11 -5
- package/dist/{icon-button-CSsDmuQC.d.ts → icon-button-USJo7AqO.d.mts} +11 -5
- package/dist/index.d.mts +8 -8
- package/dist/index.d.ts +8 -8
- package/dist/index.js +570 -309
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +570 -310
- package/dist/index.mjs.map +1 -1
- package/dist/layout.d.mts +1 -1
- package/dist/layout.d.ts +1 -1
- package/dist/layout.js +159 -60
- package/dist/layout.js.map +1 -1
- package/dist/layout.mjs +160 -61
- package/dist/layout.mjs.map +1 -1
- package/dist/{md3-Dty-Qcad.d.mts → md3-D0_Z7IXj.d.mts} +9 -1
- package/dist/{md3-Dty-Qcad.d.ts → md3-D0_Z7IXj.d.ts} +9 -1
- package/dist/navigation.d.mts +103 -33
- package/dist/navigation.d.ts +103 -33
- package/dist/navigation.js +443 -152
- package/dist/navigation.js.map +1 -1
- package/dist/navigation.mjs +444 -154
- package/dist/navigation.mjs.map +1 -1
- package/dist/overlays.js +159 -28
- package/dist/overlays.js.map +1 -1
- package/dist/overlays.mjs +160 -29
- package/dist/overlays.mjs.map +1 -1
- package/dist/pickers.js +159 -28
- package/dist/pickers.js.map +1 -1
- package/dist/pickers.mjs +160 -29
- package/dist/pickers.mjs.map +1 -1
- package/dist/{split-button-trailing-uncheckable-DPJL3bO6.d.mts → split-button-trailing-uncheckable-CIVEYgjY.d.mts} +12 -7
- package/dist/{split-button-trailing-uncheckable--BhNTEJw.d.ts → split-button-trailing-uncheckable-DTQJjzsB.d.ts} +12 -7
- package/dist/{text-field-DWC7qOvp.d.mts → text-field-CiOmDM_8.d.ts} +52 -51
- package/dist/{text-field-DWC7qOvp.d.ts → text-field-Ear3hCSq.d.mts} +52 -51
- package/package.json +3 -3
package/dist/feedback.d.mts
CHANGED
|
@@ -46,12 +46,14 @@ interface BadgedBoxProps {
|
|
|
46
46
|
*/
|
|
47
47
|
className?: string;
|
|
48
48
|
/**
|
|
49
|
-
|
|
50
|
-
*
|
|
51
|
-
* - `'
|
|
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
|
-
|
|
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 `
|
|
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,
|
|
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.d.ts
CHANGED
|
@@ -46,12 +46,14 @@ interface BadgedBoxProps {
|
|
|
46
46
|
*/
|
|
47
47
|
className?: string;
|
|
48
48
|
/**
|
|
49
|
-
|
|
50
|
-
*
|
|
51
|
-
* - `'
|
|
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
|
-
|
|
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 `
|
|
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,
|
|
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
|
-
|
|
163
|
+
size
|
|
164
164
|
}) {
|
|
165
|
-
const isLarge =
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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: {
|
|
685
|
-
|
|
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
|
-
)
|
|
690
|
-
|
|
691
|
-
|
|
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
|
-
)
|
|
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
|
-
|
|
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
|
-
"
|
|
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)[
|
|
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
|