@cdx-ui/primitives 0.0.1-alpha.34 → 0.0.1-alpha.35

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 (43) hide show
  1. package/lib/commonjs/index.js +12 -0
  2. package/lib/commonjs/index.js.map +1 -1
  3. package/lib/commonjs/progress/context.js +11 -0
  4. package/lib/commonjs/progress/context.js.map +1 -0
  5. package/lib/commonjs/progress/createProgressIndicator.js +42 -0
  6. package/lib/commonjs/progress/createProgressIndicator.js.map +1 -0
  7. package/lib/commonjs/progress/createProgressRoot.js +96 -0
  8. package/lib/commonjs/progress/createProgressRoot.js.map +1 -0
  9. package/lib/commonjs/progress/index.js +25 -0
  10. package/lib/commonjs/progress/index.js.map +1 -0
  11. package/lib/commonjs/progress/types.js +6 -0
  12. package/lib/commonjs/progress/types.js.map +1 -0
  13. package/lib/module/index.js +1 -0
  14. package/lib/module/index.js.map +1 -1
  15. package/lib/module/progress/context.js +5 -0
  16. package/lib/module/progress/context.js.map +1 -0
  17. package/lib/module/progress/createProgressIndicator.js +37 -0
  18. package/lib/module/progress/createProgressIndicator.js.map +1 -0
  19. package/lib/module/progress/createProgressRoot.js +91 -0
  20. package/lib/module/progress/createProgressRoot.js.map +1 -0
  21. package/lib/module/progress/index.js +15 -0
  22. package/lib/module/progress/index.js.map +1 -0
  23. package/lib/module/progress/types.js +4 -0
  24. package/lib/module/progress/types.js.map +1 -0
  25. package/lib/typescript/index.d.ts +1 -0
  26. package/lib/typescript/index.d.ts.map +1 -1
  27. package/lib/typescript/progress/context.d.ts +13 -0
  28. package/lib/typescript/progress/context.d.ts.map +1 -0
  29. package/lib/typescript/progress/createProgressIndicator.d.ts +3 -0
  30. package/lib/typescript/progress/createProgressIndicator.d.ts.map +1 -0
  31. package/lib/typescript/progress/createProgressRoot.d.ts +4 -0
  32. package/lib/typescript/progress/createProgressRoot.d.ts.map +1 -0
  33. package/lib/typescript/progress/index.d.ts +10 -0
  34. package/lib/typescript/progress/index.d.ts.map +1 -0
  35. package/lib/typescript/progress/types.d.ts +25 -0
  36. package/lib/typescript/progress/types.d.ts.map +1 -0
  37. package/package.json +2 -2
  38. package/src/index.ts +1 -0
  39. package/src/progress/context.tsx +13 -0
  40. package/src/progress/createProgressIndicator.tsx +35 -0
  41. package/src/progress/createProgressRoot.tsx +109 -0
  42. package/src/progress/index.ts +28 -0
  43. package/src/progress/types.ts +37 -0
@@ -128,5 +128,17 @@ Object.keys(_switch).forEach(function (key) {
128
128
  }
129
129
  });
130
130
  });
131
+ var _progress = require("./progress");
132
+ Object.keys(_progress).forEach(function (key) {
133
+ if (key === "default" || key === "__esModule") return;
134
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
135
+ if (key in exports && exports[key] === _progress[key]) return;
136
+ Object.defineProperty(exports, key, {
137
+ enumerable: true,
138
+ get: function () {
139
+ return _progress[key];
140
+ }
141
+ });
142
+ });
131
143
  var _dataAttributes = require("./utils/dataAttributes");
