@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 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,5 @@
1
+ import React from 'react';
2
+ import type { RatingProgressBarProps } from './type';
3
+ declare const RatingProgressBar: React.FC<RatingProgressBarProps>;
4
+ export default RatingProgressBar;
5
+ //# sourceMappingURL=RatingProgressBar.d.ts.map
@@ -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;;;;;;;;"}
@@ -0,0 +1,3 @@
1
+ export { default as RatingProgressBar } from './RatingProgressBar';
2
+ export * from './type';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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
@@ -0,0 +1,2 @@
1
+ export { default as RatingProgressBar } from './RatingProgressBar';
2
+ export * from './type';
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
+ }