@cdx-ui/components 0.3.5 → 0.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (278) hide show
  1. package/README.md +1 -1
  2. package/coverage.svg +1 -1
  3. package/docs/components/bar-chart/content.md +703 -0
  4. package/docs/components/content.md +9 -1
  5. package/docs/components/line-chart/content.md +567 -0
  6. package/docs/components/pie-chart/content.md +493 -0
  7. package/docs/components/progress-segmented/content.md +1 -1
  8. package/docs/components/stepper/content.md +599 -0
  9. package/docs/components/system-alert/content.md +533 -0
  10. package/docs/foundations/styles/tokens/all-tokens/content.md +2 -1
  11. package/docs/llms.txt +9 -0
  12. package/docs/patterns/content.md +1 -0
  13. package/docs/patterns/dashboard/content.md +423 -19
  14. package/docs/patterns/insights/content.md +590 -0
  15. package/docs/resources/release-notes/0.3.5/content.md +7 -0
  16. package/docs/resources/release-notes/content.md +1 -0
  17. package/lib/commonjs/components/BarChart/geometry.js +1130 -0
  18. package/lib/commonjs/components/BarChart/geometry.js.map +1 -0
  19. package/lib/commonjs/components/BarChart/index.js +942 -0
  20. package/lib/commonjs/components/BarChart/index.js.map +1 -0
  21. package/lib/commonjs/components/BarChart/styles.js +26 -0
  22. package/lib/commonjs/components/BarChart/styles.js.map +1 -0
  23. package/lib/commonjs/components/Button/index.js +2 -2
  24. package/lib/commonjs/components/Button/index.js.map +1 -1
  25. package/lib/commonjs/components/LineChart/geometry.js +698 -0
  26. package/lib/commonjs/components/LineChart/geometry.js.map +1 -0
  27. package/lib/commonjs/components/LineChart/index.js +747 -0
  28. package/lib/commonjs/components/LineChart/index.js.map +1 -0
  29. package/lib/commonjs/components/LineChart/styles.js +25 -0
  30. package/lib/commonjs/components/LineChart/styles.js.map +1 -0
  31. package/lib/commonjs/components/PieChart/geometry.js +216 -0
  32. package/lib/commonjs/components/PieChart/geometry.js.map +1 -0
  33. package/lib/commonjs/components/PieChart/index.js +476 -0
  34. package/lib/commonjs/components/PieChart/index.js.map +1 -0
  35. package/lib/commonjs/components/PieChart/styles.js +88 -0
  36. package/lib/commonjs/components/PieChart/styles.js.map +1 -0
  37. package/lib/commonjs/components/ProgressCircle/ProgressCircleRing.js +9 -31
  38. package/lib/commonjs/components/ProgressCircle/ProgressCircleRing.js.map +1 -1
  39. package/lib/commonjs/components/ProgressCircle/ProgressRing.js +52 -0
  40. package/lib/commonjs/components/ProgressCircle/ProgressRing.js.map +1 -0
  41. package/lib/commonjs/components/ScrollShadow/useScrollShadow.js +8 -7
  42. package/lib/commonjs/components/ScrollShadow/useScrollShadow.js.map +1 -1
  43. package/lib/commonjs/components/Stepper/index.js +369 -0
  44. package/lib/commonjs/components/Stepper/index.js.map +1 -0
  45. package/lib/commonjs/components/Stepper/styles.js +211 -0
  46. package/lib/commonjs/components/Stepper/styles.js.map +1 -0
  47. package/lib/commonjs/components/Stepper/useStepperLabelFit.js +22 -0
  48. package/lib/commonjs/components/Stepper/useStepperLabelFit.js.map +1 -0
  49. package/lib/commonjs/components/Stepper/useStepperLabelFit.web.js +52 -0
  50. package/lib/commonjs/components/Stepper/useStepperLabelFit.web.js.map +1 -0
  51. package/lib/commonjs/components/Stepper/useStepperRingColors.js +31 -0
  52. package/lib/commonjs/components/Stepper/useStepperRingColors.js.map +1 -0
  53. package/lib/commonjs/components/SystemAlert/animation.js +218 -0
  54. package/lib/commonjs/components/SystemAlert/animation.js.map +1 -0
  55. package/lib/commonjs/components/SystemAlert/index.js +525 -0
  56. package/lib/commonjs/components/SystemAlert/index.js.map +1 -0
  57. package/lib/commonjs/components/SystemAlert/styles.js +178 -0
  58. package/lib/commonjs/components/SystemAlert/styles.js.map +1 -0
  59. package/lib/commonjs/components/SystemAlert/useSystemAlertStatusBarStyle.js +53 -0
  60. package/lib/commonjs/components/SystemAlert/useSystemAlertStatusBarStyle.js.map +1 -0
  61. package/lib/commonjs/components/Tabs/index.js +4 -0
  62. package/lib/commonjs/components/Tabs/index.js.map +1 -1
  63. package/lib/commonjs/components/Tabs/styles.js +1 -1
  64. package/lib/commonjs/components/Tabs/styles.js.map +1 -1
  65. package/lib/commonjs/components/chart/ChartInspector.js +610 -0
  66. package/lib/commonjs/components/chart/ChartInspector.js.map +1 -0
  67. package/lib/commonjs/components/chart/format.js +93 -0
  68. package/lib/commonjs/components/chart/format.js.map +1 -0
  69. package/lib/commonjs/components/chart/index.js +2 -0
  70. package/lib/commonjs/components/chart/index.js.map +1 -0
  71. package/lib/commonjs/components/chart/motion.js +97 -0
  72. package/lib/commonjs/components/chart/motion.js.map +1 -0
  73. package/lib/commonjs/components/chart/palette.js +178 -0
  74. package/lib/commonjs/components/chart/palette.js.map +1 -0
  75. package/lib/commonjs/components/chart/size.js +34 -0
  76. package/lib/commonjs/components/chart/size.js.map +1 -0
  77. package/lib/commonjs/components/chart/ticks.js +59 -0
  78. package/lib/commonjs/components/chart/ticks.js.map +1 -0
  79. package/lib/commonjs/components/chart/types.js +6 -0
  80. package/lib/commonjs/components/chart/types.js.map +1 -0
  81. package/lib/commonjs/components/chart/useChartHostWidth.js +27 -0
  82. package/lib/commonjs/components/chart/useChartHostWidth.js.map +1 -0
  83. package/lib/commonjs/components/index.js +60 -0
  84. package/lib/commonjs/components/index.js.map +1 -1
  85. package/lib/commonjs/figma/SystemAlert.Button.figma.js +28 -0
  86. package/lib/commonjs/figma/SystemAlert.Button.figma.js.map +1 -0
  87. package/lib/commonjs/figma/SystemAlert.Close.figma.js +22 -0
  88. package/lib/commonjs/figma/SystemAlert.Close.figma.js.map +1 -0
  89. package/lib/commonjs/figma/SystemAlert.Description.figma.js +20 -0
  90. package/lib/commonjs/figma/SystemAlert.Description.figma.js.map +1 -0
  91. package/lib/commonjs/figma/SystemAlert.IconButton.figma.js +31 -0
  92. package/lib/commonjs/figma/SystemAlert.IconButton.figma.js.map +1 -0
  93. package/lib/commonjs/figma/SystemAlert.figma.js +48 -0
  94. package/lib/commonjs/figma/SystemAlert.figma.js.map +1 -0
  95. package/lib/module/components/BarChart/geometry.js +1110 -0
  96. package/lib/module/components/BarChart/geometry.js.map +1 -0
  97. package/lib/module/components/BarChart/index.js +936 -0
  98. package/lib/module/components/BarChart/index.js.map +1 -0
  99. package/lib/module/components/BarChart/styles.js +22 -0
  100. package/lib/module/components/BarChart/styles.js.map +1 -0
  101. package/lib/module/components/Button/index.js +2 -2
  102. package/lib/module/components/Button/index.js.map +1 -1
  103. package/lib/module/components/LineChart/geometry.js +685 -0
  104. package/lib/module/components/LineChart/geometry.js.map +1 -0
  105. package/lib/module/components/LineChart/index.js +741 -0
  106. package/lib/module/components/LineChart/index.js.map +1 -0
  107. package/lib/module/components/LineChart/styles.js +21 -0
  108. package/lib/module/components/LineChart/styles.js.map +1 -0
  109. package/lib/module/components/PieChart/geometry.js +209 -0
  110. package/lib/module/components/PieChart/geometry.js.map +1 -0
  111. package/lib/module/components/PieChart/index.js +471 -0
  112. package/lib/module/components/PieChart/index.js.map +1 -0
  113. package/lib/module/components/PieChart/styles.js +84 -0
  114. package/lib/module/components/PieChart/styles.js.map +1 -0
  115. package/lib/module/components/ProgressCircle/ProgressCircleRing.js +10 -32
  116. package/lib/module/components/ProgressCircle/ProgressCircleRing.js.map +1 -1
  117. package/lib/module/components/ProgressCircle/ProgressRing.js +48 -0
  118. package/lib/module/components/ProgressCircle/ProgressRing.js.map +1 -0
  119. package/lib/module/components/ScrollShadow/useScrollShadow.js +8 -7
  120. package/lib/module/components/ScrollShadow/useScrollShadow.js.map +1 -1
  121. package/lib/module/components/Stepper/index.js +360 -0
  122. package/lib/module/components/Stepper/index.js.map +1 -0
  123. package/lib/module/components/Stepper/styles.js +206 -0
  124. package/lib/module/components/Stepper/styles.js.map +1 -0
  125. package/lib/module/components/Stepper/useStepperLabelFit.js +18 -0
  126. package/lib/module/components/Stepper/useStepperLabelFit.js.map +1 -0
  127. package/lib/module/components/Stepper/useStepperLabelFit.web.js +48 -0
  128. package/lib/module/components/Stepper/useStepperLabelFit.web.js.map +1 -0
  129. package/lib/module/components/Stepper/useStepperRingColors.js +28 -0
  130. package/lib/module/components/Stepper/useStepperRingColors.js.map +1 -0
  131. package/lib/module/components/SystemAlert/animation.js +213 -0
  132. package/lib/module/components/SystemAlert/animation.js.map +1 -0
  133. package/lib/module/components/SystemAlert/index.js +515 -0
  134. package/lib/module/components/SystemAlert/index.js.map +1 -0
  135. package/lib/module/components/SystemAlert/styles.js +174 -0
  136. package/lib/module/components/SystemAlert/styles.js.map +1 -0
  137. package/lib/module/components/SystemAlert/useSystemAlertStatusBarStyle.js +49 -0
  138. package/lib/module/components/SystemAlert/useSystemAlertStatusBarStyle.js.map +1 -0
  139. package/lib/module/components/Tabs/index.js +4 -0
  140. package/lib/module/components/Tabs/index.js.map +1 -1
  141. package/lib/module/components/Tabs/styles.js +1 -1
  142. package/lib/module/components/Tabs/styles.js.map +1 -1
  143. package/lib/module/components/chart/ChartInspector.js +600 -0
  144. package/lib/module/components/chart/ChartInspector.js.map +1 -0
  145. package/lib/module/components/chart/format.js +84 -0
  146. package/lib/module/components/chart/format.js.map +1 -0
  147. package/lib/module/components/chart/index.js +2 -0
  148. package/lib/module/components/chart/index.js.map +1 -0
  149. package/lib/module/components/chart/motion.js +89 -0
  150. package/lib/module/components/chart/motion.js.map +1 -0
  151. package/lib/module/components/chart/palette.js +168 -0
  152. package/lib/module/components/chart/palette.js.map +1 -0
  153. package/lib/module/components/chart/size.js +29 -0
  154. package/lib/module/components/chart/size.js.map +1 -0
  155. package/lib/module/components/chart/ticks.js +55 -0
  156. package/lib/module/components/chart/ticks.js.map +1 -0
  157. package/lib/module/components/chart/types.js +4 -0
  158. package/lib/module/components/chart/types.js.map +1 -0
  159. package/lib/module/components/chart/useChartHostWidth.js +23 -0
  160. package/lib/module/components/chart/useChartHostWidth.js.map +1 -0
  161. package/lib/module/components/index.js +5 -0
  162. package/lib/module/components/index.js.map +1 -1
  163. package/lib/module/figma/SystemAlert.Button.figma.js +22 -0
  164. package/lib/module/figma/SystemAlert.Button.figma.js.map +1 -0
  165. package/lib/module/figma/SystemAlert.Close.figma.js +18 -0
  166. package/lib/module/figma/SystemAlert.Close.figma.js.map +1 -0
  167. package/lib/module/figma/SystemAlert.Description.figma.js +14 -0
  168. package/lib/module/figma/SystemAlert.Description.figma.js.map +1 -0
  169. package/lib/module/figma/SystemAlert.IconButton.figma.js +25 -0
  170. package/lib/module/figma/SystemAlert.IconButton.figma.js.map +1 -0
  171. package/lib/module/figma/SystemAlert.figma.js +42 -0
  172. package/lib/module/figma/SystemAlert.figma.js.map +1 -0
  173. package/lib/typescript/components/BarChart/geometry.d.ts +236 -0
  174. package/lib/typescript/components/BarChart/geometry.d.ts.map +1 -0
  175. package/lib/typescript/components/BarChart/index.d.ts +193 -0
  176. package/lib/typescript/components/BarChart/index.d.ts.map +1 -0
  177. package/lib/typescript/components/BarChart/styles.d.ts +32 -0
  178. package/lib/typescript/components/BarChart/styles.d.ts.map +1 -0
  179. package/lib/typescript/components/LineChart/geometry.d.ts +248 -0
  180. package/lib/typescript/components/LineChart/geometry.d.ts.map +1 -0
  181. package/lib/typescript/components/LineChart/index.d.ts +105 -0
  182. package/lib/typescript/components/LineChart/index.d.ts.map +1 -0
  183. package/lib/typescript/components/LineChart/styles.d.ts +12 -0
  184. package/lib/typescript/components/LineChart/styles.d.ts.map +1 -0
  185. package/lib/typescript/components/PieChart/geometry.d.ts +43 -0
  186. package/lib/typescript/components/PieChart/geometry.d.ts.map +1 -0
  187. package/lib/typescript/components/PieChart/index.d.ts +147 -0
  188. package/lib/typescript/components/PieChart/index.d.ts.map +1 -0
  189. package/lib/typescript/components/PieChart/styles.d.ts +27 -0
  190. package/lib/typescript/components/PieChart/styles.d.ts.map +1 -0
  191. package/lib/typescript/components/ProgressCircle/ProgressCircleRing.d.ts.map +1 -1
  192. package/lib/typescript/components/ProgressCircle/ProgressRing.d.ts +17 -0
  193. package/lib/typescript/components/ProgressCircle/ProgressRing.d.ts.map +1 -0
  194. package/lib/typescript/components/ScrollShadow/useScrollShadow.d.ts.map +1 -1
  195. package/lib/typescript/components/Stepper/index.d.ts +68 -0
  196. package/lib/typescript/components/Stepper/index.d.ts.map +1 -0
  197. package/lib/typescript/components/Stepper/styles.d.ts +46 -0
  198. package/lib/typescript/components/Stepper/styles.d.ts.map +1 -0
  199. package/lib/typescript/components/Stepper/useStepperLabelFit.d.ts +15 -0
  200. package/lib/typescript/components/Stepper/useStepperLabelFit.d.ts.map +1 -0
  201. package/lib/typescript/components/Stepper/useStepperLabelFit.web.d.ts +10 -0
  202. package/lib/typescript/components/Stepper/useStepperLabelFit.web.d.ts.map +1 -0
  203. package/lib/typescript/components/Stepper/useStepperRingColors.d.ts +6 -0
  204. package/lib/typescript/components/Stepper/useStepperRingColors.d.ts.map +1 -0
  205. package/lib/typescript/components/SystemAlert/animation.d.ts +56 -0
  206. package/lib/typescript/components/SystemAlert/animation.d.ts.map +1 -0
  207. package/lib/typescript/components/SystemAlert/index.d.ts +110 -0
  208. package/lib/typescript/components/SystemAlert/index.d.ts.map +1 -0
  209. package/lib/typescript/components/SystemAlert/styles.d.ts +38 -0
  210. package/lib/typescript/components/SystemAlert/styles.d.ts.map +1 -0
  211. package/lib/typescript/components/SystemAlert/useSystemAlertStatusBarStyle.d.ts +14 -0
  212. package/lib/typescript/components/SystemAlert/useSystemAlertStatusBarStyle.d.ts.map +1 -0
  213. package/lib/typescript/components/Tabs/index.d.ts.map +1 -1
  214. package/lib/typescript/components/chart/ChartInspector.d.ts +101 -0
  215. package/lib/typescript/components/chart/ChartInspector.d.ts.map +1 -0
  216. package/lib/typescript/components/chart/format.d.ts +16 -0
  217. package/lib/typescript/components/chart/format.d.ts.map +1 -0
  218. package/lib/typescript/components/chart/index.d.ts +3 -0
  219. package/lib/typescript/components/chart/index.d.ts.map +1 -0
  220. package/lib/typescript/components/chart/motion.d.ts +27 -0
  221. package/lib/typescript/components/chart/motion.d.ts.map +1 -0
  222. package/lib/typescript/components/chart/palette.d.ts +44 -0
  223. package/lib/typescript/components/chart/palette.d.ts.map +1 -0
  224. package/lib/typescript/components/chart/size.d.ts +25 -0
  225. package/lib/typescript/components/chart/size.d.ts.map +1 -0
  226. package/lib/typescript/components/chart/ticks.d.ts +3 -0
  227. package/lib/typescript/components/chart/ticks.d.ts.map +1 -0
  228. package/lib/typescript/components/chart/types.d.ts +163 -0
  229. package/lib/typescript/components/chart/types.d.ts.map +1 -0
  230. package/lib/typescript/components/chart/useChartHostWidth.d.ts +9 -0
  231. package/lib/typescript/components/chart/useChartHostWidth.d.ts.map +1 -0
  232. package/lib/typescript/components/index.d.ts +5 -0
  233. package/lib/typescript/components/index.d.ts.map +1 -1
  234. package/lib/typescript/figma/SystemAlert.Button.figma.d.ts +11 -0
  235. package/lib/typescript/figma/SystemAlert.Button.figma.d.ts.map +1 -0
  236. package/lib/typescript/figma/SystemAlert.Close.figma.d.ts +11 -0
  237. package/lib/typescript/figma/SystemAlert.Close.figma.d.ts.map +1 -0
  238. package/lib/typescript/figma/SystemAlert.Description.figma.d.ts +8 -0
  239. package/lib/typescript/figma/SystemAlert.Description.figma.d.ts.map +1 -0
  240. package/lib/typescript/figma/SystemAlert.IconButton.figma.d.ts +11 -0
  241. package/lib/typescript/figma/SystemAlert.IconButton.figma.d.ts.map +1 -0
  242. package/lib/typescript/figma/SystemAlert.figma.d.ts +8 -0
  243. package/lib/typescript/figma/SystemAlert.figma.d.ts.map +1 -0
  244. package/package.json +5 -5
  245. package/src/components/BarChart/geometry.ts +1469 -0
  246. package/src/components/BarChart/index.tsx +1424 -0
  247. package/src/components/BarChart/styles.ts +31 -0
  248. package/src/components/Button/index.tsx +1 -1
  249. package/src/components/LineChart/geometry.ts +957 -0
  250. package/src/components/LineChart/index.tsx +1109 -0
  251. package/src/components/LineChart/styles.ts +26 -0
  252. package/src/components/PieChart/geometry.ts +295 -0
  253. package/src/components/PieChart/index.tsx +715 -0
  254. package/src/components/PieChart/styles.ts +101 -0
  255. package/src/components/ProgressCircle/ProgressCircleRing.tsx +10 -39
  256. package/src/components/ProgressCircle/ProgressRing.tsx +60 -0
  257. package/src/components/ScrollShadow/useScrollShadow.ts +12 -11
  258. package/src/components/Stepper/index.tsx +452 -0
  259. package/src/components/Stepper/styles.ts +234 -0
  260. package/src/components/Stepper/useStepperLabelFit.ts +21 -0
  261. package/src/components/Stepper/useStepperLabelFit.web.ts +53 -0
  262. package/src/components/Stepper/useStepperRingColors.ts +29 -0
  263. package/src/components/SystemAlert/animation.ts +252 -0
  264. package/src/components/SystemAlert/index.tsx +684 -0
  265. package/src/components/SystemAlert/styles.ts +212 -0
  266. package/src/components/SystemAlert/useSystemAlertStatusBarStyle.ts +57 -0
  267. package/src/components/Tabs/index.tsx +4 -0
  268. package/src/components/Tabs/styles.ts +1 -1
  269. package/src/components/chart/ChartInspector.tsx +726 -0
  270. package/src/components/chart/format.ts +95 -0
  271. package/src/components/chart/index.ts +24 -0
  272. package/src/components/chart/motion.ts +98 -0
  273. package/src/components/chart/palette.tsx +247 -0
  274. package/src/components/chart/size.ts +21 -0
  275. package/src/components/chart/ticks.ts +53 -0
  276. package/src/components/chart/types.ts +183 -0
  277. package/src/components/chart/useChartHostWidth.ts +26 -0
  278. package/src/components/index.ts +5 -0