132
144
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_avatar","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_button","_checkbox","_dialog","_formControl","_input","_link","_overlay","_select","_switch","_dataAttributes"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_avatar","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_button","_checkbox","_dialog","_formControl","_input","_link","_overlay","_select","_switch","_progress","_dataAttributes"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useProgressContext = exports.ProgressProvider = void 0;
7
+ var _utils = require("@cdx-ui/utils");
8
+ const [ProgressProvider, useProgressContext] = (0, _utils.createContext)('ProgressContext');
9
+ exports.useProgressContext = useProgressContext;
10
+ exports.ProgressProvider = ProgressProvider;
11
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_utils","require","ProgressProvider","useProgressContext","createContext","exports"],"sourceRoot":"../../../src","sources":["progress/context.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAWO,MAAM,CAACC,gBAAgB,EAAEC,kBAAkB,CAAC,GACjD,IAAAC,oBAAa,EAAuB,iBAAiB,CAAC;AAACC,OAAA,CAAAF,kBAAA,GAAAA,kBAAA;AAAAE,OAAA,CAAAH,gBAAA,GAAAA,gBAAA","ignoreList":[]}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createProgressIndicator = void 0;
7
+ var _react = require("react");
8
+ var _dataAttributes = require("../utils/dataAttributes");
9
+ var _context = require("./context");
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ const createProgressIndicator = BaseIndicator => /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
12
+ const {
13
+ style,
14
+ ...rest
15
+ } = props;
16
+ const {
17
+ percent,
18
+ state,
19
+ max,
20
+ value
21
+ } = (0, _context.useProgressContext)();
22
+ const filledStyle = (0, _react.useMemo)(() => {
23
+ const pct = `${String(percent)}%`;
24
+ return {
25
+ width: pct,
26
+ height: '100%'
27
+ };
28
+ }, [percent]);
29
+ const dataAttrs = (0, _dataAttributes.dataAttributes)({
30
+ state,
31
+ value: value === null ? undefined : String(value),
32
+ max: String(max)
33
+ });
34
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(BaseIndicator, {
35
+ ref: ref,
36
+ ...rest,
37
+ ...dataAttrs,
38
+ style: [filledStyle, style]
39
+ });
40
+ });
41
+ exports.createProgressIndicator = createProgressIndicator;
42
+ //# sourceMappingURL=createProgressIndicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_dataAttributes","_context","_jsxRuntime","createProgressIndicator","BaseIndicator","forwardRef","props","ref","style","rest","percent","state","max","value","useProgressContext","filledStyle","useMemo","pct","String","width","height","dataAttrs","dataAttributes","undefined","jsx","exports"],"sourceRoot":"../../../src","sources":["progress/createProgressIndicator.tsx"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,eAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AAA+C,IAAAG,WAAA,GAAAH,OAAA;AAIxC,MAAMI,uBAAuB,GAAoBC,aAAqC,iBAC3F,IAAAC,iBAAU,EAAwB,CAACC,KAAK,EAAEC,GAAG,KAAK;EAChD,MAAM;IAAEC,KAAK;IAAE,GAAGC;EAAK,CAAC,GAAGH,KAAgD;EAC3E,MAAM;IAAEI,OAAO;IAAEC,KAAK;IAAEC,GAAG;IAAEC;EAAM,CAAC,GAAG,IAAAC,2BAAkB,EAAC,CAAC;EAE3D,MAAMC,WAAW,GAAG,IAAAC,cAAO,EAAC,MAAiB;IAC3C,MAAMC,GAAG,GAAG,GAAGC,MAAM,CAACR,OAAO,CAAC,GAAoB;IAClD,OAAO;MAAES,KAAK,EAAEF,GAAG;MAAEG,MAAM,EAAE;IAAO,CAAC;EACvC,CAAC,EAAE,CAACV,OAAO,CAAC,CAAC;EAEb,MAAMW,SAAS,GAAG,IAAAC,8BAAc,EAAC;IAC/BX,KAAK;IACLE,KAAK,EAAEA,KAAK,KAAK,IAAI,GAAGU,SAAS,GAAGL,MAAM,CAACL,KAAK,CAAC;IACjDD,GAAG,EAAEM,MAAM,CAACN,GAAG;EACjB,CAAC,CAAC;EAEF,oBACE,IAAAV,WAAA,CAAAsB,GAAA,EAACpB,aAAa;IACZG,GAAG,EAAEA,GAAoB;IAEvB,GAAGE,IAAI;IACP,GAAGY,SAAS;IACZb,KAAK,EAAE,CAACO,WAAW,EAAEP,KAAK;EAAC,CAE9B,CAAC;AAEN,CAAC,CAAC;AAACiB,OAAA,CAAAtB,uBAAA,GAAAA,uBAAA","ignoreList":[]}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createProgressRoot = void 0;
7
+ var _react = require("react");
8
+ var _dataAttributes = require("../utils/dataAttributes");
9
+ var _context = require("./context");
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ function clamp(n, min, max) {
12
+ return Math.min(max, Math.max(min, n));
13
+ }
14
+ function resolveState(value, max, clamped) {
15
+ if (value === null) {
16
+ return 'indeterminate';
17
+ }
18
+ if (max <= 0) {
19
+ return 'complete';
20
+ }
21
+ if (clamped !== null && clamped >= max) {
22
+ return 'complete';
23
+ }
24
+ return 'loading';
25
+ }
26
+ function defaultGetValueLabel(value, max) {
27
+ if (max <= 0) {
28
+ return '0%';
29
+ }
30
+ return `${String(Math.round(value / max * 100))}%`;
31
+ }
32
+ const createProgressRoot = BaseRoot => /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
33
+ const {
34
+ value: valueProp = 0,
35
+ max: maxProp = 100,
36
+ getValueLabel = defaultGetValueLabel,
37
+ children,
38
+ accessibilityRole = 'progressbar',
39
+ accessibilityValue: accessibilityValueProp,
40
+ role = 'progressbar',
41
+ ...restProps
42
+ } = props;
43
+ const max = maxProp > 0 ? maxProp : 0;
44
+ const isIndeterminate = valueProp === null;
45
+ const clampedValue = valueProp === null ? null : clamp(Number.isFinite(valueProp) ? valueProp : 0, 0, max);
46
+ const percent = (0, _react.useMemo)(() => {
47
+ if (clampedValue === null || max <= 0) {
48
+ return 0;
49
+ }
50
+ return clampedValue / max * 100;
51
+ }, [clampedValue, max]);
52
+ const state = (0, _react.useMemo)(() => resolveState(valueProp, max, clampedValue), [valueProp, max, clampedValue]);
53
+ const contextValue = (0, _react.useMemo)(() => ({
54
+ value: clampedValue,
55
+ max,
56
+ percent,
57
+ state
58
+ }), [clampedValue, max, percent, state]);
59
+ const dataAttrs = (0, _dataAttributes.dataAttributes)({
60
+ state,
61
+ value: clampedValue === null ? undefined : String(clampedValue),
62
+ max: String(max)
63
+ });
64
+ const accessibilityValue = (0, _react.useMemo)(() => {
65
+ if (accessibilityValueProp !== undefined) {
66
+ return accessibilityValueProp;
67
+ }
68
+ if (isIndeterminate || clampedValue === null) {
69
+ return {
70
+ min: 0,
71
+ max,
72
+ text: 'Indeterminate'
73
+ };
74
+ }
75
+ return {
76
+ min: 0,
77
+ max,
78
+ now: clampedValue,
79
+ text: getValueLabel(clampedValue, max)
80
+ };
81
+ }, [accessibilityValueProp, isIndeterminate, clampedValue, max, getValueLabel]);
82
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_context.ProgressProvider, {
83
+ value: contextValue,
84
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(BaseRoot, {
85
+ ref: ref,
86
+ ...restProps,
87
+ role: role,
88
+ accessibilityRole: accessibilityRole,
89
+ accessibilityValue: accessibilityValue,
90
+ ...dataAttrs,
91
+ children: children
92
+ })
93
+ });
94
+ });
95
+ exports.createProgressRoot = createProgressRoot;
96
+ //# sourceMappingURL=createProgressRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_dataAttributes","_context","_jsxRuntime","clamp","n","min","max","Math","resolveState","value","clamped","defaultGetValueLabel","String","round","createProgressRoot","BaseRoot","forwardRef","props","ref","valueProp","maxProp","getValueLabel","children","accessibilityRole","accessibilityValue","accessibilityValueProp","role","restProps","isIndeterminate","clampedValue","Number","isFinite","percent","useMemo","state","contextValue","dataAttrs","dataAttributes","undefined","text","now","jsx","ProgressProvider","exports"],"sourceRoot":"../../../src","sources":["progress/createProgressRoot.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createProgress = createProgress;
7
+ Object.defineProperty(exports, "useProgressContext", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _context.useProgressContext;
11
+ }
12
+ });
13
+ var _createProgressIndicator = require("./createProgressIndicator");
14
+ var _createProgressRoot = require("./createProgressRoot");
15
+ var _context = require("./context");
16
+ function createProgress(components) {
17
+ const Progress = (0, _createProgressRoot.createProgressRoot)(components.Root);
18
+ const Indicator = (0, _createProgressIndicator.createProgressIndicator)(components.Indicator);
19
+ Progress.displayName = 'ProgressPrimitive';
20
+ Indicator.displayName = 'ProgressPrimitive.Indicator';
21
+ return Object.assign(Progress, {
22
+ Indicator
23
+ });
24
+ }
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_createProgressIndicator","require","_createProgressRoot","_context","createProgress","components","Progress","createProgressRoot","Root","Indicator","createProgressIndicator","displayName","Object","assign"],"sourceRoot":"../../../src","sources":["progress/index.ts"],"mappings":";;;;;;;;;;;;AACA,IAAAA,wBAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAD,OAAA;AAKA,IAAAE,QAAA,GAAAF,OAAA;AAEO,SAASG,cAAcA,CAK5BC,UAGD,EAAE;EACD,MAAMC,QAAQ,GAAG,IAAAC,sCAAkB,EAAqBF,UAAU,CAACG,IAAI,CAAC;EACxE,MAAMC,SAAS,GAAG,IAAAC,gDAAuB,EAA+BL,UAAU,CAACI,SAAS,CAAC;EAE7FH,QAAQ,CAACK,WAAW,GAAG,mBAAmB;EAC1CF,SAAS,CAACE,WAAW,GAAG,6BAA6B;EAErD,OAAOC,MAAM,CAACC,MAAM,CAACP,QAAQ,EAAE;IAC7BG;EACF,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["progress/types.ts"],"mappings":"","ignoreList":[]}
@@ -10,5 +10,6 @@ export * from './link';
10
10
  export { OverlayInsetsProvider } from './overlay';
