@cleartrip/ct-design-rating-progress-bar 4.0.0-SNAPSHOT-test.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -0
- package/dist/RatingProgressBar.d.ts +5 -0
- package/dist/RatingProgressBar.d.ts.map +1 -0
- package/dist/ct-design-rating-progress-bar.browser.cjs.js +2 -0
- package/dist/ct-design-rating-progress-bar.browser.cjs.js.map +1 -0
- package/dist/ct-design-rating-progress-bar.browser.esm.js +2 -0
- package/dist/ct-design-rating-progress-bar.browser.esm.js.map +1 -0
- package/dist/ct-design-rating-progress-bar.cjs.js +43 -0
- package/dist/ct-design-rating-progress-bar.cjs.js.map +1 -0
- package/dist/ct-design-rating-progress-bar.esm.js +41 -0
- package/dist/ct-design-rating-progress-bar.esm.js.map +1 -0
- package/dist/ct-design-rating-progress-bar.umd.js +44 -0
- package/dist/ct-design-rating-progress-bar.umd.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/type.d.ts +15 -0
- package/dist/type.d.ts.map +1 -0
- package/package.json +48 -0
- package/src/RatingProgressBar.tsx +66 -0
- package/src/index.ts +2 -0
- package/src/type.ts +37 -0
package/README.md
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# RatingProgressBar
|
|
2
|
+
|
|
3
|
+
A progress bar component with rating visualization.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @cleartrip/ct-design-rating-progress-bar
|
|
11
|
+
# or
|
|
12
|
+
pnpm add @cleartrip/ct-design-rating-progress-bar
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
### Peer dependencies
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# Required for all targets
|
|
19
|
+
npm install react
|
|
20
|
+
|
|
21
|
+
# Web only
|
|
22
|
+
npm install react-dom
|
|
23
|
+
|
|
24
|
+
# React Native only
|
|
25
|
+
npm install react-native
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Usage
|
|
31
|
+
|
|
32
|
+
### Basic
|
|
33
|
+
|
|
34
|
+
```tsx
|
|
35
|
+
import { RatingProgressBar } from '@cleartrip/ct-design-rating-progress-bar';
|
|
36
|
+
|
|
37
|
+
function Example() {
|
|
38
|
+
return (
|
|
39
|
+
<RatingProgressBar>
|
|
40
|
+
{/* Basic usage */}
|
|
41
|
+
</RatingProgressBar>
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Accessibility
|
|
49
|
+
|
|
50
|
+
- The component follows accessibility best practices
|
|
51
|
+
- Ensure proper ARIA attributes are provided where needed
|
|
52
|
+
- Test with screen readers to ensure usability
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## Migration
|
|
57
|
+
|
|
58
|
+
If migrating from a previous version:
|
|
59
|
+
|
|
60
|
+
```diff
|
|
61
|
+
- import { RatingProgressBar } from 'yagami/core/components';
|
|
62
|
+
+ import { RatingProgressBar } from '@cleartrip/ct-design-rating-progress-bar';
|
|
63
|
+
```
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RatingProgressBar.d.ts","sourceRoot":"","sources":["../packages/components/RatingProgressBar/src/RatingProgressBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAKnD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,QAAQ,CAAC;AAUrD,QAAA,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAgDvD,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var r=require("react/jsx-runtime"),e=require("react"),o=require("@cleartrip/ct-design-container"),t=require("@cleartrip/ct-design-style-manager");const s=t.makeStyles(()=>({progressContainer:{height:"100%"}}));exports.RatingProgressBar=({progress:i,radius:n=2,barColor:a,progressedBarColor:l,height:d=4,width:u=244,delay:g=200,styleConfig:c})=>{const[h,p]=e.useState(0);e.useEffect(()=>{const r=window.setTimeout(()=>{p(i)},g);return()=>window.clearTimeout(r)},[i,g]);const C=t.useStyles(r=>({root:{borderRadius:n,height:d,width:u,backgroundColor:a||(null==r?void 0:r.color.background.defaultDark),overflow:"hidden"},progress:{backgroundColor:l||(null==r?void 0:r.color.text.primary),borderRadius:n,width:`${h}%`,transition:"width 500ms ease-in-out"}}),[n,d,u,a,l,h]);return r.jsx(o.Container,{styleConfig:{root:[C.root,...(null==c?void 0:c.root)||[]]},children:r.jsx(o.Container,{styleConfig:{root:[s.progressContainer,C.progress,...(null==c?void 0:c.progress)||[]]}})})};
|
|
2
|
+
//# sourceMappingURL=ct-design-rating-progress-bar.browser.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ct-design-rating-progress-bar.browser.cjs.js","sources":["../packages/components/RatingProgressBar/src/RatingProgressBar.tsx"],"sourcesContent":[null],"names":["staticStyles","makeStyles","progressContainer","height","progress","radius","barColor","progressedBarColor","width","delay","styleConfig","animatedProgress","setAnimatedProgress","useState","useEffect","timeoutId","window","setTimeout","clearTimeout","dynamicStyles","useStyles","t","root","borderRadius","backgroundColor","color","background","defaultDark","overflow","text","primary","transition","_jsx","Container","children"],"mappings":"+JAOA,MAEMA,EAAeC,EAAUA,WAAC,KAAO,CACrCC,kBAAmB,CACjBC,OAAQ,qCAIgD,EAC1DC,WACAC,SAAS,EACTC,WACAC,qBACAJ,SAAS,EACTK,QAAQ,IACRC,QAAQ,IACRC,kBAEA,MAAOC,EAAkBC,GAAuBC,EAAQA,SAAC,GAEzDC,EAAAA,UAAU,KACR,MAAMC,EAAYC,OAAOC,WAAW,KAClCL,EAAoBR,IACnBK,GAEH,MAAO,IAAMO,OAAOE,aAAaH,IAChC,CAACX,EAAUK,IAEd,MAAMU,EAAgBC,YACnBC,IAAO,CACNC,KAAM,CACJC,aAAclB,EACdF,SACAK,QACAgB,gBAAiBlB,IAAYe,aAAC,EAADA,EAAGI,MAAMC,WAAWC,aACjDC,SAAU,UAEZxB,SAAU,CACRoB,gBAAiBjB,IAAsBc,aAAC,EAADA,EAAGI,MAAMI,KAAKC,SACrDP,aAAclB,EACdG,MAAO,GAAGG,KACVoB,WAAY,6BAGhB,CAAC1B,EAAQF,EAAQK,EAAOF,EAAUC,EAAoBI,IAGxD,OACEqB,MAACC,EAAAA,UAAS,CAACvB,YAAa,CAAEY,KAAM,CAACH,EAAcG,SAAUZ,aAAW,EAAXA,EAAaY,OAAQ,KAC5EY,SAAAF,EAAAA,IAACC,EAASA,UAAA,CACRvB,YAAa,CACXY,KAAM,CAACtB,EAAaE,kBAAmBiB,EAAcf,aAAcM,aAAA,EAAAA,EAAaN,WAAY"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import{useState as o,useEffect as t}from"react";import{Container as e}from"@cleartrip/ct-design-container";import{makeStyles as i,useStyles as n}from"@cleartrip/ct-design-style-manager";const s=i(()=>({progressContainer:{height:"100%"}})),d=({progress:i,radius:d=2,barColor:l,progressedBarColor:a,height:g=4,width:c=244,delay:u=200,styleConfig:p})=>{const[m,h]=o(0);t(()=>{const r=window.setTimeout(()=>{h(i)},u);return()=>window.clearTimeout(r)},[i,u]);const f=n(r=>({root:{borderRadius:d,height:g,width:c,backgroundColor:l||(null==r?void 0:r.color.background.defaultDark),overflow:"hidden"},progress:{backgroundColor:a||(null==r?void 0:r.color.text.primary),borderRadius:d,width:`${m}%`,transition:"width 500ms ease-in-out"}}),[d,g,c,l,a,m]);return r(e,{styleConfig:{root:[f.root,...(null==p?void 0:p.root)||[]]},children:r(e,{styleConfig:{root:[s.progressContainer,f.progress,...(null==p?void 0:p.progress)||[]]}})})};export{d as RatingProgressBar};
|
|
2
|
+
//# sourceMappingURL=ct-design-rating-progress-bar.browser.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ct-design-rating-progress-bar.browser.esm.js","sources":["../packages/components/RatingProgressBar/src/RatingProgressBar.tsx"],"sourcesContent":[null],"names":["staticStyles","makeStyles","progressContainer","height","RatingProgressBar","progress","radius","barColor","progressedBarColor","width","delay","styleConfig","animatedProgress","setAnimatedProgress","useState","useEffect","timeoutId","window","setTimeout","clearTimeout","dynamicStyles","useStyles","t","root","borderRadius","backgroundColor","color","background","defaultDark","overflow","text","primary","transition","_jsx","Container","children"],"mappings":"kOAOA,MAEMA,EAAeC,EAAW,KAAO,CACrCC,kBAAmB,CACjBC,OAAQ,WAINC,EAAsD,EAC1DC,WACAC,SAAS,EACTC,WACAC,qBACAL,SAAS,EACTM,QAAQ,IACRC,QAAQ,IACRC,kBAEA,MAAOC,EAAkBC,GAAuBC,EAAS,GAEzDC,EAAU,KACR,MAAMC,EAAYC,OAAOC,WAAW,KAClCL,EAAoBR,IACnBK,GAEH,MAAO,IAAMO,OAAOE,aAAaH,IAChC,CAACX,EAAUK,IAEd,MAAMU,EAAgBC,EACnBC,IAAO,CACNC,KAAM,CACJC,aAAclB,EACdH,SACAM,QACAgB,gBAAiBlB,IAAYe,aAAC,EAADA,EAAGI,MAAMC,WAAWC,aACjDC,SAAU,UAEZxB,SAAU,CACRoB,gBAAiBjB,IAAsBc,aAAC,EAADA,EAAGI,MAAMI,KAAKC,SACrDP,aAAclB,EACdG,MAAO,GAAGG,KACVoB,WAAY,6BAGhB,CAAC1B,EAAQH,EAAQM,EAAOF,EAAUC,EAAoBI,IAGxD,OACEqB,EAACC,EAAS,CAACvB,YAAa,CAAEY,KAAM,CAACH,EAAcG,SAAUZ,aAAW,EAAXA,EAAaY,OAAQ,KAC5EY,SAAAF,EAACC,EAAS,CACRvB,YAAa,CACXY,KAAM,CAACvB,EAAaE,kBAAmBkB,EAAcf,aAAcM,aAAA,EAAAA,EAAaN,WAAY"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var react = require('react');
|
|
5
|
+
var ctDesignContainer = require('@cleartrip/ct-design-container');
|
|
6
|
+
var ctDesignStyleManager = require('@cleartrip/ct-design-style-manager');
|
|
7
|
+
|
|
8
|
+
const ANIMATION_DURATION_MS = 500;
|
|
9
|
+
const staticStyles = ctDesignStyleManager.makeStyles(() => ({
|
|
10
|
+
progressContainer: {
|
|
11
|
+
height: '100%',
|
|
12
|
+
},
|
|
13
|
+
}));
|
|
14
|
+
const RatingProgressBar = ({ progress, radius = 2, barColor, progressedBarColor, height = 4, width = 244, delay = 200, styleConfig, }) => {
|
|
15
|
+
const [animatedProgress, setAnimatedProgress] = react.useState(0);
|
|
16
|
+
react.useEffect(() => {
|
|
17
|
+
const timeoutId = window.setTimeout(() => {
|
|
18
|
+
setAnimatedProgress(progress);
|
|
19
|
+
}, delay);
|
|
20
|
+
return () => window.clearTimeout(timeoutId);
|
|
21
|
+
}, [progress, delay]);
|
|
22
|
+
const dynamicStyles = ctDesignStyleManager.useStyles((t) => ({
|
|
23
|
+
root: {
|
|
24
|
+
borderRadius: radius,
|
|
25
|
+
height,
|
|
26
|
+
width,
|
|
27
|
+
backgroundColor: barColor || (t === null || t === void 0 ? void 0 : t.color.background.defaultDark),
|
|
28
|
+
overflow: 'hidden',
|
|
29
|
+
},
|
|
30
|
+
progress: {
|
|
31
|
+
backgroundColor: progressedBarColor || (t === null || t === void 0 ? void 0 : t.color.text.primary),
|
|
32
|
+
borderRadius: radius,
|
|
33
|
+
width: `${animatedProgress}%`,
|
|
34
|
+
transition: `width ${ANIMATION_DURATION_MS}ms ease-in-out`,
|
|
35
|
+
},
|
|
36
|
+
}), [radius, height, width, barColor, progressedBarColor, animatedProgress]);
|
|
37
|
+
return (jsxRuntime.jsx(ctDesignContainer.Container, { styleConfig: { root: [dynamicStyles.root, ...((styleConfig === null || styleConfig === void 0 ? void 0 : styleConfig.root) || [])] }, children: jsxRuntime.jsx(ctDesignContainer.Container, { styleConfig: {
|
|
38
|
+
root: [staticStyles.progressContainer, dynamicStyles.progress, ...((styleConfig === null || styleConfig === void 0 ? void 0 : styleConfig.progress) || [])],
|
|
39
|
+
} }) }));
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
exports.RatingProgressBar = RatingProgressBar;
|
|
43
|
+
//# sourceMappingURL=ct-design-rating-progress-bar.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ct-design-rating-progress-bar.cjs.js","sources":["../packages/components/RatingProgressBar/src/RatingProgressBar.tsx"],"sourcesContent":[null],"names":["makeStyles","useState","useEffect","useStyles","_jsx","Container"],"mappings":";;;;;;;AAOA,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAElC,MAAM,YAAY,GAAGA,+BAAU,CAAC,OAAO;AACrC,IAAA,iBAAiB,EAAE;AACjB,QAAA,MAAM,EAAE,MAAM;AACf,KAAA;AACF,CAAA,CAAC,CAAC,CAAC;AAEJ,MAAM,iBAAiB,GAAqC,CAAC,EAC3D,QAAQ,EACR,MAAM,GAAG,CAAC,EACV,QAAQ,EACR,kBAAkB,EAClB,MAAM,GAAG,CAAC,EACV,KAAK,GAAG,GAAG,EACX,KAAK,GAAG,GAAG,EACX,WAAW,GACZ,KAAI;IACH,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAGC,cAAQ,CAAC,CAAC,CAAC,CAAC;IAE5DC,eAAS,CAAC,MAAK;AACb,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;YACvC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;SAC/B,EAAE,KAAK,CAAC,CAAC;QAEV,OAAO,MAAM,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC9C,KAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAEtB,MAAM,aAAa,GAAGC,8BAAS,CAC7B,CAAC,CAAC,MAAM;AACN,QAAA,IAAI,EAAE;AACJ,YAAA,YAAY,EAAE,MAAM;YACpB,MAAM;YACN,KAAK;AACL,YAAA,eAAe,EAAE,QAAQ,KAAI,CAAC,aAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAA;AAC5D,YAAA,QAAQ,EAAE,QAAQ;AACnB,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,eAAe,EAAE,kBAAkB,KAAI,CAAC,aAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAA;AAC5D,YAAA,YAAY,EAAE,MAAM;YACpB,KAAK,EAAE,CAAG,EAAA,gBAAgB,CAAG,CAAA,CAAA;YAC7B,UAAU,EAAE,CAAS,MAAA,EAAA,qBAAqB,CAAgB,cAAA,CAAA;AAC3D,SAAA;AACF,KAAA,CAAC,EACF,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CACxE,CAAC;AAEF,IAAA,QACEC,cAAA,CAACC,2BAAS,EAAA,EAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAA,WAAW,KAAA,IAAA,IAAX,WAAW,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAX,WAAW,CAAE,IAAI,KAAI,EAAE,CAAC,CAAC,EAAE,EAClF,QAAA,EAAAD,cAAA,CAACC,2BAAS,EAAA,EACR,WAAW,EAAE;gBACX,IAAI,EAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAA,WAAW,KAAX,IAAA,IAAA,WAAW,KAAX,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAW,CAAE,QAAQ,KAAI,EAAE,CAAC,CAAC;aACjG,EACD,CAAA,EAAA,CACQ,EACZ;AACJ;;;;"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useState, useEffect } from 'react';
|
|
3
|
+
import { Container } from '@cleartrip/ct-design-container';
|
|
4
|
+
import { makeStyles, useStyles } from '@cleartrip/ct-design-style-manager';
|
|
5
|
+
|
|
6
|
+
const ANIMATION_DURATION_MS = 500;
|
|
7
|
+
const staticStyles = makeStyles(() => ({
|
|
8
|
+
progressContainer: {
|
|
9
|
+
height: '100%',
|
|
10
|
+
},
|
|
11
|
+
}));
|
|
12
|
+
const RatingProgressBar = ({ progress, radius = 2, barColor, progressedBarColor, height = 4, width = 244, delay = 200, styleConfig, }) => {
|
|
13
|
+
const [animatedProgress, setAnimatedProgress] = useState(0);
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
const timeoutId = window.setTimeout(() => {
|
|
16
|
+
setAnimatedProgress(progress);
|
|
17
|
+
}, delay);
|
|
18
|
+
return () => window.clearTimeout(timeoutId);
|
|
19
|
+
}, [progress, delay]);
|
|
20
|
+
const dynamicStyles = useStyles((t) => ({
|
|
21
|
+
root: {
|
|
22
|
+
borderRadius: radius,
|
|
23
|
+
height,
|
|
24
|
+
width,
|
|
25
|
+
backgroundColor: barColor || (t === null || t === void 0 ? void 0 : t.color.background.defaultDark),
|
|
26
|
+
overflow: 'hidden',
|
|
27
|
+
},
|
|
28
|
+
progress: {
|
|
29
|
+
backgroundColor: progressedBarColor || (t === null || t === void 0 ? void 0 : t.color.text.primary),
|
|
30
|
+
borderRadius: radius,
|
|
31
|
+
width: `${animatedProgress}%`,
|
|
32
|
+
transition: `width ${ANIMATION_DURATION_MS}ms ease-in-out`,
|
|
33
|
+
},
|
|
34
|
+
}), [radius, height, width, barColor, progressedBarColor, animatedProgress]);
|
|
35
|
+
return (jsx(Container, { styleConfig: { root: [dynamicStyles.root, ...((styleConfig === null || styleConfig === void 0 ? void 0 : styleConfig.root) || [])] }, children: jsx(Container, { styleConfig: {
|
|
36
|
+
root: [staticStyles.progressContainer, dynamicStyles.progress, ...((styleConfig === null || styleConfig === void 0 ? void 0 : styleConfig.progress) || [])],
|
|
37
|
+
} }) }));
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export { RatingProgressBar };
|
|
41
|
+
//# sourceMappingURL=ct-design-rating-progress-bar.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ct-design-rating-progress-bar.esm.js","sources":["../packages/components/RatingProgressBar/src/RatingProgressBar.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;;;AAOA,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAElC,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO;AACrC,IAAA,iBAAiB,EAAE;AACjB,QAAA,MAAM,EAAE,MAAM;AACf,KAAA;AACF,CAAA,CAAC,CAAC,CAAC;AAEJ,MAAM,iBAAiB,GAAqC,CAAC,EAC3D,QAAQ,EACR,MAAM,GAAG,CAAC,EACV,QAAQ,EACR,kBAAkB,EAClB,MAAM,GAAG,CAAC,EACV,KAAK,GAAG,GAAG,EACX,KAAK,GAAG,GAAG,EACX,WAAW,GACZ,KAAI;IACH,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE5D,SAAS,CAAC,MAAK;AACb,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;YACvC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;SAC/B,EAAE,KAAK,CAAC,CAAC;QAEV,OAAO,MAAM,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AAC9C,KAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAEtB,MAAM,aAAa,GAAG,SAAS,CAC7B,CAAC,CAAC,MAAM;AACN,QAAA,IAAI,EAAE;AACJ,YAAA,YAAY,EAAE,MAAM;YACpB,MAAM;YACN,KAAK;AACL,YAAA,eAAe,EAAE,QAAQ,KAAI,CAAC,aAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAA;AAC5D,YAAA,QAAQ,EAAE,QAAQ;AACnB,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,eAAe,EAAE,kBAAkB,KAAI,CAAC,aAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAA;AAC5D,YAAA,YAAY,EAAE,MAAM;YACpB,KAAK,EAAE,CAAG,EAAA,gBAAgB,CAAG,CAAA,CAAA;YAC7B,UAAU,EAAE,CAAS,MAAA,EAAA,qBAAqB,CAAgB,cAAA,CAAA;AAC3D,SAAA;AACF,KAAA,CAAC,EACF,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CACxE,CAAC;AAEF,IAAA,QACEA,GAAA,CAAC,SAAS,EAAA,EAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAA,WAAW,KAAA,IAAA,IAAX,WAAW,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAX,WAAW,CAAE,IAAI,KAAI,EAAE,CAAC,CAAC,EAAE,EAClF,QAAA,EAAAA,GAAA,CAAC,SAAS,EAAA,EACR,WAAW,EAAE;gBACX,IAAI,EAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAA,WAAW,KAAX,IAAA,IAAA,WAAW,KAAX,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAW,CAAE,QAAQ,KAAI,EAAE,CAAC,CAAC;aACjG,EACD,CAAA,EAAA,CACQ,EACZ;AACJ;;;;"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
(function (global, factory) {
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react/jsx-runtime'), require('react'), require('@cleartrip/ct-design-container'), require('@cleartrip/ct-design-style-manager')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['exports', 'react/jsx-runtime', 'react', '@cleartrip/ct-design-container', '@cleartrip/ct-design-style-manager'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.CTDesignSystemRatingProgressBar = {}, global.jsxRuntime, global.React, global.ctDesignContainer, global.ctDesignStyleManager));
|
|
5
|
+
})(this, (function (exports, jsxRuntime, react, ctDesignContainer, ctDesignStyleManager) { 'use strict';
|
|
6
|
+
|
|
7
|
+
const ANIMATION_DURATION_MS = 500;
|
|
8
|
+
const staticStyles = ctDesignStyleManager.makeStyles(() => ({
|
|
9
|
+
progressContainer: {
|
|
10
|
+
height: '100%',
|
|
11
|
+
},
|
|
12
|
+
}));
|
|
13
|
+
const RatingProgressBar = ({ progress, radius = 2, barColor, progressedBarColor, height = 4, width = 244, delay = 200, styleConfig, }) => {
|
|
14
|
+
const [animatedProgress, setAnimatedProgress] = react.useState(0);
|
|
15
|
+
react.useEffect(() => {
|
|
16
|
+
const timeoutId = window.setTimeout(() => {
|
|
17
|
+
setAnimatedProgress(progress);
|
|
18
|
+
}, delay);
|
|
19
|
+
return () => window.clearTimeout(timeoutId);
|
|
20
|
+
}, [progress, delay]);
|
|
21
|
+
const dynamicStyles = ctDesignStyleManager.useStyles((t) => ({
|
|
22
|
+
root: {
|
|
23
|
+
borderRadius: radius,
|
|
24
|
+
height,
|
|
25
|
+
width,
|
|
26
|
+
backgroundColor: barColor || (t === null || t === void 0 ? void 0 : t.color.background.defaultDark),
|
|
27
|
+
overflow: 'hidden',
|
|
28
|
+
},
|
|
29
|
+
progress: {
|
|
30
|
+
backgroundColor: progressedBarColor || (t === null || t === void 0 ? void 0 : t.color.text.primary),
|
|
31
|
+
borderRadius: radius,
|
|
32
|
+
width: `${animatedProgress}%`,
|
|
33
|
+
transition: `width ${ANIMATION_DURATION_MS}ms ease-in-out`,
|
|
34
|
+
},
|
|
35
|
+
}), [radius, height, width, barColor, progressedBarColor, animatedProgress]);
|
|
36
|
+
return (jsxRuntime.jsx(ctDesignContainer.Container, { styleConfig: { root: [dynamicStyles.root, ...((styleConfig === null || styleConfig === void 0 ? void 0 : styleConfig.root) || [])] }, children: jsxRuntime.jsx(ctDesignContainer.Container, { styleConfig: {
|
|
37
|
+
root: [staticStyles.progressContainer, dynamicStyles.progress, ...((styleConfig === null || styleConfig === void 0 ? void 0 : styleConfig.progress) || [])],
|
|
38
|
+
} }) }));
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
exports.RatingProgressBar = RatingProgressBar;
|
|
42
|
+
|
|
43
|
+
}));
|
|
44
|
+
//# sourceMappingURL=ct-design-rating-progress-bar.umd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ct-design-rating-progress-bar.umd.js","sources":["../packages/components/RatingProgressBar/src/RatingProgressBar.tsx"],"sourcesContent":[null],"names":["makeStyles","useState","useEffect","useStyles","_jsx","Container"],"mappings":";;;;;;IAOA,MAAM,qBAAqB,GAAG,GAAG,CAAC;IAElC,MAAM,YAAY,GAAGA,+BAAU,CAAC,OAAO;IACrC,IAAA,iBAAiB,EAAE;IACjB,QAAA,MAAM,EAAE,MAAM;IACf,KAAA;IACF,CAAA,CAAC,CAAC,CAAC;AAEJ,UAAM,iBAAiB,GAAqC,CAAC,EAC3D,QAAQ,EACR,MAAM,GAAG,CAAC,EACV,QAAQ,EACR,kBAAkB,EAClB,MAAM,GAAG,CAAC,EACV,KAAK,GAAG,GAAG,EACX,KAAK,GAAG,GAAG,EACX,WAAW,GACZ,KAAI;QACH,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAGC,cAAQ,CAAC,CAAC,CAAC,CAAC;QAE5DC,eAAS,CAAC,MAAK;IACb,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAK;gBACvC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;aAC/B,EAAE,KAAK,CAAC,CAAC;YAEV,OAAO,MAAM,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC9C,KAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;QAEtB,MAAM,aAAa,GAAGC,8BAAS,CAC7B,CAAC,CAAC,MAAM;IACN,QAAA,IAAI,EAAE;IACJ,YAAA,YAAY,EAAE,MAAM;gBACpB,MAAM;gBACN,KAAK;IACL,YAAA,eAAe,EAAE,QAAQ,KAAI,CAAC,aAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAA;IAC5D,YAAA,QAAQ,EAAE,QAAQ;IACnB,SAAA;IACD,QAAA,QAAQ,EAAE;IACR,YAAA,eAAe,EAAE,kBAAkB,KAAI,CAAC,aAAD,CAAC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAD,CAAC,CAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAA;IAC5D,YAAA,YAAY,EAAE,MAAM;gBACpB,KAAK,EAAE,CAAG,EAAA,gBAAgB,CAAG,CAAA,CAAA;gBAC7B,UAAU,EAAE,CAAS,MAAA,EAAA,qBAAqB,CAAgB,cAAA,CAAA;IAC3D,SAAA;IACF,KAAA,CAAC,EACF,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,gBAAgB,CAAC,CACxE,CAAC;IAEF,IAAA,QACEC,cAAA,CAACC,2BAAS,EAAA,EAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAA,WAAW,KAAA,IAAA,IAAX,WAAW,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAX,WAAW,CAAE,IAAI,KAAI,EAAE,CAAC,CAAC,EAAE,EAClF,QAAA,EAAAD,cAAA,CAACC,2BAAS,EAAA,EACR,WAAW,EAAE;oBACX,IAAI,EAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAA,WAAW,KAAX,IAAA,IAAA,WAAW,KAAX,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAW,CAAE,QAAQ,KAAI,EAAE,CAAC,CAAC;iBACjG,EACD,CAAA,EAAA,CACQ,EACZ;IACJ;;;;;;;;"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../packages/components/RatingProgressBar/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,cAAc,QAAQ,CAAC"}
|
package/dist/type.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Styles } from '@cleartrip/ct-design-types';
|
|
2
|
+
export interface RatingProgressBarProps {
|
|
3
|
+
progress: number;
|
|
4
|
+
barColor?: string;
|
|
5
|
+
progressedBarColor?: string;
|
|
6
|
+
height?: number;
|
|
7
|
+
width?: Styles['width'];
|
|
8
|
+
delay?: number;
|
|
9
|
+
radius?: number;
|
|
10
|
+
styleConfig?: {
|
|
11
|
+
root?: Styles[];
|
|
12
|
+
progress?: Styles[];
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../packages/components/RatingProgressBar/src/type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAOzD,MAAM,WAAW,sBAAsB;IAErC,QAAQ,EAAE,MAAM,CAAC;IAGjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAG5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,KAAK,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAGxB,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,WAAW,CAAC,EAAE;QAEZ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAEhB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH"}
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@cleartrip/ct-design-rating-progress-bar",
|
|
3
|
+
"version": "4.0.0-SNAPSHOT-test.0",
|
|
4
|
+
"description": "RatingProgressBar Component",
|
|
5
|
+
"types": "dist/index.d.ts",
|
|
6
|
+
"main": "./dist/ct-design-rating-progress-bar.cjs.js",
|
|
7
|
+
"jsnext:main": "dist/ct-design-rating-progress-bar.esm.js",
|
|
8
|
+
"module": "dist/ct-design-rating-progress-bar.esm.js",
|
|
9
|
+
"react-native": "src/index.ts",
|
|
10
|
+
"sideEffects": false,
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"types": "./dist/ct-design-rating-progress-bar.d.ts",
|
|
14
|
+
"import": "./dist/ct-design-rating-progress-bar.esm.js",
|
|
15
|
+
"default": "./dist/ct-design-rating-progress-bar.cjs.js"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"browser": {
|
|
19
|
+
"./dist/ct-design-rating-progress-bar.esm.js": "./dist/ct-design-rating-progress-bar.browser.esm.js",
|
|
20
|
+
"./dist/ct-design-rating-progress-bar.cjs.js": "./dist/ct-design-rating-progress-bar.browser.cjs.js"
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"dist",
|
|
24
|
+
"src"
|
|
25
|
+
],
|
|
26
|
+
"dependencies": {
|
|
27
|
+
"@cleartrip/ct-design-container": "4.0.0-SNAPSHOT-test.0",
|
|
28
|
+
"@cleartrip/ct-design-types": "4.0.0-SNAPSHOT-test.0",
|
|
29
|
+
"@cleartrip/ct-design-theme": "4.0.0-SNAPSHOT-test.0",
|
|
30
|
+
"@cleartrip/ct-design-style-manager": "4.0.0-SNAPSHOT-test.0"
|
|
31
|
+
},
|
|
32
|
+
"peerDependencies": {
|
|
33
|
+
"react": ">=16.8.0",
|
|
34
|
+
"react-dom": ">=16.8.0"
|
|
35
|
+
},
|
|
36
|
+
"publishConfig": {
|
|
37
|
+
"access": "public"
|
|
38
|
+
},
|
|
39
|
+
"author": "Cleartrip",
|
|
40
|
+
"license": "ISC",
|
|
41
|
+
"scripts": {
|
|
42
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
43
|
+
"watch-package": "rollup -c -w",
|
|
44
|
+
"build-package": "rollup -c",
|
|
45
|
+
"build-package:clean": "rm -rf dist && rollup -c",
|
|
46
|
+
"publish-package:local": "yalc publish"
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
2
|
+
|
|
3
|
+
import { Container } from '@cleartrip/ct-design-container';
|
|
4
|
+
import { makeStyles, useStyles } from '@cleartrip/ct-design-style-manager';
|
|
5
|
+
|
|
6
|
+
import type { RatingProgressBarProps } from './type';
|
|
7
|
+
|
|
8
|
+
const ANIMATION_DURATION_MS = 500;
|
|
9
|
+
|
|
10
|
+
const staticStyles = makeStyles(() => ({
|
|
11
|
+
progressContainer: {
|
|
12
|
+
height: '100%',
|
|
13
|
+
},
|
|
14
|
+
}));
|
|
15
|
+
|
|
16
|
+
const RatingProgressBar: React.FC<RatingProgressBarProps> = ({
|
|
17
|
+
progress,
|
|
18
|
+
radius = 2,
|
|
19
|
+
barColor,
|
|
20
|
+
progressedBarColor,
|
|
21
|
+
height = 4,
|
|
22
|
+
width = 244,
|
|
23
|
+
delay = 200,
|
|
24
|
+
styleConfig,
|
|
25
|
+
}) => {
|
|
26
|
+
const [animatedProgress, setAnimatedProgress] = useState(0);
|
|
27
|
+
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
const timeoutId = window.setTimeout(() => {
|
|
30
|
+
setAnimatedProgress(progress);
|
|
31
|
+
}, delay);
|
|
32
|
+
|
|
33
|
+
return () => window.clearTimeout(timeoutId);
|
|
34
|
+
}, [progress, delay]);
|
|
35
|
+
|
|
36
|
+
const dynamicStyles = useStyles(
|
|
37
|
+
(t) => ({
|
|
38
|
+
root: {
|
|
39
|
+
borderRadius: radius,
|
|
40
|
+
height,
|
|
41
|
+
width,
|
|
42
|
+
backgroundColor: barColor || t?.color.background.defaultDark,
|
|
43
|
+
overflow: 'hidden',
|
|
44
|
+
},
|
|
45
|
+
progress: {
|
|
46
|
+
backgroundColor: progressedBarColor || t?.color.text.primary,
|
|
47
|
+
borderRadius: radius,
|
|
48
|
+
width: `${animatedProgress}%`,
|
|
49
|
+
transition: `width ${ANIMATION_DURATION_MS}ms ease-in-out`,
|
|
50
|
+
},
|
|
51
|
+
}),
|
|
52
|
+
[radius, height, width, barColor, progressedBarColor, animatedProgress],
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
return (
|
|
56
|
+
<Container styleConfig={{ root: [dynamicStyles.root, ...(styleConfig?.root || [])] }}>
|
|
57
|
+
<Container
|
|
58
|
+
styleConfig={{
|
|
59
|
+
root: [staticStyles.progressContainer, dynamicStyles.progress, ...(styleConfig?.progress || [])],
|
|
60
|
+
}}
|
|
61
|
+
/>
|
|
62
|
+
</Container>
|
|
63
|
+
);
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export default RatingProgressBar;
|
package/src/index.ts
ADDED
package/src/type.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Styles } from '@cleartrip/ct-design-types';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Props for the RatingProgressBar component. A thin horizontal bar that
|
|
5
|
+
* animates its filled portion from 0 to `progress` (a percentage, 0–100)
|
|
6
|
+
* after an optional `delay`.
|
|
7
|
+
*/
|
|
8
|
+
export interface RatingProgressBarProps {
|
|
9
|
+
/** Progress value as a percentage (0–100). */
|
|
10
|
+
progress: number;
|
|
11
|
+
|
|
12
|
+
/** Background color of the track. Defaults to the theme's neutral background. */
|
|
13
|
+
barColor?: string;
|
|
14
|
+
|
|
15
|
+
/** Color of the filled portion. Defaults to the theme's primary text color. */
|
|
16
|
+
progressedBarColor?: string;
|
|
17
|
+
|
|
18
|
+
/** Height of the bar in pixels. */
|
|
19
|
+
height?: number;
|
|
20
|
+
|
|
21
|
+
/** Width of the bar in pixels. */
|
|
22
|
+
width?: Styles['width'];
|
|
23
|
+
|
|
24
|
+
/** Delay before the fill animation starts, in milliseconds. */
|
|
25
|
+
delay?: number;
|
|
26
|
+
|
|
27
|
+
/** Border radius in pixels. */
|
|
28
|
+
radius?: number;
|
|
29
|
+
|
|
30
|
+
/** Custom style overrides. */
|
|
31
|
+
styleConfig?: {
|
|
32
|
+
/** Styles applied to the track container. */
|
|
33
|
+
root?: Styles[];
|
|
34
|
+
/** Styles applied to the filled progress indicator. */
|
|
35
|
+
progress?: Styles[];
|
|
36
|
+
};
|
|
37
|
+
}
|