@@ -0,0 +1,471 @@
1
+ "use strict";
2
+
3
+ import { forwardRef, useEffect, useMemo, useRef, useState } from 'react';
4
+ import { Platform, Pressable, Text, View } from 'react-native';
5
+ import Animated, { useAnimatedProps } from 'react-native-reanimated';
6
+ import { Path, Svg } from 'react-native-svg';
7
+ import { dataAttributes, mergeDataAttributes } from '@cdx-ui/primitives';
8
+ import { cn, useControllableState } from '@cdx-ui/utils';
9
+ import { ChartTooltipLayer } from '../chart/ChartInspector';
10
+ import { formatChartPercent, resolveChartLocaleText, resolveValueFormatter } from '../chart/format';
11
+ import { resolveChartBox } from '../chart/size';
12
+ import { ChartLinearFills, chartFillUrl, resolveChartColor, useChartColorPaints, useChartGradientId, useChartPalette } from '../chart/palette';
13
+ import { lerpVector, useChartMorph, useChartMotionEnabled } from '../chart/motion';
14
+ import { layoutPieSlices, pieRadii, resolveInnerRadiusRatio, slicePath } from './geometry';
15
+ import { pieChartCanvasVariants, pieChartCenterLabelVariants, pieChartLegendItemVariants, pieChartLegendLabelVariants, pieChartLegendMetaVariants, pieChartLegendShareVariants, pieChartLegendVariants, pieChartRootVariants } from './styles';
16
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
17
+ const INACTIVE_OPACITY = 0.4;
18
+ const SLICE_HOVER_EXIT_DELAY_MS = 120;
19
+ const ENTRY_ANGLES = [0, 0];
20
+ const NO_SLICES = [];
21
+ let hasWarnedPieChartSeries = false;
22
+ const AnimatedPath = Animated.createAnimatedComponent(Path);
23
+
24
+ /** One slice. Same shape as MUI X `PieValueType`. */
25
+
26
+ /**
27
+ * Turns a slice's 0–1 share of the visible total into text. `location` is `label` for the
28
+ * legend and `a11y` for screen reader labels and the summary.
29
+ */
30
+
31
+ /** One ring of slices. Same shape as MUI X `PieSeriesType`; slices carry their own `color`. */
32
+
33
+ /** The slice under the pointer or keyboard focus, falling back to the selected slice. */
34
+
35
+ export const PieChart = /*#__PURE__*/forwardRef(({
36
+ series,
37
+ size = 'lg',
38
+ width,
39
+ height,
40
+ hideLegend = false,
41
+ legendLayout = 'wrap',
42
+ legendPlacement = 'bottom',
43
+ tooltip,
44
+ centerLabel,
45
+ selectedItem: selectedItemProp,
46
+ defaultSelectedItem,
47
+ onSelectedItemChange,
48
+ locale,
49
+ localeText,
50
+ animation,
51
+ accessibilityLabel,
52
+ className,
53
+ style,
54
+ ...props
55
+ }, ref) => {
56
+ useEffect(() => {
57
+ if (__DEV__ && series.length > 1 && !hasWarnedPieChartSeries) {
58
+ hasWarnedPieChartSeries = true;
59
+ console.warn('[PieChart] Only the first series renders. Concentric rings are not supported yet.');
60
+ }
61
+ }, [series.length]);
62
+ const pieSeries = series.at(0);
63
+ const seriesId = pieSeries?.id ?? '';
64
+ const data = pieSeries?.data ?? NO_SLICES;
65
+ const cornerRadius = pieSeries?.cornerRadius ?? 0;
66
+ const paddingAngle = pieSeries?.paddingAngle ?? 0;
67
+ const text = resolveChartLocaleText(localeText);
68
+ const formatValue = resolveValueFormatter(pieSeries, undefined, locale);
69
+ const formatShare = pieSeries?.shareFormatter ?? (share => formatChartPercent(share, locale));
70
+ const context = (location, dataIndex) => ({
71
+ location,
72
+ seriesId,
73
+ dataIndex
74
+ });
75
+ const animated = useChartMotionEnabled(animation);
76
+ const palette = useChartPalette();
77
+ const paints = useChartColorPaints();
78
+ const gradientId = useChartGradientId('pie-fill');
79
+ const isSideLegend = legendPlacement === 'left' || legendPlacement === 'right';
80
+ const legendFirst = legendPlacement === 'top' || legendPlacement === 'left';
81
+ const legendMode = isSideLegend ? 'names' : legendLayout;
82
+ const box = resolveChartBox(size, width, height);
83
+ const dimension = Math.min(box.width, box.height);
84
+ const innerRadiusRatio = resolveInnerRadiusRatio(pieSeries?.innerRadius ?? 0, dimension);
85
+ const layout = useMemo(() => layoutPieSlices({
86
+ data: data.map(slice => ({
87
+ id: slice.id,
88
+ label: slice.label ?? slice.id,
89
+ value: slice.value
90
+ })),
91
+ size: dimension,
92
+ innerRadiusRatio,
93
+ paddingAngle,
94
+ cornerRadius
95
+ }), [data, dimension, innerRadiusRatio, paddingAngle, cornerRadius]);
96
+ const slices = layout.map((slice, visibleIndex) => ({
97
+ ...slice,
98
+ fill: resolveChartColor(data[slice.index]?.color, paints) ?? palette[visibleIndex % palette.length]
99
+ }));
100
+ const radii = pieRadii(dimension, innerRadiusRatio);
101
+ const summary = accessibilityLabel ?? text.pieChartSummary(slices.map(slice => ({
102
+ label: slice.label,
103
+ formattedValue: formatShare(slice.percentage, context('a11y', slice.index))
104
+ })));
105
+ const tooltipEnabled = (tooltip?.trigger ?? 'item') !== 'none';
106
+ const interactive = onSelectedItemChange !== undefined || selectedItemProp !== undefined || defaultSelectedItem !== undefined;
107
+ const hoverable = interactive || tooltipEnabled;
108
+ const sliceButtons = interactive && hideLegend;
109
+ const hidePlotFromAccessibility = !sliceButtons;
110
+ const [selectedItemState, setSelectedItem] = useControllableState({
111
+ prop: selectedItemProp,
112
+ defaultProp: defaultSelectedItem ?? null,
113
+ onChange: onSelectedItemChange
114
+ });
115
+ const selectedItem = selectedItemState ?? null;
116
+ const selectedIndex = selectedItem !== null && selectedItem.seriesId === seriesId ? selectedItem.dataIndex : null;
117
+ const toggleSelection = dataIndex => {
118
+ setSelectedItem(selectedIndex === dataIndex ? null : {
119
+ seriesId,
120
+ dataIndex
121
+ });
122
+ };
123
+ const [previewIndex, setPreviewIndex] = useState(null);
124
+ const highlightedIndex = previewIndex ?? selectedIndex;
125
+ const clearPreviewTimer = useRef(null);
126
+ useEffect(() => () => {
127
+ if (clearPreviewTimer.current) {
128
+ clearTimeout(clearPreviewTimer.current);
129
+ }
130
+ }, []);
131
+ const cancelPreviewClear = () => {
132
+ if (clearPreviewTimer.current) {
133
+ clearTimeout(clearPreviewTimer.current);
134
+ clearPreviewTimer.current = null;
135
+ }
136
+ };
137
+ const previewSlice = index => {
138
+ cancelPreviewClear();
139
+ setPreviewIndex(index);
140
+ };
141
+ const clearSlicePreview = () => {
142
+ clearPreviewTimer.current = setTimeout(() => {
143
+ clearPreviewTimer.current = null;
144
+ setPreviewIndex(null);
145
+ }, SLICE_HOVER_EXIT_DELAY_MS);
146
+ };
147
+ const pressSlice = index => {
148
+ if (interactive) {
149
+ toggleSelection(index);
150
+ }
151
+ };
152
+ const sliceButtonLabel = slice => `${slice.label}, ${formatShare(slice.percentage, context('a11y', slice.index))}`;
153
+ const releaseSlice = () => {
154
+ cancelPreviewClear();
155
+ setPreviewIndex(null);
156
+ };
157
+ const activeLayout = slices.find(slice => slice.index === highlightedIndex);
158
+ const activeSlice = activeLayout ? {
159
+ id: activeLayout.id,
160
+ dataIndex: activeLayout.index,
161
+ label: activeLayout.label,
162
+ value: activeLayout.value,
163
+ percentage: activeLayout.percentage
164
+ } : null;
165
+ const centerContent = typeof centerLabel === 'function' ? centerLabel(activeSlice) : centerLabel;
166
+ const tooltipSlice = tooltipEnabled ? slices.find(slice => slice.index === previewIndex) : undefined;
167
+ const tooltipContent = tooltipSlice ? {
168
+ title: tooltipSlice.label,
169
+ items: [{
170
+ seriesId,
171
+ label: pieSeries?.label ?? '',
172
+ color: tooltipSlice.fill,
173
+ formattedValue: formatValue(tooltipSlice.value, context('tooltip', tooltipSlice.index))
174
+ }]
175
+ } : undefined;
176
+ const tooltipAnchor = tooltipSlice ? anglePoint(radii, (radii.innerRadius + radii.outerRadius) / 2, (tooltipSlice.startAngle + tooltipSlice.endAngle) / 2) : undefined;
177
+ const chart = /*#__PURE__*/_jsxs(View, {
178
+ className: "relative shrink-0",
179
+ style: {
180
+ width: dimension,
181
+ height: dimension
182
+ },
183
+ children: [/*#__PURE__*/_jsxs(View, {
184
+ collapsable: false,
185
+ className: width === undefined && height === undefined ? pieChartCanvasVariants({
186
+ size
187
+ }) : 'relative shrink-0 items-center justify-center overflow-hidden web:outline-none',
188
+ style: {
189
+ width: dimension,
190
+ height: dimension,
191
+ overflow: 'hidden'
192
+ },
193
+ accessible: !sliceButtons,
194
+ accessibilityRole: !sliceButtons ? 'image' : undefined,
195
+ accessibilityLabel: !sliceButtons ? summary : undefined,
196
+ focusable: false,
197
+ tabIndex: -1,
198
+ ...(Platform.OS === 'web' ? {
199
+ onMouseDown: event => {
200
+ event.preventDefault?.();
201
+ }
202
+ } : {}),
203
+ ...dataAttributes({
204
+ slot: 'pie-chart-plot'
205
+ }),
206
+ children: [/*#__PURE__*/_jsxs(Svg, {
207
+ width: dimension,
208
+ height: dimension,
209
+ viewBox: `0 0 ${String(dimension)} ${String(dimension)}`,
210
+ focusable: false,
211
+ tabIndex: -1,
212
+ className: "web:outline-none",
213
+ pointerEvents: hoverable ? 'auto' : 'none',
214
+ accessible: false,
215
+ accessibilityElementsHidden: hidePlotFromAccessibility,
216
+ importantForAccessibility: hidePlotFromAccessibility ? 'no-hide-descendants' : 'no',
217
+ children: [/*#__PURE__*/_jsx(ChartLinearFills, {
218
+ idPrefix: gradientId,
219
+ colors: slices.map(slice => slice.fill),
220
+ x2: "100%",
221
+ y2: "100%"
222
+ }), slices.map((slice, visibleIndex) => {
223
+ const dimmed = interactive && activeLayout !== undefined && activeLayout.index !== slice.index;
224
+ return /*#__PURE__*/_jsx(AnimatedSlice, {
225
+ startAngle: slice.startAngle,
226
+ endAngle: slice.endAngle,
227
+ animated: animated,
228
+ radii: radii,
229
+ cornerRadius: cornerRadius,
230
+ fill: chartFillUrl(gradientId, visibleIndex),
231
+ opacity: dimmed ? INACTIVE_OPACITY : 1,
232
+ accessible: false,
233
+ ...(hoverable ? {
234
+ onPress: () => {
235
+ pressSlice(slice.index);
236
+ },
237
+ onMouseEnter: () => {
238
+ previewSlice(slice.index);
239
+ },
240
+ onMouseLeave: clearSlicePreview,
241
+ // Touch has no hover: the finger previews the slice until it lifts.
242
+ ...(Platform.OS !== 'web' ? {
243
+ onPressIn: () => {
244
+ previewSlice(slice.index);
245
+ },
246
+ onPressOut: releaseSlice
247
+ } : {}),
248
+ ...(interactive ? {
249
+ cursor: 'pointer'
250
+ } : {})
251
+ } : {}),
252
+ accessibilityElementsHidden: true,
253
+ importantForAccessibility: "no-hide-descendants",
254
+ ...(sliceButtons ? {
255
+ accessibilityLabel: sliceButtonLabel(slice)
256
+ } : {})
257
+ }, slice.id);
258
+ })]
259
+ }), sliceButtons ? slices.map(slice => {
260
+ const mid = anglePoint(radii, (radii.innerRadius + radii.outerRadius) / 2, (slice.startAngle + slice.endAngle) / 2);
261
+ const target = 24;
262
+ return /*#__PURE__*/_jsx(Pressable, {
263
+ accessibilityRole: "button",
264
+ accessibilityLabel: sliceButtonLabel(slice),
265
+ accessibilityState: {
266
+ selected: selectedIndex === slice.index
267
+ },
268
+ "aria-pressed": Platform.OS === 'web' ? selectedIndex === slice.index : undefined,
269
+ focusable: true,
270
+ tabIndex: 0,
271
+ className: "absolute",
272
+ style: {
273
+ left: mid.x - target / 2,
274
+ top: mid.y - target / 2,
275
+ width: target,
276
+ height: target
277
+ }
278
+ // Pointer hits stay on the wedge. This host is the keyboard and
279
+ // screen-reader target, because an SVG path does not activate on Enter or Space.
280
+ ,
281
+ pointerEvents: "none",
282
+ onPress: () => {
283
+ pressSlice(slice.index);
284
+ },
285
+ onFocus: () => {
286
+ previewSlice(slice.index);
287
+ },
288
+ onBlur: clearSlicePreview,
289
+ ...dataAttributes({
290
+ slot: 'pie-chart-slice'
291
+ })
292
+ }, slice.id);
293
+ }) : null, centerContent ? /*#__PURE__*/_jsx(View, {
294
+ className: "pointer-events-none absolute inset-0 items-center justify-center px-6",
295
+ accessible: false,
296
+ accessibilityElementsHidden: true,
297
+ importantForAccessibility: "no-hide-descendants",
298
+ ...dataAttributes({
299
+ slot: 'pie-chart-center'
300
+ }),
301
+ children: typeof centerContent === 'string' ? /*#__PURE__*/_jsx(Text, {
302
+ className: pieChartCenterLabelVariants(),
303
+ children: centerContent
304
+ }) : centerContent
305
+ }) : null]
306
+ }), tooltipContent !== undefined && tooltipAnchor !== undefined ? /*#__PURE__*/_jsx(ChartTooltipLayer, {
307
+ content: tooltipContent,
308
+ noValueText: text.noValue,
309
+ slot: "pie-chart",
310
+ anchorX: tooltipAnchor.x,
311
+ anchorY: tooltipAnchor.y,
312
+ width: dimension,
313
+ height: dimension
314
+ }) : null]
315
+ });
316
+ return /*#__PURE__*/_jsxs(View, {
317
+ ref: ref,
318
+ className: cn(pieChartRootVariants({
319
+ placement: legendPlacement
320
+ }), className),
321
+ style: style,
322
+ accessible: false,
323
+ ...props,
324
+ ...mergeDataAttributes(props, dataAttributes({
325
+ slot: 'pie-chart'
326
+ })),
327
+ children: [legendFirst ? null : chart, hideLegend ? null : /*#__PURE__*/_jsx(View, {
328
+ className: pieChartLegendVariants({
329
+ layout: legendMode
330
+ }),
331
+ ...dataAttributes({
332
+ slot: 'pie-chart-legend'
333
+ }),
334
+ children: slices.map((slice, visibleIndex) => {
335
+ const isSelected = selectedIndex === slice.index;
336
+ const isList = legendMode === 'list';
337
+ const share = formatShare(slice.percentage, context('label', slice.index));
338
+ const valueText = formatValue(slice.value, context('label', slice.index));
339
+ const a11yShare = formatShare(slice.percentage, context('a11y', slice.index));
340
+ const itemLabel = isList ? `${slice.label}, ${formatValue(slice.value, context('a11y', slice.index))}, ${a11yShare}` : `${slice.label}, ${a11yShare}`;
341
+ const swatch = /*#__PURE__*/_jsx(View, {
342
+ className: "size-2.5 rounded-full",
343
+ style: {
344
+ backgroundColor: slice.fill
345
+ }
346
+ });
347
+ const labelClass = pieChartLegendLabelVariants({
348
+ selected: isSelected,
349
+ layout: legendMode
350
+ });
351
+ const body = isList ? /*#__PURE__*/_jsxs(_Fragment, {
352
+ children: [swatch, /*#__PURE__*/_jsx(Text, {
353
+ className: labelClass,
354
+ numberOfLines: 1,
355
+ children: slice.label
356
+ }), /*#__PURE__*/_jsxs(View, {
357
+ className: "flex-row items-center gap-3",
358
+ children: [/*#__PURE__*/_jsx(Text, {
359
+ className: pieChartLegendMetaVariants(),
360
+ children: valueText
361
+ }), /*#__PURE__*/_jsx(Text, {
362
+ className: pieChartLegendShareVariants(),
363
+ children: share
364
+ })]
365
+ })]
366
+ }) : /*#__PURE__*/_jsxs(_Fragment, {
367
+ children: [swatch, /*#__PURE__*/_jsx(Text, {
368
+ className: labelClass,
369
+ numberOfLines: 1,
370
+ children: legendMode === 'names' ? slice.label : `${slice.label} ${share}`
371
+ })]
372
+ });
373
+ if (!interactive) {
374
+ return /*#__PURE__*/_jsx(View, {
375
+ className: pieChartLegendItemVariants({
376
+ layout: legendMode,
377
+ divided: isList && visibleIndex < slices.length - 1
378
+ }),
379
+ ...dataAttributes({
380
+ slot: 'pie-chart-legend-item'
381
+ }),
382
+ children: body
383
+ }, slice.id);
384
+ }
385
+ return /*#__PURE__*/_jsx(Pressable, {
386
+ accessibilityRole: "button",
387
+ accessibilityLabel: itemLabel,
388
+ accessibilityState: {
389
+ selected: isSelected
390
+ },
391
+ className: pieChartLegendItemVariants({
392
+ layout: legendMode,
393
+ divided: isList && visibleIndex < slices.length - 1,
394
+ interactive: true
395
+ }),
396
+ onPress: () => {
397
+ toggleSelection(slice.index);
398
+ },
399
+ onFocus: () => {
400
+ previewSlice(slice.index);
401
+ },
402
+ onBlur: () => {
403
+ setPreviewIndex(null);
404
+ },
405
+ onHoverIn: () => {
406
+ previewSlice(slice.index);
407
+ },
408
+ onHoverOut: () => {
409
+ setPreviewIndex(null);
410
+ },
411
+ ...dataAttributes({
412
+ slot: 'pie-chart-legend-item',
413
+ selected: isSelected
414
+ }),
415
+ children: body
416
+ }, slice.id);
417
+ })
418
+ }), legendFirst ? chart : null]
419
+ });
420
+ });
421
+ PieChart.displayName = 'PieChart';
422
+ function anglePoint(radii, radius, angleFromTop) {
423
+ const radians = (angleFromTop - 90) * Math.PI / 180;
424
+ return {
425
+ x: radii.cx + radius * Math.cos(radians),
426
+ y: radii.cy + radius * Math.sin(radians)
427
+ };
428
+ }
429
+
430
+ /** Owns its tween, so a slice keyed by `id` animates from wherever it was last drawn. */
431
+ function AnimatedSlice({
432
+ startAngle,
433
+ endAngle,
434
+ animated,
435
+ radii,
436
+ cornerRadius = 0,
437
+ ...pathProps
438
+ }) {
439
+ const {
440
+ from,
441
+ to,
442
+ progress
443
+ } = useChartMorph([startAngle, endAngle], ENTRY_ANGLES, animated);
444
+ const {
445
+ cx,
446
+ cy,
447
+ outerRadius,
448
+ innerRadius
449
+ } = radii;
450
+ const animatedProps = useAnimatedProps(() => {
451
+ const angles = lerpVector(from.get(), to.get(), progress.get());
452
+ return {
453
+ d: slicePath({
454
+ cx,
455
+ cy,
456
+ outerRadius,
457
+ innerRadius,
458
+ startAngle: angles[0] ?? 0,
459
+ endAngle: angles[1] ?? 0,
460
+ cornerRadius
461
+ })
462
+ };
463
+ }, [from, to, progress, cx, cy, outerRadius, innerRadius, cornerRadius]);
464
+ return /*#__PURE__*/_jsx(AnimatedPath, {
465
+ animatedProps: animatedProps,
466
+ ...pathProps,
467
+ focusable: false,
468
+ tabIndex: -1
469
+ });
470
+ }
471
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forwardRef","useEffect","useMemo","useRef","useState","Platform","Pressable","Text","View","Animated","useAnimatedProps","Path","Svg","dataAttributes","mergeDataAttributes","cn","useControllableState","ChartTooltipLayer","formatChartPercent","resolveChartLocaleText","resolveValueFormatter","resolveChartBox","ChartLinearFills","chartFillUrl","resolveChartColor","useChartColorPaints","useChartGradientId","useChartPalette","lerpVector","useChartMorph","useChartMotionEnabled","layoutPieSlices","pieRadii","resolveInnerRadiusRatio","slicePath","pieChartCanvasVariants","pieChartCenterLabelVariants","pieChartLegendItemVariants","pieChartLegendLabelVariants","pieChartLegendMetaVariants","pieChartLegendShareVariants","pieChartLegendVariants","pieChartRootVariants","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","INACTIVE_OPACITY","SLICE_HOVER_EXIT_DELAY_MS","ENTRY_ANGLES","NO_SLICES","hasWarnedPieChartSeries","AnimatedPath","createAnimatedComponent","PieChart","series","size","width","height","hideLegend","legendLayout","legendPlacement","tooltip","centerLabel","selectedItem","selectedItemProp","defaultSelectedItem","onSelectedItemChange","locale","localeText","animation","accessibilityLabel","className","style","props","ref","__DEV__","length","console","warn","pieSeries","at","seriesId","id","data","cornerRadius","paddingAngle","text","formatValue","undefined","formatShare","shareFormatter","share","context","location","dataIndex","animated","palette","paints","gradientId","isSideLegend","legendFirst","legendMode","box","dimension","Math","min","innerRadiusRatio","innerRadius","layout","map","slice","label","value","slices","visibleIndex","fill","index","color","radii","summary","pieChartSummary","formattedValue","percentage","tooltipEnabled","trigger","interactive","hoverable","sliceButtons","hidePlotFromAccessibility","selectedItemState","setSelectedItem","prop","defaultProp","onChange","selectedIndex","toggleSelection","previewIndex","setPreviewIndex","highlightedIndex","clearPreviewTimer","current","clearTimeout","cancelPreviewClear","previewSlice","clearSlicePreview","setTimeout","pressSlice","sliceButtonLabel","releaseSlice","activeLayout","find","activeSlice","centerContent","tooltipSlice","tooltipContent","title","items","tooltipAnchor","anglePoint","outerRadius","startAngle","endAngle","chart","children","collapsable","overflow","accessible","accessibilityRole","focusable","tabIndex","OS","onMouseDown","event","preventDefault","slot","viewBox","String","pointerEvents","accessibilityElementsHidden","importantForAccessibility","idPrefix","colors","x2","y2","dimmed","AnimatedSlice","opacity","onPress","onMouseEnter","onMouseLeave","onPressIn","onPressOut","cursor","mid","target","accessibilityState","selected","left","x","top","y","onFocus","onBlur","content","noValueText","noValue","anchorX","anchorY","placement","isSelected","isList","valueText","a11yShare","itemLabel","swatch","backgroundColor","labelClass","body","numberOfLines","divided","onHoverIn","onHoverOut","displayName","radius","angleFromTop","radians","PI","cx","cos","cy","sin","pathProps","from","to","progress","animatedProps","angles","get","d"],"sourceRoot":"../../../../src","sources":["components/PieChart/index.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+
3
+ import { cva } from '@cdx-ui/utils';
4
+ export const pieChartRootVariants = cva('w-full max-w-full gap-4', {
5
+ variants: {
6
+ placement: {
7
+ top: 'items-center',
8
+ bottom: 'items-center',
9
+ left: 'flex-row items-center justify-center',
10
+ right: 'flex-row items-center justify-center'
11
+ }
12
+ },
13
+ defaultVariants: {
14
+ placement: 'bottom'
15
+ }
16
+ });
17
+ export const pieChartCanvasVariants = cva('relative shrink-0 items-center justify-center overflow-hidden web:outline-none', {
18
+ variants: {
19
+ size: {
20
+ sm: 'size-40',
21
+ md: 'size-48',
22
+ lg: 'size-56',
23
+ xl: 'size-64'
24
+ }
25
+ },
26
+ defaultVariants: {
27
+ size: 'lg'
28
+ }
29
+ });
30
+ export const pieChartLegendVariants = cva('max-w-full', {
31
+ variants: {
32
+ layout: {
33
+ wrap: 'flex-row flex-wrap items-center justify-center gap-x-4 gap-y-2',
34
+ list: 'w-full self-stretch',
35
+ names: 'min-w-0 shrink gap-2'
36
+ }
37
+ },
38
+ defaultVariants: {
39
+ layout: 'wrap'
40
+ }
41
+ });
42
+ export const pieChartLegendItemVariants = cva('flex-row items-center', {
43
+ variants: {
44
+ layout: {
45
+ wrap: 'gap-1.5',
46
+ list: 'w-full gap-2 py-2.5',
47
+ names: 'gap-1.5 py-0.5'
48
+ },
49
+ divided: {
50
+ true: 'border-b border-stroke-secondary',
51
+ false: ''
52
+ },
53
+ interactive: {
54
+ true: 'rounded-sm web:cursor-pointer web:outline-none web:focus-visible:ring-2 web:focus-visible:ring-[var(--color-stroke-ring)]',
55
+ false: ''
56
+ }
57
+ },
58
+ defaultVariants: {
59
+ layout: 'wrap',
60
+ divided: false,
61
+ interactive: false
62
+ }
63
+ });
64
+ export const pieChartLegendLabelVariants = cva('body-sm text-content-primary', {
65
+ variants: {
66
+ selected: {
67
+ true: 'font-medium text-content-primary',
68
+ false: ''
69
+ },
70
+ layout: {
71
+ wrap: '',
72
+ list: 'min-w-0 flex-1 font-normal text-content-primary',
73
+ names: 'font-normal text-content-primary'
74
+ }
75
+ },
76
+ defaultVariants: {
77
+ selected: false,
78
+ layout: 'wrap'
79
+ }
80
+ });
81
+ export const pieChartLegendMetaVariants = cva('body-sm font-normal text-content-primary');
82
+ export const pieChartLegendShareVariants = cva('body-sm w-12 text-right text-content-primary');
83
+ export const pieChartCenterLabelVariants = cva('body-md text-center font-medium text-content-primary');
84
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["cva","pieChartRootVariants","variants","placement","top","bottom","left","right","defaultVariants","pieChartCanvasVariants","size","sm","md","lg","xl","pieChartLegendVariants","layout","wrap","list","names","pieChartLegendItemVariants","divided","true","false","interactive","pieChartLegendLabelVariants","selected","pieChartLegendMetaVariants","pieChartLegendShareVariants","pieChartCenterLabelVariants"],"sourceRoot":"../../../../src","sources":["components/PieChart/styles.ts"],"mappings":";;AAAA,SAASA,GAAG,QAA2B,eAAe;AAItD,OAAO,MAAMC,oBAAoB,GAAGD,GAAG,CAAC,yBAAyB,EAAE;EACjEE,QAAQ,EAAE;IACRC,SAAS,EAAE;MACTC,GAAG,EAAE,cAAc;MACnBC,MAAM,EAAE,cAAc;MACtBC,IAAI,EAAE,sCAAsC;MAC5CC,KAAK,EAAE;IACT;EACF,CAAC;EACDC,eAAe,EAAE;IACfL,SAAS,EAAE;EACb;AACF,CAAC,CAAC;AAEF,OAAO,MAAMM,sBAAsB,GAAGT,GAAG,CACvC,gFAAgF,EAChF;EACEE,QAAQ,EAAE;IACRQ,IAAI,EAAE;MACJC,EAAE,EAAE,SAAS;MACbC,EAAE,EAAE,SAAS;MACbC,EAAE,EAAE,SAAS;MACbC,EAAE,EAAE;IACN;EACF,CAAC;EACDN,eAAe,EAAE;IACfE,IAAI,EAAE;EACR;AACF,CACF,CAAC;AAID,OAAO,MAAMK,sBAAsB,GAAGf,GAAG,CAAC,YAAY,EAAE;EACtDE,QAAQ,EAAE;IACRc,MAAM,EAAE;MACNC,IAAI,EAAE,gEAAgE;MACtEC,IAAI,EAAE,qBAAqB;MAC3BC,KAAK,EAAE;IACT;EACF,CAAC;EACDX,eAAe,EAAE;IACfQ,MAAM,EAAE;EACV;AACF,CAAC,CAAC;AAEF,OAAO,MAAMI,0BAA0B,GAAGpB,GAAG,CAAC,uBAAuB,EAAE;EACrEE,QAAQ,EAAE;IACRc,MAAM,EAAE;MACNC,IAAI,EAAE,SAAS;MACfC,IAAI,EAAE,qBAAqB;MAC3BC,KAAK,EAAE;IACT,CAAC;IACDE,OAAO,EAAE;MACPC,IAAI,EAAE,kCAAkC;MACxCC,KAAK,EAAE;IACT,CAAC;IACDC,WAAW,EAAE;MACXF,IAAI,EAAE,2HAA2H;MACjIC,KAAK,EAAE;IACT;EACF,CAAC;EACDf,eAAe,EAAE;IACfQ,MAAM,EAAE,MAAM;IACdK,OAAO,EAAE,KAAK;IACdG,WAAW,EAAE;EACf;AACF,CAAC,CAAC;AAEF,OAAO,MAAMC,2BAA2B,GAAGzB,GAAG,CAAC,8BAA8B,EAAE;EAC7EE,QAAQ,EAAE;IACRwB,QAAQ,EAAE;MACRJ,IAAI,EAAE,kCAAkC;MACxCC,KAAK,EAAE;IACT,CAAC;IACDP,MAAM,EAAE;MACNC,IAAI,EAAE,EAAE;MACRC,IAAI,EAAE,iDAAiD;MACvDC,KAAK,EAAE;IACT;EACF,CAAC;EACDX,eAAe,EAAE;IACfkB,QAAQ,EAAE,KAAK;IACfV,MAAM,EAAE;EACV;AACF,CAAC,CAAC;AAEF,OAAO,MAAMW,0BAA0B,GAAG3B,GAAG,CAAC,0CAA0C,CAAC;AAEzF,OAAO,MAAM4B,2BAA2B,GAAG5B,GAAG,CAAC,8CAA8C,CAAC;AAE9F,OAAO,MAAM6B,2BAA2B,GAAG7B,GAAG,CAC5C,sDACF,CAAC","ignoreList":[]}
@@ -3,12 +3,12 @@
3
3
  import { useEffect } from 'react';