11
11
  export * from './select';
12
12
  export * from './switch';
13
+ export * from './progress';
13
14
  export { dataAttributes } from './utils/dataAttributes';
14
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["OverlayInsetsProvider","dataAttributes"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,YAAY;AAC1B,cAAc,UAAU;AACxB,cAAc,gBAAgB;AAC9B,cAAc,SAAS;AACvB,cAAc,QAAQ;AACtB,SAA0BA,qBAAqB,QAAQ,WAAW;AAClE,cAAc,UAAU;AACxB,cAAc,UAAU;AAExB,SAASC,cAAc,QAAQ,wBAAwB","ignoreList":[]}
1
+ {"version":3,"names":["OverlayInsetsProvider","dataAttributes"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,YAAY;AAC1B,cAAc,UAAU;AACxB,cAAc,gBAAgB;AAC9B,cAAc,SAAS;AACvB,cAAc,QAAQ;AACtB,SAA0BA,qBAAqB,QAAQ,WAAW;AAClE,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,YAAY;AAE1B,SAASC,cAAc,QAAQ,wBAAwB","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ import { createContext } from '@cdx-ui/utils';
4
+ export const [ProgressProvider, useProgressContext] = createContext('ProgressContext');
5
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","ProgressProvider","useProgressContext"],"sourceRoot":"../../../src","sources":["progress/context.tsx"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,eAAe;AAW7C,OAAO,MAAM,CAACC,gBAAgB,EAAEC,kBAAkB,CAAC,GACjDF,aAAa,CAAuB,iBAAiB,CAAC","ignoreList":[]}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ import { forwardRef, useMemo } from 'react';
4
+ import { dataAttributes } from '../utils/dataAttributes';
5
+ import { useProgressContext } from './context';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ export const createProgressIndicator = BaseIndicator => /*#__PURE__*/forwardRef((props, ref) => {
8
+ const {
9
+ style,
10
+ ...rest
11
+ } = props;
12
+ const {
13
+ percent,
14
+ state,
15
+ max,
16
+ value
17
+ } = useProgressContext();
18
+ const filledStyle = useMemo(() => {
19
+ const pct = `${String(percent)}%`;
20
+ return {
21
+ width: pct,
22
+ height: '100%'
23
+ };
24
+ }, [percent]);
25
+ const dataAttrs = dataAttributes({
26
+ state,
27
+ value: value === null ? undefined : String(value),
28
+ max: String(max)
29
+ });
30
+ return /*#__PURE__*/_jsx(BaseIndicator, {
31
+ ref: ref,
32
+ ...rest,
33
+ ...dataAttrs,
34
+ style: [filledStyle, style]
35
+ });
36
+ });
37
+ //# sourceMappingURL=createProgressIndicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forwardRef","useMemo","dataAttributes","useProgressContext","jsx","_jsx","createProgressIndicator","BaseIndicator","props","ref","style","rest","percent","state","max","value","filledStyle","pct","String","width","height","dataAttrs","undefined"],"sourceRoot":"../../../src","sources":["progress/createProgressIndicator.tsx"],"mappings":";;AACA,SAASA,UAAU,EAAEC,OAAO,QAA8B,OAAO;AAEjE,SAASC,cAAc,QAAQ,yBAAyB;AACxD,SAASC,kBAAkB,QAAQ,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAI/C,OAAO,MAAMC,uBAAuB,GAAoBC,aAAqC,iBAC3FP,UAAU,CAAwB,CAACQ,KAAK,EAAEC,GAAG,KAAK;EAChD,MAAM;IAAEC,KAAK;IAAE,GAAGC;EAAK,CAAC,GAAGH,KAAgD;EAC3E,MAAM;IAAEI,OAAO;IAAEC,KAAK;IAAEC,GAAG;IAAEC;EAAM,CAAC,GAAGZ,kBAAkB,CAAC,CAAC;EAE3D,MAAMa,WAAW,GAAGf,OAAO,CAAC,MAAiB;IAC3C,MAAMgB,GAAG,GAAG,GAAGC,MAAM,CAACN,OAAO,CAAC,GAAoB;IAClD,OAAO;MAAEO,KAAK,EAAEF,GAAG;MAAEG,MAAM,EAAE;IAAO,CAAC;EACvC,CAAC,EAAE,CAACR,OAAO,CAAC,CAAC;EAEb,MAAMS,SAAS,GAAGnB,cAAc,CAAC;IAC/BW,KAAK;IACLE,KAAK,EAAEA,KAAK,KAAK,IAAI,GAAGO,SAAS,GAAGJ,MAAM,CAACH,KAAK,CAAC;IACjDD,GAAG,EAAEI,MAAM,CAACJ,GAAG;EACjB,CAAC,CAAC;EAEF,oBACET,IAAA,CAACE,aAAa;IACZE,GAAG,EAAEA,GAAoB;IAEvB,GAAGE,IAAI;IACP,GAAGU,SAAS;IACZX,KAAK,EAAE,CAACM,WAAW,EAAEN,KAAK;EAAC,CAE9B,CAAC;AAEN,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+
3
+ import { forwardRef, useMemo } from 'react';
4
+ import { dataAttributes } from '../utils/dataAttributes';
5
+ import { ProgressProvider } from './context';
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ function clamp(n, min, max) {
8
+ return Math.min(max, Math.max(min, n));
9
+ }
10
+ function resolveState(value, max, clamped) {
11
+ if (value === null) {
12
+ return 'indeterminate';
13
+ }
14
+ if (max <= 0) {
15
+ return 'complete';
16
+ }
17
+ if (clamped !== null && clamped >= max) {
18
+ return 'complete';
19
+ }
20
+ return 'loading';
21
+ }
22
+ function defaultGetValueLabel(value, max) {
23
+ if (max <= 0) {
24
+ return '0%';
25
+ }
26
+ return `${String(Math.round(value / max * 100))}%`;
27
+ }
28
+ export const createProgressRoot = BaseRoot => /*#__PURE__*/forwardRef((props, ref) => {
29
+ const {
30
+ value: valueProp = 0,
31
+ max: maxProp = 100,
32
+ getValueLabel = defaultGetValueLabel,
33
+ children,
34
+ accessibilityRole = 'progressbar',
35
+ accessibilityValue: accessibilityValueProp,
36
+ role = 'progressbar',
37
+ ...restProps
38
+ } = props;
39
+ const max = maxProp > 0 ? maxProp : 0;
40
+ const isIndeterminate = valueProp === null;
41
+ const clampedValue = valueProp === null ? null : clamp(Number.isFinite(valueProp) ? valueProp : 0, 0, max);
42
+ const percent = useMemo(() => {
43
+ if (clampedValue === null || max <= 0) {
44
+ return 0;
45
+ }
46
+ return clampedValue / max * 100;
47
+ }, [clampedValue, max]);
48
+ const state = useMemo(() => resolveState(valueProp, max, clampedValue), [valueProp, max, clampedValue]);
49
+ const contextValue = useMemo(() => ({
50
+ value: clampedValue,
51
+ max,
52
+ percent,
53
+ state
54
+ }), [clampedValue, max, percent, state]);
55
+ const dataAttrs = dataAttributes({
56
+ state,
57
+ value: clampedValue === null ? undefined : String(clampedValue),
58
+ max: String(max)
59
+ });
60
+ const accessibilityValue = useMemo(() => {
61
+ if (accessibilityValueProp !== undefined) {
62
+ return accessibilityValueProp;
63
+ }
64
+ if (isIndeterminate || clampedValue === null) {
65
+ return {
66
+ min: 0,
67
+ max,
68
+ text: 'Indeterminate'
69
+ };
70
+ }
71
+ return {
72
+ min: 0,
73
+ max,
74
+ now: clampedValue,
75
+ text: getValueLabel(clampedValue, max)
76
+ };
77
+ }, [accessibilityValueProp, isIndeterminate, clampedValue, max, getValueLabel]);
78
+ return /*#__PURE__*/_jsx(ProgressProvider, {
79
+ value: contextValue,
80
+ children: /*#__PURE__*/_jsx(BaseRoot, {
81
+ ref: ref,
82
+ ...restProps,
83
+ role: role,
84
+ accessibilityRole: accessibilityRole,
85
+ accessibilityValue: accessibilityValue,
86
+ ...dataAttrs,
87
+ children: children
88
+ })
89
+ });
90
+ });
91
+ //# sourceMappingURL=createProgressRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["forwardRef","useMemo","dataAttributes","ProgressProvider","jsx","_jsx","clamp","n","min","max","Math","resolveState","value","clamped","defaultGetValueLabel","String","round","createProgressRoot","BaseRoot","props","ref","valueProp","maxProp","getValueLabel","children","accessibilityRole","accessibilityValue","accessibilityValueProp","role","restProps","isIndeterminate","clampedValue","Number","isFinite","percent","state","contextValue","dataAttrs","undefined","text","now"],"sourceRoot":"../../../src","sources":["progress/createProgressRoot.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ import { createProgressIndicator } from './createProgressIndicator';
4
+ import { createProgressRoot } from './createProgressRoot';
5
+ export { useProgressContext } from './context';
6
+ export function createProgress(components) {
7
+ const Progress = createProgressRoot(components.Root);
8
+ const Indicator = createProgressIndicator(components.Indicator);
9
+ Progress.displayName = 'ProgressPrimitive';
10
+ Indicator.displayName = 'ProgressPrimitive.Indicator';
11
+ return Object.assign(Progress, {
12
+ Indicator
13
+ });
14
+ }
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createProgressIndicator","createProgressRoot","useProgressContext","createProgress","components","Progress","Root","Indicator","displayName","Object","assign"],"sourceRoot":"../../../src","sources":["progress/index.ts"],"mappings":";;AACA,SAASA,uBAAuB,QAAQ,2BAA2B;AACnE,SAASC,kBAAkB,QAAQ,sBAAsB;AAKzD,SAASC,kBAAkB,QAAQ,WAAW;AAE9C,OAAO,SAASC,cAAcA,CAK5BC,UAGD,EAAE;EACD,MAAMC,QAAQ,GAAGJ,kBAAkB,CAAqBG,UAAU,CAACE,IAAI,CAAC;EACxE,MAAMC,SAAS,GAAGP,uBAAuB,CAA+BI,UAAU,CAACG,SAAS,CAAC;EAE7FF,QAAQ,CAACG,WAAW,GAAG,mBAAmB;EAC1CD,SAAS,CAACC,WAAW,GAAG,6BAA6B;EAErD,OAAOC,MAAM,CAACC,MAAM,CAACL,QAAQ,EAAE;IAC7BE;EACF,CAAC,CAAC;AACJ","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["progress/types.ts"],"mappings":"","ignoreList":[]}
@@ -8,6 +8,7 @@ export * from './link';
8
8
  export { type EdgeInsets, OverlayInsetsProvider } from './overlay';
9
9
  export * from './select';
10
10
  export * from './switch';
11
+ export * from './progress';
11
12
  export type { InteractionState } from './types';
12
13
  export { dataAttributes } from './utils/dataAttributes';
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,OAAO,EAAE,KAAK,UAAU,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACnE,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,OAAO,EAAE,KAAK,UAAU,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACnE,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { ProgressDataState } from './types';
2
+ export interface ProgressContextValue {
3
+ /** Clamped value in [0, max], or null when indeterminate */
4
+ readonly value: number | null;
5
+ readonly max: number;
6
+ readonly percent: number;
7
+ readonly state: ProgressDataState;
8
+ }
9
+ export declare const ProgressProvider: import("react").FunctionComponent<{
10
+ children: import("react").ReactNode;
11
+ value: ProgressContextValue;
12
+ }>, useProgressContext: () => ProgressContextValue;
13
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/progress/context.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,WAAW,oBAAoB;IACnC,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;CACnC;AAED,eAAO,MAAO,gBAAgB;;;IAAE,kBAAkB,4BACM,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type React from 'react';
2
+ export declare const createProgressIndicator: <T, R = unknown>(BaseIndicator: React.ComponentType<T>) => React.ForwardRefExoticComponent<React.PropsWithoutRef<React.PropsWithoutRef<T>> & React.RefAttributes<R>>;
3
+ //# sourceMappingURL=createProgressIndicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createProgressIndicator.d.ts","sourceRoot":"","sources":["../../../src/progress/createProgressIndicator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,eAAO,MAAM,uBAAuB,GAAI,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,eAAe,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,8GA0BzF,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type React from 'react';
2
+ import type { InterfaceProgressProps } from './types';
3
+ export declare const createProgressRoot: <T, R = unknown>(BaseRoot: React.ComponentType<T>) => React.ForwardRefExoticComponent<React.PropsWithoutRef<React.PropsWithoutRef<T> & InterfaceProgressProps> & React.RefAttributes<R>>;
4
+ //# sourceMappingURL=createProgressRoot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createProgressRoot.d.ts","sourceRoot":"","sources":["../../../src/progress/createProgressRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,sBAAsB,EAAqB,MAAM,SAAS,CAAC;AA8BzE,eAAO,MAAM,kBAAkB,GAAI,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,UAAU,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,uIA0E/E,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type React from 'react';
2
+ import type { IProgressComponentType } from './types';
3
+ export type { IProgressProps, IProgressComponentType, ProgressDataState } from './types';
4
+ export type { ProgressContextValue } from './context';
5
+ export { useProgressContext } from './context';
6
+ export declare function createProgress<RootProps, IndicatorProps, RootRef = unknown, IndicatorRef = unknown>(components: {
7
+ Root: React.ComponentType<RootProps>;
8
+ Indicator: React.ComponentType<IndicatorProps>;
9
+ }): IProgressComponentType<RootProps, IndicatorProps, RootRef, IndicatorRef>;
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/progress/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEtD,YAAY,EAAE,cAAc,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACzF,YAAY,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,wBAAgB,cAAc,CAC5B,SAAS,EACT,cAAc,EACd,OAAO,GAAG,OAAO,EACjB,YAAY,GAAG,OAAO,EACtB,UAAU,EAAE;IACZ,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IACrC,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;CAChD,GASO,sBAAsB,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,CAAC,CAC/E"}
@@ -0,0 +1,25 @@
1
+ import type { ForwardRefExoticComponent, PropsWithoutRef, ReactNode, RefAttributes } from 'react';
2
+ import type { ViewProps } from 'react-native';
3
+ export type ProgressDataState = 'complete' | 'indeterminate' | 'loading';
4
+ export interface InterfaceProgressProps extends Omit<ViewProps, 'children'> {
5
+ /**
6
+ * Current value in the range [0, max], or `null` for indeterminate progress.
7
+ * Omit or use a number for determinate progress; default is `0`.
8
+ */
9
+ readonly value?: number | null;
10
+ /**
11
+ * Maximum value (minimum is always 0).
12
+ * @default 100
13
+ */
14
+ readonly max?: number;
15
+ /**
16
+ * Optional label for `accessibilityValue.text` when determinate.
17
+ */
18
+ readonly getValueLabel?: (value: number, max: number) => string;
19
+ readonly children?: ReactNode;
20
+ }
21
+ export type IProgressComponentType<RootProps, IndicatorProps, RootRef = unknown, IndicatorRef = unknown> = ForwardRefExoticComponent<PropsWithoutRef<RootProps & InterfaceProgressProps> & RefAttributes<RootRef>> & {
22
+ Indicator: ForwardRefExoticComponent<PropsWithoutRef<IndicatorProps> & RefAttributes<IndicatorRef>>;
23
+ };
24
+ export type IProgressProps = InterfaceProgressProps;
25
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/progress/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAClG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,eAAe,GAAG,SAAS,CAAC;AAEzE,MAAM,WAAW,sBAAuB,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IACzE;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B;;;OAGG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IAChE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B;AAED,MAAM,MAAM,sBAAsB,CAChC,SAAS,EACT,cAAc,EACd,OAAO,GAAG,OAAO,EACjB,YAAY,GAAG,OAAO,IACpB,yBAAyB,CAC3B,eAAe,CAAC,SAAS,GAAG,sBAAsB,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,CAC7E,GAAG;IACF,SAAS,EAAE,yBAAyB,CAClC,eAAe,CAAC,cAAc,CAAC,GAAG,aAAa,CAAC,YAAY,CAAC,CAC9D,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,sBAAsB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cdx-ui/primitives",
3
- "version": "0.0.1-alpha.34",
3
+ "version": "0.0.1-alpha.35",
4
4
  "main": "lib/commonjs/index.js",
5
5
  "module": "lib/module/index.js",
6
6
  "react-native": "src/index.ts",
@@ -57,7 +57,7 @@
57
57
  "@react-native-aria/interactions": "^0.2.16",
58
58
  "@react-stately/checkbox": "3.7.4",
59
59
  "@react-stately/toggle": "3.9.4",
60
- "@cdx-ui/utils": "0.0.1-alpha.34"
60
+ "@cdx-ui/utils": "0.0.1-alpha.35"
61
61
  },
