@yamada-ui/progress 1.1.4-next-20241005220055 → 1.1.4-next-20241008193728

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.
@@ -2,10 +2,10 @@
2
2
 
3
3
  // src/progress.tsx
4
4
  import {
5
- ui,
6
5
  forwardRef,
7
- useComponentMultiStyle,
8
- omitThemeProps
6
+ omitThemeProps,
7
+ ui,
8
+ useComponentMultiStyle
9
9
  } from "@yamada-ui/core";
10
10
  import { useAnimation } from "@yamada-ui/use-animation";
11
11
  import { createContext, cx, valueToPercent } from "@yamada-ui/utils";
@@ -19,23 +19,23 @@ var Progress = forwardRef((props, ref) => {
19
19
  const [styles, mergedProps] = useComponentMultiStyle("Progress", props);
20
20
  const {
21
21
  className,
22
+ borderRadius: _borderRadius,
22
23
  children,
23
- value,
24
- min,
25
- max,
26
24
  hasStripe,
27
- isStripeAnimation,
28
25
  isAnimation,
29
- speed,
30
- borderRadius: _borderRadius,
26
+ isStripeAnimation,
27
+ max,
28
+ min,
31
29
  rounded,
30
+ speed,
31
+ value,
32
32
  ...rest
33
33
  } = omitThemeProps(mergedProps, ["filledTrackColor"]);
34
34
  const borderRadius = (_b = _borderRadius != null ? _borderRadius : rounded) != null ? _b : (_a = styles.track) == null ? void 0 : _a.borderRadius;
35
35
  const css = {
36
- w: "100%",
37
36
  overflow: "hidden",
38
37
  pos: "relative",
38
+ w: "100%",
39
39
  ...styles.track
40
40
  };
41
41
  return /* @__PURE__ */ jsx(ProgressProvider, { value: styles, children: /* @__PURE__ */ jsxs(
@@ -43,21 +43,21 @@ var Progress = forwardRef((props, ref) => {
43
43
  {
44
44
  ref,
45
45
  className: cx("ui-progress", className),
46
- __css: css,
47
46
  borderRadius,
47
+ __css: css,
48
48
  ...rest,
49
49
  children: [
50
50
  /* @__PURE__ */ jsx(
51
51
  ProgressFilledTrack,
52
52
  {
53
- min,
54
- max,
55
- value,
53
+ borderRadius,
56
54
  hasStripe,
57
- isStripeAnimation,
58
55
  isAnimation,
56
+ isStripeAnimation,
57
+ max,
58
+ min,
59
59
  speed,
60
- borderRadius
60
+ value
61
61
  }
62
62
  ),
63
63
  children
@@ -68,33 +68,33 @@ var Progress = forwardRef((props, ref) => {
68
68
  Progress.displayName = "Progress";
69
69
  Progress.__ui__ = "Progress";
70
70
  var ProgressFilledTrack = ({
71
- value = 0,
72
- min = 0,
73
- max = 100,
74
71
  hasStripe,
75
- isStripeAnimation,
76
72
  isAnimation,
73
+ isStripeAnimation,
74
+ max = 100,
75
+ min = 0,
77
76
  speed = "1.4s",
77
+ value = 0,
78
78
  ...rest
79
79
  }) => {
80
80
  const percent = valueToPercent(value, min, max);
81
81
  const styles = useProgress();
82
82
  const stripeAnimation = useAnimation({
83
+ duration: typeof speed === "string" ? speed : `${speed}s`,
84
+ iterationCount: "infinite",
83
85
  keyframes: {
84
86
  "0%": { bgPosition: "1rem 0" },
85
87
  "100%": { bgPosition: "0 0" }
86
88
  },
87
- duration: typeof speed === "string" ? speed : `${speed}s`,
88
- iterationCount: "infinite",
89
89
  timingFunction: "linear"
90
90
  });
91
91
  const interpolationAnimation = useAnimation({
92
+ duration: typeof speed === "string" ? speed : `${speed}s`,
93
+ iterationCount: "infinite",
92
94
  keyframes: {
93
95
  "0%": { left: "-40%" },
94
96
  "100%": { left: "100%" }
95
97
  },
96
- duration: typeof speed === "string" ? speed : `${speed}s`,
97
- iterationCount: "infinite",
98
98
  timingFunction: "ease"
99
99
  });
100
100
  isStripeAnimation = !isAnimation && hasStripe && isStripeAnimation;
@@ -103,15 +103,15 @@ var ProgressFilledTrack = ({
103
103
  animation: stripeAnimation
104
104
  } : {},
105
105
  ...isAnimation ? {
106
- position: "absolute",
107
- willChange: "left",
106
+ animation: interpolationAnimation,
108
107
  minWidth: "50%",
109
- animation: interpolationAnimation
108
+ position: "absolute",
109
+ willChange: "left"
110
110
  } : {}
111
111
  };
112
112
  const __css = {
113
- w: `${percent}%`,
114
113
  h: "100%",
114
+ w: `${percent}%`,
115
115
  ...styles.filledTrack
116
116
  };
117
117
  return /* @__PURE__ */ jsx(ui.div, { css, __css, ...rest });
@@ -122,4 +122,4 @@ ProgressFilledTrack.__ui__ = "ProgressFilledTrack";
122
122
  export {
123
123
  Progress
124
124
  };
125
- //# sourceMappingURL=chunk-KPKODACS.mjs.map
125
+ //# sourceMappingURL=chunk-QOIOQFER.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/progress.tsx"],"sourcesContent":["import type {\n ColorModeToken,\n CSS,\n CSSUIObject,\n FC,\n HTMLUIProps,\n Interpolation,\n ThemeProps,\n} from \"@yamada-ui/core\"\nimport {\n forwardRef,\n omitThemeProps,\n ui,\n useComponentMultiStyle,\n} from \"@yamada-ui/core\"\nimport { useAnimation } from \"@yamada-ui/use-animation\"\nimport { createContext, cx, valueToPercent } from \"@yamada-ui/utils\"\n\nconst [ProgressProvider, useProgress] = createContext<{\n [key: string]: CSSUIObject | undefined\n}>({\n name: `ProgressStylesContext`,\n errorMessage: `useProgress returned is 'undefined'. Seems you forgot to wrap the components in \"<Progress />\" `,\n})\n\ninterface ProgressOptions {\n /**\n * The CSS `color` property.\n */\n filledTrackColor?: ColorModeToken<CSS.Property.Color, \"colors\">\n /**\n * If `true`, the progress bar will show stripe.\n *\n * @default false\n */\n hasStripe?: boolean\n /**\n * If `true`, the progress will be indeterminate and the `value` prop will be ignored.\n *\n * @default false\n */\n isAnimation?: boolean\n /**\n * If `true`, and hasStripe is `true`, the stripes will be animated.\n *\n * @default false\n */\n isStripeAnimation?: boolean\n /**\n * The maximum value of the progress.\n *\n * @default 100\n */\n max?: number\n /**\n * The minimum value of the progress.\n *\n * @default 0\n */\n min?: number\n /**\n * The animation speed in seconds.\n *\n * @default '1.4s'\n */\n speed?: number | string\n /**\n * The value of the progress.\n *\n * @default 0\n */\n value?: number\n}\n\nexport interface ProgressProps\n extends HTMLUIProps,\n ThemeProps<\"Progress\">,\n ProgressOptions {}\n\n/**\n * `Progress` is a component for visually indicating progress.\n *\n * @see Docs https://yamada-ui.com/components/feedback/progress\n */\nexport const Progress = forwardRef<ProgressProps, \"div\">((props, ref) => {\n const [styles, mergedProps] = useComponentMultiStyle(\"Progress\", props)\n const {\n className,\n borderRadius: _borderRadius,\n children,\n hasStripe,\n isAnimation,\n isStripeAnimation,\n max,\n min,\n rounded,\n speed,\n value,\n ...rest\n } = omitThemeProps(mergedProps, [\"filledTrackColor\"])\n\n const borderRadius =\n _borderRadius ?? rounded ?? (styles.track?.borderRadius as number | string)\n\n const css: CSSUIObject = {\n overflow: \"hidden\",\n pos: \"relative\",\n w: \"100%\",\n ...styles.track,\n }\n\n return (\n <ProgressProvider value={styles}>\n <ui.div\n ref={ref}\n className={cx(\"ui-progress\", className)}\n borderRadius={borderRadius}\n __css={css}\n {...rest}\n >\n <ProgressFilledTrack\n borderRadius={borderRadius}\n hasStripe={hasStripe}\n isAnimation={isAnimation}\n isStripeAnimation={isStripeAnimation}\n max={max}\n min={min}\n speed={speed}\n value={value}\n />\n {children}\n </ui.div>\n </ProgressProvider>\n )\n})\n\nProgress.displayName = \"Progress\"\nProgress.__ui__ = \"Progress\"\n\ninterface ProgressFilledTrackProps extends HTMLUIProps, ProgressProps {}\n\nconst ProgressFilledTrack: FC<ProgressFilledTrackProps> = ({\n hasStripe,\n isAnimation,\n isStripeAnimation,\n max = 100,\n min = 0,\n speed = \"1.4s\",\n value = 0,\n ...rest\n}) => {\n const percent = valueToPercent(value, min, max)\n\n const styles = useProgress()\n\n const stripeAnimation = useAnimation({\n duration: typeof speed === \"string\" ? speed : `${speed}s`,\n iterationCount: \"infinite\",\n keyframes: {\n \"0%\": { bgPosition: \"1rem 0\" },\n \"100%\": { bgPosition: \"0 0\" },\n },\n timingFunction: \"linear\",\n })\n\n const interpolationAnimation = useAnimation({\n duration: typeof speed === \"string\" ? speed : `${speed}s`,\n iterationCount: \"infinite\",\n keyframes: {\n \"0%\": { left: \"-40%\" },\n \"100%\": { left: \"100%\" },\n },\n timingFunction: \"ease\",\n })\n\n isStripeAnimation = !isAnimation && hasStripe && isStripeAnimation\n\n const css: Interpolation<{}> = {\n ...(isStripeAnimation\n ? {\n animation: stripeAnimation,\n }\n : {}),\n ...(isAnimation\n ? {\n animation: interpolationAnimation,\n minWidth: \"50%\",\n position: \"absolute\",\n willChange: \"left\",\n }\n : {}),\n }\n\n const __css: CSSUIObject = {\n h: \"100%\",\n w: `${percent}%`,\n ...styles.filledTrack,\n }\n\n return <ui.div css={css} __css={__css} {...rest} />\n}\n\nProgressFilledTrack.displayName = \"ProgressFilledTrack\"\nProgressFilledTrack.__ui__ = \"ProgressFilledTrack\"\n"],"mappings":";;;AASA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,oBAAoB;AAC7B,SAAS,eAAe,IAAI,sBAAsB;AAiG5C,SAOE,KAPF;AA/FN,IAAM,CAAC,kBAAkB,WAAW,IAAI,cAErC;AAAA,EACD,MAAM;AAAA,EACN,cAAc;AAChB,CAAC;AA6DM,IAAM,WAAW,WAAiC,CAAC,OAAO,QAAQ;AApFzE;AAqFE,QAAM,CAAC,QAAQ,WAAW,IAAI,uBAAuB,YAAY,KAAK;AACtE,QAAM;AAAA,IACJ;AAAA,IACA,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EACL,IAAI,eAAe,aAAa,CAAC,kBAAkB,CAAC;AAEpD,QAAM,gBACJ,6CAAiB,YAAjB,aAA6B,YAAO,UAAP,mBAAc;AAE7C,QAAM,MAAmB;AAAA,IACvB,UAAU;AAAA,IACV,KAAK;AAAA,IACL,GAAG;AAAA,IACH,GAAG,OAAO;AAAA,EACZ;AAEA,SACE,oBAAC,oBAAiB,OAAO,QACvB;AAAA,IAAC,GAAG;AAAA,IAAH;AAAA,MACC;AAAA,MACA,WAAW,GAAG,eAAe,SAAS;AAAA,MACtC;AAAA,MACA,OAAO;AAAA,MACN,GAAG;AAAA,MAEJ;AAAA;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,QACF;AAAA,QACC;AAAA;AAAA;AAAA,EACH,GACF;AAEJ,CAAC;AAED,SAAS,cAAc;AACvB,SAAS,SAAS;AAIlB,IAAM,sBAAoD,CAAC;AAAA,EACzD;AAAA,EACA;AAAA,EACA;AAAA,EACA,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,GAAG;AACL,MAAM;AACJ,QAAM,UAAU,eAAe,OAAO,KAAK,GAAG;AAE9C,QAAM,SAAS,YAAY;AAE3B,QAAM,kBAAkB,aAAa;AAAA,IACnC,UAAU,OAAO,UAAU,WAAW,QAAQ,GAAG,KAAK;AAAA,IACtD,gBAAgB;AAAA,IAChB,WAAW;AAAA,MACT,MAAM,EAAE,YAAY,SAAS;AAAA,MAC7B,QAAQ,EAAE,YAAY,MAAM;AAAA,IAC9B;AAAA,IACA,gBAAgB;AAAA,EAClB,CAAC;AAED,QAAM,yBAAyB,aAAa;AAAA,IAC1C,UAAU,OAAO,UAAU,WAAW,QAAQ,GAAG,KAAK;AAAA,IACtD,gBAAgB;AAAA,IAChB,WAAW;AAAA,MACT,MAAM,EAAE,MAAM,OAAO;AAAA,MACrB,QAAQ,EAAE,MAAM,OAAO;AAAA,IACzB;AAAA,IACA,gBAAgB;AAAA,EAClB,CAAC;AAED,sBAAoB,CAAC,eAAe,aAAa;AAEjD,QAAM,MAAyB;AAAA,IAC7B,GAAI,oBACA;AAAA,MACE,WAAW;AAAA,IACb,IACA,CAAC;AAAA,IACL,GAAI,cACA;AAAA,MACE,WAAW;AAAA,MACX,UAAU;AAAA,MACV,UAAU;AAAA,MACV,YAAY;AAAA,IACd,IACA,CAAC;AAAA,EACP;AAEA,QAAM,QAAqB;AAAA,IACzB,GAAG;AAAA,IACH,GAAG,GAAG,OAAO;AAAA,IACb,GAAG,OAAO;AAAA,EACZ;AAEA,SAAO,oBAAC,GAAG,KAAH,EAAO,KAAU,OAAe,GAAG,MAAM;AACnD;AAEA,oBAAoB,cAAc;AAClC,oBAAoB,SAAS;","names":[]}
@@ -2,10 +2,10 @@
2
2
 
3
3
  // src/circle-progress.tsx
4
4
  import {
5
- ui,
6
5
  forwardRef,
7
- useComponentStyle,
8
- omitThemeProps
6
+ omitThemeProps,
7
+ ui,
8
+ useComponentStyle
9
9
  } from "@yamada-ui/core";
10
10
  import { useAnimation } from "@yamada-ui/use-animation";
11
11
  import { cx, valueToPercent } from "@yamada-ui/utils";
@@ -18,23 +18,25 @@ var CircleProgress = forwardRef(
18
18
  );
19
19
  let {
20
20
  className,
21
- children,
22
21
  boxSize = size,
23
- thickness = "0.625rem",
22
+ children,
24
23
  color = "primary",
25
- trackColor = "border",
26
- value = 0,
27
- min = 0,
28
- max = 100,
29
24
  isAnimation = false,
30
25
  isRounded,
26
+ max = 100,
27
+ min = 0,
31
28
  speed = ["1.4s", "2s"],
29
+ thickness = "0.625rem",
30
+ trackColor = "border",
31
+ value = 0,
32
32
  ...rest
33
33
  } = omitThemeProps(mergedProps);
34
34
  const isTransparent = value === 0 && !isAnimation;
35
35
  const percent = valueToPercent(value, min, max);
36
36
  const interval = !isAnimation ? percent * 2.64 : void 0;
37
37
  const animation = useAnimation({
38
+ duration: typeof speed[0] === "string" ? speed[0] : `${speed[0]}s`,
39
+ iterationCount: "infinite",
38
40
  keyframes: {
39
41
  "0%": {
40
42
  strokeDasharray: "1, 400",
@@ -49,25 +51,23 @@ var CircleProgress = forwardRef(
49
51
  strokeDashoffset: "-260"
50
52
  }
51
53
  },
52
- duration: typeof speed[0] === "string" ? speed[0] : `${speed[0]}s`,
53
- iterationCount: "infinite",
54
54
  timingFunction: "linear"
55
55
  });
56
56
  const css = {
57
57
  ...styles,
58
+ fontSize: "$boxSize",
58
59
  vars: [
59
60
  { name: "boxSize", token: "sizes", value: boxSize },
60
61
  { name: "thickness", token: "sizes", value: thickness }
61
- ],
62
- fontSize: "$boxSize"
62
+ ]
63
63
  };
64
64
  const circleProps = isAnimation ? {
65
65
  animation
66
66
  } : {
67
- strokeDashoffset: 66,
68
67
  strokeDasharray: interval == null ? void 0 : `${interval} ${264 - interval}`,
69
- transitionProperty: "stroke-dasharray, stroke",
68
+ strokeDashoffset: 66,
70
69
  transitionDuration: "0.6s",
70
+ transitionProperty: "stroke-dasharray, stroke",
71
71
  transitionTimingFunction: "ease"
72
72
  };
73
73
  return /* @__PURE__ */ jsxs(
@@ -78,19 +78,27 @@ var CircleProgress = forwardRef(
78
78
  __css: css,
79
79
  ...rest,
80
80
  children: [
81
- /* @__PURE__ */ jsxs(Shape, { boxSize, isAnimation, speed, children: [
82
- /* @__PURE__ */ jsx(Circle, { stroke: trackColor, strokeWidth: "$thickness" }),
83
- /* @__PURE__ */ jsx(
84
- Circle,
85
- {
86
- stroke: color,
87
- strokeWidth: "$thickness",
88
- strokeLinecap: isRounded ? "round" : void 0,
89
- opacity: isTransparent ? 0 : void 0,
90
- ...circleProps
91
- }
92
- )
93
- ] }),
81
+ /* @__PURE__ */ jsxs(
82
+ CircleProgressShape,
83
+ {
84
+ boxSize,
85
+ isAnimation,
86
+ speed,
87
+ children: [
88
+ /* @__PURE__ */ jsx(CircleProgressCircle, { stroke: trackColor, strokeWidth: "$thickness" }),
89
+ /* @__PURE__ */ jsx(
90
+ CircleProgressCircle,
91
+ {
92
+ opacity: isTransparent ? 0 : void 0,
93
+ stroke: color,
94
+ strokeLinecap: isRounded ? "round" : void 0,
95
+ strokeWidth: "$thickness",
96
+ ...circleProps
97
+ }
98
+ )
99
+ ]
100
+ }
101
+ ),
94
102
  children
95
103
  ]
96
104
  }
@@ -99,11 +107,18 @@ var CircleProgress = forwardRef(
99
107
  );
100
108
  CircleProgress.displayName = "CircleProgress";
101
109
  CircleProgress.__ui__ = "CircleProgress";
102
- var Circle = ({ ...rest }) => /* @__PURE__ */ jsx(ui.circle, { cx: 50, cy: 50, r: 42, fill: "transparent", ...rest });
103
- Circle.displayName = "Circle";
104
- Circle.__ui__ = "Circle";
105
- var Shape = ({ boxSize, isAnimation, speed, ...rest }) => {
110
+ var CircleProgressCircle = ({ ...rest }) => /* @__PURE__ */ jsx(ui.circle, { cx: 50, cy: 50, fill: "transparent", r: 42, ...rest });
111
+ CircleProgressCircle.displayName = "CircleProgressCircle";
112
+ CircleProgressCircle.__ui__ = "CircleProgressCircle";
113
+ var CircleProgressShape = ({
114
+ boxSize,
115
+ isAnimation,
116
+ speed,
117
+ ...rest
118
+ }) => {
106
119
  const animation = useAnimation({
120
+ duration: typeof speed[1] === "string" ? speed[1] : `${speed[1]}s`,
121
+ iterationCount: "infinite",
107
122
  keyframes: {
108
123
  "0%": {
109
124
  transform: "rotate(0deg)"
@@ -112,28 +127,26 @@ var Shape = ({ boxSize, isAnimation, speed, ...rest }) => {
112
127
  transform: "rotate(360deg)"
113
128
  }
114
129
  },
115
- duration: typeof speed[1] === "string" ? speed[1] : `${speed[1]}s`,
116
- iterationCount: "infinite",
117
130
  timingFunction: "linear"
118
131
  });
119
132
  const css = {
120
- display: "block",
121
133
  boxSize,
134
+ display: "block",
122
135
  ...isAnimation ? { animation } : {}
123
136
  };
124
137
  return /* @__PURE__ */ jsx(ui.svg, { viewBox: "0 0 100 100", __css: css, ...rest });
125
138
  };
126
- Shape.displayName = "Shape";
127
- Shape.__ui__ = "Shape";
139
+ CircleProgressShape.displayName = "CircleProgressShape";
140
+ CircleProgressShape.__ui__ = "CircleProgressShape";
128
141
  var CircleProgressLabel = ui("span", {
129
142
  baseStyle: {
143
+ fontSize: "0.25em",
144
+ left: "50%",
130
145
  position: "absolute",
146
+ textAlign: "center",
131
147
  top: "50%",
132
- left: "50%",
133
148
  transform: "translate(-50%, -50%)",
134
- width: "100%",
135
- fontSize: "0.25em",
136
- textAlign: "center"
149
+ width: "100%"
137
150
  }
138
151
  });
139
152
  CircleProgressLabel.displayName = "CircleProgressLabel";
@@ -143,4 +156,4 @@ export {
143
156
  CircleProgress,
144
157
  CircleProgressLabel
145
158
  };
146
- //# sourceMappingURL=chunk-ALBGJOCS.mjs.map
159
+ //# sourceMappingURL=chunk-ZZK4BQYL.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/circle-progress.tsx"],"sourcesContent":["import type {\n CSSUIObject,\n CSSUIProps,\n FC,\n HTMLUIProps,\n ThemeProps,\n} from \"@yamada-ui/core\"\nimport {\n forwardRef,\n omitThemeProps,\n ui,\n useComponentStyle,\n} from \"@yamada-ui/core\"\nimport { useAnimation } from \"@yamada-ui/use-animation\"\nimport { cx, valueToPercent } from \"@yamada-ui/utils\"\n\ninterface CircleProgressOptions {\n /**\n * The CSS `box-size` property.\n *\n * @default '6rem'\n * @deprecated Use `boxSize` instead.\n */\n size?: CSSUIProps[\"boxSize\"]\n /**\n * The CSS `color` property.\n *\n * @default 'primary'\n */\n color?: CSSUIProps[\"color\"]\n /**\n * If `true`, the progress will be indeterminate and the `value` prop will be ignored.\n *\n * @default false\n */\n isAnimation?: boolean\n /**\n * If `true`, the cap of the progress indicator will be rounded.\n *\n * @default false\n */\n isRounded?: boolean\n /**\n * The maximum value of the progress.\n *\n * @default 100\n */\n max?: number\n /**\n * The minimum value of the progress.\n *\n * @default 0\n */\n min?: number\n /**\n * The animation speed in seconds.\n *\n * @default '[1.4s, 2s]'\n */\n speed?: [number | string, number | string]\n /**\n * The CSS `width` property.\n *\n * @default '0.625ewm'\n */\n thickness?: CSSUIProps[\"width\"]\n /**\n * The CSS `color` property.\n *\n * @default 'border'\n */\n trackColor?: CSSUIProps[\"color\"]\n /**\n * The value of the progress.\n *\n * @default 0\n */\n value?: number\n}\n\nexport interface CircleProgressProps\n extends Omit<HTMLUIProps, \"color\">,\n Omit<ThemeProps<\"CircleProgress\">, \"size\">,\n CircleProgressOptions {}\n\n/**\n * `CircleProgress` is a component that displays progress in a circular progress bar.\n *\n * @see Docs https://yamada-ui.com/components/feedback/circle-progress\n */\nexport const CircleProgress = forwardRef<CircleProgressProps, \"div\">(\n (props, ref) => {\n const [styles, { size = \"6rem\", ...mergedProps }] = useComponentStyle(\n \"CircleProgress\",\n props,\n )\n let {\n className,\n boxSize = size,\n children,\n color = \"primary\",\n isAnimation = false,\n isRounded,\n max = 100,\n min = 0,\n speed = [\"1.4s\", \"2s\"],\n thickness = \"0.625rem\",\n trackColor = \"border\",\n value = 0,\n ...rest\n } = omitThemeProps(mergedProps)\n\n const isTransparent = value === 0 && !isAnimation\n const percent = valueToPercent(value, min, max)\n\n const interval = !isAnimation ? percent * 2.64 : undefined\n\n const animation = useAnimation({\n duration: typeof speed[0] === \"string\" ? speed[0] : `${speed[0]}s`,\n iterationCount: \"infinite\",\n keyframes: {\n \"0%\": {\n strokeDasharray: \"1, 400\",\n strokeDashoffset: \"0\",\n },\n \"50%\": {\n strokeDasharray: \"400, 400\",\n strokeDashoffset: \"-100\",\n },\n \"100%\": {\n strokeDasharray: \"400, 400\",\n strokeDashoffset: \"-260\",\n },\n },\n timingFunction: \"linear\",\n })\n\n const css: CSSUIObject = {\n ...styles,\n fontSize: \"$boxSize\",\n vars: [\n { name: \"boxSize\", token: \"sizes\", value: boxSize },\n { name: \"thickness\", token: \"sizes\", value: thickness },\n ],\n }\n\n const circleProps: CircleProgressCircleProps = isAnimation\n ? {\n animation,\n }\n : {\n strokeDasharray:\n interval == null ? undefined : `${interval} ${264 - interval}`,\n strokeDashoffset: 66,\n transitionDuration: \"0.6s\",\n transitionProperty: \"stroke-dasharray, stroke\",\n transitionTimingFunction: \"ease\",\n }\n\n return (\n <ui.div\n ref={ref}\n className={cx(\"ui-circle-progress\", className)}\n __css={css}\n {...rest}\n >\n <CircleProgressShape\n boxSize={boxSize}\n isAnimation={isAnimation}\n speed={speed}\n >\n <CircleProgressCircle stroke={trackColor} strokeWidth=\"$thickness\" />\n <CircleProgressCircle\n opacity={isTransparent ? 0 : undefined}\n stroke={color}\n strokeLinecap={isRounded ? \"round\" : undefined}\n strokeWidth=\"$thickness\"\n {...circleProps}\n />\n </CircleProgressShape>\n {children}\n </ui.div>\n )\n },\n)\n\nCircleProgress.displayName = \"CircleProgress\"\nCircleProgress.__ui__ = \"CircleProgress\"\n\ninterface CircleProgressCircleProps extends HTMLUIProps<\"circle\"> {}\n\nconst CircleProgressCircle: FC<CircleProgressCircleProps> = ({ ...rest }) => (\n <ui.circle cx={50} cy={50} fill=\"transparent\" r={42} {...rest} />\n)\n\nCircleProgressCircle.displayName = \"CircleProgressCircle\"\nCircleProgressCircle.__ui__ = \"CircleProgressCircle\"\n\ninterface CircleProgressShapeProps\n extends Omit<HTMLUIProps<\"svg\">, \"children\" | \"speed\">,\n Pick<Required<CircleProgressProps>, \"children\" | \"isAnimation\" | \"speed\"> {}\n\nconst CircleProgressShape: FC<CircleProgressShapeProps> = ({\n boxSize,\n isAnimation,\n speed,\n ...rest\n}) => {\n const animation = useAnimation({\n duration: typeof speed[1] === \"string\" ? speed[1] : `${speed[1]}s`,\n iterationCount: \"infinite\",\n keyframes: {\n \"0%\": {\n transform: \"rotate(0deg)\",\n },\n \"100%\": {\n transform: \"rotate(360deg)\",\n },\n },\n timingFunction: \"linear\",\n })\n\n const css: CSSUIObject = {\n boxSize,\n display: \"block\",\n ...(isAnimation ? { animation } : {}),\n }\n\n return <ui.svg viewBox=\"0 0 100 100\" __css={css} {...rest} />\n}\n\nCircleProgressShape.displayName = \"CircleProgressShape\"\nCircleProgressShape.__ui__ = \"CircleProgressShape\"\n\nexport const CircleProgressLabel = ui(\"span\", {\n baseStyle: {\n fontSize: \"0.25em\",\n left: \"50%\",\n position: \"absolute\",\n textAlign: \"center\",\n top: \"50%\",\n transform: \"translate(-50%, -50%)\",\n width: \"100%\",\n },\n})\n\nCircleProgressLabel.displayName = \"CircleProgressLabel\"\nCircleProgressLabel.__ui__ = \"CircleProgressLabel\"\n"],"mappings":"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","names":[]}
@@ -9,12 +9,6 @@ interface CircleProgressOptions {
9
9
  * @deprecated Use `boxSize` instead.
10
10
  */
11
11
  size?: CSSUIProps["boxSize"];
12
- /**
13
- * The CSS `width` property.
14
- *
15
- * @default '0.625ewm'
16
- */
17
- thickness?: CSSUIProps["width"];
18
12
  /**
19
13
  * The CSS `color` property.
20
14
  *
@@ -22,17 +16,23 @@ interface CircleProgressOptions {
22
16
  */
23
17
  color?: CSSUIProps["color"];
24
18
  /**
25
- * The CSS `color` property.
19
+ * If `true`, the progress will be indeterminate and the `value` prop will be ignored.
26
20
  *
27
- * @default 'border'
21
+ * @default false
28
22
  */
29
- trackColor?: CSSUIProps["color"];
23
+ isAnimation?: boolean;
30
24
  /**
31
- * The value of the progress.
25
+ * If `true`, the cap of the progress indicator will be rounded.
32
26
  *
33
- * @default 0
27
+ * @default false
34
28
  */
35
- value?: number;
29
+ isRounded?: boolean;
30
+ /**
31
+ * The maximum value of the progress.
32
+ *
33
+ * @default 100
34
+ */
35
+ max?: number;
36
36
  /**
37
37
  * The minimum value of the progress.
38
38
  *
@@ -40,29 +40,29 @@ interface CircleProgressOptions {
40
40
  */
41
41
  min?: number;
42
42
  /**
43
- * The maximum value of the progress.
43
+ * The animation speed in seconds.
44
44
  *
45
- * @default 100
45
+ * @default '[1.4s, 2s]'
46
46
  */
47
- max?: number;
47
+ speed?: [number | string, number | string];
48
48
  /**
49
- * If `true`, the cap of the progress indicator will be rounded.
49
+ * The CSS `width` property.
50
50
  *
51
- * @default false
51
+ * @default '0.625ewm'
52
52
  */
53
- isRounded?: boolean;
53
+ thickness?: CSSUIProps["width"];
54
54
  /**
55
- * If `true`, the progress will be indeterminate and the `value` prop will be ignored.
55
+ * The CSS `color` property.
56
56
  *
57
- * @default false
57
+ * @default 'border'
58
58
  */
59
- isAnimation?: boolean;
59
+ trackColor?: CSSUIProps["color"];
60
60
  /**
61
- * The animation speed in seconds.
61
+ * The value of the progress.
62
62
  *
63
- * @default '[1.4s, 2s]'
63
+ * @default 0
64
64
  */
65
- speed?: [string | number, string | number];
65
+ value?: number;
66
66
  }
67
67
  interface CircleProgressProps extends Omit<HTMLUIProps, "color">, Omit<ThemeProps<"CircleProgress">, "size">, CircleProgressOptions {
68
68
  }
@@ -9,12 +9,6 @@ interface CircleProgressOptions {
9
9
  * @deprecated Use `boxSize` instead.
10
10
  */
11
11
  size?: CSSUIProps["boxSize"];
12
- /**
13
- * The CSS `width` property.
14
- *
15
- * @default '0.625ewm'
16
- */
17
- thickness?: CSSUIProps["width"];
18
12
  /**
19
13
  * The CSS `color` property.
20
14
  *
@@ -22,17 +16,23 @@ interface CircleProgressOptions {
22
16
  */
23
17
  color?: CSSUIProps["color"];
24
18
  /**
25
- * The CSS `color` property.
19
+ * If `true`, the progress will be indeterminate and the `value` prop will be ignored.
26
20
  *
27
- * @default 'border'
21
+ * @default false
28
22
  */
29
- trackColor?: CSSUIProps["color"];
23
+ isAnimation?: boolean;
30
24
  /**
31
- * The value of the progress.
25
+ * If `true`, the cap of the progress indicator will be rounded.
32
26
  *
33
- * @default 0
27
+ * @default false
34
28
  */
35
- value?: number;
29
+ isRounded?: boolean;
30
+ /**
31
+ * The maximum value of the progress.
32
+ *
33
+ * @default 100
34
+ */
35
+ max?: number;
36
36
  /**
37
37
  * The minimum value of the progress.
38
38
  *
@@ -40,29 +40,29 @@ interface CircleProgressOptions {
40
40
  */
41
41
  min?: number;
42
42
  /**
43
- * The maximum value of the progress.
43
+ * The animation speed in seconds.
44
44
  *
45
- * @default 100
45
+ * @default '[1.4s, 2s]'
46
46
  */
47
- max?: number;
47
+ speed?: [number | string, number | string];
48
48
  /**
49
- * If `true`, the cap of the progress indicator will be rounded.
49
+ * The CSS `width` property.
50
50
  *
51
- * @default false
51
+ * @default '0.625ewm'
52
52
  */
53
- isRounded?: boolean;
53
+ thickness?: CSSUIProps["width"];
54
54
  /**
55
- * If `true`, the progress will be indeterminate and the `value` prop will be ignored.
55
+ * The CSS `color` property.
56
56
  *
57
- * @default false
57
+ * @default 'border'
58
58
  */
59
- isAnimation?: boolean;
59
+ trackColor?: CSSUIProps["color"];
60
60
  /**
61
- * The animation speed in seconds.
61
+ * The value of the progress.
62
62
  *
63
- * @default '[1.4s, 2s]'
63
+ * @default 0
64
64
  */
65
- speed?: [string | number, string | number];
65
+ value?: number;
66
66
  }
67
67
  interface CircleProgressProps extends Omit<HTMLUIProps, "color">, Omit<ThemeProps<"CircleProgress">, "size">, CircleProgressOptions {
68
68
  }