@cleartrip/ct-design-spinner 4.0.0-TEST.1 → 5.0.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 +73 -0
- package/dist/Spinner.d.ts +7 -3
- package/dist/Spinner.d.ts.map +1 -1
- package/dist/Spinner.native.d.ts +8 -0
- package/dist/Spinner.native.d.ts.map +1 -0
- package/dist/ct-design-spinner.browser.cjs.js +4 -1
- package/dist/ct-design-spinner.browser.cjs.js.map +1 -1
- package/dist/ct-design-spinner.browser.esm.js +4 -1
- package/dist/ct-design-spinner.browser.esm.js.map +1 -1
- package/dist/ct-design-spinner.cjs.js +43 -31
- package/dist/ct-design-spinner.cjs.js.map +1 -1
- package/dist/ct-design-spinner.esm.js +45 -29
- package/dist/ct-design-spinner.esm.js.map +1 -1
- package/dist/ct-design-spinner.umd.js +44 -786
- package/dist/ct-design-spinner.umd.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.native.d.ts +3 -0
- package/dist/index.native.d.ts.map +1 -0
- package/dist/style.d.ts +10 -6
- package/dist/style.d.ts.map +1 -1
- package/dist/type.d.ts +5 -8
- package/dist/type.d.ts.map +1 -1
- package/package.json +22 -14
- package/src/Spinner.native.tsx +76 -0
- package/src/Spinner.tsx +81 -0
- package/src/index.native.ts +2 -0
- package/src/index.ts +2 -0
- package/src/style.ts +12 -0
- package/src/type.ts +13 -0
package/README.md
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Spinner
|
|
2
|
+
|
|
3
|
+
A loading spinner component with customizable appearance.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @cleartrip/ct-design-spinner
|
|
11
|
+
# or
|
|
12
|
+
pnpm add @cleartrip/ct-design-spinner
|
|
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 { Spinner } from '@cleartrip/ct-design-spinner';
|
|
36
|
+
|
|
37
|
+
function Example() {
|
|
38
|
+
return (
|
|
39
|
+
<Spinner>
|
|
40
|
+
{/* Basic usage */}
|
|
41
|
+
</Spinner>
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Props
|
|
49
|
+
|
|
50
|
+
| Prop | Type | Default | Required | Description |
|
|
51
|
+
|------|------|---------|----------|-------------|
|
|
52
|
+
| `width` | `number` | — | No | width property |
|
|
53
|
+
| `height` | `number` | — | No | height property |
|
|
54
|
+
| `gradientColors` | `string[]` | — | No | gradientColors property |
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Accessibility
|
|
59
|
+
|
|
60
|
+
- The component follows accessibility best practices
|
|
61
|
+
- Ensure proper ARIA attributes are provided where needed
|
|
62
|
+
- Test with screen readers to ensure usability
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Migration
|
|
67
|
+
|
|
68
|
+
If migrating from a previous version:
|
|
69
|
+
|
|
70
|
+
```diff
|
|
71
|
+
- import { Spinner } from 'yagami/core/components';
|
|
72
|
+
+ import { Spinner } from '@cleartrip/ct-design-spinner';
|
|
73
|
+
```
|
package/dist/Spinner.d.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ISpinnerProps } from './type';
|
|
3
|
+
declare const Spinner: {
|
|
4
|
+
({ width, height, gradientColors }: ISpinnerProps): React.ReactElement;
|
|
5
|
+
displayName: string;
|
|
6
|
+
};
|
|
7
|
+
export default Spinner;
|
|
4
8
|
//# sourceMappingURL=Spinner.d.ts.map
|
package/dist/Spinner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../packages/components/Spinner/src/Spinner.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../packages/components/Spinner/src/Spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgB,MAAM,OAAO,CAAC;AAMrC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAavC,QAAA,MAAM,OAAO;wCAAiD,aAAa,GAAG,KAAK,CAAC,YAAY;;CAyD/F,CAAC;AAIF,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ISpinnerProps } from './type';
|
|
3
|
+
declare const Spinner: {
|
|
4
|
+
({ width, height, gradientColors }: ISpinnerProps): React.ReactElement;
|
|
5
|
+
displayName: string;
|
|
6
|
+
};
|
|
7
|
+
export default Spinner;
|
|
8
|
+
//# sourceMappingURL=Spinner.native.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Spinner.native.d.ts","sourceRoot":"","sources":["../packages/components/Spinner/src/Spinner.native.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAC;AAMhD,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAKvC,QAAA,MAAM,OAAO;wCAAiD,aAAa,GAAG,KAAK,CAAC,YAAY;;CA4D/F,CAAC;AAIF,eAAe,OAAO,CAAC"}
|
|
@@ -1,2 +1,5 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),r=require("react"),s=require("@cleartrip/ct-design-style-manager"),t=require("@emotion/css");const i=s.makeStyles(e=>({root:{position:"relative",borderWidth:e.border.width.lg,borderStyle:"solid",borderColor:"rgba(0, 0, 0, 0.3)",borderRadius:e.border.radius[32],borderTopColor:e.color.background.neutral}})),o=t.keyframes`
|
|
2
|
+
0% { transform: rotate(0deg); }
|
|
3
|
+
100% { transform: rotate(360deg); }
|
|
4
|
+
`,a=t.css({animation:`${o} 800ms linear infinite`}),n=({width:t=30,height:o=30,gradientColors:n})=>{const l=r.useId(),d=Array.isArray(n)&&n.length>0,c=s.useStyles(()=>({size:{width:t,height:o}}),[t,o]),h=s.useWebMergeStyles([i.root,c.size,a],[c.size,a]),u=s.useWebMergeStyles([c.size,a],[c.size,a]);if(d){const r=Math.min(t,o),s=r/2,i=(r-2)/2,a=2*Math.PI*i,d=`url(#${l})`;return e.jsx("span",{className:u,role:"status","aria-label":"Loading",children:e.jsxs("svg",{width:r,height:r,viewBox:`0 0 ${r} ${r}`,fill:"none",children:[e.jsx("defs",{children:e.jsx("linearGradient",{id:l,x1:"0%",y1:"0%",x2:"100%",y2:"0%",children:n.map((r,s)=>e.jsx("stop",{offset:s/(n.length-1)*100+"%",stopColor:r},s))})}),e.jsx("circle",{cx:s,cy:s,r:i,stroke:d,strokeWidth:2,strokeLinecap:"round",strokeDasharray:`${.65*a} ${.35*a}`,fill:"none"})]})})}return e.jsx("span",{role:"status","aria-label":"Loading",className:h})};n.displayName="Spinner",exports.Spinner=n;
|
|
2
5
|
//# sourceMappingURL=ct-design-spinner.browser.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ct-design-spinner.browser.cjs.js","sources":["../packages/components/Spinner/src/style.
|
|
1
|
+
{"version":3,"file":"ct-design-spinner.browser.cjs.js","sources":["../packages/components/Spinner/src/style.ts","../packages/components/Spinner/src/Spinner.tsx"],"sourcesContent":[null,null],"names":["spinnerStaticStyles","makeStyles","theme","root","position","borderWidth","border","width","lg","borderStyle","borderColor","borderRadius","radius","borderTopColor","color","background","neutral","spinAnimation","keyframes","animationClass","css","animation","Spinner","height","gradientColors","gradientId","useId","hasGradient","Array","isArray","length","dynamicStyles","useStyles","size","rootClassName","useWebMergeStyles","gradientWrapperClassName","Math","min","center","circumference","PI","strokeUrl","_jsx","className","role","children","_jsxs","jsxs","viewBox","fill","jsx","id","x1","y1","x2","y2","map","index","offset","stopColor","cx","cy","r","stroke","strokeWidth","strokeLinecap","strokeDasharray","displayName"],"mappings":"6IAEO,MAAMA,EAAsBC,EAAAA,WAAYC,IAAW,CACxDC,KAAM,CACJC,SAAU,WACVC,YAAaH,EAAMI,OAAOC,MAAMC,GAChCC,YAAa,QACbC,YAAa,qBACbC,aAAcT,EAAMI,OAAOM,OAAO,IAClCC,eAAgBX,EAAMY,MAAMC,WAAWC,YCDrCC,EAAgBC,EAASA,SAAA;;;EAKzBC,EAAiBC,EAAAA,IAAI,CACzBC,UAAW,GAAGJ,4BAKVK,EAAU,EAAGf,QAAQ,GAAIgB,SAAS,GAAIC,qBAC1C,MAAMC,EAAaC,EAAAA,QACbC,EAAcC,MAAMC,QAAQL,IAAmBA,EAAeM,OAAS,EAEvEC,EAAgBC,EAAAA,UACpB,KAAO,CACLC,KAAM,CACJ1B,QACAgB,YAGJ,CAAChB,EAAOgB,IAGJW,EAAgBC,EAAiBA,kBACrC,CAACnC,EAAoBG,KAAM4B,EAAcE,KAAMd,GAC/C,CAACY,EAAcE,KAAMd,IAGjBiB,EAA2BD,EAAAA,kBAC/B,CAACJ,EAAcE,KAAMd,GACrB,CAACY,EAAcE,KAAMd,IAGvB,GAAIQ,EAAa,CACf,MAAMM,EAAOI,KAAKC,IAAI/B,EAAOgB,GACvBgB,EAASN,EAAO,EAChBrB,GAAUqB,EA7BS,GA6BsB,EACzCO,EAAgB,EAAIH,KAAKI,GAAK7B,EAC9B8B,EAAY,QAAQjB,KAE1B,OACEkB,MAAA,OAAA,CAAMC,UAAWR,EAA0BS,KAAK,SAAoB,aAAA,UAClEC,SAAAC,EAAAC,KAAA,MAAA,CAAKzC,MAAO0B,EAAMV,OAAQU,EAAMgB,QAAS,OAAOhB,KAAQA,IAAQiB,KAAK,iBACnEP,MACE,OAAA,CAAAG,SAAAH,EAAAQ,IAAA,iBAAA,CAAgBC,GAAI3B,EAAY4B,GAAG,KAAKC,GAAG,KAAKC,GAAG,OAAOC,GAAG,KAAIV,SAC9DtB,EAAeiC,IAAI,CAAC3C,EAAO4C,IAC1Bf,MAAkB,OAAA,CAAAgB,OAAYD,GAASlC,EAAeM,OAAS,GAAM,IAA3C,IAAmD8B,UAAW9C,GAA7E4C,QAIjBf,EAAAA,IACE,SAAA,CAAAkB,GAAItB,EACJuB,GAAIvB,EACJwB,EAAGnD,EACHoD,OAAQtB,EACRuB,YAhDiB,EAiDjBC,cAAc,QACdC,gBAAiB,GAnDH,IAmDM3B,KAAkD,IAAbA,IACzDU,KAAK,aAKd,CAED,OAAOP,EAAAQ,IAAA,OAAA,CAAMN,KAAK,SAAQ,aAAY,UAAUD,UAAWV,KAG7DZ,EAAQ8C,YAAc"}
|
|
@@ -1,2 +1,5 @@
|
|
|
1
|
-
import{jsx as
|
|
1
|
+
import{jsx as r,jsxs as e}from"react/jsx-runtime";import{useId as o}from"react";import{makeStyles as t,useStyles as i,useWebMergeStyles as a}from"@cleartrip/ct-design-style-manager";import{keyframes as s,css as n}from"@emotion/css";const l=t(r=>({root:{position:"relative",borderWidth:r.border.width.lg,borderStyle:"solid",borderColor:"rgba(0, 0, 0, 0.3)",borderRadius:r.border.radius[32],borderTopColor:r.color.background.neutral}})),d=n({animation:`${s`
|
|
2
|
+
0% { transform: rotate(0deg); }
|
|
3
|
+
100% { transform: rotate(360deg); }
|
|
4
|
+
`} 800ms linear infinite`}),c=({width:t=30,height:s=30,gradientColors:n})=>{const c=o(),h=Array.isArray(n)&&n.length>0,m=i(()=>({size:{width:t,height:s}}),[t,s]),g=a([l.root,m.size,d],[m.size,d]),p=a([m.size,d],[m.size,d]);if(h){const o=Math.min(t,s),i=o/2,a=(o-2)/2,l=2*Math.PI*a,d=`url(#${c})`;return r("span",{className:p,role:"status","aria-label":"Loading",children:e("svg",{width:o,height:o,viewBox:`0 0 ${o} ${o}`,fill:"none",children:[r("defs",{children:r("linearGradient",{id:c,x1:"0%",y1:"0%",x2:"100%",y2:"0%",children:n.map((e,o)=>r("stop",{offset:o/(n.length-1)*100+"%",stopColor:e},o))})}),r("circle",{cx:i,cy:i,r:a,stroke:d,strokeWidth:2,strokeLinecap:"round",strokeDasharray:`${.65*l} ${.35*l}`,fill:"none"})]})})}return r("span",{role:"status","aria-label":"Loading",className:g})};c.displayName="Spinner";export{c as Spinner};
|
|
2
5
|
//# sourceMappingURL=ct-design-spinner.browser.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ct-design-spinner.browser.esm.js","sources":["../packages/components/Spinner/src/style.
|
|
1
|
+
{"version":3,"file":"ct-design-spinner.browser.esm.js","sources":["../packages/components/Spinner/src/style.ts","../packages/components/Spinner/src/Spinner.tsx"],"sourcesContent":[null,null],"names":["spinnerStaticStyles","makeStyles","theme","root","position","borderWidth","border","width","lg","borderStyle","borderColor","borderRadius","radius","borderTopColor","color","background","neutral","animationClass","css","animation","keyframes","Spinner","height","gradientColors","gradientId","useId","hasGradient","Array","isArray","length","dynamicStyles","useStyles","size","rootClassName","useWebMergeStyles","gradientWrapperClassName","Math","min","center","circumference","PI","strokeUrl","_jsx","className","role","children","_jsxs","viewBox","fill","id","x1","y1","x2","y2","map","index","offset","stopColor","cx","cy","r","stroke","strokeWidth","strokeLinecap","strokeDasharray","displayName"],"mappings":"wOAEO,MAAMA,EAAsBC,EAAYC,IAAW,CACxDC,KAAM,CACJC,SAAU,WACVC,YAAaH,EAAMI,OAAOC,MAAMC,GAChCC,YAAa,QACbC,YAAa,qBACbC,aAAcT,EAAMI,OAAOM,OAAO,IAClCC,eAAgBX,EAAMY,MAAMC,WAAWC,YCIrCC,EAAiBC,EAAI,CACzBC,UAAW,GANSC,CAAS;;;4BAWzBC,EAAU,EAAGd,QAAQ,GAAIe,SAAS,GAAIC,qBAC1C,MAAMC,EAAaC,IACbC,EAAcC,MAAMC,QAAQL,IAAmBA,EAAeM,OAAS,EAEvEC,EAAgBC,EACpB,KAAO,CACLC,KAAM,CACJzB,QACAe,YAGJ,CAACf,EAAOe,IAGJW,EAAgBC,EACpB,CAAClC,EAAoBG,KAAM2B,EAAcE,KAAMf,GAC/C,CAACa,EAAcE,KAAMf,IAGjBkB,EAA2BD,EAC/B,CAACJ,EAAcE,KAAMf,GACrB,CAACa,EAAcE,KAAMf,IAGvB,GAAIS,EAAa,CACf,MAAMM,EAAOI,KAAKC,IAAI9B,EAAOe,GACvBgB,EAASN,EAAO,EAChBpB,GAAUoB,EA7BS,GA6BsB,EACzCO,EAAgB,EAAIH,KAAKI,GAAK5B,EAC9B6B,EAAY,QAAQjB,KAE1B,OACEkB,EAAA,OAAA,CAAMC,UAAWR,EAA0BS,KAAK,SAAoB,aAAA,UAClEC,SAAAC,EAAA,MAAA,CAAKvC,MAAOyB,EAAMV,OAAQU,EAAMe,QAAS,OAAOf,KAAQA,IAAQgB,KAAK,iBACnEN,EACE,OAAA,CAAAG,SAAAH,EAAA,iBAAA,CAAgBO,GAAIzB,EAAY0B,GAAG,KAAKC,GAAG,KAAKC,GAAG,OAAOC,GAAG,KAAIR,SAC9DtB,EAAe+B,IAAI,CAACxC,EAAOyC,IAC1Bb,EAAkB,OAAA,CAAAc,OAAYD,GAAShC,EAAeM,OAAS,GAAM,IAA3C,IAAmD4B,UAAW3C,GAA7EyC,QAIjBb,EACE,SAAA,CAAAgB,GAAIpB,EACJqB,GAAIrB,EACJsB,EAAGhD,EACHiD,OAAQpB,EACRqB,YAhDiB,EAiDjBC,cAAc,QACdC,gBAAiB,GAnDH,IAmDMzB,KAAkD,IAAbA,IACzDS,KAAK,aAKd,CAED,OAAON,EAAA,OAAA,CAAME,KAAK,SAAQ,aAAY,UAAUD,UAAWV,KAG7DZ,EAAQ4C,YAAc"}
|
|
@@ -1,40 +1,52 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var react = require('@emotion/react');
|
|
4
|
+
var react = require('react');
|
|
5
|
+
var ctDesignStyleManager = require('@cleartrip/ct-design-style-manager');
|
|
6
|
+
var css = require('@emotion/css');
|
|
8
7
|
|
|
9
|
-
|
|
8
|
+
const spinnerStaticStyles = ctDesignStyleManager.makeStyles((theme) => ({
|
|
9
|
+
root: {
|
|
10
|
+
position: 'relative',
|
|
11
|
+
borderWidth: theme.border.width.lg,
|
|
12
|
+
borderStyle: 'solid',
|
|
13
|
+
borderColor: 'rgba(0, 0, 0, 0.3)',
|
|
14
|
+
borderRadius: theme.border.radius[32],
|
|
15
|
+
borderTopColor: theme.color.background.neutral,
|
|
16
|
+
},
|
|
17
|
+
}));
|
|
10
18
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}, function (_a) {
|
|
18
|
-
var theme = _a.theme, height = _a.height, borderColor = _a.borderColor;
|
|
19
|
-
var spinerHeight = parseInt(height || theme.size[12]) / 6;
|
|
20
|
-
return "".concat(spinerHeight > 0 ? spinerHeight : 8, "px solid ").concat(borderColor || theme.color.spinner.primary);
|
|
21
|
-
}, function (_a) {
|
|
22
|
-
var width = _a.width, theme = _a.theme;
|
|
23
|
-
return width || theme.size[12];
|
|
24
|
-
}, function (_a) {
|
|
25
|
-
var height = _a.height, theme = _a.theme;
|
|
26
|
-
return height || theme.size[12];
|
|
27
|
-
}, function (_a) {
|
|
28
|
-
var css = _a.css;
|
|
29
|
-
return css && react.css(templateObject_1 || (templateObject_1 = tslib.__makeTemplateObject(["\n\t", "\n "], ["\n\t", "\n "])), css);
|
|
19
|
+
const spinAnimation = css.keyframes `
|
|
20
|
+
0% { transform: rotate(0deg); }
|
|
21
|
+
100% { transform: rotate(360deg); }
|
|
22
|
+
`;
|
|
23
|
+
const animationClass = css.css({
|
|
24
|
+
animation: `${spinAnimation} 800ms linear infinite`,
|
|
30
25
|
});
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
26
|
+
const STROKE_DASH_RATIO = 0.65;
|
|
27
|
+
const DEFAULT_STROKE_WIDTH = 2;
|
|
28
|
+
const Spinner = ({ width = 30, height = 30, gradientColors }) => {
|
|
29
|
+
const gradientId = react.useId();
|
|
30
|
+
const hasGradient = Array.isArray(gradientColors) && gradientColors.length > 0;
|
|
31
|
+
const dynamicStyles = ctDesignStyleManager.useStyles(() => ({
|
|
32
|
+
size: {
|
|
33
|
+
width,
|
|
34
|
+
height,
|
|
35
|
+
},
|
|
36
|
+
}), [width, height]);
|
|
37
|
+
const rootClassName = ctDesignStyleManager.useWebMergeStyles([spinnerStaticStyles.root, dynamicStyles.size, animationClass], [dynamicStyles.size, animationClass]);
|
|
38
|
+
const gradientWrapperClassName = ctDesignStyleManager.useWebMergeStyles([dynamicStyles.size, animationClass], [dynamicStyles.size, animationClass]);
|
|
39
|
+
if (hasGradient) {
|
|
40
|
+
const size = Math.min(width, height);
|
|
41
|
+
const center = size / 2;
|
|
42
|
+
const radius = (size - DEFAULT_STROKE_WIDTH) / 2;
|
|
43
|
+
const circumference = 2 * Math.PI * radius;
|
|
44
|
+
const strokeUrl = `url(#${gradientId})`;
|
|
45
|
+
return (jsxRuntime.jsx("span", { className: gradientWrapperClassName, role: 'status', "aria-label": 'Loading', children: jsxRuntime.jsxs("svg", { width: size, height: size, viewBox: `0 0 ${size} ${size}`, fill: 'none', children: [jsxRuntime.jsx("defs", { children: jsxRuntime.jsx("linearGradient", { id: gradientId, x1: '0%', y1: '0%', x2: '100%', y2: '0%', children: gradientColors.map((color, index) => (jsxRuntime.jsx("stop", { offset: `${(index / (gradientColors.length - 1)) * 100}%`, stopColor: color }, index))) }) }), jsxRuntime.jsx("circle", { cx: center, cy: center, r: radius, stroke: strokeUrl, strokeWidth: DEFAULT_STROKE_WIDTH, strokeLinecap: 'round', strokeDasharray: `${circumference * STROKE_DASH_RATIO} ${circumference * (1 - STROKE_DASH_RATIO)}`, fill: 'none' })] }) }));
|
|
46
|
+
}
|
|
47
|
+
return jsxRuntime.jsx("span", { role: 'status', "aria-label": 'Loading', className: rootClassName });
|
|
48
|
+
};
|
|
49
|
+
Spinner.displayName = 'Spinner';
|
|
38
50
|
|
|
39
51
|
exports.Spinner = Spinner;
|
|
40
52
|
//# sourceMappingURL=ct-design-spinner.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ct-design-spinner.cjs.js","sources":["../packages/components/Spinner/src/style.
|
|
1
|
+
{"version":3,"file":"ct-design-spinner.cjs.js","sources":["../packages/components/Spinner/src/style.ts","../packages/components/Spinner/src/Spinner.tsx"],"sourcesContent":[null,null],"names":["makeStyles","keyframes","css","useId","useStyles","useWebMergeStyles","_jsx","_jsxs"],"mappings":"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"}
|
|
@@ -1,34 +1,50 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import { css } from '@emotion/react';
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { useId } from 'react';
|
|
3
|
+
import { makeStyles, useStyles, useWebMergeStyles } from '@cleartrip/ct-design-style-manager';
|
|
4
|
+
import { keyframes, css } from '@emotion/css';
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
},
|
|
16
|
-
|
|
17
|
-
return width || theme.size[12];
|
|
18
|
-
}, function (_a) {
|
|
19
|
-
var height = _a.height, theme = _a.theme;
|
|
20
|
-
return height || theme.size[12];
|
|
21
|
-
}, function (_a) {
|
|
22
|
-
var css$1 = _a.css;
|
|
23
|
-
return css$1 && css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n\t", "\n "], ["\n\t", "\n "])), css$1);
|
|
24
|
-
});
|
|
25
|
-
var templateObject_1, templateObject_2;
|
|
6
|
+
const spinnerStaticStyles = makeStyles((theme) => ({
|
|
7
|
+
root: {
|
|
8
|
+
position: 'relative',
|
|
9
|
+
borderWidth: theme.border.width.lg,
|
|
10
|
+
borderStyle: 'solid',
|
|
11
|
+
borderColor: 'rgba(0, 0, 0, 0.3)',
|
|
12
|
+
borderRadius: theme.border.radius[32],
|
|
13
|
+
borderTopColor: theme.color.background.neutral,
|
|
14
|
+
},
|
|
15
|
+
}));
|
|
26
16
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
17
|
+
const spinAnimation = keyframes `
|
|
18
|
+
0% { transform: rotate(0deg); }
|
|
19
|
+
100% { transform: rotate(360deg); }
|
|
20
|
+
`;
|
|
21
|
+
const animationClass = css({
|
|
22
|
+
animation: `${spinAnimation} 800ms linear infinite`,
|
|
23
|
+
});
|
|
24
|
+
const STROKE_DASH_RATIO = 0.65;
|
|
25
|
+
const DEFAULT_STROKE_WIDTH = 2;
|
|
26
|
+
const Spinner = ({ width = 30, height = 30, gradientColors }) => {
|
|
27
|
+
const gradientId = useId();
|
|
28
|
+
const hasGradient = Array.isArray(gradientColors) && gradientColors.length > 0;
|
|
29
|
+
const dynamicStyles = useStyles(() => ({
|
|
30
|
+
size: {
|
|
31
|
+
width,
|
|
32
|
+
height,
|
|
33
|
+
},
|
|
34
|
+
}), [width, height]);
|
|
35
|
+
const rootClassName = useWebMergeStyles([spinnerStaticStyles.root, dynamicStyles.size, animationClass], [dynamicStyles.size, animationClass]);
|
|
36
|
+
const gradientWrapperClassName = useWebMergeStyles([dynamicStyles.size, animationClass], [dynamicStyles.size, animationClass]);
|
|
37
|
+
if (hasGradient) {
|
|
38
|
+
const size = Math.min(width, height);
|
|
39
|
+
const center = size / 2;
|
|
40
|
+
const radius = (size - DEFAULT_STROKE_WIDTH) / 2;
|
|
41
|
+
const circumference = 2 * Math.PI * radius;
|
|
42
|
+
const strokeUrl = `url(#${gradientId})`;
|
|
43
|
+
return (jsx("span", { className: gradientWrapperClassName, role: 'status', "aria-label": 'Loading', children: jsxs("svg", { width: size, height: size, viewBox: `0 0 ${size} ${size}`, fill: 'none', children: [jsx("defs", { children: jsx("linearGradient", { id: gradientId, x1: '0%', y1: '0%', x2: '100%', y2: '0%', children: gradientColors.map((color, index) => (jsx("stop", { offset: `${(index / (gradientColors.length - 1)) * 100}%`, stopColor: color }, index))) }) }), jsx("circle", { cx: center, cy: center, r: radius, stroke: strokeUrl, strokeWidth: DEFAULT_STROKE_WIDTH, strokeLinecap: 'round', strokeDasharray: `${circumference * STROKE_DASH_RATIO} ${circumference * (1 - STROKE_DASH_RATIO)}`, fill: 'none' })] }) }));
|
|
44
|
+
}
|
|
45
|
+
return jsx("span", { role: 'status', "aria-label": 'Loading', className: rootClassName });
|
|
46
|
+
};
|
|
47
|
+
Spinner.displayName = 'Spinner';
|
|
32
48
|
|
|
33
49
|
export { Spinner };
|
|
34
50
|
//# sourceMappingURL=ct-design-spinner.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ct-design-spinner.esm.js","sources":["../packages/components/Spinner/src/style.
|
|
1
|
+
{"version":3,"file":"ct-design-spinner.esm.js","sources":["../packages/components/Spinner/src/style.ts","../packages/components/Spinner/src/Spinner.tsx"],"sourcesContent":[null,null],"names":["_jsx","_jsxs"],"mappings":"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"}
|