62
62
  "devDependencies": {
63
63
  "@types/react": "*",
package/src/index.ts CHANGED
@@ -8,5 +8,6 @@ export * from './link';
8
8
  export { type EdgeInsets, OverlayInsetsProvider } from './overlay';
9
9
  export * from './select';
10
10
  export * from './switch';
11
+ export * from './progress';
11
12
  export type { InteractionState } from './types';
12
13
  export { dataAttributes } from './utils/dataAttributes';
@@ -0,0 +1,13 @@
1
+ import { createContext } from '@cdx-ui/utils';
2
+ import type { ProgressDataState } from './types';
3
+
4
+ export interface ProgressContextValue {
5
+ /** Clamped value in [0, max], or null when indeterminate */
6
+ readonly value: number | null;
7
+ readonly max: number;
8
+ readonly percent: number;
9
+ readonly state: ProgressDataState;
10
+ }
11
+
12
+ export const [ProgressProvider, useProgressContext] =
13
+ createContext<ProgressContextValue>('ProgressContext');
@@ -0,0 +1,35 @@
1
+ import type React from 'react';
2
+ import { forwardRef, useMemo, type PropsWithoutRef } from 'react';
3
+ import type { ViewStyle } from 'react-native';
4
+ import { dataAttributes } from '../utils/dataAttributes';
5
+ import { useProgressContext } from './context';
6
+
7
+ type PercentString = `${number}%`;
8
+
9
+ export const createProgressIndicator = <T, R = unknown>(BaseIndicator: React.ComponentType<T>) =>
10
+ forwardRef<R, PropsWithoutRef<T>>((props, ref) => {
11
+ const { style, ...rest } = props as PropsWithoutRef<T> & { style?: object };
12
+ const { percent, state, max, value } = useProgressContext();
13
+
14
+ const filledStyle = useMemo((): ViewStyle => {
15
+ const pct = `${String(percent)}%` as PercentString;
16
+ return { width: pct, height: '100%' };
17
+ }, [percent]);
18
+
19
+ const dataAttrs = dataAttributes({
20
+ state,
21
+ value: value === null ? undefined : String(value),
22
+ max: String(max),
23
+ });
24
+
25
+ return (
26
+ <BaseIndicator
27
+ ref={ref as React.Ref<R>}
28
+ {...({
29
+ ...rest,
30
+ ...dataAttrs,
31
+ style: [filledStyle, style],
32
+ } as T)}
33
+ />
34
+ );
35
+ });
@@ -0,0 +1,109 @@
1
+ import type React from 'react';
2
+ import { forwardRef, useMemo, type PropsWithoutRef } from 'react';
3
+ import { dataAttributes } from '../utils/dataAttributes';
4
+ import { ProgressProvider } from './context';
5
+ import type { InterfaceProgressProps, ProgressDataState } from './types';
6
+
7
+ function clamp(n: number, min: number, max: number): number {
8
+ return Math.min(max, Math.max(min, n));
9
+ }
10
+
11
+ function resolveState(
12
+ value: number | null,
13
+ max: number,
14
+ clamped: number | null,
15
+ ): ProgressDataState {
16
+ if (value === null) {
17
+ return 'indeterminate';
18
+ }
19
+ if (max <= 0) {
20
+ return 'complete';
21
+ }
22
+ if (clamped !== null && clamped >= max) {
23
+ return 'complete';
24
+ }
25
+ return 'loading';
26
+ }
27
+
28
+ function defaultGetValueLabel(value: number, max: number): string {
29
+ if (max <= 0) {
30
+ return '0%';
31
+ }
32
+ return `${String(Math.round((value / max) * 100))}%`;
33
+ }
34
+
35
+ export const createProgressRoot = <T, R = unknown>(BaseRoot: React.ComponentType<T>) =>
36
+ forwardRef<R, PropsWithoutRef<T> & InterfaceProgressProps>((props, ref) => {
37
+ const {
38
+ value: valueProp = 0,
39
+ max: maxProp = 100,
40
+ getValueLabel = defaultGetValueLabel,
41
+ children,
42
+ accessibilityRole = 'progressbar',
43
+ accessibilityValue: accessibilityValueProp,
44
+ role = 'progressbar',
45
+ ...restProps
46
+ } = props;
47
+ const max = maxProp > 0 ? maxProp : 0;
48
+ const isIndeterminate = valueProp === null;
49
+ const clampedValue =
50
+ valueProp === null ? null : clamp(Number.isFinite(valueProp) ? valueProp : 0, 0, max);
51
+
52
+ const percent = useMemo(() => {
53
+ if (clampedValue === null || max <= 0) {
54
+ return 0;
55
+ }
56
+ return (clampedValue / max) * 100;
57
+ }, [clampedValue, max]);
58
+
59
+ const state = useMemo(
60
+ () => resolveState(valueProp, max, clampedValue),
61
+ [valueProp, max, clampedValue],
62
+ );
63
+
64
+ const contextValue = useMemo(
65
+ () => ({
66
+ value: clampedValue,
67
+ max,
68
+ percent,
69
+ state,
70
+ }),
71
+ [clampedValue, max, percent, state],
72
+ );
73
+
74
+ const dataAttrs = dataAttributes({
75
+ state,
76
+ value: clampedValue === null ? undefined : String(clampedValue),
77
+ max: String(max),
78
+ });
79
+
80
+ const accessibilityValue = useMemo(() => {
81
+ if (accessibilityValueProp !== undefined) {
82
+ return accessibilityValueProp;
83
+ }
84
+ if (isIndeterminate || clampedValue === null) {
85
+ return { min: 0, max, text: 'Indeterminate' };
86
+ }
87
+ return {
88
+ min: 0,
89
+ max,
90
+ now: clampedValue,
91
+ text: getValueLabel(clampedValue, max),
92
+ };
93
+ }, [accessibilityValueProp, isIndeterminate, clampedValue, max, getValueLabel]);
94
+
95
+ return (
96
+ <ProgressProvider value={contextValue}>
97
+ <BaseRoot
98
+ ref={ref as React.Ref<R>}
99
+ {...(restProps as T)}
100
+ role={role}
101
+ accessibilityRole={accessibilityRole}
102
+ accessibilityValue={accessibilityValue}
103
+ {...dataAttrs}
104
+ >
105
+ {children}
106
+ </BaseRoot>
107
+ </ProgressProvider>
108
+ );
109
+ });
@@ -0,0 +1,28 @@
1
+ import type React from 'react';
2
+ import { createProgressIndicator } from './createProgressIndicator';
3
+ import { createProgressRoot } from './createProgressRoot';
4
+ import type { IProgressComponentType } from './types';
5
+
6
+ export type { IProgressProps, IProgressComponentType, ProgressDataState } from './types';
7
+ export type { ProgressContextValue } from './context';
8
+ export { useProgressContext } from './context';
9
+
10
+ export function createProgress<
11
+ RootProps,
12
+ IndicatorProps,
13
+ RootRef = unknown,
14
+ IndicatorRef = unknown,
15
+ >(components: {
16
+ Root: React.ComponentType<RootProps>;
17
+ Indicator: React.ComponentType<IndicatorProps>;
18
+ }) {
19
+ const Progress = createProgressRoot<RootProps, RootRef>(components.Root);
20
+ const Indicator = createProgressIndicator<IndicatorProps, IndicatorRef>(components.Indicator);
21
+
22
+ Progress.displayName = 'ProgressPrimitive';
23
+ Indicator.displayName = 'ProgressPrimitive.Indicator';
24
+
25
+ return Object.assign(Progress, {
26
+ Indicator,
27
+ }) as IProgressComponentType<RootProps, IndicatorProps, RootRef, IndicatorRef>;
28
+ }
@@ -0,0 +1,37 @@
1
+ import type { ForwardRefExoticComponent, PropsWithoutRef, ReactNode, RefAttributes } from 'react';
2
+ import type { ViewProps } from 'react-native';
3
+
4
+ export type ProgressDataState = 'complete' | 'indeterminate' | 'loading';
5
+
6
+ export interface InterfaceProgressProps extends Omit<ViewProps, 'children'> {
7
+ /**
8
+ * Current value in the range [0, max], or `null` for indeterminate progress.
9
+ * Omit or use a number for determinate progress; default is `0`.
10
+ */
11
+ readonly value?: number | null;
12
+ /**
13
+ * Maximum value (minimum is always 0).
14
+ * @default 100
15
+ */
16
+ readonly max?: number;
17
+ /**
18
+ * Optional label for `accessibilityValue.text` when determinate.
19
+ */
20
+ readonly getValueLabel?: (value: number, max: number) => string;
21
+ readonly children?: ReactNode;
22
+ }
23
+
24
+ export type IProgressComponentType<
25
+ RootProps,
26
+ IndicatorProps,
27
+ RootRef = unknown,
28
+ IndicatorRef = unknown,
29
+ > = ForwardRefExoticComponent<
30
+ PropsWithoutRef<RootProps & InterfaceProgressProps> & RefAttributes<RootRef>
31
+ > & {
32
+ Indicator: ForwardRefExoticComponent<
33
+ PropsWithoutRef<IndicatorProps> & RefAttributes<IndicatorRef>
34
+ >;
35
+ };
36
+
37
+ export type IProgressProps = InterfaceProgressProps;