4
4
  import { View } from 'react-native';
5
5
  import Animated, { Easing, useAnimatedStyle, useSharedValue, withRepeat, withTiming } from 'react-native-reanimated';
6
- import { Circle, Svg } from 'react-native-svg';
7
6
  import { useProgressContext } from '@cdx-ui/primitives';
7
+ import { ProgressRing } from './ProgressRing';
8
8
  import { PROGRESS_CIRCLE_DIMENSIONS } from './styles';
9
9
  import { useProgressCircleColors } from './useProgressCircleColors';
10
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
- const INDETERMINATE_ARC_RATIO = 0.25;
10
+ import { jsx as _jsx } from "react/jsx-runtime";
11
+ const INDETERMINATE_ARC_PERCENT = 25;
12
12
  const ROTATION_DURATION_MS = 1000;
13
13
  export function ProgressCircleRing({
14
14
  size = 'large',
@@ -24,9 +24,6 @@ export function ProgressCircleRing({
24
24
  size: dimension,
25
25
  strokeWidth
26
26
  } = PROGRESS_CIRCLE_DIMENSIONS[size];
27
- const radius = (dimension - strokeWidth) / 2;
28
- const center = dimension / 2;
29
- const circumference = 2 * Math.PI * radius;
30
27
  const isIndeterminate = state === 'indeterminate';
31
28
  useEffect(() => {
32
29
  if (!isIndeterminate) {
@@ -43,32 +40,13 @@ export function ProgressCircleRing({
43
40
  rotate: `${String(rotation.get())}deg`
44
41
  }]
45
42
  }), [rotation]);
46
- const progressLength = isIndeterminate ? circumference * INDETERMINATE_ARC_RATIO : circumference * percent / 100;
47
- const gapLength = circumference - progressLength;
48
- const ring = /*#__PURE__*/_jsxs(Svg, {
49
- width: dimension,
50
- height: dimension,
51
- viewBox: `0 0 ${String(dimension)} ${String(dimension)}`,
52
- children: [/*#__PURE__*/_jsx(Circle, {
53
- cx: center,
54
- cy: center,
55
- r: radius,
56
- stroke: ringColors.track,
57
- strokeWidth: strokeWidth,
58
- fill: "none",
59
- opacity: ringColors.trackOpacity
60
- }), progressLength > 0 ? /*#__PURE__*/_jsx(Circle, {
61
- cx: center,
62
- cy: center,
63
- r: radius,
64
- stroke: ringColors.indicator,
65
- strokeWidth: strokeWidth,
66
- fill: "none",
67
- strokeDasharray: `${String(progressLength)} ${String(gapLength)}`,
68
- strokeLinecap: "round",
69
- rotation: -90,
70
- origin: `${String(center)}, ${String(center)}`
71
- }) : null]
43
+ const ring = /*#__PURE__*/_jsx(ProgressRing, {
44
+ size: dimension,
45
+ strokeWidth: strokeWidth,
46
+ value: isIndeterminate ? INDETERMINATE_ARC_PERCENT : percent,
47
+ trackColor: ringColors.track,
48
+ indicatorColor: ringColors.indicator,
49
+ trackOpacity: ringColors.trackOpacity
72
50
  });
73
51
  if (isIndeterminate) {
74
52
  const inheritClass = color === 'inherit' ? 'text-inherit' : undefined;