@cleartrip/ct-design-shimmer 5.10.0 → 5.11.0-SNAPSHOT-native-main.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/dist/Shimmer.d.ts +1 -1
- package/dist/Shimmer.d.ts.map +1 -1
- package/dist/ct-design-shimmer.browser.cjs.js +1 -1
- package/dist/ct-design-shimmer.browser.cjs.js.map +1 -1
- package/dist/ct-design-shimmer.browser.esm.js +2 -2
- package/dist/ct-design-shimmer.browser.esm.js.map +1 -1
- package/dist/ct-design-shimmer.cjs.js +20 -6
- package/dist/ct-design-shimmer.cjs.js.map +1 -1
- package/dist/ct-design-shimmer.esm.js +21 -7
- package/dist/ct-design-shimmer.esm.js.map +1 -1
- package/dist/ct-design-shimmer.umd.js +20 -6
- package/dist/ct-design-shimmer.umd.js.map +1 -1
- package/dist/style.d.ts +2 -0
- package/dist/style.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/Shimmer.tsx +37 -41
- package/src/style.ts +12 -1
package/dist/Shimmer.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { ShimmerProps } from './type';
|
|
2
|
-
declare const Shimmer: import("react").MemoExoticComponent<({ width, height, shape, borderRadius, styleConfig }: ShimmerProps) => import("react/jsx-runtime").JSX.Element>;
|
|
2
|
+
declare const Shimmer: import("react").MemoExoticComponent<({ width, height, shape, borderRadius, styleConfig, variant }: ShimmerProps) => import("react/jsx-runtime").JSX.Element>;
|
|
3
3
|
export default Shimmer;
|
|
4
4
|
//# sourceMappingURL=Shimmer.d.ts.map
|
package/dist/Shimmer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Shimmer.d.ts","sourceRoot":"","sources":["../packages/components/Shimmer/src/Shimmer.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Shimmer.d.ts","sourceRoot":"","sources":["../packages/components/Shimmer/src/Shimmer.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAwBtC,QAAA,MAAM,OAAO,qGAC8E,YAAY,6CA8BtG,CAAC;AAIF,eAAe,OAAO,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";var e=require("react/jsx-runtime"),r=require("react"),i=require("@cleartrip/ct-design-container"),t=require("@cleartrip/ct-design-style-manager"),n=require("@emotion/css");const o=n.keyframes`
|
|
2
2
|
0% { background-position: 200% 0; }
|
|
3
3
|
100% { background-position: -200% 0; }
|
|
4
|
-
`,a=t.makeStyles(e=>({shimmerWrapper:{backgroundColor:e.color.shimmer.disabledLight||"#efefef",overflow:"hidden",width:"100%",height:"100%"}}));function
|
|
4
|
+
`,a="linear-gradient(to right, #e0e0e0 0%, #ffffff 50%, #e0e0e0 100%)",s=n.css({backgroundImage:a,backgroundSize:"150% 100%",animation:`${o} 1.5s infinite linear`}),c=n.css({backgroundImage:a,backgroundSize:"100% 100%"}),d=t.makeStyles(e=>({shimmerWrapper:{backgroundColor:e.color.shimmer.disabledLight||"#efefef",overflow:"hidden",width:"100%",height:"100%"}}));function m(e,r,i){return"circle"===e?"number"==typeof r?r/2:300:i}const u=r.memo(({width:r,height:n,shape:o="rect",borderRadius:a=8,styleConfig:u,variant:l="animated"})=>{const g=t.useStyles(()=>({container:{width:null!=r?r:"100%",height:null!=n?n:"100%",maxWidth:"100%",alignSelf:"stretch",boxSizing:"border-box",borderRadius:m(o,n,a)}}),[r,n,o,a]),h="animated"===l?s:c;return e.jsx(i.Container,{styleConfig:{root:[d.shimmerWrapper,g.container,h,...(null==u?void 0:u.root)||[]]}})});u.displayName="Shimmer",exports.Shimmer=u;
|
|
5
5
|
//# sourceMappingURL=ct-design-shimmer.browser.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ct-design-shimmer.browser.cjs.js","sources":["../packages/components/Shimmer/src/style.ts","../packages/components/Shimmer/src/Shimmer.tsx"],"sourcesContent":[null,null],"names":["shimmerKeyframes","keyframes","shimmerWrapperStyles","makeStyles","theme","shimmerWrapper","backgroundColor","color","shimmer","disabledLight","overflow","width","height","resolveBorderRadius","shape","borderRadius","Shimmer","memo","styleConfig","dynamicStyles","useStyles","container","
|
|
1
|
+
{"version":3,"file":"ct-design-shimmer.browser.cjs.js","sources":["../packages/components/Shimmer/src/style.ts","../packages/components/Shimmer/src/Shimmer.tsx"],"sourcesContent":[null,null],"names":["shimmerKeyframes","keyframes","shimmerGradient","shimmerAnimatedClass","css","backgroundImage","backgroundSize","animation","shimmerStaticClass","shimmerWrapperStyles","makeStyles","theme","shimmerWrapper","backgroundColor","color","shimmer","disabledLight","overflow","width","height","resolveBorderRadius","shape","borderRadius","Shimmer","memo","styleConfig","variant","dynamicStyles","useStyles","container","maxWidth","alignSelf","boxSizing","shimmerVisualClass","_jsx","jsx","Container","root","displayName"],"mappings":"yLASO,MAQMA,EAAmBC,EAASA,SAAA;;;EAS5BC,EAAkB,mEAElBC,EAAuBC,EAAAA,IAAI,CACtCC,gBAAiBH,EACjBI,eAAgB,YAChBC,UAAW,GAAGP,2BAGHQ,EAAqBJ,EAAAA,IAAI,CACpCC,gBAAiBH,EACjBI,eAAgB,cASLG,EAAuBC,EAAAA,WAAYC,IAAW,CACzDC,eAAgB,CACdC,gBAAiBF,EAAMG,MAAMC,QAAQC,eAAiB,UACtDC,SAAU,SACVC,MAAO,OACPC,OAAQ,WCtCZ,SAASC,EACPC,EACAF,EACAG,GAEA,MAAc,WAAVD,EACuB,iBAAXF,EAAsBA,EAAS,EDTb,ICW3BG,CACT,CAUM,MAAAC,EAAUC,EAAAA,KACd,EAAGN,QAAOC,SAAQE,QAAQ,OAAQC,eAAe,EAAGG,cAAaC,UAAU,eACzE,MAAMC,EAAgBC,EAAAA,UACpB,KAAO,CACLC,UAAW,CACTX,MAAOA,QAAAA,EAAS,OAChBC,OAAQA,QAAAA,EAAU,OAClBW,SAAU,OACVC,UAAW,UACXC,UAAW,aACXV,aAAcF,EAAoBC,EAAOF,EAAQG,MAGrD,CAACJ,EAAOC,EAAQE,EAAOC,IAGnBW,EAAkC,aAAZP,EAAyBvB,EAAuBK,EAE5E,OACE0B,EAAAC,IAACC,YAAS,CACRX,YAAa,CACXY,KAAM,CACJ5B,EAAqBG,eACrBe,EAAcE,UACdI,MACIR,aAAA,EAAAA,EAAaY,OAAQ,SAQrCd,EAAQe,YAAc"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{jsx as r}from"react/jsx-runtime";import{memo as e}from"react";import{Container as i}from"@cleartrip/ct-design-container";import{makeStyles as o,useStyles as t}from"@cleartrip/ct-design-style-manager";import{keyframes as n}from"@emotion/css";const a
|
|
1
|
+
import{jsx as r}from"react/jsx-runtime";import{memo as e}from"react";import{Container as i}from"@cleartrip/ct-design-container";import{makeStyles as o,useStyles as t}from"@cleartrip/ct-design-style-manager";import{keyframes as n,css as a}from"@emotion/css";const m="linear-gradient(to right, #e0e0e0 0%, #ffffff 50%, #e0e0e0 100%)",d=a({backgroundImage:m,backgroundSize:"150% 100%",animation:`${n`
|
|
2
2
|
0% { background-position: 200% 0; }
|
|
3
3
|
100% { background-position: -200% 0; }
|
|
4
|
-
|
|
4
|
+
`} 1.5s infinite linear`}),c=a({backgroundImage:m,backgroundSize:"100% 100%"}),s=o(r=>({shimmerWrapper:{backgroundColor:r.color.shimmer.disabledLight||"#efefef",overflow:"hidden",width:"100%",height:"100%"}}));function g(r,e,i){return"circle"===r?"number"==typeof e?e/2:300:i}const f=e(({width:e,height:o,shape:n="rect",borderRadius:a=8,styleConfig:m,variant:f="animated"})=>{const l=t(()=>({container:{width:null!=e?e:"100%",height:null!=o?o:"100%",maxWidth:"100%",alignSelf:"stretch",boxSizing:"border-box",borderRadius:g(n,o,a)}}),[e,o,n,a]),h="animated"===f?d:c;return r(i,{styleConfig:{root:[s.shimmerWrapper,l.container,h,...(null==m?void 0:m.root)||[]]}})});f.displayName="Shimmer";export{f as Shimmer};
|
|
5
5
|
//# sourceMappingURL=ct-design-shimmer.browser.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ct-design-shimmer.browser.esm.js","sources":["../packages/components/Shimmer/src/style.ts","../packages/components/Shimmer/src/Shimmer.tsx"],"sourcesContent":[null,null],"names":["
|
|
1
|
+
{"version":3,"file":"ct-design-shimmer.browser.esm.js","sources":["../packages/components/Shimmer/src/style.ts","../packages/components/Shimmer/src/Shimmer.tsx"],"sourcesContent":[null,null],"names":["shimmerGradient","shimmerAnimatedClass","css","backgroundImage","backgroundSize","animation","keyframes","shimmerStaticClass","shimmerWrapperStyles","makeStyles","theme","shimmerWrapper","backgroundColor","color","shimmer","disabledLight","overflow","width","height","resolveBorderRadius","shape","borderRadius","Shimmer","memo","styleConfig","variant","dynamicStyles","useStyles","container","maxWidth","alignSelf","boxSizing","shimmerVisualClass","_jsx","Container","root","displayName"],"mappings":"iQASO,MAiBMA,EAAkB,mEAElBC,EAAuBC,EAAI,CACtCC,gBAAiBH,EACjBI,eAAgB,YAChBC,UAAW,GAdmBC,CAAS;;;2BAiB5BC,EAAqBL,EAAI,CACpCC,gBAAiBH,EACjBI,eAAgB,cASLI,EAAuBC,EAAYC,IAAW,CACzDC,eAAgB,CACdC,gBAAiBF,EAAMG,MAAMC,QAAQC,eAAiB,UACtDC,SAAU,SACVC,MAAO,OACPC,OAAQ,WCtCZ,SAASC,EACPC,EACAF,EACAG,GAEA,MAAc,WAAVD,EACuB,iBAAXF,EAAsBA,EAAS,EDTb,ICW3BG,CACT,CAUM,MAAAC,EAAUC,EACd,EAAGN,QAAOC,SAAQE,QAAQ,OAAQC,eAAe,EAAGG,cAAaC,UAAU,eACzE,MAAMC,EAAgBC,EACpB,KAAO,CACLC,UAAW,CACTX,MAAOA,QAAAA,EAAS,OAChBC,OAAQA,QAAAA,EAAU,OAClBW,SAAU,OACVC,UAAW,UACXC,UAAW,aACXV,aAAcF,EAAoBC,EAAOF,EAAQG,MAGrD,CAACJ,EAAOC,EAAQE,EAAOC,IAGnBW,EAAkC,aAAZP,EAAyBxB,EAAuBM,EAE5E,OACE0B,EAACC,EAAS,CACRV,YAAa,CACXW,KAAM,CACJ3B,EAAqBG,eACrBe,EAAcE,UACdI,MACIR,aAAA,EAAAA,EAAaW,OAAQ,SAQrCb,EAAQc,YAAc"}
|
|
@@ -12,6 +12,15 @@ const shimmerKeyframes = css.keyframes `
|
|
|
12
12
|
100% { background-position: -200% 0; }
|
|
13
13
|
`;
|
|
14
14
|
const shimmerGradient = 'linear-gradient(to right, #e0e0e0 0%, #ffffff 50%, #e0e0e0 100%)';
|
|
15
|
+
const shimmerAnimatedClass = css.css({
|
|
16
|
+
backgroundImage: shimmerGradient,
|
|
17
|
+
backgroundSize: '150% 100%',
|
|
18
|
+
animation: `${shimmerKeyframes} 1.5s infinite linear`,
|
|
19
|
+
});
|
|
20
|
+
const shimmerStaticClass = css.css({
|
|
21
|
+
backgroundImage: shimmerGradient,
|
|
22
|
+
backgroundSize: '100% 100%',
|
|
23
|
+
});
|
|
15
24
|
const shimmerWrapperStyles = ctDesignStyleManager.makeStyles((theme) => ({
|
|
16
25
|
shimmerWrapper: {
|
|
17
26
|
backgroundColor: theme.color.shimmer.disabledLight || '#efefef',
|
|
@@ -27,20 +36,25 @@ function resolveBorderRadius(shape, height, borderRadius) {
|
|
|
27
36
|
}
|
|
28
37
|
return borderRadius;
|
|
29
38
|
}
|
|
30
|
-
const Shimmer = react.memo(({ width, height, shape = 'rect', borderRadius = 8, styleConfig }) => {
|
|
39
|
+
const Shimmer = react.memo(({ width, height, shape = 'rect', borderRadius = 8, styleConfig, variant = 'animated' }) => {
|
|
31
40
|
const dynamicStyles = ctDesignStyleManager.useStyles(() => ({
|
|
32
41
|
container: {
|
|
33
42
|
width: width !== null && width !== void 0 ? width : '100%',
|
|
34
43
|
height: height !== null && height !== void 0 ? height : '100%',
|
|
44
|
+
maxWidth: '100%',
|
|
45
|
+
alignSelf: 'stretch',
|
|
46
|
+
boxSizing: 'border-box',
|
|
35
47
|
borderRadius: resolveBorderRadius(shape, height, borderRadius),
|
|
36
|
-
background: shimmerGradient,
|
|
37
|
-
minWidth: 400,
|
|
38
|
-
backgroundSize: '150% 100%',
|
|
39
|
-
animation: `${shimmerKeyframes} 1.5s infinite linear`,
|
|
40
48
|
},
|
|
41
49
|
}), [width, height, shape, borderRadius]);
|
|
50
|
+
const shimmerVisualClass = (variant === 'animated' ? shimmerAnimatedClass : shimmerStaticClass);
|
|
42
51
|
return (jsxRuntime.jsx(ctDesignContainer.Container, { styleConfig: {
|
|
43
|
-
root: [
|
|
52
|
+
root: [
|
|
53
|
+
shimmerWrapperStyles.shimmerWrapper,
|
|
54
|
+
dynamicStyles.container,
|
|
55
|
+
shimmerVisualClass,
|
|
56
|
+
...((styleConfig === null || styleConfig === void 0 ? void 0 : styleConfig.root) || []),
|
|
57
|
+
],
|
|
44
58
|
} }));
|
|
45
59
|
});
|
|
46
60
|
Shimmer.displayName = 'Shimmer';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ct-design-shimmer.cjs.js","sources":["../packages/components/Shimmer/src/style.ts","../packages/components/Shimmer/src/Shimmer.tsx"],"sourcesContent":[null,null],"names":["keyframes","makeStyles","memo","useStyles","_jsx","Container"],"mappings":";;;;;;;;AASO,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAQjC,MAAM,gBAAgB,GAAGA,aAAS,CAAA,CAAA;;;CAGxC,CAAC;AAMK,MAAM,eAAe,GAAG,kEAAkE,CAAC;
|
|
1
|
+
{"version":3,"file":"ct-design-shimmer.cjs.js","sources":["../packages/components/Shimmer/src/style.ts","../packages/components/Shimmer/src/Shimmer.tsx"],"sourcesContent":[null,null],"names":["keyframes","css","makeStyles","memo","useStyles","_jsx","Container"],"mappings":";;;;;;;;AASO,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAQjC,MAAM,gBAAgB,GAAGA,aAAS,CAAA,CAAA;;;CAGxC,CAAC;AAMK,MAAM,eAAe,GAAG,kEAAkE,CAAC;AAE3F,MAAM,oBAAoB,GAAGC,OAAG,CAAC;AACtC,IAAA,eAAe,EAAE,eAAe;AAChC,IAAA,cAAc,EAAE,WAAW;IAC3B,SAAS,EAAE,CAAG,EAAA,gBAAgB,CAAuB,qBAAA,CAAA;AACtD,CAAA,CAAC,CAAC;AAEI,MAAM,kBAAkB,GAAGA,OAAG,CAAC;AACpC,IAAA,eAAe,EAAE,eAAe;AAChC,IAAA,cAAc,EAAE,WAAW;AAC5B,CAAA,CAAC,CAAC;AAQI,MAAM,oBAAoB,GAAGC,+BAAU,CAAC,CAAC,KAAK,MAAM;AACzD,IAAA,cAAc,EAAE;QACd,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,IAAI,SAAS;AAC/D,QAAA,QAAQ,EAAE,QAAiB;AAC3B,QAAA,KAAK,EAAE,MAAe;AACtB,QAAA,MAAM,EAAE,MAAe;AACxB,KAAA;AACF,CAAA,CAAC,CAAC;;ACxCH,SAAS,mBAAmB,CAC1B,KAAwB,EACxB,MAAmC,EACnC,YAAoB,EAAA;AAEpB,IAAA,IAAI,KAAK,KAAK,QAAQ,EAAE;AACtB,QAAA,OAAO,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,oBAAoB,CAAC;KACvE;AACD,IAAA,OAAO,YAAY,CAAC;AACtB,CAAC;AAUK,MAAA,OAAO,GAAGC,UAAI,CAClB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,YAAY,GAAG,CAAC,EAAE,WAAW,EAAE,OAAO,GAAG,UAAU,EAAgB,KAAI;AACvG,IAAA,MAAM,aAAa,GAAGC,8BAAS,CAC7B,OAAO;AACL,QAAA,SAAS,EAAE;AACT,YAAA,KAAK,EAAE,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,KAAA,CAAA,GAAA,KAAK,GAAI,MAAM;AACtB,YAAA,MAAM,EAAE,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,MAAM,GAAI,MAAM;AACxB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,SAAS,EAAE,YAAY;YACvB,YAAY,EAAE,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC;AAC/D,SAAA;KACF,CAAC,EACF,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,CACrC,CAAC;AAEF,IAAA,MAAM,kBAAkB,IAAI,OAAO,KAAK,UAAU,GAAG,oBAAoB,GAAG,kBAAkB,CAAW,CAAC;AAE1G,IAAA,QACEC,cAAA,CAACC,2BAAS,EAAA,EACR,WAAW,EAAE;AACX,YAAA,IAAI,EAAE;AACJ,gBAAA,oBAAoB,CAAC,cAAc;AACnC,gBAAA,aAAa,CAAC,SAAS;gBACvB,kBAAkB;gBAClB,IAAI,CAAA,WAAW,KAAX,IAAA,IAAA,WAAW,KAAX,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAW,CAAE,IAAI,KAAI,EAAE,CAAC;AAC7B,aAAA;AACF,SAAA,EAAA,CACD,EACF;AACJ,CAAC,EACD;AAEF,OAAO,CAAC,WAAW,GAAG,SAAS;;;;"}
|
|
@@ -2,7 +2,7 @@ import { jsx } from 'react/jsx-runtime';
|
|
|
2
2
|
import { memo } from 'react';
|
|
3
3
|
import { Container } from '@cleartrip/ct-design-container';
|
|
4
4
|
import { makeStyles, useStyles } from '@cleartrip/ct-design-style-manager';
|
|
5
|
-
import { keyframes } from '@emotion/css';
|
|
5
|
+
import { keyframes, css } from '@emotion/css';
|
|
6
6
|
|
|
7
7
|
const MaxBorderRadiusValue = 300;
|
|
8
8
|
const shimmerKeyframes = keyframes `
|
|
@@ -10,6 +10,15 @@ const shimmerKeyframes = keyframes `
|
|
|
10
10
|
100% { background-position: -200% 0; }
|
|
11
11
|
`;
|
|
12
12
|
const shimmerGradient = 'linear-gradient(to right, #e0e0e0 0%, #ffffff 50%, #e0e0e0 100%)';
|
|
13
|
+
const shimmerAnimatedClass = css({
|
|
14
|
+
backgroundImage: shimmerGradient,
|
|
15
|
+
backgroundSize: '150% 100%',
|
|
16
|
+
animation: `${shimmerKeyframes} 1.5s infinite linear`,
|
|
17
|
+
});
|
|
18
|
+
const shimmerStaticClass = css({
|
|
19
|
+
backgroundImage: shimmerGradient,
|
|
20
|
+
backgroundSize: '100% 100%',
|
|
21
|
+
});
|
|
13
22
|
const shimmerWrapperStyles = makeStyles((theme) => ({
|
|
14
23
|
shimmerWrapper: {
|
|
15
24
|
backgroundColor: theme.color.shimmer.disabledLight || '#efefef',
|
|
@@ -25,20 +34,25 @@ function resolveBorderRadius(shape, height, borderRadius) {
|
|
|
25
34
|
}
|
|
26
35
|
return borderRadius;
|
|
27
36
|
}
|
|
28
|
-
const Shimmer = memo(({ width, height, shape = 'rect', borderRadius = 8, styleConfig }) => {
|
|
37
|
+
const Shimmer = memo(({ width, height, shape = 'rect', borderRadius = 8, styleConfig, variant = 'animated' }) => {
|
|
29
38
|
const dynamicStyles = useStyles(() => ({
|
|
30
39
|
container: {
|
|
31
40
|
width: width !== null && width !== void 0 ? width : '100%',
|
|
32
41
|
height: height !== null && height !== void 0 ? height : '100%',
|
|
42
|
+
maxWidth: '100%',
|
|
43
|
+
alignSelf: 'stretch',
|
|
44
|
+
boxSizing: 'border-box',
|
|
33
45
|
borderRadius: resolveBorderRadius(shape, height, borderRadius),
|
|
34
|
-
background: shimmerGradient,
|
|
35
|
-
minWidth: 400,
|
|
36
|
-
backgroundSize: '150% 100%',
|
|
37
|
-
animation: `${shimmerKeyframes} 1.5s infinite linear`,
|
|
38
46
|
},
|
|
39
47
|
}), [width, height, shape, borderRadius]);
|
|
48
|
+
const shimmerVisualClass = (variant === 'animated' ? shimmerAnimatedClass : shimmerStaticClass);
|
|
40
49
|
return (jsx(Container, { styleConfig: {
|
|
41
|
-
root: [
|
|
50
|
+
root: [
|
|
51
|
+
shimmerWrapperStyles.shimmerWrapper,
|
|
52
|
+
dynamicStyles.container,
|
|
53
|
+
shimmerVisualClass,
|
|
54
|
+
...((styleConfig === null || styleConfig === void 0 ? void 0 : styleConfig.root) || []),
|
|
55
|
+
],
|
|
42
56
|
} }));
|
|
43
57
|
});
|
|
44
58
|
Shimmer.displayName = 'Shimmer';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ct-design-shimmer.esm.js","sources":["../packages/components/Shimmer/src/style.ts","../packages/components/Shimmer/src/Shimmer.tsx"],"sourcesContent":[null,null],"names":["_jsx"],"mappings":";;;;;;AASO,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAQjC,MAAM,gBAAgB,GAAG,SAAS,CAAA,CAAA;;;CAGxC,CAAC;AAMK,MAAM,eAAe,GAAG,kEAAkE,CAAC;
|
|
1
|
+
{"version":3,"file":"ct-design-shimmer.esm.js","sources":["../packages/components/Shimmer/src/style.ts","../packages/components/Shimmer/src/Shimmer.tsx"],"sourcesContent":[null,null],"names":["_jsx"],"mappings":";;;;;;AASO,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAQjC,MAAM,gBAAgB,GAAG,SAAS,CAAA,CAAA;;;CAGxC,CAAC;AAMK,MAAM,eAAe,GAAG,kEAAkE,CAAC;AAE3F,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACtC,IAAA,eAAe,EAAE,eAAe;AAChC,IAAA,cAAc,EAAE,WAAW;IAC3B,SAAS,EAAE,CAAG,EAAA,gBAAgB,CAAuB,qBAAA,CAAA;AACtD,CAAA,CAAC,CAAC;AAEI,MAAM,kBAAkB,GAAG,GAAG,CAAC;AACpC,IAAA,eAAe,EAAE,eAAe;AAChC,IAAA,cAAc,EAAE,WAAW;AAC5B,CAAA,CAAC,CAAC;AAQI,MAAM,oBAAoB,GAAG,UAAU,CAAC,CAAC,KAAK,MAAM;AACzD,IAAA,cAAc,EAAE;QACd,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,IAAI,SAAS;AAC/D,QAAA,QAAQ,EAAE,QAAiB;AAC3B,QAAA,KAAK,EAAE,MAAe;AACtB,QAAA,MAAM,EAAE,MAAe;AACxB,KAAA;AACF,CAAA,CAAC,CAAC;;ACxCH,SAAS,mBAAmB,CAC1B,KAAwB,EACxB,MAAmC,EACnC,YAAoB,EAAA;AAEpB,IAAA,IAAI,KAAK,KAAK,QAAQ,EAAE;AACtB,QAAA,OAAO,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,oBAAoB,CAAC;KACvE;AACD,IAAA,OAAO,YAAY,CAAC;AACtB,CAAC;AAUK,MAAA,OAAO,GAAG,IAAI,CAClB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,YAAY,GAAG,CAAC,EAAE,WAAW,EAAE,OAAO,GAAG,UAAU,EAAgB,KAAI;AACvG,IAAA,MAAM,aAAa,GAAG,SAAS,CAC7B,OAAO;AACL,QAAA,SAAS,EAAE;AACT,YAAA,KAAK,EAAE,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,KAAA,CAAA,GAAA,KAAK,GAAI,MAAM;AACtB,YAAA,MAAM,EAAE,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,MAAM,GAAI,MAAM;AACxB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,SAAS,EAAE,YAAY;YACvB,YAAY,EAAE,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC;AAC/D,SAAA;KACF,CAAC,EACF,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,CACrC,CAAC;AAEF,IAAA,MAAM,kBAAkB,IAAI,OAAO,KAAK,UAAU,GAAG,oBAAoB,GAAG,kBAAkB,CAAW,CAAC;AAE1G,IAAA,QACEA,GAAA,CAAC,SAAS,EAAA,EACR,WAAW,EAAE;AACX,YAAA,IAAI,EAAE;AACJ,gBAAA,oBAAoB,CAAC,cAAc;AACnC,gBAAA,aAAa,CAAC,SAAS;gBACvB,kBAAkB;gBAClB,IAAI,CAAA,WAAW,KAAX,IAAA,IAAA,WAAW,KAAX,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAW,CAAE,IAAI,KAAI,EAAE,CAAC;AAC7B,aAAA;AACF,SAAA,EAAA,CACD,EACF;AACJ,CAAC,EACD;AAEF,OAAO,CAAC,WAAW,GAAG,SAAS;;;;"}
|
|
@@ -10,6 +10,15 @@
|
|
|
10
10
|
100% { background-position: -200% 0; }
|
|
11
11
|
`;
|
|
12
12
|
const shimmerGradient = 'linear-gradient(to right, #e0e0e0 0%, #ffffff 50%, #e0e0e0 100%)';
|
|
13
|
+
const shimmerAnimatedClass = css.css({
|
|
14
|
+
backgroundImage: shimmerGradient,
|
|
15
|
+
backgroundSize: '150% 100%',
|
|
16
|
+
animation: `${shimmerKeyframes} 1.5s infinite linear`,
|
|
17
|
+
});
|
|
18
|
+
const shimmerStaticClass = css.css({
|
|
19
|
+
backgroundImage: shimmerGradient,
|
|
20
|
+
backgroundSize: '100% 100%',
|
|
21
|
+
});
|
|
13
22
|
const shimmerWrapperStyles = ctDesignStyleManager.makeStyles((theme) => ({
|
|
14
23
|
shimmerWrapper: {
|
|
15
24
|
backgroundColor: theme.color.shimmer.disabledLight || '#efefef',
|
|
@@ -25,20 +34,25 @@
|
|
|
25
34
|
}
|
|
26
35
|
return borderRadius;
|
|
27
36
|
}
|
|
28
|
-
const Shimmer = react.memo(({ width, height, shape = 'rect', borderRadius = 8, styleConfig }) => {
|
|
37
|
+
const Shimmer = react.memo(({ width, height, shape = 'rect', borderRadius = 8, styleConfig, variant = 'animated' }) => {
|
|
29
38
|
const dynamicStyles = ctDesignStyleManager.useStyles(() => ({
|
|
30
39
|
container: {
|
|
31
40
|
width: width !== null && width !== void 0 ? width : '100%',
|
|
32
41
|
height: height !== null && height !== void 0 ? height : '100%',
|
|
42
|
+
maxWidth: '100%',
|
|
43
|
+
alignSelf: 'stretch',
|
|
44
|
+
boxSizing: 'border-box',
|
|
33
45
|
borderRadius: resolveBorderRadius(shape, height, borderRadius),
|
|
34
|
-
background: shimmerGradient,
|
|
35
|
-
minWidth: 400,
|
|
36
|
-
backgroundSize: '150% 100%',
|
|
37
|
-
animation: `${shimmerKeyframes} 1.5s infinite linear`,
|
|
38
46
|
},
|
|
39
47
|
}), [width, height, shape, borderRadius]);
|
|
48
|
+
const shimmerVisualClass = (variant === 'animated' ? shimmerAnimatedClass : shimmerStaticClass);
|
|
40
49
|
return (jsxRuntime.jsx(ctDesignContainer.Container, { styleConfig: {
|
|
41
|
-
root: [
|
|
50
|
+
root: [
|
|
51
|
+
shimmerWrapperStyles.shimmerWrapper,
|
|
52
|
+
dynamicStyles.container,
|
|
53
|
+
shimmerVisualClass,
|
|
54
|
+
...((styleConfig === null || styleConfig === void 0 ? void 0 : styleConfig.root) || []),
|
|
55
|
+
],
|
|
42
56
|
} }));
|
|
43
57
|
});
|
|
44
58
|
Shimmer.displayName = 'Shimmer';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ct-design-shimmer.umd.js","sources":["../packages/components/Shimmer/src/style.ts","../packages/components/Shimmer/src/Shimmer.tsx"],"sourcesContent":[null,null],"names":["keyframes","makeStyles","memo","useStyles","_jsx","Container"],"mappings":";;;;;;EASO,MAAM,oBAAoB,GAAG,GAAG,CAAC;EAQjC,MAAM,gBAAgB,GAAGA,aAAS,CAAA,CAAA;;;CAGxC,CAAC;EAMK,MAAM,eAAe,GAAG,kEAAkE,CAAC;
|
|
1
|
+
{"version":3,"file":"ct-design-shimmer.umd.js","sources":["../packages/components/Shimmer/src/style.ts","../packages/components/Shimmer/src/Shimmer.tsx"],"sourcesContent":[null,null],"names":["keyframes","css","makeStyles","memo","useStyles","_jsx","Container"],"mappings":";;;;;;EASO,MAAM,oBAAoB,GAAG,GAAG,CAAC;EAQjC,MAAM,gBAAgB,GAAGA,aAAS,CAAA,CAAA;;;CAGxC,CAAC;EAMK,MAAM,eAAe,GAAG,kEAAkE,CAAC;EAE3F,MAAM,oBAAoB,GAAGC,OAAG,CAAC;EACtC,IAAA,eAAe,EAAE,eAAe;EAChC,IAAA,cAAc,EAAE,WAAW;MAC3B,SAAS,EAAE,CAAG,EAAA,gBAAgB,CAAuB,qBAAA,CAAA;EACtD,CAAA,CAAC,CAAC;EAEI,MAAM,kBAAkB,GAAGA,OAAG,CAAC;EACpC,IAAA,eAAe,EAAE,eAAe;EAChC,IAAA,cAAc,EAAE,WAAW;EAC5B,CAAA,CAAC,CAAC;EAQI,MAAM,oBAAoB,GAAGC,+BAAU,CAAC,CAAC,KAAK,MAAM;EACzD,IAAA,cAAc,EAAE;UACd,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,IAAI,SAAS;EAC/D,QAAA,QAAQ,EAAE,QAAiB;EAC3B,QAAA,KAAK,EAAE,MAAe;EACtB,QAAA,MAAM,EAAE,MAAe;EACxB,KAAA;EACF,CAAA,CAAC,CAAC;;ECxCH,SAAS,mBAAmB,CAC1B,KAAwB,EACxB,MAAmC,EACnC,YAAoB,EAAA;EAEpB,IAAA,IAAI,KAAK,KAAK,QAAQ,EAAE;EACtB,QAAA,OAAO,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,GAAG,CAAC,GAAG,oBAAoB,CAAC;OACvE;EACD,IAAA,OAAO,YAAY,CAAC;EACtB,CAAC;AAUK,QAAA,OAAO,GAAGC,UAAI,CAClB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,YAAY,GAAG,CAAC,EAAE,WAAW,EAAE,OAAO,GAAG,UAAU,EAAgB,KAAI;EACvG,IAAA,MAAM,aAAa,GAAGC,8BAAS,CAC7B,OAAO;EACL,QAAA,SAAS,EAAE;EACT,YAAA,KAAK,EAAE,KAAK,KAAA,IAAA,IAAL,KAAK,KAAL,KAAA,CAAA,GAAA,KAAK,GAAI,MAAM;EACtB,YAAA,MAAM,EAAE,MAAM,KAAA,IAAA,IAAN,MAAM,KAAN,KAAA,CAAA,GAAA,MAAM,GAAI,MAAM;EACxB,YAAA,QAAQ,EAAE,MAAM;EAChB,YAAA,SAAS,EAAE,SAAS;EACpB,YAAA,SAAS,EAAE,YAAY;cACvB,YAAY,EAAE,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,CAAC;EAC/D,SAAA;OACF,CAAC,EACF,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,CACrC,CAAC;EAEF,IAAA,MAAM,kBAAkB,IAAI,OAAO,KAAK,UAAU,GAAG,oBAAoB,GAAG,kBAAkB,CAAW,CAAC;EAE1G,IAAA,QACEC,cAAA,CAACC,2BAAS,EAAA,EACR,WAAW,EAAE;EACX,YAAA,IAAI,EAAE;EACJ,gBAAA,oBAAoB,CAAC,cAAc;EACnC,gBAAA,aAAa,CAAC,SAAS;kBACvB,kBAAkB;kBAClB,IAAI,CAAA,WAAW,KAAX,IAAA,IAAA,WAAW,KAAX,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAW,CAAE,IAAI,KAAI,EAAE,CAAC;EAC7B,aAAA;EACF,SAAA,EAAA,CACD,EACF;EACJ,CAAC,EACD;EAEF,OAAO,CAAC,WAAW,GAAG,SAAS;;;;;;;;"}
|
package/dist/style.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export declare const MaxBorderRadiusValue = 300;
|
|
2
2
|
export declare const shimmerKeyframes: string;
|
|
3
3
|
export declare const shimmerGradient = "linear-gradient(to right, #e0e0e0 0%, #ffffff 50%, #e0e0e0 100%)";
|
|
4
|
+
export declare const shimmerAnimatedClass: string;
|
|
5
|
+
export declare const shimmerStaticClass: string;
|
|
4
6
|
export declare const shimmerWrapperStyles: {
|
|
5
7
|
shimmerWrapper: {
|
|
6
8
|
backgroundColor: string;
|
package/dist/style.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../packages/components/Shimmer/src/style.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAQxC,eAAO,MAAM,gBAAgB,QAG5B,CAAC;AAMF,eAAO,MAAM,eAAe,qEAAqE,CAAC;
|
|
1
|
+
{"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../packages/components/Shimmer/src/style.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAQxC,eAAO,MAAM,gBAAgB,QAG5B,CAAC;AAMF,eAAO,MAAM,eAAe,qEAAqE,CAAC;AAElG,eAAO,MAAM,oBAAoB,QAI/B,CAAC;AAEH,eAAO,MAAM,kBAAkB,QAG7B,CAAC;AAQH,eAAO,MAAM,oBAAoB;;;;;;;CAO9B,CAAC;AAEJ,eAAe,oBAAoB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cleartrip/ct-design-shimmer",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.11.0-SNAPSHOT-native-main.0",
|
|
4
4
|
"description": "Shimmer component",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"main": "./dist/ct-design-shimmer.cjs.js",
|
|
@@ -25,12 +25,12 @@
|
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@emotion/css": "11.13.4",
|
|
28
|
-
"@cleartrip/ct-design-container": "5.
|
|
29
|
-
"@cleartrip/ct-design-style-manager": "5.10.0",
|
|
30
|
-
"@cleartrip/ct-design-theme": "5.
|
|
28
|
+
"@cleartrip/ct-design-container": "5.12.0-SNAPSHOT-native-main.0",
|
|
29
|
+
"@cleartrip/ct-design-style-manager": "5.10.1-SNAPSHOT-native-main.0",
|
|
30
|
+
"@cleartrip/ct-design-theme": "5.11.0-SNAPSHOT-native-main.0"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
|
-
"@cleartrip/ct-design-types": "5.
|
|
33
|
+
"@cleartrip/ct-design-types": "5.11.0-SNAPSHOT-native-main.0"
|
|
34
34
|
},
|
|
35
35
|
"peerDependencies": {
|
|
36
36
|
"react": ">=16.8.0",
|
package/src/Shimmer.tsx
CHANGED
|
@@ -2,18 +2,13 @@ import { memo } from 'react';
|
|
|
2
2
|
|
|
3
3
|
import { Container } from '@cleartrip/ct-design-container';
|
|
4
4
|
import { useStyles } from '@cleartrip/ct-design-style-manager';
|
|
5
|
+
import type { Styles } from '@cleartrip/ct-design-types';
|
|
5
6
|
|
|
6
|
-
import shimmerWrapperStyles, { MaxBorderRadiusValue,
|
|
7
|
+
import shimmerWrapperStyles, { MaxBorderRadiusValue, shimmerAnimatedClass, shimmerStaticClass } from './style';
|
|
7
8
|
import { ShimmerProps } from './type';
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* Resolves the border-radius applied to the wrapper based on `shape`.
|
|
11
|
-
*
|
|
12
|
-
* `circle` tries to produce a true circle/pill using `height / 2` when
|
|
13
|
-
* the caller supplied a numeric height; for string heights (e.g.
|
|
14
|
-
* `'40px'`) arithmetic would yield `NaN`, so we fall back to
|
|
15
|
-
* `MaxBorderRadiusValue` which is large enough to full-round any
|
|
16
|
-
* realistic shimmer. `rect` applies `borderRadius` directly.
|
|
17
12
|
*/
|
|
18
13
|
function resolveBorderRadius(
|
|
19
14
|
shape: 'rect' | 'circle',
|
|
@@ -29,42 +24,43 @@ function resolveBorderRadius(
|
|
|
29
24
|
/**
|
|
30
25
|
* Web implementation of `Shimmer`.
|
|
31
26
|
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* - Static wrapper styles (seed background, overflow) live in
|
|
37
|
-
* `style.ts`; the animated gradient + keyframe reference is
|
|
38
|
-
* embedded into the dynamic style object built by `useStyles` so
|
|
39
|
-
* emotion caches the `@keyframes` declaration once per page and
|
|
40
|
-
* the Container's internal `useWebMergeStyles` handles the rest.
|
|
41
|
-
* - Dynamic slot holds width/height/borderRadius + animation so
|
|
42
|
-
* memoisation follows the input deps.
|
|
27
|
+
* Dimension contract matches native: `width` / `height` from props only.
|
|
28
|
+
* Do not set a fixed minWidth — that forces placeholders wider than their
|
|
29
|
+
* card (e.g. width="100%" inside a padded STACK). Parent clipping comes from
|
|
30
|
+
* `shimmerWrapperStyles.shimmerWrapper` (`overflow: hidden`, `width/height: 100%`).
|
|
43
31
|
*/
|
|
44
|
-
const Shimmer = memo(
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
32
|
+
const Shimmer = memo(
|
|
33
|
+
({ width, height, shape = 'rect', borderRadius = 8, styleConfig, variant = 'animated' }: ShimmerProps) => {
|
|
34
|
+
const dynamicStyles = useStyles(
|
|
35
|
+
() => ({
|
|
36
|
+
container: {
|
|
37
|
+
width: width ?? '100%',
|
|
38
|
+
height: height ?? '100%',
|
|
39
|
+
maxWidth: '100%',
|
|
40
|
+
alignSelf: 'stretch',
|
|
41
|
+
boxSizing: 'border-box',
|
|
42
|
+
borderRadius: resolveBorderRadius(shape, height, borderRadius),
|
|
43
|
+
},
|
|
44
|
+
}),
|
|
45
|
+
[width, height, shape, borderRadius],
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
const shimmerVisualClass = (variant === 'animated' ? shimmerAnimatedClass : shimmerStaticClass) as Styles;
|
|
59
49
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
50
|
+
return (
|
|
51
|
+
<Container
|
|
52
|
+
styleConfig={{
|
|
53
|
+
root: [
|
|
54
|
+
shimmerWrapperStyles.shimmerWrapper,
|
|
55
|
+
dynamicStyles.container,
|
|
56
|
+
shimmerVisualClass,
|
|
57
|
+
...(styleConfig?.root || []),
|
|
58
|
+
],
|
|
59
|
+
}}
|
|
60
|
+
/>
|
|
61
|
+
);
|
|
62
|
+
},
|
|
63
|
+
);
|
|
68
64
|
|
|
69
65
|
Shimmer.displayName = 'Shimmer';
|
|
70
66
|
|
package/src/style.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { keyframes } from '@emotion/css';
|
|
1
|
+
import { css, keyframes } from '@emotion/css';
|
|
2
2
|
|
|
3
3
|
import { makeStyles } from '@cleartrip/ct-design-style-manager';
|
|
4
4
|
|
|
@@ -26,6 +26,17 @@ export const shimmerKeyframes = keyframes`
|
|
|
26
26
|
*/
|
|
27
27
|
export const shimmerGradient = 'linear-gradient(to right, #e0e0e0 0%, #ffffff 50%, #e0e0e0 100%)';
|
|
28
28
|
|
|
29
|
+
export const shimmerAnimatedClass = css({
|
|
30
|
+
backgroundImage: shimmerGradient,
|
|
31
|
+
backgroundSize: '150% 100%',
|
|
32
|
+
animation: `${shimmerKeyframes} 1.5s infinite linear`,
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
export const shimmerStaticClass = css({
|
|
36
|
+
backgroundImage: shimmerGradient,
|
|
37
|
+
backgroundSize: '100% 100%',
|
|
38
|
+
});
|
|
39
|
+
|
|
29
40
|
/**
|
|
30
41
|
* Static wrapper styles shared by web and native. On web, seeds the
|
|
31
42
|
* animated gradient + keyframe sweep. On native, only the seed
|